diff --git a/app/views/issues/index.api.rsb b/app/views/issues/index.api.rsb
index 6cc72af..5eeb0bb 100644
--- a/app/views/issues/index.api.rsb
+++ b/app/views/issues/index.api.rsb
@@ -4,7 +4,7 @@ api.array :issues, api_meta(:total_count => @issue_count, :offset => @offset, :l
api.id issue.id
api.project(:id => issue.project_id, :name => issue.project.name) unless issue.project.nil?
api.tracker(:id => issue.tracker_id, :name => issue.tracker.name) unless issue.tracker.nil?
- api.status(:id => issue.status_id, :name => issue.status.name) unless issue.status.nil? || issue.hidden_attribute?('status')
+ api.status(:id => issue.status_id, :name => issue.status.name, :is_closed => issue.status.is_closed) unless issue.status.nil? || issue.hidden_attribute?('status')
api.priority(:id => issue.priority_id, :name => issue.priority.name) unless issue.priority.nil? || issue.hidden_attribute?('priority_id')
api.author(:id => issue.author_id, :name => issue.author.name) unless issue.author.nil?
api.assigned_to(:id => issue.assigned_to_id, :name => issue.assigned_to.name) unless issue.assigned_to.nil? || issue.disabled_core_fields.include?('assigned_to_id') || issue.hidden_attribute?('assigned_to_id')
@@ -19,6 +19,10 @@ api.array :issues, api_meta(:total_count => @issue_count, :offset => @offset, :l
api.done_ratio issue.done_ratio unless issue.disabled_core_fields.include?('done_ratio') || issue.hidden_attribute?('done_ratio')
api.is_private issue.is_private
api.estimated_hours issue.estimated_hours unless issue.disabled_core_fields.include?('estimated_hours') || issue.hidden_attribute?('estimated_hours')
+ if User.current.allowed_to?(:view_time_entries, issue.project)
+ api.spent_hours(issue.spent_hours)
+ api.total_spent_hours(issue.total_spent_hours)
+ end
render_api_custom_values issue.visible_custom_field_values, api
diff --git a/app/views/issues/show.api.rsb b/app/views/issues/show.api.rsb
index 0d4615a..83d6801 100644
--- a/app/views/issues/show.api.rsb
+++ b/app/views/issues/show.api.rsb
@@ -2,7 +2,7 @@ api.issue do
api.id @issue.id
api.project(:id => @issue.project_id, :name => @issue.project.name) unless @issue.project.nil?
api.tracker(:id => @issue.tracker_id, :name => @issue.tracker.name) unless @issue.tracker.nil?
- api.status(:id => @issue.status_id, :name => @issue.status.name) unless @issue.status.nil? || @issue.hidden_attribute?('status')
+ api.status(:id => @issue.status_id, :name => @issue.status.name, :is_closed => @issue.status.is_closed) unless @issue.status.nil? || @issue.hidden_attribute?('status')
api.priority(:id => @issue.priority_id, :name => @issue.priority.name) unless @issue.priority.nil? || @issue.hidden_attribute?('priority_id')
api.author(:id => @issue.author_id, :name => @issue.author.name) unless @issue.author.nil?
api.assigned_to(:id => @issue.assigned_to_id, :name => @issue.assigned_to.name) unless @issue.assigned_to.nil? || @issue.disabled_core_fields.include?('assigned_to_id') || @issue.hidden_attribute?('assigned_to_id')
@@ -12,11 +12,11 @@ api.issue do
api.subject @issue.subject
api.description @issue.description
- api.start_date @issue.start_date unless @issue.disabled_core_fields.include?('start_date') || @issue.hidden_attribute?('start_date')
- api.due_date @issue.due_date unless @issue.disabled_core_fields.include?('due_date') || @issue.hidden_attribute?('due_date')
- api.done_ratio @issue.done_ratio unless @issue.disabled_core_fields.include?('done_ratio') || @issue.hidden_attribute?('done_ratio')
+ api.start_date @issue.start_date unless @issue.hidden_attribute?('start_date')
+ api.due_date @issue.due_date unless @issue.hidden_attribute?('due_date')
+ api.done_ratio @issue.done_ratio unless @issue.hidden_attribute?('done_ratio')
api.is_private @issue.is_private
- api.estimated_hours @issue.estimated_hours unless @issue.disabled_core_fields.include?('estimated_hours') || @issue.hidden_attribute?('estimated_hours')
+ api.estimated_hours @issue.estimated_hours unless @issue.hidden_attribute?('estimated_hours')
api.total_estimated_hours @issue.total_estimated_hours unless @issue.hidden_attribute?('total_estimated_hours')
if User.current.allowed_to?(:view_time_entries, @project)
api.spent_hours(@issue.spent_hours)
@@ -59,7 +59,7 @@ api.issue do
api.user(:id => journal.user_id, :name => journal.user.name) unless journal.user.nil?
api.notes journal.notes
api.created_on journal.created_on
- api.private_notes journal.private_notes
+ api.private_notes journal.private_notes
api.array :details do
journal.visible_details.each do |detail|
api.detail :property => detail.property, :name => detail.prop_key do
@@ -77,4 +77,10 @@ api.issue do
api.user :id => user.id, :name => user.name
end
end if include_in_api_response?('watchers') && User.current.allowed_to?(:view_issue_watchers, @issue.project)
+
+ api.array :allowed_statuses do
+ @allowed_statuses.each do |status|
+ api.status :id => status.id, :name => status.name, :is_closed => status.is_closed
+ end
+ end if include_in_api_response?('allowed_statuses')
end
diff --git a/app/views/issues/show.html.erb b/app/views/issues/show.html.erb
index a84836b..0dc3dca 100644
--- a/app/views/issues/show.html.erb
+++ b/app/views/issues/show.html.erb
@@ -62,9 +62,9 @@
end
unless @issue.disabled_core_fields.include?('assigned_to_id') || @issue.hidden_attribute?('assigned_to_id')
if i % 2 == 0
- rows.left l(:field_assigned_to), (@issue.assigned_to ? link_to_user(@issue.assigned_to) : "-"), :class => 'assigned-to'
+ rows.left l(:field_assigned_to), (@issue.assigned_to ? link_to_principal(@issue.assigned_to) : "-"), :class => 'assigned-to'
else
- rows.right l(:field_assigned_to), (@issue.assigned_to ? link_to_user(@issue.assigned_to) : "-"), :class => 'assigned-to'
+ rows.right l(:field_assigned_to), (@issue.assigned_to ? link_to_principal(@issue.assigned_to) : "-"), :class => 'assigned-to'
end
i += 1
end
@@ -96,9 +96,9 @@
end
unless @issue.disabled_core_fields.include?('due_date') || @issue.hidden_attribute?('due_date')
if i % 2 == 0
- rows.left l(:field_due_date), format_date(@issue.due_date), :class => 'due-date'
+ rows.left l(:field_due_date), issue_due_date_details(@issue), :class => 'due-date'
else
- rows.right l(:field_due_date), format_date(@issue.due_date), :class => 'due-date'
+ rows.right l(:field_due_date), issue_due_date_details(@issue), :class => 'due-date'
end
i += 1
end
@@ -119,13 +119,11 @@
i += 1
end
if User.current.allowed_to?(:view_time_entries, @project) && @issue.total_spent_hours > 0
- if @issue.total_spent_hours > 0
- if i % 2 == 0
+ if i % 2 == 0
rows.left l(:label_spent_time), issue_spent_hours_details(@issue), :class => 'spent-time'
else
rows.right l(:label_spent_time), issue_spent_hours_details(@issue), :class => 'spent-time'
end
- end
end
end %>
<%= render_half_width_custom_fields_rows(@issue) %>
@@ -158,16 +156,7 @@ end %>
<% if !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
-
- <%= link_to_new_subtask(@issue) if User.current.allowed_to?(:manage_subtasks, @project) %>
-
-
- <%=l(:label_subtask_plural)%>
- <%= render_descendants_stats(@issue) unless @issue.leaf? %>
-
-<%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do %>
-<%= render_descendants_tree(@issue) unless @issue.leaf? %>
-<% end %>
+<%= render :partial => 'subtasks' %>
<% end %>
@@ -189,7 +178,7 @@ end %>
<%= render partial: 'action_menu_edit' unless User.current.wants_comments_in_reverse_order? %>
<% other_formats_links do |f| %>
- <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
+ <%= f.link_to 'Atom', :url => {:key => User.current.atom_key} %>
<%= f.link_to 'PDF' %>
<% end %>
@@ -207,7 +196,7 @@ end %>
<% end %>
<% content_for :header_tags do %>
- <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
+ <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.atom_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
<% end %>
<%= context_menu %>
diff --git a/app/views/queries/_form.html.erb b/app/views/queries/_form.html.erb
index f56ae2f..8b55996 100644
--- a/app/views/queries/_form.html.erb
+++ b/app/views/queries/_form.html.erb
@@ -3,49 +3,67 @@
<%= hidden_field_tag 'gantt', '1' if params[:gantt] %>
+<%= hidden_field_tag 'calendar', '1' if params[:calendar] %>
<%= text_field 'query', 'name', :size => 80 %>
-<% if User.current.admin? || User.current.allowed_to?(:manage_public_queries, @query.project) %>
+<% if User.current.admin? ||
+ User.current.allowed_to?(:manage_public_queries, @query.project) %>
-
- <% Role.givable.sorted.each do |role| %>
-
+ <% unless @query.type == 'ProjectQuery' %>
+
+ <% Role.givable.sorted.each do |role| %>
+
+ <% end %>
+ <%= hidden_field_tag 'query[role_ids][]', '' %>
<% end %>
- <%= hidden_field_tag 'query[role_ids][]', '' %>
<% end %>
-
-<%= check_box_tag 'query_is_for_all', 1, @query.project.nil?, :class => (User.current.admin? ? '' : 'disable-unless-private') %>
+<% unless @query.type == 'ProjectQuery' %>
+
+ <%= check_box_tag 'query_is_for_all', 1, @query.project.nil?, :class => (User.current.admin? ? '' : 'disable-unless-private') %>
+<% end %>
-<% unless params[:gantt] %>
-
<% end %>
@@ -53,8 +71,8 @@
<%= render :partial => 'queries/filters', :locals => {:query => query}%>
-<% unless params[:gantt] %>
-
+<% if params[:calendar].nil? && params[:gantt].nil? %>
+
<% 3.times do |i| %>
<%= content_tag(:span, "#{i+1}:", :class => 'query_sort_criteria_count')%>
<%= label_tag "query_sort_criteria_attribute_" + i.to_s,
@@ -72,11 +90,11 @@
<% end %>
-<% unless params[:gantt] %>
-<%= content_tag 'fieldset', :id => 'columns' do %>
-
-<%= render_query_columns_selection(query) %>
-<% end %>
+<% unless params[:calendar] %>
+ <%= content_tag 'fieldset', :id => 'columns' do %>
+
+ <%= render_query_columns_selection(query) %>
+ <% end %>
<% end %>
@@ -91,4 +109,15 @@ $(document).ready(function(){
$("input.disable-unless-private").attr('disabled', !private_checked);
}).trigger('change');
});
+
+$(function ($) {
+ $('input[name=display_type]').change(function () {
+ var option = $('input[name=display_type]:checked').val();
+ if (option == 'board') {
+ $('fieldset#columns, fieldset#sort, p#default_columns, p#group_by').hide();
+ } else {
+ $('fieldset#columns, fieldset#sort, p#default_columns, p#group_by').show();
+ }
+ }).change();
+});
<% end %>
diff --git a/init.rb b/init.rb
index 0a60980..bdfe509 100644
--- a/init.rb
+++ b/init.rb
@@ -1,27 +1,31 @@
-require 'redmine'
-
-Rails.configuration.to_prepare do
-#ActiveSupport::Reloader.to_prepare do
- require_dependency 'issue'
- Issue.send(:prepend, RedmineWorkflowHiddenFields::IssuePatch)
- require_dependency 'issue_query'
- IssueQuery.send(:prepend, RedmineWorkflowHiddenFields::IssueQueryPatch)
- require_dependency 'issues_helper'
- IssuesHelper.send(:prepend, RedmineWorkflowHiddenFields::IssuesHelperPatch)
- require_dependency 'journal'
- Journal.send(:prepend, RedmineWorkflowHiddenFields::JournalPatch)
- require_dependency 'project'
- Project.send(:prepend, RedmineWorkflowHiddenFields::ProjectPatch)
- require_dependency 'query'
- Query.send(:prepend, RedmineWorkflowHiddenFields::QueryPatch)
- QueryColumn.send(:prepend, RedmineWorkflowHiddenFields::QueryColumnPatch)
- QueryCustomFieldColumn.send(:prepend, RedmineWorkflowHiddenFields::QueryCustomFieldColumnPatch)
- require_dependency 'workflow_permission'
- WorkflowPermission.send(:include, RedmineWorkflowHiddenFields::WorkflowPermissionPatch)
- require_dependency 'workflows_helper'
- WorkflowsHelper.send(:prepend, RedmineWorkflowHiddenFields::WorkflowsHelperPatch)
- require_dependency 'redmine/export/pdf/issues_pdf_helper'
- Redmine::Export::PDF::IssuesPdfHelper.send(:prepend, RedmineWorkflowHiddenFields::IssuesPdfHelperPatch)
+if Rails.version > '6.0' && Rails.autoloaders.zeitwerk_enabled?
+ Rails.application.config.after_initialize do
+ RedmineWorkflowHiddenFields.setup
+ end
+else
+ require 'redmine'
+ Rails.configuration.to_prepare do
+ require 'issue'
+ Issue.send(:prepend, RedmineWorkflowHiddenFields::IssuePatch)
+ require_dependency 'issue_query'
+ IssueQuery.send(:prepend, RedmineWorkflowHiddenFields::IssueQueryPatch)
+ require 'issues_helper'
+ IssuesHelper.send(:prepend, RedmineWorkflowHiddenFields::IssuesHelperPatch)
+ require 'journal'
+ Journal.send(:prepend, RedmineWorkflowHiddenFields::JournalPatch)
+ require 'project'
+ Project.send(:prepend, RedmineWorkflowHiddenFields::ProjectPatch)
+ require 'query'
+ Query.send(:prepend, RedmineWorkflowHiddenFields::QueryPatch)
+ QueryColumn.send(:prepend, RedmineWorkflowHiddenFields::QueryColumnPatch)
+ QueryCustomFieldColumn.send(:prepend, RedmineWorkflowHiddenFields::QueryCustomFieldColumnPatch)
+ require 'workflow_permission'
+ WorkflowPermission.send(:include, RedmineWorkflowHiddenFields::WorkflowPermissionPatch)
+ require 'workflows_helper'
+ WorkflowsHelper.send(:prepend, RedmineWorkflowHiddenFields::WorkflowsHelperPatch)
+ require 'redmine/export/pdf/issues_pdf_helper'
+ Redmine::Export::PDF::IssuesPdfHelper.send(:prepend, RedmineWorkflowHiddenFields::IssuesPdfHelperPatch)
+ end
end
Redmine::Plugin.register :redmine_workflow_hidden_fields do
@@ -30,7 +34,7 @@
name 'Redmine Workflow Hidden Fields plugin'
author 'Alexander Wais, David Robinson, et al.'
description "Provides a 'hidden' issue field permission for workflows"
- version '0.5.0'
+ version '0.5.1'
url 'https://github.com/alexwais/redmine_workflow_hidden_fields'
author_url 'http://www.redmine.org/issues/12005'
end
diff --git a/lib/redmine_workflow_hidden_fields.rb b/lib/redmine_workflow_hidden_fields.rb
new file mode 100644
index 0000000..c9e88f7
--- /dev/null
+++ b/lib/redmine_workflow_hidden_fields.rb
@@ -0,0 +1,15 @@
+module RedmineWorkflowHiddenFields
+ def self.setup
+ Issue.send(:prepend, RedmineWorkflowHiddenFields::IssuePatch)
+ IssueQuery.send(:prepend, RedmineWorkflowHiddenFields::IssueQueryPatch)
+ IssuesHelper.send(:prepend, RedmineWorkflowHiddenFields::IssuesHelperPatch)
+ Journal.send(:prepend, RedmineWorkflowHiddenFields::JournalPatch)
+ Project.send(:prepend, RedmineWorkflowHiddenFields::ProjectPatch)
+ Query.send(:prepend, RedmineWorkflowHiddenFields::QueryPatch)
+ QueryColumn.send(:prepend, RedmineWorkflowHiddenFields::QueryColumnPatch)
+ QueryCustomFieldColumn.send(:prepend, RedmineWorkflowHiddenFields::QueryCustomFieldColumnPatch)
+ WorkflowPermission.send(:include, RedmineWorkflowHiddenFields::WorkflowPermissionPatch)
+ WorkflowsHelper.send(:prepend, RedmineWorkflowHiddenFields::WorkflowsHelperPatch)
+ Redmine::Export::PDF::IssuesPdfHelper.send(:prepend, RedmineWorkflowHiddenFields::IssuesPdfHelperPatch)
+ end
+end
diff --git a/lib/redmine_workflow_hidden_fields/issues_helper_patch.rb b/lib/redmine_workflow_hidden_fields/issues_helper_patch.rb
index d692928..11958cf 100644
--- a/lib/redmine_workflow_hidden_fields/issues_helper_patch.rb
+++ b/lib/redmine_workflow_hidden_fields/issues_helper_patch.rb
@@ -22,6 +22,8 @@ def email_issue_attributes(issue, user, html)
items
end
+ MultipleValuesDetail = Struct.new(:property, :prop_key, :custom_field, :old_value, :value)
+
def details_to_strings(details, no_html=false, options={})
options[:only_path] = (options[:only_path] == false ? false : true)
strings = []
@@ -46,6 +48,7 @@ def details_to_strings(details, no_html=false, options={})
end
if values_by_field.present?
values_by_field.each do |field, changes|
+ # [Nomadia-changes] Added condition for hiding hidden fields, compared to the original function
unless details.first.journal.issue.hidden_attribute?(field.id.to_s, options[:user])
if changes[:added].any?
detail = MultipleValuesDetail.new('cf', field.id.to_s, field)