Added per user custom queries.

Any logged in user can now save queries (they are not visible to the other users).
Only users with explicit permission can manage queries that are visible to anyone.
The queries list is removed from the "Reports" view. It can now be accessed from the issues list.

git-svn-id: http://redmine.rubyforge.org/svn/trunk@566 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang committed 2007-06-23 13:49:29 +00:00
1 parent 5332c4362c
commit 1c44600c62
17 files changed
+112 -74

No files matched your search

-5
View File
@@ -1,5 +0,0 @@
<% if authorize_for('projects', 'add_issue') %>
<% form_tag({ :controller => 'projects', :action => 'add_issue', :id => @project }, :method => 'get') do %>
<%= l(:label_issue_new) %>: <%= select_tag 'tracker_id', ("<option></option>" + options_from_collection_for_select(trackers, 'id', 'name')), :onchange => "if (this.value!='') {this.form.submit();}" %>
<% end %>
<% end %>
+11
View File
@@ -77,6 +77,9 @@
<%= link_to l(:label_calendar), {:controller => 'projects', :action => 'calendar', :id => @project }, :class => "menuItem" %>
<%= link_to l(:label_gantt), {:controller => 'projects', :action => 'gantt', :id => @project }, :class => "menuItem" %>
<%= link_to l(:label_issue_plural), {:controller => 'projects', :action => 'list_issues', :id => @project }, :class => "menuItem" %>
<% if @project && authorize_for('projects', 'add_issue') %>
<a class="menuItem" href="#" onmouseover="menuItemMouseover(event,'menuNewIssue');" onclick="this.blur(); return false;"><span class="menuItemText"><%= l(:label_issue_new) %></span><span class="menuItemArrow">&#9654;</span></a>
<% end %>
<%= link_to l(:label_report_plural), {:controller => 'reports', :action => 'issue_report', :id => @project }, :class => "menuItem" %>
<%= link_to l(:label_activity), {:controller => 'projects', :action => 'activity', :id => @project }, :class => "menuItem" %>
<%= link_to l(:label_news_plural), {:controller => 'projects', :action => 'list_news', :id => @project }, :class => "menuItem" %>
@@ -91,6 +94,14 @@
<%= link_to_if_authorized l(:label_settings), {:controller => 'projects', :action => 'settings', :id => @project }, :class => "menuItem" %>
</div>
<% end %>
<% if @project && authorize_for('projects', 'add_issue') %>
<div id="menuNewIssue" class="menu" onmouseover="menuMouseover(event)">
<% Tracker.find(:all, :order => 'position').each do |tracker| %>
<%= link_to tracker.name, {:controller => 'projects', :action => 'add_issue', :id => @project, :tracker_id => tracker}, :class => "menuItem" %>
<% end %>
</div>
<% end %>
<% if loggedin? and @logged_in_user.memberships.any? %>
<div id="menuAllProjects" class="menu" onmouseover="menuMouseover(event)">
-6
View File
@@ -1,6 +0,0 @@
<h2><%= l(:label_query_new) %></h2>
<% form_tag({:action => 'add_query', :id => @project}) do %>
<%= render :partial => 'queries/form', :locals => {:query => @query} %>
<%= submit_tag l(:button_create) %>
<% end %>
+5 -9
View File
@@ -1,6 +1,6 @@
<% if @query.new_record? %>
<div class="contextual">
<%= render :partial => 'issues/add_shortcut', :locals => {:trackers => @trackers } %>
<%= link_to l(:label_query_plural), :controller => 'queries', :project_id => @project %>
</div>
<h2><%=l(:label_issue_plural)%></h2>
@@ -19,9 +19,9 @@
:update => "content",
}, :class => 'icon icon-reload' %>
<% if authorize_for('projects', 'add_query') %>
<% if loggedin? %>
<%= link_to_remote l(:button_save),
{ :url => { :controller => 'projects', :action => "add_query", :id => @project },
{ :url => { :controller => 'queries', :action => 'new', :project_id => @project },
:method => 'get',
:update => "content",
:with => "Form.serialize('query_form')"
@@ -31,12 +31,8 @@
<br />
<% else %>
<div class="contextual">
<%= render :partial => 'issues/add_shortcut', :locals => {:trackers => @trackers } %>
<%= link_to l(:button_clear), {:controller => 'projects', :action => 'list_issues', :id => @project, :set_filter => 1}, :class => 'icon icon-reload' %>
<% if authorize_for('projects', 'add_query') %>
<%= 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' %>
<% end %>
<%= link_to l(:label_query_plural), {:controller => 'queries', :project_id => @project} %> |
<%= link_to l(:label_issue_view_all), {:controller => 'projects', :action => 'list_issues', :id => @project, :set_filter => 1} %>
</div>
<h2><%= @query.name %></h2>
<% end %>
-3
View File
@@ -20,9 +20,6 @@
</ul>
<div class="box">
<div class="contextual">
<%= render :partial => 'issues/add_shortcut', :locals => {:trackers => @trackers } %>
</div>
<h3 class="icon22 icon22-tracker"><%=l(:label_issue_tracking)%></h3>
<ul>
<% for tracker in @trackers %>
+1 -1
View File
@@ -55,7 +55,7 @@ function toggle_multi_select(field) {
//]]>
</script>
<fieldset style="margin:0;"><legend><%= l(:label_filter_plural) %></legend>
<fieldset><legend><%= l(:label_filter_plural) %></legend>
<table width="100%">
<tr>
<td>
+5 -2
View File
@@ -1,12 +1,15 @@
<%= error_messages_for 'query' %>
<!--[form:query]-->
<div class="box">
<div class="tabular">
<p><label for="query_name"><%=l(:field_name)%></label>
<%= text_field 'query', 'name', :size => 80 %></p>
<% if authorize_for('projects', 'add_query') %>
<p><label for="query_is_public"><%=l(:field_is_public)%></label>
<%= check_box 'query', 'is_public' %></p>
<% end %>
</div>
<%= render :partial => 'queries/filters', :locals => {:query => query}%>
</div>
<!--[eoform:query]-->
+1 -1
View File
@@ -3,4 +3,4 @@
<% form_tag({:action => 'edit', :id => @query}) do %>
<%= render :partial => 'form', :locals => {:query => @query} %>
<%= submit_tag l(:button_save) %>
<% end %>
<% end %>
+29
View File
@@ -0,0 +1,29 @@
<div class="contextual">
<% if loggedin? %>
<%= link_to l(:label_query_new), {:controller => 'queries', :action => 'new', :project_id => @project}, :class => 'icon icon-add' %>
<% end %>
</div>
<h2><%= l(:label_query_plural) %></h2>
<% if @queries.empty? %>
<p><i><%=l(:label_no_data)%></i></p>
<% else %>
<table class="list">
<% @queries.each do |query| %>
<tr class="<%= cycle('odd', 'even') %>">
<td>
<%= link_to query.name, :controller => 'projects', :action => 'list_issues', :id => @project, :query_id => query %>
</td>
<td align="right">
<small>
<% if query.editable_by?(@logged_in_user) %>
<%= 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' %>
</small>
<% end %>
</td>
</tr>
<% end %>
</table>
<% end %>
+6
View File
@@ -0,0 +1,6 @@
<h2><%= l(:label_query_new) %></h2>
<% form_tag({:action => 'new', :project_id => @query.project}) do %>
<%= render :partial => 'form', :locals => {:query => @query} %>
<%= submit_tag l(:button_save) %>
<% end %>
-17
View File
@@ -1,27 +1,10 @@
<h2><%=l(:label_report_plural)%></h2>
<div class="splitcontentleft">
<div class="contextual">
<%= link_to_if_authorized l(:label_query_new), {:controller => 'projects', :action => 'add_query', :id => @project}, :class => 'icon icon-add' %>
</div>
<h3><%= l(:label_query_plural) %></h3>
<% if @queries.empty? %><p><i><%=l(:label_no_data)%></i></p><% end %>
<ul>
<% @queries.each do |query| %>
<li><%= link_to query.name, :controller => 'projects', :action => 'list_issues', :id => @project, :query_id => query %></li>
<% end %>
</ul>
</div>
<div class="splitcontentright">
<% if @total_hours %>
<h3 class="textright"><%= l(:label_spent_time) %>:
<%= link_to(lwr(:label_f_hour, @total_hours), {:controller => 'timelog', :action => 'details', :project_id => @project}, :class => 'icon icon-time') %>
</h3>
<% end %>
</div>
<div class="clear"></div>
<div class="splitcontentleft">
<h3><%=l(:field_tracker)%>&nbsp;&nbsp;<%= link_to image_tag('zoom_in.png'), :detail => 'tracker' %></h3>