Patch #42521 » 0001-Add-daialog-controller-and-dialog-dispatcher-control.patch
app/assets/images/icons.svg | ||
---|---|---|
122 | 122 |
<path d="M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z"/> |
123 | 123 |
<path d="M9 9l6 6m0 -6l-6 6"/> |
124 | 124 |
</symbol> |
125 |
<symbol viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" id="icon--close-dialog"> |
|
126 |
<path d="M18 6l-12 12" /> |
|
127 |
<path d="M6 6l12 12" /> |
|
128 |
</symbol> |
|
125 | 129 |
<symbol viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" id="icon--comment"> |
126 | 130 |
<path d="M8 9h8"/> |
127 | 131 |
<path d="M8 13h6"/> |
app/assets/stylesheets/application.css | ||
---|---|---|
207 | 207 |
#login-form a.lost_password {float:right; font-weight:normal;} |
208 | 208 |
#login-form h3 {text-align: center;} |
209 | 209 | |
210 |
div.modal { border-radius:5px; background:#fff; z-index:50; padding:4px;} |
|
211 |
div.modal h3.title {display:none;} |
|
210 |
div.modal { position:absolute; border-radius:5px; background:#fff; padding:7px 14px; border: 1px solid #c5c5c5; color: #333; font-family: Arial,Helvetica,sans-serif; font-size: 1em; outline: 0; z-index: 100} |
|
212 | 211 |
div.modal p.buttons {margin-bottom:0;} |
213 | 212 |
div.modal .box p {margin: 0.3em 0;} |
213 |
div.modal .handle {display:flex; align-items: center;height:1.5em; cursor: move; padding: .5em; border-radius: 3px; border: 1px solid #ddd; background: #e9e9e9; color: #333; font-weight: bold; touch-action: none} |
|
214 |
div.modal .handle .title {margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis} |
|
215 |
div.modal .handle button {margin: 0 0 0 auto;padding:0;width: 20px; height: 20px;fill: #454545; text-decoration: none; border: 1px solid #c5c5c5; background: #f6f6f6; font-weight: normal;box-sizing: border-box; white-space: nowrap; line-height: normal; cursor: pointer; text-align: center; user-select: none; overflow: visible;} |
|
216 |
div.modal .handle button svg { stroke-width: 4; stroke: #999 } |
|
217 |
div.modal .handle button .icon {position: absolute; top: 50%; left: 50%; margin-top:-8px; margin-left: -8px; width: 16px; height: 16px; display: inline-block; vertical-align: middle; overflow: hidden; background-repeat: no-repeat} |
|
218 |
.modal-backdrop-open { position: fixed; inset: 0; background: rgba(0,0,0,0.7); display: flex; align-items: center; justify-content: center; } |
|
214 | 219 | |
215 | 220 |
.clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; } |
216 | 221 | |
... | ... | |
698 | 703 |
#issue_tree .issue > td.assigned_to, #relations .issue > td.assigned_to { |
699 | 704 |
white-space: nowrap; |
700 | 705 |
} |
701 |
#trackers_description, #issue_statuses_description {display:none;} |
|
702 | 706 |
#trackers_description dt, #issue_statuses_description dt {font-weight: bold; text-decoration: underline;} |
703 | 707 |
#trackers_description dd, #issue_statuses_description dd {margin: 0; padding: 0 0 1em 0;} |
704 | 708 |
app/helpers/application_helper.rb | ||
---|---|---|
1940 | 1940 |
) |
1941 | 1941 |
end |
1942 | 1942 | |
1943 |
def remote_dialog(width: nil, modal: true, title: nil, partial: nil, locals: {}, &block) |
|
1944 |
data = { |
|
1945 |
controller: 'dialog', |
|
1946 |
width: width, |
|
1947 |
dialog_modal_value: modal, |
|
1948 |
dialog_dispatcher_target: 'show' |
|
1949 |
} |
|
1950 |
block = -> { render partial: partial, locals: locals } if partial |
|
1951 |
render layout: 'common/dialog', locals: { id: nil, title: title, data: data }, formats: [:html], &block |
|
1952 |
end |
|
1953 | ||
1943 | 1954 |
private |
1944 | 1955 | |
1945 | 1956 |
def wiki_helper |
... | ... | |
1960 | 1971 |
wiki_pages: auto_complete_wiki_pages_path(project_id: project, q: ''), |
1961 | 1972 |
} |
1962 | 1973 |
end |
1974 | ||
1975 |
def modal_dialog(id, title, data: nil, &block) |
|
1976 |
content_for(:modal) { render 'common/dialog', { id: id, title: title, data: data }, &block } |
|
1977 |
end |
|
1978 | ||
1979 |
def dialog_dispatcher(element_id, width) |
|
1980 |
{ |
|
1981 |
controller: 'dialog-dispatcher', |
|
1982 |
action: 'dialog-dispatcher#show', |
|
1983 |
dialog_dispatcher_dialog_outlet: "##{element_id}", |
|
1984 |
dialog_dispatcher_width_param: width |
|
1985 |
} |
|
1986 |
end |
|
1963 | 1987 |
end |
app/javascript/controllers/dialog_controller.js | ||
---|---|---|
1 |
/** |
|
2 |
* Redmine - project management software |
|
3 |
* Copyright (C) 2006- Jean-Philippe Lang |
|
4 |
* This code is released under the GNU General Public License. |
|
5 |
*/ |
|
6 | ||
7 |
import { Controller } from "@hotwired/stimulus" |
|
8 | ||
9 |
// Connects to data-controller="dialog" |
|
10 |
export default class extends Controller { |
|
11 |
static targets = [ 'handler' ] |
|
12 |
static values = { |
|
13 |
modal: { type: Boolean, default: true }, |
|
14 |
wrapperId: { type: String, default: 'wrapper' } |
|
15 |
} |
|
16 | ||
17 |
connect() { |
|
18 |
this.dragging = null; |
|
19 |
this.backdrop = null; |
|
20 |
const rect = this.element.getBoundingClientRect(); |
|
21 |
this._pos = {x: rect.left, y: rect.top} |
|
22 |
this.element[`${this.identifier}_controller`] = this; |
|
23 |
this.wrapper = document.getElementById(this.wrapperIdValue) |
|
24 |
} |
|
25 | ||
26 |
noop(e) { |
|
27 |
e.preventDefault() |
|
28 |
} |
|
29 | ||
30 |
start(e) { |
|
31 |
if (e.button !== 0) return; // left button only |
|
32 | ||
33 |
const client = this.eventToCoordinates(e); |
|
34 |
this.dragging = {dx: this.pos.x - client.x, dy: this.pos.y - client.y}; |
|
35 |
this.handlerTarget.classList.add('dragging'); |
|
36 |
this.handlerTarget.setPointerCapture(e.pointerId); |
|
37 |
this.handlerTarget.style.userSelect = 'none'; // if there's text |
|
38 |
this.handlerTarget.style.webkitUserSelect = 'none'; // safari |
|
39 |
} |
|
40 | ||
41 |
end(e) { |
|
42 |
this.dragging = null; |
|
43 |
this.handlerTarget.classList.remove('dragging'); |
|
44 |
this.handlerTarget.style.userSelect = ''; // if there's text |
|
45 |
this.handlerTarget.style.webkitUserSelect = ''; // safari |
|
46 |
} |
|
47 | ||
48 |
move(e) { |
|
49 |
if (!this.dragging) return; |
|
50 | ||
51 |
const client = this.eventToCoordinates(e); |
|
52 |
this.pos = {x: client.x + this.dragging.dx, y: client.y + this.dragging.dy}; |
|
53 |
} |
|
54 | ||
55 |
eventToCoordinates(e) { |
|
56 |
return {x: e.clientX, y: e.clientY} |
|
57 |
} |
|
58 | ||
59 |
get pos() { return this._pos } |
|
60 | ||
61 |
set pos(p) { |
|
62 |
this._pos = p; |
|
63 |
this.element.style.transform = `translate(${this._pos.x}px,${this._pos.y}px)`; |
|
64 |
} |
|
65 | ||
66 |
show({width = undefined, backdrop = 'modal-backdrop'}) { |
|
67 |
this.element.style.display = ''; |
|
68 |
if (width) { |
|
69 |
this.element.style.width = width; |
|
70 |
} |
|
71 | ||
72 |
if (this.modalValue) { |
|
73 |
this.backdrop = document.getElementById(backdrop) |
|
74 |
this.backdrop.classList.add('modal-backdrop-open') |
|
75 |
this.wrapper.inert = true |
|
76 |
} |
|
77 |
} |
|
78 | ||
79 |
hide(e) { |
|
80 |
this.hideDialog() |
|
81 |
} |
|
82 | ||
83 |
cancel(e) { |
|
84 |
e.preventDefault(); |
|
85 |
this.hideDialog() |
|
86 |
} |
|
87 | ||
88 |
hideDialog() { |
|
89 |
this.element.style.display = 'none' |
|
90 |
if (this.backdrop !== null) { |
|
91 |
this.backdrop.classList.remove('modal-backdrop-open') |
|
92 |
} |
|
93 |
if (this.wrapper !== null) { |
|
94 |
this.wrapper.inert = false |
|
95 |
} |
|
96 |
} |
|
97 |
} |
app/javascript/controllers/dialog_dispatcher_controller.js | ||
---|---|---|
1 |
/** |
|
2 |
* Redmine - project management software |
|
3 |
* Copyright (C) 2006- Jean-Philippe Lang |
|
4 |
* This code is released under the GNU General Public License. |
|
5 |
*/ |
|
6 | ||
7 |
import { Controller } from "@hotwired/stimulus" |
|
8 | ||
9 |
// Connects to data-controller="dialog-dispatcher" |
|
10 |
export default class extends Controller { |
|
11 |
static targets = [ 'show', 'hide' ]; |
|
12 |
static outlets = [ 'dialog' ]; |
|
13 | ||
14 |
show(e) { |
|
15 |
e.preventDefault(); |
|
16 |
this.dialog = this.dialogOutlet |
|
17 |
this.dialog.show({width: e.params.width}) |
|
18 |
} |
|
19 | ||
20 |
showTargetConnected(dialog) { |
|
21 |
this.dialog = dialog.dialog_controller |
|
22 |
this.dialog.show({width: dialog.dataset.width, backdrop: this.element.id}) |
|
23 |
} |
|
24 | ||
25 |
hideTargetConnected(element) { |
|
26 |
this.dialog.hide() |
|
27 |
element.remove() |
|
28 |
} |
|
29 |
} |
app/views/common/_dialog.html.erb | ||
---|---|---|
1 |
<%= tag.div style: 'display:none', class: 'modal', id: id, data: (data || { controller: 'dialog' }) do %> |
|
2 |
<div class="handle" data-action="pointerdown->dialog#start pointerup->dialog#end pointercancel->dialog#end pointermove->dialog#move touchstart->dialog#noop dragstart->dialog#noop" data-dialog-target="handler"> |
|
3 |
<span class="title"><%= title %></span> |
|
4 |
<%= tag.button type: "button", title: l(:button_close_dialog), data: {action: "dialog#cancel"} do %> |
|
5 |
<%= sprite_icon 'close-dialog'%> |
|
6 |
<% end %> |
|
7 |
</div> |
|
8 | ||
9 |
<div> |
|
10 |
<%= yield %> |
|
11 |
</div> |
|
12 |
<% end %> |
app/views/email_addresses/index.js.erb | ||
---|---|---|
1 |
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'email_addresses/index') %>'); |
|
2 |
showModal('ajax-modal', '600px', '<%= escape_javascript l(:label_email_address_plural) %>');
|
|
1 |
<% html = remote_dialog(width: '600px', title: l(:label_email_address_plural), partial: 'email_addresses/index') %> |
|
2 |
$('#ajax-modal').html('<%= escape_javascript(html) %>');
|
|
3 | 3 |
$('#email_address_address').focus(); |
app/views/groups/_new_users_modal.html.erb | ||
---|---|---|
1 |
<h3 class="title"><%= l(:label_user_new) %></h3> |
|
2 | ||
3 | 1 |
<%= form_for(@group, :url => group_users_path(@group), :remote => true, :method => :post) do |f| %> |
4 | 2 |
<%= render :partial => 'new_users_form' %> |
5 | 3 |
<p class="buttons"> |
6 | 4 |
<%= submit_tag l(:button_add) %> |
7 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
5 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
8 | 6 |
</p> |
9 | 7 |
<% end %> |
app/views/groups/add_users.js.erb | ||
---|---|---|
1 |
hideModal(); |
|
1 |
$('#ajax-modal').append('<template data-dialog-dispatcher-target="hide"></template>') |
|
2 | 2 |
$('#tab-content-users').html('<%= escape_javascript(render :partial => 'groups/users') %>'); |
3 | 3 |
<% @users.each do |user| %> |
4 | 4 |
$('#user-<%= user.id %>').effect("highlight"); |
app/views/groups/new_users.js.erb | ||
---|---|---|
1 |
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'groups/new_users_modal') %>'); |
|
2 |
showModal('ajax-modal', '700px'); |
|
1 |
<% html = remote_dialog(width: '700px', title: l(:label_user_new), partial: 'groups/new_users_modal') %> |
|
2 |
$('#ajax-modal').html('<%= escape_javascript(html) %>'); |
app/views/issue_categories/_new_modal.html.erb | ||
---|---|---|
1 |
<h3 class="title"><%=l(:label_issue_category_new)%></h3> |
|
2 | ||
3 | 1 |
<%= labelled_form_for @category, :as => 'issue_category', :url => project_issue_categories_path(@project), :remote => true do |f| %> |
4 | 2 |
<%= render :partial => 'issue_categories/form', :locals => { :f => f } %> |
5 | 3 |
<p class="buttons"> |
6 |
<%= submit_tag l(:button_create), :name => nil %>
|
|
7 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
4 |
<%= submit_tag l(:button_create), name: nil %>
|
|
5 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
8 | 6 |
</p> |
9 | 7 |
<% end %> |
app/views/issue_categories/create.js.erb | ||
---|---|---|
1 |
hideModal(); |
|
1 |
$('#ajax-modal').append('<template data-dialog-dispatcher-target="hide"></template>') |
|
2 | 2 |
<% select = content_tag('select', content_tag('option') + options_from_collection_for_select(@project.issue_categories, 'id', 'name', @category.id), :id => 'issue_category_id', :name => 'issue[category_id]') %> |
3 | 3 |
$('#issue_category_id').replaceWith('<%= escape_javascript(select) %>'); |
app/views/issue_categories/new.js.erb | ||
---|---|---|
1 |
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'issue_categories/new_modal') %>'); |
|
2 |
showModal('ajax-modal', '600px'); |
|
1 |
<% html = remote_dialog(width: '600px', title: l(:label_issue_category_new), partial: 'issue_categories/new_modal', locals: {watchables: @watchables, users: @users}) %> |
|
2 |
$('#ajax-modal').html('<%= escape_javascript(html) %>'); |
app/views/issues/_attributes.html.erb | ||
---|---|---|
7 | 7 |
<%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), {:required => true}, |
8 | 8 |
:onchange => "updateIssueFrom('#{escape_javascript(update_issue_form_path(@project, @issue))}', this)", |
9 | 9 |
:title => @issue.status.description %> |
10 |
<%= content_tag 'a', sprite_icon('help', l(:label_open_issue_statuses_description)), :class => 'icon-only icon-help', :title => l(:label_open_issue_statuses_description), :onclick => "showModal('issue_statuses_description', '500px'); return false;", :href => '#' if @allowed_statuses.any? {|s| s.description.present? } %>
|
|
10 |
<%= link_to sprite_icon('help', l(:label_open_issue_statuses_description)), '#', class: 'icon-only icon-help', title: l(:label_open_issue_statuses_description), data: dialog_dispatcher('issue_statuses_description', '500px') if @allowed_statuses.any? {|s| s.description.present? } %>
|
|
11 | 11 |
<% if @issue.transition_warning %> |
12 | 12 |
<span class="icon-only icon-warning" title="<%= @issue.transition_warning %>"><%= sprite_icon('warning', l(:notice_issue_not_closable_by_open_tasks)) %></span> |
13 | 13 |
<% end %> |
14 |
<%= render partial: 'issues/issue_status_description', locals: { issue_statuses: @allowed_statuses } %> |
|
14 | 15 |
</p> |
15 |
<%= render partial: 'issues/issue_status_description', locals: { issue_statuses: @allowed_statuses } %> |
|
16 | 16 |
<%= hidden_field_tag 'was_default_status', @issue.status_id, :id => nil if @issue.status == @issue.default_status %> |
17 | 17 |
<% else %> |
18 | 18 |
<p><label><%= l(:field_status) %></label> <%= @issue.status %></p> |
app/views/issues/_form.html.erb | ||
---|---|---|
20 | 20 |
<%= f.select :tracker_id, trackers_options_for_select(@issue), {:required => true}, |
21 | 21 |
:onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)", |
22 | 22 |
:title => @issue.tracker.description %> |
23 |
<%= content_tag 'a', sprite_icon('help', l(:label_open_trackers_description)), :class => 'icon-only icon-help', :title => l(:label_open_trackers_description), :onclick => "showModal('trackers_description', '500px'); return false;", :href => '#' if trackers_for_select(@issue).any? {|t| t.description.present? } %>
|
|
24 |
</p>
|
|
23 |
<%= link_to sprite_icon('help', l(:label_open_trackers_description)),
|
|
24 |
'#', class: 'icon-only icon-help', title: l(:label_open_trackers_description), data: dialog_dispatcher('trackers_description', '500px') if trackers_for_select(@issue).any? {|t| t.description.present? } %>
|
|
25 | 25 |
<%= render partial: 'issues/trackers_description', locals: {trackers: trackers_for_select(@issue)} %> |
26 |
</p> |
|
26 | 27 |
<% end %> |
27 | 28 | |
28 | 29 |
<% if @issue.safe_attribute? 'subject' %> |
app/views/issues/_issue_status_description.html.erb | ||
---|---|---|
1 | 1 |
<% if issue_statuses.any? {|s| s.description.present? } %> |
2 |
<div class="modal" id="issue_statuses_description"> |
|
3 |
<h3 class="title"><%= l(:label_issue_statuses_description) %></h3> |
|
4 |
<dl> |
|
2 |
<%= modal_dialog "issue_statuses_description", l(:label_issue_statuses_description) do %> |
|
3 |
<dl> |
|
5 | 4 |
<% issue_statuses.each do |issue_status| %> |
6 | 5 |
<% if issue_status.description.present? %> |
7 |
<dt><%= content_tag 'a', issue_status.name, :onclick => "selectIssueStatus('#{issue_status.id}'); return false;", :href => '#', :title => l(:text_select_apply_issue_status) %></dt>
|
|
6 |
<dt><%= link_to issue_status.name, '#', onclick: "selectIssueStatus('#{issue_status.id}'); return false;", title: l(:text_select_apply_issue_status) %></dt>
|
|
8 | 7 |
<dd><%= issue_status.description %></dd> |
9 | 8 |
<% end %> |
10 | 9 |
<% end %> |
11 |
</dl>
|
|
12 |
</div>
|
|
10 |
</dl> |
|
11 |
<% end %>
|
|
13 | 12 |
<% end %> |
14 | 13 |
<%= javascript_tag do %> |
15 | 14 |
function selectIssueStatus(id) { |
... | ... | |
17 | 16 |
target.attr("selected", false); |
18 | 17 |
target.find('option[value="' + id + '"]').prop('selected', true); |
19 | 18 |
target.trigger('change'); |
20 |
hideModal('#issue_statuses_description h3');
|
|
19 |
$('#issue_statuses_description').get(0).dialog_controller.hide();
|
|
21 | 20 |
} |
22 | 21 |
<% end %> |
app/views/issues/_trackers_description.html.erb | ||
---|---|---|
1 | 1 |
<% if trackers.any? {|t| t.description.present? } %> |
2 |
<div class="modal" id="trackers_description"> |
|
3 |
<h3 class="title"><%= l(:label_trackers_description) %></h3> |
|
4 |
<dl> |
|
2 |
<%= modal_dialog "trackers_description", l(:label_trackers_description), data: { controller: 'dialog' } do %> |
|
3 |
<dl> |
|
5 | 4 |
<% trackers.each do |tracker| %> |
6 | 5 |
<% if tracker.description.present? %> |
7 |
<dt><%= content_tag 'a', tracker.name, :onclick => "selectTracker('#{tracker.id}'); return false;", :href => '#', :title => l(:text_select_apply_tracker) %></dt>
|
|
6 |
<dt><%= link_to tracker.name, '#', onclick: "selectTracker('#{tracker.id}'); return false;", title: l(:text_select_apply_tracker) %></dt>
|
|
8 | 7 |
<dd><%= tracker.description %></dd> |
9 | 8 |
<% end %> |
10 | 9 |
<% end %> |
11 |
</dl>
|
|
12 |
</div>
|
|
10 |
</dl> |
|
11 |
<% end %>
|
|
13 | 12 |
<% end %> |
14 | 13 |
<%= javascript_tag do %> |
15 | 14 |
function selectTracker(id) { |
... | ... | |
17 | 16 |
target.attr("selected", false); |
18 | 17 |
target.find('option[value="' + id + '"]').prop('selected', true); |
19 | 18 |
target.trigger('change'); |
20 |
hideModal('#trackers_description h3');
|
|
19 |
$('#trackers_description').get(0).dialog_controller.hide();
|
|
21 | 20 |
} |
22 | 21 |
<% end %> |
app/views/issues/index.html.erb | ||
---|---|---|
35 | 35 |
<% end %> |
36 | 36 | |
37 | 37 |
<% other_formats_links do |f| %> |
38 |
<%= f.link_to_with_query_parameters 'Atom', :key => User.current.atom_key %>
|
|
39 |
<%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '350px'); return false;" %>
|
|
38 |
<%= f.link_to_with_query_parameters 'Atom', key: User.current.atom_key %>
|
|
39 |
<%= f.link_to_with_query_parameters 'CSV', {}, data: dialog_dispatcher('csv-export-options', '350px') %>
|
|
40 | 40 |
<%= f.link_to_with_query_parameters 'PDF' %> |
41 | 41 |
<% end %> |
42 | 42 | |
43 |
<div id="csv-export-options" style="display:none;"> |
|
44 |
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3> |
|
43 |
<% modal_dialog 'csv-export-options', l(:label_export_options, :export_format => 'CSV') do %> |
|
45 | 44 |
<%= form_tag(_project_issues_path(@project, :format => 'csv'), :method => :get, :id => 'csv-export-form') do %> |
46 | 45 |
<%= query_as_hidden_field_tags(@query) %> |
47 | 46 |
<%= hidden_field_tag('query_name', @query.name) %> |
... | ... | |
67 | 66 |
</p> |
68 | 67 |
<% end %> |
69 | 68 |
<p class="buttons"> |
70 |
<%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);", :data => { :disable_with => false } %>
|
|
71 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
69 |
<%= submit_tag l(:button_export), name: nil, data: { disable_with: false, action: 'dialog#hide' } %>
|
|
70 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
72 | 71 |
</p> |
73 | 72 |
<% end %> |
74 |
</div> |
|
75 | ||
73 |
<% end %> |
|
76 | 74 |
<% end %> |
77 | 75 |
<%= call_hook(:view_issues_index_bottom, { :issues => @issues, :project => @project, :query => @query }) %> |
78 | 76 |
app/views/layouts/base.html.erb | ||
---|---|---|
129 | 129 |
</div> |
130 | 130 | |
131 | 131 |
<div id="ajax-indicator" style="display:none;"><span><%= l(:label_loading) %></span></div> |
132 |
<div id="ajax-modal" style="display:none;"></div> |
|
133 | 132 | |
134 | 133 |
</div> |
135 | 134 |
<%= call_hook :view_layouts_base_body_bottom %> |
135 |
<div id="modal-backdrop"> |
|
136 |
<%= yield :modal %> |
|
137 |
</div> |
|
138 |
<div id="ajax-modal" data-controller="dialog-dispatcher"></div> |
|
139 |
<div id="sudo-modal" data-controller="dialog-dispatcher"></div> |
|
136 | 140 |
</body> |
137 | 141 |
</html> |
app/views/members/_new_modal.html.erb | ||
---|---|---|
1 |
<h3 class="title"><%= l(:label_member_new) %></h3> |
|
2 | ||
3 | 1 |
<%= form_for @member, :as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post do |f| %> |
4 | 2 |
<%= render :partial => 'new_form' %> |
5 | 3 |
<p class="buttons"> |
6 | 4 |
<%= submit_tag l(:button_add), :id => 'member-add-submit' %> |
7 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
5 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
8 | 6 |
</p> |
9 | 7 |
<% end %> |
app/views/members/create.js.erb | ||
---|---|---|
2 | 2 |
hideOnLoad(); |
3 | 3 | |
4 | 4 |
<% if @members.present? && @members.all? {|m| m.valid? } %> |
5 |
hideModal();
|
|
5 |
$('#ajax-modal').append('<template data-dialog-dispatcher-target="hide"></template>')
|
|
6 | 6 |
<% @members.each do |member| %> |
7 | 7 |
$("#member-<%= member.id %>").effect("highlight"); |
8 | 8 |
<% end %> |
app/views/members/new.js.erb | ||
---|---|---|
1 |
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'members/new_modal') %>'); |
|
2 |
showModal('ajax-modal', '90%'); |
|
1 |
<% html = remote_dialog(width: '90%', title: l(:label_member_new), partial: 'members/new_modal') %> |
|
2 |
$('#ajax-modal').html('<%= escape_javascript(html) %>'); |
app/views/principal_memberships/_new_modal.html.erb | ||
---|---|---|
1 |
<h3 class="title"><%= l(:label_add_projects) %></h3> |
|
2 | ||
3 | 1 |
<%= form_for :membership, :remote => true, :url => user_memberships_path(@principal), :method => :post do |f| %> |
4 | 2 |
<%= render :partial => 'new_form' %> |
5 | 3 |
<p class="buttons"> |
6 |
<%= submit_tag l(:button_add), :name => nil %>
|
|
7 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
4 |
<%= submit_tag l(:button_add), name: nil %>
|
|
5 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
8 | 6 |
</p> |
9 | 7 |
<% end %> |
app/views/principal_memberships/create.js.erb | ||
---|---|---|
2 | 2 |
hideOnLoad(); |
3 | 3 | |
4 | 4 |
<% if @members.present? && @members.all? {|m| m.persisted? } %> |
5 |
hideModal();
|
|
5 |
$('#ajax-modal').append('<template data-dialog-dispatcher-target="hide"></template>')
|
|
6 | 6 |
<% @members.each do |member| %> |
7 | 7 |
$("#member-<%= member.id %>").effect("highlight"); |
8 | 8 |
<% end %> |
app/views/principal_memberships/new.js.erb | ||
---|---|---|
1 |
<% html = remote_dialog(width: '700px', title: l(:label_add_projects), partial: 'principal_memberships/new_modal') %> |
|
1 | 2 |
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'principal_memberships/new_modal') %>'); |
2 |
showModal('ajax-modal', '700px'); |
|
3 | 3 | |
4 | 4 |
$('.projects-selection').on('click', 'input[type=checkbox]', function(e){ |
5 | 5 |
if (!$(this).is(':checked')) { |
app/views/projects/_list.html.erb | ||
---|---|---|
66 | 66 |
<% end -%> |
67 | 67 |
<span class="pagination"><%= pagination_links_full @entry_pages, @entry_count %></span> |
68 | 68 | |
69 |
<div id="csv-export-options" style="display:none;"> |
|
69 |
<div id="csv-export-options" style="display:none;" data-controller="dialog">
|
|
70 | 70 |
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3> |
71 | 71 |
<%= form_tag(projects_path(:format => 'csv'), :method => :get, :id => 'csv-export-form') do %> |
72 | 72 |
<%= query_as_hidden_field_tags(@query) %> |
... | ... | |
77 | 77 |
<%= export_csv_encoding_select_tag %> |
78 | 78 |
<%= export_csv_separator_select_tag %> |
79 | 79 |
<p class="buttons"> |
80 |
<%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);", :data => { :disable_with => false } %>
|
|
81 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
80 |
<%= submit_tag l(:button_export), name: nil, data: { disable_with: false, action: 'dialog#hide' } %>
|
|
81 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
82 | 82 |
</p> |
83 | 83 |
<% end %> |
84 | 84 |
</div> |
app/views/projects/index.html.erb | ||
---|---|---|
33 | 33 |
<% other_formats_links do |f| %> |
34 | 34 |
<%= f.link_to 'Atom', :url => {:key => User.current.atom_key} %> |
35 | 35 |
<% if @query.display_type == 'list' %> |
36 |
<%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '350px'); return false;" %>
|
|
36 |
<%= f.link_to_with_query_parameters 'CSV', {}, data: dialog_dispatcher('csv-export-options', '350px') %>
|
|
37 | 37 |
<% end %> |
38 | 38 |
<% end %> |
39 | 39 |
app/views/reports/_details.html.erb | ||
---|---|---|
37 | 37 |
</tfoot> |
38 | 38 |
</table> |
39 | 39 |
<% other_formats_links do |f| %> |
40 |
<%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
|
|
40 |
<%= f.link_to_with_query_parameters 'CSV', {}, data: dialog_dispatcher('csv-export-options', '330px') %>
|
|
41 | 41 |
<% end %> |
42 |
<div id="csv-export-options" style="display: none;"> |
|
43 |
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
|
|
42 | ||
43 |
<% modal_dialog "csv-export-options", l(:label_export_options, export_format: 'CSV') do %>
|
|
44 | 44 |
<%= form_tag(project_issues_report_details_path(@project, :detail => params[:detail], :format => 'csv'), :method => :get, :id => 'csv-export-form') do %> |
45 | 45 |
<%= export_csv_encoding_select_tag %> |
46 | 46 |
<%= export_csv_separator_select_tag %> |
47 | 47 |
<p class="buttons"> |
48 |
<%= submit_tag l(:button_export), :name => nil, :onclick => 'hideModal(this);', :data => {:disable_with => false} %>
|
|
49 |
<%= link_to_function l(:button_cancel), 'hideModal(this);' %>
|
|
48 |
<%= submit_tag l(:button_export), name: nil, data: { disable_with: false, action: 'dialog#hide' } %>
|
|
49 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
50 | 50 |
</p> |
51 | 51 |
<% end %> |
52 |
</div>
|
|
52 |
<% end %>
|
|
53 | 53 | |
54 | 54 |
<div class="issue-report-graph hide-when-print"> |
55 | 55 |
<canvas id="issues_by_<%= params[:detail] %>"></canvas> |
app/views/roles/permissions.html.erb | ||
---|---|---|
83 | 83 |
<p><%= submit_tag l(:button_save) %></p> |
84 | 84 |
<% end %> |
85 | 85 |
<% other_formats_links do |f| %> |
86 |
<%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
|
|
86 |
<%= f.link_to_with_query_parameters 'CSV', {}, data: dialog_dispatcher('csv-export-options', '330px') %>
|
|
87 | 87 |
<% end %> |
88 |
<div id="csv-export-options" style="display: none;"> |
|
89 |
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
|
|
88 | ||
89 |
<% modal_dialog 'csv-export-options', l(:label_export_options, export_format: 'CSV') do %>
|
|
90 | 90 |
<%= form_tag(permissions_roles_path(:format => 'csv'), :method => :get, :id => 'csv-export-form') do %> |
91 | 91 |
<%= export_csv_encoding_select_tag %> |
92 | 92 |
<%= export_csv_separator_select_tag %> |
93 | 93 |
<p class="buttons"> |
94 |
<%= submit_tag l(:button_export), :name => nil, :onclick => 'hideModal(this);', :data => {:disable_with => false} %>
|
|
95 |
<%= link_to_function l(:button_cancel), 'hideModal(this);' %>
|
|
94 |
<%= submit_tag l(:button_export), name: nil, data: { disable_with: false, action: 'dialog#hide' } %>
|
|
95 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
96 | 96 |
</p> |
97 | 97 |
<% end %> |
98 |
</div> |
|
98 |
<% end %> |
app/views/sudo_mode/_new_modal.html.erb | ||
---|---|---|
1 |
<h3 class="title"><%= l(:label_password_required) %></h3> |
|
2 | 1 |
<p class="nodata" style="font-size: 1em;"><%= t 'sudo_mode_new_info_html' %></p> |
3 | 2 |
<%= form_tag({}, remote: true) do %> |
4 | 3 | |
... | ... | |
14 | 13 |
</div> |
15 | 14 | |
16 | 15 |
<p class="buttons"> |
17 |
<%= submit_tag l(:button_submit), onclick: "hideModal(this);" %>
|
|
18 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
16 |
<%= submit_tag l(:button_submit), data: { action: 'dialog#hide' } %>
|
|
17 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
19 | 18 |
</p> |
20 | 19 |
<% end %> |
app/views/sudo_mode/new.js.erb | ||
---|---|---|
1 |
var sudo_modal = $('#sudo-modal').length ? $('#sudo-modal') : $("<div>", {id: "sudo-modal"}).appendTo($("body")); |
|
2 |
sudo_modal.hide().html('<%= escape_javascript render partial: 'sudo_mode/new_modal' %>');
|
|
3 |
showModal('sudo-modal', '400px');
|
|
1 |
<% html = remote_dialog(width: '400px', title: l(:label_password_required), partial: 'sudo_mode/new_modal') %> |
|
2 |
const sudo_modal = $('#sudo-modal').length ? $('#sudo-modal') : $("<div>", {id: "sudo-modal"}).appendTo($("body"));
|
|
3 |
sudo_modal.hide().html('<%= escape_javascript html %>');
|
|
4 | 4 |
$('#sudo_password').focus(); |
app/views/timelog/index.html.erb | ||
---|---|---|
29 | 29 |
<span class="pagination"><%= pagination_links_full @entry_pages, @entry_count %></span> |
30 | 30 | |
31 | 31 |
<% other_formats_links do |f| %> |
32 |
<%= f.link_to_with_query_parameters 'Atom', :key => User.current.atom_key %>
|
|
33 |
<%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
|
|
32 |
<%= f.link_to_with_query_parameters 'Atom', key: User.current.atom_key %>
|
|
33 |
<%= f.link_to_with_query_parameters 'CSV', {}, data: dialog_dispatcher('csv-export-options', '330px') %>
|
|
34 | 34 |
<% end %> |
35 | 35 | |
36 |
<div id="csv-export-options" style="display:none;"> |
|
37 |
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3> |
|
36 |
<% modal_dialog "csv-export-options", l(:label_export_options, export_format: 'CSV') do %> |
|
38 | 37 |
<%= form_tag(_time_entries_path(@project, nil, :format => 'csv'), :method => :get, :id => 'csv-export-form') do %> |
39 | 38 |
<%= query_as_hidden_field_tags @query %> |
40 | 39 |
<%= hidden_field_tag('query_name', @query.name) %> |
... | ... | |
55 | 54 |
<%= export_csv_encoding_select_tag %> |
56 | 55 |
<%= export_csv_separator_select_tag %> |
57 | 56 |
<p class="buttons"> |
58 |
<%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);", :data => { :disable_with => false } %>
|
|
59 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
57 |
<%= submit_tag l(:button_export), name: nil, data: { disable_with: false, action: 'dialog#hide' } %>
|
|
58 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
60 | 59 |
</p> |
61 | 60 |
<% end %> |
62 |
</div>
|
|
61 |
<% end %>
|
|
63 | 62 |
<% end %> |
64 | 63 |
<% end %> |
65 | 64 |
app/views/timelog/report.html.erb | ||
---|---|---|
66 | 66 |
</div> |
67 | 67 | |
68 | 68 |
<% other_formats_links do |f| %> |
69 |
<%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
|
|
69 |
<%= f.link_to_with_query_parameters 'CSV', {}, data: dialog_dispatcher('csv-export-options', '330px') %>
|
|
70 | 70 |
<% end %> |
71 | 71 |
<% end %> |
72 |
<div id="csv-export-options" style="display: none;"> |
|
73 |
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3> |
|
72 |
<% modal_dialog "csv-export-options", l(:label_export_options, export_format: 'CSV') do %> |
|
74 | 73 |
<%= export_csv_encoding_select_tag %> |
75 | 74 |
<%= export_csv_separator_select_tag %> |
76 | 75 |
<p class="buttons"> |
77 |
<%= submit_tag l(:button_export), :name => nil, :id => 'csv-export-button' %>
|
|
78 |
<%= submit_tag l(:button_cancel), :name => nil, :onclick => 'hideModal(this);', :type => 'button' %>
|
|
76 |
<%= submit_tag l(:button_export), name: nil, id: 'csv-export-button', data: { action: 'dialog#hide' } %>
|
|
77 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
79 | 78 |
</p> |
80 |
</div>
|
|
79 |
<% end %>
|
|
81 | 80 |
<% end %> |
82 | 81 |
<% end %> |
83 | 82 | |
... | ... | |
87 | 86 | |
88 | 87 |
<% html_title(@query.new_record? ? l(:label_spent_time) : @query.name, l(:label_report)) %> |
89 | 88 | |
90 | ||
91 | 89 |
<%= javascript_tag do %> |
92 | 90 |
$(document).ready(function(){ |
93 | 91 |
$('input#csv-export-button').click(function(){ |
94 | 92 |
$('form input#encoding').val($('select#encoding option:selected').val()); |
95 | 93 |
$('form#query_form').attr('action', '<%= _report_time_entries_path(@project, nil, :format => 'csv') %>').submit(); |
96 | 94 |
$('form#query_form').attr('action', '<%= _report_time_entries_path(@project, nil) %>'); |
97 |
hideModal(this); |
|
98 | 95 |
}); |
99 | 96 |
}); |
100 | 97 |
<% end %> |
app/views/users/index.html.erb | ||
---|---|---|
23 | 23 |
<span class="pagination"><%= pagination_links_full @user_pages, @user_count %></span> |
24 | 24 |
<% end %> |
25 | 25 |
<% other_formats_links do |f| %> |
26 |
<%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '350px'); return false;" %>
|
|
26 |
<%= f.link_to_with_query_parameters 'CSV', {}, data: dialog_dispatcher('csv-export-options', '350px') %>
|
|
27 | 27 |
<% end %> |
28 | 28 | |
29 |
<div id="csv-export-options" style="display:none;"> |
|
30 |
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3> |
|
29 |
<% modal_dialog "csv-export-options", l(:label_export_options, export_format: 'CSV') do %> |
|
31 | 30 |
<%= form_tag(users_path(format: 'csv'), method: :get, id: 'csv-export-form') do %> |
32 | 31 |
<%= query_as_hidden_field_tags(@query) %> |
33 | 32 |
<%= hidden_field_tag('query_name', @query.name) %> |
... | ... | |
48 | 47 |
<%= export_csv_encoding_select_tag %> |
49 | 48 |
<%= export_csv_separator_select_tag %> |
50 | 49 |
<p class="buttons"> |
51 |
<%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);", :data => { :disable_with => false } %>
|
|
52 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
50 |
<%= submit_tag l(:button_export), name: nil, data: { disable_with: false, action: 'dialog#hide' } %>
|
|
51 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
53 | 52 |
</p> |
54 | 53 |
<% end %> |
55 |
</div>
|
|
54 |
<% end %>
|
|
56 | 55 |
<% end %> |
57 | 56 | |
58 | 57 |
<% content_for :sidebar do %> |
app/views/versions/_new_modal.html.erb | ||
---|---|---|
1 |
<h3 class="title"><%=l(:label_version_new)%></h3> |
|
2 | ||
3 | 1 |
<%= labelled_form_for @version, :url => project_versions_path(@project), :html => {:multipart => true}, :remote => true do |f| %> |
4 | 2 |
<%= render :partial => 'versions/form', :locals => { :f => f } %> |
5 | 3 |
<p class="buttons"> |
6 |
<%= submit_tag l(:button_create), :name => nil %>
|
|
7 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
4 |
<%= submit_tag l(:button_create), name: nil %>
|
|
5 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
8 | 6 |
</p> |
9 | 7 |
<% end %> |
app/views/versions/create.js.erb | ||
---|---|---|
1 |
hideModal(); |
|
1 |
$('#ajax-modal').append('<template data-dialog-dispatcher-target="hide"></template>') |
|
2 | 2 |
<% select = content_tag('select', content_tag('option') + version_options_for_select(@project.shared_versions.open, @version), :id => 'issue_fixed_version_id', :name => 'issue[fixed_version_id]') %> |
3 | 3 |
$('#issue_fixed_version_id').replaceWith('<%= escape_javascript(select) %>'); |
app/views/versions/new.js.erb | ||
---|---|---|
1 |
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'versions/new_modal') %>'); |
|
2 |
showModal('ajax-modal', '600px'); |
|
1 |
<% html = remote_dialog(width: '600px', title: l(:label_version_new), partial: 'versions/new_modal') %> |
|
2 |
$('#ajax-modal').html('<%= escape_javascript(html) %>'); |
app/views/watchers/_new.html.erb | ||
---|---|---|
1 |
<% |
|
2 |
title = |
|
3 |
if watchables.present? |
|
4 |
l(:"permission_add_#{watchables.first.class.name.underscore}_watchers") |
|
5 |
else |
|
6 |
l(:permission_add_issue_watchers) |
|
7 |
end |
|
8 |
-%> |
|
9 |
<h3 class="title"><%= title %></h3> |
|
10 | ||
11 | 1 |
<%= form_tag(watchables.present? ? watchers_path : watchers_append_path, |
12 | 2 |
:remote => true, |
13 | 3 |
:method => :post, |
... | ... | |
42 | 32 |
</div> |
43 | 33 | |
44 | 34 |
<p class="buttons"> |
45 |
<%= submit_tag l(:button_add), :name => nil, :onclick => "hideModal(this);" %>
|
|
46 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
35 |
<%= submit_tag l(:button_add), name: nil, data: { action: 'dialog#hide' } %>
|
|
36 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
47 | 37 |
</p> |
48 | 38 |
<% end %> |
app/views/watchers/new.js.erb | ||
---|---|---|
1 |
$('#ajax-modal').html( |
|
2 |
'<%= escape_javascript( |
|
3 |
render(:partial => 'watchers/new', |
|
4 |
:locals => {:watchables => @watchables, :users => @users}) |
|
5 |
) %>'); |
|
6 |
showModal('ajax-modal', '400px'); |
|
7 |
$('#ajax-modal').addClass('new-watcher'); |
|
1 |
<% title = if @watchables.present? |
|
2 |
l(:"permission_add_#{@watchables.first.class.name.underscore}_watchers") |
|
3 |
else |
|
4 |
l(:permission_add_issue_watchers) |
|
5 |
end -%> |
|
6 |
<% html = remote_dialog(width: '400px', title: title, partial: 'watchers/new', locals: {watchables: @watchables, users: @users}) %> |
|
7 |
$('#ajax-modal').html('<%= escape_javascript html %>'); |
|
8 |
$('#ajax-modal').addClass('new-watcherwatcher'); |
app/views/wiki/_new_modal.html.erb | ||
---|---|---|
1 |
<h3 class="title"><%=l(:label_wiki_page_new)%></h3> |
|
2 | ||
3 | 1 |
<%= labelled_form_for :page, @page, |
4 | 2 |
:url => new_project_wiki_page_path(@project), |
5 | 3 |
:method => 'post', |
... | ... | |
24 | 22 | |
25 | 23 |
<p class="buttons"> |
26 | 24 |
<%= submit_tag l(:label_next), :name => nil %> |
27 |
<%= link_to_function l(:button_cancel), "hideModal(this);" %>
|
|
25 |
<%= link_to l(:button_cancel), '#', data: { action: 'dialog#cancel' } %>
|
|
28 | 26 |
</p> |
29 | 27 |
<% end %> |
app/views/wiki/new.js.erb | ||
---|---|---|
1 |
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'wiki/new_modal') %>'); |
|
2 |
showModal('ajax-modal', '600px'); |
|
1 |
<% html = remote_dialog(width: '600px', title: l(:label_wiki_page_new), partial: 'wiki/new_modal') %> |
|
2 |
$('#ajax-modal').html('<%= escape_javascript(html) %>'); |
config/locales/ar.yml | ||
---|---|---|
850 | 850 |
button_show: إظهار |
851 | 851 |
button_edit_section: تعديل هذا الجزء |
852 | 852 |
button_export: تصدير لملف |
853 |
button_close_dialog: Close |
|
853 | 854 | |
854 | 855 |
status_active: نشيط |
855 | 856 |
status_registered: مسجل |
config/locales/az.yml | ||
---|---|---|
259 | 259 |
button_update: Yeniləmək |
260 | 260 |
button_view: Baxmaq |
261 | 261 |
button_watch: İzləmək |
262 |
button_close_dialog: Close |
|
262 | 263 | |
263 | 264 |
default_activity_design: Layihənin hazırlanması |
264 | 265 |
default_activity_development: Hazırlanma prosesi |
config/locales/bg.yml | ||
---|---|---|
1219 | 1219 |
button_delete_object: Изтриване %{object_name} |
1220 | 1220 |
button_create_and_follow: Създаване и продължаване |
1221 | 1221 |
button_apply_issues_filter: Прилагане на филтъра |
1222 |
button_close_dialog: Close |
|
1222 | 1223 | |
1223 | 1224 |
status_active: активен |
1224 | 1225 |
status_registered: регистриран |
config/locales/bs.yml | ||
---|---|---|
718 | 718 |
button_watch: Posmatraj |
719 | 719 |
button_configure: Konfiguracija |
720 | 720 |
button_quote: Citat |
721 |
button_close_dialog: Close |
|
721 | 722 | |
722 | 723 |
status_active: aktivan |
723 | 724 |
status_registered: registrovan |
config/locales/ca.yml | ||
---|---|---|
798 | 798 |
button_configure: "Configurar" |
799 | 799 |
button_quote: "Citar" |
800 | 800 |
button_show: "Mostrar" |
801 |
button_close_dialog: Close |
|
801 | 802 | |
802 | 803 |
status_active: "actiu" |
803 | 804 |
status_registered: "registrat" |
config/locales/cs.yml | ||
---|---|---|
813 | 813 |
button_configure: Konfigurovat |
814 | 814 |
button_quote: Citovat |
815 | 815 |
button_show: Zobrazit |
816 |
button_close_dialog: Close |
|
816 | 817 | |
817 | 818 |
status_active: aktivní |
818 | 819 |
status_registered: registrovaný |
config/locales/da.yml | ||
---|---|---|
635 | 635 |
button_annotate: Annotér |
636 | 636 |
button_update: Opdatér |
637 | 637 |
button_configure: Konfigurér |
638 |
button_close_dialog: Close |
|
638 | 639 | |
639 | 640 |
status_active: aktiv |
640 | 641 |
status_registered: registreret |
config/locales/de.yml | ||
---|---|---|
210 | 210 |
button_view: Anzeigen |
211 | 211 |
button_watch: Beobachten |
212 | 212 |
button_actions: Aktionen |
213 |
button_close_dialog: Close |
|
213 | 214 | |
214 | 215 |
default_activity_design: Design |
215 | 216 |
default_activity_development: Entwicklung |
config/locales/el.yml | ||
---|---|---|
730 | 730 |
button_update: Ενημέρωση |
731 | 731 |
button_configure: Ρύθμιση |
732 | 732 |
button_quote: Παράθεση |
733 |
button_close_dialog: Close |
|
733 | 734 | |
734 | 735 |
status_active: ενεργό(ς)/ή |
735 | 736 |
status_registered: εγεγγραμμένο(ς)/η |
config/locales/en-GB.yml | ||
---|---|---|
826 | 826 |
button_configure: Configure |
827 | 827 |
button_quote: Quote |
828 | 828 |
button_show: Show |
829 |
button_close_dialog: Close |
|
829 | 830 | |
830 | 831 |
status_active: active |
831 | 832 |
status_registered: registered |
config/locales/en.yml | ||
---|---|---|
1221 | 1221 |
button_delete_object: "Delete %{object_name}" |
1222 | 1222 |
button_create_and_follow: Create and follow |
1223 | 1223 |
button_apply_issues_filter: Apply issues filter |
1224 |
button_close_dialog: Close |
|
1224 | 1225 | |
1225 | 1226 |
status_active: active |
1226 | 1227 |
status_registered: registered |
config/locales/es-PA.yml | ||
---|---|---|
206 | 206 |
button_change_password: Cambiar contraseña |
207 | 207 |
button_check_all: Seleccionar todo |
208 | 208 |
button_clear: Anular |
209 |
button_close_dialog: Close |
|
209 | 210 |
button_configure: Configurar |
210 | 211 |
button_copy: Copiar |
211 | 212 |
button_create: Crear |
... | ... | |
233 | 234 |
button_update: Actualizar |
234 | 235 |
button_view: Ver |
235 | 236 |
button_watch: Monitorizar |
237 | ||
236 | 238 |
default_activity_design: Diseño |
237 | 239 |
default_activity_development: Desarrollo |
238 | 240 |
default_doc_category_tech: Documentación técnica |
config/locales/es.yml | ||
---|---|---|
204 | 204 |
button_change_password: Cambiar contraseña |
205 | 205 |
button_check_all: Seleccionar todo |
206 | 206 |
button_clear: Anular |
207 |
button_close_dialog: Close |
|
207 | 208 |
button_configure: Configurar |
208 | 209 |
button_copy: Copiar |
209 | 210 |
button_create: Crear |
config/locales/et.yml | ||
---|---|---|
886 | 886 |
button_edit_section: "Muuda seda sektsiooni" |
887 | 887 |
button_export: "Ekspordi" |
888 | 888 |
button_delete_my_account: "Kustuta oma konto" |
889 |
button_close_dialog: Close |
|
889 | 890 | |
890 | 891 |
status_active: "aktiivne" |
891 | 892 |
status_registered: "registreeritud" |
config/locales/eu.yml | ||
---|---|---|
776 | 776 |
button_configure: Konfiguratu |
777 | 777 |
button_quote: Aipatu |
778 | 778 |
button_show: Ikusi |
779 |
button_close_dialog: Close |
|
779 | 780 | |
780 | 781 |
status_active: gaituta |
781 | 782 |
status_registered: izena emanda |
config/locales/fa.yml | ||
---|---|---|
1197 | 1197 |
button_edit_object: ویرایش %{object_name} |
1198 | 1198 |
button_delete_object: حذف %{object_name} |
1199 | 1199 |
button_create_and_follow: ساخت و برگشت |
1200 |
button_close_dialog: Close |
|
1200 | 1201 | |
1201 | 1202 |
status_active: فعال |
1202 | 1203 |
status_registered: ثبتنامشده |
config/locales/fi.yml | ||
---|---|---|
612 | 612 |
button_copy: Kopioi |
613 | 613 |
button_annotate: Lisää selitys |
614 | 614 |
button_update: Päivitä |
615 |
button_close_dialog: Close |
|
615 | 616 | |
616 | 617 |
status_active: aktiivinen |
617 | 618 |
status_registered: rekisteröity |
config/locales/fr.yml | ||
---|---|---|
1080 | 1080 |
button_reopen: Réouvrir |
1081 | 1081 |
button_import: Importer |
1082 | 1082 |
button_filter: Filtrer |
1083 |
button_close_dialog: Close |
|
1083 | 1084 | |
1084 | 1085 |
status_active: actif |
1085 | 1086 |
status_registered: enregistré |
config/locales/gl.yml | ||
---|---|---|
181 | 181 |
button_change_password: "Cambiar o contrasinal" |
182 | 182 |
button_check_all: "Seleccionalo todo" |
183 | 183 |
button_clear: Anular |
184 |
button_close_dialog: Close |
|
184 | 185 |
button_configure: Configurar |
185 | 186 |
button_copy: Copiar |
186 | 187 |
button_create: Crear |
config/locales/he.yml | ||
---|---|---|
804 | 804 |
button_configure: אפשרויות |
805 | 805 |
button_quote: צטט |
806 | 806 |
button_show: הצג |
807 |
button_close_dialog: Close |
|
807 | 808 | |
808 | 809 |
status_active: פעיל |
809 | 810 |
status_registered: רשום |
config/locales/hr.yml | ||
---|---|---|
766 | 766 |
button_configure: Konfiguracija |
767 | 767 |
button_quote: Navod |
768 | 768 |
button_show: Show |
769 |
button_close_dialog: Close |
|
769 | 770 | |
770 | 771 |
status_active: aktivan |
771 | 772 |
status_registered: Registriran |
config/locales/hu.yml | ||
---|---|---|
653 | 653 |
button_annotate: Jegyzetel |
654 | 654 |
button_update: Módosít |
655 | 655 |
button_configure: Konfigurál |
656 |
button_close_dialog: Close |
|
656 | 657 | |
657 | 658 |
status_active: aktív |
658 | 659 |
status_registered: regisztrált |
config/locales/id.yml | ||
---|---|---|
748 | 748 |
button_update: Perbarui |
749 | 749 |
button_configure: Konfigur |
750 | 750 |
button_quote: Kutip |
751 |
button_close_dialog: Close |
|
751 | 752 | |
752 | 753 |
status_active: aktif |
753 | 754 |
status_registered: terdaftar |
config/locales/it.yml | ||
---|---|---|
1225 | 1225 |
button_delete_object: "Elimina %{object_name}" |
1226 | 1226 |
button_create_and_follow: Crea e segui |
1227 | 1227 |
button_apply_issues_filter: Applica filtro segnalazioni |
1228 |
button_close_dialog: Close |
|
1228 | 1229 | |
1229 | 1230 |
status_active: attivo |
1230 | 1231 |
status_registered: registrato |
config/locales/ja.yml | ||
---|---|---|
863 | 863 |
button_save_object: "%{object_name}を保存" |
864 | 864 |
button_edit_object: "%{object_name}を編集" |
865 | 865 |
button_delete_object: "%{object_name}を削除" |
866 |
button_close_dialog: 閉じる |
|
866 | 867 | |
867 | 868 |
status_active: 有効 |
868 | 869 |
status_registered: 登録 |
config/locales/ko.yml | ||
---|---|---|
767 | 767 |
button_update: 업데이트 |
768 | 768 |
button_configure: 설정 |
769 | 769 |
button_quote: 댓글달기 |
770 |
button_close_dialog: Close |
|
770 | 771 | |
771 | 772 |
status_active: 사용중 |
772 | 773 |
status_registered: 등록대기 |
config/locales/lt.yml | ||
---|---|---|
1028 | 1028 |
button_close: Uždaryti |
1029 | 1029 |
button_reopen: Atidaryti iš naujo |
1030 | 1030 |
button_import: Importuoti |
1031 |
button_close_dialog: Close |
|
1031 | 1032 | |
1032 | 1033 |
status_active: aktyvus |
1033 | 1034 |
status_registered: užregistruotas |
config/locales/lv.yml | ||
---|---|---|
773 | 773 |
button_configure: Konfigurēt |
774 | 774 |
button_quote: Citāts |
775 | 775 |
button_show: Rādīt |
776 |
button_close_dialog: Close |
|
776 | 777 | |
777 | 778 |
status_active: aktīvs |
778 | 779 |
status_registered: reģistrēts |
config/locales/mk.yml | ||
---|---|---|
794 | 794 |
button_configure: Конфигурирај |
795 | 795 |
button_quote: Цитирај |
796 | 796 |
button_show: Show |
797 |
button_close_dialog: Close |
|
797 | 798 | |
798 | 799 |
status_active: активни |
799 | 800 |
status_registered: регистрирани |
config/locales/mn.yml | ||
---|---|---|
779 | 779 |
button_configure: Тохируулах |
780 | 780 |
button_quote: Ишлэл |
781 | 781 |
button_show: Үзэх |
782 |
button_close_dialog: Close |
|
782 | 783 | |
783 | 784 |
status_active: идэвхтэй |
784 | 785 |
status_registered: бүртгүүлсэн |
config/locales/nl.yml | ||
---|---|---|
150 | 150 |
button_change_password: Wachtwoord wijzigen |
151 | 151 |
button_check_all: Alles selecteren |
152 | 152 |
button_clear: Leegmaken |
153 |
button_close_dialog: Close |
|
153 | 154 |
button_configure: Configureren |
154 | 155 |
button_copy: Kopiëren |
155 | 156 |
button_create: Aanmaken |
config/locales/no.yml | ||
---|---|---|
625 | 625 |
button_annotate: Notér |
626 | 626 |
button_update: Oppdater |
627 | 627 |
button_configure: Konfigurer |
628 |
button_close_dialog: Close |
|
628 | 629 | |
629 | 630 |
status_active: aktiv |
630 | 631 |
status_registered: registrert |
config/locales/pl.yml | ||
---|---|---|
1216 | 1216 |
button_delete_object: "Usuń %{object_name}" |
1217 | 1217 |
button_create_and_follow: Utwórz i przejdź |
1218 | 1218 |
button_apply_issues_filter: Zastosuj filtr na liście zagadnień |
1219 |
button_close_dialog: Close |
|
1219 | 1220 | |
1220 | 1221 |
status_active: aktywny |
1221 | 1222 |
status_registered: zarejestrowany |
config/locales/pt-BR.yml | ||
---|---|---|
670 | 670 |
button_update: Atualizar |
671 | 671 |
button_configure: Configurar |
672 | 672 |
button_quote: Responder |
673 |
button_close_dialog: Close |
|
673 | 674 | |
674 | 675 |
status_active: ativo |
675 | 676 |
status_registered: registrado |
config/locales/pt.yml | ||
---|---|---|
654 | 654 |
button_update: Atualizar |
655 | 655 |
button_configure: Configurar |
656 | 656 |
button_quote: Citar |
657 |
button_close_dialog: Close |
|
657 | 658 | |
658 | 659 |
status_active: ativo |
659 | 660 |
status_registered: registado |
config/locales/ro.yml | ||
---|---|---|
708 | 708 |
button_update: Actualizează |
709 | 709 |
button_configure: Configurează |
710 | 710 |
button_quote: Citează |
711 |
button_close_dialog: Close |
|
711 | 712 | |
712 | 713 |
status_active: activ |
713 | 714 |
status_registered: înregistrat |
config/locales/ru.yml | ||
---|---|---|
269 | 269 |
button_update: Обновить |
270 | 270 |
button_view: Просмотреть |
271 | 271 |
button_watch: Следить |
272 |
button_close_dialog: Close |
|
272 | 273 | |
273 | 274 |
default_activity_design: Проектирование |
274 | 275 |
default_activity_development: Разработка |
config/locales/sk.yml | ||
---|---|---|
628 | 628 |
button_annotate: Komentovať |
629 | 629 |
button_update: Aktualizovať |
630 | 630 |
button_configure: Konfigurovať |
631 |
button_close_dialog: Close |
|
631 | 632 | |
632 | 633 |
status_active: aktívny |
633 | 634 |
status_registered: zaregistrovaný |
config/locales/sl.yml | ||
---|---|---|
698 | 698 |
button_update: Posodobi |
699 | 699 |
button_configure: Konfiguriraj |
700 | 700 |
button_quote: Citiraj |
701 |
button_close_dialog: Close |
|
701 | 702 | |
702 | 703 |
status_active: aktivni |
703 | 704 |
status_registered: registriran |
config/locales/sq.yml | ||
---|---|---|
1151 | 1151 |
button_project_bookmark_delete: Hiqe faqerojtësin |
1152 | 1152 |
button_filter: Filtër |
1153 | 1153 |
button_actions: Veprime |
1154 |
button_close_dialog: Close |
|
1154 | 1155 | |
1155 | 1156 |
status_active: aktive |
1156 | 1157 |
status_registered: e regjistruar |
config/locales/sr-YU.yml | ||
---|---|---|
794 | 794 |
button_configure: Podesi |
795 | 795 |
button_quote: Pod navodnicima |
796 | 796 |
button_show: Prikaži |
797 |
button_close_dialog: Close |
|
797 | 798 |