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