Merge branch 'stable' into unstable
This commit is contained in:
commit
c87738daf2
10
Gemfile
10
Gemfile
|
@ -14,8 +14,8 @@ group :test do
|
|||
gem 'edavis10-object_daddy', :require => 'object_daddy'
|
||||
gem 'mocha'
|
||||
|
||||
platforms :mri_18 do gem 'ruby-debug' end
|
||||
platforms :mri_19 do gem 'ruby-debug19', :require => 'ruby-debug' end
|
||||
platforms :mri_18, :mingw_18 do gem 'ruby-debug' end
|
||||
platforms :mri_19, :mingw_19 do gem 'ruby-debug19', :require => 'ruby-debug' end
|
||||
end
|
||||
|
||||
group :openid do
|
||||
|
@ -32,7 +32,7 @@ end
|
|||
# orders of magnitude compared to their native counterparts. You have been
|
||||
# warned.
|
||||
|
||||
platforms :mri do
|
||||
platforms :mri, :mingw do
|
||||
group :mysql do
|
||||
gem "mysql"
|
||||
# gem "ruby-mysql"
|
||||
|
@ -48,13 +48,13 @@ platforms :mri do
|
|||
end
|
||||
end
|
||||
|
||||
platforms :mri_18 do
|
||||
platforms :mri_18, :mingw_18 do
|
||||
group :sqlite do
|
||||
gem "sqlite3-ruby", "< 1.3", :require => "sqlite3"
|
||||
end
|
||||
end
|
||||
|
||||
platforms :mri_19 do
|
||||
platforms :mri_19, :mingw_19 do
|
||||
group :sqlite do
|
||||
gem "sqlite3"
|
||||
end
|
||||
|
|
|
@ -286,7 +286,7 @@ private
|
|||
render_error l(:error_no_tracker_in_project)
|
||||
return false
|
||||
end
|
||||
@issue.start_date ||= User.current.today
|
||||
@issue.start_date ||= User.current.today if Setting.issue_startdate_is_adddate?
|
||||
if params[:issue].is_a?(Hash)
|
||||
@issue.safe_attributes = params[:issue]
|
||||
if User.current.allowed_to?(:add_issue_watchers, @project) && @issue.new_record?
|
||||
|
|
|
@ -208,7 +208,10 @@ class Query < ActiveRecord::Base
|
|||
@available_filters["assigned_to_role"] = { :type => :list_optional, :order => 7, :values => role_values } unless role_values.empty?
|
||||
|
||||
if User.current.logged?
|
||||
@available_filters["watcher_id"] = { :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] }
|
||||
# populate the watcher list with the same user list as other user filters if the user has the :view_issue_watchers permission in at least one project
|
||||
# TODO: this could be differentiated more, e.g. all users could watch issues in public projects, but won't necessarily be shown here
|
||||
watcher_values = User.current.allowed_to_globally?(:view_issue_watchers, {}) ? user_values : [["<< #{l(:label_me)} >>", "me"]]
|
||||
@available_filters["watcher_id"] = { :type => :list, :order => 15, :values => watcher_values }
|
||||
end
|
||||
|
||||
if project
|
||||
|
@ -442,8 +445,21 @@ class Query < ActiveRecord::Base
|
|||
elsif field == 'watcher_id'
|
||||
db_table = Watcher.table_name
|
||||
db_field = 'user_id'
|
||||
sql << "#{Issue.table_name}.id #{ operator == '=' ? 'IN' : 'NOT IN' } (SELECT #{db_table}.watchable_id FROM #{db_table} WHERE #{db_table}.watchable_type='Issue' AND "
|
||||
sql << sql_for_field(field, '=', v, db_table, db_field) + ')'
|
||||
if User.current.admin?
|
||||
# Admins can always see all watchers
|
||||
sql << "#{Issue.table_name}.id #{operator == '=' ? 'IN' : 'NOT IN'} (SELECT #{db_table}.watchable_id FROM #{db_table} WHERE #{db_table}.watchable_type='Issue' AND #{sql_for_field field, '=', v, db_table, db_field})"
|
||||
else
|
||||
sql_parts = []
|
||||
if User.current.logged? && user_id = v.delete(User.current.id.to_s)
|
||||
# a user can always see his own watched issues
|
||||
sql_parts << "#{Issue.table_name}.id #{operator == '=' ? 'IN' : 'NOT IN'} (SELECT #{db_table}.watchable_id FROM #{db_table} WHERE #{db_table}.watchable_type='Issue' AND #{sql_for_field field, '=', [user_id], db_table, db_field})"
|
||||
end
|
||||
# filter watchers only in projects the user has the permission to view watchers in
|
||||
project_ids = User.current.projects_by_role.collect {|r,p| p if r.permissions.include? :view_issue_watchers}.flatten.compact.collect(&:id).uniq
|
||||
sql_parts << "#{Issue.table_name}.id #{operator == '=' ? 'IN' : 'NOT IN'} (SELECT #{db_table}.watchable_id FROM #{db_table} WHERE #{db_table}.watchable_type='Issue' AND #{sql_for_field field, '=', v, db_table, db_field})"\
|
||||
" AND #{Project.table_name}.id IN (#{project_ids.join(',')})" unless project_ids.empty?
|
||||
sql << "(#{sql_parts.join(' OR ')})"
|
||||
end
|
||||
elsif field == "member_of_group" # named field
|
||||
if operator == '*' # Any group
|
||||
groups = Group.all
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
</div>
|
||||
|
||||
<% if @project.new_record? %>
|
||||
<fieldset class="box"><legend><%= l(:label_module_plural) %></legend>
|
||||
<fieldset class="box" id="project_modules"><legend><%= l(:label_module_plural) %> <span style="font-size:0.9em">(<%= check_all_links 'project_modules' %>)</span></legend>
|
||||
<% Redmine::AccessControl.available_project_modules.each do |m| %>
|
||||
<label class="floating">
|
||||
<%= check_box_tag 'project[enabled_module_names][]', m, @project.module_enabled?(m), :id => "project_enabled_module_names_#{m}" %>
|
||||
|
@ -38,7 +38,7 @@
|
|||
|
||||
<% if @project.new_record? || @project.module_enabled?('issue_tracking') %>
|
||||
<% unless @trackers.empty? %>
|
||||
<fieldset class="box" id="project_trackers"><legend><%=l(:label_tracker_plural)%></legend>
|
||||
<fieldset class="box" id="project_trackers"><legend><%=l(:label_tracker_plural)%> <span style="font-size:0.9em">(<%= check_all_links 'project_trackers' %>)</span></legend>
|
||||
<% @trackers.each do |tracker| %>
|
||||
<label class="floating">
|
||||
<%= check_box_tag 'project[tracker_ids][]', tracker.id, @project.trackers.include?(tracker) %>
|
||||
|
@ -50,7 +50,7 @@
|
|||
<% end %>
|
||||
|
||||
<% unless @issue_custom_fields.empty? %>
|
||||
<fieldset class="box" id="project_issue_custom_fields"><legend><%=l(:label_custom_field_plural)%></legend>
|
||||
<fieldset class="box" id="project_issue_custom_fields"><legend><%=l(:label_custom_field_plural)%> <span style="font-size:0.9em">(<%= check_all_links 'project_issue_custom_fields' %>)</span></legend>
|
||||
<% @issue_custom_fields.each do |custom_field| %>
|
||||
<label class="floating">
|
||||
<%= check_box_tag 'project[issue_custom_field_ids][]', custom_field.id, (@project.all_issue_custom_fields.include? custom_field), (custom_field.is_for_all? ? {:disabled => "disabled"} : {}) %>
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
<p><%= setting_check_box :display_subprojects_issues %></p>
|
||||
|
||||
<p><%= setting_check_box :issue_startdate_is_adddate %></p>
|
||||
|
||||
<p><%= setting_select :issue_done_ratio, Issue::DONE_RATIO_OPTIONS.collect {|i| [l("setting_issue_done_ratio_#{i}"), i]} %></p>
|
||||
|
||||
<p><%= setting_text_field :issues_export_limit, :size => 6 %></p>
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
|
||||
<p>
|
||||
<%= l(:label_version) %> <%= link_to @diff.content_from.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => @diff.content_from.version %>
|
||||
<em>(<%= @diff.content_from.author ? link_to_user(@diff.content_from.author) : l(:label_user_anonymous) %>, <%= format_time(@diff.content_from.updated_on) %>)</em>
|
||||
<em>(<%= @diff.content_from.user ? link_to_user(@diff.content_from.user) : l(:label_user_anonymous) %>, <%= format_time(@diff.content_from.updated_on) %>)</em>
|
||||
→
|
||||
<%= l(:label_version) %> <%= link_to @diff.content_to.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => @diff.content_to.version %>/<%= @page.content.version %>
|
||||
<em>(<%= @diff.content_to.author ? link_to_user(@diff.content_to.author) : l(:label_user_anonymous) %>, <%= format_time(@diff.content_to.updated_on) %>)</em>
|
||||
<em>(<%= @diff.content_to.user ? link_to_user(@diff.content_to.user) : l(:label_user_anonymous) %>, <%= format_time(@diff.content_to.updated_on) %>)</em>
|
||||
</p>
|
||||
|
||||
<div class="text-diff">
|
||||
|
|
|
@ -964,3 +964,4 @@ bg:
|
|||
label_path_encoding: Кодиране на пътищата
|
||||
text_mercurial_repo_example: локално хранилище (например /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -978,3 +978,4 @@ bs:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -967,3 +967,4 @@ ca:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -1188,3 +1188,4 @@ cs:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -980,3 +980,4 @@ da:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -370,6 +370,7 @@ de:
|
|||
setting_start_of_week: Wochenanfang
|
||||
setting_rest_api_enabled: REST-Schnittstelle aktivieren
|
||||
setting_cache_formatted_text: Formatierten Text im Cache speichern
|
||||
setting_issue_startdate_is_adddate: Neue Tickets haben "Heute" als Anfangsdatum
|
||||
|
||||
permission_add_project: Projekt erstellen
|
||||
permission_add_subprojects: Unterprojekte erstellen
|
||||
|
|
|
@ -964,3 +964,4 @@ el:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -370,6 +370,7 @@ en-GB:
|
|||
setting_commit_logtime_enabled: Enable time logging
|
||||
setting_commit_logtime_activity_id: Activity for logged time
|
||||
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
||||
permission_add_project: Create project
|
||||
permission_add_subprojects: Create subprojects
|
||||
|
|
|
@ -366,6 +366,7 @@ en:
|
|||
setting_commit_logtime_enabled: Enable time logging
|
||||
setting_commit_logtime_activity_id: Activity for logged time
|
||||
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
||||
permission_add_project: Create project
|
||||
permission_add_subprojects: Create subprojects
|
||||
|
|
|
@ -1001,3 +1001,4 @@ es:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -968,3 +968,4 @@ eu:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -967,3 +967,4 @@ fa:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -985,3 +985,4 @@ fi:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -367,6 +367,7 @@ fr:
|
|||
setting_commit_logtime_enabled: Permettre la saisie de temps
|
||||
setting_commit_logtime_activity_id: Activité pour le temps saisi
|
||||
setting_gantt_items_limit: Nombre maximum d'éléments affichés sur le gantt
|
||||
setting_issue_startdate_is_adddate: Utiliser "aujourd'hui" comme début pour les nouvelles demandes
|
||||
|
||||
permission_add_project: Créer un projet
|
||||
permission_add_subprojects: Créer des sous-projets
|
||||
|
|
|
@ -976,3 +976,4 @@ gl:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -969,3 +969,4 @@ he:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -971,3 +971,4 @@ hr:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -983,3 +983,4 @@
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -972,3 +972,4 @@ id:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -965,3 +965,4 @@ it:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -986,3 +986,4 @@ ja:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -1016,3 +1016,4 @@ ko:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -1024,3 +1024,4 @@ lt:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -959,3 +959,4 @@ lv:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -964,3 +964,4 @@ mk:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -965,3 +965,4 @@ mn:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -946,3 +946,4 @@ nl:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -951,3 +951,4 @@
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -981,3 +981,4 @@ pl:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -909,6 +909,7 @@ pt-BR:
|
|||
setting_rest_api_enabled: Habilitar REST web service
|
||||
label_missing_api_access_key: Chave de acesso a API faltando
|
||||
label_missing_feeds_access_key: Chave de acesso ao RSS faltando
|
||||
setting_issue_startdate_is_adddate: Usar data corrente como data inicial para novas tarefas
|
||||
text_line_separated: Múltiplos valores permitidos (uma linha para cada valor).
|
||||
setting_mail_handler_body_delimiters: Truncar e-mails após uma destas linhas
|
||||
permission_add_subprojects: Criar subprojetos
|
||||
|
|
|
@ -968,3 +968,4 @@ pt:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -957,3 +957,4 @@ ro:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -242,7 +242,7 @@ ru:
|
|||
button_quote: Цитировать
|
||||
button_rename: Переименовать
|
||||
button_reply: Ответить
|
||||
button_reset: Перезапустить
|
||||
button_reset: Сбросить
|
||||
button_rollback: Вернуться к данной версии
|
||||
button_save: Сохранить
|
||||
button_sort: Сортировать
|
||||
|
@ -259,7 +259,7 @@ ru:
|
|||
default_activity_design: Проектирование
|
||||
default_activity_development: Разработка
|
||||
default_doc_category_tech: Техническая документация
|
||||
default_doc_category_user: Документация пользователя
|
||||
default_doc_category_user: Пользовательская документация
|
||||
default_issue_status_in_progress: В работе
|
||||
default_issue_status_closed: Закрыта
|
||||
default_issue_status_feedback: Обратная связь
|
||||
|
@ -273,7 +273,7 @@ ru:
|
|||
default_priority_urgent: Срочный
|
||||
default_role_developer: Разработчик
|
||||
default_role_manager: Менеджер
|
||||
default_role_reporter: Генератор отчетов
|
||||
default_role_reporter: Репортёр
|
||||
default_role_non_member: Non member
|
||||
default_role_anonymous: Anonymous
|
||||
default_tracker_bug: Ошибка
|
||||
|
@ -302,25 +302,25 @@ ru:
|
|||
field_assigned_to: Назначена
|
||||
field_attr_firstname: Имя
|
||||
field_attr_lastname: Фамилия
|
||||
field_attr_login: Атрибут Регистрация
|
||||
field_attr_login: Атрибут Login
|
||||
field_attr_mail: email
|
||||
field_author: Автор
|
||||
field_auth_source: Режим аутентификации
|
||||
field_base_dn: BaseDN
|
||||
field_category: Категория
|
||||
field_column_names: Колонки
|
||||
field_column_names: Столбцы
|
||||
field_comments: Комментарий
|
||||
field_comments_sorting: Отображение комментариев
|
||||
field_content: Content
|
||||
field_created_on: Создан
|
||||
field_created_on: Создано
|
||||
field_default_value: Значение по умолчанию
|
||||
field_delay: Отложить
|
||||
field_description: Описание
|
||||
field_done_ratio: Готовность в %
|
||||
field_done_ratio: Готовность
|
||||
field_downloads: Загрузки
|
||||
field_due_date: Дата выполнения
|
||||
field_editable: Редактируемый
|
||||
field_estimated_hours: Оцененное время
|
||||
field_editable: Редактируемое
|
||||
field_estimated_hours: Оценка времени
|
||||
field_field_format: Формат
|
||||
field_filename: Файл
|
||||
field_filesize: Размер
|
||||
|
@ -372,11 +372,11 @@ ru:
|
|||
field_status: Статус
|
||||
field_subject: Тема
|
||||
field_subproject: Подпроект
|
||||
field_summary: Сводка
|
||||
field_summary: Краткое описание
|
||||
field_text: Текстовое поле
|
||||
field_time_entries: Затраченное время
|
||||
field_time_zone: Часовой пояс
|
||||
field_title: Название
|
||||
field_title: Заголовок
|
||||
field_tracker: Трекер
|
||||
field_type: Тип
|
||||
field_updated_on: Обновлено
|
||||
|
@ -392,9 +392,9 @@ ru:
|
|||
general_first_day_of_week: '1'
|
||||
general_lang_name: 'Russian (Русский)'
|
||||
general_pdf_encoding: UTF-8
|
||||
general_text_no: 'Нет'
|
||||
general_text_no: 'нет'
|
||||
general_text_No: 'Нет'
|
||||
general_text_yes: 'Да'
|
||||
general_text_yes: 'да'
|
||||
general_text_Yes: 'Да'
|
||||
|
||||
gui_validation_error: 1 ошибка
|
||||
|
@ -402,7 +402,7 @@ ru:
|
|||
gui_validation_error_plural2: "%{count} ошибки"
|
||||
gui_validation_error_plural5: "%{count} ошибок"
|
||||
|
||||
label_activity: Активность
|
||||
label_activity: Действия
|
||||
label_add_another_file: Добавить ещё один файл
|
||||
label_added_time_by: "Добавил(а) %{author} %{age} назад"
|
||||
label_added: добавлено
|
||||
|
@ -435,7 +435,7 @@ ru:
|
|||
label_board_plural: Форумы
|
||||
label_boolean: Логический
|
||||
label_browse: Обзор
|
||||
label_bulk_edit_selected_issues: Редактировать все выбранные вопросы
|
||||
label_bulk_edit_selected_issues: Редактировать все выбранные задачи
|
||||
label_calendar: Календарь
|
||||
label_calendar_filter: Включая
|
||||
label_calendar_no_assigned: не мои
|
||||
|
@ -444,9 +444,9 @@ ru:
|
|||
label_change_status: Изменить статус
|
||||
label_change_view_all: Просмотреть все изменения
|
||||
label_changes_details: Подробности по всем изменениям
|
||||
label_changeset_plural: Хранилище
|
||||
label_changeset_plural: Изменения
|
||||
label_chronological_order: В хронологическом порядке
|
||||
label_closed_issues: закрыт
|
||||
label_closed_issues: закрыто
|
||||
label_closed_issues_plural: закрыто
|
||||
label_closed_issues_plural2: закрыто
|
||||
label_closed_issues_plural5: закрыто
|
||||
|
@ -475,11 +475,11 @@ ru:
|
|||
label_date: Дата
|
||||
label_day_plural: дней(я)
|
||||
label_default: По умолчанию
|
||||
label_default_columns: Колонки по умолчанию
|
||||
label_default_columns: Столбцы по умолчанию
|
||||
label_deleted: удалено
|
||||
label_descending: По убыванию
|
||||
label_details: Подробности
|
||||
label_diff_inline: вставкой
|
||||
label_diff_inline: в тексте
|
||||
label_diff_side_by_side: рядом
|
||||
label_disabled: отключено
|
||||
label_display: Отображение
|
||||
|
@ -498,9 +498,9 @@ ru:
|
|||
label_end_to_end: с конца к концу
|
||||
label_end_to_start: с конца к началу
|
||||
label_enumeration_new: Новое значение
|
||||
label_enumerations: Справочники
|
||||
label_enumerations: Списки значений
|
||||
label_environment: Окружение
|
||||
label_equals: соответствует
|
||||
label_equals: является
|
||||
label_example: Пример
|
||||
label_export_to: Экспортировать в
|
||||
label_feed_plural: RSS
|
||||
|
@ -539,9 +539,9 @@ ru:
|
|||
label_issue_plural: Задачи
|
||||
label_issues_by: "Сортировать по %{value}"
|
||||
label_issue_status_new: Новый статус
|
||||
label_issue_status_plural: Статусы задачи
|
||||
label_issue_status_plural: Статусы задач
|
||||
label_issue_status: Статус задачи
|
||||
label_issue_tracking: Ситуация по задачам
|
||||
label_issue_tracking: Задачи
|
||||
label_issue_updated: Обновлена задача
|
||||
label_issue_view_all: Просмотреть все задачи
|
||||
label_issue_watchers: Наблюдатели
|
||||
|
@ -551,7 +551,7 @@ ru:
|
|||
label_last_login: Последнее подключение
|
||||
label_last_month: последний месяц
|
||||
label_last_n_days: "последние %{count} дней"
|
||||
label_last_week: последняя неделю
|
||||
label_last_week: последняя неделя
|
||||
label_latest_revision: Последняя редакция
|
||||
label_latest_revision_plural: Последние редакции
|
||||
label_ldap_authentication: Авторизация с помощью LDAP
|
||||
|
@ -559,7 +559,7 @@ ru:
|
|||
label_less_than_ago: менее, чем дней(я) назад
|
||||
label_list: Список
|
||||
label_loading: Загрузка...
|
||||
label_logged_as: Вошел как
|
||||
label_logged_as: Вошли как
|
||||
label_login: Войти
|
||||
label_login_with_open_id_option: или войти с помощью OpenID
|
||||
label_logout: Выйти
|
||||
|
@ -588,30 +588,30 @@ ru:
|
|||
label_my_page_block: Блок моей страницы
|
||||
label_my_projects: Мои проекты
|
||||
label_new: Новый
|
||||
label_new_statuses_allowed: Разрешены новые статусы
|
||||
label_news_added: Новость добавлена
|
||||
label_new_statuses_allowed: Разрешенные новые статусы
|
||||
label_news_added: Добавлена новость
|
||||
label_news_latest: Последние новости
|
||||
label_news_new: Добавить новость
|
||||
label_news_plural: Новости
|
||||
label_news_view_all: Посмотреть все новости
|
||||
label_news: Новости
|
||||
label_next: Следующий
|
||||
label_next: Следующее
|
||||
label_nobody: никто
|
||||
label_no_change_option: (Нет изменений)
|
||||
label_no_data: Нет данных для отображения
|
||||
label_none: отсутствует
|
||||
label_not_contains: не содержит
|
||||
label_not_equals: не соответствует
|
||||
label_open_issues: открыт
|
||||
label_not_equals: не является
|
||||
label_open_issues: открыто
|
||||
label_open_issues_plural: открыто
|
||||
label_open_issues_plural2: открыто
|
||||
label_open_issues_plural5: открыто
|
||||
label_optional_description: Описание (опционально)
|
||||
label_optional_description: Описание (необязательно)
|
||||
label_options: Опции
|
||||
label_overall_activity: Сводная активность
|
||||
label_overall_activity: Сводный отчет действий
|
||||
label_overview: Просмотр
|
||||
label_password_lost: Восстановление пароля
|
||||
label_permissions_report: Отчет о правах доступа
|
||||
label_permissions_report: Отчет по правам доступа
|
||||
label_permissions: Права доступа
|
||||
label_per_page: На страницу
|
||||
label_personalize_page: Персонализировать данную страницу
|
||||
|
@ -620,10 +620,10 @@ ru:
|
|||
label_plugins: Модули
|
||||
label_precedes: предыдущая
|
||||
label_preferences: Предпочтения
|
||||
label_preview: Предварительный просмотр
|
||||
label_previous: Предыдущий
|
||||
label_preview: Предпросмотр
|
||||
label_previous: Предыдущее
|
||||
label_profile: Профиль
|
||||
label_project: проект
|
||||
label_project: Проект
|
||||
label_project_all: Все проекты
|
||||
label_project_copy_notifications: Отправлять уведомления по электронной почте при копировании проекта
|
||||
label_project_latest: Последние проекты
|
||||
|
@ -664,7 +664,7 @@ ru:
|
|||
label_role_and_permissions: Роли и права доступа
|
||||
label_role_new: Новая роль
|
||||
label_role_plural: Роли
|
||||
label_scm: 'Тип хранилища'
|
||||
label_scm: Тип хранилища
|
||||
label_search: Поиск
|
||||
label_search_titles_only: Искать только в названиях
|
||||
label_send_information: Отправить пользователю информацию по учетной записи
|
||||
|
@ -702,7 +702,7 @@ ru:
|
|||
label_updated_time_by: "Обновлено %{author} %{age} назад"
|
||||
label_used_by: Используется
|
||||
label_user: Пользователь
|
||||
label_user_activity: "Активность пользователя %{value}"
|
||||
label_user_activity: "Действия пользователя %{value}"
|
||||
label_user_mail_no_self_notified: "Не извещать об изменениях, которые я сделал сам"
|
||||
label_user_mail_option_all: "О всех событиях во всех моих проектах"
|
||||
label_user_mail_option_selected: "О всех событиях только в выбранном проекте..."
|
||||
|
@ -760,8 +760,8 @@ ru:
|
|||
mail_body_account_activation_request: "Зарегистрирован новый пользователь (%{value}). Учетная запись ожидает Вашего утверждения:"
|
||||
mail_body_account_information: Информация о Вашей учетной записи
|
||||
mail_body_account_information_external: "Вы можете использовать Вашу %{value} учетную запись для входа."
|
||||
mail_body_lost_password: 'Для изменения пароля зайдите по следующей ссылке:'
|
||||
mail_body_register: 'Для активации учетной записи зайдите по следующей ссылке:'
|
||||
mail_body_lost_password: 'Для изменения пароля пройдите по следующей ссылке:'
|
||||
mail_body_register: 'Для активации учетной записи пройдите по следующей ссылке:'
|
||||
mail_body_reminder: "%{count} назначенных на Вас задач на следующие %{days} дней:"
|
||||
mail_subject_account_activation_request: "Запрос на активацию пользователя в системе %{value}"
|
||||
mail_subject_lost_password: "Ваш %{value} пароль"
|
||||
|
@ -772,8 +772,8 @@ ru:
|
|||
notice_account_invalid_creditentials: Неправильное имя пользователя или пароль
|
||||
notice_account_lost_email_sent: Вам отправлено письмо с инструкциями по выбору нового пароля.
|
||||
notice_account_password_updated: Пароль успешно обновлен.
|
||||
notice_account_pending: "Ваша учетная запись уже создана и ожидает подтверждения администратора."
|
||||
notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи зайдите по ссылке, которая выслана Вам по электронной почте.
|
||||
notice_account_pending: "Ваша учетная запись создана и ожидает подтверждения администратора."
|
||||
notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи пройдите по ссылке, которая выслана Вам по электронной почте.
|
||||
notice_account_unknown_email: Неизвестный пользователь.
|
||||
notice_account_updated: Учетная запись успешно обновлена.
|
||||
notice_account_wrong_password: Неверный пароль
|
||||
|
@ -783,15 +783,15 @@ ru:
|
|||
notice_email_sent: "Отправлено письмо %{value}"
|
||||
notice_failed_to_save_issues: "Не удалось сохранить %{count} пункт(ов) из %{total} выбранных: %{ids}."
|
||||
notice_failed_to_save_members: "Не удалось сохранить участника(ов): %{errors}."
|
||||
notice_feeds_access_key_reseted: Ваш ключ доступа RSS был перезапущен.
|
||||
notice_feeds_access_key_reseted: Ваш ключ доступа RSS был сброшен.
|
||||
notice_file_not_found: Страница, на которую Вы пытаетесь зайти, не существует или удалена.
|
||||
notice_locking_conflict: Информация обновлена другим пользователем.
|
||||
notice_no_issue_selected: "Не выбрано ни одной задачи! Пожалуйста, отметьте задачи, которые Вы хотите отредактировать."
|
||||
notice_not_authorized: У Вас нет прав для посещения данной страницы.
|
||||
notice_successful_connection: Подключение успешно установлено.
|
||||
notice_successful_create: Создание успешно завершено.
|
||||
notice_successful_delete: Удаление успешно завершено.
|
||||
notice_successful_update: Обновление успешно завершено.
|
||||
notice_successful_create: Создание успешно.
|
||||
notice_successful_delete: Удаление успешно.
|
||||
notice_successful_update: Обновление успешно.
|
||||
notice_unable_delete_version: Невозможно удалить версию.
|
||||
|
||||
permission_add_issues: Добавление задач
|
||||
|
@ -800,7 +800,7 @@ ru:
|
|||
permission_add_messages: Отправка сообщений
|
||||
permission_browse_repository: Просмотр хранилища
|
||||
permission_comment_news: Комментирование новостей
|
||||
permission_commit_access: Разрешение фиксации
|
||||
permission_commit_access: Изменение файлов в хранилище
|
||||
permission_delete_issues: Удаление задач
|
||||
permission_delete_messages: Удаление сообщений
|
||||
permission_delete_own_messages: Удаление собственных сообщений
|
||||
|
@ -819,7 +819,7 @@ ru:
|
|||
permission_log_time: Учет затраченного времени
|
||||
permission_view_changesets: Просмотр изменений хранилища
|
||||
permission_view_time_entries: Просмотр затраченного времени
|
||||
permission_manage_project_activities: Управление активностью проекта
|
||||
permission_manage_project_activities: Управление типами действий для проекта
|
||||
permission_manage_boards: Управление форумами
|
||||
permission_manage_categories: Управление категориями задач
|
||||
permission_manage_documents: Управление документами
|
||||
|
@ -857,13 +857,13 @@ ru:
|
|||
project_module_gantt: Диаграмма Ганта
|
||||
project_module_calendar: Календарь
|
||||
|
||||
setting_activity_days_default: Количество дней, отображаемых в Активности
|
||||
setting_activity_days_default: Количество дней, отображаемых в Действиях
|
||||
setting_app_subtitle: Подзаголовок приложения
|
||||
setting_app_title: Название приложения
|
||||
setting_attachment_max_size: Максимальный размер вложения
|
||||
setting_autofetch_changesets: Автоматически следить за изменениями хранилища
|
||||
setting_autologin: Автоматический вход
|
||||
setting_bcc_recipients: Использовать скрытые списки (BCC)
|
||||
setting_bcc_recipients: Использовать скрытые копии (BCC)
|
||||
setting_cache_formatted_text: Кешировать форматированный текст
|
||||
setting_commit_fix_keywords: Назначение ключевых слов
|
||||
setting_commit_logs_encoding: Кодировка комментариев в хранилище
|
||||
|
@ -881,19 +881,19 @@ ru:
|
|||
setting_file_max_size_displayed: Максимальный размер текстового файла для отображения
|
||||
setting_gravatar_enabled: Использовать аватар пользователя из Gravatar
|
||||
setting_host_name: Имя компьютера
|
||||
setting_issue_list_default_columns: Колонки, отображаемые в списке задач по умолчанию
|
||||
setting_issue_list_default_columns: Столбцы, отображаемые в списке задач по умолчанию
|
||||
setting_issues_export_limit: Ограничение по экспортируемым задачам
|
||||
setting_login_required: Необходима аутентификация
|
||||
setting_mail_from: email адрес для передачи информации
|
||||
setting_mail_from: Исходящий email адрес
|
||||
setting_mail_handler_api_enabled: Включить веб-сервис для входящих сообщений
|
||||
setting_mail_handler_api_key: API ключ
|
||||
setting_openid: Разрешить OpenID для входа и регистрации
|
||||
setting_per_page_options: Количество строк на страницу
|
||||
setting_per_page_options: Количество записей на страницу
|
||||
setting_plain_text_mail: Только простой текст (без HTML)
|
||||
setting_protocol: Протокол
|
||||
setting_repositories_encodings: Кодировки хранилища
|
||||
setting_repository_log_display_limit: Максимальное количество редакций, отображаемых в журнале изменений
|
||||
setting_self_registration: Возможна саморегистрация
|
||||
setting_self_registration: Саморегистрация
|
||||
setting_sequential_project_identifiers: Генерировать последовательные идентификаторы проектов
|
||||
setting_sys_api_enabled: Включить веб-сервис для управления хранилищем
|
||||
setting_text_formatting: Форматирование текста
|
||||
|
@ -907,14 +907,14 @@ ru:
|
|||
status_registered: зарегистрирован
|
||||
|
||||
text_are_you_sure_with_children: Удалить задачу и все ее подзадачи?
|
||||
text_are_you_sure: Подтвердите
|
||||
text_are_you_sure: Вы уверены?
|
||||
text_assign_time_entries_to_project: Прикрепить зарегистрированное время к проекту
|
||||
text_caracters_maximum: "Максимум %{count} символов(а)."
|
||||
text_caracters_minimum: "Должно быть не менее %{count} символов."
|
||||
text_comma_separated: Допустимы несколько значений (через запятую).
|
||||
text_custom_field_possible_values_info: 'По одному значению в каждой строке'
|
||||
text_default_administrator_account_changed: Учетная запись администратора по умолчанию изменена
|
||||
text_destroy_time_entries_question: Вы собираетесь удалить %{hours} часа(ов), прикрепленных за этой задачей.
|
||||
text_destroy_time_entries_question: "На эту задачу зарегистрировано %{hours} часа(ов) затраченного времени. Что Вы хотите предпринять?"
|
||||
text_destroy_time_entries: Удалить зарегистрированное время
|
||||
text_diff_truncated: '... Этот diff ограничен, так как превышает максимальный отображаемый размер.'
|
||||
text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для Вашего SMTP-сервера Вы можете в файле config/configuration.yml. Для применения изменений перезапустите приложение."
|
||||
|
@ -933,31 +933,31 @@ ru:
|
|||
text_journal_set_to: "Параметр %{label} изменился на %{value}"
|
||||
text_length_between: "Длина между %{min} и %{max} символов."
|
||||
text_load_default_configuration: Загрузить конфигурацию по умолчанию
|
||||
text_min_max_length_info: 0 означает отсутствие запретов
|
||||
text_min_max_length_info: 0 означает отсутствие ограничений
|
||||
text_no_configuration_data: "Роли, трекеры, статусы задач и оперативный план не были сконфигурированы.\nНастоятельно рекомендуется загрузить конфигурацию по-умолчанию. Вы сможете её изменить потом."
|
||||
text_plugin_assets_writable: Каталог для плагинов доступен по записи
|
||||
text_plugin_assets_writable: Каталог модулей доступен для записи
|
||||
text_project_destroy_confirmation: Вы настаиваете на удалении данного проекта и всей относящейся к нему информации?
|
||||
text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier can not be changed.'
|
||||
text_reassign_time_entries: 'Перенести зарегистрированное время на следующую задачу:'
|
||||
text_regexp_info: напр. ^[A-Z0-9]+$
|
||||
text_regexp_info: "например: ^[A-Z0-9]+$"
|
||||
text_repository_usernames_mapping: "Выберите или обновите пользователя Redmine, связанного с найденными именами в журнале хранилища.\nПользователи с одинаковыми именами или email в Redmine и хранилище связываются автоматически."
|
||||
text_rmagick_available: Доступно использование RMagick (опционально)
|
||||
text_select_mail_notifications: Выберите действия, на которые будет отсылаться уведомление на электронную почту.
|
||||
text_select_mail_notifications: Выберите действия, при которых будет отсылаться уведомление на электронную почту.
|
||||
text_select_project_modules: 'Выберите модули, которые будут использованы в проекте:'
|
||||
text_status_changed_by_changeset: "Реализовано в %{value} редакции."
|
||||
text_subprojects_destroy_warning: "Подпроекты: %{value} также будут удалены."
|
||||
text_tip_issue_begin_day: дата начала задачи
|
||||
text_tip_issue_begin_end_day: начало задачи и окончание ее в этот день
|
||||
text_tip_issue_begin_end_day: начало задачи и окончание ее в этот же день
|
||||
text_tip_issue_end_day: дата завершения задачи
|
||||
text_tracker_no_workflow: Для этого трекера последовательность действий не определена
|
||||
text_unallowed_characters: Запрещенные символы
|
||||
text_user_mail_option: "Для невыбранных проектов, Вы будете получать уведомления только о том что просматриваете или в чем участвуете (например, вопросы, автором которых Вы являетесь или которые Вам назначены)."
|
||||
text_user_mail_option: "Для невыбранных проектов, Вы будете получать уведомления только о том, что просматриваете или в чем участвуете (например, задачи, автором которых Вы являетесь, или которые Вам назначены)."
|
||||
text_user_wrote: "%{value} писал(а):"
|
||||
text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную Wiki и все ее содержимое?
|
||||
text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний
|
||||
|
||||
warning_attachments_not_saved: "%{count} файл(ов) невозможно сохранить."
|
||||
text_wiki_page_destroy_question: Эта страница имеет %{descendants} дочерних страниц и их потомков. Что вы хотите сделать?
|
||||
text_wiki_page_destroy_question: Эта страница имеет %{descendants} дочерних страниц и их потомков. Что вы хотите предпринять?
|
||||
text_wiki_page_reassign_children: Переопределить дочерние страницы на текущую страницу
|
||||
text_wiki_page_nullify_children: Сделать дочерние страницы главными страницами
|
||||
text_wiki_page_destroy_children: Удалить дочерние страницы и всех их потомков
|
||||
|
@ -975,14 +975,14 @@ ru:
|
|||
label_tag: Метка
|
||||
label_branch: Ветвь
|
||||
error_no_tracker_in_project: С этим проектом не ассоциирован ни один трекер. Проверьте настройки проекта.
|
||||
error_no_default_issue_status: Не определен статус задача по умолчанию. Проверьте настройки (см. "Администрирование -> Статусы задачи").
|
||||
error_no_default_issue_status: Не определен статус задач по умолчанию. Проверьте настройки (см. "Администрирование -> Статусы задач").
|
||||
label_group_plural: Группы
|
||||
label_group: Группа
|
||||
label_group_new: Новая группа
|
||||
label_time_entry_plural: Затраченное время
|
||||
text_journal_added: "%{label} %{value} добавлен"
|
||||
field_active: Активно
|
||||
enumeration_system_activity: Системная активность
|
||||
enumeration_system_activity: Системное
|
||||
permission_delete_issue_watchers: Удаление наблюдателей
|
||||
version_status_closed: закрыт
|
||||
version_status_locked: заблокирован
|
||||
|
@ -998,7 +998,7 @@ ru:
|
|||
label_version_sharing_descendants: С подпроектами
|
||||
label_version_sharing_tree: С деревом проектов
|
||||
label_version_sharing_none: Без совместного использования
|
||||
error_can_not_archive_project: Этот проект не может быть архивирован
|
||||
error_can_not_archive_project: Этот проект не может быть заархивирован
|
||||
button_duplicate: Дублировать
|
||||
button_copy_and_follow: Копировать и продолжить
|
||||
label_copy_source: Источник
|
||||
|
@ -1009,7 +1009,7 @@ ru:
|
|||
setting_issue_done_ratio_issue_field: Готовность задачи
|
||||
label_copy_same_as_target: То же, что и у цели
|
||||
label_copy_target: Цель
|
||||
notice_issue_done_ratios_updated: Параметр готовность задач обновлен.
|
||||
notice_issue_done_ratios_updated: Параметр «готовность» обновлен.
|
||||
error_workflow_copy_source: Выберите исходный трекер или роль
|
||||
label_update_issue_done_ratios: Обновить готовность задач
|
||||
setting_start_of_week: День начала недели
|
||||
|
@ -1045,14 +1045,14 @@ ru:
|
|||
notice_not_authorized_archived_project: Запрашиваемый проект был архивирован.
|
||||
label_principal_search: "Найти пользователя или группу:"
|
||||
label_user_search: "Найти пользователя:"
|
||||
field_visible: Видимый
|
||||
field_visible: Видимое
|
||||
setting_emails_header: Заголовок письма
|
||||
|
||||
setting_commit_logtime_activity_id: Activity for logged time
|
||||
text_time_logged_by_changeset: Applied in changeset %{value}.
|
||||
setting_commit_logtime_enabled: Enable time logging
|
||||
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
|
||||
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
|
||||
setting_commit_logtime_activity_id: Действие для учета времени
|
||||
text_time_logged_by_changeset: Учтено в редакции %{value}.
|
||||
setting_commit_logtime_enabled: Включить учет времени
|
||||
notice_gantt_chart_truncated: Диаграмма будет усечена, поскольку превышено максимальное кол-во элементов, которые могут отображаться (%{max})
|
||||
setting_gantt_items_limit: Максимальное кол-во элементов отображаемых на диаграмме Ганта
|
||||
text_powered_by: Powered by %{link}
|
||||
label_cvs_module: Модуль
|
||||
label_filesystem_path: Каталог
|
||||
|
@ -1061,19 +1061,20 @@ ru:
|
|||
label_cvs_path: CVSROOT
|
||||
label_git_path: Путь к каталогу .git
|
||||
label_mercurial_path: Каталог
|
||||
label_my_queries: My custom queries
|
||||
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
|
||||
label_my_queries: Мои сохраненные запросы
|
||||
label_additional_workflow_transitions_for_assignee: Дополнительные переходы, когда пользователь является исполнителем
|
||||
text_journal_changed_no_detail: "%{label} updated"
|
||||
button_expand_all: Expand all
|
||||
button_collapse_all: Collapse all
|
||||
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
|
||||
button_expand_all: Развернуть все
|
||||
button_collapse_all: Свернуть все
|
||||
label_additional_workflow_transitions_for_author: Дополнительные переходы, когда пользователь является автором
|
||||
field_effective_date: Due date
|
||||
label_news_comment_added: Comment added to a news
|
||||
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
|
||||
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
|
||||
field_warn_on_leaving_unsaved: Предупреждать при закрытии страницы с несохраненным текстом
|
||||
text_warn_on_leaving_unsaved: Текущая страница содержит несохраненный текст, который будет потерян, если вы покинете эту страницу.
|
||||
text_default_encoding: "Default: UTF-8"
|
||||
text_git_repo_example: a bare and local repository (e.g. /gitrepo, c:\gitrepo)
|
||||
label_notify_member_plural: Email issue updates
|
||||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -959,3 +959,4 @@ sk:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -960,3 +960,4 @@ sl:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -964,3 +964,4 @@ sr-YU:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -965,3 +965,4 @@ sr:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -1006,3 +1006,4 @@ sv:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -961,3 +961,4 @@ th:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -983,3 +983,4 @@ tr:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -960,3 +960,4 @@ uk:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -1015,3 +1015,4 @@ vi:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -1046,3 +1046,4 @@
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -978,3 +978,4 @@ zh:
|
|||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
label_diff: diff
|
||||
setting_issue_startdate_is_adddate: Use current date as start date for new issues
|
||||
|
|
|
@ -178,3 +178,5 @@ default_notification_option:
|
|||
default: 'only_my_events'
|
||||
emails_header:
|
||||
default: ''
|
||||
issue_startdate_is_adddate:
|
||||
default: 1
|
|
@ -12,18 +12,24 @@
|
|||
#++
|
||||
|
||||
class MergeWikiVersionsWithJournals < ActiveRecord::Migration
|
||||
def self.up
|
||||
# This is provided here for migrating up after the WikiContent::Version class has been removed
|
||||
unless WikiContent.const_defined?("Version")
|
||||
WikiContent.const_set("Version", Class.new(ActiveRecord::Base))
|
||||
# This is provided here for migrating up after the WikiContent::Version class has been removed
|
||||
class WikiContent < ActiveRecord::Base
|
||||
class Version < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def self.up
|
||||
# avoid touching WikiContent on journal creation
|
||||
WikiContentJournal.class_exec {
|
||||
def touch_journaled_after_creation
|
||||
end
|
||||
}
|
||||
|
||||
# assign all wiki_contents w/o author to the anonymous user - they used to
|
||||
# work w/o author but don't any more.
|
||||
WikiContent.update_all({:author_id => User.anonymous.id}, :author_id => nil)
|
||||
WikiContent::Version.update_all({:author_id => User.anonymous.id}, :author_id => nil)
|
||||
|
||||
WikiContent::Version.find_by_sql("SELECT * FROM wiki_content_versions").each do |wv|
|
||||
journal = WikiContentJournal.create!(:journaled_id => wv.wiki_content_id, :user_id => wv.author_id,
|
||||
:notes => wv.comments, :created_at => wv.updated_on, :activity_type => "wiki_edits")
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
= ChiliProject changelog
|
||||
|
||||
== 2011-10-04 v2.3.0
|
||||
|
||||
* Bug #594: Wiki Diff somehow off
|
||||
* Bug #617: Gemfile: Missing database related platform block for Windows + RubyInstaller
|
||||
* Bug #619: Redmine.pm allows anonymous read access to repositories even if Anonymous role prohibits it
|
||||
* Bug #633: Update from 1.x to 2.x impossible under rare but valid circumstances
|
||||
* Feature #355: Turn on/off the if the start date will autofill by default
|
||||
* Feature #566: The "Watcher" filter should show all users.
|
||||
* Feature #644: Add Check/Uncheck all links to project form
|
||||
|
||||
== 2011-08-27 v2.2.0
|
||||
|
||||
* Bug #256: requires_redmine_plugin should defer loading plugins if not all dependencies are met
|
||||
|
|
|
@ -318,7 +318,7 @@ sub access_handler {
|
|||
my $project_id = get_project_identifier($r);
|
||||
|
||||
$r->set_handlers(PerlAuthenHandler => [\&OK])
|
||||
if is_public_project($project_id, $r);
|
||||
if is_public_project($project_id, $r) && anonymous_role_allows_browse_repository($r);
|
||||
|
||||
return OK
|
||||
}
|
||||
|
@ -390,6 +390,29 @@ sub is_public_project {
|
|||
$ret;
|
||||
}
|
||||
|
||||
sub anonymous_role_allows_browse_repository {
|
||||
my $r = shift;
|
||||
|
||||
my $dbh = connect_database($r);
|
||||
my $sth = $dbh->prepare(
|
||||
"SELECT permissions FROM roles WHERE builtin = 2;"
|
||||
);
|
||||
|
||||
$sth->execute();
|
||||
my $ret = 0;
|
||||
if (my @row = $sth->fetchrow_array) {
|
||||
if ($row[0] =~ /:browse_repository/) {
|
||||
$ret = 1;
|
||||
}
|
||||
}
|
||||
$sth->finish();
|
||||
undef $sth;
|
||||
$dbh->disconnect();
|
||||
undef $dbh;
|
||||
|
||||
$ret;
|
||||
}
|
||||
|
||||
# perhaps we should use repository right (other read right) to check public access.
|
||||
# it could be faster BUT it doesn't work for the moment.
|
||||
# sub is_public_project_by_file {
|
||||
|
|
|
@ -17,7 +17,7 @@ module ChiliProject
|
|||
module VERSION #:nodoc:
|
||||
|
||||
MAJOR = 2
|
||||
MINOR = 2
|
||||
MINOR = 3
|
||||
PATCH = 0
|
||||
TINY = PATCH # Redmine compat
|
||||
|
||||
|
|
|
@ -444,6 +444,101 @@ class QueryTest < ActiveSupport::TestCase
|
|||
|
||||
end
|
||||
|
||||
context "'watcher_id' filter" do
|
||||
context "globally" do
|
||||
context "for an anonymous user" do
|
||||
should "not be present" do
|
||||
assert ! @query.available_filters.keys.include?("watcher_id")
|
||||
end
|
||||
end
|
||||
|
||||
context "for a logged in user" do
|
||||
setup do
|
||||
User.current = User.find 1
|
||||
end
|
||||
|
||||
teardown do
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
should "be present" do
|
||||
assert @query.available_filters.keys.include?("watcher_id")
|
||||
end
|
||||
|
||||
should "be a list" do
|
||||
assert_equal :list, @query.available_filters["watcher_id"][:type]
|
||||
end
|
||||
|
||||
should "have a list of active users as values" do
|
||||
assert @query.available_filters["watcher_id"][:values].include?(["<< me >>", "me"])
|
||||
assert @query.available_filters["watcher_id"][:values].include?(["John Smith", "2"])
|
||||
assert @query.available_filters["watcher_id"][:values].include?(["Dave Lopper", "3"])
|
||||
assert @query.available_filters["watcher_id"][:values].include?(["redMine Admin", "1"])
|
||||
assert @query.available_filters["watcher_id"][:values].include?(["User Misc", "8"])
|
||||
end
|
||||
|
||||
should "not include active users not member of any project" do
|
||||
assert ! @query.available_filters["watcher_id"][:values].include?(['Robert Hill','4'])
|
||||
end
|
||||
|
||||
should "not include locked users as values" do
|
||||
assert ! @query.available_filters["watcher_id"][:values].include?(['Dave2 Lopper2','5'])
|
||||
end
|
||||
|
||||
should "not include the anonymous user as values" do
|
||||
assert ! @query.available_filters["watcher_id"][:values].include?(['Anonymous','6'])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "in a project" do
|
||||
setup do
|
||||
@query.project = Project.find(1)
|
||||
end
|
||||
|
||||
context "for an anonymous user" do
|
||||
should "not be present" do
|
||||
assert ! @query.available_filters.keys.include?("watcher_id")
|
||||
end
|
||||
end
|
||||
|
||||
context "for a logged in user" do
|
||||
setup do
|
||||
User.current = User.find 1
|
||||
end
|
||||
|
||||
teardown do
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
should "be present" do
|
||||
assert @query.available_filters.keys.include?("watcher_id")
|
||||
end
|
||||
|
||||
should "be a list" do
|
||||
assert_equal :list, @query.available_filters["watcher_id"][:type]
|
||||
end
|
||||
|
||||
should "have a list of the project members as values" do
|
||||
assert @query.available_filters["watcher_id"][:values].include?(["<< me >>", "me"])
|
||||
assert @query.available_filters["watcher_id"][:values].include?(["John Smith", "2"])
|
||||
assert @query.available_filters["watcher_id"][:values].include?(["Dave Lopper", "3"])
|
||||
end
|
||||
|
||||
should "not include non-project members as values" do
|
||||
assert ! @query.available_filters["watcher_id"][:values].include?(["redMine Admin", "1"])
|
||||
end
|
||||
|
||||
should "not include locked project members as values" do
|
||||
assert ! @query.available_filters["watcher_id"][:values].include?(['Dave2 Lopper2','5'])
|
||||
end
|
||||
|
||||
should "not include the anonymous user as values" do
|
||||
assert ! @query.available_filters["watcher_id"][:values].include?(['Anonymous','6'])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "#statement" do
|
||||
|
|
Loading…
Reference in New Issue