Merge remote-tracking branch 'origin/dev' into feature/grid_my_page

pull/6834/head
Jens Ulferts 6 years ago
commit 10a5d253aa
No known key found for this signature in database
GPG Key ID: 3CAA4B1182CF5308
  1. 7
      Dockerfile
  2. 17
      app/assets/stylesheets/content/_advanced_filters.sass
  3. 14
      app/assets/stylesheets/content/_collapsible_section.lsg
  4. 8
      app/assets/stylesheets/content/_context_menu.sass
  5. 12
      app/assets/stylesheets/content/_forms.sass
  6. 4
      app/assets/stylesheets/content/_hide_section.sass
  7. 1
      app/assets/stylesheets/content/_index.sass
  8. 3
      app/assets/stylesheets/content/_projects_list.sass
  9. 7
      app/assets/stylesheets/content/_simple_filters.sass
  10. 38
      app/assets/stylesheets/content/_version.sass
  11. 24
      app/assets/stylesheets/content/work_packages/single_view/_single_view.sass
  12. 6
      app/assets/stylesheets/content/work_packages/tabs/_relations.sass
  13. 16
      app/assets/stylesheets/layout/_top_menu.sass
  14. 19
      app/assets/stylesheets/layout/_zen_mode.sass
  15. 4
      app/assets/stylesheets/layout/work_packages/_query_menu.sass
  16. 3
      app/assets/stylesheets/layout/work_packages/_table.sass
  17. 20
      app/cells/custom_actions/row_cell.rb
  18. 12
      app/cells/enumerations/row_cell.rb
  19. 12
      app/cells/statuses/row_cell.rb
  20. 9
      app/controllers/wiki_controller.rb
  21. 46
      app/helpers/augmenting_helper.rb
  22. 9
      app/models/token/expirable_token.rb
  23. 7
      app/views/attribute_help_texts/_tab.html.erb
  24. 6
      app/views/augmented/_collapsible_section.html.erb
  25. 7
      app/views/auth_sources/index.html.erb
  26. 75
      app/views/custom_actions/_form.html.erb
  27. 5
      app/views/custom_fields/_custom_options.html.erb
  28. 7
      app/views/custom_fields/_tab.html.erb
  29. 5
      app/views/enterprises/_current.html.erb
  30. 45
      app/views/enterprises/_form.html.erb
  31. 14
      app/views/enterprises/show.html.erb
  32. 7
      app/views/groups/_users_table.html.erb
  33. 10
      app/views/groups/index.html.erb
  34. 2
      app/views/layouts/angular.html.erb
  35. 6
      app/views/my/blocks/_timelog.html.erb
  36. 2
      app/views/my/page.html.erb
  37. 11
      app/views/project_settings/_boards.html.erb
  38. 11
      app/views/project_settings/_categories.html.erb
  39. 10
      app/views/project_settings/_versions.html.erb
  40. 2
      app/views/projects/filters/_form.html.erb
  41. 7
      app/views/roles/index.html.erb
  42. 8
      app/views/settings/_repositories.html.erb
  43. 11
      app/views/types/index.html.erb
  44. 6
      app/views/users/_memberships.html.erb
  45. 2
      app/views/users/index.html.erb
  46. 2
      app/views/versions/_overview.html.erb
  47. 95
      app/views/versions/show.html.erb
  48. 19
      app/views/work_packages/reports/_report_category.html.erb
  49. 26
      app/views/work_packages/reports/report_details.html.erb
  50. 57
      app/views/workflows/edit.html.erb
  51. 6
      config/locales/crowdin/de.yml
  52. 2
      config/locales/crowdin/ja.yml
  53. 4
      config/locales/crowdin/js-af.yml
  54. 4
      config/locales/crowdin/js-ar.yml
  55. 4
      config/locales/crowdin/js-az.yml
  56. 4
      config/locales/crowdin/js-bg.yml
  57. 4
      config/locales/crowdin/js-ca.yml
  58. 4
      config/locales/crowdin/js-cs.yml
  59. 4
      config/locales/crowdin/js-da.yml
  60. 10
      config/locales/crowdin/js-de.yml
  61. 4
      config/locales/crowdin/js-es.yml
  62. 4
      config/locales/crowdin/js-et.yml
  63. 4
      config/locales/crowdin/js-fa.yml
  64. 4
      config/locales/crowdin/js-fi.yml
  65. 4
      config/locales/crowdin/js-fil.yml
  66. 4
      config/locales/crowdin/js-fr.yml
  67. 4
      config/locales/crowdin/js-he.yml
  68. 4
      config/locales/crowdin/js-hi.yml
  69. 4
      config/locales/crowdin/js-hr.yml
  70. 4
      config/locales/crowdin/js-hu.yml
  71. 4
      config/locales/crowdin/js-id.yml
  72. 4
      config/locales/crowdin/js-it.yml
  73. 4
      config/locales/crowdin/js-ja.yml
  74. 4
      config/locales/crowdin/js-ko.yml
  75. 3
      config/locales/crowdin/js-lol.yml
  76. 4
      config/locales/crowdin/js-lt.yml
  77. 4
      config/locales/crowdin/js-lv.yml
  78. 4
      config/locales/crowdin/js-nl.yml
  79. 4
      config/locales/crowdin/js-no.yml
  80. 4
      config/locales/crowdin/js-pl.yml
  81. 4
      config/locales/crowdin/js-pt-BR.yml
  82. 4
      config/locales/crowdin/js-pt.yml
  83. 4
      config/locales/crowdin/js-ro.yml
  84. 60
      config/locales/crowdin/js-ru.yml
  85. 4
      config/locales/crowdin/js-sk.yml
  86. 4
      config/locales/crowdin/js-sv-SE.yml
  87. 4
      config/locales/crowdin/js-th.yml
  88. 4
      config/locales/crowdin/js-tr.yml
  89. 4
      config/locales/crowdin/js-uk.yml
  90. 4
      config/locales/crowdin/js-vi.yml
  91. 4
      config/locales/crowdin/js-zh-TW.yml
  92. 4
      config/locales/crowdin/js-zh.yml
  93. 3
      config/locales/js-en.yml
  94. 33
      config/puma.rb
  95. 5
      docs/api/apiv3/endpoints/time_entries.apib
  96. 2
      frontend/legacy/app/components/autocomplete-select-decoration/autocomplete-select-decoration.component.ts
  97. 11
      frontend/legacy/app/components/collapsible-section/collapsible-section.directive.html
  98. 4
      frontend/legacy/app/components/type-configuration/group-edit-in-place.directive.ts
  99. 8
      frontend/legacy/app/components/type-configuration/type-configuration.controller.ts
  100. 4
      frontend/legacy/typings/open-project-legacy.typings.d.ts
  101. Some files were not shown because too many files have changed in this diff Show More

@ -47,6 +47,13 @@ COPY . /usr/src/app
RUN cp docker/Procfile .
RUN sed -i "s|Rails.groups(:opf_plugins)|Rails.groups(:opf_plugins, :docker)|" config/application.rb
# Ensure we can write in /tmp/op_uploaded_files (cf. #29112)
RUN mkdir -p /tmp/op_uploaded_files/
RUN chown -R $APP_USER:$APP_USER /tmp/op_uploaded_files/
# Allow uploading avatars w/ postgres
RUN chown -R $APP_USER:$APP_USER $APP_DATA
# Re-use packager database.yml
COPY packaging/conf/database.yml ./config/database.yml

@ -28,7 +28,7 @@
.advanced-filters--container
@extend %filters--container
padding: rem-calc(10px)
padding: 1rem
max-height: 50vh
overflow-y: auto
position: relative
@ -47,11 +47,11 @@
list-style-type: none
margin: 20px 0 0 0
> li
> li:not(.advanced-filters--controls)
display: grid
// Filters will not span the whole width,
// but have an orientation to the left side
grid-template-columns: 20% 20% 25%
grid-template-columns: 20% 20% 25% 50px
grid-gap: 10px
align-items: center
margin-bottom: 10px
@ -89,7 +89,6 @@
@extend .advanced-filters--affix, .tooltip--right
.advanced-filters--remove-filter
grid-column: -1
text-align: right
a
@ -117,7 +116,7 @@
.advanced-filters--spacer,
.advanced-filters--filter
&.hidden
display: none
display: none !important
fieldset#date-range p
@ -129,9 +128,15 @@ fieldset#date-range p
grid-gap: 0 10px
.advanced-filters--filter-name,
.advanced-filters--add-filter-label
.advanced-filters--add-filter-label,
.advanced-filters--add-filter-value
// Span over entire width
grid-column: 1 / -1
.advanced-filters--remove-filter
// Align at the end of the container
grid-column: -1
.advanced-filters--filter-operator,
.advanced-filters--filter-value
grid-column: span 2

@ -1,22 +1,20 @@
# Collapsible section
```
<collapsible-section initially-expanded="true"
id="my-expanded-section"
<collapsible-section-augment initially-expanded="true"
section-title="My section title">
<div>
</collapsible-section-augment>
<div class="collapsible-section-augment--body" hidden>
<p><strong>Initially expanded</strong></p>
</div>
</collapsible-section>
```
```
<collapsible-section id="my-closed-section"
section-title="My closed section title">
<div>
<collapsible-section-augment section-title="My closed section title">
</collapsible-section-augment>
<div class="collapsible-section-augment--body" hidden>
<p><strong>Initially closed</strong></p>
</div>
</collapsible-section>

@ -34,6 +34,14 @@
height: 100%
display: none
// Disable pointer events on this element
// since it spans the entire body
// and EDGE doesn't like it.
pointer-events: none
.dropdown
pointer-events: initial
#work-package-context-menu, #column-context-menu
&.action-menu
position: absolute

@ -300,6 +300,9 @@ fieldset.form--fieldset
font-size: 1rem
font-style: italic
line-height: 1.8
a:hover
text-decoration: none
.form--fieldset-control-container
padding: 0 0.25rem
@ -716,11 +719,14 @@ input[readonly].-clickable
.form--grouping-row
@include grid-block(10)
align-items: center
align-items: baseline
.select2-container
margin-bottom: 0
.form--field-instructions
margin-left: 0px
.form--grouping-row + .form--grouping-row
@include grid-offset(2)
@ -816,7 +822,9 @@ input[readonly].-clickable
clear: both
line-height: $base-line-height
padding: 0 2rem 0 0
@include text-shortener
&:not(.-no-ellipsis)
@include text-shortener
& > .form--check-box-container
display: block

@ -28,10 +28,14 @@
hide-section
.form--field
flex-wrap: nowrap
padding: 0.5rem 0
&:hover
background-color: #f8f8f8
.form--field-container
flex-shrink: 1
.form--selected-value--container
&:hover
@include varprop(background-color, body-background)

@ -73,6 +73,7 @@
@import content/tooltip
@import content/grid
@import content/resizer
@import content/version
@import content/menus/_project_autocompletion
@import content/editor/index

@ -80,10 +80,7 @@ form.project-filters
max-width: 10rem
.advanced-filters--controls
margin-left: 1rem
margin-right: 1rem
margin-top: 1rem
margin-bottom: 1rem
.projects-table--hierarchy-icon
display: none

@ -51,6 +51,11 @@ $filters--border-color: $gray !default
.simple-filter--trailing-labels
@extend %filters-grid
grid-column: 1 / -1
> .-trailing-label.form--field
grid-column: 1 / -1
margin-bottom: 0
&.collapsed
display: none
@ -80,7 +85,7 @@ $filters--border-color: $gray !default
.simple-filters--controls
grid-column: 1 / -1
margin-top: 10px
margin-top: 1rem
.simple-filters--filter-name
@include text-shortener

@ -0,0 +1,38 @@
//-- copyright
// OpenProject is a project management system.
// Copyright (C) 2012-2018 the OpenProject Foundation (OPF)
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License version 3.
//
// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
// Copyright (C) 2006-2017 Jean-Philippe Lang
// Copyright (C) 2010-2013 the ChiliProject Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// See docs/COPYRIGHT.rdoc for more details.
//++
.controller-versions
.-grid
display: grid
grid-template-columns: repeat(auto-fit, minmax(50%, 1fr))
grid-template-rows: repeat(auto-fit, minmax(250px, 1fr))
@media only screen and (max-width: 679px)
.-grid
grid-template-columns: repeat(auto-fit, minmax(100%, 1fr))

@ -79,14 +79,6 @@
textarea
resize: vertical
.panel-toggler .button
margin-right: 0
.report-category-actions
margin-top: -28px
width: 100%
text-align: right
.detail-panel-description
margin: 0
line-height: 18px
@ -274,20 +266,8 @@ i
&.-wrapped
flex-wrap: wrap
.work-packages--info-row
order: -1
flex-basis: 100%
margin-bottom: 0.5rem
wp-status-button
// In case that there is no attribute help text, the status button needs to increase.
// This is a heuristic based on the current DOM structure.
&:nth-last-child(3)
flex-grow: 2
attribute-help-text
// Take care that the help text is next to the button and the action buttons are still at the right side
flex-grow: 2
margin-bottom: 0.5rem
.work-packages--info-row,
attribute-help-text,
wp-custom-action
margin-bottom: 0.5rem

@ -147,3 +147,9 @@
// To allow results indicator to overflow it
.wp-relations-create--form .grid-content
overflow-y: visible
.detail-panel--relations
.panel-toggler .icon-small
height: 18px
display: inline-block
vertical-align: middle

@ -29,6 +29,13 @@
$hamburger-right: -3px
$hamburger-width: 50px
%top-menu-hover-styles
@include varprop(background, header-item-bg-hover-color)
@include varprop(color, header-item-font-hover-color)
@include varprop(border-bottom-width, header-border-bottom-width)
@include varprop(border-bottom-color, header-border-bottom-color)
border-bottom-style: solid
#logo
width: 230px
@include varprop(height, header-height)
@ -82,8 +89,7 @@ $hamburger-width: 50px
padding: 0 15px
> a:hover
@include varprop(background, header-item-bg-hover-color)
@include varprop(color, header-item-font-hover-color)
@extend %top-menu-hover-styles
> ul
min-width: 270px
@ -192,8 +198,7 @@ $hamburger-width: 50px
.top-menu-search.-collapsed &
display: block
&:hover
@include varprop(background, header-item-bg-hover-color)
@include varprop(color, header-item-font-hover-color)
@extend %top-menu-hover-styles
input.top-menu-search--input
margin: 0
@ -314,8 +319,7 @@ input.top-menu-search--input
display: none
&:hover
@include varprop(background, header-item-bg-hover-color)
@include varprop(color, header-item-font-hover-color)
@extend %top-menu-hover-styles
@media only screen and (max-width: 18.75rem)
#logo

@ -5,20 +5,13 @@ body.zen-mode
#content-wrapper
margin-left: 0px
height: 100vh
width: 100%
&.controller-work_packages
&.action-index,
&.action-show,
&.full-create
#main
top: 0px
height: 100%
grid-template-columns: auto
#content-wrapper
width: 100%
margin-left: 0
#main
top: 0px
height: 100%
grid-template-columns: auto
&.controller-wiki #content
margin: 0 auto

@ -141,9 +141,11 @@ $wp-query-menu-search-container-height: 35px
// Hide the little x to remove input where exists + supported
&::-webkit-search-cancel-button
display: none
&::placeholder
&::placeholder,
&::-webkit-input-placeholder
@include varprop(color, main-menu-font-color)
opacity: 0.5
@include text-shortener
.wp-query-menu--search-icon
position: absolute

@ -44,7 +44,8 @@
// div style="clear:both;" (is pushed to overflow - of no relevance)
//
// This makes use of more specific rules overwriting less specific ones.
// Per default, the height is always 100%
// Per default, the height is always 100
.openproject-base--ui-view,
.work-packages-page--ui-view
height: 100%

@ -18,14 +18,26 @@ module CustomActions
def button_links
[
edit_link,
delete_link(custom_action_path(action))
delete_link
]
end
def edit_link
link_to t(:button_edit),
edit_custom_action_path(action),
class: 'icon icon-edit'
link_to(
op_icon('icon icon-edit'),
edit_custom_action_path(action),
title: t(:button_edit)
)
end
def delete_link
link_to(
op_icon('icon icon-delete'),
custom_action_path(action),
method: :delete,
data: { confirm: I18n.t(:text_are_you_sure) },
title: t(:button_delete)
)
end
end
end

@ -34,8 +34,18 @@ module Enumerations
def button_links
[
delete_link(enumeration_path(enumeration))
delete_link
]
end
def delete_link
link_to(
op_icon('icon icon-delete'),
enumeration_path(enumeration),
method: :delete,
data: { confirm: I18n.t(:text_are_you_sure) },
title: t(:button_delete)
)
end
end
end

@ -40,8 +40,18 @@ module Statuses
def button_links
[
delete_link(status_path(status))
delete_link
]
end
def delete_link
link_to(
op_icon('icon icon-delete'),
status_path(status),
method: :delete,
data: { confirm: I18n.t(:text_are_you_sure) },
title: t(:button_delete)
)
end
end
end

@ -168,9 +168,14 @@ class WikiController < ApplicationController
# Creates a new page or updates an existing one
def update
@old_title = params[:id]
@page = @wiki.find_or_new_page(@old_title)
@page = @wiki.find_page(@old_title)
render_404 if @page.nil?
@content = @page.content
if @page.nil?
render_404
return
end
@content = @page.content || @page.build_content
return if locked?
@page.attach_files(permitted_params.attachments.to_h)

@ -0,0 +1,46 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
# Copyright (C) 2012-2018 the OpenProject Foundation (OPF)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2017 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See docs/COPYRIGHT.rdoc for more details.
#++
module AugmentingHelper
##
# Create a collapsible section and yield to render the block
#
# @param title [String] Section title
#
# @param initiallyExpanded [Boolean] Whether the section is initially expanded
#
# @param block [Block] A block that renders the section's body.
def augmented_collapsible_section(title:, initiallyExpanded: true, &block)
render(
partial: '/augmented/collapsible_section',
locals: { title: title, initiallyExpanded: !!initiallyExpanded, block: block }
)
end
end

@ -51,5 +51,14 @@ module Token
self.class.where(["expires_on < ?", Time.now]).delete_all
end
end
module ClassMethods
##
# Return a scope of active tokens
def not_expired
where(["expires_on > ?", Time.now])
end
end
end
end

@ -79,7 +79,12 @@ See docs/COPYRIGHT.rdoc for more details.
</attribute-help-text>
</td>
<td class="buttons">
<%= delete_link attribute_help_text_path(attribute_help_text) %>
<%= link_to(
op_icon('icon icon-delete'),
(attribute_help_text_path(attribute_help_text)),
method: :delete,
data: { confirm: I18n.t(:text_are_you_sure) },
title: t(:button_delete)) %>
</td>
</tr>
<% end %>

@ -0,0 +1,6 @@
<collapsible-section-augment initially-expanded="<%= initiallyExpanded %>"
section-title="<%= title %>">
</collapsible-section-augment>
<div class="collapsible-section-augment--body" hidden>
<%= capture(&block) %>
</div>

@ -101,17 +101,18 @@ See docs/COPYRIGHT.rdoc for more details.
<td><%= source.users.count %></td>
<td class="buttons">
<%= link_to l(:button_test), { action: 'test_connection', id: source } %>
<%= link_to l(:button_delete), { action: 'destroy', id: source },
<%= link_to '', { action: 'destroy', id: source },
method: :delete,
data: { confirm: l(:text_are_you_sure) },
class: 'icon icon-delete',
disabled: source.users.any? %>
disabled: source.users.any?,
title: t(:button_delete) %>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<%= pagination_links_full @auth_sources %>

@ -22,12 +22,15 @@
<% selected_values = condition.values
select_options = options_for_select(condition.allowed_values.map { |v| [v[:label], v[:value]] },
selected: selected_values) %>
<div class="form--select-container -middle">
<autocomplete-select-decoration>
<%= select_tag input_name,
select_options,
multiple: true %>
</autocomplete-select-decoration>
<div class="form--field-container">
<div class="form--select-container -middle">
<autocomplete-select-decoration>
<%= select_tag input_name,
select_options,
multiple: true %>
</autocomplete-select-decoration>
</div>
</div>
</div>
<div class="form--space"></div>
@ -50,37 +53,47 @@
<% selected_values = action.values
select_options = options_for_select(action.allowed_values.map { |v| [v[:label], v[:value]] },
selected: selected_values) %>
<div class="form--select-container -middle">
<autocomplete-select-decoration
label="<%=action.human_name%>">
<%= select_tag input_name,
select_options,
multiple: action.multi_value? %>
</autocomplete-select-decoration>
</div>
<div class="form--field-container">
<div class="form--select-container -middle">
<autocomplete-select-decoration
label="<%=action.human_name%>">
<%= select_tag input_name,
select_options,
multiple: action.multi_value? %>
</autocomplete-select-decoration>
</div>
</div>
<% elsif %i(date_property).include?(action.type) %>
<wp-custom-actions-admin-date-action field-value="<%= action.values.first %>"
field-name="<%= input_name %>">
</wp-custom-actions-admin-date-action>
<div class="form--field-container">
<wp-custom-actions-admin-date-action field-value="<%= action.values.first %>"
field-name="<%= input_name %>">
</wp-custom-actions-admin-date-action>
</div>
<% elsif %i(string_property text_property).include?(action.type) %>
<%= styled_text_field_tag input_name,
action.values,
container_class: '-slim',
step: 'any' %>
<% elsif action.type == :float_property %>
<%= styled_number_field_tag input_name,
<div class="form--field-container">
<%= styled_text_field_tag input_name,
action.values,
container_class: '-slim',
min: action.minimum,
max: action.maximum,
step: 'any' %>
</div>
<% elsif action.type == :float_property %>
<div class="form--field-container">
<%= styled_number_field_tag input_name,
action.values,
container_class: '-slim',
min: action.minimum,
max: action.maximum,
step: 'any' %>
</div>
<% elsif action.type == :integer_property %>
<%= styled_number_field_tag input_name,
action.values,
container_class: '-slim',
min: action.minimum,
max: action.maximum,
step: 1 %>
<div class="form--field-container">
<%= styled_number_field_tag input_name,
action.values,
container_class: '-slim',
min: action.minimum,
max: action.maximum,
step: 1 %>
</div>
<% end %>
<hide-section-link section-name="'<%= action.key %>'"></hide-section-link>
</div>

@ -108,11 +108,12 @@ See docs/COPYRIGHT.rdoc for more details.
</span>
</td>
<td>
<%= link_to t(:button_delete),
<%= link_to '',
delete_option_of_custom_field_path(id: custom_field.id || 0, option_id: custom_option.id || 0),
method: :delete,
data: { confirm: t(:'custom_fields.confirm_destroy_option') },
class: 'icon icon-delete delete-custom-option' %>
class: 'icon icon-delete delete-custom-option',
title: t(:button_delete) %>
</td>
</tr>
<% end %>

@ -151,7 +151,12 @@ See docs/COPYRIGHT.rdoc for more details.
<td><%= reorder_links('custom_field', { action: 'update', id: custom_field, back_url: custom_fields_path(tab: tab[:name]) }, method: :put) %></td>
<% end %>
<td class="buttons">
<%= delete_link custom_field_path(custom_field) %>
<%= link_to(
op_icon('icon icon-delete'),
(custom_field_path(custom_field)),
method: :delete,
data: { confirm: I18n.t(:text_are_you_sure) },
title: t(:button_delete)) %>
</td>
</tr>
<% end %>

@ -40,7 +40,8 @@
</div>
<%= form_tag({ action: :destroy },
method: :delete,
class: 'confirm-form-submit') do %>
method: :delete) do %>
<confirm-form-submit></confirm-form-submit>
<%= styled_button_tag t(:button_delete), type: 'submit', class: '-with-icon icon-delete' %>
<% end %>

@ -1,28 +1,25 @@
<% if @current_token.present? %>
<collapsible-section section-title="<%=h t('admin.enterprise.replace_token') %>">
<% else %>
<collapsible-section initially-expanded="true"
section-title="<%=h t('admin.enterprise.add_token') %>">
<% end %>
<%= labelled_tabular_form_for @token,
url: { action: :create },
html: { class: 'token-form form -vertical' },
method: :post do |f|%>
<% title = @current_token.present? ? t('admin.enterprise.replace_token') : t('admin.enterprise.add_token') %>
<%= augmented_collapsible_section initiallyExpanded: !@current_token.present?,
title: title do %>
<%= labelled_tabular_form_for @token,
url: { action: :create },
html: { class: 'token-form form -vertical' },
method: :post do |f|%>
<div class="form--space"></div>
<div class="form--space"></div>
<%= f.text_area :encoded_token,
value: nil,
cols: 60,
rows: 15,
placeholder: t('admin.enterprise.paste'),
autocomplete: "off",
autocorrect: "off",
autocapitalize: "off",
spellcheck: false %>
<%= f.text_area :encoded_token,
value: nil,
cols: 60,
rows: 15,
placeholder: t('admin.enterprise.paste'),
autocomplete: "off",
autocorrect: "off",
autocapitalize: "off",
spellcheck: false %>
<div class="form--space"></div>
<%= styled_button_tag t(:button_save), id: 'token-submit-button', class: '-highlight -with-icon icon-checkmark' %>
<%= link_to t(:button_cancel), { action: :show }, class: 'button' %>
<div class="form--space"></div>
<%= styled_button_tag t(:button_save), id: 'token-submit-button', class: '-highlight -with-icon icon-checkmark' %>
<%= link_to t(:button_cancel), { action: :show }, class: 'button' %>
<% end %>
<% end %>
</collapsible-section>

@ -16,12 +16,10 @@
<%= error_messages_for 'token' %>
<%= activate_angular_js do %>
<% if @current_token.present? %>
<%= render partial: "current" %>
<% else %>
<%= render partial: "info" %>
<% end %>
<%= render partial: "form" %>
<% if @current_token.present? %>
<%= render partial: "current" %>
<% else %>
<%= render partial: "info" %>
<% end %>
<%= render partial: "form" %>

@ -50,9 +50,10 @@ See docs/COPYRIGHT.rdoc for more details.
<tr id="user-<%= user.id %>">
<td class="user"><%= link_to_user user %></td>
<td class="buttons">
<%= link_to l(:button_remove), member_of_group_path(@group, user),
method: :delete,
class: 'icon icon-remove' %>
<%= link_to '', member_of_group_path(@group, user),
method: :delete,
class: 'icon icon-remove',
title: t(:button_remove) %>
</td>
</tr>
<% end %>

@ -76,12 +76,18 @@ See docs/COPYRIGHT.rdoc for more details.
<tr>
<td><%= link_to h(group), action: 'edit', id: group %></td>
<td><%= group.users.size %></td>
<td class="buttons"><%= link_to l(:button_delete), group, data: { confirm: l(:text_are_you_sure) }, method: :delete, class: 'icon icon-delete' %></td>
<td class="buttons">
<%= link_to '', group,
data: { confirm: l(:text_are_you_sure) },
method: :delete,
class: 'icon icon-delete',
title: t(:button_delete) %>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<% else %>

@ -34,7 +34,7 @@ See docs/COPYRIGHT.rdoc for more details.
<% end -%>
<%= content_for :content_body do %>
<work-packages-base></work-packages-base>
<openproject-base></openproject-base>
<% end -%>
<%= render template: 'layouts/base', locals: local_assigns.merge({ no_action_menu: true }) %>

@ -117,12 +117,12 @@ entries_by_day = entries.group_by(&:spent_on)
<td class="hours"><%= html_hours("%.2f" % entry.hours) %></td>
<td class="buttons">
<% if entry.editable_by?(@user) -%>
<%= link_to icon_wrapper('icon-context icon-edit', l(:button_edit)),
<%= link_to icon_wrapper('icon-context icon-edit', ''),
{controller: '/timelog', action: 'edit', id: entry},
alt: l(:button_edit),
class: 'no-decoration-on-hover',
title: l(:button_edit) %>
<%= link_to icon_wrapper('icon-context icon-delete', l(:button_delete)),
<%= link_to icon_wrapper('icon-context icon-delete', ''),
{controller: '/timelog', action: 'destroy', id: entry},
data: { confirm: l(:text_are_you_sure) },
class: 'no-decoration-on-hover',
@ -136,7 +136,7 @@ entries_by_day = entries.group_by(&:spent_on)
<% end -%>
</tbody>
</table>
</div>
</div>
<% end %>

@ -29,4 +29,4 @@ See docs/COPYRIGHT.rdoc for more details.
<% html_title(t(:label_my_page)) -%>
<work-packages-base></work-packages-base>
<openproject-base></openproject-base>

@ -98,14 +98,16 @@ See docs/COPYRIGHT.rdoc for more details.
<% end %>
</td>
<td class="buttons">
<%= link_to_if_authorized l(:button_edit),
<%= link_to_if_authorized '',
{ controller: '/boards', action: 'edit', project_id: @project, id: board },
class: 'icon icon-edit' %>
<%= link_to_if_authorized l(:button_delete),
class: 'icon icon-edit',
title: t(:button_edit) %>
<%= link_to_if_authorized '',
{ controller: '/boards', action: 'destroy', project_id: @project, id: board },
data: { confirm: l(:text_are_you_sure) },
method: :delete,
class: 'icon icon-delete' %>
class: 'icon icon-delete',
title: t(:button_delete) %>
</td>
</tr>
<% end %>
@ -132,4 +134,3 @@ See docs/COPYRIGHT.rdoc for more details.
custom_action_text: t('projects.settings.boards.no_results_content_text') %>
<% end %>
</fieldset>

@ -79,15 +79,16 @@ See docs/COPYRIGHT.rdoc for more details.
<td><%=h(category.name) %></td>
<td><%=h(category.assigned_to.name) if category.assigned_to %></td>
<td class="buttons">
<%= link_to_if_authorized l(:button_edit),
<%= link_to_if_authorized '',
{ controller: '/categories', action: 'edit', id: category },
class: 'icon icon-edit' %>
<%= link_to_if_authorized l(:button_delete),
class: 'icon icon-edit',
title: t(:button_edit) %>
<%= link_to_if_authorized '',
{ controller: '/categories', action: 'destroy', id: category },
data: { confirm: l(:text_are_you_sure) },
method: :delete,
class: 'icon icon-delete' %>
class: 'icon icon-delete',
title: t(:button_delete) %>
</td>
</tr>
<% end %>

@ -143,14 +143,16 @@ See docs/COPYRIGHT.rdoc for more details.
</td>
<td class="buttons">
<% if version.project == @project %>
<%= link_to_if_authorized l(:button_edit),
<%= link_to_if_authorized '',
{ controller: '/versions', action: 'edit', id: version },
class: 'icon icon-edit' %>
<%= link_to_if_authorized l(:button_delete),
class: 'icon icon-edit',
title: t(:button_edit) %>
<%= link_to_if_authorized '',
{ controller: '/versions', action: 'destroy', id: version },
data: { confirm: l(:text_are_you_sure) },
method: :delete,
class: 'icon icon-delete' %>
class: 'icon icon-delete',
title: t(:button_delete) %>
<% end %>
</td>
</tr>

@ -88,7 +88,7 @@
<% end %>
</li>
<li class="advanced-filters--controls">
<%= submit_tag t('button_apply'), class: 'button -highlight', name: nil %>
<%= submit_tag t('button_apply'), class: 'button -small -highlight', name: nil %>
</li>
</ul>
</fieldset>

@ -83,16 +83,17 @@ See docs/COPYRIGHT.rdoc for more details.
<% end %>
</td>
<td class="buttons">
<%= link_to(l(:button_delete), role_path(role),
<%= link_to('', role_path(role),
method: :delete,
data: { confirm: l(:text_are_you_sure) },
class: 'icon icon-delete') unless role.builtin? %>
class: 'icon icon-delete',
title: t(:button_delete)) unless role.builtin? %>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<%= pagination_links_full @roles %>

@ -108,26 +108,26 @@ See docs/COPYRIGHT.rdoc for more details.
<%= I18n.t("setting_commit_fix_keywords") %>
</div>
<div class="form--grouping-row">
<div class="form--field">
<div class="form--field -vertical">
<%= styled_label_tag 'commit_fix_keywords', I18n.t(:label_keyword_plural) %>
<div class="form--field-container">
<%= setting_text_field :commit_fix_keywords, size: 30, label: false %>
</div>
<div class="form--field-instructions"><%= t(:text_comma_separated) %></div>
</div>
<div class="form--field">
<div class="form--field -vertical">
<%= styled_label_tag :settings_commit_fix_status_id, t(:label_applied_status) %>
<div class="form--field-container">
<%= setting_select :commit_fix_status_id, [["--- #{t(:actionview_instancetag_blank_option)} ---", '0', { disabled: true }]] + Status.all.collect{ |status| [status.name, status.id.to_s] }, label: false %>
</div>
</div>
<div class="form--field">
<div class="form--field -vertical">
<%= styled_label_tag :settings_commit_fix_done_ratio, WorkPackage.human_attribute_name(:done_ratio) %>
<div class="form--field-container">
<%= setting_select :commit_fix_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, blank: :label_no_change_option, label: false %>
</div>
</div>
</div>
<div class="form--field-instructions"><%= t(:text_comma_separated) %></div>
</div>
<div class="form--field">
<%= setting_check_box :commit_logtime_enabled %>

@ -138,12 +138,11 @@ See docs/COPYRIGHT.rdoc for more details.
</td>
<td class="buttons">
<% if !type.is_standard? %>
<%= link_to type, method: :delete,
data: { confirm: t(:text_are_you_sure) },
class: 'icon icon-delete' do %>
<%= t(:button_delete) %>
<span class="hidden-for-sighted"><%=h type.name %></span>
<% end %>
<%= link_to '', type,
method: :delete,
data: { confirm: t(:text_are_you_sure) },
class: 'icon icon-delete',
title: t(:button_delete) %>
<% end %>
</td>
</tr>

@ -108,10 +108,12 @@ See docs/COPYRIGHT.rdoc for more details.
<td class="buttons">
<%= link_to_function icon_wrapper('icon icon-edit', t(:button_edit)),
"jQuery('.member-#{membership.id}--edit-toggle-item').toggle();",
class: "member-#{membership.id}--edit-toggle-item user-memberships--edit-button" %>
class: "member-#{membership.id}--edit-toggle-item user-memberships--edit-button",
title: t(:button_edit) %>
<%= link_to(icon_wrapper('icon icon-remove', t(:button_remove)),
user_membership_path(user_id: @user, id: membership),
method: :delete) if membership.deletable? %>
method: :delete,
title: t(:button_remove)) if membership.deletable? %>
</td>
</tr>
<% end %>

@ -40,7 +40,7 @@ See docs/COPYRIGHT.rdoc for more details.
&nbsp;
<a href="<%= OpenProject::Enterprise.upgrade_path %>" class="display-inline button -tiny -highlight" title="<%= t(:title_enterprise_upgrade) %>"><%= t(:button_upgrade) %></a>
<% end %>
<%= toolbar title: t(:label_user_plural), title_class: 'no-padding-bottom', title_extra: users_info do %>
<%= toolbar title: t(:label_user_plural), title_class: 'no-padding-bottom', subtitle: users_info do %>
<li class="toolbar-item">
<%= link_to new_user_path,
{ class: 'button -alt-highlight',

@ -51,7 +51,7 @@ See docs/COPYRIGHT.rdoc for more details.
</ul>
<% if version.fixed_issues.count > 0 %>
<%= progress_bar([version.closed_percent, version.completed_percent], width: '40vw', legend: ('%0.0f' % version.completed_percent)) %>
<%= progress_bar([version.closed_percent, version.completed_percent], width: '40%', legend: ('%0.0f' % version.completed_percent)) %>
<p class="progress-info">
<%= link_to_if(version.closed_issues_count > 0,
l(:label_x_closed_work_packages_abbr, count: version.closed_issues_count),

@ -50,68 +50,57 @@ See docs/COPYRIGHT.rdoc for more details.
<%= call_hook(:view_versions_show_contextual, { version: @version, project: @project }) %>
<% end %>
<div class="widget-boxes -flex -vertical">
<div class="widget-boxes -grid">
<div class="widget-box -thin">
<%= render partial: 'versions/overview', locals: { version: @version } %>
</div>
<div class="widget-box -no-border">
<div class="widget-boxes -flex">
<div class="widget-box -no-border">
<div class="widget-boxes -flex -vertical">
<% if @version.wiki_page %>
<div class="widget-box -thin -wider">
<%= render(partial: "wiki/content", locals: {content: @version.wiki_page.content}) if @version.wiki_page %>
</div>
<% end %>
<% if @version.estimated_hours > 0 || User.current.allowed_to?(:view_time_entries, @project) %>
<div class="widget-box -thin">
<fieldset class="form--fieldset">
<legend class="form--fieldset-legend"><%= l(:label_time_tracking) %></legend>
<table>
<tr>
<td width="130px" align="right"><%= Version.human_attribute_name(:estimated_hours) %></td>
<td width="240px" class="total-hours" align="right"><%= html_hours(l_hours(@version.estimated_hours)) %></td>
</tr>
<% if User.current.allowed_to?(:view_time_entries, @project) %>
<tr>
<td width="130px" align="right"><%= l(:label_spent_time) %></td>
<td width="240px" class="total-hours" align="right"><%= html_hours(l_hours(@version.spent_hours)) %></td>
</tr>
<% end %>
</table>
</fieldset>
</div>
<% end %>
<% if @issues.present? %>
<div class="widget-box -thin -wider">
<% if @issues.present? %>
<fieldset class="form--fieldset related_issues"><legend class="form--fieldset-legend"><%= l(:label_related_work_packages) %></legend>
<ul>
<% @issues.each do |issue| -%>
<li><%= link_to_work_package(issue, project: issue.project != @version.project) %></li>
<% end -%>
</ul>
</fieldset>
<% end %>
</div>
<% end %>
</div>
<% if @version.wiki_page %>
<div class="widget-box -thin -wider">
<%= render(partial: "wiki/content", locals: {content: @version.wiki_page.content}) if @version.wiki_page %>
</div>
<% end %>
<div class="widget-box -minimal -no-border">
<div class="widget-boxes -flex -vertical">
<% if @version.estimated_hours > 0 || User.current.allowed_to?(:view_time_entries, @project) %>
<div class="widget-box -thin">
<fieldset class="form--fieldset"><legend class="form--fieldset-legend"><%= l(:label_time_tracking) %></legend>
<table>
<tr>
<td width="130px" align="right"><%= Version.human_attribute_name(:estimated_hours) %></td>
<td width="240px" class="total-hours" align="right"><%= html_hours(l_hours(@version.estimated_hours)) %></td>
</tr>
<% if User.current.allowed_to?(:view_time_entries, @project) %>
<tr>
<td width="130px" align="right"><%= l(:label_spent_time) %></td>
<td width="240px" class="total-hours" align="right"><%= html_hours(l_hours(@version.spent_hours)) %></td>
</tr>
<% end %>
</table>
</fieldset>
</div>
<% end %>
<% if @issues.present? %>
<div class="widget-box -thin -wider">
<% if @issues.present? %>
<fieldset class="form--fieldset related_issues"><legend class="form--fieldset-legend"><%= l(:label_related_work_packages) %></legend>
<ul>
<% @issues.each do |issue| -%>
<li><%= link_to_work_package(issue, project: issue.project != @version.project) %></li>
<% end -%>
</ul>
</fieldset>
<% end %>
</div>
<% end %>
<% if @version.fixed_issues.count > 0 %>
<div class="widget-box -thin -wider">
<wp-by-version-graph version-id="<%= @version.id %>">
</wp-by-version-graph>
</div>
<% end %>
</div>
<% if @version.fixed_issues.count > 0 %>
<div class="widget-box -thin -wider">
<wp-by-version-graph version-id="<%= @version.id %>">
</wp-by-version-graph>
</div>
</div>
</div>
<% end %>
</div>
<%= call_hook :view_versions_show_bottom, version: @version %>

@ -27,12 +27,15 @@ See docs/COPYRIGHT.rdoc for more details.
++#%>
<h3><%= WorkPackage.human_attribute_name(report.report_type) %></h3>
<div class="report-category-actions">
<%= link_to(icon_wrapper('icon icon-zoom-in',l(:text_analyze, subject: WorkPackage.human_attribute_name(report.report_type))),
{action: 'report_details', detail: report.report_type},
title: l(:text_analyze, subject: WorkPackage.human_attribute_name(report.report_type)),
class: 'no-decoration-on-hover') %>
<div class="form--fieldset">
<div class="form--fieldset-legend"><%= WorkPackage.human_attribute_name(report.report_type) %></div>
<div class="form--fieldset-control">
<span class="form--fieldset-control-container">
<%= link_to(icon_wrapper('icon icon-zoom-in',l(:text_analyze, subject: WorkPackage.human_attribute_name(report.report_type))),
{action: 'report_details', detail: report.report_type},
title: l(:text_analyze, subject: WorkPackage.human_attribute_name(report.report_type)),
class: 'no-decoration-on-hover') %></span>
</div>
<%= render partial: 'report', locals: { report: report } %>
<br />
</div>
<%= render partial: 'report', locals: { report: report } %>
<br />

@ -27,15 +27,17 @@ See docs/COPYRIGHT.rdoc for more details.
++#%>
<h2><%=t(:label_summary)%></h2>
<h3><%=@report_title%></h3>
<%= render partial: 'report', locals: { statuses: @statuses,
rows: @rows,
data: @data,
field_name: @field,
report: @report } %>
<br />
<%= link_to t(:button_back), report_project_work_packages_path(@project) %>
<% html_title t(:label_summary) %>
<%= toolbar title: t(:label_summary) %>
<div class="form--fieldset">
<div class="form--fieldset-legend"><%= @report.report_type %></div>
<%= render partial: 'report', locals: { statuses: @statuses,
rows: @rows,
data: @data,
field_name: @field,
report: @report } %>
<br />
</div>
<%= link_to t(:button_back), report_project_work_packages_path(@project), class:'button' %>

@ -45,48 +45,41 @@ See docs/COPYRIGHT.rdoc for more details.
<%= styled_select_tag 'type_id', options_from_collection_for_select(@types, "id", "name", @type && @type.id) %>
</div>
</li>
<li class="simple-filters--controls">
<%= submit_tag l(:button_edit), name: nil, accesskey: accesskey(:edit), class: 'button -highlight' %>
</li>
</ul>
<ul class="simple-filter--trailing-labels">
<li class="form--field -trailing-label">
<%= hidden_field_tag 'used_statuses_only', '0', id: 'used_statuses_only_hidden' %>
<ul class="simple-filter--trailing-labels">
<li class="form--field -trailing-label">
<%= hidden_field_tag 'used_statuses_only', '0', id: 'used_statuses_only_hidden' %>
<%= styled_label_tag :used_statuses_only, l(:label_display_used_statuses_only) %>
<span class="form--field-container">
<%= styled_check_box_tag :used_statuses_only, '1', @used_statuses_only %>
</span>
<%= styled_label_tag :used_statuses_only, l(:label_display_used_statuses_only) %>
<span class="form--field-container">
<%= styled_check_box_tag :used_statuses_only, '1', @used_statuses_only %>
</span>
</li>
</ul>
<li class="simple-filters--controls">
<%= submit_tag l(:button_edit), name: nil, accesskey: accesskey(:edit), class: 'button -small -highlight' %>
</li>
</ul>
</fieldset>
<% end %>
<% if @type && @role && @statuses.any? %>
<%= activate_angular_js do %>
<%= form_tag({}, id: 'workflow_form' ) do %>
<%= hidden_field_tag 'type_id', @type.id %>
<%= hidden_field_tag 'role_id', @role.id %>
<%= form_tag({}, id: 'workflow_form' ) do %>
<%= hidden_field_tag 'type_id', @type.id %>
<%= hidden_field_tag 'role_id', @role.id %>
<%= render partial: 'form',
locals: { name: 'always', workflows: @workflows['always'] } %>
<%= render partial: 'form',
locals: { name: 'always', workflows: @workflows['always'] } %>
<% author_expanded = @workflows['author'].present? ? 'true' : '' %>
<% assignee_expanded = @workflows['assignee'].present? ? 'true' : '' %>
<collapsible-section initially-expanded="<%= author_expanded %>"
id="author_workflows"
section-title="<%= t(:label_additional_workflow_transitions_for_author) %>">
<%= render partial: 'form', locals: { name: 'author', workflows: @workflows['author'] } %>
</collapsible-section>
<collapsible-section initially-expanded="<%= assignee_expanded %>"
id="assignee_workflows"
section-title="<%= t(:label_additional_workflow_transitions_for_assignee) %>">
<%= render partial: 'form', locals: { name: 'assignee', workflows: @workflows['assignee'] } %>
</collapsible-section>
<%= augmented_collapsible_section initiallyExpanded: @workflows['author'].present?,
title: t(:label_additional_workflow_transitions_for_author) do %>
<%= render partial: 'form', locals: { name: 'author', workflows: @workflows['author'] } %>
<% end %>
<%= styled_button_tag l(:button_save), class: '-highlight -with-icon icon-checkmark' %>
<%= augmented_collapsible_section initiallyExpanded: @workflows['assignee'].present?,
title: t(:label_additional_workflow_transitions_for_assignee) do %>
<%= render partial: 'form', locals: { name: 'assignee', workflows: @workflows['assignee'] } %>
<% end %>
<%= styled_button_tag l(:button_save), class: '-highlight -with-icon icon-checkmark' %>
<% end %>
<% end %>

@ -192,9 +192,9 @@ de:
projects: Projekte
enabled_projects: Aktivierte Projekte
add_group: Attributgruppe hinzufügen
add_table: Add table of related work packages
edit_query: Edit table
query_group_placeholder: Give the table a name
add_table: Tabelle mit zugehörigen Arbeitspaketen hinzufügen
edit_query: Tabelle bearbeiten
query_group_placeholder: Benennen Sie die Tabelle
reset: Auf Standardwerte zurücksetzen
type_color_text: 'Klicken zum Zuweisen einer Farbe für diesen Typ. Diese wird
für die Hervorhebung von Arbeitspaketen in Tabellen und Gantt-Diagrammen verwendet.

@ -2427,7 +2427,7 @@ ja:
招待者と登録ユーザーが参加できるようにするには、<a href="%{upgrade_url}">プランをアップグレード</a>するか、既存のユーザーをブロックしてください。
'
warning_registration_token_expired: 'アクティベーションメールの有効期限が切れています。%{email} に新しいものを送りました。その中のリンクをクリックして、アカウントを有効にしてください。
warning_registration_token_expired: 'アクティベーションメールの有効期限が切れています。%{email} に新しいメールを送りました。メール内のリンクをクリックして、アカウントを有効にしてください。
'
warning_user_limit_reached: 'ユーザー制限に達しました。 これ以上ユーザーをアクティブにすることはできません。 追加のユーザーが参加できるように<a

@ -270,6 +270,8 @@ af:
label_attachments: Lêers
label_drop_files: Drop files here
label_drop_files_hint: or click to add files
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -412,7 +414,7 @@ af:
hierarchy_headline: Hierarchy
children_headline: Children
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Change parent
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -268,6 +268,8 @@ ar:
label_attachments: الملفّات
label_drop_files: إسقاط الملفات هنا
label_drop_files_hint: أو اضغط لإضافة ملفات
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: إضافة مرفقات
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -407,7 +409,7 @@ ar:
hierarchy_headline: Hierarchy
children_headline: الأطفال
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: تغيير الوالد
remove_parent: إزالة والد
group_by_wp_type: تجميع حسب نوع حزمة العمل

@ -271,6 +271,8 @@ az:
label_attachments: Files
label_drop_files: Drop files here
label_drop_files_hint: or click to add files
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -413,7 +415,7 @@ az:
hierarchy_headline: Hierarchy
children_headline: Children
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Change parent
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -270,6 +270,8 @@ bg:
label_attachments: Файлове
label_drop_files: Пуснете файлове тук
label_drop_files_hint: или щракнете, за да добавите файлове
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -412,7 +414,7 @@ bg:
hierarchy_headline: Hierarchy
children_headline: Деца
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Смяна на главният работен пакет
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -272,6 +272,8 @@ ca:
label_attachments: Arxius
label_drop_files: Arrossegueu els fitxers aquí
label_drop_files_hint: o feu clic per afegir arxius
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -414,7 +416,7 @@ ca:
hierarchy_headline: Hierarchy
children_headline: Fills
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Canviar pare
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -271,6 +271,8 @@ cs:
label_attachments: Soubory
label_drop_files: Sem přetáhněte soubory
label_drop_files_hint: or click to add files
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Přidat přílohy
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -413,7 +415,7 @@ cs:
hierarchy_headline: Hierarchie
children_headline: Potomci
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Změnit nadřazený
remove_parent: Odstranit nadřazený
group_by_wp_type: Seskupit podle typu pracovního balíčku

@ -270,6 +270,8 @@ da:
label_attachments: Filer
label_drop_files: Slip filer hér
label_drop_files_hint: eller klik for at tilføje filer
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -411,7 +413,7 @@ da:
hierarchy_headline: Hierarchy
children_headline: Underordnede
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Ændr overordnede
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -278,6 +278,8 @@ de:
label_attachments: Dateien
label_drop_files: Dateien hier ablegen
label_drop_files_hint: oder klicken Sie um Dateien hinzuzufügen
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Anhänge hinzufügen
label_formattable_attachment_hint: Ziehen Sie Dateien in dieses Feld hinein oder
fügen Sie sie aus der Zwischenablage ein, um sie Hinzuzufügen und zu Verlinken.
@ -300,9 +302,9 @@ de:
show_modal: Hilfe-Text für dieses Attribut anzeigen
onboarding:
steps:
welcome: Take a three minutes introduction tour to learn the most <b>important
features</b>. <br> We recommend completing the steps until the end. You
can restart the tour any time.
welcome: Lernen Sie in drei Minuten die <b>wichtigsten Funktionen</b> kennen.
<br> Wir empfehlen Ihnen die Tour bis zum Ende zu machen. Sie können diese
jederzeit wieder neu starten.
project_selection: 'Bitte wählen Sie eines der Projekte mit hilfreichen Demodaten
aus: <br> Das <b>„Demo project“</b> passt für klassisches Projektmanagement,
das <b>„Scrum project“</b> ist geeignet für agiles Projektmanagement.'
@ -419,7 +421,7 @@ de:
hierarchy_headline: Hierarchie
children_headline: Untergeordnete Arbeitspakete
relation_buttons:
set_parent: Elternelement setzen
set_parent: Set parent
change_parent: Übergeordnetes Arbeitspaket ändern
remove_parent: Übergeordnetes Arbeitspaket entfernen
group_by_wp_type: Nach Arbeitspaket-Typ gruppieren

@ -275,6 +275,8 @@ es:
label_attachments: Archivos
label_drop_files: Suelta los archivos aquí
label_drop_files_hint: o haga clic en Agregar archivos
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Añadir adjuntos
label_formattable_attachment_hint: Para adjuntar y vincular archivos, colóquelos
en este campo o péguelos desde el Portapapeles.
@ -418,7 +420,7 @@ es:
hierarchy_headline: Jerarquía
children_headline: Subordinado
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Cambiar padre
remove_parent: Eliminar padre
group_by_wp_type: Agrupar por tipo de paquete de trabajo

@ -271,6 +271,8 @@ et:
label_attachments: Failid
label_drop_files: Drop files here
label_drop_files_hint: or click to add files
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -413,7 +415,7 @@ et:
hierarchy_headline: Hierarchy
children_headline: Children
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Change parent
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -272,6 +272,8 @@ fa:
label_attachments: Files
label_drop_files: Drop files here
label_drop_files_hint: or click to add files
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -415,7 +417,7 @@ fa:
hierarchy_headline: Hierarchy
children_headline: بچه ها
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: تغییر والدین
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -269,6 +269,8 @@ fi:
label_attachments: Tiedostot
label_drop_files: Pudota tiedostoja tähän
label_drop_files_hint: tai valitse lisätäksesi tiedostoja
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Lisää liitteitä
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -411,7 +413,7 @@ fi:
hierarchy_headline: Hierarchy
children_headline: Lapset
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Vaihda pääkohdetta
remove_parent: Poista ylätaso
group_by_wp_type: Ryhmittele työpaketin tyypin mukaan

@ -270,6 +270,8 @@ fil:
label_attachments: Mga file
label_drop_files: Ihulog ang mga file dito
label_drop_files_hint: o pindutin upang magdagdag ng mga file
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Magdagdag ng mga nakalakip
label_formattable_attachment_hint: Idijit at i-link ang mga file sa pamamagitan
ng paghulog sa patlang na ito, o idikit mula sa clipboard.
@ -415,7 +417,7 @@ fil:
hierarchy_headline: Hierarchy
children_headline: Ang mga bata
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Palitan ng magulang
remove_parent: Alisin ang magulang
group_by_wp_type: Grupo sa pamamagitan ng uri ng work package

@ -276,6 +276,8 @@ fr:
label_attachments: Fichiers
label_drop_files: Déposez des fichiers ici
label_drop_files_hint: ou cliquez pour ajouter des fichiers
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Ajouter pièces jointes
label_formattable_attachment_hint: Insérer des fichiers en les glissant sur ce
champ, ou en les collant depuis le presse-papiers.
@ -425,7 +427,7 @@ fr:
hierarchy_headline: Hiérarchie
children_headline: Enfants
relation_buttons:
set_parent: Définir le package de travail parent
set_parent: Set parent
change_parent: Changer le parent
remove_parent: Supprimer le parent
group_by_wp_type: Grouper par type de lot de travaux

@ -270,6 +270,8 @@ he:
label_attachments: קבצים
label_drop_files: Drop files here
label_drop_files_hint: or click to add files
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -412,7 +414,7 @@ he:
hierarchy_headline: Hierarchy
children_headline: ילדים
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: שנה אב
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -271,6 +271,8 @@ hi:
label_attachments: इल
label_drop_files: Drop files here
label_drop_files_hint: or click to add files
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -412,7 +414,7 @@ hi:
hierarchy_headline: पदरम
children_headline: Children
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Change parent
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -271,6 +271,8 @@ hr:
label_attachments: Datoteke
label_drop_files: Ovdje dodajte datoteke
label_drop_files_hint: ili odaberite za dodavanje datoteka
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -412,7 +414,7 @@ hr:
hierarchy_headline: Hierarchy
children_headline: Podređeni
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Promijeni nadređenog
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -271,6 +271,8 @@ hu:
label_attachments: Fájlok
label_drop_files: Húzza a fájlokat ide
label_drop_files_hint: vagy kattintson a fájlok hozzáadásához
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Melléklet hozzáadása
label_formattable_attachment_hint: Fájl hozzárendelése mellékletként a fájl "ideejtésével"
vagy vágólapról beillesztésével.
@ -413,7 +415,7 @@ hu:
hierarchy_headline: Hierarchia
children_headline: Gyermekek
relation_buttons:
set_parent: A Szülő Feladatcsoport kiválasztása
set_parent: Set parent
change_parent: Szülő módosítása
remove_parent: Szülő eltávolítása
group_by_wp_type: Rendezés feladatcsoport típusai szerint

@ -271,6 +271,8 @@ id:
label_attachments: File
label_drop_files: Drop file di sini
label_drop_files_hint: atau klik untuk menambahkan
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Tambahkan lampiran
label_formattable_attachment_hint: Lampirkan dan hubungkan file dengan meletakkannya
pada field ini, atau sisipkan dari clipboard.
@ -413,7 +415,7 @@ id:
hierarchy_headline: Hierarchy
children_headline: Sub
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Perubahan induk
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -275,6 +275,8 @@ it:
label_attachments: File
label_drop_files: Trascina i file qui
label_drop_files_hint: o fai clic per aggiungere file
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Aggiungi allegati
label_formattable_attachment_hint: Allega e collega i file trascinandoli in questo
campo, o incollandoli dagli appunti.
@ -421,7 +423,7 @@ it:
hierarchy_headline: Gerarchia
children_headline: Figli
relation_buttons:
set_parent: Imposta il pacchetto di lavoro principale
set_parent: Imposta genitore
change_parent: Cambia genitore
remove_parent: Rimuovi genitore
group_by_wp_type: Raggruppa per tipo di macro-attività

@ -260,6 +260,8 @@ ja:
label_attachments: ファイルを添付する
label_drop_files: ここにファイルをドロップ
label_drop_files_hint: またはクリックしてファイルを追加する
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: 添付ファイルを追加する
label_formattable_attachment_hint: このフィールドにドロップ、またはクリップボードから貼り付けて、ファイルを添付およびリンクします。
label_remove_file: "%{fileName}を削除"
@ -381,7 +383,7 @@ ja:
hierarchy_headline: 階層
children_headline:
relation_buttons:
set_parent: 親作業項目を設定する
set_parent: Set parent
change_parent: 親タスクの変更
remove_parent: 親関係を削除
group_by_wp_type: ワークパッケージタイプのグループ

@ -263,6 +263,8 @@ ko:
label_attachments: 파일
label_drop_files: 여기에 파일을 놓으세요
label_drop_files_hint: 또는 파일을 추가 하려면 클릭하세요
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: 첨부 파일 추가
label_formattable_attachment_hint: 이 필드에 놓거나 클립보드에서 붙여넣어 파일을 첨부하고 연결하세요.
label_remove_file: "%{fileName} 삭제"
@ -399,7 +401,7 @@ ko:
hierarchy_headline: 계층 구조
children_headline: 하위
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: 부모 변경
remove_parent: 부모 제거
group_by_wp_type: 작업 패키지 유형별 그룹화

@ -259,6 +259,7 @@ lol:
label_attachments: crwdns107380:0crwdne107380:0
label_drop_files: crwdns107382:0crwdne107382:0
label_drop_files_hint: crwdns107384:0crwdne107384:0
label_drop_folders_hint: crwdns109280:0crwdne109280:0
label_add_attachments: crwdns107386:0crwdne107386:0
label_formattable_attachment_hint: crwdns107388:0crwdne107388:0
label_remove_file: crwdns107390:0%{fileName}crwdne107390:0
@ -368,7 +369,7 @@ lol:
hierarchy_headline: crwdns109216:0crwdne109216:0
children_headline: crwdns107502:0crwdne107502:0
relation_buttons:
set_parent: crwdns109218:0crwdne109218:0
set_parent: crwdns109276:0crwdne109276:0
change_parent: crwdns107504:0crwdne107504:0
remove_parent: crwdns107506:0crwdne107506:0
group_by_wp_type: crwdns107508:0crwdne107508:0

@ -271,6 +271,8 @@ lt:
label_attachments: Failai
label_drop_files: Numeskite failus čia
label_drop_files_hint: arba spustelkite, kad pridėtumėte failus
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Prisegti priedus
label_formattable_attachment_hint: Prisegti ir susieti failus užvelkant ant šio
laukelio arba įklijuojant į iškarpinę.
@ -410,7 +412,7 @@ lt:
hierarchy_headline: Hierarchy
children_headline: Pasekėjai
relation_buttons:
set_parent: Nustatyti tėvinį darbų paketą
set_parent: Set parent
change_parent: Keisti pirmtaką
remove_parent: Pašalinti tėvą
group_by_wp_type: Grupuoti pagal darbų paketo tipą

@ -270,6 +270,8 @@ lv:
label_attachments: Faili
label_drop_files: Nomest failus šeit
label_drop_files_hint: vai klikšķiniet šeit, lai pievienotu failus
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -411,7 +413,7 @@ lv:
hierarchy_headline: Hierarchy
children_headline: Bērni
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Mainīt vecāku
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -275,6 +275,8 @@ nl:
label_attachments: Bestanden
label_drop_files: Bestanden hier neerzetten
label_drop_files_hint: of klik om bestanden toe te voegen
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Bijlagen toevoegen
label_formattable_attachment_hint: Hecht en link bestanden door deze in dit veld
te slepen, of plak deze vanuit het klembord.
@ -419,7 +421,7 @@ nl:
hierarchy_headline: Hiërarchie
children_headline: Subdocumenten
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Wijzig bovenliggende pagina
remove_parent: Verwijder bovenliggende map
group_by_wp_type: Groep per werkpakkettype

@ -269,6 +269,8 @@
label_attachments: Filer
label_drop_files: Drop files here
label_drop_files_hint: eller klikk for å legge til filer
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -411,7 +413,7 @@
hierarchy_headline: Hierarchy
children_headline: Underordnede
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Endre overordnet
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -269,6 +269,8 @@ pl:
label_attachments: Pliki
label_drop_files: Upuść pliki tutaj
label_drop_files_hint: lub kliknij aby dodać pliki
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Dodaj Załączniki
label_formattable_attachment_hint: Aby załączyć pliki, przeciągnij je tutaj lub
wklej ze schowka.
@ -410,7 +412,7 @@ pl:
hierarchy_headline: Hierarchia
children_headline: Dzieci
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Zmień nadrzędny
remove_parent: Usuń nadrzędny
group_by_wp_type: Grupuj wg typu zadań

@ -276,6 +276,8 @@ pt-BR:
label_attachments: Arquivos
label_drop_files: Solte os arquivos aqui
label_drop_files_hint: ou clique para adicionar arquivos
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Adicionar anexos
label_formattable_attachment_hint: Anexar e vincular arquivos soltando neste campo,
ou colando da área de transferência.
@ -420,7 +422,7 @@ pt-BR:
hierarchy_headline: Hierarquia
children_headline: Filhos
relation_buttons:
set_parent: Definir pacote de trabalho pai
set_parent: Set parent
change_parent: Alterar pai
remove_parent: Remover pai
group_by_wp_type: Agrupar por tipo de pacote de trabalho

@ -273,6 +273,8 @@ pt:
label_attachments: Ficheiros
label_drop_files: Largar ficheiro aqui
label_drop_files_hint: ou clique para adicionar ficheiros
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Adicionar anexos
label_formattable_attachment_hint: Anexar e associar arquivos soltando neste campo,
ou colando da área de transferência.
@ -414,7 +416,7 @@ pt:
hierarchy_headline: Hierarquia
children_headline: Filhos
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Alterar pai
remove_parent: Remover pai
group_by_wp_type: Agrupar por tipo de pacote de trabalho

@ -273,6 +273,8 @@ ro:
label_attachments: Fişiere
label_drop_files: Trageți fișierele aici
label_drop_files_hint: sau dați click pentru a adăuga fişiere
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Adaugă fișiere
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -416,7 +418,7 @@ ro:
hierarchy_headline: Hierarchy
children_headline: Fii
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Modificare părinte
remove_parent: Elimina părinte
group_by_wp_type: Grupează după tipul packetului de lucru

@ -273,6 +273,8 @@ ru:
label_attachments: Файлы
label_drop_files: Перетащите файлы сюда
label_drop_files_hint: или кликните для добавления файлов
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Добавить вложения
label_formattable_attachment_hint: Прикрепите и связать файлы, перетащив их на
это поле, или вставив из буфера обмена.
@ -294,9 +296,9 @@ ru:
show_modal: Показать содержимое атрибута текста справки
onboarding:
steps:
welcome: Take a three minutes introduction tour to learn the most <b>important
features</b>. <br> We recommend completing the steps until the end. You
can restart the tour any time.
welcome: Совершите вводный трехминутный тур для знакомства с наиболее <b>важными
особенностями</b>. <br>Рекомендуем пройти все шаги до конца. Пройти вводный
тур повторно можно в любое время.
project_selection: Пожалуйста, выберите для начала один из проектов с полезными
демонстрационными данными. <br> <b>Демонстрационный проект</b> подходит
лучше всего для классического проекта управления, пока <b>проект Scrum</b>
@ -305,12 +307,13 @@ ru:
members: Предложите новому <b>участнику</b> присоединиться к вашему проекту.
wiki: В пределах <b>вики</b> возможно документирование и обмен знаниями в
вашей команде.
backlogs_overview: Manage your work in the <b>Backlogs</b> view. <br> On the
right you have the Product Backlog or a Bug Backlog, on the left you will
have the respective sprints. Here you can create <b>epics, user stories,
and bugs</b>, prioritize via drag'n'drop and add them to a sprint.
backlogs_task_board_arrow: To see your <b>Task board</b>, open the Sprint
drop-down...
backlogs_overview: Управляйте своей работой в представлении <b>Backlogs</b>.
<br> Справа список невыполненных работ и ошибки, слева им соответствующие
спринты. Здесь можно создавать <b>эпопеи, описания функциональности пользователей
и ошибок</b>, меняя их приоритет с помощью перетаскивания, и добавлять их
к спринту.
backlogs_task_board_arrow: Чтобы увидеть вашу <b>Панель задач</b>, откройте
раскрывающийся список спринта...
backlogs_task_board_select: "... и выберите строку <b>Панель задач</b>."
backlogs_task_board: "<b>Панель задач</b> визуализирует прогресс этого спринта.
Добавьте новые задачи или помехи с помощью значка + рядом с историей пользователя.
@ -321,9 +324,8 @@ ru:
такими как задачи, функции, вехи, ошибки и многое другое. <br>Создать или
изменить пакет работ можно непосредственно в этом списке. Чтобы увидеть
его детали, нужно дважды щелкнуть по строке.
wp_full_view: Within the <b>Work package details</b> you find all relevant
information, such as description, status and priority, activities, dependencies
or comments.
wp_full_view: 'В <b>Деталях пакета работ</b> вы найдете всю необходимую информацию:
описание, состояние и приоритет, активность, зависимости или комментарии.'
wp_back_button: Стрелка возвращает к списку пакетов работ.
wp_create_button: Кнопка <b>Создать</b> добавляет новый пакет работ к вашему
проекту.
@ -361,7 +363,7 @@ ru:
attribute_groups:
error_duplicate_group_name: Имя %{group} используется более одного раза. Имена
групп должны быть уникальными.
error_no_table_configured: Please configure a table for %{group}.
error_no_table_configured: Пожалуйста, настройте таблицу для %{group}.
reset_title: Сбросить настройки формы
confirm_reset: 'Предупреждение: хотите сбросить форму? Это сбросит атрибуты
к первоначальным значениям группы и запретит правку настраиваемых полей.
@ -374,18 +376,18 @@ ru:
more_information: Больше информации
nevermind: Неважно
filter_types:
parent: being child of
precedes: preceding
follows: following
relates: relating to
duplicates: duplicating
parent: будучи потомком
precedes: предыдущие
follows: следующие
relates: связанные с
duplicates: дублирование
duplicated: дублируется
blocks: blocking
blocks: блокировка
blocked: заблокировано
partof: being part of
includes: including
requires: requiring
required: required by
partof: является частью
includes: включая
requires: требование
required: необходим для
watchers:
label_loading: Загрузка наблюдателей...
label_error_loading: При загрузке наблюдателей произошла ошибка
@ -413,19 +415,19 @@ ru:
hierarchy_headline: Иерархии
children_headline: Дочерние элементы
relation_buttons:
set_parent: Установить родительский пакет работ
set_parent: Set parent
change_parent: Сменить родителя
remove_parent: Удалить родителя
group_by_wp_type: Группировать по типу комплекса работ
group_by_relation_type: Группировать по типу связи
add_parent: Добавить существующего родителя
add_new_child: Создать новый дочерний элемент
create_new: Create new
add_existing: Add existing
create_new: Создать новое
add_existing: Добавить существующий
add_existing_child: Добавить существующий дочерний элемент
remove_child: Удалить дочерний элемент
add_new_relation: Создать новое отношение
add_existing_relation: Add existing relation
add_existing_relation: Добавление существующего отношения
update_description: Определить или обновить описание этой связи
toggle_description: Переключить описание связи
update_relation: Кликните, чтобы изменить тип связи
@ -749,8 +751,8 @@ ru:
relation_columns: Нужно видеть отношения в списке пакетов работ?
check_out_link: Проверьте корпоративную версию.
relation_filters:
first_part: Show all work packages
second_part: the current work package
first_part: Показать все пакеты работы
second_part: текущий пакет работ
tabs:
overview: Обзор
activity: Деятельность

@ -270,6 +270,8 @@ sk:
label_attachments: Súbory
label_drop_files: Presuňte súbory sem
label_drop_files_hint: alebo kliknite na tlačidlo Pridať súbory
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Na priloženie súboru ho potiahnite a pustite
na toto pole alebo ho vložte zo schránky.
@ -411,7 +413,7 @@ sk:
hierarchy_headline: Hierarchy
children_headline: Potomkovia
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Zmeniť nadradený objekt
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -271,6 +271,8 @@ sv-SE:
label_attachments: Filer
label_drop_files: Släpp filer här
label_drop_files_hint: eller klicka för att lägga till filer
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Lägg till bilagor
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -413,7 +415,7 @@ sv-SE:
hierarchy_headline: Hierarchy
children_headline: Barn
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Ändra överordnad
remove_parent: Ta bort förälder
group_by_wp_type: Gruppera efter arbetspakettyp

@ -270,6 +270,8 @@ th:
label_attachments: ไฟล
label_drop_files: วางไฟล
label_drop_files_hint: หรอคลกเพอเพมไฟล
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: เพมไฟลแนบ
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -412,7 +414,7 @@ th:
hierarchy_headline: Hierarchy
children_headline: Children
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Change parent
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -271,6 +271,8 @@ tr:
label_attachments: Dosyalar
label_drop_files: Dosyaları buraya bırakın
label_drop_files_hint: veya eklemek için tıklayın
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Dosya Ekle
label_formattable_attachment_hint: Dosyaları bu alana sürükleyerek ekleyebilir
veya panodan yapıştırabilirsiniz.
@ -413,7 +415,7 @@ tr:
hierarchy_headline: Hiyerarşi
children_headline: Çocuk
relation_buttons:
set_parent: Üst iş paketi ayarla
set_parent: Set parent
change_parent: Üstünü değiştir
remove_parent: Üstündekini kaldır
group_by_wp_type: İş paketi türüne göre grupla

@ -272,6 +272,8 @@ uk:
label_attachments: Files
label_drop_files: Перетягніть файли сюди
label_drop_files_hint: або клацніть, щоб додати файли
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Додати вкладення
label_formattable_attachment_hint: Attach and link files by dropping on this field,
or pasting from the clipboard.
@ -414,7 +416,7 @@ uk:
hierarchy_headline: Hierarchy
children_headline: Дочірні елементи
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Змінити батьківський об'єкт
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -274,6 +274,8 @@ vi:
label_attachments: Tập tin
label_drop_files: Thả các tập tin ở đây
label_drop_files_hint: hoặc nhấn vào đây để thêm tập tin
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: Add attachments
label_formattable_attachment_hint: Đính kèm và liên kết tập tin bằng cách thả
vào đây, hoặc copy và dán.
@ -414,7 +416,7 @@ vi:
hierarchy_headline: Hệ thống phân cấp
children_headline: Children
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: Change parent
remove_parent: Remove parent
group_by_wp_type: Group by work package type

@ -265,6 +265,8 @@ zh-TW:
label_attachments: 檔案
label_drop_files: 將檔案拖曳至此處
label_drop_files_hint: 或按一下要添加的檔
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: 新增附件
label_formattable_attachment_hint: 藉由拖放或從剪貼簿貼上至此欄位來附加和連結檔案。
label_remove_file: 刪除 %{fileName}
@ -399,7 +401,7 @@ zh-TW:
hierarchy_headline: Hierarchy
children_headline: 子階
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: 改變上層
remove_parent: 移除上一層
group_by_wp_type: 按工作包類型分組

@ -260,6 +260,8 @@ zh:
label_attachments: 文件
label_drop_files: 将文件拖至此处
label_drop_files_hint: 或单击以添加文件
label_drop_folders_hint: You cannot upload folders as an attachment. Please select
single files.
label_add_attachments: 添加附件
label_formattable_attachment_hint: 将文件拖拽到此区域或从剪贴板粘贴以附加文件
label_remove_file: 删除 %{fileName}
@ -392,7 +394,7 @@ zh:
hierarchy_headline: 层次结构
children_headline: 子类
relation_buttons:
set_parent: Set parent work package
set_parent: Set parent
change_parent: 更改父级
remove_parent: 删除上一级
group_by_wp_type: 按工作包类型分组

@ -312,6 +312,7 @@ en:
label_attachments: Files
label_drop_files: Drop files here
label_drop_files_hint: or click to add files
label_drop_folders_hint: You cannot upload folders as an attachment. Please select single files.
label_add_attachments: "Add attachments"
label_formattable_attachment_hint: "Attach and link files by dropping on this field, or pasting from the clipboard."
label_remove_file: "Delete %{fileName}"
@ -440,7 +441,7 @@ en:
children_headline: "Children"
relation_buttons:
set_parent: "Set parent work package"
set_parent: "Set parent"
change_parent: "Change parent"
remove_parent: "Remove parent"
group_by_wp_type: "Group by work package type"

@ -0,0 +1,33 @@
# Puma can serve each request in a thread from an internal thread pool.
# The `threads` method setting takes two numbers: a minimum and maximum.
# Any libraries that use thread pools should be configured to match
# the maximum value specified for Puma.
#
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 1 }
threads threads_count, threads_count
# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
#
port ENV.fetch("PORT") { 3000 }
# Specifies the `environment` that Puma will run in.
#
environment ENV.fetch("RAILS_ENV") { "development" }
# Specifies the number of `workers` to boot in clustered mode.
# Workers are forked webserver processes. If using threads and workers together
# the concurrency of the application would be max `threads` * `workers`.
# Workers do not work on JRuby or Windows (both of which do not support
# processes).
#
workers ENV.fetch("WEB_CONCURRENCY") { 1 }
# Use the `preload_app!` method when specifying a `workers` number.
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory.
#
preload_app! if Rails.env.production?
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart

@ -125,13 +125,10 @@ Permanently deletes the specified time entry.
+ Parameters
+ id (required, integer, `1`) ... Time entry id
+ Response 202
+ Response 204
Returned if the time entry was deleted successfully.
Note that the response body is empty as of now. In future versions of the API a body
*might* be returned, indicating the progress of deletion.
+ Body
+ Response 403 (application/hal+json)

@ -66,7 +66,7 @@ export class AutocompleteSelectDecorationComponent {
public remove(item:AutocompleteSelectDecorationItem) {
_.remove(this.selectedItems, (selected) => selected.id === item.id);
let val = this.$select!.val();
let val = this.$select!.val() as any;
_.remove(val, (id) => id === item.id);
this.$select!.val(val);
}

@ -1,11 +0,0 @@
<section class="collapsible-section" ng-class="{ '-expanded': $ctrl.expanded }">
<accessible-by-keyboard execute="$ctrl.toggle()"
link-aria-label="{{ ::$ctrl.sectionTitle }}"
link-class="collapsible-section--toggle-link"
span-class="collapsible-section--legend">
<span ng-bind="::$ctrl.sectionTitle"></span>
</accessible-by-keyboard>
<div class="collapsible-section--body toggle-slide-animation" ng-show="$ctrl.expanded">
<ng-transclude></ng-transclude>
</div>
</section>

@ -70,7 +70,7 @@ function groupEditInPlace($timeout:any):any {
}
scope.editing = true;
scope.nameBefore = scope.name;
$timeout(function(){
$timeout(function() {
angular.element('input', element).trigger('focus');
}, 100);
};
@ -88,7 +88,7 @@ function groupEditInPlace($timeout:any):any {
};
scope.saveEdition = function() {
let newValue: string = angular.element("input", element[0]).first().val();
let newValue:string = angular.element("input", element[0]).first().val() as string;
scope.nameOriginal = scope.name;
scope.name = newValue.trim();
scope.leaveEditingMode();

@ -168,7 +168,7 @@ function typesFormConfigurationCtrl(
if (group) {
originator = group.find('.type-form-query');
} else {
originator = jQuery(event.target).closest('.type-form-query');
originator = jQuery(event.target).closest('.type-form-query') as JQuery;
}
const currentQuery = $scope.extractQuery(originator);
@ -208,8 +208,8 @@ function typesFormConfigurationCtrl(
// with the active groups.
groups.forEach((groupEl:HTMLElement) => {
let group:JQuery = jQuery(groupEl);
let groupKey:string = group.attr('data-key');
let keyIsSymbol:boolean = JSON.parse(group.attr('data-key-is-symbol'));
let groupKey:string = group.attr('data-key') as string;
let keyIsSymbol:boolean = JSON.parse(group.attr('data-key-is-symbol') as string);
let attrKeys:string[] = [];
angular.element(group).removeClass('-error');
@ -242,7 +242,7 @@ function typesFormConfigurationCtrl(
// For attribute groups, extract the attributes
group.find('.type-form-conf-attribute').each((i, attribute) => {
let attr:JQuery = jQuery(attribute);
let key:string = attr.attr('data-key');
let key:string = attr.attr('data-key') as string;
attrKeys.push(key);
});

@ -33,7 +33,7 @@
import * as TAngular from 'angular';
import * as TLodash from 'lodash';
import {State} from "reactivestates";
import {InputState, State} from "reactivestates";
import {GlobalI18n} from "../../src/app/modules/common/i18n/i18n.service";
export interface IPluginContext {
@ -49,7 +49,7 @@ declare global {
guardedLocalStorage(key:string, newValue?:string):string|void,
environment:string,
getPluginContext():Promise<IPluginContext>,
pluginContext:State<IPluginContext>
pluginContext:InputState<IPluginContext>
};
}
const angular:typeof TAngular;

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save