]> source.dussan.org Git - redmine.git/commitdiff
Add buttons to save/edit/delete a custom query to calendar view (#32194).
authorGo MAEDA <maeda@farend.jp>
Sat, 30 Nov 2019 00:58:45 +0000 (00:58 +0000)
committerGo MAEDA <maeda@farend.jp>
Sat, 30 Nov 2019 00:58:45 +0000 (00:58 +0000)
Patch by Mizuki ISHIKAWA.

git-svn-id: http://svn.redmine.org/redmine/trunk@19322 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/queries_controller.rb
app/views/calendars/show.html.erb
app/views/queries/_form.html.erb
test/functional/queries_controller_test.rb

index 56283dc30b4851c4fc30556a66b5296278b6750d..f68f2875caa03c18298f79b7392acbf765d9e2fe 100644 (file)
@@ -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
index 9874ac15bd5e694a35fb4a13cfa8594a8630df83..93cd12a2aac97d3e277672ff37405d807fb0effe 100644 (file)
@@ -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' %>
 
 <div id="query_form_with_buttons" class="hide-when-print">
 <div id="query_form_content">
 
   <%= 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 %>
 </p>
 </div>
 <% end %>
index 7227a6c5fd1b55ba98d4f45eedcf531acacc6ac0..217995315c255d9bd418b81a2139cc2a0d0ce552 100644 (file)
@@ -3,6 +3,7 @@
 <div class="box">
 <div class="tabular">
 <%= hidden_field_tag 'gantt', '1' if params[:gantt] %>
+<%= hidden_field_tag 'calendar', '1' if params[:calendar] %>
 
 <p><label for="query_name"><%=l(:field_name)%></label>
 <%= text_field 'query', 'name', :size => 80 %></p>
@@ -27,6 +28,7 @@
   <%= check_box_tag 'query_is_for_all', 1, @query.project.nil?, :class => (User.current.admin? ? '' : 'disable-unless-private') %></p>
 <% end %>
 
+<% unless params[:calendar] %>
 <fieldset id="options"><legend><%= l(:label_options) %></legend>
   <% if @query.available_display_types.size > 1 %>
   <p><label for='display_type'><%= l(:label_display_type) %></label>
   <label class="inline"><%= check_box_tag "query[draw_progress_line]", "1", @query.draw_progress_line %> <%= l(:label_gantt_progress_line) %></label>
   <label class="inline"><%= check_box_tag "query[draw_selected_columns]", "1", @query.draw_selected_columns, :data => { :enables => 'span.query-columns select, span.query-columns input'} %> <%= l(:description_selected_columns) %></label>
   </p>
-<% end %>
+<% end # unless params[:gantt] %>
 </fieldset>
+<% end # unless params[:calendar] %>
 </div>
 
 <fieldset id="filters"><legend><%= l(:label_filter_plural) %></legend>
 <%= render :partial => 'queries/filters', :locals => {:query => query}%>
 </fieldset>
 
-<% unless params[:gantt] %>
+<% if params[:calendar].nil? && params[:gantt].nil? %>
 <fieldset id="sort"><legend><%= l(:label_sort) %></legend>
 <% 3.times do |i| %>
 <%= content_tag(:span, "#{i+1}:", :class => 'query_sort_criteria_count')%>
 </fieldset>
 <% end %>
 
+<% unless params[:calendar] %>
 <%= content_tag 'fieldset', :id => 'columns' do %>
 <legend><%= l(:field_column_names) %></legend>
 <%= render_query_columns_selection(query) %>
 <% end %>
+<% end %>
 
 </div>
 
index 55c46478c46b328246fd8f4103a80b33f714e0bd..2db4ac7d695eae1f40dfecfcf083b06ba68fed3d 100644 (file)
@@ -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 => {