mirror of
https://github.com/redmine/redmine.git
synced 2025-11-06 21:35:46 +01:00
Use button as additional option for contextmenu (#26655).
Patch by Felix Gliesche. git-svn-id: http://svn.redmine.org/redmine/trunk@17298 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -1223,6 +1223,10 @@ module ApplicationHelper
|
|||||||
content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(html_options))
|
content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(html_options))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def link_to_context_menu
|
||||||
|
link_to l(:button_actions), '#', title: l(:button_actions), class: 'icon-only icon-actions js-contextmenu'
|
||||||
|
end
|
||||||
|
|
||||||
# Helper to render JSON in views
|
# Helper to render JSON in views
|
||||||
def raw_json(arg)
|
def raw_json(arg)
|
||||||
arg.to_json.to_s.gsub('/', '\/').html_safe
|
arg.to_json.to_s.gsub('/', '\/').html_safe
|
||||||
|
|||||||
@@ -99,7 +99,8 @@ module IssuesHelper
|
|||||||
content_tag('td', link_to_issue(child, :project => (issue.project_id != child.project_id)), :class => 'subject', :style => 'width: 50%') +
|
content_tag('td', link_to_issue(child, :project => (issue.project_id != child.project_id)), :class => 'subject', :style => 'width: 50%') +
|
||||||
content_tag('td', h(child.status), :class => 'status') +
|
content_tag('td', h(child.status), :class => 'status') +
|
||||||
content_tag('td', link_to_user(child.assigned_to), :class => 'assigned_to') +
|
content_tag('td', link_to_user(child.assigned_to), :class => 'assigned_to') +
|
||||||
content_tag('td', child.disabled_core_fields.include?('done_ratio') ? '' : progress_bar(child.done_ratio), :class=> 'done_ratio'),
|
content_tag('td', child.disabled_core_fields.include?('done_ratio') ? '' : progress_bar(child.done_ratio), :class=> 'done_ratio') +
|
||||||
|
content_tag('td', link_to_context_menu, :class => 'buttons'),
|
||||||
:class => css)
|
:class => css)
|
||||||
end
|
end
|
||||||
s << '</table>'
|
s << '</table>'
|
||||||
@@ -114,14 +115,15 @@ module IssuesHelper
|
|||||||
relations.each do |relation|
|
relations.each do |relation|
|
||||||
other_issue = relation.other_issue(issue)
|
other_issue = relation.other_issue(issue)
|
||||||
css = "issue hascontextmenu #{other_issue.css_classes}"
|
css = "issue hascontextmenu #{other_issue.css_classes}"
|
||||||
link = manage_relations ? link_to(l(:label_relation_delete),
|
buttons = manage_relations ? link_to(l(:label_relation_delete),
|
||||||
relation_path(relation),
|
relation_path(relation),
|
||||||
:remote => true,
|
:remote => true,
|
||||||
:method => :delete,
|
:method => :delete,
|
||||||
:data => {:confirm => l(:text_are_you_sure)},
|
:data => {:confirm => l(:text_are_you_sure)},
|
||||||
:title => l(:label_relation_delete),
|
:title => l(:label_relation_delete),
|
||||||
:class => 'icon-only icon-link-break'
|
:class => 'icon-only icon-link-break'
|
||||||
) : nil
|
) :"".html_safe
|
||||||
|
buttons << link_to_context_menu
|
||||||
|
|
||||||
s << content_tag('tr',
|
s << content_tag('tr',
|
||||||
content_tag('td', check_box_tag("ids[]", other_issue.id, false, :id => nil), :class => 'checkbox') +
|
content_tag('td', check_box_tag("ids[]", other_issue.id, false, :id => nil), :class => 'checkbox') +
|
||||||
@@ -130,7 +132,7 @@ module IssuesHelper
|
|||||||
content_tag('td', other_issue.start_date, :class => 'start_date') +
|
content_tag('td', other_issue.start_date, :class => 'start_date') +
|
||||||
content_tag('td', other_issue.due_date, :class => 'due_date') +
|
content_tag('td', other_issue.due_date, :class => 'due_date') +
|
||||||
content_tag('td', other_issue.disabled_core_fields.include?('done_ratio') ? '' : progress_bar(other_issue.done_ratio), :class=> 'done_ratio') +
|
content_tag('td', other_issue.disabled_core_fields.include?('done_ratio') ? '' : progress_bar(other_issue.done_ratio), :class=> 'done_ratio') +
|
||||||
content_tag('td', link, :class => 'buttons'),
|
content_tag('td', buttons, :class => 'buttons'),
|
||||||
:id => "relation-#{relation.id}",
|
:id => "relation-#{relation.id}",
|
||||||
:class => css)
|
:class => css)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
<% query.inline_columns.each do |column| %>
|
<% query.inline_columns.each do |column| %>
|
||||||
<%= column_header(query, column, query_options) %>
|
<%= column_header(query, column, query_options) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<th class="buttons"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -21,7 +22,7 @@
|
|||||||
<% if group_name %>
|
<% if group_name %>
|
||||||
<% reset_cycle %>
|
<% reset_cycle %>
|
||||||
<tr class="group open">
|
<tr class="group open">
|
||||||
<td colspan="<%= query.inline_columns.size + 1 %>">
|
<td colspan="<%= query.inline_columns.size + 2 %>">
|
||||||
<span class="expander" onclick="toggleRowGroup(this);"> </span>
|
<span class="expander" onclick="toggleRowGroup(this);"> </span>
|
||||||
<span class="name"><%= group_name %></span> <span class="count"><%= group_count %></span> <span class="totals"><%= group_totals %></span>
|
<span class="name"><%= group_name %></span> <span class="count"><%= group_count %></span> <span class="totals"><%= group_totals %></span>
|
||||||
<%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}",
|
<%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}",
|
||||||
@@ -34,11 +35,12 @@
|
|||||||
<% query.inline_columns.each do |column| %>
|
<% query.inline_columns.each do |column| %>
|
||||||
<%= content_tag('td', column_content(column, issue), :class => column.css_classes) %>
|
<%= content_tag('td', column_content(column, issue), :class => column.css_classes) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<td class="buttons"><%= link_to_context_menu %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% query.block_columns.each do |column|
|
<% query.block_columns.each do |column|
|
||||||
if (text = column_content(column, issue)) && text.present? -%>
|
if (text = column_content(column, issue)) && text.present? -%>
|
||||||
<tr class="<%= current_cycle %>">
|
<tr class="<%= current_cycle %>">
|
||||||
<td colspan="<%= query.inline_columns.size + 1 %>" class="<%= column.css_classes %>">
|
<td colspan="<%= query.inline_columns.size + 2 %>" class="<%= column.css_classes %>">
|
||||||
<% if query.block_columns.count > 1 %>
|
<% if query.block_columns.count > 1 %>
|
||||||
<span><%= column.caption %></span>
|
<span><%= column.caption %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
<th><%= l(:label_project) %></th>
|
<th><%= l(:label_project) %></th>
|
||||||
<th><%= l(:field_comments) %></th>
|
<th><%= l(:field_comments) %></th>
|
||||||
<th><%= l(:field_hours) %></th>
|
<th><%= l(:field_hours) %></th>
|
||||||
|
<th></th>
|
||||||
</tr></thead>
|
</tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% entries_by_day.keys.sort.reverse_each do |day| %>
|
<% entries_by_day.keys.sort.reverse_each do |day| %>
|
||||||
@@ -42,6 +43,7 @@
|
|||||||
<td><strong><%= day == User.current.today ? l(:label_today).titleize : format_date(day) %></strong></td>
|
<td><strong><%= day == User.current.today ? l(:label_today).titleize : format_date(day) %></strong></td>
|
||||||
<td colspan="2"></td>
|
<td colspan="2"></td>
|
||||||
<td class="hours"><em><%= html_hours(format_hours(entries_by_day[day].sum(&:hours))) %></em></td>
|
<td class="hours"><em><%= html_hours(format_hours(entries_by_day[day].sum(&:hours))) %></em></td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% entries_by_day[day].each do |entry| -%>
|
<% entries_by_day[day].each do |entry| -%>
|
||||||
<tr id="time-entry-<%= entry.id %>" class="time-entry hascontextmenu">
|
<tr id="time-entry-<%= entry.id %>" class="time-entry hascontextmenu">
|
||||||
@@ -52,6 +54,7 @@
|
|||||||
<td class="subject"><%= entry.project %> <%= h(' - ') + link_to_issue(entry.issue, :truncate => 50) if entry.issue %></td>
|
<td class="subject"><%= entry.project %> <%= h(' - ') + link_to_issue(entry.issue, :truncate => 50) if entry.issue %></td>
|
||||||
<td class="comments"><%= entry.comments %></td>
|
<td class="comments"><%= entry.comments %></td>
|
||||||
<td class="hours"><%= html_hours(format_hours(entry.hours)) %></td>
|
<td class="hours"><%= html_hours(format_hours(entry.hours)) %></td>
|
||||||
|
<td class="buttons"><%= link_to_context_menu %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
:title => l(:button_delete),
|
:title => l(:button_delete),
|
||||||
:class => 'icon-only icon-del' %>
|
:class => 'icon-only icon-del' %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
<%= link_to_context_menu %>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<% @query.block_columns.each do |column|
|
<% @query.block_columns.each do |column|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
<tr class="hascontextmenu">
|
<tr class="hascontextmenu">
|
||||||
<td class="checkbox"><%= check_box_tag 'ids[]', issue.id, false, :id => nil %></td>
|
<td class="checkbox"><%= check_box_tag 'ids[]', issue.id, false, :id => nil %></td>
|
||||||
<td class="subject"><%= link_to_issue(issue, :project => (@project != issue.project)) %></td>
|
<td class="subject"><%= link_to_issue(issue, :project => (@project != issue.project)) %></td>
|
||||||
|
<td class="buttons"><%= link_to_context_menu %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
<tr class="issue hascontextmenu">
|
<tr class="issue hascontextmenu">
|
||||||
<td class="checkbox"><%= check_box_tag 'ids[]', issue.id, false, :id => nil %></td>
|
<td class="checkbox"><%= check_box_tag 'ids[]', issue.id, false, :id => nil %></td>
|
||||||
<td class="subject"><%= link_to_issue(issue, :project => (@project != issue.project)) %></td>
|
<td class="subject"><%= link_to_issue(issue, :project => (@project != issue.project)) %></td>
|
||||||
|
<td class="buttons"><%= link_to_context_menu %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -203,6 +203,7 @@ de:
|
|||||||
button_update: Aktualisieren
|
button_update: Aktualisieren
|
||||||
button_view: Anzeigen
|
button_view: Anzeigen
|
||||||
button_watch: Beobachten
|
button_watch: Beobachten
|
||||||
|
button_actions: Aktionen
|
||||||
|
|
||||||
default_activity_design: Design
|
default_activity_design: Design
|
||||||
default_activity_development: Entwicklung
|
default_activity_development: Entwicklung
|
||||||
|
|||||||
@@ -1079,6 +1079,7 @@ en:
|
|||||||
button_reopen: Reopen
|
button_reopen: Reopen
|
||||||
button_import: Import
|
button_import: Import
|
||||||
button_filter: Filter
|
button_filter: Filter
|
||||||
|
button_actions: Actions
|
||||||
|
|
||||||
status_active: active
|
status_active: active
|
||||||
status_registered: registered
|
status_registered: registered
|
||||||
|
|||||||
BIN
public/images/3_bullets.png
Normal file
BIN
public/images/3_bullets.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@@ -5,7 +5,7 @@ var contextMenuObserving;
|
|||||||
|
|
||||||
function contextMenuRightClick(event) {
|
function contextMenuRightClick(event) {
|
||||||
var target = $(event.target);
|
var target = $(event.target);
|
||||||
if (target.is('a')) {return;}
|
if (target.is('a:not(.js-contextmenu)')) {return;}
|
||||||
var tr = target.closest('.hascontextmenu').first();
|
var tr = target.closest('.hascontextmenu').first();
|
||||||
if (tr.length < 1) {return;}
|
if (tr.length < 1) {return;}
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -218,6 +218,7 @@ function contextMenuInit() {
|
|||||||
if (!contextMenuObserving) {
|
if (!contextMenuObserving) {
|
||||||
$(document).click(contextMenuClick);
|
$(document).click(contextMenuClick);
|
||||||
$(document).contextmenu(contextMenuRightClick);
|
$(document).contextmenu(contextMenuRightClick);
|
||||||
|
$(document).on('click', '.js-contextmenu', contextMenuRightClick);
|
||||||
contextMenuObserving = true;
|
contextMenuObserving = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -228,6 +228,7 @@ table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }
|
|||||||
table.list td.checkbox input {padding:0px;}
|
table.list td.checkbox input {padding:0px;}
|
||||||
table.list td.buttons, div.buttons { white-space:nowrap; text-align: right; }
|
table.list td.buttons, div.buttons { white-space:nowrap; text-align: right; }
|
||||||
table.list td.buttons a, div.buttons a { margin-right: 0.6em; }
|
table.list td.buttons a, div.buttons a { margin-right: 0.6em; }
|
||||||
|
table.list td.buttons a:last-child, div.buttons a:last-child { margin-right: 0; }
|
||||||
table.list td.buttons img, div.buttons img {vertical-align:middle;}
|
table.list td.buttons img, div.buttons img {vertical-align:middle;}
|
||||||
table.list td.reorder {width:15%; white-space:nowrap; text-align:center; }
|
table.list td.reorder {width:15%; white-space:nowrap; text-align:center; }
|
||||||
table.list table.progress td {padding-right:0px;}
|
table.list table.progress td {padding-right:0px;}
|
||||||
@@ -473,7 +474,7 @@ div.issue.overdue .due-date .value { color: #c22; }
|
|||||||
|
|
||||||
#issue_tree table.issues, #relations table.issues { border: 0; }
|
#issue_tree table.issues, #relations table.issues { border: 0; }
|
||||||
#issue_tree td.checkbox, #relations td.checkbox {display:none;}
|
#issue_tree td.checkbox, #relations td.checkbox {display:none;}
|
||||||
#relations td.buttons {padding:0;}
|
#relations td.buttons, #issue_tree td.buttons {padding:0;}
|
||||||
|
|
||||||
fieldset.collapsible {border-width: 1px 0 0 0;}
|
fieldset.collapsible {border-width: 1px 0 0 0;}
|
||||||
fieldset.collapsible>legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
|
fieldset.collapsible>legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
|
||||||
@@ -1308,6 +1309,7 @@ div.wiki img {vertical-align:middle; max-width:100%;}
|
|||||||
.icon-project { background-image: url(../images/projects.png); }
|
.icon-project { background-image: url(../images/projects.png); }
|
||||||
.icon-add-bullet { background-image: url(../images/bullet_add.png); }
|
.icon-add-bullet { background-image: url(../images/bullet_add.png); }
|
||||||
.icon-shared { background-image: url(../images/link.png); }
|
.icon-shared { background-image: url(../images/link.png); }
|
||||||
|
.icon-actions { background-image: url(../images/3_bullets.png); }
|
||||||
|
|
||||||
.icon-file { background-image: url(../images/files/default.png); }
|
.icon-file { background-image: url(../images/files/default.png); }
|
||||||
.icon-file.text-plain { background-image: url(../images/files/text.png); }
|
.icon-file.text-plain { background-image: url(../images/files/text.png); }
|
||||||
|
|||||||
@@ -793,11 +793,13 @@
|
|||||||
width: 33.33%; /* three columns for all cells that are not subject */
|
width: 33.33%; /* three columns for all cells that are not subject */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#issue_tree .issues, #issue_tree .issue,
|
||||||
#relations .issues, #relations .issue {
|
#relations .issues, #relations .issue {
|
||||||
position: relative; /* needed for .buttons positioning */
|
position: relative; /* needed for .buttons positioning */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* positioniong of unline button */
|
/* positioniong of unline button */
|
||||||
|
#issue_tree .issue > td.buttons,
|
||||||
#relations .issue > td.buttons {
|
#relations .issue > td.buttons {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -806,11 +808,12 @@
|
|||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#issue_tree .issue .buttons a,
|
||||||
#relations .issue .buttons a {
|
#relations .issue .buttons a {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
padding-right: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#issue_tree .issue > td.subject,
|
||||||
#relations .issue > td.subject {
|
#relations .issue > td.subject {
|
||||||
padding-right: 25px; /* this is the spaces that .buttons uses next to subject */
|
padding-right: 25px; /* this is the spaces that .buttons uses next to subject */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1004,7 +1004,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_index_with_columns
|
def test_index_with_columns
|
||||||
columns = ['tracker', 'subject', 'assigned_to']
|
columns = ['tracker', 'subject', 'assigned_to', 'buttons']
|
||||||
get :index, :params => {
|
get :index, :params => {
|
||||||
:set_filter => 1,
|
:set_filter => 1,
|
||||||
:c => columns
|
:c => columns
|
||||||
@@ -1017,6 +1017,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
|||||||
assert_select 'th.tracker'
|
assert_select 'th.tracker'
|
||||||
assert_select 'th.subject'
|
assert_select 'th.subject'
|
||||||
assert_select 'th.assigned_to'
|
assert_select 'th.assigned_to'
|
||||||
|
assert_select 'th.buttons'
|
||||||
end
|
end
|
||||||
|
|
||||||
# columns should be stored in session
|
# columns should be stored in session
|
||||||
@@ -1245,8 +1246,8 @@ class IssuesControllerTest < Redmine::ControllerTest
|
|||||||
:c => %w(subject description)
|
:c => %w(subject description)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_select 'table.issues thead th', 3 # columns: chekbox + id + subject
|
assert_select 'table.issues thead th', 4 # columns: chekbox + id + subject
|
||||||
assert_select 'td.description[colspan="3"]', :text => 'Unable to print recipes'
|
assert_select 'td.description[colspan="4"]', :text => 'Unable to print recipes'
|
||||||
|
|
||||||
get :index, :params => {
|
get :index, :params => {
|
||||||
:set_filter => 1,
|
:set_filter => 1,
|
||||||
@@ -1264,10 +1265,10 @@ class IssuesControllerTest < Redmine::ControllerTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_select 'table.issues thead th', 3 # columns: chekbox + id + subject
|
assert_select 'table.issues thead th', 4 # columns: chekbox + id + subject
|
||||||
|
|
||||||
assert_select 'td.last_notes[colspan="3"]', :text => 'Some notes with Redmine links: #2, r2.'
|
assert_select 'td.last_notes[colspan="4"]', :text => 'Some notes with Redmine links: #2, r2.'
|
||||||
assert_select 'td.last_notes[colspan="3"]', :text => 'A comment with inline image: and a reference to #1 and r2.'
|
assert_select 'td.last_notes[colspan="4"]', :text => 'A comment with inline image: and a reference to #1 and r2.'
|
||||||
|
|
||||||
get :index, :params => {
|
get :index, :params => {
|
||||||
:set_filter => 1,
|
:set_filter => 1,
|
||||||
@@ -1288,7 +1289,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
|||||||
:c => %w(subject last_notes)
|
:c => %w(subject last_notes)
|
||||||
}
|
}
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_select 'td.last_notes[colspan="3"]', :text => 'Privates notes'
|
assert_select 'td.last_notes[colspan="4"]', :text => 'Privates notes'
|
||||||
|
|
||||||
Role.find(1).remove_permission! :view_private_notes
|
Role.find(1).remove_permission! :view_private_notes
|
||||||
|
|
||||||
@@ -1297,7 +1298,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
|||||||
:c => %w(subject last_notes)
|
:c => %w(subject last_notes)
|
||||||
}
|
}
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_select 'td.last_notes[colspan="3"]', :text => 'Public notes'
|
assert_select 'td.last_notes[colspan="4"]', :text => 'Public notes'
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_index_with_description_and_last_notes_columns_should_display_column_name
|
def test_index_with_description_and_last_notes_columns_should_display_column_name
|
||||||
@@ -1307,8 +1308,8 @@ class IssuesControllerTest < Redmine::ControllerTest
|
|||||||
}
|
}
|
||||||
assert_response :success
|
assert_response :success
|
||||||
|
|
||||||
assert_select 'td.last_notes[colspan="3"] span', :text => 'Last notes'
|
assert_select 'td.last_notes[colspan="4"] span', :text => 'Last notes'
|
||||||
assert_select 'td.description[colspan="3"] span', :text => 'Description'
|
assert_select 'td.description[colspan="4"] span', :text => 'Description'
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_index_with_parent_column
|
def test_index_with_parent_column
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ class MyControllerTest < Redmine::ControllerTest
|
|||||||
assert_select '#block-issuequery' do
|
assert_select '#block-issuequery' do
|
||||||
assert_select 'a[href=?]', "/issues?query_id=#{query.id}"
|
assert_select 'a[href=?]', "/issues?query_id=#{query.id}"
|
||||||
# assert number of columns (columns from query + id column + checkbox column)
|
# assert number of columns (columns from query + id column + checkbox column)
|
||||||
assert_select 'table.issues th', 6
|
assert_select 'table.issues th', 7
|
||||||
# assert results limit
|
# assert results limit
|
||||||
assert_select 'table.issues tr.issue', 10
|
assert_select 'table.issues tr.issue', 10
|
||||||
assert_select 'table.issues td.assigned_to'
|
assert_select 'table.issues td.assigned_to'
|
||||||
@@ -145,7 +145,7 @@ class MyControllerTest < Redmine::ControllerTest
|
|||||||
assert_select '#block-issuequery' do
|
assert_select '#block-issuequery' do
|
||||||
assert_select 'a[href=?]', "/projects/ecookbook/issues?query_id=#{query.id}"
|
assert_select 'a[href=?]', "/projects/ecookbook/issues?query_id=#{query.id}"
|
||||||
# assert number of columns (columns from query + id column + checkbox column)
|
# assert number of columns (columns from query + id column + checkbox column)
|
||||||
assert_select 'table.issues th', 6
|
assert_select 'table.issues th', 7
|
||||||
# assert results limit
|
# assert results limit
|
||||||
assert_select 'table.issues tr.issue', 10
|
assert_select 'table.issues tr.issue', 10
|
||||||
assert_select 'table.issues td.assigned_to'
|
assert_select 'table.issues td.assigned_to'
|
||||||
@@ -164,7 +164,7 @@ class MyControllerTest < Redmine::ControllerTest
|
|||||||
|
|
||||||
assert_select '#block-issuequery' do
|
assert_select '#block-issuequery' do
|
||||||
# assert number of columns (columns from query + id column + checkbox column)
|
# assert number of columns (columns from query + id column + checkbox column)
|
||||||
assert_select 'table.issues th', 4
|
assert_select 'table.issues th', 5
|
||||||
assert_select 'table.issues th', :text => 'Due date'
|
assert_select 'table.issues th', :text => 'Due date'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ module Redmine
|
|||||||
|
|
||||||
# Return the columns that are displayed in the issue list
|
# Return the columns that are displayed in the issue list
|
||||||
def columns_in_issues_list
|
def columns_in_issues_list
|
||||||
css_select('table.issues thead th:not(.checkbox)').map(&:text)
|
css_select('table.issues thead th:not(.checkbox)').map(&:text).select(&:present?)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Return the columns that are displayed in the list
|
# Return the columns that are displayed in the list
|
||||||
|
|||||||
Reference in New Issue
Block a user