diff --git a/app/controllers/queries_controller.rb b/app/controllers/queries_controller.rb index 16755a1..9192c2e 100644 --- a/app/controllers/queries_controller.rb +++ b/app/controllers/queries_controller.rb @@ -40,6 +40,15 @@ class QueriesController < ApplicationController render :layout => false if request.xhr? end + def copy + @query = Query.new Query.find(params[:id]).attributes + @oldname = @query.name + @query.name = "" + @query.user = User.current + @query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin? + render :layout => !request.xhr?, :action => 'new' + end + def edit if request.post? @query.filters = {} diff --git a/app/views/issues/index.rhtml b/app/views/issues/index.rhtml index ae21661..d6161f0 100644 --- a/app/views/issues/index.rhtml +++ b/app/views/issues/index.rhtml @@ -34,7 +34,8 @@
<% if @query.editable_by?(User.current) %> <%= link_to l(:button_edit), {:controller => 'queries', :action => 'edit', :id => @query}, :class => 'icon icon-edit' %> - <%= link_to l(:button_delete), {:controller => 'queries', :action => 'destroy', :id => @query}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %> + <%= link_to l(:button_copy), {:controller => 'queries', :action => 'copy', :id => @query}, :class => 'icon icon-copy' %> + <%= link_to l(:button_delete), {:controller => 'queries', :action => 'destroy', :id => @query}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %> <% end %>

<%=h @query.name %>

diff --git a/app/views/queries/new.rhtml b/app/views/queries/new.rhtml index 631fd6c..ed2f97a 100644 --- a/app/views/queries/new.rhtml +++ b/app/views/queries/new.rhtml @@ -1,3 +1,4 @@ +<%= content_tag(:div, l(:label_query_copy_from, :name => content_tag(:strong, @oldname)), :class => "contextual") unless @oldname.nil? %>

<%= l(:label_query_new) %>

<% form_tag({:action => 'new', :project_id => @query.project}, :onsubmit => 'selectAllOptions("selected_columns");') do %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 69f7c76..da93b29 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -513,6 +513,7 @@ en: label_query: Custom query label_query_plural: Custom queries label_query_new: New query + label_query_copy_from: "Based upon query: {{name}}" label_filter_add: Add filter label_filter_plural: Filters label_equals: is