From: Go MAEDA Date: Sat, 30 Nov 2019 00:58:45 +0000 (+0000) Subject: Add buttons to save/edit/delete a custom query to calendar view (#32194). X-Git-Tag: 4.2.0~1318 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f33d6177feb8203ca3ecb07c2ff064170e1db5f1;p=redmine.git Add buttons to save/edit/delete a custom query to calendar view (#32194). Patch by Mizuki ISHIKAWA. git-svn-id: http://svn.redmine.org/redmine/trunk@19322 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/controllers/queries_controller.rb b/app/controllers/queries_controller.rb index 56283dc30..f68f2875c 100644 --- a/app/controllers/queries_controller.rb +++ b/app/controllers/queries_controller.rb @@ -147,6 +147,12 @@ class QueriesController < ApplicationController else redirect_to issues_gantt_path(options) end + elsif params[:calendar] + if @project + redirect_to project_calendar_path(@project, options) + else + redirect_to issues_calendar_path(options) + end else redirect_to _project_issues_path(@project, options) end diff --git a/app/views/calendars/show.html.erb b/app/views/calendars/show.html.erb index 9874ac15b..93cd12a2a 100644 --- a/app/views/calendars/show.html.erb +++ b/app/views/calendars/show.html.erb @@ -3,6 +3,7 @@ <%= form_tag({:controller => 'calendars', :action => 'show', :project_id => @project}, :method => :get, :id => 'query_form') do %> <%= hidden_field_tag 'set_filter', '1' %> +<%= hidden_field_tag 'calendar', '1' %>
@@ -26,6 +27,15 @@ <%= link_to_function l(:button_apply), '$("#query_form").submit()', :class => 'icon icon-checked' %> <%= link_to l(:button_clear), { :project_id => @project, :set_filter => 1 }, :class => 'icon icon-reload' %> + <% if @query.new_record? && User.current.allowed_to?(:save_queries, @project, :global => true) %> + <%= link_to_function l(:button_save), + "$('#query_form').attr('action', '#{ @project ? new_project_query_path(@project) : new_query_path }').submit();", + :class => 'icon icon-save' %> + <% end %> + <% if !@query.new_record? && @query.editable_by?(User.current) %> + <%= link_to l(:button_edit), edit_query_path(@query, :calendar => 1), :class => 'icon icon-edit' %> + <%= delete_link query_path(@query, :calendar => 1) %> + <% end %>

<% end %> diff --git a/app/views/queries/_form.html.erb b/app/views/queries/_form.html.erb index 7227a6c5f..217995315 100644 --- a/app/views/queries/_form.html.erb +++ b/app/views/queries/_form.html.erb @@ -3,6 +3,7 @@
<%= hidden_field_tag 'gantt', '1' if params[:gantt] %> +<%= hidden_field_tag 'calendar', '1' if params[:calendar] %>

<%= text_field 'query', 'name', :size => 80 %>

@@ -27,6 +28,7 @@ <%= check_box_tag 'query_is_for_all', 1, @query.project.nil?, :class => (User.current.admin? ? '' : 'disable-unless-private') %>

<% end %> +<% unless params[:calendar] %>
<%= l(:label_options) %> <% if @query.available_display_types.size > 1 %>

@@ -60,15 +62,16 @@

-<% end %> +<% end # unless params[:gantt] %>
+<% end # unless params[:calendar] %>
<%= l(:label_filter_plural) %> <%= render :partial => 'queries/filters', :locals => {:query => query}%>
-<% unless params[:gantt] %> +<% if params[:calendar].nil? && params[:gantt].nil? %>
<%= l(:label_sort) %> <% 3.times do |i| %> <%= content_tag(:span, "#{i+1}:", :class => 'query_sort_criteria_count')%> @@ -87,10 +90,12 @@
<% end %> +<% unless params[:calendar] %> <%= content_tag 'fieldset', :id => 'columns' do %> <%= l(:field_column_names) %> <%= render_query_columns_selection(query) %> <% end %> +<% end %>
diff --git a/test/functional/queries_controller_test.rb b/test/functional/queries_controller_test.rb index 55c46478c..2db4ac7d6 100644 --- a/test/functional/queries_controller_test.rb +++ b/test/functional/queries_controller_test.rb @@ -153,6 +153,41 @@ class QueriesControllerTest < Redmine::ControllerTest assert_response :success end + def test_new_with_gantt_params + @request.session[:user_id] = 2 + get :new, :params => { :gantt => 1 } + assert_response :success + + assert_select 'input[type="hidden"]#gantt', 1 + assert_select 'fieldset#options' + assert_select 'fieldset#filters' + assert_select 'fieldset legend', { :text => 'Sort', :count => 0 } + assert_select 'fieldset#columns' + end + + def test_new_with_calendar_params + @request.session[:user_id] = 2 + get :new, :params => { :calendar => 1 } + assert_response :success + + assert_select 'input[type="hidden"]#calendar', 1 + assert_select 'fieldset#options', :count => 0 + assert_select 'fieldset#filters' + assert_select 'fieldset legend', { :text => 'Sort', :count => 0 } + assert_select 'fieldset#columns', :count => 0 + end + + def test_new_without_gantt_and_calendar_params + @request.session[:user_id] = 2 + get :new + assert_response :success + + assert_select 'fieldset#options' + assert_select 'fieldset#filters' + assert_select 'fieldset legend', { :text => 'Sort' } + assert_select 'fieldset#columns' + end + def test_create_project_public_query @request.session[:user_id] = 2 post :create, :params => {