Initial Redmine tooling and local plugin forks

This commit is contained in:
Jason Thistlethwaite
2026-04-24 22:01:18 +00:00
commit 9f682af0eb
683 changed files with 56878 additions and 0 deletions
@@ -0,0 +1,18 @@
<% helpdesk_tabs = [
{:name => 'general', :partial => 'settings/helpdesk_general', :label => :label_helpdesk_general},
{:name => 'public', :partial => 'settings/helpdesk_public', :label => :label_helpdesk_settings_public},
{:name => 'templates', :partial => 'settings/helpdesk_template', :label => :label_helpdesk_template},
{:name => 'votes', :partial => 'settings/helpdesk_vote', :label => :label_helpdesk_vote},
{:name => 'canned_responses', :partial => 'settings/helpdesk_canned_responses', :label => :label_helpdesk_canned_response_plural},
{:name => 'widget', :partial => 'settings/helpdesk_widget', :label => :label_helpdesk_widget}
] %>
<% helpdesk_tabs.push({:name => 'hidden', :partial => 'settings/helpdesk_hidden', :label => :label_crm_contacts_hidden}) if params[:hidden] %>
<%= render_tabs helpdesk_tabs %>
<% html_title(l(:label_settings), l(:label_helpdesk)) -%>
<% content_for(:header_tags) do %>
<%= javascript_include_tag :redmine_helpdesk, :plugin => 'redmine_contacts_helpdesk' %>
<% end %>
@@ -0,0 +1,2 @@
<% @canned_responses = CannedResponse.all %>
<%= render :partial => 'canned_responses/index' %>
@@ -0,0 +1,50 @@
<p>
<label><%= l(:label_helpdesk_from_address) %></label>
<%= text_field_tag 'settings[helpdesk_answer_from]', @settings["helpdesk_answer_from"], :size => "98%" %>
<em class="info"><%= l(:text_helpdesk_answer_macros, :macro => HelpdeskSettings::FROM_MACRO_LIST.join(', ')) %></em>
</p>
<p>
<label><%= l(:label_helpdesk_save_cc) %></label>
<%= check_box_tag 'settings[helpdesk_save_cc]', 1, @settings["helpdesk_save_cc"] %>
</p>
<p>
<label><%= l(:label_helpdesk_send_note_by_default) %></label>
<%= check_box_tag 'settings[send_note_by_default]', 1, @settings["send_note_by_default"] %>
</p>
<p>
<label><%= l(:label_helpdesk_add_contact_notes) %></label>
<%= check_box_tag 'settings[helpdesk_add_contact_notes]', 1, @settings["helpdesk_add_contact_notes"] %>
</p>
<p>
<label><%= l(:label_helpdesk_assign_contact_user) %></label>
<%= check_box_tag 'settings[helpdesk_assign_contact_user]', 1, @settings["helpdesk_assign_contact_user"], :class => 'assign_contact_user' %>
</p>
<p>
<label class='parent'><%= l(:label_helpdesk_create_private_tickets) %></label>
<%= check_box_tag 'settings[helpdesk_create_private_tickets]', 1, @settings["helpdesk_create_private_tickets"], :disabled => true, :class => 'private_tikets' %>
</p>
<p>
<label class='parent'><%= l(:label_helpdesk_autoclose_tickets_after) %></label>
<%= select_tag 'settings[helpdesk_autoclose_tickets_after]', options_for_select((1..24).map{ |h| [h, h] }, @settings["helpdesk_autoclose_tickets_after"]),
:onchange => "toggleStatusesForAutoclose(this); return false", :include_blank => true %>
<%= radio_button_tag 'settings[helpdesk_autoclose_tickets_time_unit]', 'day', RedmineHelpdesk.autoclose_time_unit_is?('day') || RedmineHelpdesk.autoclose_time_unit.nil? %>
<%= l(:label_helpdesk_days) %>
<%= radio_button_tag 'settings[helpdesk_autoclose_tickets_time_unit]', 'hour', RedmineHelpdesk.autoclose_time_unit_is?('hour') %>
<%= l(:label_helpdesk_hours) %>
</p>
<div id="statuses_autoclose" style="display:<%= !@settings["helpdesk_autoclose_tickets_after"].blank? ? 'block' : 'none' %>">
<p>
<label><%= l(:label_helpdesk_autoclose_from_status) %></label>
<%= select_tag 'settings[helpdesk_autoclose_from_status]', options_for_select(IssueStatus.all.map{|st| [st.name, st.id]}, @settings["helpdesk_autoclose_from_status"]), :style => "width:150px" %>
</p>
<p>
<label><%= l(:label_helpdesk_autoclose_to_status) %></label>
<%= select_tag 'settings[helpdesk_autoclose_to_status]', options_for_select(IssueStatus.all.map{|st| [st.name, st.id]}, @settings["helpdesk_autoclose_to_status"]), :style => "width:150px" %>
</p>
</div>
@@ -0,0 +1,9 @@
<p>
<label><%= l(:setting_plain_text_mail) %></label>
<%= check_box_tag 'settings[plain_text_mail]', 1, @settings["plain_text_mail"] %>
</p>
<p>
<label>Do not strip HTML tags</label>
<%= check_box_tag 'settings[helpdesk_do_not_strip_tags]', 1, @settings["helpdesk_do_not_strip_tags"] %>
</p>
@@ -0,0 +1,20 @@
<p>
<label><%= l(:label_helpdesk_public_tickets) %></label>
<%= check_box_tag 'settings[helpdesk_public_tickets]', 1, @settings["helpdesk_public_tickets"] %>
</p>
<p>
<label><%= l(:label_helpdesk_public_show_spent_time) %></label>
<%= check_box_tag 'settings[helpdesk_public_show_spent_time]', 1, @settings["helpdesk_public_show_spent_time"] %>
</p>
<p>
<label><%= l(:label_helpdesk_public_comments) %></label>
<%= check_box_tag 'settings[helpdesk_public_comments]', 1, @settings["helpdesk_public_comments"] %>
</p>
<p>
<label><%= l(:label_helpdesk_public_title) %></label>
<%= text_field_tag 'settings[helpdesk_public_title]', @settings["helpdesk_public_title"], :size => "98%" %>
</p>
@@ -0,0 +1,45 @@
<fieldset class="box tabular"><legend><%= l(:label_helpdesk_answer_template) %></legend>
<p>
<label><%= l(:field_subject) %></label>
<%= text_field_tag 'settings[helpdesk_answer_subject]', @settings["helpdesk_answer_subject"], :style => "width:100%" %>
</p>
<p>
<label><%= l(:setting_emails_header) %></label>
<%= text_area_tag 'settings[helpdesk_emails_header]', @settings["helpdesk_emails_header"], :class => 'wiki-edit', :rows => 5 %>
</p>
<p>
<label><%= l(:setting_emails_footer) %></label>
<%= text_area_tag 'settings[helpdesk_emails_footer]', @settings["helpdesk_emails_footer"], :class => 'wiki-edit', :rows => 5 %>
</p>
</fieldset>
<fieldset class="box" style="background-color: #FFD;"><legend><%= l(:label_helpdesk_auto_answer_template) %></legend>
<p>
<label><%= l(:field_subject) %></label>
<%= text_field_tag 'settings[helpdesk_first_answer_subject]', @settings["helpdesk_first_answer_subject"], :style => "width:100%" %>
</p>
<%= text_area_tag 'settings[helpdesk_first_answer_template]', @settings["helpdesk_first_answer_template"], :class => 'wiki-edit', :rows => 15 %>
</fieldset>
<fieldset class="box"><legend><%= l(:label_helpdesk_css) %></legend>
<%= text_area_tag 'settings[helpdesk_helpdesk_css]', @settings["helpdesk_helpdesk_css"], :class => 'wiki-edit', :rows => 10 %>
</fieldset>
<em class="info"><%= l(:text_helpdesk_answer_macros, :macro => HelpdeskSettings::MACRO_LIST.join(', ')) %></em>
<% if params[:show_hidden] %>
<fieldset id="hidden_settings">
<p>
<label>Show excerpt issues list</label>
<%= check_box_tag 'settings[show_excerpt_tickets_list]', 1, @settings["show_excerpt_tickets_list"] %>
</p>
</fieldset>
<% end %>
@@ -0,0 +1,9 @@
<p>
<label><%= l(:label_helpdesk_vote_settings) %></label>
<%= check_box_tag 'settings[helpdesk_vote_accept]', 1, @settings["helpdesk_vote_accept"] %>
</p>
<p>
<label><%= l(:label_helpdesk_vote_comment_settings) %></label>
<%= check_box_tag 'settings[helpdesk_vote_comment_accept]', 1, @settings["helpdesk_vote_comment_accept"] %>
</p>
@@ -0,0 +1,44 @@
<p>
<label><%= l(:label_helpdesk_widget_enable) %></label>
<%= check_box_tag 'settings[helpdesk_widget_enable]', 1, @settings["helpdesk_widget_enable"] %>
</p>
<% if @settings["helpdesk_widget_enable"].to_i > 0 %>
<p>
<label><%= l(:label_helpdesk_widget_available_projects) %></label>
<% @helpdesk_projects = Project.visible.has_module('contacts_helpdesk') %>
<% if @helpdesk_projects.count > 0 %>
<% @helpdesk_projects.each do |project| %>
<%= check_box_tag 'settings[helpdesk_widget_available_projects][]', project.id, @settings["helpdesk_widget_available_projects"].try(:include?, project.id.to_s) %>
<span><%= project.name %></span>
<br>
<% end %>
<% else %>
<span class="error-text"><%= l(:label_helpdesk_widget_no_available_projects) %></span>
<% end %>
</p>
<p>
<label><%= l(:label_helpdesk_widget_custom_fields) %></label>
<% IssueCustomField.visible.each do |cf| %>
<%= check_box_tag 'settings[helpdesk_widget_available_custom_fields][]', cf.id, @settings["helpdesk_widget_available_custom_fields"].try(:include?, cf.id.to_s) %>
<span><%= cf.name %></span>
<br>
<% end %>
</p>
<h4><%= l(:label_helpdesk_widget_activation_message) %></h4>
<pre style="background-color: #ddd;">
<code class="html syntaxhl">
<%= Redmine::SyntaxHighlighting.highlight_by_language(
"<span>
<div id=\"helpdesk_widget\"></div>
<script type=\"text/javascript\" src=\"#{Setting.protocol}://#{Setting.host_name}/helpdesk_widget/widget.js\"></script>
</span>", "html").html_safe %>
</code>
</pre>
<span>
<div id="helpdesk_widget"></div>
<script type="text/javascript" src="<%= "#{Setting.protocol}://#{Setting.host_name}" %>/helpdesk_widget/widget.js"></script>
</span>
<% end %>