Revision 1298:4f746d8966dd app/views
| app/views/account/logout.html.erb | ||
|---|---|---|
| 1 |
<%= form_tag(signout_path) do %> |
|
| 2 |
<p><%= submit_tag l(:label_logout) %></p> |
|
| 3 |
<% end %> |
|
| app/views/activities/index.html.erb | ||
|---|---|---|
| 15 | 15 |
<% @events_by_day.keys.sort.reverse.each do |day| %> |
| 16 | 16 |
<h3><%= format_activity_day(day) %></h3> |
| 17 | 17 |
<dl> |
| 18 |
<% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
|
|
| 19 |
<dt class="<%= e.event_type %> <%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>"> |
|
| 18 |
<% sort_activity_events(@events_by_day[day]).each do |e, in_group| -%>
|
|
| 19 |
<dt class="<%= e.event_type %> <%= "grouped" if in_group %> <%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>">
|
|
| 20 | 20 |
<%= avatar(e.event_author, :size => "24") if e.respond_to?(:event_author) %> |
| 21 | 21 |
<span class="time"><%= format_time(e.event_datetime, false) %></span> |
| 22 | 22 |
<%= content_tag('span', h(e.project), :class => 'project') if @project.nil? || @project != e.project %>
|
| 23 |
<%= link_to format_activity_title(e.event_title), e.event_url %></dt> |
|
| 24 |
<dd><span class="description"><%= format_activity_description(e.event_description) %></span> |
|
| 23 |
<%= link_to format_activity_title(e.event_title), e.event_url %> |
|
| 24 |
</dt> |
|
| 25 |
<dd class="<%= "grouped" if in_group %>"><span class="description"><%= format_activity_description(e.event_description) %></span> |
|
| 25 | 26 |
<span class="author"><%= link_to_user(e.event_author) if e.respond_to?(:event_author) %></span></dd> |
| 26 | 27 |
<% end -%> |
| 27 | 28 |
</dl> |
| ... | ... | |
| 54 | 55 |
<h3><%= l(:label_activity) %></h3> |
| 55 | 56 |
<p><% @activity.event_types.each do |t| %> |
| 56 | 57 |
<%= check_box_tag "show_#{t}", 1, @activity.scope.include?(t) %>
|
| 57 |
<label for="show_<%=t%>"><%= link_to(l("label_#{t.singularize}_plural"), {"show_#{t}" => 1, :user_id => params[:user_id]})%></label>
|
|
| 58 |
<label for="show_<%=t%>"><%= link_to(l("label_#{t.singularize}_plural"), {"show_#{t}" => 1, :user_id => params[:user_id], :from => params[:from]})%></label>
|
|
| 58 | 59 |
<br /> |
| 59 | 60 |
<% end %></p> |
| 60 | 61 |
<% if @project && @project.descendants.active.any? %> |
| app/views/admin/plugins.html.erb | ||
|---|---|---|
| 3 | 3 |
<% if @plugins.any? %> |
| 4 | 4 |
<table class="list plugins"> |
| 5 | 5 |
<% @plugins.each do |plugin| %> |
| 6 |
<tr class="<%= cycle('odd', 'even') %>">
|
|
| 6 |
<tr id="plugin-<%= plugin.id %>" class="<%= cycle('odd', 'even') %>">
|
|
| 7 | 7 |
<td><span class="name"><%=h plugin.name %></span> |
| 8 | 8 |
<%= content_tag('span', h(plugin.description), :class => 'description') unless plugin.description.blank? %>
|
| 9 | 9 |
<%= content_tag('span', link_to(h(plugin.url), plugin.url), :class => 'url') unless plugin.url.blank? %>
|
| 10 | 10 |
</td> |
| 11 | 11 |
<td class="author"><%= plugin.author_url.blank? ? h(plugin.author) : link_to(h(plugin.author), plugin.author_url) %></td> |
| 12 | 12 |
<td class="version"><%=h plugin.version %></td> |
| 13 |
<td class="configure"><%= link_to(l(:button_configure), :controller => 'settings', :action => 'plugin', :id => plugin.id) if plugin.configurable? %></td>
|
|
| 13 |
<td class="configure"><%= link_to(l(:button_configure), plugin_settings_path(plugin)) if plugin.configurable? %></td>
|
|
| 14 | 14 |
</tr> |
| 15 | 15 |
<% end %> |
| 16 | 16 |
</table> |
| app/views/admin/projects.html.erb | ||
|---|---|---|
| 27 | 27 |
<tbody> |
| 28 | 28 |
<% project_tree(@projects) do |project, level| %> |
| 29 | 29 |
<tr class="<%= cycle("odd", "even") %> <%= project.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
|
| 30 |
<td class="name"><span><%= link_to_project(project, {:action => (project.active? ? 'settings' : 'show')}, :title => project.short_description) %></span></td>
|
|
| 30 |
<td class="name"><span><%= link_to_project_settings(project, {}, :title => project.short_description) %></span></td>
|
|
| 31 | 31 |
<td align="center"><%= checked_image project.is_public? %></td> |
| 32 | 32 |
<td align="center"><%= format_date(project.created_on) %></td> |
| 33 | 33 |
<td class="buttons"> |
| app/views/attachments/_form.html.erb | ||
|---|---|---|
| 1 |
<span id="attachments_fields"> |
|
| 1 | 2 |
<% if defined?(container) && container && container.saved_attachments %> |
| 2 | 3 |
<% container.saved_attachments.each_with_index do |attachment, i| %> |
| 3 |
<span class="icon icon-attachment" style="display:block; line-height:1.5em;"> |
|
| 4 |
<%= h(attachment.filename) %> (<%= number_to_human_size(attachment.filesize) %>) |
|
| 5 |
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.id}.#{attachment.digest}" %>
|
|
| 4 |
<span id="attachments_p<%= i %>"> |
|
| 5 |
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename') +
|
|
| 6 |
text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description') +
|
|
| 7 |
link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
|
|
| 8 |
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
|
|
| 6 | 9 |
</span> |
| 7 | 10 |
<% end %> |
| 8 | 11 |
<% end %> |
| 9 |
<span id="attachments_fields"> |
|
| 10 |
<span> |
|
| 11 |
<%= file_field_tag 'attachments[1][file]', :id => nil, :class => 'file', |
|
| 12 |
:onchange => "checkFileSize(this, #{Setting.attachment_max_size.to_i.kilobytes}, '#{escape_javascript(l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)))}');" -%>
|
|
| 13 |
<nobr><%= text_field_tag 'attachments[1][description]', '', :id => nil, :class => 'description', :maxlength => 255, :placeholder => l(:label_optional_description) %> |
|
| 14 |
<%= link_to_function(image_tag('delete.png'), 'removeFileField(this)', :title => (l(:button_delete))) %></nobr>
|
|
| 15 |
</span> |
|
| 12 |
</span> |
|
| 13 |
<span class="add_attachment"> |
|
| 14 |
<%= file_field_tag 'attachments[dummy][file]', |
|
| 15 |
:id => nil, |
|
| 16 |
:class => 'file_selector', |
|
| 17 |
:multiple => true, |
|
| 18 |
:onchange => 'addInputFiles(this);', |
|
| 19 |
:data => {
|
|
| 20 |
:max_file_size => Setting.attachment_max_size.to_i.kilobytes, |
|
| 21 |
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)), |
|
| 22 |
:max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i, |
|
| 23 |
:upload_path => uploads_path(:format => 'js'), |
|
| 24 |
:description_placeholder => l(:label_optional_description) |
|
| 25 |
} %> |
|
| 26 |
(<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>) |
|
| 16 | 27 |
</span> |
| 17 | 28 |
|
| 18 |
<span class="add_attachment"><%= link_to l(:label_add_another_file), '#', :onclick => 'addFileField(); return false;', :class => 'add_attachment' %> |
|
| 19 |
(<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)</span> |
|
| 29 |
<% content_for :header_tags do %> |
|
| 30 |
<%= javascript_include_tag 'attachments' %> |
|
| 31 |
<% end %> |
|
| app/views/attachments/destroy.js.erb | ||
|---|---|---|
| 1 |
$('#attachments_<%= j params[:attachment_id] %>').remove();
|
|
| app/views/attachments/upload.js.erb | ||
|---|---|---|
| 1 |
var fileSpan = $('#attachments_<%= j params[:attachment_id] %>');
|
|
| 2 |
$('<input>', { type: 'hidden', name: 'attachments[<%= j params[:attachment_id] %>][token]' } ).val('<%= j @attachment.token %>').appendTo(fileSpan);
|
|
| 3 |
fileSpan.find('a.remove-upload')
|
|
| 4 |
.attr({
|
|
| 5 |
"data-remote": true, |
|
| 6 |
"data-method": 'delete', |
|
| 7 |
href: '<%= j attachment_path(@attachment, :attachment_id => params[:attachment_id], :format => 'js') %>' |
|
| 8 |
}) |
|
| 9 |
.off('click');
|
|
| app/views/auth_sources/_form.html.erb | ||
|---|---|---|
| 1 | 1 |
<%= error_messages_for 'auth_source' %> |
| 2 | 2 |
|
| 3 |
<div class="box"> |
|
| 4 |
<!--[form:auth_source]--> |
|
| 5 |
<p><label for="auth_source_name"><%=l(:field_name)%> <span class="required">*</span></label> |
|
| 6 |
<%= text_field 'auth_source', 'name' %></p> |
|
| 7 |
|
|
| 8 |
<p><label for="auth_source_onthefly_register"><%=l(:field_onthefly)%></label> |
|
| 9 |
<%= check_box 'auth_source', 'onthefly_register' %></p> |
|
| 3 |
<div class="box tabular"> |
|
| 4 |
<p><%= f.text_field :name, :required => true %></p> |
|
| 5 |
<p><%= f.check_box :onthefly_register, :label => :field_onthefly %></p> |
|
| 10 | 6 |
</div> |
| 11 |
|
|
| 12 |
<!--[eoform:auth_source]--> |
|
| 13 |
|
|
| app/views/auth_sources/_form_auth_source_ldap.html.erb | ||
|---|---|---|
| 1 | 1 |
<%= error_messages_for 'auth_source' %> |
| 2 | 2 |
|
| 3 |
<div class="box"> |
|
| 4 |
<!--[form:auth_source]--> |
|
| 5 |
<p><label for="auth_source_name"><%=l(:field_name)%> <span class="required">*</span></label> |
|
| 6 |
<%= text_field 'auth_source', 'name' %></p> |
|
| 7 |
|
|
| 8 |
<p><label for="auth_source_host"><%=l(:field_host)%> <span class="required">*</span></label> |
|
| 9 |
<%= text_field 'auth_source', 'host' %></p> |
|
| 10 |
|
|
| 11 |
<p><label for="auth_source_port"><%=l(:field_port)%> <span class="required">*</span></label> |
|
| 12 |
<%= text_field 'auth_source', 'port', :size => 6 %> <%= check_box 'auth_source', 'tls' %> LDAPS</p> |
|
| 13 |
|
|
| 14 |
<p><label for="auth_source_account"><%=l(:field_account)%></label> |
|
| 15 |
<%= text_field 'auth_source', 'account' %></p> |
|
| 16 |
|
|
| 17 |
<p><label for="auth_source_account_password"><%=l(:field_password)%></label> |
|
| 18 |
<%= password_field 'auth_source', 'account_password', :name => 'ignore', |
|
| 19 |
:value => ((@auth_source.new_record? || @auth_source.account_password.blank?) ? '' : ('x'*15)),
|
|
| 20 |
:onfocus => "this.value=''; this.name='auth_source[account_password]';", |
|
| 21 |
:onchange => "this.name='auth_source[account_password]';" %></p> |
|
| 22 |
|
|
| 23 |
<p><label for="auth_source_base_dn"><%=l(:field_base_dn)%> <span class="required">*</span></label> |
|
| 24 |
<%= text_field 'auth_source', 'base_dn', :size => 60 %></p> |
|
| 25 |
|
|
| 26 |
<p><label for="auth_source_custom_filter"><%=l(:field_auth_source_ldap_filter)%></label> |
|
| 27 |
<%= text_field 'auth_source', 'filter', :size => 60 %></p> |
|
| 28 |
|
|
| 29 |
<p><label for="auth_source_timeout"><%=l(:field_timeout)%></label> |
|
| 30 |
<%= text_field 'auth_source', 'timeout', :size => 4 %></p> |
|
| 31 |
|
|
| 32 |
<p><label for="auth_source_onthefly_register"><%=l(:field_onthefly)%></label> |
|
| 33 |
<%= check_box 'auth_source', 'onthefly_register' %></p> |
|
| 3 |
<div class="box tabular"> |
|
| 4 |
<p><%= f.text_field :name, :required => true %></p> |
|
| 5 |
<p><%= f.text_field :host, :required => true %></p> |
|
| 6 |
<p><%= f.text_field :port, :required => true, :size => 6 %> <%= f.check_box :tls, :no_label => true %> LDAPS</p> |
|
| 7 |
<p><%= f.text_field :account %></p> |
|
| 8 |
<p><%= f.password_field :account_password, :label => :field_password, |
|
| 9 |
:name => 'dummy_password', |
|
| 10 |
:value => ((@auth_source.new_record? || @auth_source.account_password.blank?) ? '' : ('x'*15)),
|
|
| 11 |
:onfocus => "this.value=''; this.name='auth_source[account_password]';", |
|
| 12 |
:onchange => "this.name='auth_source[account_password]';" %></p> |
|
| 13 |
<p><%= f.text_field :base_dn, :required => true, :size => 60 %></p> |
|
| 14 |
<p><%= f.text_field :filter, :size => 60, :label => :field_auth_source_ldap_filter %></p> |
|
| 15 |
<p><%= f.text_field :timeout, :size => 4 %></p> |
|
| 16 |
<p><%= f.check_box :onthefly_register, :label => :field_onthefly %></p> |
|
| 34 | 17 |
</div> |
| 35 | 18 |
|
| 36 |
<fieldset class="box"><legend><%=l(:label_attribute_plural)%></legend> |
|
| 37 |
<p><label for="auth_source_attr_login"><%=l(:field_login)%> <span class="required">*</span></label> |
|
| 38 |
<%= text_field 'auth_source', 'attr_login', :size => 20 %></p> |
|
| 39 |
|
|
| 40 |
<p><label for="auth_source_attr_firstname"><%=l(:field_firstname)%></label> |
|
| 41 |
<%= text_field 'auth_source', 'attr_firstname', :size => 20 %></p> |
|
| 42 |
|
|
| 43 |
<p><label for="auth_source_attr_lastname"><%=l(:field_lastname)%></label> |
|
| 44 |
<%= text_field 'auth_source', 'attr_lastname', :size => 20 %></p> |
|
| 45 |
|
|
| 46 |
<p><label for="auth_source_attr_mail"><%=l(:field_mail)%></label> |
|
| 47 |
<%= text_field 'auth_source', 'attr_mail', :size => 20 %></p> |
|
| 19 |
<fieldset class="box tabular"><legend><%=l(:label_attribute_plural)%></legend> |
|
| 20 |
<p><%= f.text_field :attr_login, :required => true, :size => 20 %></p> |
|
| 21 |
<p><%= f.text_field :attr_firstname, :size => 20 %></p> |
|
| 22 |
<p><%= f.text_field :attr_lastname, :size => 20 %></p> |
|
| 23 |
<p><%= f.text_field :attr_mail, :size => 20 %></p> |
|
| 48 | 24 |
</fieldset> |
| 49 |
<!--[eoform:auth_source]--> |
|
| 50 |
|
|
| app/views/auth_sources/edit.html.erb | ||
|---|---|---|
| 1 | 1 |
<h2><%=l(:label_auth_source)%> (<%= h(@auth_source.auth_method_name) %>)</h2> |
| 2 | 2 |
|
| 3 |
<%= form_tag({:action => 'update', :id => @auth_source}, :method => :put, :class => "tabular") do %>
|
|
| 4 |
<%= render :partial => auth_source_partial_name(@auth_source) %> |
|
| 3 |
<%= labelled_form_for @auth_source, :as => :auth_source, :url => auth_source_path(@auth_source), :html => {:id => 'auth_source_form'} do |f| %>
|
|
| 4 |
<%= render :partial => auth_source_partial_name(@auth_source), :locals => { :f => f } %>
|
|
| 5 | 5 |
<%= submit_tag l(:button_save) %> |
| 6 | 6 |
<% end %> |
| app/views/auth_sources/index.html.erb | ||
|---|---|---|
| 20 | 20 |
<td align="center"><%= h source.host %></td> |
| 21 | 21 |
<td align="center"><%= h source.users.count %></td> |
| 22 | 22 |
<td class="buttons"> |
| 23 |
<%= link_to l(:button_test), {:action => 'test_connection', :id => source}, :class => 'icon icon-test' %>
|
|
| 23 |
<%= link_to l(:button_test), try_connection_auth_source_path(source), :class => 'icon icon-test' %>
|
|
| 24 | 24 |
<%= delete_link auth_source_path(source) %> |
| 25 | 25 |
</td> |
| 26 | 26 |
</tr> |
| app/views/auth_sources/new.html.erb | ||
|---|---|---|
| 1 | 1 |
<h2><%=l(:label_auth_source_new)%> (<%= h(@auth_source.auth_method_name) %>)</h2> |
| 2 | 2 |
|
| 3 |
<%= form_tag({:action => 'create'}, :class => "tabular") do %>
|
|
| 3 |
<%= labelled_form_for @auth_source, :as => :auth_source, :url => auth_sources_path, :html => {:id => 'auth_source_form'} do |f| %>
|
|
| 4 | 4 |
<%= hidden_field_tag 'type', @auth_source.type %> |
| 5 |
<%= render :partial => auth_source_partial_name(@auth_source) %> |
|
| 5 |
<%= render :partial => auth_source_partial_name(@auth_source), :locals => { :f => f } %>
|
|
| 6 | 6 |
<%= submit_tag l(:button_create) %> |
| 7 | 7 |
<% end %> |
| app/views/boards/index.html.erb | ||
|---|---|---|
| 11 | 11 |
<% Board.board_tree(@boards) do |board, level| %> |
| 12 | 12 |
<tr class="<%= cycle 'odd', 'even' %>"> |
| 13 | 13 |
<td style="padding-left: <%= level * 18 %>px;"> |
| 14 |
<%= link_to h(board.name), {:action => 'show', :id => board}, :class => "board" %><br />
|
|
| 14 |
<%= link_to h(board.name), project_board_path(board.project, board), :class => "board" %><br />
|
|
| 15 | 15 |
<%=h board.description %> |
| 16 | 16 |
</td> |
| 17 | 17 |
<td class="topic-count"><%= board.topics_count %></td> |
| app/views/boards/show.html.erb | ||
|---|---|---|
| 1 | 1 |
<%= board_breadcrumb(@board) %> |
| 2 | 2 |
|
| 3 | 3 |
<div class="contextual"> |
| 4 |
<%= link_to_if_authorized l(:label_message_new),
|
|
| 5 |
{:controller => 'messages', :action => 'new', :board_id => @board},
|
|
| 6 |
:class => 'icon icon-add',
|
|
| 7 |
:onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' %>
|
|
| 8 |
<%= watcher_tag(@board, User.current) %>
|
|
| 4 |
<%= link_to l(:label_message_new), |
|
| 5 |
new_board_message_path(@board),
|
|
| 6 |
:class => 'icon icon-add', |
|
| 7 |
:onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' if User.current.allowed_to?(:add_messages, @board.project) %>
|
|
| 8 |
<%= watcher_link(@board, User.current) %>
|
|
| 9 | 9 |
</div> |
| 10 | 10 |
|
| 11 | 11 |
<div id="add-message" style="display:none;"> |
| 12 |
<% if authorize_for('messages', 'new') %>
|
|
| 13 |
<h2><%= link_to h(@board.name), :controller => 'boards', :action => 'show', :project_id => @project, :id => @board %> » <%= l(:label_message_new) %></h2>
|
|
| 14 |
<%= form_for @message, :url => {:controller => 'messages', :action => 'new', :board_id => @board}, :html => {:multipart => true, :id => 'message-form'} do |f| %>
|
|
| 12 |
<% if User.current.allowed_to?(:add_messages, @board.project) %>
|
|
| 13 |
<h2><%= link_to h(@board.name), project_board_path(@project, @board) %> » <%= l(:label_message_new) %></h2>
|
|
| 14 |
<%= form_for @message, :url => new_board_message_path(@board), :html => {:multipart => true, :id => 'message-form'} do |f| %>
|
|
| 15 | 15 |
<%= render :partial => 'messages/form', :locals => {:f => f} %>
|
| 16 | 16 |
<p><%= submit_tag l(:button_create) %> |
| 17 |
<%= preview_link({:controller => 'messages', :action => 'preview', :board_id => @board}, 'message-form') %> |
|
|
| 17 |
<%= preview_link(preview_board_message_path(@board), 'message-form') %> |
|
|
| 18 | 18 |
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-message").hide(); return false;' %></p>
|
| 19 | 19 |
<% end %> |
| 20 | 20 |
<div id="preview" class="wiki"></div> |
| ... | ... | |
| 36 | 36 |
<tbody> |
| 37 | 37 |
<% @topics.each do |topic| %> |
| 38 | 38 |
<tr class="message <%= cycle 'odd', 'even' %> <%= topic.sticky? ? 'sticky' : '' %> <%= topic.locked? ? 'locked' : '' %>"> |
| 39 |
<td class="subject"><%= link_to h(topic.subject), { :controller => 'messages', :action => 'show', :board_id => @board, :id => topic } %></td>
|
|
| 39 |
<td class="subject"><%= link_to h(topic.subject), board_message_path(@board, topic) %></td>
|
|
| 40 | 40 |
<td class="author"><%= link_to_user(topic.author) %></td> |
| 41 | 41 |
<td class="created_on"><%= format_time(topic.created_on) %></td> |
| 42 | 42 |
<td class="reply-count"><%= topic.replies_count %></td> |
| app/views/common/_diff.html.erb | ||
|---|---|---|
| 10 | 10 |
<thead> |
| 11 | 11 |
<tr> |
| 12 | 12 |
<th colspan="4" class="filename"> |
| 13 |
<%= h(Redmine::CodesetUtil.to_utf8_by_setting(table_file.file_name)) %>
|
|
| 13 |
<%= table_file.file_name %>
|
|
| 14 | 14 |
</th> |
| 15 | 15 |
</tr> |
| 16 | 16 |
</thead> |
| ... | ... | |
| 24 | 24 |
<tr> |
| 25 | 25 |
<th class="line-num"><%= line.nb_line_left %></th> |
| 26 | 26 |
<td class="line-code <%= line.type_diff_left %>"> |
| 27 |
<pre><%= Redmine::CodesetUtil.to_utf8_by_setting(line.html_line_left).html_safe %></pre>
|
|
| 27 |
<pre><%= line.html_line_left.html_safe %></pre>
|
|
| 28 | 28 |
</td> |
| 29 | 29 |
<th class="line-num"><%= line.nb_line_right %></th> |
| 30 | 30 |
<td class="line-code <%= line.type_diff_right %>"> |
| 31 |
<pre><%= Redmine::CodesetUtil.to_utf8_by_setting(line.html_line_right).html_safe %></pre>
|
|
| 31 |
<pre><%= line.html_line_right.html_safe %></pre>
|
|
| 32 | 32 |
</td> |
| 33 | 33 |
</tr> |
| 34 | 34 |
<% end -%> |
| ... | ... | |
| 40 | 40 |
<thead> |
| 41 | 41 |
<tr> |
| 42 | 42 |
<th colspan="3" class="filename"> |
| 43 |
<%= h(Redmine::CodesetUtil.to_utf8_by_setting(table_file.file_name)) %>
|
|
| 43 |
<%= table_file.file_name %>
|
|
| 44 | 44 |
</th> |
| 45 | 45 |
</tr> |
| 46 | 46 |
</thead> |
| ... | ... | |
| 55 | 55 |
<th class="line-num"><%= line.nb_line_left %></th> |
| 56 | 56 |
<th class="line-num"><%= line.nb_line_right %></th> |
| 57 | 57 |
<td class="line-code <%= line.type_diff %>"> |
| 58 |
<pre><%= Redmine::CodesetUtil.to_utf8_by_setting(line.html_line).html_safe %></pre>
|
|
| 58 |
<pre><%= line.html_line.html_safe %></pre>
|
|
| 59 | 59 |
</td> |
| 60 | 60 |
</tr> |
| 61 | 61 |
<% end -%> |
| app/views/common/_preview.html.erb | ||
|---|---|---|
| 1 | 1 |
<fieldset class="preview"><legend><%= l(:label_preview) %></legend> |
| 2 |
<%= textilizable @text, :attachments => @attachements, :object => @previewed %>
|
|
| 2 |
<%= textilizable @text, :attachments => @attachments, :object => @previewed %> |
|
| 3 | 3 |
</fieldset> |
| app/views/context_menus/issues.html.erb | ||
|---|---|---|
| 1 | 1 |
<ul> |
| 2 | 2 |
<%= call_hook(:view_issues_context_menu_start, {:issues => @issues, :can => @can, :back => @back }) %>
|
| 3 | 3 |
|
| 4 |
<% if !@issue.nil? -%>
|
|
| 5 |
<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'edit', :id => @issue},
|
|
| 6 |
:class => 'icon-edit', :disabled => !@can[:edit] %></li> |
|
| 7 |
<% else %> |
|
| 8 |
<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'bulk_edit', :ids => @issue_ids},
|
|
| 9 |
:class => 'icon-edit', :disabled => !@can[:edit] %></li> |
|
| 10 |
<% end %> |
|
| 4 |
<% if @issue -%>
|
|
| 5 |
<li><%= context_menu_link l(:button_edit), edit_issue_path(@issue),
|
|
| 6 |
:class => 'icon-edit', :disabled => !@can[:edit] %></li>
|
|
| 7 |
<% else %>
|
|
| 8 |
<li><%= context_menu_link l(:button_edit), bulk_edit_issues_path(:ids => @issue_ids),
|
|
| 9 |
:class => 'icon-edit', :disabled => !@can[:edit] %></li>
|
|
| 10 |
<% end %>
|
|
| 11 | 11 |
|
| 12 | 12 |
<% if @allowed_statuses.present? %> |
| 13 | 13 |
<li class="folder"> |
| 14 | 14 |
<a href="#" class="submenu"><%= l(:field_status) %></a> |
| 15 | 15 |
<ul> |
| 16 | 16 |
<% @allowed_statuses.each do |s| -%> |
| 17 |
<li><%= context_menu_link h(s.name), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {:status_id => s}, :back_url => @back}, :method => :post,
|
|
| 17 |
<li><%= context_menu_link h(s.name), bulk_update_issues_path(:ids => @issue_ids, :issue => {:status_id => s}, :back_url => @back), :method => :post,
|
|
| 18 | 18 |
:selected => (@issue && s == @issue.status), :disabled => !@can[:update] %></li> |
| 19 | 19 |
<% end -%> |
| 20 | 20 |
</ul> |
| 21 | 21 |
</li> |
| 22 | 22 |
<% end %> |
| 23 | 23 |
|
| 24 |
<% unless @trackers.nil? %>
|
|
| 24 |
<% if @trackers.present? %>
|
|
| 25 | 25 |
<li class="folder"> |
| 26 | 26 |
<a href="#" class="submenu"><%= l(:field_tracker) %></a> |
| 27 | 27 |
<ul> |
| 28 | 28 |
<% @trackers.each do |t| -%> |
| 29 |
<li><%= context_menu_link h(t.name), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'tracker_id' => t}, :back_url => @back}, :method => :post,
|
|
| 29 |
<li><%= context_menu_link h(t.name), bulk_update_issues_path(:ids => @issue_ids, :issue => {'tracker_id' => t}, :back_url => @back), :method => :post,
|
|
| 30 | 30 |
:selected => (@issue && t == @issue.tracker), :disabled => !@can[:edit] %></li> |
| 31 | 31 |
<% end -%> |
| 32 | 32 |
</ul> |
| 33 | 33 |
</li> |
| 34 | 34 |
<% end %> |
| 35 | 35 |
|
| 36 |
<% if @safe_attributes.include?('priority_id') -%>
|
|
| 36 |
<% if @safe_attributes.include?('priority_id') && @priorities.present? -%>
|
|
| 37 | 37 |
<li class="folder"> |
| 38 | 38 |
<a href="#" class="submenu"><%= l(:field_priority) %></a> |
| 39 | 39 |
<ul> |
| 40 | 40 |
<% @priorities.each do |p| -%> |
| 41 |
<li><%= context_menu_link h(p.name), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'priority_id' => p}, :back_url => @back}, :method => :post,
|
|
| 41 |
<li><%= context_menu_link h(p.name), bulk_update_issues_path(:ids => @issue_ids, :issue => {'priority_id' => p}, :back_url => @back), :method => :post,
|
|
| 42 | 42 |
:selected => (@issue && p == @issue.priority), :disabled => (!@can[:edit] || @issues.detect {|i| !i.leaf?}) %></li>
|
| 43 | 43 |
<% end -%> |
| 44 | 44 |
</ul> |
| 45 | 45 |
</li> |
| 46 | 46 |
<% end %> |
| 47 | 47 |
|
| 48 |
<% if @safe_attributes.include?('fixed_version_id') && @versions.any? -%>
|
|
| 48 |
<% if @safe_attributes.include?('fixed_version_id') && @versions.present? -%>
|
|
| 49 | 49 |
<li class="folder"> |
| 50 | 50 |
<a href="#" class="submenu"><%= l(:field_fixed_version) %></a> |
| 51 | 51 |
<ul> |
| 52 | 52 |
<% @versions.sort.each do |v| -%> |
| 53 |
<li><%= context_menu_link format_version_name(v), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'fixed_version_id' => v}, :back_url => @back}, :method => :post,
|
|
| 53 |
<li><%= context_menu_link format_version_name(v), bulk_update_issues_path(:ids => @issue_ids, :issue => {'fixed_version_id' => v}, :back_url => @back), :method => :post,
|
|
| 54 | 54 |
:selected => (@issue && v == @issue.fixed_version), :disabled => !@can[:update] %></li> |
| 55 | 55 |
<% end -%> |
| 56 |
<li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'fixed_version_id' => 'none'}, :back_url => @back}, :method => :post,
|
|
| 56 |
<li><%= context_menu_link l(:label_none), bulk_update_issues_path(:ids => @issue_ids, :issue => {'fixed_version_id' => 'none'}, :back_url => @back), :method => :post,
|
|
| 57 | 57 |
:selected => (@issue && @issue.fixed_version.nil?), :disabled => !@can[:update] %></li> |
| 58 | 58 |
</ul> |
| 59 | 59 |
</li> |
| ... | ... | |
| 64 | 64 |
<a href="#" class="submenu"><%= l(:field_assigned_to) %></a> |
| 65 | 65 |
<ul> |
| 66 | 66 |
<% if @assignables.include?(User.current) %> |
| 67 |
<li><%= context_menu_link "<< #{l(:label_me)} >>", {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'assigned_to_id' => User.current}, :back_url => @back}, :method => :post,
|
|
| 67 |
<li><%= context_menu_link "<< #{l(:label_me)} >>", bulk_update_issues_path(:ids => @issue_ids, :issue => {'assigned_to_id' => User.current}, :back_url => @back), :method => :post,
|
|
| 68 | 68 |
:disabled => !@can[:update] %></li> |
| 69 | 69 |
<% end %> |
| 70 | 70 |
<% @assignables.each do |u| -%> |
| 71 |
<li><%= context_menu_link h(u.name), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'assigned_to_id' => u}, :back_url => @back}, :method => :post,
|
|
| 71 |
<li><%= context_menu_link h(u.name), bulk_update_issues_path(:ids => @issue_ids, :issue => {'assigned_to_id' => u}, :back_url => @back), :method => :post,
|
|
| 72 | 72 |
:selected => (@issue && u == @issue.assigned_to), :disabled => !@can[:update] %></li> |
| 73 | 73 |
<% end -%> |
| 74 |
<li><%= context_menu_link l(:label_nobody), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'assigned_to_id' => 'none'}, :back_url => @back}, :method => :post,
|
|
| 74 |
<li><%= context_menu_link l(:label_nobody), bulk_update_issues_path(:ids => @issue_ids, :issue => {'assigned_to_id' => 'none'}, :back_url => @back), :method => :post,
|
|
| 75 | 75 |
:selected => (@issue && @issue.assigned_to.nil?), :disabled => !@can[:update] %></li> |
| 76 | 76 |
</ul> |
| 77 | 77 |
</li> |
| ... | ... | |
| 82 | 82 |
<a href="#" class="submenu"><%= l(:field_category) %></a> |
| 83 | 83 |
<ul> |
| 84 | 84 |
<% @project.issue_categories.each do |u| -%> |
| 85 |
<li><%= context_menu_link h(u.name), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'category_id' => u}, :back_url => @back}, :method => :post,
|
|
| 85 |
<li><%= context_menu_link h(u.name), bulk_update_issues_path(:ids => @issue_ids, :issue => {'category_id' => u}, :back_url => @back), :method => :post,
|
|
| 86 | 86 |
:selected => (@issue && u == @issue.category), :disabled => !@can[:update] %></li> |
| 87 | 87 |
<% end -%> |
| 88 |
<li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'category_id' => 'none'}, :back_url => @back}, :method => :post,
|
|
| 88 |
<li><%= context_menu_link l(:label_none), bulk_update_issues_path(:ids => @issue_ids, :issue => {'category_id' => 'none'}, :back_url => @back), :method => :post,
|
|
| 89 | 89 |
:selected => (@issue && @issue.category.nil?), :disabled => !@can[:update] %></li> |
| 90 | 90 |
</ul> |
| 91 | 91 |
</li> |
| ... | ... | |
| 96 | 96 |
<a href="#" class="submenu"><%= l(:field_done_ratio) %></a> |
| 97 | 97 |
<ul> |
| 98 | 98 |
<% (0..10).map{|x|x*10}.each do |p| -%>
|
| 99 |
<li><%= context_menu_link "#{p}%", {:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'done_ratio' => p}, :back_url => @back}, :method => :post,
|
|
| 99 |
<li><%= context_menu_link "#{p}%", bulk_update_issues_path(:ids => @issue_ids, :issue => {'done_ratio' => p}, :back_url => @back), :method => :post,
|
|
| 100 | 100 |
:selected => (@issue && p == @issue.done_ratio), :disabled => (!@can[:edit] || @issues.detect {|i| !i.leaf?}) %></li>
|
| 101 | 101 |
<% end -%> |
| 102 | 102 |
</ul> |
| ... | ... | |
| 104 | 104 |
<% end %> |
| 105 | 105 |
|
| 106 | 106 |
<% @options_by_custom_field.each do |field, options| %> |
| 107 |
<li class="folder"> |
|
| 107 |
<li class="folder cf_<%= field.id %>">
|
|
| 108 | 108 |
<a href="#" class="submenu"><%= h(field.name) %></a> |
| 109 | 109 |
<ul> |
| 110 | 110 |
<% options.each do |text, value| %> |
| ... | ... | |
| 117 | 117 |
</li> |
| 118 | 118 |
<% end %> |
| 119 | 119 |
|
| 120 |
<% if !@issue.nil? %> |
|
| 121 |
<% if @can[:log_time] -%> |
|
| 122 |
<li><%= context_menu_link l(:button_log_time), {:controller => 'timelog', :action => 'new', :issue_id => @issue},
|
|
| 123 |
:class => 'icon-time-add' %></li> |
|
| 124 |
<% end %> |
|
| 125 |
<% if User.current.logged? %> |
|
| 126 |
<li><%= watcher_link(@issue, User.current) %></li> |
|
| 127 |
<% end %> |
|
| 120 |
<% if User.current.logged? %> |
|
| 121 |
<li><%= watcher_link(@issues, User.current) %></li> |
|
| 128 | 122 |
<% end %> |
| 129 | 123 |
|
| 130 | 124 |
<% if @issue.present? %> |
| 131 |
<li><%= context_menu_link l(:button_copy), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue},
|
|
| 125 |
<% if @can[:log_time] -%> |
|
| 126 |
<li><%= context_menu_link l(:button_log_time), new_issue_time_entry_path(@issue), |
|
| 127 |
:class => 'icon-time-add' %></li> |
|
| 128 |
<% end %> |
|
| 129 |
<li><%= context_menu_link l(:button_copy), project_copy_issue_path(@project, @issue), |
|
| 132 | 130 |
:class => 'icon-copy', :disabled => !@can[:copy] %></li> |
| 133 | 131 |
<% else %> |
| 134 |
<li><%= context_menu_link l(:button_copy), {:controller => 'issues', :action => 'bulk_edit', :ids => @issue_ids, :copy => '1'},
|
|
| 132 |
<li><%= context_menu_link l(:button_copy), bulk_edit_issues_path(:ids => @issue_ids, :copy => '1'),
|
|
| 135 | 133 |
:class => 'icon-copy', :disabled => !@can[:move] %></li> |
| 136 | 134 |
<% end %> |
| 137 | 135 |
<li><%= context_menu_link l(:button_delete), issues_path(:ids => @issue_ids, :back_url => @back), |
| app/views/custom_fields/_form.html.erb | ||
|---|---|---|
| 5 | 5 |
<p><%= f.select :field_format, custom_field_formats_for_select(@custom_field), {}, :disabled => !@custom_field.new_record? %></p>
|
| 6 | 6 |
|
| 7 | 7 |
<% if @custom_field.format_in? 'list', 'user', 'version' %> |
| 8 |
<p><%= f.check_box :multiple, :disabled => @custom_field.multiple && !@custom_field.new_record? %></p> |
|
| 8 |
<p> |
|
| 9 |
<%= f.check_box :multiple %> |
|
| 10 |
<% if !@custom_field.new_record? && @custom_field.multiple %> |
|
| 11 |
<em class="info"><%= l(:text_turning_multiple_off) %></em> |
|
| 12 |
<% end %> |
|
| 13 |
</p> |
|
| 9 | 14 |
<% end %> |
| 10 | 15 |
|
| 11 | 16 |
<% unless @custom_field.format_in? 'list', 'bool', 'date', 'user', 'version' %> |
| ... | ... | |
| 22 | 27 |
</p> |
| 23 | 28 |
<% end %> |
| 24 | 29 |
|
| 25 |
<% unless @custom_field.format_in? 'user', 'version' %> |
|
| 26 |
<p><%= @custom_field.field_format == 'bool' ? f.check_box(:default_value) : f.text_field(:default_value) %></p> |
|
| 30 |
<% case @custom_field.field_format %> |
|
| 31 |
<% when 'bool' %> |
|
| 32 |
<p><%= f.check_box(:default_value) %></p> |
|
| 33 |
<% when 'text' %> |
|
| 34 |
<p><%= f.text_area(:default_value, :rows => 8) %></p> |
|
| 35 |
<% when 'date' %> |
|
| 36 |
<p><%= f.text_field(:default_value, :size => 10) %></p> |
|
| 37 |
<%= calendar_for('custom_field_default_value') %>
|
|
| 38 |
<% when 'user', 'version' %> |
|
| 39 |
<% else %> |
|
| 40 |
<p><%= f.text_field(:default_value) %></p> |
|
| 27 | 41 |
<% end %> |
| 28 | 42 |
|
| 29 | 43 |
<%= call_hook(:view_custom_fields_form_upper_box, :custom_field => @custom_field, :form => f) %> |
| ... | ... | |
| 73 | 87 |
|
| 74 | 88 |
<% when "TimeEntryCustomField" %> |
| 75 | 89 |
<p><%= f.check_box :is_required %></p> |
| 90 |
<p><%= f.check_box :is_filter %></p> |
|
| 76 | 91 |
|
| 77 | 92 |
<% else %> |
| 78 | 93 |
<p><%= f.check_box :is_required %></p> |
| ... | ... | |
| 80 | 95 |
<% end %> |
| 81 | 96 |
<%= call_hook(:"view_custom_fields_form_#{@custom_field.type.to_s.underscore}", :custom_field => @custom_field, :form => f) %>
|
| 82 | 97 |
</div> |
| 98 |
|
|
| 99 |
<% include_calendar_headers_tags %> |
|
| app/views/documents/index.html.erb | ||
|---|---|---|
| 1 | 1 |
<div class="contextual"> |
| 2 | 2 |
<%= link_to l(:label_document_new), new_project_document_path(@project), :class => 'icon icon-add', |
| 3 |
:onclick => 'showAndScrollTo("add-document", "document_title"); return false;' if User.current.allowed_to?(:manage_documents, @project) %>
|
|
| 3 |
:onclick => 'showAndScrollTo("add-document", "document_title"); return false;' if User.current.allowed_to?(:add_documents, @project) %>
|
|
| 4 | 4 |
</div> |
| 5 | 5 |
|
| 6 | 6 |
<div id="add-document" style="display:none;"> |
| app/views/documents/show.html.erb | ||
|---|---|---|
| 1 | 1 |
<div class="contextual"> |
| 2 |
<% if User.current.allowed_to?(:manage_documents, @project) %>
|
|
| 2 |
<% if User.current.allowed_to?(:edit_documents, @project) %>
|
|
| 3 | 3 |
<%= link_to l(:button_edit), edit_document_path(@document), :class => 'icon icon-edit', :accesskey => accesskey(:edit) %> |
| 4 |
<% end %> |
|
| 5 |
<% if User.current.allowed_to?(:delete_documents, @project) %> |
|
| 4 | 6 |
<%= delete_link document_path(@document) %> |
| 5 | 7 |
<% end %> |
| 6 | 8 |
</div> |
| ... | ... | |
| 10 | 12 |
<p><em><%=h @document.category.name %><br /> |
| 11 | 13 |
<%= format_date @document.created_on %></em></p> |
| 12 | 14 |
<div class="wiki"> |
| 13 |
<%= textilizable @document.description, :attachments => @document.attachments %>
|
|
| 15 |
<%= textilizable @document, :description, :attachments => @document.attachments %>
|
|
| 14 | 16 |
</div> |
| 15 | 17 |
|
| 16 | 18 |
<h3><%= l(:label_attachment_plural) %></h3> |
| app/views/gantts/show.html.erb | ||
|---|---|---|
| 12 | 12 |
<%= render :partial => 'queries/filters', :locals => {:query => @query} %>
|
| 13 | 13 |
</div> |
| 14 | 14 |
</fieldset> |
| 15 |
<fieldset class="collapsible collapsed"> |
|
| 16 |
<legend onclick="toggleFieldset(this);"><%= l(:label_options) %></legend> |
|
| 17 |
<div style="display: none;"> |
|
| 18 |
<table> |
|
| 19 |
<tr> |
|
| 20 |
<td> |
|
| 21 |
<fieldset> |
|
| 22 |
<legend><%= l(:label_related_issues) %></legend> |
|
| 23 |
<label> |
|
| 24 |
<%= check_box_tag "draw_rels", params["draw_rels"], params[:set_filter].blank? || params[:draw_rels] %> |
|
| 25 |
<% rels = [IssueRelation::TYPE_BLOCKS, IssueRelation::TYPE_PRECEDES] %> |
|
| 26 |
<% rels.each do |rel| %> |
|
| 27 |
<% color = Redmine::Helpers::Gantt::DRAW_TYPES[rel][:color] %> |
|
| 28 |
<%= content_tag(:span, ' '.html_safe, |
|
| 29 |
:style => "background-color: #{color}") %>
|
|
| 30 |
<%= l(IssueRelation::TYPES[rel][:name]) %> |
|
| 31 |
<% end %> |
|
| 32 |
</label> |
|
| 33 |
</fieldset> |
|
| 34 |
</td> |
|
| 35 |
<td> |
|
| 36 |
<fieldset> |
|
| 37 |
<legend><%= l(:label_gantt_progress_line) %></legend> |
|
| 38 |
<label> |
|
| 39 |
<%= check_box_tag "draw_progress_line", params[:draw_progress_line], params[:draw_progress_line] %> |
|
| 40 |
<%= l(:label_display) %> |
|
| 41 |
</label> |
|
| 42 |
</fieldset> |
|
| 43 |
</td> |
|
| 44 |
</tr> |
|
| 45 |
</table> |
|
| 46 |
</div> |
|
| 47 |
</fieldset> |
|
| 15 | 48 |
|
| 16 | 49 |
<p class="contextual"> |
| 17 | 50 |
<%= gantt_zoom_link(@gantt, :in) %> |
| ... | ... | |
| 39 | 72 |
@gantt.zoom.times { zoom = zoom * 2 }
|
| 40 | 73 |
|
| 41 | 74 |
subject_width = 330 |
| 42 |
header_heigth = 18
|
|
| 75 |
header_height = 18
|
|
| 43 | 76 |
|
| 44 |
headers_height = header_heigth
|
|
| 77 |
headers_height = header_height
|
|
| 45 | 78 |
show_weeks = false |
| 46 | 79 |
show_days = false |
| 47 | 80 |
|
| 48 | 81 |
if @gantt.zoom > 1 |
| 49 | 82 |
show_weeks = true |
| 50 |
headers_height = 2 * header_heigth
|
|
| 83 |
headers_height = 2 * header_height
|
|
| 51 | 84 |
if @gantt.zoom > 2 |
| 52 | 85 |
show_days = true |
| 53 |
headers_height = 3 * header_heigth
|
|
| 86 |
headers_height = 3 * header_height
|
|
| 54 | 87 |
end |
| 55 | 88 |
end |
| 56 | 89 |
|
| ... | ... | |
| 102 | 135 |
</td> |
| 103 | 136 |
|
| 104 | 137 |
<td> |
| 105 |
<div style="position:relative;height:<%= t_height + 24 %>px;overflow:auto;"> |
|
| 138 |
<div style="position:relative;height:<%= t_height + 24 %>px;overflow:auto;" id="gantt_area">
|
|
| 106 | 139 |
<% |
| 107 | 140 |
style = "" |
| 108 | 141 |
style += "width: #{g_width - 1}px;"
|
| ... | ... | |
| 115 | 148 |
<% |
| 116 | 149 |
month_f = @gantt.date_from |
| 117 | 150 |
left = 0 |
| 118 |
height = (show_weeks ? header_heigth : header_heigth + g_height)
|
|
| 151 |
height = (show_weeks ? header_height : header_height + g_height)
|
|
| 119 | 152 |
%> |
| 120 | 153 |
<% @gantt.months.times do %> |
| 121 | 154 |
<% |
| ... | ... | |
| 140 | 173 |
<% if show_weeks %> |
| 141 | 174 |
<% |
| 142 | 175 |
left = 0 |
| 143 |
height = (show_days ? header_heigth - 1 : header_heigth - 1 + g_height)
|
|
| 176 |
height = (show_days ? header_height - 1 : header_height - 1 + g_height)
|
|
| 144 | 177 |
%> |
| 145 | 178 |
<% if @gantt.date_from.cwday == 1 %> |
| 146 | 179 |
<% |
| ... | ... | |
| 189 | 222 |
<% if show_days %> |
| 190 | 223 |
<% |
| 191 | 224 |
left = 0 |
| 192 |
height = g_height + header_heigth - 1
|
|
| 225 |
height = g_height + header_height - 1
|
|
| 193 | 226 |
wday = @gantt.date_from.cwday |
| 194 | 227 |
%> |
| 195 | 228 |
<% (@gantt.date_to - @gantt.date_from + 1).to_i.times do %> |
| ... | ... | |
| 229 | 262 |
style += "width:10px;" |
| 230 | 263 |
style += "border-left: 1px dashed red;" |
| 231 | 264 |
%> |
| 232 |
<%= content_tag(:div, ' '.html_safe, :style => style) %> |
|
| 265 |
<%= content_tag(:div, ' '.html_safe, :style => style, :id => 'today_line') %>
|
|
| 233 | 266 |
<% end %> |
| 234 |
|
|
| 267 |
<% |
|
| 268 |
style = "" |
|
| 269 |
style += "position: absolute;" |
|
| 270 |
style += "height: #{g_height}px;"
|
|
| 271 |
style += "top: #{headers_height + 1}px;"
|
|
| 272 |
style += "left: 0px;" |
|
| 273 |
style += "width: #{g_width - 1}px;"
|
|
| 274 |
%> |
|
| 275 |
<%= content_tag(:div, '', :style => style, :id => "gantt_draw_area") %> |
|
| 235 | 276 |
</div> |
| 236 | 277 |
</td> |
| 237 | 278 |
</tr> |
| ... | ... | |
| 261 | 302 |
<% end %> |
| 262 | 303 |
|
| 263 | 304 |
<% html_title(l(:label_gantt)) -%> |
| 305 |
|
|
| 306 |
<% content_for :header_tags do %> |
|
| 307 |
<%= javascript_include_tag 'raphael' %> |
|
| 308 |
<%= javascript_include_tag 'gantt' %> |
|
| 309 |
<% end %> |
|
| 310 |
|
|
| 311 |
<%= javascript_tag do %> |
|
| 312 |
var issue_relation_type = <%= raw Redmine::Helpers::Gantt::DRAW_TYPES.to_json %>; |
|
| 313 |
$(document).ready(drawGanttHandler); |
|
| 314 |
$(window).resize(drawGanttHandler); |
|
| 315 |
$(function() {
|
|
| 316 |
$("#draw_rels").change(drawGanttHandler);
|
|
| 317 |
$("#draw_progress_line").change(drawGanttHandler);
|
|
| 318 |
}); |
|
| 319 |
<% end %> |
|
| app/views/groups/_form.html.erb | ||
|---|---|---|
| 1 | 1 |
<%= error_messages_for @group %> |
| 2 | 2 |
|
| 3 | 3 |
<div class="box tabular"> |
| 4 |
<p><%= f.text_field :name %></p> |
|
| 4 |
<p><%= f.text_field :name, :required => true, :size => 60 %></p>
|
|
| 5 | 5 |
<% @group.custom_field_values.each do |value| %> |
| 6 | 6 |
<p><%= custom_field_tag_with_label :group, value %></p> |
| 7 | 7 |
<% end %> |
| app/views/groups/_memberships.html.erb | ||
|---|---|---|
| 1 | 1 |
<% roles = Role.find_all_givable %> |
| 2 |
<% projects = Project.active.find(:all, :order => 'lft') %>
|
|
| 2 |
<% projects = Project.active.all %>
|
|
| 3 | 3 |
|
| 4 | 4 |
<div class="splitcontentleft"> |
| 5 | 5 |
<% if @group.memberships.any? %> |
| ... | ... | |
| 13 | 13 |
<% @group.memberships.each do |membership| %> |
| 14 | 14 |
<% next if membership.new_record? %> |
| 15 | 15 |
<tr id="member-<%= membership.id %>" class="<%= cycle 'odd', 'even' %> class"> |
| 16 |
<td class="project"><%=h membership.project %></td>
|
|
| 16 |
<td class="project"><%= link_to_project membership.project %></td>
|
|
| 17 | 17 |
<td class="roles"> |
| 18 | 18 |
<span id="member-<%= membership.id %>-roles"><%=h membership.roles.sort.collect(&:to_s).join(', ') %></span>
|
| 19 | 19 |
<%= form_for(:membership, :remote => true, |
| app/views/groups/_users.html.erb | ||
|---|---|---|
| 22 | 22 |
</div> |
| 23 | 23 |
|
| 24 | 24 |
<div class="splitcontentright"> |
| 25 |
<% users = User.active.not_in_group(@group).all(:limit => 100) %> |
|
| 26 |
<% if users.any? %> |
|
| 27 | 25 |
<%= form_for(@group, :remote => true, :url => group_users_path(@group), |
| 28 | 26 |
:html => {:method => :post}) do |f| %>
|
| 29 | 27 |
<fieldset><legend><%=l(:label_user_new)%></legend> |
| 30 | 28 |
|
| 31 | 29 |
<p><%= label_tag "user_search", l(:label_user_search) %><%= text_field_tag 'user_search', nil %></p> |
| 32 |
<%= javascript_tag "observeSearchfield('user_search', 'users', '#{ escape_javascript autocomplete_for_user_group_path(@group) }')" %>
|
|
| 30 |
<%= javascript_tag "observeSearchfield('user_search', null, '#{ escape_javascript autocomplete_for_user_group_path(@group) }')" %>
|
|
| 33 | 31 |
|
| 34 | 32 |
<div id="users"> |
| 35 |
<%= principals_check_box_tags 'user_ids[]', users %>
|
|
| 33 |
<%= render_principals_for_new_group_users(@group) %>
|
|
| 36 | 34 |
</div> |
| 37 | 35 |
|
| 38 | 36 |
<p><%= submit_tag l(:button_add) %></p> |
| 39 | 37 |
</fieldset> |
| 40 | 38 |
<% end %> |
| 41 |
<% end %> |
|
| 42 |
|
|
| 43 | 39 |
</div> |
| app/views/groups/autocomplete_for_user.html.erb | ||
|---|---|---|
| 1 |
<%= principals_check_box_tags 'user_ids[]', @users %> |
|
| app/views/groups/autocomplete_for_user.js.erb | ||
|---|---|---|
| 1 |
$('#users').html('<%= escape_javascript(render_principals_for_new_group_users(@group)) %>');
|
|
| app/views/groups/index.html.erb | ||
|---|---|---|
| 19 | 19 |
<td class="buttons"><%= delete_link group %></td> |
| 20 | 20 |
</tr> |
| 21 | 21 |
<% end %> |
| 22 |
</tbody> |
|
| 22 | 23 |
</table> |
| 23 | 24 |
<% else %> |
| 24 | 25 |
<p class="nodata"><%= l(:label_no_data) %></p> |
| app/views/issues/_action_menu.html.erb | ||
|---|---|---|
| 1 | 1 |
<div class="contextual"> |
| 2 |
<%= link_to_if_authorized(l(:button_update), {:controller => 'issues', :action => 'edit', :id => @issue }, :onclick => 'showAndScrollTo("update", "issue_notes"); return false;', :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %>
|
|
| 2 |
<%= link_to l(:button_update), edit_issue_path(@issue), :onclick => 'showAndScrollTo("update", "issue_notes"); return false;', :class => 'icon icon-edit', :accesskey => accesskey(:edit) if @issue.editable? %>
|
|
| 3 | 3 |
<%= link_to l(:button_log_time), new_issue_time_entry_path(@issue), :class => 'icon icon-time-add' if User.current.allowed_to?(:log_time, @project) %> |
| 4 |
<%= watcher_tag(@issue, User.current) %>
|
|
| 5 |
<%= link_to_if_authorized l(:button_copy), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue}, :class => 'icon icon-copy' %>
|
|
| 4 |
<%= watcher_link(@issue, User.current) %>
|
|
| 5 |
<%= link_to l(:button_copy), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy' if User.current.allowed_to?(:add_issues, @project) %>
|
|
| 6 | 6 |
<%= link_to l(:button_delete), issue_path(@issue), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'icon icon-del' if User.current.allowed_to?(:delete_issues, @project) %>
|
| 7 | 7 |
</div> |
| app/views/issues/_list.html.erb | ||
|---|---|---|
| 9 | 9 |
:onclick => 'toggleIssuesSelection(this); return false;', |
| 10 | 10 |
:title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
|
| 11 | 11 |
</th> |
| 12 |
<%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
|
|
| 13 | 12 |
<% query.inline_columns.each do |column| %> |
| 14 | 13 |
<%= column_header(column) %> |
| 15 | 14 |
<% end %> |
| ... | ... | |
| 32 | 31 |
<% end %> |
| 33 | 32 |
<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
|
| 34 | 33 |
<td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
|
| 35 |
<td class="id"><%= link_to issue.id, issue_path(issue) %></td> |
|
| 36 | 34 |
<%= raw query.inline_columns.map {|column| "<td class=\"#{column.css_classes}\">#{column_content(column, issue)}</td>"}.join %>
|
| 37 | 35 |
</tr> |
| 38 | 36 |
<% @query.block_columns.each do |column| |
| 39 | 37 |
if (text = column_content(column, issue)) && text.present? -%> |
| 40 | 38 |
<tr class="<%= current_cycle %>"> |
| 41 |
<td colspan="<%= @query.inline_columns.size + 2 %>" class="<%= column.css_classes %>"><%= text %></td>
|
|
| 39 |
<td colspan="<%= @query.inline_columns.size + 1 %>" class="<%= column.css_classes %>"><%= text %></td>
|
|
| 42 | 40 |
</tr> |
| 43 | 41 |
<% end -%> |
| 44 | 42 |
<% end -%> |
| app/views/issues/_list_simple.html.erb | ||
|---|---|---|
| 12 | 12 |
<tr id="issue-<%= h(issue.id) %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %>">
|
| 13 | 13 |
<td class="id"> |
| 14 | 14 |
<%= check_box_tag("ids[]", issue.id, false, :style => 'display:none;', :id => nil) %>
|
| 15 |
<%= link_to(h(issue.id), :controller => 'issues', :action => 'show', :id => issue) %>
|
|
| 15 |
<%= link_to issue.id, issue_path(issue) %>
|
|
| 16 | 16 |
</td> |
| 17 | 17 |
<td class="project"><%= link_to_project(issue.project) %></td> |
| 18 | 18 |
<td class="tracker"><%=h issue.tracker %></td> |
| 19 | 19 |
<td class="subject"> |
| 20 |
<%= link_to h(truncate(issue.subject, :length => 60)), :controller => 'issues', :action => 'show', :id => issue %> (<%=h issue.status %>)
|
|
| 20 |
<%= link_to truncate(issue.subject, :length => 60), issue_path(issue) %> (<%=h issue.status %>)
|
|
| 21 | 21 |
</td> |
| 22 | 22 |
</tr> |
| 23 | 23 |
<% end %> |
| app/views/issues/_relations.html.erb | ||
|---|---|---|
| 10 | 10 |
<form> |
| 11 | 11 |
<table class="list issues"> |
| 12 | 12 |
<% @relations.each do |relation| %> |
| 13 |
<tr class="issue hascontextmenu" id="relation-<%= relation.id %>"> |
|
| 14 |
<td class="checkbox"><%= check_box_tag("ids[]", relation.other_issue(@issue).id, false, :id => nil) %></td>
|
|
| 15 |
<td class="subject"><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
|
|
| 16 |
<%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %> |
|
| 17 |
<%= link_to_issue(relation.other_issue(@issue), :truncate => 60) %> |
|
| 18 |
</td> |
|
| 19 |
<td class="status"><%=h relation.other_issue(@issue).status.name %></td> |
|
| 20 |
<td class="start_date"><%= format_date(relation.other_issue(@issue).start_date) %></td> |
|
| 21 |
<td class="due_date"><%= format_date(relation.other_issue(@issue).due_date) %></td> |
|
| 22 |
<td class="buttons"><%= link_to image_tag('link_break.png'),
|
|
| 23 |
{:controller => 'issue_relations', :action => 'destroy', :id => relation},
|
|
| 24 |
:remote => true, |
|
| 25 |
:method => :delete, |
|
| 26 |
:data => {:confirm => l(:text_are_you_sure)},
|
|
| 27 |
:title => l(:label_relation_delete) if User.current.allowed_to?(:manage_issue_relations, @project) %></td> |
|
| 28 |
</tr> |
|
| 13 |
<% other_issue = relation.other_issue(@issue) -%> |
|
| 14 |
<tr class="issue hascontextmenu" id="relation-<%= relation.id %>"> |
|
| 15 |
<td class="checkbox"><%= check_box_tag("ids[]", other_issue.id, false, :id => nil) %></td>
|
|
| 16 |
<td class="subject"> |
|
| 17 |
<%= l(relation.label_for(@issue)) %> |
|
| 18 |
<%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
|
|
| 19 |
<%= h(other_issue.project) + ' - ' if Setting.cross_project_issue_relations? %> |
|
| 20 |
<%= link_to_issue(other_issue, :truncate => 60) %> |
|
| 21 |
</td> |
|
| 22 |
<td class="status"><%=h other_issue.status.name %></td> |
|
| 23 |
<td class="start_date"><%= format_date(other_issue.start_date) %></td> |
|
| 24 |
<td class="due_date"><%= format_date(other_issue.due_date) %></td> |
|
| 25 |
<td class="buttons"><%= link_to image_tag('link_break.png'),
|
|
| 26 |
relation_path(relation), |
|
| 27 |
:remote => true, |
|
| 28 |
:method => :delete, |
|
| 29 |
:data => {:confirm => l(:text_are_you_sure)},
|
|
| 30 |
:title => l(:label_relation_delete) if User.current.allowed_to?(:manage_issue_relations, @project) %></td> |
|
| 31 |
</tr> |
|
| 29 | 32 |
<% end %> |
| 30 | 33 |
</table> |
| 31 | 34 |
</form> |
| ... | ... | |
| 33 | 36 |
|
| 34 | 37 |
<%= form_for @relation, {
|
| 35 | 38 |
:as => :relation, :remote => true, |
| 36 |
:url => {:controller => 'issue_relations', :action => 'create', :issue_id => @issue},
|
|
| 39 |
:url => issue_relations_path(@issue),
|
|
| 37 | 40 |
:method => :post, |
| 38 | 41 |
:html => {:id => 'new-relation-form', :style => (@relation ? '' : 'display: none;')}
|
| 39 | 42 |
} do |f| %> |
| app/views/issues/_sidebar.html.erb | ||
|---|---|---|
| 1 | 1 |
<h3><%= l(:label_issue_plural) %></h3> |
| 2 |
<%= link_to l(:label_issue_view_all), { :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1 } %><br />
|
|
| 2 |
<%= link_to l(:label_issue_view_all), _project_issues_path(@project, :set_filter => 1) %><br />
|
|
| 3 | 3 |
<% if @project %> |
| 4 |
<%= link_to l(:field_summary), :controller => 'reports', :action => 'issue_report', :id => @project %><br />
|
|
| 4 |
<%= link_to l(:field_summary), project_issues_report_path(@project) %><br />
|
|
| 5 | 5 |
<% end %> |
| 6 | 6 |
<%= call_hook(:view_issues_sidebar_issues_bottom) %> |
| 7 | 7 |
|
| 8 | 8 |
<% if User.current.allowed_to?(:view_calendar, @project, :global => true) %> |
| 9 |
<%= link_to(l(:label_calendar), :controller => 'calendars', :action => 'show', :project_id => @project) %><br />
|
|
| 9 |
<%= link_to l(:label_calendar), _project_calendar_path(@project) %><br />
|
|
| 10 | 10 |
<% end %> |
| 11 | 11 |
<% if User.current.allowed_to?(:view_gantt, @project, :global => true) %> |
| 12 |
<%= link_to(l(:label_gantt), :controller => 'gantts', :action => 'show', :project_id => @project) %><br />
|
|
| 12 |
<%= link_to l(:label_gantt), _project_gantt_path(@project) %><br />
|
|
| 13 | 13 |
<% end %> |
| 14 | 14 |
<%= call_hook(:view_issues_sidebar_planning_bottom) %> |
| 15 | 15 |
|
| app/views/issues/_update_form.js.erb | ||
|---|---|---|
| 1 |
$('#all_attributes').html('<%= escape_javascript(render :partial => 'form') %>');
|
|
| 2 |
|
|
| 3 |
<% if User.current.allowed_to?(:log_time, @issue.project) %> |
|
| 4 |
$('#log_time').show();
|
|
| 5 |
<% else %> |
|
| 6 |
$('#log_time').hide();
|
|
| 7 |
<% end %> |
|
| app/views/issues/bulk_edit.html.erb | ||
|---|---|---|
| 1 | 1 |
<h2><%= @copy ? l(:button_copy) : l(:label_bulk_edit_selected_issues) %></h2> |
| 2 | 2 |
|
| 3 |
<ul><%= @issues.collect {|i|
|
|
| 4 |
content_tag('li',
|
|
| 5 |
link_to(h("#{i.tracker} ##{i.id}"),
|
|
| 6 |
{ :action => 'show', :id => i }
|
|
| 7 |
) + h(": #{i.subject}"))
|
|
| 8 |
}.join("\n").html_safe %></ul>
|
|
| 3 |
<ul id="bulk-selection"> |
|
| 4 |
<% @issues.each do |issue| %> |
|
| 5 |
<%= content_tag 'li', link_to_issue(issue) %> |
|
| 6 |
<% end %> |
|
| 7 |
</ul> |
|
| 9 | 8 |
|
| 10 |
<%= form_tag({:action => 'bulk_update'}, :id => 'bulk_edit_form') do %>
|
|
| 9 |
<%= form_tag(bulk_update_issues_path, :id => 'bulk_edit_form') do %>
|
|
| 11 | 10 |
<%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join("\n").html_safe %>
|
| 12 | 11 |
<div class="box tabular"> |
| 13 | 12 |
<fieldset class="attributes"> |
| app/views/issues/index.api.rsb | ||
|---|---|---|
| 23 | 23 |
|
| 24 | 24 |
api.created_on issue.created_on |
| 25 | 25 |
api.updated_on issue.updated_on |
| 26 |
api.closed_on issue.closed_on |
|
| 26 | 27 |
|
| 27 | 28 |
api.array :relations do |
| 28 | 29 |
issue.relations.each do |relation| |
| app/views/issues/index.html.erb | ||
|---|---|---|
| 24 | 24 |
<table> |
| 25 | 25 |
<tr> |
| 26 | 26 |
<td><%= l(:field_column_names) %></td> |
| 27 |
<td><%= render :partial => 'queries/columns', :locals => {:query => @query} %></td>
|
|
| 27 |
<td><%= render_query_columns_selection(@query) %></td>
|
|
| 28 | 28 |
</tr> |
| 29 | 29 |
<tr> |
| 30 | 30 |
<td><label for='group_by'><%= l(:field_group_by) %></label></td> |
| app/views/issues/show.api.rsb | ||
|---|---|---|
| 22 | 22 |
|
| 23 | 23 |
api.created_on @issue.created_on |
| 24 | 24 |
api.updated_on @issue.updated_on |
| 25 |
api.closed_on @issue.closed_on |
|
| 25 | 26 |
|
| 26 | 27 |
render_api_issue_children(@issue, api) if include_in_api_response?('children')
|
| 27 | 28 |
|
| ... | ... | |
| 64 | 65 |
end |
| 65 | 66 |
end |
| 66 | 67 |
end if include_in_api_response?('journals')
|
| 68 |
|
|
| 69 |
api.array :watchers do |
|
| 70 |
@issue.watcher_users.each do |user| |
|
| 71 |
api.user :id => user.id, :name => user.name |
|
| 72 |
end |
|
| 73 |
end if include_in_api_response?('watchers') && User.current.allowed_to?(:view_issue_watchers, @issue.project)
|
|
| 67 | 74 |
end |
| app/views/issues/show.html.erb | ||
|---|---|---|
| 61 | 61 |
end |
| 62 | 62 |
end |
| 63 | 63 |
if User.current.allowed_to?(:view_time_entries, @project) |
| 64 |
rows.right l(:label_spent_time), (@issue.total_spent_hours > 0 ? (link_to l_hours(@issue.total_spent_hours), {:controller => 'timelog', :action => 'index', :project_id => @project, :issue_id => @issue}) : "-"), :class => 'spent-time'
|
|
| 64 |
rows.right l(:label_spent_time), (@issue.total_spent_hours > 0 ? link_to(l_hours(@issue.total_spent_hours), project_issue_time_entries_path(@project, @issue)) : "-"), :class => 'spent-time'
|
|
| 65 | 65 |
end |
| 66 | 66 |
end %> |
| 67 | 67 |
<%= render_custom_fields_rows(@issue) %> |
| ... | ... | |
| 73 | 73 |
<% if @issue.description? %> |
| 74 | 74 |
<div class="description"> |
| 75 | 75 |
<div class="contextual"> |
| 76 |
<%= link_to l(:button_quote), |
|
| 77 |
{:controller => 'journals', :action => 'new', :id => @issue},
|
|
| 78 |
:remote => true, |
|
| 79 |
:method => 'post', |
|
| 80 |
:class => 'icon icon-comment' if authorize_for('issues', 'edit') %>
|
|
| 76 |
<%= link_to l(:button_quote), quoted_issue_path(@issue), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %>
|
|
| 81 | 77 |
</div> |
| 82 | 78 |
|
| 83 | 79 |
<p><strong><%=l(:field_description)%></strong></p> |
| ... | ... | |
| 130 | 126 |
<%= render :partial => 'action_menu' %> |
| 131 | 127 |
|
| 132 | 128 |
<div style="clear: both;"></div> |
| 133 |
<% if authorize_for('issues', 'edit') %>
|
|
| 129 |
<% if @issue.editable? %>
|
|
| 134 | 130 |
<div id="update" style="display:none;"> |
| 135 | 131 |
<h3><%= l(:button_update) %></h3> |
| 136 | 132 |
<%= render :partial => 'edit' %> |
| app/views/issues/update_form.js.erb | ||
|---|---|---|
| 1 |
$('#all_attributes').html('<%= escape_javascript(render :partial => 'form') %>');
|
|
| 2 |
|
|
| 3 |
<% if User.current.allowed_to?(:log_time, @issue.project) %> |
|
| 4 |
$('#log_time').show();
|
|
| 5 |
<% else %> |
|
| 6 |
$('#log_time').hide();
|
|
| 7 |
<% end %> |
|
| app/views/layouts/base.html.erb | ||
|---|---|---|
| 7 | 7 |
<meta name="keywords" content="audio,music,software,research,UK,sound,repository,code,redmine" /> |
| 8 | 8 |
<%= csrf_meta_tag %> |
| 9 | 9 |
<%= favicon %> |
| 10 |
<%= stylesheet_link_tag 'jquery/jquery-ui-1.8.21', 'application', :media => 'all' %>
|
|
| 10 |
<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', 'application', :media => 'all' %>
|
|
| 11 | 11 |
<%= stylesheet_platform_font_tag %> |
| 12 | 12 |
<%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> |
| 13 | 13 |
<%= javascript_heads %> |
| app/views/members/autocomplete.html.erb | ||
|---|---|---|
| 1 |
<%= principals_check_box_tags 'membership[user_ids][]', @principals %> |
|
| app/views/members/autocomplete.js.erb | ||
|---|---|---|
| 1 |
$('#principals_for_new_member').html('<%= escape_javascript(render_principals_for_new_members(@project)) %>');
|
|
| app/views/messages/show.html.erb | ||
|---|---|---|
| 1 | 1 |
<%= board_breadcrumb(@message) %> |
| 2 | 2 |
|
| 3 | 3 |
<div class="contextual"> |
| 4 |
<%= watcher_tag(@topic, User.current) %>
|
|
| 4 |
<%= watcher_link(@topic, User.current) %>
|
|
| 5 | 5 |
<%= link_to( |
| 6 | 6 |
l(:button_quote), |
| 7 | 7 |
{:action => 'quote', :id => @topic},
|
| app/views/my/blocks/_calendar.html.erb | ||
|---|---|---|
| 1 | 1 |
<h3><%= l(:label_calendar) %></h3> |
| 2 | 2 |
|
| 3 | 3 |
<% calendar = Redmine::Helpers::Calendar.new(Date.today, current_language, :week) |
| 4 |
calendar.events = Issue.visible.find :all, |
|
| 5 |
:conditions => ["#{Issue.table_name}.project_id in (#{@user.projects.collect{|m| m.id}.join(',')}) AND ((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?))", calendar.startdt, calendar.enddt, calendar.startdt, calendar.enddt],
|
|
| 6 |
:include => [:project, :tracker, :priority, :assigned_to] unless @user.projects.empty? %> |
|
| 4 |
calendar.events = calendar_items(calendar.startdt, calendar.enddt) %> |
|
| 7 | 5 |
|
| 8 | 6 |
<%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %>
|
| app/views/my/blocks/_documents.html.erb | ||
|---|---|---|
| 1 | 1 |
<h3><%=l(:label_document_plural)%></h3> |
| 2 | 2 |
|
| 3 |
<% project_ids = @user.projects.select {|p| @user.allowed_to?(:view_documents, p)}.collect(&:id) %>
|
|
| 4 |
<%= render(:partial => 'documents/document', |
|
| 5 |
:collection => Document.find(:all, |
|
| 6 |
:limit => 10, |
|
| 7 |
:order => "#{Document.table_name}.created_on DESC",
|
|
| 8 |
:conditions => "#{Document.table_name}.project_id in (#{project_ids.join(',')})",
|
|
| 9 |
:include => [:project])) unless project_ids.empty? %> |
|
| 3 |
<%= render :partial => 'documents/document', :collection => documents_items %> |
|
| app/views/my/blocks/_issuesassignedtome.html.erb | ||
|---|---|---|
| 1 | 1 |
<h3><%=l(:label_assigned_to_me_issues)%> (<%= Issue.visible.open.count(:conditions => {:assigned_to_id => ([User.current.id] + User.current.group_ids)})%>)</h3>
|
| 2 | 2 |
|
| 3 |
<% assigned_issues = Issue.visible.open.find(:all, |
|
| 4 |
:conditions => {:assigned_to_id => ([User.current.id] + User.current.group_ids)},
|
|
| 5 |
:limit => 10, |
|
| 6 |
:include => [ :status, :project, :tracker, :priority ], |
|
| 7 |
:order => "#{IssuePriority.table_name}.position DESC, #{Issue.table_name}.updated_on DESC") %>
|
|
| 3 |
<% assigned_issues = issuesassignedtome_items %> |
|
| 8 | 4 |
<%= render :partial => 'issues/list_simple', :locals => { :issues => assigned_issues } %>
|
| 9 | 5 |
<% if assigned_issues.length > 0 %> |
| 10 | 6 |
<p class="small"><%= link_to l(:label_issue_view_all), :controller => 'issues', |
| app/views/my/blocks/_issuesreportedbyme.html.erb | ||
|---|---|---|
| 1 | 1 |
<h3><%=l(:label_reported_issues)%> (<%= Issue.visible.count(:conditions => { :author_id => User.current.id }) %>)</h3>
|
| 2 | 2 |
|
| 3 |
<% reported_issues = Issue.visible.find(:all, |
|
| 4 |
:conditions => { :author_id => User.current.id },
|
|
| 5 |
:limit => 10, |
|
| 6 |
:include => [ :status, :project, :tracker ], |
|
| 7 |
:order => "#{Issue.table_name}.updated_on DESC") %>
|
|
| 3 |
<% reported_issues = issuesreportedbyme_items %> |
|
| 8 | 4 |
<%= render :partial => 'issues/list_simple', :locals => { :issues => reported_issues } %>
|
| 9 | 5 |
<% if reported_issues.length > 0 %> |
| 10 | 6 |
<p class="small"><%= link_to l(:label_issue_view_all), :controller => 'issues', |
| app/views/my/blocks/_issueswatched.html.erb | ||
|---|---|---|
| 1 | 1 |
<h3><%=l(:label_watched_issues)%> (<%= Issue.visible.watched_by(user.id).count %>)</h3> |
| 2 |
<% watched_issues = Issue.visible.on_active_project.watched_by(user.id).recently_updated.limit(10) %>
|
|
| 2 |
<% watched_issues = issueswatched_items %>
|
|
| 3 | 3 |
|
| 4 | 4 |
<%= render :partial => 'issues/list_simple', :locals => { :issues => watched_issues } %>
|
| 5 | 5 |
<% if watched_issues.length > 0 %> |
| app/views/my/blocks/_news.html.erb | ||
|---|---|---|
| 1 | 1 |
<h3><%=l(:label_news_latest)%></h3> |
| 2 | 2 |
|
| 3 |
<%= render(:partial => 'news/news', |
|
| 4 |
:collection => News.find(:all, |
|
| 5 |
:limit => 10, |
|
| 6 |
:order => "#{News.table_name}.created_on DESC",
|
|
| 7 |
:conditions => "#{News.table_name}.project_id in (#{@user.projects.collect{|m| m.id}.join(',')})",
|
|
| 8 |
:include => [:project, :author])) unless @user.projects.empty? %> |
|
| 3 |
<%= render :partial => 'news/news', :collection => news_items %> |
|
| app/views/my/blocks/_timelog.html.erb | ||
|---|---|---|
| 1 | 1 |
<h3><%=l(:label_spent_time)%> (<%= l(:label_last_n_days, 7) %>)</h3> |
| 2 | 2 |
<% |
| 3 |
entries = TimeEntry.find(:all, |
|
| 4 |
:conditions => ["#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", @user.id, Date.today - 6, Date.today],
|
|
| 5 |
:include => [:activity, :project, {:issue => [:tracker, :status]}],
|
|
| 6 |
:order => "#{TimeEntry.table_name}.spent_on DESC, #{Project.table_name}.name ASC, #{Tracker.table_name}.position ASC, #{Issue.table_name}.id ASC")
|
|
| 3 |
entries = timelog_items |
|
| 7 | 4 |
entries_by_day = entries.group_by(&:spent_on) |
| 8 | 5 |
%> |
| 9 | 6 |
|
| 10 | 7 |
<div class="total-hours"> |
| 11 |
<p><%= l(:label_total) %>: <%= html_hours("%.2f" % entries.sum(&:hours).to_f) %></p>
|
|
| 8 |
<p><%= l(:label_total_time) %>: <%= html_hours("%.2f" % entries.sum(&:hours).to_f) %></p>
|
|
| 12 | 9 |
</div> |
| 13 | 10 |
|
| 14 | 11 |
<% if entries.any? %> |
| app/views/news/show.html.erb | ||
|---|---|---|
| 1 | 1 |
<div class="contextual"> |
| 2 |
<%= watcher_tag(@news, User.current) %>
|
|
| 2 |
<%= watcher_link(@news, User.current) %>
|
|
| 3 | 3 |
<%= link_to(l(:button_edit), |
| 4 | 4 |
edit_news_path(@news), |
| 5 | 5 |
:class => 'icon icon-edit', |
| app/views/previews/issue.html.erb | ||
|---|---|---|
| 1 | 1 |
<% if @notes %> |
| 2 | 2 |
<fieldset class="preview"><legend><%= l(:field_notes) %></legend> |
| 3 |
<%= textilizable @notes, :attachments => @attachements, :object => @issue %>
|
|
| 3 |
<%= textilizable @notes, :attachments => @attachments, :object => @issue %> |
|
| 4 | 4 |
</fieldset> |
| 5 | 5 |
<% end %> |
| 6 | 6 |
|
| 7 | 7 |
<% if @description %> |
| 8 | 8 |
<fieldset class="preview"><legend><%= l(:field_description) %></legend> |
| 9 |
<%= textilizable @description, :attachments => @attachements, :object => @issue %>
|
|
| 9 |
<%= textilizable @description, :attachments => @attachments, :object => @issue %> |
|
| 10 | 10 |
</fieldset> |
| 11 | 11 |
<% end %> |
| app/views/projects/_form.html.erb | ||
|---|---|---|
| 7 | 7 |
<em class="info"> <%= l(:text_project_name_info).html_safe %></em> |
| 8 | 8 |
</p> |
| 9 | 9 |
|
| 10 |
<% unless @project.allowed_parents.compact.empty? %> |
|
| 11 |
<p><%= label(:project, :parent_id, l(:field_parent)) %><%= parent_project_select_tag(@project) %></p> |
|
| 12 |
<% end %> |
|
| 13 |
|
|
| 14 |
<p><%= f.text_area :description, :rows => 5, :class => 'wiki-edit' %></p> |
|
| 15 |
<p><%= f.text_field :identifier, :required => true, :size => 60, :disabled => @project.identifier_frozen? %> |
|
| 10 |
<p><%= f.text_area :description, :rows => 8, :class => 'wiki-edit' %></p> |
|
| 11 |
<p><%= f.text_field :identifier, :required => true, :size => 60, :disabled => @project.identifier_frozen?, :maxlength => Project::IDENTIFIER_MAX_LENGTH %> |
|
| 16 | 12 |
<% unless @project.identifier_frozen? %> |
| 17 | 13 |
<br /> |
| 18 | 14 |
<em class="info"><%= l(:text_length_between, :min => 1, :max => Project::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_project_identifier_info).html_safe %></em> |
| ... | ... | |
| 36 | 32 |
<br> |
| 37 | 33 |
<em class="info"><%= l(:text_project_visibility_info) %></em> |
| 38 | 34 |
</p> |
| 35 |
|
|
| 36 |
<% unless @project.allowed_parents.compact.empty? %> |
|
| 37 |
<p><%= label(:project, :parent_id, l(:field_parent)) %><%= parent_project_select_tag(@project) %></p> |
|
| 38 |
<% end %> |
|
| 39 |
|
|
| 40 |
<% if @project.safe_attribute? 'inherit_members' %> |
|
| 41 |
<p><%= f.check_box :inherit_members %></p> |
|
| 42 |
<% end %> |
|
| 43 |
|
|
| 39 | 44 |
<%= wikitoolbar_for 'project_description' %> |
| 40 | 45 |
|
| 41 | 46 |
<% @project.custom_field_values.each do |value| %> |
| ... | ... | |
| 88 | 93 |
<% end %> |
| 89 | 94 |
<% end %> |
| 90 | 95 |
<!--[eoform:project]--> |
| 96 |
|
|
| 97 |
<% unless @project.identifier_frozen? %> |
|
| 98 |
<% content_for :header_tags do %> |
|
| 99 |
<%= javascript_include_tag 'project_identifier' %> |
|
| 100 |
<% end %> |
|
| 101 |
<% end %> |
|
| 102 |
|
|
| 103 |
<% if !User.current.admin? && @project.inherit_members? && @project.parent && User.current.member_of?(@project.parent) %> |
|
| 104 |
<%= javascript_tag do %> |
|
| 105 |
$(document).ready(function() {
|
|
| 106 |
$("#project_inherit_members").change(function(){
|
|
| 107 |
if (!$(this).is(':checked')) {
|
|
| 108 |
if (!confirm("<%= escape_javascript(l(:text_own_membership_delete_confirmation)) %>")) {
|
|
| 109 |
$("#project_inherit_members").attr("checked", true);
|
|
| 110 |
} |
|
| 111 |
} |
|
| 112 |
}); |
|
| 113 |
}); |
|
| 114 |
<% end %> |
|
| 115 |
<% end %> |
|
| app/views/projects/settings/_members.html.erb | ||
|---|---|---|
| 1 | 1 |
<%= error_messages_for 'member' %> |
| 2 | 2 |
<% roles = Role.find_all_givable |
| 3 |
members = @project.member_principals.find(:all, :include => [:roles, :principal]).sort %>
|
|
| 3 |
members = @project.member_principals.includes(:roles, :principal).all.sort %>
|
|
| 4 | 4 |
|
| 5 | 5 |
<div class="splitcontentleft"> |
| 6 | 6 |
<% if members.any? %> |
| ... | ... | |
| 51 | 51 |
<% end %> |
| 52 | 52 |
</div> |
| 53 | 53 |
|
| 54 |
<% principals = Principal.active.not_member_of(@project).all(:limit => 100, :order => 'type, login, lastname ASC') %> |
|
| 55 |
|
|
| 56 | 54 |
<div class="splitcontentright"> |
| 57 |
<% if roles.any? && principals.any? %>
|
|
| 55 |
<% if roles.any? %> |
|
| 58 | 56 |
<%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %>
|
| 59 | 57 |
<fieldset><legend><%=l(:label_member_new)%></legend> |
| 60 | 58 |
|
| 61 | 59 |
<p><%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %></p> |
| 62 |
<%= javascript_tag "observeSearchfield('principal_search', 'principals', '#{ escape_javascript autocomplete_project_memberships_path(@project) }')" %>
|
|
| 60 |
<%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %>
|
|
| 63 | 61 |
|
| 64 |
<div id="principals"> |
|
| 65 |
<%= principals_check_box_tags 'membership[user_ids][]', principals %>
|
|
| 62 |
<div id="principals_for_new_member">
|
|
| 63 |
<%= render_principals_for_new_members(@project) %>
|
|
| 66 | 64 |
</div> |
| 67 | 65 |
|
| 68 | 66 |
<p><%= l(:label_role_plural) %>: |
| app/views/projects/settings/_modules.html.erb | ||
|---|---|---|
| 3 | 3 |
:html => {:id => 'modules-form',
|
| 4 | 4 |
:method => :post} do |f| %> |
| 5 | 5 |
|
| 6 |
<div class="box"> |
|
| 7 |
<fieldset> |
|
| 6 |
<fieldset class="box"> |
|
| 8 | 7 |
<legend><%= l(:text_select_project_modules) %></legend> |
| 9 | 8 |
|
| 10 | 9 |
<% Redmine::AccessControl.available_project_modules.each do |m| %> |
| ... | ... | |
| 12 | 11 |
<%= l_or_humanize(m, :prefix => "project_module_") %></label></p> |
| 13 | 12 |
<% end %> |
| 14 | 13 |
</fieldset> |
| 15 |
</div>
|
|
| 14 |
<p><%= check_all_links 'modules-form' %></p>
|
|
| 16 | 15 |
|
| 17 |
<p><%= check_all_links 'modules-form' %></p> |
|
| 18 | 16 |
<p><%= submit_tag l(:button_save) %></p> |
| 19 | 17 |
|
| 20 | 18 |
<% end %> |
| app/views/projects/show.html.erb | ||
|---|---|---|
| 1 | 1 |
<div class="contextual"> |
| 2 | 2 |
<% if User.current.allowed_to?(:add_subprojects, @project) %> |
| 3 |
<%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'new', :parent_id => @project}, :class => 'icon icon-add' %>
|
|
| 3 |
<%= link_to l(:label_subproject_new), new_project_path(:parent_id => @project), :class => 'icon icon-add' %>
|
|
| 4 | 4 |
<% end %> |
| 5 | 5 |
<% if User.current.allowed_to?(:close_project, @project) %> |
| 6 | 6 |
<% if @project.active? %> |
| ... | ... | |
| 57 | 57 |
<% end %> |
| 58 | 58 |
<% if @subprojects.any? %> |
| 59 | 59 |
<li><%=l(:label_subproject_plural)%>: |
| 60 |
<%= @subprojects.collect{|p| link_to(h(p), :action => 'show', :id => p)}.join(", ").html_safe %></li>
|
|
| 60 |
<%= @subprojects.collect{|p| link_to p, project_path(p)}.join(", ").html_safe %></li>
|
|
| 61 | 61 |
<% end %> |
| 62 | 62 |
<% @project.visible_custom_field_values.each do |custom_value| %> |
| 63 | 63 |
<% if !custom_value.value.blank? %> |
| ... | ... | |
| 72 | 72 |
<h3><%=l(:label_issue_tracking)%></h3> |
| 73 | 73 |
<ul> |
| 74 | 74 |
<% for tracker in @trackers %> |
| 75 |
<li><%= link_to h(tracker.name), :controller => 'issues', :action => 'index', :project_id => @project, |
|
| 76 |
:set_filter => 1, |
|
| 77 |
"tracker_id" => tracker.id %>: |
|
| 75 |
<li><%= link_to h(tracker.name), project_issues_path(@project, :set_filter => 1, :tracker_id => tracker.id) %>: |
|
| 78 | 76 |
<%= l(:label_x_open_issues_abbr_on_total, :count => @open_issues_by_tracker[tracker].to_i, |
| 79 | 77 |
:total => @total_issues_by_tracker[tracker].to_i) %> |
| 80 | 78 |
</li> |
| 81 | 79 |
<% end %> |
| 82 | 80 |
</ul> |
| 83 | 81 |
<p> |
| 84 |
<%= link_to l(:label_issue_view_all), :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1 %>
|
|
| 82 |
<%= link_to l(:label_issue_view_all), project_issues_path(@project, :set_filter => 1) %>
|
|
| 85 | 83 |
<% if User.current.allowed_to?(:view_calendar, @project, :global => true) %> |
| 86 |
| <%= link_to(l(:label_calendar), :controller => 'calendars', :action => 'show', :project_id => @project) %>
|
|
| 84 |
| <%= link_to l(:label_calendar), project_calendar_path(@project) %>
|
|
| 87 | 85 |
<% end %> |
| 88 | 86 |
<% if User.current.allowed_to?(:view_gantt, @project, :global => true) %> |
| 89 |
| <%= link_to(l(:label_gantt), :controller => 'gantts', :action => 'show', :project_id => @project) %>
|
|
| 87 |
| <%= link_to l(:label_gantt), project_gantt_path(@project) %>
|
|
| 90 | 88 |
<% end %> |
| 91 | 89 |
</p> |
| 92 | 90 |
</div> |
| ... | ... | |
| 103 | 101 |
<div class="news box"> |
| 104 | 102 |
<h3><%=l(:label_news_latest)%></h3> |
| 105 | 103 |
<%= render :partial => 'news/news', :collection => @news %> |
| 106 |
<p><%= link_to l(:label_news_view_all), :controller => 'news', :action => 'index', :project_id => @project %></p>
|
|
| 104 |
<p><%= link_to l(:label_news_view_all), project_news_index_path(@project) %></p>
|
|
| 107 | 105 |
</div> |
| 108 | 106 |
<% end %> |
| 109 | 107 |
|
| app/views/queries/_columns.html.erb | ||
|---|---|---|
| 4 | 4 |
<%= label_tag "available_columns", l(:description_available_columns) %> |
| 5 | 5 |
<br /> |
| 6 | 6 |
<%= select_tag 'available_columns', |
| 7 |
options_for_select((query.available_inline_columns - query.columns).collect {|column| [column.caption, column.name]}),
|
|
| 7 |
options_for_select(query_available_inline_columns_options(query)),
|
|
| 8 | 8 |
:multiple => true, :size => 10, :style => "width:150px", |
| 9 | 9 |
:ondblclick => "moveOptions(this.form.available_columns, this.form.selected_columns);" %> |
| 10 | 10 |
</td> |
| ... | ... | |
| 17 | 17 |
<td> |
| 18 | 18 |
<%= label_tag "selected_columns", l(:description_selected_columns) %> |
| 19 | 19 |
<br /> |
| 20 |
<%= select_tag((defined?(tag_name) ? tag_name : 'c[]'),
|
|
| 21 |
options_for_select(query.inline_columns.collect {|column| [column.caption, column.name]}),
|
|
| 20 |
<%= select_tag tag_name,
|
|
| 21 |
options_for_select(query_selected_inline_columns_options(query)),
|
|
| 22 | 22 |
:id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px", |
| 23 |
:ondblclick => "moveOptions(this.form.selected_columns, this.form.available_columns);") %>
|
|
| 23 |
:ondblclick => "moveOptions(this.form.selected_columns, this.form.available_columns);" %> |
|
| 24 | 24 |
</td> |
| 25 | 25 |
<td class="buttons"> |
| 26 | 26 |
<input type="button" value="↑" onclick="moveOptionUp(this.form.selected_columns);" /><br /> |
| app/views/queries/_form.html.erb | ||
|---|---|---|
| 49 | 49 |
|
| 50 | 50 |
<%= content_tag 'fieldset', :id => 'columns', :style => (query.has_default_columns? ? 'display:none;' : nil) do %> |
| 51 | 51 |
<legend><%= l(:field_column_names) %></legend> |
| 52 |
<%= render :partial => 'queries/columns', :locals => {:query => query}%>
|
|
| 52 |
<%= render_query_columns_selection(query) %>
|
|
| 53 | 53 |
<% end %> |
| 54 | 54 |
|
| 55 | 55 |
</div> |
| app/views/reports/_details.html.erb | ||
|---|---|---|
| 15 | 15 |
<tbody> |
| 16 | 16 |
<% for row in rows %> |
| 17 | 17 |
<tr class="<%= cycle("odd", "even") %>">
|
| 18 |
<td><%= link_to h(row.name), :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), |
|
| 19 |
:set_filter => 1, |
|
| 20 |
:subproject_id => '!*', |
|
| 21 |
"#{field_name}" => row.id %></td>
|
|
| 18 |
<td><%= link_to h(row.name), aggregate_path(@project, field_name, row) %></td> |
|
| 22 | 19 |
<% for status in @statuses %> |
| 23 |
<td align="center"><%= aggregate_link data, { field_name => row.id, "status_id" => status.id },
|
|
| 24 |
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), |
|
| 25 |
:set_filter => 1, |
|
| 26 |
:subproject_id => '!*', |
|
| 27 |
"status_id" => status.id, |
|
| 28 |
"#{field_name}" => row.id %></td>
|
|
| 20 |
<td align="center"><%= aggregate_link data, { field_name => row.id, "status_id" => status.id }, aggregate_path(@project, field_name, row, :status_id => status.id) %></td>
|
|
| 29 | 21 |
<% end %> |
| 30 |
<td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 0 },
|
|
| 31 |
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), |
|
| 32 |
:set_filter => 1, |
|
| 33 |
:subproject_id => '!*', |
|
| 34 |
"#{field_name}" => row.id,
|
|
| 35 |
"status_id" => "o" %></td> |
|
| 36 |
<td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 1 },
|
|
| 37 |
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), |
|
| 38 |
:set_filter => 1, |
|
| 39 |
:subproject_id => '!*', |
|
| 40 |
"#{field_name}" => row.id,
|
|
| 41 |
"status_id" => "c" %></td> |
|
| 42 |
<td align="center"><%= aggregate_link data, { field_name => row.id },
|
|
| 43 |
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), |
|
| 44 |
:set_filter => 1, |
|
| 45 |
:subproject_id => '!*', |
|
| 46 |
"#{field_name}" => row.id,
|
|
Also available in: Unified diff