Commit e6e057d1 authored by Holger Just's avatar Holger Just

Merge branch 'release-v3.2.0' into stable

parents d61ad013 bd132c56
......@@ -31,3 +31,4 @@ doc/app
/.rvmrc*
/*.iml
/.idea
.rbx
language: ruby
rvm:
- 1.8.7
- 1.9.2
- 1.9.3
- rbx-18mode
env:
- "RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- "RAILS_ENV=test DB=mysql2 BUNDLE_WITHOUT=rmagick:mysql:postgres:sqlite"
- "RAILS_ENV=test DB=postgres BUNDLE_WITHOUT=rmagick:mysql:mysql2:sqlite"
- "RAILS_ENV=test DB=sqlite BUNDLE_WITHOUT=rmagick:mysql:mysql2:postgres"
matrix:
exclude:
- rvm: 1.9.2
env: "RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: 1.9.3
env: "RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: rbx-18mode
env: "RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
allow_failures:
- rvm: rbx-18mode
before_script:
- "sudo apt-get --no-install-recommends install bzr cvs darcs git mercurial subversion"
- "rake ci:travis:prepare"
branches:
only:
- unstable
- master
- stable
notifications:
email: false
irc: "irc.freenode.org#chiliproject"
......@@ -9,12 +9,15 @@ gem "rubytree", "~> 0.5.2", :require => 'tree'
gem "rdoc", ">= 2.4.2"
gem "liquid", "~> 2.3.0"
gem "acts-as-taggable-on", "= 2.1.0"
gem 'gravatarify', '~> 3.0.0'
# Needed only on RUBY_VERSION = 1.8, ruby 1.9+ compatible interpreters should bring their csv
gem "fastercsv", "~> 1.5.0", :platforms => [:ruby_18, :jruby, :mingw_18]
gem "tzinfo", "~> 0.3.31" # Fixes #903. Not required for Rails >= 3.2
group :test do
gem 'shoulda', '~> 2.10.3'
# Shoulda doesn't work nice on 1.9.3 and seems to need test-unit explicitely…
gem 'test-unit', :platforms => [:mri_19]
gem 'edavis10-object_daddy', :require => 'object_daddy'
gem 'mocha'
gem 'capybara'
......@@ -52,7 +55,7 @@ end
# orders of magnitude compared to their native counterparts. You have been
# warned.
platforms :mri, :mingw do
platforms :mri, :mingw, :rbx do
group :mysql2 do
gem "mysql2", "~> 0.2.7"
end
......@@ -74,7 +77,7 @@ platforms :mri_18, :mingw_18 do
end
end
platforms :mri_19, :mingw_19 do
platforms :mri_19, :mingw_19, :rbx do
group :sqlite do
gem "sqlite3"
end
......
......@@ -77,7 +77,7 @@ class AdminController < ApplicationController
def info
@db_adapter_name = ActiveRecord::Base.connection.adapter_name
@checklist = [
[:text_default_administrator_account_changed, User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?],
[:text_default_administrator_account_changed, !User.find_by_login("admin").try(:check_password?, "admin")],
[:text_file_repository_writable, File.writable?(Attachment.storage_path)],
[:text_plugin_assets_writable, File.writable?(Engines.public_directory)],
[:text_rmagick_available, Object.const_defined?(:Magick)]
......
......@@ -31,18 +31,6 @@ class ApplicationController < ActionController::Base
cookies.delete(:autologin)
end
# Remove broken cookie after upgrade from 0.8.x (#4292)
# See https://rails.lighthouseapp.com/projects/8994/tickets/3360
# TODO: remove it when Rails is fixed
before_filter :delete_broken_cookies
def delete_broken_cookies
if cookies['_chiliproject_session'] && cookies['_chiliproject_session'] !~ /--/
cookies.delete '_chiliproject_session'
redirect_to home_path
return false
end
end
# FIXME: Remove this when all of Rack and Rails have learned how to
# properly use encodings
before_filter :params_filter
......
......@@ -85,7 +85,7 @@ class DocumentsController < ApplicationController
if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
# TODO: refactor
attachments.first.container.recipients.each do |recipient|
@document.recipients.each do |recipient|
Mailer.deliver_attachments_added(attachments[:files], recipient)
end
end
......
......@@ -17,7 +17,7 @@ require 'cgi'
module ApplicationHelper
include Redmine::I18n
include GravatarHelper::PublicMethods
include Gravatarify::Helper
extend Forwardable
def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
......@@ -954,6 +954,16 @@ module ApplicationHelper
(@has_content && @has_content[name]) || false
end
# Returns the gravatar image tag for the given email
# +email+ is a string with an email address
def gravatar(email, options={})
gravatarify_options = {}
gravatarify_options[:secure] = options.delete :ssl
[:default, :size, :rating, :filetype].each {|key| gravatarify_options[:key] = options.delete :key}
gravatarify_options[:html] = options
gravatar_tag email, gravatarify_options
end
# Returns the avatar image tag for the given +user+ if avatars are enabled
# +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
def avatar(user, options = { })
......
......@@ -712,7 +712,7 @@ class Issue < ActiveRecord::Base
# The default assumption is that journals have the same permissions
# as the journaled object, issue notes have separate permissions though
def journal_editable_by?(journal, user)
return true if journal.author == user && user.allowed_to?(:edit_own_issue_notes, project)
return true if journal.user == user && user.allowed_to?(:edit_own_issue_notes, project)
user.allowed_to? :edit_issue_notes, project
end
......
......@@ -41,7 +41,6 @@ class Message < ActiveRecord::Base
acts_as_watchable
attr_protected :locked, :sticky
validates_presence_of :board, :subject, :content
validates_length_of :subject, :maximum => 255
......@@ -51,7 +50,7 @@ class Message < ActiveRecord::Base
:conditions => Project.allowed_to_condition(args.first || User.current, :view_messages) } }
safe_attributes 'subject', 'content'
safe_attributes 'locked', 'sticky',
safe_attributes 'locked', 'sticky', 'board_id',
:if => lambda {|message, user|
user.allowed_to?(:edit_messages, message.project)
}
......@@ -81,9 +80,15 @@ class Message < ActiveRecord::Base
end
def after_destroy
parent.reset_last_reply_id! if parent
board.reset_counters!
end
def reset_last_reply_id!
clid = children.present? ? children.last.id : nil
self.update_attribute(:last_reply_id, clid)
end
def sticky=(arg)
write_attribute :sticky, (arg == true || arg.to_s == '1' ? 1 : 0)
end
......
......@@ -27,7 +27,7 @@ class Version < ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :name, :scope => [:project_id]
validates_length_of :name, :maximum => 60
validates_format_of :effective_date, :with => /^\d{4}-\d{2}-\d{2}$/, :message => :not_a_date, :allow_nil => true
validates_format_of :start_date, :effective_date, :with => /^\d{4}-\d{2}-\d{2}$/, :message => :not_a_date, :allow_nil => true
validates_inclusion_of :status, :in => VERSION_STATUSES
validates_inclusion_of :sharing, :in => VERSION_SHARINGS
......@@ -37,6 +37,7 @@ class Version < ActiveRecord::Base
safe_attributes 'name',
'description',
'start_date',
'effective_date',
'due_date',
'wiki_page_title',
......
<h2><%=l(:label_register)%> <%=link_to l(:label_login_with_open_id_option), signin_url if Setting.openid? %></h2>
<% form_tag({:action => 'register'}, :class => "tabular") do %>
<% form_tag({:action => 'register'}, :class => "tabular", :autocomplete => :off) do %>
<%= error_messages_for 'user' %>
<div class="box">
......
......@@ -3,8 +3,7 @@
<div class="autoscroll">
<table class="list issues">
<thead><tr>
<th class="checkbox hide-when-print"><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
:title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
<th class="checkbox hide-when-print"><%= link_to image_tag('toggle_check.png'), {}, :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
</th>
<%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
<% query.columns.each do |column| %>
......
......@@ -3,5 +3,4 @@
<%= call_hook(:view_issues_sidebar_planning_bottom) %>
<%= render_sidebar_queries %>
<%= call_hook(:view_issues_sidebar_queries_bottom) %>
<p><%= l(:mail_body_wiki_content_added, :id => link_to(h(@wiki_content.page.pretty_title), @wiki_content_url),
:author => h(@wiki_content.author)) %><br />
<em><%=h @wiki_content.comments %></em></p>
<em><%=h @wiki_content.last_journal.notes %></em></p>
<%= l(:mail_body_wiki_content_added, :id => h(@wiki_content.page.pretty_title),
:author => h(@wiki_content.author)) %>
<%= @wiki_content.comments %>
<%= @wiki_content.last_journal.notes %>
<%= @wiki_content_url %>
<p><%= l(:mail_body_wiki_content_updated, :id => link_to(h(@wiki_content.page.pretty_title), @wiki_content_url),
:author => h(@wiki_content.author)) %><br />
<em><%=h @wiki_content.comments %></em></p>
<em><%=h @wiki_content.last_journal.notes %></em></p>
<p><%= l(:label_view_diff) %>:<br />
<%= link_to h(@wiki_diff_url), @wiki_diff_url %></p>
<%= l(:mail_body_wiki_content_updated, :id => h(@wiki_content.page.pretty_title),
:author => h(@wiki_content.author)) %>
<%= @wiki_content.comments %>
<%= @wiki_content.last_journal.notes %>
<%= @wiki_content.page.pretty_title %>:
<%= @wiki_content_url %>
......
......@@ -115,4 +115,32 @@ module ActionController
end
end
end
# Backported fix for CVE-2012-2660
# https://groups.google.com/group/rubyonrails-security/browse_thread/thread/f1203e3376acec0f
# TODO: Remove this once we are on Rails >= 3.2.4
require 'action_controller/request'
class Request
protected
# Remove nils from the params hash
def deep_munge(hash)
hash.each_value do |v|
case v
when Array
v.grep(Hash) { |x| deep_munge(x) }
when Hash
deep_munge(v)
end
end
keys = hash.keys.find_all { |k| hash[k] == [nil] }
keys.each { |k| hash[k] = nil }
hash
end
def parse_query(qs)
deep_munge(super)
end
end
end
......@@ -983,22 +983,22 @@ bg:
description_choose_project: Проекти
description_date_from: Въведете начална дата
label_deleted_custom_field: (изтрито потребителско поле)
field_custom_filter: Custom LDAP filter
text_display_subprojects: Display subprojects
text_current_project: Current project
label_toc: Contents
search_input_placeholder: search ...
setting_mail_handler_confirmation_on_success: Send confirmation email on successful incoming email
label_mail_handler_confirmation: "Confirmation of email submission: %{subject}"
label_mail_handler_errors_with_submission: "There were errors with your email submission:"
label_document_watchers: Watchers
setting_mail_handler_confirmation_on_failure: Send confirmation email on failed incoming email
field_custom_filter: Потребителски LDAP филтър
text_display_subprojects: Показване на подпроекти
text_current_project: Текущ проект
label_toc: Съдържание
search_input_placeholder: търсене ...
setting_mail_handler_confirmation_on_success: Изпращане на е-мейл за потвърждение при успешен входен е-мейл
label_mail_handler_confirmation: "Потвърждение на изпратено с е-мейл: %{subject}"
label_mail_handler_errors_with_submission: "Има грешки във вашия е-мейл:"
label_document_watchers: Наблюдатели
setting_mail_handler_confirmation_on_failure: Изпращане на е-мейл за потвърждение при неуспешен входен е-мейл
label_between: between
label_mail_handler_failure: "Failed email submission: %{subject}"
notice_not_authorized_action: You are not authorized to perform this action.
text_mail_handler_confirmation_successful: Your email has been successful added at the following url
field_issue_summary: Issue summary
field_new_saved_query: New saved query
field_issue_view_all_open: View all open issues
label_subtask_add: Add a subtask
label_issue_hierarchy: Issue hierarchy
label_mail_handler_failure: "Пропаднал е-мейл: %{subject}"
notice_not_authorized_action: Вие нямате разрешение да изпълните това действие.
text_mail_handler_confirmation_successful: Вашият е-мейл беше успешно добавен на следващия адрес
field_issue_summary: Заглавие на задачата
field_new_saved_query: Нова записана заявка
field_issue_view_all_open: Разглеждане на всички отворени задачи
label_subtask_add: Добавяне на подзадача
label_issue_hierarchy: Йерархия на задачите
......@@ -2,6 +2,7 @@
# Updated by Josef Liška <jl@chl.cz>
# CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
# Based on original CZ translation by Jan Kadleček
# Reviewed by Václav Klimeš <vaclav.klimes@definity.cz>
cs:
# Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
direction: ltr
......@@ -10,16 +11,16 @@ cs:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%Y-%m-%d"
short: "%b %d"
long: "%B %d, %Y"
default: "%d.%m.%Y"
short: "%d.%m."
long: "%d. %B %Y"
day_names: [Neděle, Pondělí, Úterý, Středa, Čtvrtek, Pátek, Sobota]
day_names: [neděle, pondělí, úterý, středa, čtvrtek, pátek, sobota]
abbr_day_names: [Ne, Po, Út, St, Čt, , So]
# Don't forget the nil at the beginning; there's no such thing as a 0th month
month_names: [~, Leden, Únor, Březen, Duben, Květen, Červen, Červenec, Srpen, Září, Říjen, Listopad, Prosinec]
abbr_month_names: [~, Led, Úno, Bře, Dub, Kvě, Čer, Čec, Srp, Zář, Říj, Lis, Pro]
month_names: [~, leden, únor, březen, duben, květen, červen, červenec, srpen, září, říjen, listopad, prosinec]
abbr_month_names: [~, led, úno, bře, dub, kvě, čvn, čvc, srp, zář, říj, lis, pro]
# Used in date_select and datime_select.
order:
- :year
......@@ -28,10 +29,10 @@ cs:
time:
formats:
default: "%a, %d %b %Y %H:%M:%S %z"
default: "%m.%d.%Y %H:%M"
time: "%H:%M"
short: "%d %b %H:%M"
long: "%B %d, %Y %H:%M"
short: "%d.%m. %H:%M"
long: "%d. %B %Y %H:%M"
am: "dop."
pm: "odp."
......@@ -40,37 +41,37 @@ cs:
half_a_minute: "půl minuty"
less_than_x_seconds:
one: "méně než sekunda"
other: "méně než %{count} sekund"
other: "méně než %{count} sekund(y)"
x_seconds:
one: "1 sekunda"
other: "%{count} sekund"
other: "%{count} sekund(y)"
less_than_x_minutes:
one: "méně než minuta"
other: "méně než %{count} minut"
other: "méně než %{count} minut(y)"
x_minutes:
one: "1 minuta"
other: "%{count} minut"
other: "%{count} minut(y)"
about_x_hours:
one: "asi 1 hodina"
other: "asi %{count} hodin"
other: "asi %{count} hodin(y)"
x_days:
one: "1 den"
other: "%{count} dnů"
other: "%{count} dnů(-y)"
about_x_months:
one: "asi 1 měsíc"
other: "asi %{count} měsíců"
other: "asi %{count} měsíců(-e)"
x_months:
one: "1 měsíc"
other: "%{count} měsíců"
other: "%{count} měsíců(-e)"
about_x_years:
one: "asi 1 rok"
other: "asi %{count} let"
other: "asi %{count} roky(-ů)"
over_x_years:
one: "více než 1 rok"
other: "více než %{count} roky"
other: "více než %{count} roky(-ů)"
almost_x_years:
one: "témeř 1 rok"
other: "téměř %{count} roky"
other: "téměř %{count} roky(-ů)"
number:
# Výchozí formát pro čísla
......@@ -86,8 +87,8 @@ cs:
format: "%n %u"
units:
byte:
one: "Bajt"
other: "Bajtů"
one: "bajt"
other: "bajtů"
kb: "kB"
mb: "MB"
gb: "GB"
......@@ -98,14 +99,14 @@ cs:
support:
array:
sentence_connector: "a"
skip_last_comma: false
skip_last_comma: true
activerecord:
errors:
template:
header:
one: "1 chyba zabránila uložení %{model}"
other: "%{count} chyb zabránilo uložení %{model}"
one: "uložení %{model} zabránila 1 chyba"
other: "uložení %{model} zabránilo(-y) %{count} chyb(y)"
messages:
inclusion: "není zahrnuto v seznamu"
exclusion: "je rezervováno"
......@@ -114,9 +115,9 @@ cs:
accepted: "musí být akceptováno"
empty: "nemůže být prázdný"
blank: "nemůže být prázdný"
too_long: "je příliš dlouhý"
too_short: "je příliš krátký"
wrong_length: " chybnou délku"
too_long: "je příliš dlouhý (maximum je %{count} znaků)"
too_short: "je příliš krátký (minimum je %{count} znaků)"
wrong_length: " chybnou délku (má mít %{count} znaků)"
taken: "je již použito"
not_a_number: "není číslo"
not_a_date: "není platné datum"
......@@ -124,15 +125,15 @@ cs:
greater_than_or_equal_to: "musí být větší nebo rovno %{count}"
equal_to: "musí být přesně %{count}"
less_than: "musí být méně než %{count}"
less_than_or_equal_to: "musí být méně nebo rovno %{count}"
less_than_or_equal_to: "musí být menší nebo rovno %{count}"
odd: "musí být liché"
even: "musí být sudé"
greater_than_start_date: "musí být větší než počáteční datum"
not_same_project: "nepatří stejnému projektu"
circular_dependency: "Tento vztah by vytvořil cyklickou závislost"
cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho dílčích úkolů"
cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho podúkolů"
actionview_instancetag_blank_option: Prosím vyberte
actionview_instancetag_blank_option: Vyberte, prosím
general_text_No: 'Ne'
general_text_Yes: 'Ano'
......@@ -149,66 +150,66 @@ cs:
notice_account_invalid_creditentials: Chybné jméno nebo heslo
notice_account_password_updated: Heslo bylo úspěšně změněno.
notice_account_wrong_password: Chybné heslo
notice_account_register_done: Účet byl úspěšně vytvořen. Pro aktivaci účtu klikněte na odkaz v emailu, který vám byl zaslán.
notice_account_register_done: Účet byl úspěšně vytvořen. Pro aktivaci účtu klikněte na odkaz v e-mailu, který vám byl zaslán.
notice_account_unknown_email: Neznámý uživatel.
notice_can_t_change_password: Tento účet používá externí autentifikaci. Zde heslo změnit nemůžete.
notice_account_lost_email_sent: Byl vám zaslán email s intrukcemi jak si nastavíte nové heslo.
notice_account_lost_email_sent: Byl vám zaslán e-mail s instrukcemi, jak si nastavíte nové heslo.
notice_account_activated: Váš účet byl aktivován. Nyní se můžete přihlásit.
notice_successful_create: Úspěšně vytvořeno.
notice_successful_update: Úspěšně aktualizováno.
notice_successful_delete: Úspěšně odstraněno.
notice_successful_connection: Úspěšné připojení.
notice_file_not_found: Stránka na kterou se snažíte zobrazit neexistuje nebo byla smazána.
notice_successful_connection: Úspěšně připojeno.
notice_file_not_found: Stránka, kterou se snažíte zobrazit, neexistuje nebo byla odstraněna.
notice_locking_conflict: Údaje byly změněny jiným uživatelem.
notice_not_authorized: Nemáte dostatečná práva pro zobrazení této stránky.
notice_not_authorized_archived_project: Projekt ke kterému se snažíte přistupovat byl archivován.
notice_email_sent: "Na adresu %{value} byl odeslán email"
notice_email_error: "Při odesílání emailu nastala chyba (%{value})"
notice_not_authorized: Pro zobrazení této stránky nemáte dostatečná práva.
notice_not_authorized_archived_project: Projekt, ke kterému se snažíte přistupovat, je archivován.
notice_email_sent: "Na adresu %{value} byl odeslán e-mail"
notice_email_error: "Při odesílání e-mailu nastala chyba (%{value})"
notice_feeds_access_key_reseted: Váš klíč pro přístup k RSS byl resetován.
notice_api_access_key_reseted: Váš API přístupový klíč byl resetován.
notice_api_access_key_reseted: Váš přístupový klíč API byl resetován.
notice_failed_to_save_issues: "Chyba při uložení %{count} úkolu(ů) z %{total} vybraných: %{ids}."
notice_failed_to_save_members: "Nepodařilo se uložit člena(y): %{errors}."
notice_no_issue_selected: "Nebyl zvolen žádný úkol. Prosím, zvolte úkoly, které chcete editovat"
notice_no_issue_selected: "Nebyl zvolen žádný úkol. Prosím, zvolte úkoly, které chcete upravit."
notice_account_pending: "Váš účet byl vytvořen, nyní čeká na schválení administrátorem."
notice_default_data_loaded: Výchozí konfigurace úspěšně nahrána.
notice_unable_delete_version: Nemohu odstanit verzi
notice_unable_delete_version: Nemohu smazat verzi.
notice_unable_delete_time_entry: Nelze smazat čas ze záznamu.
notice_issue_done_ratios_updated: Koeficienty dokončení úkolu byly aktualizovány.
notice_gantt_chart_truncated: Graf byl oříznut, počet položek přesáhl limit pro zobrazení (%{max})
notice_gantt_chart_truncated: "Graf byl oříznut, protože počet jeho položek přesáhl limit pro zobrazení (%{max})"
error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: %{value}"
error_scm_not_found: "Položka a/nebo revize neexistují v repozitáři."
error_scm_command_failed: "Při pokusu o přístup k repozitáři došlo k chybě: %{value}"
error_scm_not_found: "V úložišti neexistuje tato položka nebo revize."
error_scm_command_failed: "Při pokusu o přístup k úložišti nastala chyba: %{value}"
error_scm_annotate: "Položka neexistuje nebo nemůže být komentována."
error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu'
error_no_tracker_in_project: Žádná fronta nebyla přiřazena tomuto projektu. Prosím zkontroluje nastavení projektu.
error_no_tracker_in_project: Tomuto projektu nebyla přiřazena žádná fronta. Prosím, zkontroluje nastavení projektu.
error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů").
error_can_not_delete_custom_field: Nelze smazat volitelné pole
error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán.
error_can_not_remove_role: Tato role je právě používaná a nelze ji smazat.
error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nelze ji smazat.
error_can_not_remove_role: Tato role se právě používá a nelze ji smazat.
error_can_not_reopen_issue_on_closed_version: Úkol přiřazený k uzavřené verzi nemůže být znovu otevřen
error_can_not_archive_project: Tento projekt nemůže být archivován
error_issue_done_ratios_not_updated: Koeficient dokončení úkolu nebyl aktualizován.
error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly
error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e)
error_unable_delete_issue_status: Nelze smazat stavy úkolů
error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roli
error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roli(e)
error_unable_delete_issue_status: Nelze smazat stav úkolu
error_unable_to_connect: Nelze se připojit (%{value})
warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit."
mail_subject_lost_password: "Vaše heslo (%{value})"
mail_body_lost_password: 'Pro změnu vašeho hesla klikněte na následující odkaz:'
mail_body_lost_password: 'Pro změnu svého hesla klikněte na následující odkaz:'
mail_subject_register: "Aktivace účtu (%{value})"
mail_body_register: 'Pro aktivaci vašeho účtu klikněte na následující odkaz:'
mail_body_account_information_external: "Pomocí vašeho účtu %{value} se můžete přihlásit."
mail_body_register: 'Pro aktivaci svého účtu klikněte na následující odkaz:'
mail_body_account_information_external: "Můžete se přihlásit pomocí svého účtu %{value}."
mail_body_account_information: Informace o vašem účtu
mail_subject_account_activation_request: "Aktivace %{value} účtu"
mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho účtu závisí na vašem potvrzení."
mail_subject_reminder: "%{count} úkol(ů) termín během několik dní (%{days})"
mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny termín během několik dní (%{days}):"
mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla přidána"
mail_body_wiki_content_added: "'%{id}' Wiki stránka byla přidána od %{author}."
mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována"
mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}."
mail_subject_account_activation_request: "Žádost o aktivaci %{value} účtu"
mail_body_account_activation_request: "Zaregistroval se nový uživatel %{value}. Aktivace jeho účtu závisí na vašem potvrzení."
mail_subject_reminder: "%{count} úkol(ů) termín během následujících %{days} dnů "
mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny, termín během následujících %{days} dnů:"
mail_subject_wiki_content_added: "Byla přidána wiki stránka '%{id}'"
mail_body_wiki_content_added: "'Wiki stránka '%{id}' byla přidána uživatelem %{author}."
mail_subject_wiki_content_updated: "Byla aktualizována wiki stránka '%{id}'"
mail_body_wiki_content_updated: "'Wiki stránka '%{id}' byla aktualizována uživatelem %{author}."
gui_validation_error: 1 chyba
gui_validation_error_plural: "%{count} chyb(y)"
......@@ -219,7 +220,7 @@ cs:
field_is_required: Povinné pole
field_firstname: Jméno
field_lastname: Příjmení
field_mail: Email
field_mail: E-mailová adresa
field_filename: Soubor
field_filesize: Velikost
field_downloads: Staženo
......@@ -240,11 +241,11 @@ cs:
field_status: Stav
field_notes: Poznámka
field_is_closed: Úkol uzavřen
field_is_default: Výchozí stav
field_is_default: Výchozí hodnota
field_tracker: Fronta
field_subject: Předmět
field_due_date: Uzavřít do
field_assigned_to: Přiřazeno
field_assigned_to: Přiřazeno komu
field_priority: Priorita
field_fixed_version: Cílová verze
field_user: Uživatel
......@@ -253,30 +254,31 @@ cs:
field_homepage: Domovská stránka
field_is_public: Veřejný
field_parent: Nadřazený projekt
field_is_in_roadmap: Úkoly zobrazené v plánu
field_login: Přihlášení
field_mail_notification: Emailová oznámení
field_is_in_roadmap: Úkoly zobrazeny v plánu
field_login: Přihlašovací jméno
field_mail_notification: E-mailová oznámení
field_admin: Administrátor
field_last_login_on: Poslední přihlášení
field_language: Jazyk
field_effective_date: Datum splnění
field_password: Heslo
field_new_password: Nové heslo
field_password_confirmation: Potvrzení
field_version: Verze
field_type: Typ
field_host: Host
field_host: Hostitel
field_port: Port
field_account: Účet
field_base_dn: Base DN
field_attr_login: Přihlášení (atribut)
field_attr_firstname: Jméno (atribut)
field_attr_lastname: Příjemní (atribut)
field_attr_mail: Email (atribut)
field_attr_lastname: Příjmení (atribut)
field_attr_mail: E-mail (atribut)
field_onthefly: Automatické vytváření uživatelů
field_start_date: Začátek
field_done_ratio: "% Hotovo"
field_done_ratio: "% hotovo"
field_auth_source: Autentifikační mód
field_hide_mail: Nezobrazovat můj email
field_hide_mail: Nezobrazovat můj e-mail
field_comments: Komentář
field_url: URL
field_start_page: Výchozí stránka
......@@ -288,7 +290,7 @@ cs:
field_is_filter: Použít jako filtr
field_issue_to: Související úkol
field_delay: Zpoždění
field_assignable: Úkoly mohou být přiřazeny této roli
field_assignable: Této roli mohou být přiřazeny úkoly
field_redirect_existing_links: Přesměrovat stvávající odkazy
field_estimated_hours: Odhadovaná doba
field_column_names: Sloupce
......@@ -299,16 +301,21 @@ cs:
field_comments_sorting: Zobrazit komentáře
field_parent_title: Rodičovská stránka
field_editable: Editovatelný
field_watcher: Sleduje
field_watcher: Pozorovatel
field_identity_url: OpenID URL
field_content: Obsah
field_group_by: Seskupovat výsledky podle
field_sharing: Sdílení
field_parent_issue: Rodičovský úkol
field_member_of_group: Skupina přiřaditele
field_assigned_to_role: Role přiřaditele
field_member_of_group: Skupina přiřazeného
field_assigned_to_role: Role přiřazeného
field_text: Textové pole
field_visible: Viditelný
field_warn_on_leaving_unsaved: Upozornit, pokud opouštím stránku s neuloženým textem
field_custom_filter: Volitelný filtr LDAP
field_issue_summary: Přehled úkolu
field_new_saved_query: Nový uložený dotaz
field_issue_view_all_open: Všechny otevřené úkoly
setting_app_title: Název aplikace
setting_app_subtitle: Podtitulek aplikace
......@@ -318,16 +325,16 @@ cs:
setting_self_registration: Povolena automatická registrace
setting_attachment_max_size: Maximální velikost přílohy
setting_issues_export_limit: Limit pro export úkolů
setting_mail_from: Odesílat emaily z adresy
setting_bcc_recipients: Příjemci skryté kopie (bcc)
setting_plain_text_mail: pouze prostý text (ne HTML)
setting_host_name: Jméno serveru
setting_mail_from: Odesílat e-maily z adresy
setting_bcc_recipients: Příjemci skryté kopie (Bcc)
setting_plain_text_mail: Pouze prostý text (ne HTML)
setting_host_name: Jméno a cesta serveru
setting_text_formatting: Formátování textu
setting_wiki_compression: Komprese historie Wiki
setting_wiki_compression: Komprese historie wiki
setting_feeds_limit: Limit obsahu příspěvků
setting_default_projects_public: Nové projekty nastavovat jako veřejné
setting_autofetch_changesets: Automaticky stahovat commity
setting_sys_api_enabled: Povolit WS pro správu repozitory
setting_sys_api_enabled: Povolit WS pro správu úložišť
setting_commit_ref_keywords: Klíčová slova pro odkazy
setting_commit_fix_keywords: Klíčová slova pro uzavření
setting_autologin: Automatické přihlašování
......@@ -335,12 +342,12 @@ cs:
setting_time_format: Formát času
setting_cross_project_issue_relations: Povolit vazby úkolů napříč projekty
setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů
setting_repositories_encodings: Kódování
setting_repositories_encodings: Kódování úložišť
setting_commit_logs_encoding: Kódování zpráv při commitu
setting_emails_header: Hlavička emailů
setting_emails_footer: Patička emailů
setting_emails_header: Hlavička e-mailů
setting_emails_footer: Zápatí e-mailů
setting_protocol: Protokol
setting_per_page_options: Povolené počty řádků na stránce
setting_per_page_options: Volby počtu řádků na stránce
setting_user_format: Formát zobrazení uživatele
setting_activity_days_default: Dny zobrazené v činnosti projektu
setting_display_subprojects_issues: Automaticky zobrazit úkoly podprojektu v hlavním projektu
......@@ -350,80 +357,83 @@ cs:
setting_mail_handler_api_key: API klíč
setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů
setting_gravatar_enabled: Použít uživatelské ikony Gravatar
setting_gravatar_default: Výchozí Gravatar
setting_diff_max_lines_displayed: Maximální počet zobrazenách řádků rozdílů
setting_gravatar_default: Výchozí obrázek Gravatar
setting_diff_max_lines_displayed: Maximální počet zobrazených řádků rozdílů
setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce
setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru
setting_openid: Umožnit přihlašování a registrace s OpenID
setting_openid: Umožnit přihlašování a registraci s OpenID
setting_password_min_length: Minimální délka hesla
setting_new_project_user_role_id: Role přiřazená uživateli bez práv administrátora, který projekt vytvořil
setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt
setting_issue_done_ratio: Spočítat koeficient dokončení úkolu s
setting_issue_done_ratio_issue_field: Použít pole úkolu
setting_issue_done_ratio_issue_status: Použít stav úkolu
setting_issue_done_ratio: Spočítat koeficient dokončení úkolu za použití
setting_issue_done_ratio_issue_field: Pole úkolu
setting_issue_done_ratio_issue_status: Stav úkolu
setting_start_of_week: Začínat kalendáře
setting_rest_api_enabled: Zapnout službu REST
setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací paměti
setting_default_notification_option: Výchozí nastavení oznámení
setting_commit_logtime_enabled: Povolit zapisování času
setting_commit_logtime_activity_id: Aktivita pro zapsaný čas
setting_gantt_items_limit: Maximální počet položek zobrazený na ganttově grafu
setting_gantt_items_limit: Maximální počet položek zobrazených v Ganttově grafu
setting_issue_startdate_is_adddate: Pro nové úkoly použij aktuální datum jako počáteční
setting_mail_handler_confirmation_on_success: Při úspěšném příchodu e-mailu pošli potvrzující e-mail
setting_mail_handler_confirmation_on_failure: Při neúspěšném příchodu e-mailu pošli potvrzující e-mail
permission_add_project: Vytvořit projekt
permission_add_subprojects: Vytvořit podprojekty
permission_edit_project: Úprava projektů
permission_add_project: Vytvoření projektu
permission_add_subprojects: Vytvoření podprojektů
permission_edit_project: Úprava projektu
permission_select_project_modules: Výběr modulů projektu
permission_manage_members: Spravování členství
permission_manage_project_activities: Spravovat aktivity projektu
permission_manage_versions: Spravování verzí
permission_manage_categories: Spravování kategorií úkolů
permission_view_issues: Zobrazit úkoly
permission_manage_members: Správa členství
permission_manage_project_activities: Správa aktivit projektu
permission_manage_versions: Správa verzí
permission_manage_categories: Správa kategorií úkolů
permission_view_issues: Zobrazení úkoly
permission_add_issues: Přidávání úkolů
permission_edit_issues: Upravování úkolů
permission_manage_issue_relations: Spravování vztahů mezi úkoly
permission_edit_issues: Úprava úkolů
permission_manage_issue_relations: Správa vztahů mezi úkoly
permission_add_issue_notes: Přidávání poznámek
permission_edit_issue_notes: Upravování poznámek
permission_edit_own_issue_notes: Upravování vlastních poznámek
permission_edit_issue_notes: Úprava poznámek
permission_edit_own_issue_notes: Úprava vlastních poznámek
permission_move_issues: Přesouvání úkolů
permission_delete_issues: Mazání úkolů
permission_manage_public_queries: Správa veřejných dotazů
permission_save_queries: Ukládání dotazů
permission_view_gantt: Zobrazené Ganttova diagramu
permission_view_gantt: Zobrazení Ganttova grafu
permission_view_calendar: Prohlížení kalendáře
permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů
permission_add_issue_watchers: Přidání sledujících uživatelů
permission_delete_issue_watchers: Smazat přihlížející
permission_view_issue_watchers: Zobrazení seznamu pozorovatelů
permission_add_issue_watchers: Přidání pozorovatelů
permission_delete_issue_watchers: Smazání pozorovatelů
permission_log_time: Zaznamenávání stráveného času
permission_view_time_entries: Zobrazení stráveného času
permission_edit_time_entries: Upravování záznamů o stráveném času
permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném čase
permission_manage_news: Spravování novinek
permission_edit_time_entries: Úprava záznamů o stráveném čase
permission_edit_own_time_entries: Úprava vlastních zázamů o stráveném čase
permission_manage_news: Správa novinek
permission_comment_news: Komentování novinek
permission_manage_documents: Správa dokumentů
permission_view_documents: Prohlížení dokumentů
permission_manage_files: Spravování souborů
permission_manage_files: Správa souborů
permission_view_files: Prohlížení souborů
permission_manage_wiki: Spravování Wiki
permission_rename_wiki_pages: Přejmenovávání Wiki stránek
permission_delete_wiki_pages: Mazání stránek na Wiki
permission_view_wiki_pages: Prohlížení Wiki
permission_view_wiki_edits: Prohlížení historie Wiki
permission_edit_wiki_pages: Upravování stránek Wiki
permission_manage_wiki: Správa wiki
permission_rename_wiki_pages: Přejmenovávání stránek wiki
permission_delete_wiki_pages: Mazání stránek wiki
permission_view_wiki_pages: Prohlížení wiki
permission_view_wiki_edits: Prohlížení historie wiki
permission_edit_wiki_pages: Upravování stránek wiki
permission_delete_wiki_pages_attachments: Mazání příloh
permission_protect_wiki_pages: Zabezpečení Wiki stránek
permission_manage_repository: Spravování repozitáře
permission_browse_repository: Procházení repozitáře
permission_protect_wiki_pages: Zabezpečení stránek wiki
permission_manage_repository: Spravování úložiště
permission_browse_repository: Procházení úložiště
permission_view_changesets: Zobrazování sady změn
permission_commit_access: Commit přístup
permission_manage_boards: Správa diskusních fór
permission_view_messages: Prohlížení zpráv
permission_add_messages: Posílání zpráv
permission_edit_messages: Upravování zpráv
permission_edit_own_messages: Upravit vlastní zprávy
permission_edit_messages: Úprava zpráv
permission_edit_own_messages: Úprava vlastních zpráv
permission_delete_messages: Mazání zpráv
permission_delete_own_messages: Smazat vlastní zprávy
permission_export_wiki_pages: Exportovat Wiki stránky
permission_manage_subtasks: Spravovat podúkoly
permission_delete_own_messages: Mazání vlastních zpráv
permission_export_wiki_pages: Export stránek wiki
permission_manage_subtasks: Správa podúkolů
project_module_issue_tracking: Sledování úkolů
project_module_time_tracking: Sledování času
......@@ -431,10 +441,10 @@ cs:
project_module_documents: Dokumenty
project_module_files: Soubory
project_module_wiki: Wiki
project_module_repository: Repozitář
project_module_repository: Úložiště
project_module_boards: Diskuse
project_module_calendar: Kalendář
project_module_gantt: Gantt
project_module_gantt: Ganttův graf
label_user: Uživatel
label_user_plural: Uživatelé
......@@ -452,10 +462,10 @@ cs:
label_issue: Úkol
label_issue_new: Nový úkol
label_issue_plural: Úkoly
label_issue_view_all: Všechny úkoly
label_issue_view_all: Zobraz všechny úkoly
label_issues_by: "Úkoly podle %{value}"
label_issue_added: Úkol přidán
label_issue_updated: Úkol aktualizován
label_issue_updated: Úkol upraven
label_document: Dokument
label_document_new: Nový dokument
label_document_plural: Dokumenty
......@@ -484,7 +494,7 @@ cs:
label_enumeration_new: Nová hodnota
label_information: Informace
label_information_plural: Informace
label_please_login: Prosím přihlašte se
label_please_login: Přihlašte se, prosím
label_register: Registrovat
label_login_with_open_id_option: nebo se přihlašte s OpenID
label_password_lost: Zapomenuté heslo
......@@ -498,7 +508,7 @@ cs:
label_logout: Odhlášení
label_help: Nápověda
label_reported_issues: Nahlášené úkoly
label_assigned_to_me_issues: Mé úkoly
label_assigned_to_me_issues: Mně přiřazené úkoly
label_last_login: Poslední přihlášení
label_registered_on: Registrován
label_activity: Aktivita
......@@ -513,8 +523,8 @@ cs:
label_auth_source_plural: Módy autentifikace
label_subproject_plural: Podprojekty
label_subproject_new: Nový podprojekt
label_and_its_subprojects: "%{value} a jeho podprojekty"
label_min_max_length: Min - Max délka
label_and_its_subprojects: "%{value} a jeho podprojekty"
label_min_max_length: Minimální a maximální délka
label_list: Seznam
label_date: Datum
label_integer: Celé číslo
......@@ -542,6 +552,7 @@ cs:
label_news_latest: Poslední novinky
label_news_view_all: Zobrazit všechny novinky
label_news_added: Novinka přidána
label_news_comment_added: K novince byl přidán komentář
label_settings: Nastavení
label_overview: Přehled
label_version: Verze
......@@ -559,15 +570,15 @@ cs:
label_x_open_issues_abbr_on_total:
zero: 0 otevřených / %{total}
one: 1 otevřený / %{total}
other: "%{count} otevřených / %{total}"
other: "%{count} otevřených(-é) / %{total}"
label_x_open_issues_abbr:
zero: 0 otevřených
one: 1 otevřený
other: "%{count} otevřených"
other: "%{count} otevřených(-é)"
label_x_closed_issues_abbr:
zero: 0 uzavřených
one: 1 uzavřený
other: "%{count} uzavřených"
other: "%{count} uzavřených(-é)"
label_total: Celkem
label_permissions: Práva
label_current_status: Aktuální stav
......@@ -593,24 +604,26 @@ cs:
label_x_comments:
zero: žádné komentáře
one: 1 komentář
other: "%{count} komentářů"
other: "%{count} komentářů(-e)"
label_comment_add: Přidat komentáře
label_comment_added: Komentář přidán
label_comment_delete: Odstranit komentář
label_query: Uživatelský dotaz
label_query_plural: Uživatelské dotazy
label_query_new: Nový dotaz
label_my_queries: Mé dotazy
label_filter_add: Přidat filtr
label_filter_plural: Filtry
label_equals: je
label_not_equals: není
label_in_less_than: je měší než
label_in_less_than: je menší než
label_in_more_than: je větší než
label_greater_or_equal: '>='
label_less_or_equal: '<='
label_between: mezi
label_in: v
label_today: dnes
label_all_time: vše
label_all_time: kdykoli
label_yesterday: včera
label_this_week: tento týden
label_last_week: minulý týden
......@@ -619,14 +632,14 @@ cs:
label_last_month: minulý měsíc
label_this_year: tento rok
label_date_range: Časový rozsah
label_less_than_ago: před méně jak (dny)
label_more_than_ago: před více jak (dny)
label_less_than_ago: před méně než (dny)
label_more_than_ago: před více než (dny)
label_ago: před (dny)
label_contains: obsahuje
label_not_contains: neobsahuje
label_day_plural: dny
label_repository: Repozitář
label_repository_plural: Repozitáře
label_repository: Úložiště
label_repository_plural: Úložiště
label_browse: Procházet
label_modification: "%{count} změna"
label_modification_plural: "%{count} změn"
......@@ -635,12 +648,12 @@ cs:
label_revision: Revize
label_revision_plural: Revizí
label_revision_id: "Revize %{value}"
label_associated_revisions: Související verze
label_associated_revisions: Související revize
label_added: přidáno
label_modified: změněno
label_copied: zkopírováno
label_renamed: přejmenováno
label_deleted: odstraněno
label_deleted: smazáno
label_latest_revision: Poslední revize
label_latest_revision_plural: Poslední revize
label_view_revisions: Zobrazit revize
......@@ -652,32 +665,34 @@ cs:
label_sort_lowest: Přesunout na konec
label_roadmap: Plán
label_roadmap_due_in: "Zbývá %{value}"
label_roadmap_overdue: "%{value} pozdě"
label_roadmap_overdue: "%{value} zpoždění"
label_roadmap_no_issues: Pro tuto verzi nejsou žádné úkoly
label_search: Hledat
search_input_placeholder: najdi ...
label_result_plural: Výsledky
label_all_words: Všechna slova
label_wiki: Wiki
label_wiki_edit: Wiki úprava
label_wiki_edit_plural: Wiki úpravy
label_wiki_page: Wiki stránka
label_wiki_page_plural: Wiki stránky
label_wiki_edit: Úprava wiki
label_wiki_edit_plural: Úpravy wiki
label_wiki_page: Stránka wiki
label_wiki_page_plural: Stránky wiki
label_index_by_title: Index dle názvu
label_index_by_date: Index dle data
label_current_version: Aktuální verze
label_current_version: Současná verze
label_preview: Náhled
label_feed_plural: Příspěvky
label_changes_details: Detail všech změn
label_changes_details: Detaily všech změn
label_issue_tracking: Sledování úkolů
label_spent_time: Strávený čas
label_overall_spent_time: Celkem strávený čas
label_overall_spent_time: Celkový strávený čas
label_f_hour: "%{value} hodina"
label_f_hour_plural: "%{value} hodin"
label_time_tracking: Sledování času
label_change_plural: Změny
label_statistics: Statistiky
label_commits_per_month: Commitů za měsíc
label_commits_per_author: Commitů za autora
label_commits_per_author: Commitů na autora
label_diff: rozdíly
label_view_diff: Zobrazit rozdíly
label_diff_inline: uvnitř
label_diff_side_by_side: vedle sebe
......@@ -692,9 +707,9 @@ cs:
label_relation_delete: Odstranit souvislost
label_relates_to: související s
label_duplicates: duplikuje
label_duplicated_by: zduplikován
label_duplicated_by: duplikován
label_blocks: blokuje
label_blocked_by: zablokován
label_blocked_by: blokován
label_precedes: předchází
label_follows: následuje
label_end_to_start: od konce do začátku
......@@ -716,25 +731,25 @@ cs:
label_message_new: Nová zpráva
label_message_posted: Zpráva přidána
label_reply_plural: Odpovědi
label_send_information: Zaslat informace o účtu uživateli
label_send_information: Zaslat uživateli informace o účtu
label_year: Rok
label_month: Měsíc
label_week: Týden
label_date_from: Od
label_date_to: Do
label_language_based: Podle výchozího jazyku
label_language_based: Podle jazyka uživatele
label_sort_by: "Seřadit podle %{value}"
label_send_test_email: Poslat testovací email
label_send_test_email: Poslat testovací e-mail
label_feeds_access_key: Přístupový klíč pro RSS
label_missing_feeds_access_key: Postrádá přístupový klíč pro RSS
label_missing_feeds_access_key: Chybí přístupový klíč pro RSS
label_feeds_access_key_created_on: "Přístupový klíč pro RSS byl vytvořen před %{value}"
label_module_plural: Moduly
label_added_time_by: "Přidáno uživatelem %{author} před %{age}"
label_updated_time_by: "Aktualizováno uživatelem %{author} před %{age}"
label_added_time_by: "Přidal(a) %{author} před %{age}"
label_updated_time_by: "Aktualizoval(a) %{author} před %{age}"
label_updated_time: "Aktualizováno před %{value}"
label_jump_to_a_project: Vyberte projekt...
label_file_plural: Soubory
label_changeset_plural: Changesety
label_changeset_plural: Sady změn
label_default_columns: Výchozí sloupce
label_no_change_option: (beze změny)
label_bulk_edit_selected_issues: Hromadná úprava vybraných úkolů
......@@ -744,18 +759,18 @@ cs:
label_user_mail_option_all: "Pro všechny události všech mých projektů"
label_user_mail_option_selected: "Pro všechny události vybraných projektů..."
label_user_mail_option_none: "Žádné události"
label_user_mail_option_only_my_events: "Jen pro věci co sleduji nebo jsem v nich zapojen"
label_user_mail_option_only_assigned: "Jen pro všeci kterým sem přiřazen"
label_user_mail_option_only_owner: "Jen pro věci které vlastním"
label_user_mail_no_self_notified: "Nezasílat informace o mnou vytvořených změnách"
label_registration_activation_by_email: aktivace účtu emailem
label_user_mail_option_only_my_events: "Jen pro věci, které sleduji nebo ve kterých jsem zapojen"
label_user_mail_option_only_assigned: "Jen pro věci, kterým jsem přiřazen"
label_user_mail_option_only_owner: "Jen pro věci, které vlastním"
label_user_mail_no_self_notified: "Nezasílat mi informace o mnou vytvořených změnách"
label_registration_activation_by_email: aktivace účtu e-mailem
label_registration_manual_activation: manuální aktivace účtu
label_registration_automatic_activation: automatická aktivace účtu
label_display_per_page: "%{value} na stránku"
label_age: Věk
label_change_properties: Změnit vlastnosti
label_general: Obecné
label_more: Více
label_more: Další
label_scm: SCM
label_plugins: Doplňky
label_ldap_authentication: Autentifikace LDAP
......@@ -763,20 +778,21 @@ cs:
label_optional_description: Volitelný popis
label_add_another_file: Přidat další soubor
label_preferences: Nastavení
label_chronological_order: V chronologickém pořadí
label_reverse_chronological_order: V obrácaném chronologickém pořadí
label_chronological_order: Od nejstaršího
label_reverse_chronological_order: Od nejnovějšího
label_planning: Plánování
label_incoming_emails: Příchozí e-maily
label_generate_key: Generovat klíč
label_issue_watchers: Sledování
label_issue_watchers: Pozorovatelé
label_document_watchers: Pozorovatelé
label_example: Příklad
label_display: Zobrazit
label_sort: Řazení
label_ascending: Vzestupně
label_descending: Sestupně
label_date_from_to: Od %{start} do %{end}
label_wiki_content_added: Wiki stránka přidána
label_wiki_content_updated: Wiki stránka aktualizována
label_wiki_content_added: Stránka wiki přidána
label_wiki_content_updated: Stránka wiki aktualizována
label_group: Skupina
label_group_plural: Skupiny
label_group_new: Nová skupina
......@@ -790,27 +806,47 @@ cs:
label_copy_source: Zdroj
label_copy_target: Cíl
label_copy_same_as_target: Stejný jako cíl
label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou
label_api_access_key: API přístupový klíč
label_display_used_statuses_only: Zobrazit pouze stavy použité touto frontou
label_api_access_key: Přístupový klíč API
label_missing_api_access_key: Chybějící přístupový klíč API
label_api_access_key_created_on: API přístupový klíč vytvořen %{value}
label_api_access_key_created_on: "Přístupový klíč API vytvořen před %{value}"
label_profile: Profil
label_subtask_plural: Podúkol
label_project_copy_notifications: Odeslat email oznámení v průběhu kopie projektu
label_subtask_plural: Podúkoly
label_subtask_add: Přidat podúkol
label_issue_hierarchy: Hierarchie úkolů
label_project_copy_notifications: Odeslat e-mailové oznámení v průběhu kopírování projektu
label_principal_search: "Hledat uživatele nebo skupinu:"
label_user_search: "Hledat uživatele:"
label_git_path: Cesta k adresáři .git
label_darcs_path: Kořenový adresář
label_mercurial_path: Kořenový adresář
label_cvs_path: CVSROOT
label_cvs_module: Modul
label_bazaar_path: Kořenový adresář
label_filesystem_path: Kořenový adresář
label_additional_workflow_transitions_for_assignee: Pokud je uživatel přiřazeným, jsou povoleny další změny stavu
label_additional_workflow_transitions_for_author: Pokud je uživatel autorem, jsou povoleny další změny stavu
label_notify_member_plural: Odeslat aktualizace úkolů e-mailem
label_path_encoding: Kódování cesty
label_deleted_custom_field: (smazané volitelné pole)
label_toc: Obsah
label_mail_handler_confirmation: "Potvrzení rozeslání e-mailů: %{subject}"
label_mail_handler_failure: "Neúspěšné rozeslání e-mailů: %{subject}"
label_mail_handler_errors_with_submission: "Rozeslání vašeho e-mailu proběhlo s chybami:"
button_login: Přihlásit
button_submit: Potvrdit
button_save: Uložit
button_check_all: Zašrtnout vše
button_uncheck_all: Odšrtnout vše
button_check_all: Zaškrtnout vše
button_uncheck_all: Odškrtnout vše
button_collapse_all: Sbalit vše
button_expand_all: Rozbalit vše
button_delete: Odstranit
button_create: Vytvořit
button_create_and_continue: Vytvořit a pokračovat
button_test: Testovat
button_edit: Upravit
button_edit_associated_wikipage: "Upravit přiřazenou Wiki stránku: %{page_title}"
button_edit_associated_wikipage: "Upravit přiřazenou stránku wiki: %{page_title}"
button_add: Přidat
button_change: Změnit
button_apply: Použít
......@@ -826,7 +862,7 @@ cs:
button_cancel: Storno
button_activate: Aktivovat
button_sort: Seřadit
button_log_time: Přidat čas
button_log_time: Zaznamenat čas
button_rollback: Zpět k této verzi
button_watch: Sledovat
button_unwatch: Nesledovat
......@@ -842,7 +878,7 @@ cs:
button_update: Aktualizovat
button_configure: Konfigurovat
button_quote: Citovat
button_duplicate: Duplikát
button_duplicate: Duplikovat
button_show: Zobrazit
status_active: aktivní
......@@ -855,71 +891,80 @@ cs:
field_active: Aktivní
text_select_mail_notifications: Vyberte akci při které bude zasláno upozornění emailem.
text_select_mail_notifications: Vyberte akce, při kterých se zašle e-mailem upozornění
text_regexp_info: např. ^[A-Z0-9]+$
text_min_max_length_info: 0 znamená bez limitu
text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a všechna související data ?
text_min_max_length_info: 0 znamená bez omezení
text_project_destroy_confirmation: Jste si jisti, že chcete smazat tento projekt a všechna související data ?
text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány."
text_workflow_edit: Vyberte roli a frontu k editaci průběhu práce
text_workflow_edit: Vyberte roli a frontu pro úpravu průběhu práce
text_are_you_sure: Jste si jisti?
text_are_you_sure_with_children: Smazat úkol včetně všech podúkolů?
text_journal_changed: "%{label} změněn z %{old} na %{new}"
text_journal_changed_no_detail: "%{label} aktualizováno"
text_journal_set_to: "%{label} nastaven na %{value}"
text_journal_deleted: "%{label} smazán (%{old})"
text_journal_added: "%{label} %{value} přidán"
text_tip_issue_begin_day: úkol začíná v tento den
text_tip_issue_end_day: úkol končí v tento den
text_tip_issue_begin_end_day: úkol začíná a končí v tento den
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_caracters_maximum: "%{count} znaků maximálně."
text_caracters_minimum: "Musí být alespoň %{count} znaků dlouhé."
text_tip_issue_begin_day: v tento den úkol začíná
text_tip_issue_end_day: v tento den úkol končí
text_tip_issue_begin_end_day: v tento den úkol začíná i končí
text_project_identifier_info: 'Jsou povolena jen malá písmena (a-z), číslice, pomlčky a podtržítka.<br />Uložený identifikátor nemůže být změněn.'
text_caracters_maximum: "Maximálně %{count} znaků."
text_caracters_minimum: "Musí mít alespoň %{count} znaků(-y)."
text_length_between: "Délka mezi %{min} a %{max} znaky."
text_tracker_no_workflow: Pro tuto frontu není definován žádný průběh práce
text_unallowed_characters: Nepovolené znaky
text_comma_separated: Povoleno více hodnot (oddělěné čárkou).
text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu).
text_comma_separated: Povoleno více hodnot (oddělené čárkou).
text_line_separated: Povoleno více hodnot (každá hodnota na zvláštním řádku).
text_issues_ref_in_commit_messages: Odkazování a opravování úkolů ve zprávách commitů
text_issue_added: "Úkol %{id} byl vytvořen uživatelem %{author}."
text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}."
text_wiki_destroy_confirmation: Opravdu si přejete odstranit tuto Wiki a celý její obsah?
text_issue_category_destroy_question: "Některé úkoly (%{count}) jsou přiřazeny k této kategorii. Co s nimi chtete udělat?"
text_wiki_destroy_confirmation: Opravdu si přejete odstranit tuto wiki a celý její obsah?
text_issue_category_destroy_question: "K této kategorii jsou přiřazeny nějaké úkoly (%{count}). Co s nimi chtete udělat?"
text_issue_category_destroy_assignments: Zrušit přiřazení ke kategorii
text_issue_category_reassign_to: Přiřadit úkoly do této kategorie
text_user_mail_option: "U projektů, které nebyly vybrány, budete dostávat oznámení pouze o vašich či o sledovaných položkách (např. o položkách jejichž jste autor nebo ke kterým jste přiřazen(a))."
text_no_configuration_data: "Role, fronty, stavy úkolů ani průběh práce nebyly zatím nakonfigurovány.\nVelice doporučujeme nahrát výchozí konfiguraci. Po si můžete vše upravit"
text_user_mail_option: "U projektů, které nebyly vybrány, budete dostávat oznámení pouze o položkách, které sledujete nebo do kterých jste začleněn (např. jste jejich autorem nebo jste jim byl(a) přiřazen(a))."
text_no_configuration_data: "Role, fronty, stavy úkolů ani průběh práce nebyly zatím nakonfigurovány.\nVelice doporučujeme nahrát výchozí konfiguraci. Pak si můžete vše upravit."
text_load_default_configuration: Nahrát výchozí konfiguraci
text_status_changed_by_changeset: "Použito v changesetu %{value}."
text_time_logged_by_changeset: Aplikováno v changesetu %{value}.
text_issues_destroy_confirmation: 'Opravdu si přejete odstranit všechny zvolené úkoly?'
text_status_changed_by_changeset: "Použito v sadě změn %{value}."
text_time_logged_by_changeset: Aplikováno v sadě změn %{value}.
text_issues_destroy_confirmation: 'Opravdu si přejete smazat zvolené úkoly?'
text_select_project_modules: 'Aktivní moduly v tomto projektu:'
text_default_administrator_account_changed: Výchozí nastavení administrátorského účtu změněno
text_file_repository_writable: Povolen zápis do adresáře ukládání souborů
text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets
text_rmagick_available: RMagick k dispozici (volitelné)
text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno %{hours} práce. Co chete udělat?"
text_destroy_time_entries: Odstranit evidované hodiny.
text_destroy_time_entries_question: "U úkolů, které chcete odstranit, je evidováno %{hours} hodin práce. Co chcete udělat?"
text_destroy_time_entries: Odstranit evidované hodiny
text_assign_time_entries_to_project: Přiřadit evidované hodiny projektu
text_reassign_time_entries: 'Přeřadit evidované hodiny k tomuto úkolu:'
text_user_wrote: "%{value} napsal:"
text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě."
text_enumeration_category_reassign_to: 'Přeřadit je do této:'
text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci."
text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi ChiliProject uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným ChiliProject uživatelským jménem a uživatelským jménem v repozitáři jsou mapova automaticky."
text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.'
text_custom_field_possible_values_info: 'Každá hodnota na novém řádku'
text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udělat?
text_enumeration_destroy_question: "K této hodnotě je přiřazeno (%{count}) objektů."
text_enumeration_category_reassign_to: 'Přeřadit je k této hodnotě:'
text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání upozornění je zakázáno.\nNastavte SMTP server v souboru config/configuration.yml a restartujte aplikaci."
text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi uživateli ChiliProjectu a uživatelskými jmény nalezenými v logu úložiště.\nUživatelé se shodným uživatelským jménem či e-mailovou adresou v ChiliProjectu a v úložišti jsou namapová automaticky."
text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje maximální zobrazitelnou velikost.'
text_custom_field_possible_values_info: 'Každá hodnota na zvláštním řádku'
text_wiki_page_destroy_question: "Tato stránka %{descendants} podstránek a potomků. Co chcete udělat?"
text_wiki_page_nullify_children: Ponechat podstránky jako kořenové stránky
text_wiki_page_destroy_children: Smazat podstránky a všechny jejich potomky
text_wiki_page_reassign_children: Přiřadit podstránky k tomuto rodiči
text_own_membership_delete_confirmation: "Chystáte se odebrat si některá nebo všechny svá oprávnění a potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokračovat?"
text_own_membership_delete_confirmation: "Chystáte se odebrat si některá nebo všechna oprávnění a potom již možná nebudete moci upravit tento projekt.\nOpravdu chcete pokračovat?"
text_zoom_in: Přiblížit
text_zoom_out: Oddálit
text_powered_by: Provozováno na %{link}
text_warn_on_leaving_unsaved: Tato stránka obsahuje neuložený text, který bude ztracen, pokud ji opustíte.
text_default_encoding: "Výchozí: UTF-8"
text_mercurial_repo_example: místní úložiště (např. /hgrepo, c:\hgrepo)
text_git_repo_example: prázdné a místní úložiště (např. /gitrepo, c:\gitrepo)
text_display_subprojects: Zobrazit podprojekty
text_current_project: Tento projekt
text_mail_handler_confirmation_successful: Váš e-mail byl úspěšně přidán na následující URL
default_role_manager: Manažer
default_role_developer: Vývojář
default_role_reporter: Reportér
default_role_non_member: Non member
default_role_anonymous: Anonymous
default_role_non_member: Nečlen
default_role_anonymous: Anonym
default_tracker_bug: Chyba
default_tracker_feature: Požadavek
default_tracker_support: Podpora
......@@ -936,293 +981,29 @@ cs:
default_priority_high: Vysoká
default_priority_urgent: Urgentní
default_priority_immediate: Okamžitá
default_activity_design: Návhr
default_activity_design: Návrh
default_activity_development: Vývoj
enumeration_issue_priorities: Priority úkolů
enumeration_doc_categories: Kategorie dokumentů
enumeration_activities: Aktivity (sledování času)
error_scm_annotate: "Položka neexistuje nebo nemůže být komentována."
label_planning: Plánování
text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány."
label_and_its_subprojects: "%{value} a jeho podprojekty"
mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny termín během několik dní (%{days}):"
mail_subject_reminder: "%{count} úkol(ů) termín během několik dní (%{days})"
text_user_wrote: "%{value} napsal:"
label_duplicated_by: duplikováno od
setting_enabled_scm: Povolené SCM
text_enumeration_category_reassign_to: 'Přeřadit je do této:'
text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě."
label_incoming_emails: Příchozí e-maily
label_generate_key: Generovat klíč
setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily
setting_mail_handler_api_key: API klíč
text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/configuration.yml a restartujte aplikaci."
field_parent_title: Rodičovská stránka
label_issue_watchers: Sledování
setting_commit_logs_encoding: Kódování zpráv při commitu
button_quote: Citovat
setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů
notice_unable_delete_version: Nemohu odstanit verzi
label_renamed: přejmenováno
label_copied: zkopírováno
setting_plain_text_mail: pouze prostý text (ne HTML)
permission_view_files: Prohlížení souborů
permission_edit_issues: Upravování úkolů
permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném čase
permission_manage_public_queries: Správa veřejných dotazů
permission_add_issues: Přidávání úkolů
permission_log_time: Zaznamenávání stráveného času
permission_view_changesets: Zobrazování sady změn
permission_view_time_entries: Zobrazení stráveného času
permission_manage_versions: Spravování verzí
permission_manage_wiki: Spravování Wiki
permission_manage_categories: Spravování kategorií úkolů
permission_protect_wiki_pages: Zabezpečení Wiki stránek
permission_comment_news: Komentování novinek
permission_delete_messages: Mazání zpráv
permission_select_project_modules: Výběr modulů projektu
permission_manage_documents: Správa dokumentů
permission_edit_wiki_pages: Upravování stránek Wiki
permission_add_issue_watchers: Přidání sledujících uživatelů
permission_view_gantt: Zobrazené Ganttova diagramu
permission_move_issues: Přesouvání úkolů
permission_manage_issue_relations: Spravování vztahů mezi úkoly
permission_delete_wiki_pages: Mazání stránek na Wiki
permission_manage_boards: Správa diskusních fór
permission_delete_wiki_pages_attachments: Mazání příloh
permission_view_wiki_edits: Prohlížení historie Wiki
permission_add_messages: Posílání zpráv
permission_view_messages: Prohlížení zpráv
permission_manage_files: Spravování souborů
permission_edit_issue_notes: Upravování poznámek
permission_manage_news: Spravování novinek
permission_view_calendar: Prohlížení kalendáře
permission_manage_members: Spravování členství
permission_edit_messages: Upravování zpráv
permission_delete_issues: Mazání úkolů
permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů
permission_manage_repository: Spravování repozitáře
permission_commit_access: Commit přístup
permission_browse_repository: Procházení repozitáře
permission_view_documents: Prohlížení dokumentů
permission_edit_project: Úprava projektů
permission_add_issue_notes: Přidávání poznámek
permission_save_queries: Ukládání dotazů
permission_view_wiki_pages: Prohlížení Wiki
permission_rename_wiki_pages: Přejmenovávání Wiki stránek
permission_edit_time_entries: Upravování záznamů o stráveném času
permission_edit_own_issue_notes: Upravování vlastních poznámek
setting_gravatar_enabled: Použít uživatelské ikony Gravatar
label_example: Příklad
text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi ChiliProject uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným ChiliProject uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky."
permission_edit_own_messages: Upravit vlastní zprávy
permission_delete_own_messages: Smazat vlastní zprávy
label_user_activity: "Aktivita uživatele: %{value}"
label_updated_time_by: "Akutualizováno: %{author} před: %{age}"
text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.'
setting_diff_max_lines_displayed: Maximální počet zobrazenách řádků rozdílů
text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets
warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit."
button_create_and_continue: Vytvořit a pokračovat
text_custom_field_possible_values_info: 'Každá hodnota na novém řádku'
label_display: Zobrazit
field_editable: Editovatelný
setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru
setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce
field_watcher: Sleduje
setting_openid: Umožnit přihlašování a registrace s OpenID
field_identity_url: OpenID URL
label_login_with_open_id_option: nebo se přihlašte s OpenID
field_content: Obsah
label_descending: Sestupně
label_sort: Řazení
label_ascending: Vzestupně
label_date_from_to: Od %{start} do %{end}
label_greater_or_equal: ">="
label_less_or_equal: <=
text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udělat?
text_wiki_page_reassign_children: Přiřadit podstránky k tomuto rodiči
text_wiki_page_nullify_children: Ponechat podstránky jako kořenové stránky
text_wiki_page_destroy_children: Smazat podstránky a všechny jejich potomky
setting_password_min_length: Minimální délka hesla
field_group_by: Seskupovat výsledky podle
mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována"
label_wiki_content_added: Wiki stránka přidána
mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla přidána"
mail_body_wiki_content_added: "'%{id}' Wiki stránka byla přidána od %{author}."
label_wiki_content_updated: Wiki stránka aktualizována
mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}."
permission_add_project: Vytvořit projekt
setting_new_project_user_role_id: Role přiřazená uživateli bez práv administrátora, který projekt vytvořil
label_view_all_revisions: Zobrazit všechny revize
label_tag: Tag
label_branch: Branch
error_no_tracker_in_project: Žádná fronta nebyla přiřazena tomuto projektu. Prosím zkontroluje nastavení projektu.
error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů").
text_journal_changed: "%{label} změněn z %{old} na %{new}"
text_journal_set_to: "%{label} nastaven na %{value}"
text_journal_deleted: "%{label} smazán (%{old})"
label_group_plural: Skupiny
label_group: Skupina
label_group_new: Nová skupina
label_time_entry_plural: Strávený čas
text_journal_added: "%{label} %{value} přidán"
field_active: Aktivní
enumeration_system_activity: Systémová aktivita
permission_delete_issue_watchers: Smazat přihlížející
version_status_closed: zavřený
version_status_locked: uzamčený
version_status_open: otevřený
error_can_not_reopen_issue_on_closed_version: Úkol přiřazený k uzavřené verzi nemůže být znovu otevřen
label_user_anonymous: Anonymní
button_move_and_follow: Přesunout a následovat
setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt
setting_gravatar_default: Výchozí Gravatar
field_sharing: Sdílení
label_version_sharing_hierarchy: S hierarchií projektu
label_version_sharing_system: Se všemi projekty
label_version_sharing_descendants: S podprojekty
label_version_sharing_tree: Se stromem projektu
label_version_sharing_none: Nesdíleno
error_can_not_archive_project: Tento projekt nemůže být archivován
button_duplicate: Duplikát
button_copy_and_follow: Kopírovat a následovat
label_copy_source: Zdroj
setting_issue_done_ratio: Spočítat koeficient dokončení úkolu s
setting_issue_done_ratio_issue_status: Použít stav úkolu
error_issue_done_ratios_not_updated: Koeficient dokončení úkolu nebyl aktualizován.
error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e)
setting_issue_done_ratio_issue_field: Použít pole úkolu
label_copy_same_as_target: Stejný jako cíl
label_copy_target: Cíl
notice_issue_done_ratios_updated: Koeficienty dokončení úkolu byly aktualizovány.
error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly
label_update_issue_done_ratios: Aktualizovat koeficienty dokončení úkolů
setting_start_of_week: Začínat kalendáře
permission_view_issues: Zobrazit úkoly
label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou
label_revision_id: Revize %{value}
label_api_access_key: API přístupový klíč
label_api_access_key_created_on: API přístupový klíč vytvořen %{value}
label_feeds_access_key: RSS přístupový klíč
notice_api_access_key_reseted: Váš API přístupový klíč byl resetován.
setting_rest_api_enabled: Zapnout službu REST
label_missing_api_access_key: Chybějící přístupový klíč API
label_missing_feeds_access_key: Chybějící přístupový klíč RSS
button_show: Zobrazit
text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu).
setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z těchto řádků
permission_add_subprojects: Vytvořit podprojekty
label_subproject_new: Nový podprojekt
text_own_membership_delete_confirmation: |-
Chystáte se odebrat si některá nebo všechny svá oprávnění a potom již nemusíte být schopni upravit tento projekt.
Opravdu chcete pokračovat?
label_close_versions: Zavřít dokončené verze
label_board_sticky: Nálepka
label_board_locked: Uzamčeno
permission_export_wiki_pages: Exportovat Wiki stránky
setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací paměti
permission_manage_project_activities: Spravovat aktivity projektu
error_unable_delete_issue_status: Nelze smazat stavy úkolů
label_profile: Profil
permission_manage_subtasks: Spravovat podúkoly
field_parent_issue: Rodičovský úkol
label_subtask_plural: Podúkol
label_project_copy_notifications: Odeslat email oznámení v průběhu kopie projektu
error_can_not_delete_custom_field: Nelze smazat volitelné pole
error_unable_to_connect: Nelze se připojit (%{value})
error_can_not_remove_role: Tato role je právě používaná a nelze ji smazat.
error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán.
field_principal: Hlavní
label_my_page_block: Bloky na mé stránce
notice_failed_to_save_members: "Nepodařilo se uložit člena(y): %{errors}."
text_zoom_out: Oddálit
text_zoom_in: Přiblížit
notice_unable_delete_time_entry: Nelze smazat čas ze záznamu.
label_overall_spent_time: Celkově strávený čas
field_time_entries: Zaznamenaný čas
project_module_gantt: Gantt
project_module_calendar: Kalendář
button_edit_associated_wikipage: "Upravit přiřazenou Wiki stránku: %{page_title}"
text_are_you_sure_with_children: Smazat úkol včetně všech podúkolů?
field_text: Textové pole
label_user_mail_option_only_owner: Only for things I am the owner of
setting_default_notification_option: Default notification option
label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
label_user_mail_option_only_assigned: Only for things I am assigned to
label_user_mail_option_none: No events
field_member_of_group: Assignee's group
field_assigned_to_role: Assignee's role
notice_not_authorized_archived_project: The project you're trying to access has been archived.
label_principal_search: "Search for user or group:"
label_user_search: "Search for user:"
field_visible: Visible
setting_emails_header: 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
text_powered_by: Powered by %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
label_bazaar_path: Root directory
label_cvs_path: CVSROOT
label_git_path: Path to .git directory
label_mercurial_path: Root directory
label_my_queries: My custom queries
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the 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
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.
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
description_search: Searchfield
description_user_mail_notification: Mail notification settings
description_date_range_list: Choose range from list
description_date_to: Enter end date
description_query_sort_criteria_attribute: Sort attribute
description_message_content: Message content
description_wiki_subpages_reassign: Choose new parent page
description_available_columns: Available Columns
description_selected_columns: Selected Columns
description_date_range_interval: Choose range by selecting start and end date
description_project_scope: Search scope
description_issue_category_reassign: Choose issue category
description_query_sort_criteria_direction: Sort direction
description_notes: Notes
description_filter: Filter
description_choose_project: Projects
description_date_from: Enter start date
label_deleted_custom_field: (deleted custom field)
field_custom_filter: Custom LDAP filter
text_display_subprojects: Display subprojects
text_current_project: Current project
label_toc: Contents
search_input_placeholder: search ...
setting_mail_handler_confirmation_on_success: Send confirmation email on successful incoming email
label_mail_handler_confirmation: "Confirmation of email submission: %{subject}"
label_mail_handler_errors_with_submission: "There were errors with your email submission:"
label_document_watchers: Watchers
setting_mail_handler_confirmation_on_failure: Send confirmation email on failed incoming email
label_between: between
label_mail_handler_failure: "Failed email submission: %{subject}"
notice_not_authorized_action: You are not authorized to perform this action.
text_mail_handler_confirmation_successful: Your email has been successful added at the following url
field_issue_summary: Issue summary
field_new_saved_query: New saved query
field_issue_view_all_open: View all open issues
label_subtask_add: Add a subtask
label_issue_hierarchy: Issue hierarchy
description_filter: Filtr
description_search: Vyhledávací pole
description_choose_project: Projekty
description_project_scope: Rozsah vyhledávání
description_notes: Poznámky
description_message_content: Obsah zprávy
description_query_sort_criteria_attribute: Atribut řazení
description_query_sort_criteria_direction: Směr řazení
description_user_mail_notification: Nastavení e-mailových upozornění
description_available_columns: Dostupné sloupce
description_selected_columns: Vybrané sloupce
description_issue_category_reassign: Zvolte kategorii úkolu
description_wiki_subpages_reassign: Vyberte novou rodičovskou stránku
description_date_range_list: Vyberte rozsah ze seznamu
description_date_range_interval: Určete rozsah vybráním počátečního a koncového datumu
description_date_from: Zadejte počáteční datum
description_date_to: Zadejte koncové datum
notice_not_authorized_action: K této akci nemáte oprávnění.
......@@ -963,28 +963,28 @@ de:
notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max})
setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden.
text_powered_by: Powered by %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
label_bazaar_path: Root directory
label_cvs_module: Modul
label_filesystem_path: Wurzelverzeichnis
label_darcs_path: Wurzelverzeichnis
label_bazaar_path: Wurzelverzeichnis
label_cvs_path: CVSROOT
label_git_path: Path to .git directory
label_mercurial_path: Root directory
label_my_queries: My custom queries
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the 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
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.
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_git_path: Pfad zum .git Verzeichnis
label_mercurial_path: Wurzelverzeichnis
label_my_queries: Meine benutzerdefinierten Abfragen
label_additional_workflow_transitions_for_assignee: Zusätzliche Workflow-Übergänge wenn das Ticket an den Benutzer zugewiesen ist
text_journal_changed_no_detail: "%{label} aktualisiert"
button_expand_all: Alles ausklappen
button_collapse_all: Alles einklappen
label_additional_workflow_transitions_for_author: Zusätzliche Workflow-Übergänge wenn der Benutzer der Autor ist
field_effective_date: Abshlussdatum
label_news_comment_added: "Kommentar erfolgreich hinzugefügt"
field_warn_on_leaving_unsaved: "Warnen wenn eine Seite mit ungespeichertem Text verlassen wird"
text_warn_on_leaving_unsaved: "Die aktuelle Seite enthält ungespeicherten Text er verloren geht wenn Sie diese Seite verlassen."
text_default_encoding: "Standard: UTF-8"
text_git_repo_example: Ein lokales "bare Repository" (z.B. /gitrepo, c:\gitrepo)
label_notify_member_plural: Benachrichtigungen verschicken
label_path_encoding: Pfadkodierung
text_mercurial_repo_example: Lokales Projektarchiv (z.B. /hgrepo, c:\hgrepo)
label_diff: diff
description_filter: Filter
description_search: Suchfeld
......@@ -1003,19 +1003,19 @@ de:
description_date_range_interval: Zeitraum durch Start- und Enddatum festlegen
description_date_from: Startdatum eintragen
description_date_to: Enddatum eintragen
field_custom_filter: Custom LDAP filter
field_custom_filter: Benutzerdefinierter LDAP-Filter
label_toc: "Inhaltsverzeichnis"
text_display_subprojects: Display subprojects
text_current_project: Current project
setting_mail_handler_confirmation_on_success: Send confirmation email on successful incoming email
label_mail_handler_confirmation: "Confirmation of email submission: %{subject}"
label_mail_handler_errors_with_submission: "There were errors with your email submission:"
label_document_watchers: Watchers
setting_mail_handler_confirmation_on_failure: Send confirmation email on failed incoming email
label_between: between
label_mail_handler_failure: "Failed email submission: %{subject}"
notice_not_authorized_action: You are not authorized to perform this action.
text_mail_handler_confirmation_successful: Your email has been successful added at the following url
field_issue_summary: Issue summary
field_new_saved_query: New saved query
field_issue_view_all_open: View all open issues
text_display_subprojects: Unterprojekte anzeigen
text_current_project: Aktuelles Project
setting_mail_handler_confirmation_on_success: Bestätigungs-E-Mail bei erfolgreich eingegangenen E-Mails versenden
label_mail_handler_confirmation: "Bestätigung der E-Mail-Verarbeitung: %{subject}"
label_mail_handler_errors_with_submission: "Es traten Fehler bei der E-Mail verarbeitung auf:"
label_document_watchers: Beobachter
setting_mail_handler_confirmation_on_failure: Bestätigungs-E-Mail bei fehlgeschlagenen eingehenden E-Mails versenden
label_between: zwischen
label_mail_handler_failure: "E-Mail-Versand fehlgeschlagen: %{subject}"
notice_not_authorized_action: Sie sind für diese Aktion nicht autorisiert.
text_mail_handler_confirmation_successful: Ihre E-Mil wurde erfolgreich zu folgender URL hinzugefügt
field_issue_summary: Ticketübersicht
field_new_saved_query: Neue gespeicherte Abfrage
field_issue_view_all_open: Alle offen Tickets
# French translations for Ruby on Rails
# French translations for Ruby on Rails and ChiliProject
# by Christian Lescuyer (christian@flyingcoders.com)
# contributor: Sebastien Grosjean - ZenCocoon.com
# contributor: Thibaut Cuvelier - Developpez.com
# contributor: Sébastien Santoro aka Dereckson
fr:
direction: ltr
......@@ -174,8 +175,8 @@ fr:
notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible.
notice_not_authorized: "Vous n'êtes pas autorisé à accéder à cette page."
notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé.
notice_email_sent: "Un email a été envoyé à %{value}"
notice_email_error: "Erreur lors de l'envoi de l'email (%{value})"
notice_email_sent: "Un e-mail a été envoyé à %{value}"
notice_email_error: "Erreur lors de l'envoi de l'e-mail (%{value})"
notice_feeds_access_key_reseted: "Votre clé d'accès aux flux RSS a été réinitialisée."
notice_failed_to_save_issues: "%{count} demande(s) sur les %{total} sélectionnées n'ont pas pu être mise(s) à jour : %{ids}."
notice_no_issue_selected: "Aucune demande sélectionnée ! Cochez les demandes que vous voulez mettre à jour."
......@@ -223,7 +224,7 @@ fr:
field_is_required: Obligatoire
field_firstname: Prénom
field_lastname: Nom
field_mail: "Email "
field_mail: "E-mail "
field_filename: Fichier
field_filesize: Taille
field_downloads: Téléchargements
......@@ -253,12 +254,12 @@ fr:
field_fixed_version: Version cible
field_user: Utilisateur
field_role: Rôle
field_homepage: "Site web "
field_homepage: "Site Web "
field_is_public: Public
field_parent: Sous-projet de
field_is_in_roadmap: Demandes affichées dans la roadmap
field_is_in_roadmap: Demandes affichées dans la feuille de route
field_login: "Identifiant "
field_mail_notification: Notifications par mail
field_mail_notification: Notifications par e-mail
field_admin: Administrateur
field_last_login_on: "Dernière connexion "
field_language: Langue
......@@ -279,7 +280,7 @@ fr:
field_start_date: Début
field_done_ratio: "% réalisé"
field_auth_source: Mode d'authentification
field_hide_mail: Cacher mon adresse mail
field_hide_mail: Cacher mon adresse e-mail
field_comments: Commentaire
field_url: URL
field_start_page: Page de démarrage
......@@ -321,10 +322,10 @@ fr:
setting_issues_export_limit: Limite export demandes
setting_mail_from: Adresse d'émission
setting_bcc_recipients: Destinataires en copie cachée (cci)
setting_plain_text_mail: Mail texte brut (non HTML)
setting_plain_text_mail: Mail texte brut (sans HTML)
setting_host_name: Nom d'hôte et chemin
setting_text_formatting: Formatage du texte
setting_wiki_compression: Compression historique wiki
setting_wiki_compression: Compression de l'historique du wiki
setting_feeds_limit: Limite du contenu des flux RSS
setting_default_projects_public: Définir les nouveaux projets comme publics par défaut
setting_autofetch_changesets: Récupération auto. des commits
......@@ -338,15 +339,15 @@ fr:
setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes
setting_repositories_encodings: Encodages des dépôts
setting_commit_logs_encoding: Encodage des messages de commit
setting_emails_footer: Pied-de-page des emails
setting_emails_footer: Pied-de-page des e-mails
setting_protocol: Protocole
setting_per_page_options: Options d'objets affichés par page
setting_user_format: Format d'affichage des utilisateurs
setting_activity_days_default: Nombre de jours affichés sur l'activité des projets
setting_display_subprojects_issues: Afficher par défaut les demandes des sous-projets sur les projets principaux
setting_enabled_scm: SCM activés
setting_mail_handler_body_delimiters: "Tronquer les emails après l'une de ces lignes"
setting_mail_handler_api_enabled: "Activer le WS pour la réception d'emails"
setting_mail_handler_body_delimiters: "Tronquer les e-mails après l'une de ces lignes"
setting_mail_handler_api_enabled: "Activer le WS pour la réception d'e-mails"
setting_mail_handler_api_key: Clé de protection de l'API
setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels
setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
......@@ -472,8 +473,8 @@ fr:
label_tracker_plural: Trackers
label_tracker_new: Nouveau tracker
label_workflow: Workflow
label_issue_status: Statut de demandes
label_issue_status_plural: Statuts de demandes
label_issue_status: Statut de demande
label_issue_status_plural: Statuts de demande
label_issue_status_new: Nouveau statut
label_issue_category: Catégorie de demandes
label_issue_category_plural: Catégories de demandes
......@@ -646,7 +647,7 @@ fr:
label_sort_higher: Remonter
label_sort_lower: Descendre
label_sort_lowest: Descendre en dernier
label_roadmap: Roadmap
label_roadmap: Feuille de route
label_roadmap_due_in: "Échéance dans %{value}"
label_roadmap_overdue: "En retard de %{value}"
label_roadmap_no_issues: Aucune demande pour cette version
......@@ -718,7 +719,7 @@ fr:
label_date_to: Au
label_language_based: Basé sur la langue de l'utilisateur
label_sort_by: "Trier par %{value}"
label_send_test_email: Envoyer un email de test
label_send_test_email: Envoyer un e-mail de test
label_feeds_access_key_created_on: "Clé d'accès RSS créée il y a %{value}"
label_module_plural: Modules
label_added_time_by: "Ajouté par %{author} il y a %{age}"
......@@ -736,7 +737,7 @@ fr:
label_user_mail_option_all: "Pour tous les événements de tous mes projets"
label_user_mail_option_selected: "Pour tous les événements des projets sélectionnés..."
label_user_mail_no_self_notified: "Je ne veux pas être notifié des changements que j'effectue"
label_registration_activation_by_email: activation du compte par email
label_registration_activation_by_email: activation du compte par e-mail
label_registration_manual_activation: activation manuelle du compte
label_registration_automatic_activation: activation automatique du compte
label_display_per_page: "Par page : %{value}"
......@@ -754,7 +755,7 @@ fr:
label_chronological_order: Dans l'ordre chronologique
label_reverse_chronological_order: Dans l'ordre chronologique inverse
label_planning: Planning
label_incoming_emails: Emails entrants
label_incoming_emails: E-mails entrants
label_generate_key: Générer une clé
label_issue_watchers: Observateurs
label_example: Exemple
......@@ -909,7 +910,7 @@ fr:
default_role_non_member: "Non membre "
default_role_anonymous: "Anonyme "
default_tracker_bug: Anomalie
default_tracker_feature: Evolution
default_tracker_feature: Évolution
default_tracker_support: Assistance
default_issue_status_new: Nouveau
default_issue_status_in_progress: En cours
......@@ -943,13 +944,13 @@ fr:
text_journal_deleted: "%{label} %{old} supprimé"
text_journal_added: "%{label} %{value} ajouté"
enumeration_system_activity: Activité système
label_board_sticky: Sticky
label_board_sticky: Post-it
label_board_locked: Verrouillé
error_unable_delete_issue_status: Impossible de supprimer le statut de demande
error_can_not_delete_custom_field: Impossible de supprimer le champ personnalisé
error_unable_to_connect: Connexion impossible (%{value})
error_can_not_remove_role: Ce rôle est utilisé et ne peut pas être supprimé.
error_can_not_delete_tracker: Ce tracker contient des demandes et ne peut pas être supprimé.
error_can_not_delete_tracker: "Ce tracker contenant des demandes, il ne peut pas être supprimé."
field_principal: Principal
notice_failed_to_save_members: "Erreur lors de la sauvegarde des membres: %{errors}."
text_zoom_out: Zoom arrière
......@@ -959,7 +960,7 @@ fr:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendrier
button_edit_associated_wikipage: "Modifier la page wiki associée: %{page_title}"
button_edit_associated_wikipage: "Modifier la page wiki associée : %{page_title}"
text_are_you_sure_with_children: Supprimer la demande et toutes ses sous-demandes ?
field_text: Champ texte
label_user_mail_option_only_owner: Seulement pour ce que j'ai créé
......@@ -970,53 +971,53 @@ fr:
field_member_of_group: Groupe de l'assigné
field_assigned_to_role: Rôle de l'assigné
setting_emails_header: En-tête des emails
text_powered_by: Powered by %{link}
text_powered_by: Propulsé par %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
label_bazaar_path: Root directory
label_filesystem_path: Dossier parent
label_darcs_path: Dossier parent
label_bazaar_path: Dossier parent
label_cvs_path: CVSROOT
label_git_path: Path to .git directory
label_mercurial_path: Root directory
field_effective_date: Due date
text_default_encoding: "Default: UTF-8"
text_git_repo_example: a bare and local repository (e.g. /gitrepo, c:\gitrepo)
label_git_path: Dossier .git
label_mercurial_path: Dossier parent
field_effective_date: Échéance
text_default_encoding: "par défaut, UTF-8"
text_git_repo_example: un dépôt local et nu (ex. /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)
description_search: Searchfield
label_path_encoding: Encodage du dossier
text_mercurial_repo_example: dépôt local (ex. /hgrepo, c:\hgrepo)
description_search: Case de recherche
description_user_mail_notification: Mail notification settings
description_date_range_list: Choose range from list
description_date_to: Enter end date
description_query_sort_criteria_attribute: Sort attribute
description_message_content: Message content
description_message_content: Contenu du message
description_wiki_subpages_reassign: Choose new parent page
description_available_columns: Available Columns
description_selected_columns: Selected Columns
description_date_range_interval: Choose range by selecting start and end date
description_project_scope: Search scope
description_issue_category_reassign: Choose issue category
description_query_sort_criteria_direction: Sort direction
description_available_columns: Colonnes disponibles
description_selected_columns: Colonnes sélectionnées
description_date_range_interval: Choisissez l'intervalle de date en sélectionnant une date de début et une date de fin
description_project_scope: Portée de recherche
description_issue_category_reassign: Sélectionnez la catégorie de la demande
description_query_sort_criteria_direction: Tri par direction
description_notes: Notes
description_filter: Filter
description_choose_project: Projects
description_date_from: Enter start date
field_custom_filter: Custom LDAP filter
text_display_subprojects: Display subprojects
text_current_project: Current project
label_toc: Contents
search_input_placeholder: search ...
setting_mail_handler_confirmation_on_success: Send confirmation email on successful incoming email
label_mail_handler_confirmation: "Confirmation of email submission: %{subject}"
label_mail_handler_errors_with_submission: "There were errors with your email submission:"
label_document_watchers: Watchers
setting_mail_handler_confirmation_on_failure: Send confirmation email on failed incoming email
label_between: between
label_mail_handler_failure: "Failed email submission: %{subject}"
notice_not_authorized_action: You are not authorized to perform this action.
text_mail_handler_confirmation_successful: Your email has been successful added at the following url
field_issue_summary: Issue summary
field_new_saved_query: New saved query
field_issue_view_all_open: View all open issues
label_subtask_add: Add a subtask
label_issue_hierarchy: Issue hierarchy
description_filter: Filtrer
description_choose_project: Projets
description_date_from: Entrer la date du début
field_custom_filter: Filtre LDAP personnalisé
text_display_subprojects: Afficher les sous-projets
text_current_project: Project en cours
label_toc: Table des matières
search_input_placeholder: recherche ...
setting_mail_handler_confirmation_on_success: Envoyer un e-mail
label_mail_handler_confirmation: "Confirmation de l 'envoi d'un e-mail : %{subject}"
label_mail_handler_errors_with_submission: "Des erreurs sont survenues lors de l'envoi de votre e-mail :"
label_document_watchers: Observateurs
setting_mail_handler_confirmation_on_failure: Envoyez une confirmation en cas d'erreur d'e-mail entrant
label_between: entre
label_mail_handler_failure: "Erreur d'envoi d'e-mail : %{subject}"
notice_not_authorized_action: Vous n'êtes pas autoriser à effectuer cette action.
text_mail_handler_confirmation_successful: Votre e-mail a été ajouté avec succès à l'adresse suivante
field_issue_summary: Rapports
field_new_saved_query: Nouveau rapport
field_issue_view_all_open: Demandes ouvertes
label_subtask_add: Ajouter une sous-tâche
label_issue_hierarchy: Hiérarchie de la demande
......@@ -154,7 +154,7 @@ pt-BR:
general_text_Yes: 'Sim'
general_text_no: 'não'
general_text_yes: 'sim'
general_lang_name: 'Português(Brasil)'
general_lang_name: 'Português (Brasil)'
general_csv_separator: ';'
general_csv_decimal_separator: ','
general_csv_encoding: ISO-8859-1
......@@ -245,7 +245,7 @@ pt-BR:
field_role: Cargo
field_homepage: Página do projeto
field_is_public: Público
field_parent: Sub-projeto de
field_parent: Subprojeto de
field_is_in_roadmap: Exibir no planejamento
field_login: Usuário
field_mail_notification: Notificações por e-mail
......@@ -273,7 +273,7 @@ pt-BR:
field_comments: Comentário
field_url: URL
field_start_page: Página inicial
field_subproject: Sub-projeto
field_subproject: Subprojeto
field_hours: Horas
field_activity: Atividade
field_spent_on: Data
......@@ -411,8 +411,8 @@ pt-BR:
label_auth_source: Modo de autenticação
label_auth_source_new: Novo modo de autenticação
label_auth_source_plural: Modos de autenticação
label_subproject_plural: Sub-projetos
label_and_its_subprojects: "%{value} e seus sub-projetos"
label_subproject_plural: Subprojetos
label_and_its_subprojects: "%{value} e seus subprojetos"
label_min_max_length: Tamanho mín-máx
label_list: Lista
label_date: Data
......@@ -879,7 +879,7 @@ pt-BR:
field_sharing: Compartilhamento
label_version_sharing_hierarchy: Com a hierarquia do projeto
label_version_sharing_system: Com todos os projetos
label_version_sharing_descendants: Com sub-projetos
label_version_sharing_descendants: Com subprojetos
label_version_sharing_tree: Com a árvore do projeto
label_version_sharing_none: Sem compartilhamento
error_can_not_archive_project: Este projeto não pode ser arquivado
......@@ -989,7 +989,7 @@ pt-BR:
label_mercurial_path: Diretório raiz
label_diff: diff
description_search: Searchfield
description_search: Campo de pesquisa
description_user_mail_notification: Configuração de notificações por e-mail
description_date_range_list: Escolha um período a partira da lista
description_date_to: Digite a data final
......@@ -1008,21 +1008,21 @@ pt-BR:
description_date_from: Digita a data inicial
label_deleted_custom_field: (campo personalizado excluído)
field_custom_filter: Custom LDAP filter
text_display_subprojects: Display subprojects
text_current_project: Current project
label_toc: Contents
search_input_placeholder: search ...
setting_mail_handler_confirmation_on_success: Send confirmation email on successful incoming email
label_mail_handler_confirmation: "Confirmation of email submission: %{subject}"
label_mail_handler_errors_with_submission: "There were errors with your email submission:"
label_document_watchers: Watchers
setting_mail_handler_confirmation_on_failure: Send confirmation email on failed incoming email
text_display_subprojects: Exibir subprojetos
text_current_project: Projeto atual
label_toc: Conteúdo
search_input_placeholder: pesquisar ...
setting_mail_handler_confirmation_on_success: Enviar confirmação ao receber um e-mail
label_mail_handler_confirmation: "Confirmação de envio de e-mail: %{subject}"
label_mail_handler_errors_with_submission: "Seu envio de email falhou:"
label_document_watchers: Observadores
setting_mail_handler_confirmation_on_failure: Enviar confirmação ao falhar o recebimento de um e-mail
label_between: between
label_mail_handler_failure: "Failed email submission: %{subject}"
notice_not_authorized_action: You are not authorized to perform this action.
text_mail_handler_confirmation_successful: Your email has been successful added at the following url
field_issue_summary: Issue summary
field_new_saved_query: New saved query
field_issue_view_all_open: View all open issues
label_subtask_add: Add a subtask
label_issue_hierarchy: Issue hierarchy
label_mail_handler_failure: "Envio de e-mail falhou: %{subject}"
notice_not_authorized_action: Você não tem permissão para fazer isto.
text_mail_handler_confirmation_successful: Seu e-mail foi adicionado com sucesso a URL a seguir
field_issue_summary: Relatório
field_new_saved_query: Nova consulta
field_issue_view_all_open: Ver tarefas abertas
label_subtask_add: Adicionar
label_issue_hierarchy: Subtarefas
# Swedish translation for Ruby on Rails
# Swedish translation for Ruby on Rails and ChiliProject
# by Johan Lundström (johanlunds@gmail.com),
# with parts taken from http://github.com/daniel/swe_rails
#
# contributor: Björn Blissing
sv:
# Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
direction: ltr
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%Y-%m-%d"
short: "%e %b"
long: "%e %B, %Y"
day_names: [söndag, måndag, tisdag, onsdag, torsdag, fredag, lördag]
abbr_day_names: [sön, mån, tis, ons, tor, fre, lör]
# Don't forget the nil at the beginning; there's no such thing as a 0th month
month_names: [~, januari, februari, mars, april, maj, juni, juli, augusti, september, oktober, november, december]
abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec]
# Used in date_select and datime_select.
order:
- :day
- :month
- :year
time:
formats:
default: "%Y-%m-%d %H:%M"
time: "%H:%M"
short: "%d %b %H:%M"
long: "%d %B, %Y %H:%M"
am: ""
pm: ""
datetime:
distance_in_words:
half_a_minute: "en halv minut"
less_than_x_seconds:
one: "mindre än en sekund"
other: "mindre än %{count} sekunder"
x_seconds:
one: "en sekund"
other: "%{count} sekunder"
less_than_x_minutes:
one: "mindre än en minut"
other: "mindre än %{count} minuter"
x_minutes:
one: "en minut"
other: "%{count} minuter"
about_x_hours:
one: "ungefär en timme"
other: "ungefär %{count} timmar"
x_days:
one: "en dag"
other: "%{count} dagar"
about_x_months:
one: "ungefär en månad"
other: "ungefär %{count} månader"
x_months:
one: "en månad"
other: "%{count} månader"
about_x_years:
one: "ungefär ett år"
other: "ungefär %{count} år"
over_x_years:
one: "mer än ett år"
other: "mer än %{count} år"
almost_x_years:
one: "nästan 1 år"
other: "nästan %{count} år"
number:
# Used in number_with_delimiter()
# These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
format:
# Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
separator: ","
# Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three)
delimiter: "."
# Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
precision: 2
# Used in number_to_currency()
......@@ -19,7 +85,7 @@ sv:
format:
# Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
format: "%n %u"
unit: "kr"
unit: "SEK"
# These three are to override number.format and are optional
# separator: "."
# delimiter: ","
......@@ -41,13 +107,10 @@ sv:
delimiter: ""
# precision:
# Used in number_to_human_size()
human:
format:
# These three are to override number.format and are optional
# separator:
delimiter: ""
# precision: 1
precision: 1
storage_units:
format: "%n %u"
units:
......@@ -59,43 +122,12 @@ sv:
gb: "GB"
tb: "TB"
# Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
datetime:
distance_in_words:
half_a_minute: "en halv minut"
less_than_x_seconds:
one: "mindre än en sekund"
other: "mindre än %{count} sekunder"
x_seconds:
one: "en sekund"
other: "%{count} sekunder"
less_than_x_minutes:
one: "mindre än en minut"
other: "mindre än %{count} minuter"
x_minutes:
one: "en minut"
other: "%{count} minuter"
about_x_hours:
one: "ungefär en timme"
other: "ungefär %{count} timmar"
x_days:
one: "en dag"
other: "%{count} dagar"
about_x_months:
one: "ungefär en månad"
other: "ungefär %{count} månader"
x_months:
one: "en månad"
other: "%{count} månader"
about_x_years:
one: "ungefär ett år"
other: "ungefär %{count} år"
over_x_years:
one: "mer än ett år"
other: "mer än %{count} år"
almost_x_years:
one: "nästan 1 år"
other: "nästan %{count} år"
# Used in array.to_sentence.
support:
array:
sentence_connector: "och"
skip_last_comma: true
activerecord:
errors:
......@@ -103,10 +135,6 @@ sv:
header:
one: "Ett fel förhindrade denna %{model} från att sparas"
other: "%{count} fel förhindrade denna %{model} från att sparas"
# The variable :count is also available
body: "Det var problem med följande fält:"
# The values :model, :attribute and :value are always available for interpolation
# The value :count is available when applicable. Can be used for pluralization.
messages:
inclusion: "finns inte i listan"
exclusion: "är reserverat"
......@@ -120,6 +148,7 @@ sv:
wrong_length: "har fel längd (ska vara %{count} tecken)"
taken: "har redan tagits"
not_a_number: "är inte ett nummer"
not_a_date: "är inte ett giltigt datum"
greater_than: "måste vara större än %{count}"
greater_than_or_equal_to: "måste vara större än eller lika med %{count}"
equal_to: "måste vara samma som"
......@@ -132,43 +161,6 @@ sv:
circular_dependency: "Denna relation skulle skapa ett cirkulärt beroende"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
direction: ltr
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%Y-%m-%d"
short: "%e %b"
long: "%e %B, %Y"
day_names: [söndag, måndag, tisdag, onsdag, torsdag, fredag, lördag]
abbr_day_names: [sön, mån, tis, ons, tor, fre, lör]
# Don't forget the nil at the beginning; there's no such thing as a 0th month
month_names: [~, januari, februari, mars, april, maj, juni, juli, augusti, september, oktober, november, december]
abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec]
# Used in date_select and datime_select.
order:
- :day
- :month
- :year
time:
formats:
default: "%Y-%m-%d %H:%M"
time: "%H:%M"
short: "%d %b %H:%M"
long: "%d %B, %Y %H:%M"
am: ""
pm: ""
# Used in array.to_sentence.
support:
array:
sentence_connector: "och"
skip_last_comma: true
actionview_instancetag_blank_option: Var god välj
general_text_No: 'Nej'
......@@ -198,6 +190,7 @@ sv:
notice_file_not_found: Sidan du försökte komma åt existerar inte eller är borttagen.
notice_locking_conflict: Data har uppdaterats av en annan användare.
notice_not_authorized: Du saknar behörighet att komma åt den här sidan.
notice_not_authorized_action: Du saknar behörighet att utföra denna handling.
notice_not_authorized_archived_project: Projektet du försöker komma åt har arkiverats.
notice_email_sent: "Ett mail skickades till %{value}"
notice_email_error: "Ett fel inträffade när mail skickades (%{value})"
......@@ -230,7 +223,6 @@ sv:
error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mål'
error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort'
error_unable_to_connect: "Kan inte ansluta (%{value})"
warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas."
mail_subject_lost_password: "Ditt %{value} lösenord"
......@@ -243,8 +235,8 @@ sv:
mail_body_account_activation_request: "En ny användare (%{value}) har registrerat sig och avvaktar ditt godkännande:"
mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna"
mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:"
mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till"
mail_body_wiki_content_added: "The '%{id}' wikisida has lagts till av %{author}."
mail_subject_wiki_content_added: "'%{id}' wikisida har lagts till"
mail_body_wiki_content_added: "The '%{id}' wikisida har lagts till av %{author}."
mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats"
mail_body_wiki_content_updated: "The '%{id}' wikisida har uppdaterats av %{author}."
......@@ -286,7 +278,7 @@ sv:
field_priority: Prioritet
field_fixed_version: Versionsmål
field_user: Användare
field_principal: Principal
field_principal: Huvudsaklig
field_role: Roll
field_homepage: Hemsida
field_is_public: Publik
......@@ -297,6 +289,7 @@ sv:
field_admin: Administratör
field_last_login_on: Senaste inloggning
field_language: Språk
field_effective_date: Förfallodag
field_password: Lösenord
field_new_password: Nytt lösenord
field_password_confirmation: Bekräfta lösenord
......@@ -348,6 +341,10 @@ sv:
field_text: Textfält
field_visible: Synlig
field_warn_on_leaving_unsaved: Varna om jag lämnar en sida med osparad text
field_custom_filter: Anpassat LDAP filter
field_issue_summary: Sammanfattning av ärendet
field_new_saved_query: Skapa ny förfrågan
field_issue_view_all_open: Visa alla öppna ärenden
setting_app_title: Applikationsrubrik
setting_app_subtitle: Applikationsunderrubrik
......@@ -407,6 +404,9 @@ sv:
setting_commit_logtime_enabled: Aktivera tidloggning
setting_commit_logtime_activity_id: Aktivitet för loggad tid
setting_gantt_items_limit: Maximalt antal aktiviteter som visas i gantt-schemat
setting_issue_startdate_is_adddate: Använd nuvarande datum som startdatum för nya ärenden
setting_mail_handler_confirmation_on_success: "Skicka e-postbekräftelse framgångsrika inkommande e-post"
setting_mail_handler_confirmation_on_failure: "Skicka e-postbekräftelse vid misslyckade inkommande e-post"
permission_add_project: Skapa projekt
permission_add_subprojects: Skapa underprojekt
......@@ -416,9 +416,9 @@ sv:
permission_manage_project_activities: Hantera projektaktiviteter
permission_manage_versions: Hantera versioner
permission_manage_categories: Hantera ärendekategorier
permission_view_issues: Visa ärenden
permission_add_issues: Lägga till ärenden
permission_edit_issues: Ändra ärenden
permission_view_issues: Visa ärenden
permission_manage_issue_relations: Hantera ärenderelationer
permission_add_issue_notes: Lägga till ärendenotering
permission_edit_issue_notes: Ändra ärendenoteringar
......@@ -581,6 +581,7 @@ sv:
label_news_latest: Senaste nyheterna
label_news_view_all: Visa alla nyheter
label_news_added: Nyhet tillagd
label_news_comment_added: Kommentar tillagd till en nyhet
label_settings: Inställningar
label_overview: Översikt
label_version: Version
......@@ -648,6 +649,7 @@ sv:
label_in_more_than: om mer än
label_greater_or_equal: '>='
label_less_or_equal: '<='
label_between: "mellan"
label_in: om
label_today: idag
label_all_time: närsom
......@@ -670,8 +672,8 @@ sv:
label_browse: Bläddra
label_modification: "%{count} ändring"
label_modification_plural: "%{count} ändringar"
label_branch: Branch
label_tag: Tag
label_branch: Gren
label_tag: Tagg
label_revision: Revision
label_revision_plural: Revisioner
label_revision_id: "Revision %{value}"
......@@ -695,6 +697,7 @@ sv:
label_roadmap_overdue: "%{value} sen"
label_roadmap_no_issues: Inga ärenden för denna version
label_search: Sök
search_input_placeholder: sök ...
label_result_plural: Resultat
label_all_words: Alla ord
label_wiki: Wiki
......@@ -706,7 +709,7 @@ sv:
label_index_by_date: Innehåll efter datum
label_current_version: Nuvarande version
label_preview: Förhandsgranska
label_feed_plural: Feeds
label_feed_plural: Flöde
label_changes_details: Detaljer om alla ändringar
label_issue_tracking: Ärendeuppföljning
label_spent_time: Spenderad tid
......@@ -718,6 +721,7 @@ sv:
label_statistics: Statistik
label_commits_per_month: Commits per månad
label_commits_per_author: Commits per författare
label_diff: Skillnad
label_view_diff: Visa skillnader
label_diff_inline: i texten
label_diff_side_by_side: sida vid sida
......@@ -749,7 +753,7 @@ sv:
label_board_new: Nytt forum
label_board_plural: Forum
label_board_locked: Låst
label_board_sticky: Sticky
label_board_sticky: Viktigt
label_topic_plural: Ämnen
label_message_plural: Meddelanden
label_message_last: Senaste meddelande
......@@ -796,7 +800,7 @@ sv:
label_change_properties: Ändra inställningar
label_general: Allmänt
label_more: Mer
label_scm: SCM
label_scm: Versionshantering
label_plugins: Tillägg
label_ldap_authentication: LDAP-autentisering
label_downloads_abbr: Nerl.
......@@ -809,6 +813,7 @@ sv:
label_incoming_emails: Inkommande mail
label_generate_key: Generera en nyckel
label_issue_watchers: Bevakare
label_document_watchers: Bevakare
label_example: Exempel
label_display: Visa
label_sort: Sortera
......@@ -836,15 +841,35 @@ sv:
label_api_access_key_created_on: "API-nyckel skapad för %{value} sedan"
label_profile: Profil
label_subtask_plural: Underaktiviteter
label_subtask_add: Lägg till en underaktivitet
label_issue_hierarchy: Ärendehierarki
label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras
label_principal_search: "Sök efter användare eller grupp:"
label_user_search: "Sök efter användare:"
label_git_path: Sökväg till .git katalog
label_darcs_path: Rotkatalog
label_mercurial_path: Rotkatalog
label_cvs_path: CVSROOT
label_cvs_module: Modul
label_bazaar_path: Rotkatalog
label_filesystem_path: Rotkatalog
label_additional_workflow_transitions_for_assignee: Ytterligare övergångar tillåtna för tilldelad användare
label_additional_workflow_transitions_for_author: Ytterligare övergångar tillåtna när användaren är författaren
label_notify_member_plural: E-posta uppdateringar för ärende
label_path_encoding: Kodning av sökväg
label_deleted_custom_field: '(tog bort anpassat fält)'
label_toc: "Innehåll"
label_mail_handler_confirmation: "Bekräftelse inskickning via e-post: %{subject}"
label_mail_handler_failure: "Inskickning via e-post misslyckades: %{subject}"
label_mail_handler_errors_with_submission: "Det fanns fel med din inskickning via e-post:"
button_login: Logga in
button_submit: Skicka
button_save: Spara
button_check_all: Markera alla
button_uncheck_all: Avmarkera alla
button_collapse_all: Minimera alla
button_expand_all: Maximera alla
button_delete: Ta bort
button_create: Skapa
button_create_and_continue: Skapa och fortsätt
......@@ -953,20 +978,27 @@ sv:
text_wiki_page_destroy_children: "Ta bort alla underliggande sidor"
text_wiki_page_reassign_children: "Flytta undersidor till denna föräldersida"
text_own_membership_delete_confirmation: "Några av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?"
text_zoom_out: Zooma ut
text_zoom_in: Zooma in
text_zoom_out: Zooma ut
text_powered_by: "Powered by %{link}"
text_warn_on_leaving_unsaved: Nuvarande sida innehåller osparad text som kommer försvinna om du lämnar sidan.
text_default_encoding: "Standard: UTF-8"
text_mercurial_repo_example: "Lokalt arkiv (t.ex. /hgrepo, c:\\hgrepo)"
text_git_repo_example: "Ett lokalt bare git arkiv (t.ex. /gitrepo, c:\\gitrepo)"
text_display_subprojects: Visa underprojekt
text_current_project: Nuvarande project
text_mail_handler_confirmation_successful: "Din e-post har framgångsrikt lagts till följande webbadress"
default_role_manager: Projektledare
default_role_developer: Utvecklare
default_role_reporter: Rapportör
default_role_non_member: Non member
default_role_anonymous: Anonymous
default_role_non_member: Icke-medlem
default_role_anonymous: Anonym
default_tracker_bug: Bugg
default_tracker_feature: Funktionalitet
default_tracker_support: Support
default_issue_status_new: Ny
default_issue_status_in_progress: Pågår
default_issue_status_in_progress: Pågående
default_issue_status_resolved: Löst
default_issue_status_feedback: Återkoppling
default_issue_status_closed: Stängd
......@@ -985,62 +1017,20 @@ sv:
enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsuppföljning)
enumeration_system_activity: Systemaktivitet
text_powered_by: Powered by %{link}
label_cvs_module: Module
label_filesystem_path: Root directory
label_darcs_path: Root directory
label_bazaar_path: Root directory
label_cvs_path: CVSROOT
label_git_path: Path to .git directory
label_mercurial_path: Root directory
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
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
field_effective_date: Due date
label_news_comment_added: Comment added to a news
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
description_search: Searchfield
description_user_mail_notification: Mail notification settings
description_date_range_list: Choose range from list
description_date_to: Enter end date
description_query_sort_criteria_attribute: Sort attribute
description_message_content: Message content
description_wiki_subpages_reassign: Choose new parent page
description_available_columns: Available Columns
description_selected_columns: Selected Columns
description_date_range_interval: Choose range by selecting start and end date
description_project_scope: Search scope
description_issue_category_reassign: Choose issue category
description_query_sort_criteria_direction: Sort direction
description_notes: Notes
description_filter: Filter
description_choose_project: Projects
description_date_from: Enter start date
label_deleted_custom_field: (deleted custom field)
field_custom_filter: Custom LDAP filter
text_display_subprojects: Display subprojects
text_current_project: Current project
label_toc: Contents
search_input_placeholder: search ...
setting_mail_handler_confirmation_on_success: Send confirmation email on successful incoming email
label_mail_handler_confirmation: "Confirmation of email submission: %{subject}"
label_mail_handler_errors_with_submission: "There were errors with your email submission:"
label_document_watchers: Watchers
setting_mail_handler_confirmation_on_failure: Send confirmation email on failed incoming email
label_between: between
label_mail_handler_failure: "Failed email submission: %{subject}"
notice_not_authorized_action: You are not authorized to perform this action.
text_mail_handler_confirmation_successful: Your email has been successful added at the following url
field_issue_summary: Issue summary
field_new_saved_query: New saved query
field_issue_view_all_open: View all open issues
label_subtask_add: Add a subtask
label_issue_hierarchy: Issue hierarchy
description_search: Sökfält
description_choose_project: Projekt
description_project_scope: Sökomfång
description_notes: Noteringar
description_message_content: Meddelandeinnehåll
description_query_sort_criteria_attribute: Sorteringsattribut
description_query_sort_criteria_direction: Sorteringsordning
description_user_mail_notification: E-post notifieringsinställningar
description_available_columns: Tillängliga kolumner
description_selected_columns: Valda kolumner
description_issue_category_reassign: Välj ärendekategori
description_wiki_subpages_reassign: Välj ny huvudsida
description_date_range_list: Välj omfång ifrån lista
description_date_range_interval: Välj omfång genom att ange start- och slutdatum
description_date_from: Ange startdatum
description_date_to: Ange slutdatum
......@@ -12,6 +12,8 @@
# See doc/COPYRIGHT.rdoc for more details.
#++
require 'wiki_content'
class MergeWikiVersionsWithJournals < ActiveRecord::Migration
# This is provided here for migrating up after the WikiContent::Version class has been removed
class WikiContent < ActiveRecord::Base
......
= ChiliProject Changelog
== 2012-06-09 v3.2.0
* Bug #844: Set autocomplete=off for some fields in Registration form
* Bug #863: missing journals fixture at test/unit/issue_test.rb
* Bug #950: jQuery AJAX requests don't include CSRF token
* Bug #966: "edit own notes" fails since 3.1.0
* Bug #967: Menu - Missing translations (French)
* Bug #968: Forum threads aren't always displaying "Last Message"
* Bug #969: Forum URLs in the menu are missing the project_id
* Bug #970: Long version titles extend outside the group menu when expanding Roadmap
* Bug #974: menu link broken in duplicate issue mode
* Bug #975: Start Date is not saved for Versions
* Bug #984: Cannot unlock a forum thread
* Bug #986: Notification Mail for Wiki-Changes doesn't contain change comment
* Bug #994: select all in issue list isn't working
* Bug #1007: Right clicking on item in roadmap displays menu at incorrect position
* Bug #1008: error 500 when uploading a new file to an existing document
* Bug #1024: Select multiple issues with shift key in issue list
* Bug #1025: Rails: Unsafe Query Generation Risk in Ruby on Rails (CVE-2012-2660)
* Bug #1033: Replace vendored gravatar lib by gem
* Feature #749: Git Integration: Property Main Branch
* Feature #947: Reformat the CSS files to use a standard
* Feature #983: Bulgarian translation of several strings
* Feature #988: Swedish translation of several strings
* Feature #1016: Limit height of project drop down menu
* Task #982: Updated czech localization for chiliproject 3.1
== 2012-04-04 v3.1.0
* Bug #739: Relative textile links not converted to full URLs in emails
......
.icon-example-works { background-image: url(../images/it_works.png); }
.icon-example-works {
background-image: url(../images/it_works.png);
}
......@@ -18,7 +18,7 @@ module ChiliProject
module VERSION #:nodoc:
MAJOR = 3
MINOR = 1
MINOR = 2
PATCH = 0
TINY = PATCH # Redmine compat
......
......@@ -259,7 +259,7 @@ Redmine::MenuManager.map :project_menu do |menu|
:caption => :label_issue_plural,
:children => issue_query_proc
})
menu.push(:new_issue, { :controller => 'issues', :action => 'new' }, {
menu.push(:new_issue, { :controller => 'issues', :action => 'new', :copy_from => nil }, {
:param => :project_id,
:caption => :label_issue_new,
:parent => :issues,
......@@ -345,7 +345,7 @@ Redmine::MenuManager.map :project_menu do |menu|
project.boards.collect do |board|
Redmine::MenuManager::MenuItem.new(
"board-#{board.id}".to_sym,
{ :controller => 'boards', :action => 'show', :id => board },
{ :controller => 'boards', :action => 'show', :project_id => project, :id => board },
{
:caption => board.name # is h() in menu_helper.rb
})
......
......@@ -100,6 +100,13 @@ module Redmine
def default_branch
bras = self.branches
return nil if bras.nil?
head = nil
scm_cmd('symbolic-ref', 'HEAD') do |io|
head = io.readline
end
/^refs\/heads\/(.*)$/.match(head)
bras.include?($1) ? $1 : bras.first
rescue ScmCommandAborted, EOFError
bras.include?('master') ? 'master' : bras.first
end
......
......@@ -271,7 +271,8 @@ module Redmine
end
blame
rescue HgCommandAborted
nil # means not found or cannot be annotated
# means not found or cannot be annotated
Annotate.new
end
class Revision < Redmine::Scm::Adapters::Revision
......
......@@ -24,6 +24,41 @@ end
# Tasks can be hooked into by redefining them in a plugin
namespace :ci do
namespace :travis do
desc "Prepare a TRAVIS run"
task :prepare do
ENV['RAILS_ENV'] = 'test'
RAILS_ENV = 'test'
database_yml = {"database" => "chiliproject_test"}
database_yml.merge! case ENV['DB']
when 'mysql'
{"adapter" => "mysql", "username" => "root"}
when 'mysql2'
{"adapter" => "mysql2", "username" => "root"}
when 'postgres'
{"adapter" => "postgresql", "username" => "postgres"}
when 'sqlite'
{"adapter" => "sqlite3", "database" => "db/test.sqlite3"}
end
File.open("config/database.yml", 'w') do |f|
YAML.dump({"test" => database_yml}, f)
end
Rake::Task["generate_session_store"].invoke
# Create and migrate the database
Rake::Task["db:create"].invoke
Rake::Task["db:migrate"].invoke
Rake::Task["db:migrate:plugins"].invoke
Rake::Task["db:schema:dump"].invoke
# Create test repositories
Rake::Task["test:scm:setup:all"].invoke
end
end
desc "Setup Redmine for a new build."
task :setup do
Rake::Task["ci:dump_environment"].invoke
......
......@@ -467,7 +467,15 @@ jQuery.viewportHeight = function() {
// Automatically use format.js for jQuery Ajax
jQuery.ajaxSetup({
'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
'beforeSend': function(xhr) {
xhr.setRequestHeader("Accept", "text/javascript");
// TODO: Remove once jquery-rails (Rails 3) has been added a dependency
var csrf_meta_tag = jQuery('meta[name="csrf-token"]');
if (csrf_meta_tag) {
xhr.setRequestHeader('X-CSRF-Token', csrf_meta_tag.attr('content'));
}
}
})
/* TODO: integrate with existing code and/or refactor */
......@@ -563,6 +571,13 @@ jQuery(document).ready(function($) {
// Click on the menu header with a dropdown menu
$('#account-nav .drop-down').live('click', function(event) {
var menuItem = $(this);
var menuUl = menuItem.find('> ul');
menuUl.css('height', 'auto');
if(menuUl.height() > $.viewportHeight()) {
var windowHeight = $.viewportHeight() - 150;
menuUl.css({'height': windowHeight});
}
toggleTopMenu(menuItem);
......
......@@ -3,6 +3,7 @@
var element = el;
var opts = options;
var observingContextMenuClick;
var observingToggleAllClick;
var lastSelected = null;
var menu;
var menuId = 'context-menu';
......@@ -68,18 +69,17 @@
if (lastSelected !== null)
{
var toggling = false;
var rows = $(selectorName);
for (i = 0; i < rows.length; i++)
{
if (toggling || rows[i] == tr)
{
methods.addSelection(rows[i]);
var rows = $('.' + selectorName);
rows.each(function() {
var self = $(this);
if(toggling || (self.get(0) == tr.get(0))) {
methods.addSelection(self);
}
if (rows[i] == tr || rows[i] == lastSelected)
{
if(((self.get(0) == tr.get(0)) || (self.get(0) == lastSelected.get(0)))
&& (tr.get(0) !== lastSelected.get(0))) {
toggling = !toggling;
}
}
});
} else {
methods.addSelection(tr);
}
......@@ -153,7 +153,7 @@
}
if(maxHeight > $(window).height()) {
renderY =+ menu.height();
renderY -= menu.height();
menu.addClass(reverseYClass);
} else {
menu.removeClass(reverseYClass);
......@@ -174,6 +174,7 @@
addSelection: function(element) {
element.addClass(contextMenuSelectionClass);
methods.checkSelectionBox(element, true);
methods.clearDocumentSelection();
},
isSelected: function(element) {
return element.hasClass(contextMenuSelectionClass);
......@@ -194,6 +195,27 @@
inputs.each(function() {
inputs.attr('checked', checked ? 'checked' : false);
});
},
toggleIssuesSelection: function(e) {
e.preventDefault();
e.stopPropagation();
var issues = $(this).parents('form').find('tr.issue');
var checked = methods.isSelected(issues.eq(0));
issues.each(function() {
var self = $(this);
if(checked) {
methods.removeSelection(self)
} else {
methods.addSelection(self);
}
});
},
clearDocumentSelection: function() {
if(document.selection) {
document.selection.clear();
} else {
window.getSelection().removeAllRanges();
}
}
};
......@@ -205,6 +227,11 @@
observingContextMenuClick = true;
}
if(!observingToggleAllClick) {
element.find('.issues img[alt="Toggle_check"]').bind('click', methods.toggleIssuesSelection);
observingToggleAllClick = true;
}
methods.unselectAll();
};
......
This source diff could not be displayed because it is too large. You can view the blob instead.
/* The main calendar widget. DIV containing a table. */
/* The main calendar widget. DIV containing a table. */
img.calendar-trigger {
cursor: pointer;
vertical-align: middle;
margin-left: 4px;
cursor: pointer;
vertical-align: middle;
margin-left: 4px;
}
div.calendar { position: relative; z-index: 30;}
div.calendar {
position: relative;
z-index: 30;
}
div.calendar, div.calendar table {
div.calendar,
div.calendar table {
border: 1px solid #556;
font-size: 11px;
color: #000;
......@@ -18,10 +21,9 @@ div.calendar, div.calendar table {
}
/* Header part -- contains navigation buttons and day names. */
div.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
text-align: center; /* They are the navigation buttons */
padding: 2px; /* Make the buttons seem like they're pressing */
text-align: center; /* They are the navigation buttons */
padding: 2px; /* Make the buttons seem like they're pressing */
}
div.calendar .nav {
......@@ -29,7 +31,7 @@ div.calendar .nav {
}
div.calendar thead .title { /* This holds the current "month, year" */
font-weight: bold; /* Pressing it will take you to the current date */
font-weight: bold; /* Pressing it will take you to the current date */
text-align: center;
background: #fff;
color: #000;
......@@ -68,17 +70,18 @@ div.calendar thead .active { /* Active (pressed) buttons in header */
}
/* The body part -- contains all the days in month. */
div.calendar tbody .day { /* Cells <TD> containing month days dates */
width: 2em;
color: #456;
text-align: right;
padding: 2px 4px 2px 2px;
}
div.calendar tbody .day.othermonth {
font-size: 80%;
color: #bbb;
}
div.calendar tbody .day.othermonth.oweekend {
color: #fbb;
}
......@@ -125,7 +128,9 @@ div.calendar tbody td.today { /* Cell showing selected date */
color: #f00;
}
div.calendar tbody .disabled { color: #999; }
div.calendar tbody .disabled {
color: #999;
}
div.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
visibility: hidden;
......@@ -136,7 +141,6 @@ div.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows)
}
/* The footer part -- status bar and "Close" button */
div.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
text-align: center;
background: #556;
......@@ -163,7 +167,6 @@ div.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
}
/* Combo boxes (menus that display months/years for direct selection) */
div.calendar .combo {
position: absolute;
display: none;
......
#context-menu { position: absolute; z-index: 40; }
#context-menu {
position: absolute;
z-index: 40;
}
#context-menu ul, #context-menu li, #context-menu a {
display:block;
margin:0;
padding:0;
border:0;
#context-menu ul,
#context-menu li,
#context-menu a {
display: block;
margin: 0;
padding: 0;
border: 0;
}
#context-menu ul {
width:150px;
border-top:1px solid #ddd;
border-left:1px solid #ddd;
border-bottom:1px solid #777;
border-right:1px solid #777;
background:white;
list-style:none;
width: 150px;
border-top: 1px solid #ddd;
border-left: 1px solid #ddd;
border-bottom: 1px solid #777;
border-right: 1px solid #777;
background: white;
list-style: none;
}
#context-menu li {
position:relative;
padding:1px;
z-index:39;
border:1px solid white;
position: relative;
padding: 1px;
z-index: 39;
border: 1px solid white;
}
#context-menu li.folder ul {
position: absolute;
left: 168px; /* ie6 */
top: -2px;
max-height: 300px;
overflow: hidden;
overflow-y: auto;
}
#context-menu li.folder > ul {
left: 148px;
}
#context-menu li.folder ul { position:absolute; left:168px; /* IE6 */ top:-2px; max-height:300px; overflow:hidden; overflow-y: auto; }
#context-menu li.folder>ul { left:148px; }
#context-menu.reverse-y li.folder>ul { top:auto; bottom:0; }
#context-menu.reverse-x li.folder ul { left:auto; right:168px; /* IE6 */ }
#context-menu.reverse-x li.folder>ul { right:148px; }
#context-menu.reverse-y li.folder > ul {
top: auto;
bottom: 0;
}
#context-menu.reverse-x li.folder ul {
left: auto;
right: 168px; /* IE6 */
}
#context-menu.reverse-x li.folder > ul {
right: 148px;
}
#context-menu a {
text-decoration:none !important;
background-repeat: no-repeat;
background-position: 1px 50%;
padding: 1px 0px 1px 20px;
width:100%; /* IE */
}
#context-menu li>a { width:auto; } /* others */
#context-menu a.disabled, #context-menu a.disabled:hover {color: #ccc;}
#context-menu li:hover { border:1px solid gray; background-color:#eee; }
#context-menu a:hover {color:#2A5685;}
#context-menu li.folder:hover { z-index:40; }
#context-menu ul ul, #context-menu li:hover ul ul { display:none; }
#context-menu li:hover ul, #context-menu li:hover li:hover ul { display:block; }
text-decoration: none !important;
background-repeat: no-repeat;
background-position: 1px 50%;
padding: 1px 0px 1px 20px;
width: 100%; /* IE */
}
#context-menu li > a {
width: auto;
}
/* others */
#context-menu a.disabled,
#context-menu a.disabled:hover {
color: #ccc;
}
#context-menu li:hover {
border: 1px solid gray;
background-color: #eee;
}
#context-menu a:hover {
color: #2A5685;
}
#context-menu li.folder:hover {
z-index: 40;
}
#context-menu ul ul,
#context-menu li:hover ul ul {
display: none;
}
#context-menu li:hover ul,
#context-menu li:hover li:hover ul {
display: block;
}
/* selected element */
.context-menu-selection { background-color:#507AAA !important; color:#000 !important; }
.context-menu-selection:hover { background-color:#507AAA !important; color:#000 !important; }
.context-menu-selection {
background-color: #507AAA !important;
color: #000 !important;
}
.context-menu-selection:hover {
background-color: #507AAA !important;
color: #000 !important;
}
#context-menu .submenu {
border: transparent solid 5px;
......
#context-menu li.folder ul { left:auto; right:168px; }
#context-menu li.folder>ul { left:auto; right:148px; }
#context-menu li a.submenu { background:url("../images/bullet_arrow_left.png") left no-repeat; }
#context-menu li.folder ul {
left: auto;
right: 168px;
}
#context-menu li.folder > ul {
left: auto;
right: 148px;
}
#context-menu li a.submenu {
background: url("../images/bullet_arrow_left.png") left no-repeat;
}
#context-menu a {
background-position: 100% 40%;
......
/* IE6 how i love to hate thee */
#account-nav li a {
width:45px;
width: 45px;
}
#account-nav li li a {
width:150px;
width: 150px;
}
.title-bar {
zoom:1;
zoom: 1;
}
.title-bar-extras label {
float:none;
display:inline;
padding-right:10px;
float: none;
display: inline;
padding-right: 10px;
}
.issue-dropdown li.hover {
background-color:#fff;
background-color: #fff;
}
.issue-dropdown li.hover ul {
display:block;
left:112px;
display: block;
left: 112px;
}
body .file-thumbs a {
width:150px;
width: 150px;
}
#history .journal {
zoom:1;
zoom: 1;
}
body #history .wiki {
overflow:hidden;
zoom:1;
overflow: hidden;
zoom: 1;
}
#main-menu li li {
height:30px;
height: 30px;
}
#main-menu li li li {
height:auto;
height: auto;
}
a.has-thumb.active {
background:none;
background: none;
}
.title-bar-extras ul {
background-image:none;
border-top:1px solid #154E5D;
}
\ No newline at end of file
background-image: none;
border-top: 1px solid #154E5D;
}
/* These will be included for IE6 & IE7 */
.title-bar h2 {
height:21px;
height: 21px;
}
td.dropdown {
z-index:50;
position:relative;
z-index: 50;
position: relative;
}
body .title-bar-extras {
overflow:hidden;
overflow: hidden;
}
#main-menu, .title-bar {
z-index:4;
#main-menu,
.title-bar {
z-index: 4;
}
.title-bar .button-large ul {
z-index:15;
z-index: 15;
}
form.tooltip-active {
z-index:14;
z-index: 14;
}
#main-menu li li a span {
position:absolute;
right:0;
top:0;
display:block;
position: absolute;
right: 0;
top: 0;
display: block;
}
#main-menu li li li a span {
right:10px;
right: 10px;
}
body .file-thumbs a {
max-width:150px;
max-width: 150px;
}
#watchers {
position:relative;
z-index:5;
position: relative;
z-index: 5;
}
div.attachments {
position:relative;
z-index:4;
position: relative;
z-index: 4;
}
fieldset.collapsible.header_collapsible legend {
margin-left:-15px;
margin-left: -15px;
}
.jstEditor {
padding-left: 0px;
padding-left: 0px;
}
.jstEditor textarea, .jstEditor iframe {
margin: 0;
}
.jstHandle {
height: 10px;
font-size: 0.1em;
cursor: s-resize;
/*background: transparent url(img/resizer.png) no-repeat 45% 50%;*/
height: 10px;
font-size: 0.1em;
cursor: s-resize;
/*background: transparent url(img/resizer.png) no-repeat 45% 50%;*/
}
.jstElements {
padding: 3px 3px;
padding: 3px 3px;
}
.jstElements button {
margin-right : 6px;
width : 24px;
height: 24px;
padding: 4px;
border-style: solid;
border-width: 1px;
border-color: #ddd;
background-color : #f7f7f7;
background-position : 50% 50%;
background-repeat: no-repeat;
margin-right: 6px;
width: 24px;
height: 24px;
padding: 4px;
border-style: solid;
border-width: 1px;
border-color: #ddd;
background-color: #f7f7f7;
background-position: 50% 50%;
background-repeat: no-repeat;
}
.jstElements button:hover {
border-color : #000;
border-color: #000;
}
.jstElements button span {
display : none;
display: none;
}
.jstElements span {
display : inline;
display: inline;
}
.jstSpacer {
width : 0px;
font-size: 1px;
margin-right: 4px;
width: 0px;
font-size: 1px;
margin-right: 4px;
}
.jstElements .help { float: right; margin-right: 0.5em; padding-top: 8px; font-size: 0.9em; }
.jstElements .help a {padding: 2px 0 2px 20px; background: url(../images/help.png) no-repeat 0 50%;}
.jstElements .help {
float: right;
margin-right: 0.5em;
padding-top: 8px;
font-size: 0.9em;
}
.jstElements .help a {
padding: 2px 0 2px 20px;
background: url(../images/help.png) no-repeat 0 50%;
}
/* Buttons
-------------------------------------------------------- */
.jstb_strong {
background-image: url(../images/jstoolbar/bt_strong.png);
background-image: url(../images/jstoolbar/bt_strong.png);
}
.jstb_em {
background-image: url(../images/jstoolbar/bt_em.png);
background-image: url(../images/jstoolbar/bt_em.png);
}
.jstb_ins {
background-image: url(../images/jstoolbar/bt_ins.png);
background-image: url(../images/jstoolbar/bt_ins.png);
}
.jstb_del {
background-image: url(../images/jstoolbar/bt_del.png);
background-image: url(../images/jstoolbar/bt_del.png);
}
.jstb_code {
background-image: url(../images/jstoolbar/bt_code.png);
background-image: url(../images/jstoolbar/bt_code.png);
}
.jstb_h1 {
background-image: url(../images/jstoolbar/bt_h1.png);
background-image: url(../images/jstoolbar/bt_h1.png);
}
.jstb_h2 {
background-image: url(../images/jstoolbar/bt_h2.png);
background-image: url(../images/jstoolbar/bt_h2.png);
}
.jstb_h3 {
background-image: url(../images/jstoolbar/bt_h3.png);
background-image: url(../images/jstoolbar/bt_h3.png);
}
.jstb_ul {
background-image: url(../images/jstoolbar/bt_ul.png);
background-image: url(../images/jstoolbar/bt_ul.png);
}
.jstb_ol {
background-image: url(../images/jstoolbar/bt_ol.png);
background-image: url(../images/jstoolbar/bt_ol.png);
}
.jstb_bq {
background-image: url(../images/jstoolbar/bt_bq.png);
background-image: url(../images/jstoolbar/bt_bq.png);
}
.jstb_unbq {
background-image: url(../images/jstoolbar/bt_bq_remove.png);
background-image: url(../images/jstoolbar/bt_bq_remove.png);
}
.jstb_pre {
background-image: url(../images/jstoolbar/bt_pre.png);
background-image: url(../images/jstoolbar/bt_pre.png);
}
.jstb_link {
background-image: url(../images/jstoolbar/bt_link.png);
background-image: url(../images/jstoolbar/bt_link.png);
}
.jstb_img {
background-image: url(../images/jstoolbar/bt_img.png);
background-image: url(../images/jstoolbar/bt_img.png);
}
/***** Media print specific styles *****/
@media print {
#top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
#main { background: #fff; }
#content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
#wiki_add_attachment { display:none; }
.hide-when-print { display: none; }
.autoscroll {overflow-x: visible;}
table.list {margin-top:0.5em;}
table.list th, table.list td {border: 1px solid #aaa;}
#top-menu,
#header,
#main-menu,
#sidebar,
#footer,
.contextual,
.other-formats {
display:none;
}
#main {
background: #fff;
}
#content {
width: 99%;
margin: 0;
padding: 0;
border: 0;
background: #fff;
overflow: visible !important;
}
#wiki_add_attachment {
display:none;
}
.hide-when-print {
display: none;
}
.autoscroll {
overflow-x: visible;
}
table.list {
margin-top:0.5em;
}
table.list th,
table.list td {
border: 1px solid #aaa;
}
}
......@@ -2,37 +2,101 @@
* CSS Reset
* Based on http://meyerweb.com/eric/tools/css/reset/
*/
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
font,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
body {
line-height: 1;
line-height: 1;
}
ol, ul {
list-style: none;
ol,
ul {
list-style: none;
}
ins {
text-decoration: underline;
text-decoration: underline;
}
del {
text-decoration: line-through;
text-decoration: line-through;
}
/* tables still need 'cellspacing="0"' in the markup */
table {
border-collapse: collapse;
border-spacing: 0;
border-collapse: collapse;
border-spacing: 0;
}
/* Helper classes */
.clearfix {
clear:both;
}
\ No newline at end of file
clear: both;
}
body, #wrapper { direction: rtl;}
#quick-search { float: left; }
#main-menu { margin-left: -500px; left: auto; right: 6px; margin-right: 0px;}
#main-menu li { float: right; }
#top-menu ul { float: right; }
#account { float: left; }
#top-menu #loggedas { float: left; }
#top-menu li { float: right; }
.tabular label.floating
{
margin-right: 0;
margin-left: auto;
text-align: right;
}
.tabular label
{
float: right;
margin-left: auto;
}
.tabular p
{
clear: right;
}
.tabular label.block { text-align: right; }
.icon
{
background-position: 100% 40%;
padding-right: 20px;
padding-left: 0px;
}
div#activity dt, #search-results dt
{
background-position: 100% 50%;
padding-right: 20px;
padding-left: 0px;
}
#content .tabs ul li { float: right; }
#content .tabs ul { padding-left: auto; padding-right: 1em; }
table.progress { float: right; }
.contextual { float: left; }
.icon22 { background-position: 100% 40%; padding-right: 26px; padding-left: auto; }
h3, .wiki h2 { padding: 10px 2px 1px 0; }
.tooltip span.tip { text-align: right; }
tr.issue td.subject { text-align: right; }
tr.time-entry td.subject, tr.time-entry td.comments { text-align: right; }
#sidebar { float: left; }
#main.nosidebar #content { border-width: 1px; border-style: solid; border-color: #D7D7D7 #BBBBBB #BBBBBB #D7D7D7;}
.tabular.settings label { margin-left: auto; }
.splitcontentleft { float: right; }
.splitcontentright { float: left; }
p.progress-info { clear: right; }
table.list td.buttons a { padding-right: 20px; }
.filecontent { direction: ltr; }
.entries { direction: ltr; }
.changeset-changes { direction: ltr; padding-left: 2em }
.changesets { direction: ltr; }
div#issue-changesets { float: left; margin-right: 1em; margin-left: 0 }
div#issue-changesets div.wiki { direction: ltr; padding-left: 2em }
#activity dt, .journal { clear: right; }
.journal-link { float: left; }
div.wiki pre { direction: ltr; }
body,
#wrapper {
direction: rtl;
}
#quick-search {
float: left;
}
#main-menu {
margin-left: -500px;
left: auto;
right: 6px;
margin-right: 0px;
}
#main-menu li {
float: right;
}
#top-menu ul {
float: right;
}
#account {
float: left;
}
#top-menu #loggedas {
float: left;
}
#top-menu li {
float: right;
}
.tabular label.floating {
margin-right: 0;
margin-left: auto;
text-align: right;
}
.tabular label {
float: right;
margin-left: auto;
}
.tabular p {
clear: right;
}
.tabular label.block {
text-align: right;
}
.icon {
background-position: 100% 40%;
padding-right: 20px;
padding-left: 0px;
}
div#activity dt,
#search-results dt {
background-position: 100% 50%;
padding-right: 20px;
padding-left: 0px;
}
#content .tabs ul li {
float: right;
}
#content .tabs ul {
padding-left: auto;
padding-right: 1em;
}
table.progress {
float: right;
}
.contextual {
float: left;
}
.icon22 {
background-position: 100% 40%;
padding-right: 26px;
padding-left: auto;
}
h3,
.wiki h2 {
padding: 10px 2px 1px 0;
}
.tooltip span.tip {
text-align: right;
}
tr.issue td.subject {
text-align: right;
}
tr.time-entry td.subject,
tr.time-entry td.comments {
text-align: right;
}
#sidebar {
float: left;
}
#main.nosidebar #content {
border-width: 1px;
border-style: solid;
border-color: #D7D7D7 #BBBBBB #BBBBBB #D7D7D7;
}
.tabular.settings label {
margin-left: auto;
}
.splitcontentleft {
float: right;
}
.splitcontentright {
float: left;
}
p.progress-info {
clear: right;
}
table.list td.buttons a {
padding-right: 20px;
}
.filecontent {
direction: ltr;
}
.entries {
direction: ltr;
}
.changeset-changes {
direction: ltr;
padding-left: 2em;
}
.changesets {
direction: ltr;
}
div#issue-changesets {
float: left;
margin-right: 1em;
margin-left: 0;
}
div#issue-changesets div.wiki {
direction: ltr;
padding-left: 2em;
}
#activity dt,
.journal {
clear: right;
}
.journal-link {
float: left;
}
div.wiki pre {
direction: ltr;
}
div.changeset-changes ul {
margin: 0;
padding: 0;
}
div.changeset-changes ul > ul {
margin-left: 18px;
padding: 0;
}
li.change {
list-style-type: none;
background-image: url(../images/bullet_black.png);
background-position: 1px 1px;
background-repeat: no-repeat;
padding-top: 1px;
padding-bottom: 1px;
padding-left: 20px;
margin: 0;
}
li.change.folder {
background-image: url(../images/folder_open.png);
}
li.change.folder.change-A {
background-image: url(../images/folder_open_add.png);
}
li.change.folder.change-M {
background-image: url(../images/folder_open_orange.png);
}
li.change.change-A {
background-image: url(../images/bullet_add.png);
}
li.change.change-M {
background-image: url(../images/bullet_orange.png);
}
li.change.change-C {
background-image: url(../images/bullet_blue.png);
}
li.change.change-R {
background-image: url(../images/bullet_purple.png);
}
li.change.change-D {
background-image: url(../images/bullet_delete.png);
}
li.change .copied-from {
font-style: italic;
color: #999;
font-size: 0.9em;
}
li.change .copied-from:before {
content: " - ";
}
#changes-legend {
float: right;
font-size: 0.8em;
margin: 0;
}
#changes-legend li {
float: left;
background-position: 5px 0;
}
table.filecontent {
border: 1px solid #ccc;
border-collapse: collapse;
width: 98%;
background-color: #fafafa;
}
table.filecontent th {
border: 1px solid #ccc;
background-color: #eee;
}
table.filecontent th.filename {
background-color: #e4e4d4;
text-align: left;
padding: 0.2em;
}
table.filecontent tr.spacing th {
text-align: center;
}
table.filecontent tr.spacing td {
height: 0.4em;
background: #EAF2F5;
}
div.changeset-changes ul { margin: 0; padding: 0; }
div.changeset-changes ul > ul { margin-left: 18px; padding: 0; }
li.change {
list-style-type:none;
background-image: url(../images/bullet_black.png);
background-position: 1px 1px;
background-repeat: no-repeat;
padding-top: 1px;
padding-bottom: 1px;
padding-left: 20px;
margin: 0;
}
li.change.folder { background-image: url(../images/folder_open.png); }
li.change.folder.change-A { background-image: url(../images/folder_open_add.png); }
li.change.folder.change-M { background-image: url(../images/folder_open_orange.png); }
li.change.change-A { background-image: url(../images/bullet_add.png); }
li.change.change-M { background-image: url(../images/bullet_orange.png); }
li.change.change-C { background-image: url(../images/bullet_blue.png); }
li.change.change-R { background-image: url(../images/bullet_purple.png); }
li.change.change-D { background-image: url(../images/bullet_delete.png); }
li.change .copied-from { font-style: italic; color: #999; font-size: 0.9em; }
li.change .copied-from:before { content: " - "}
#changes-legend { float: right; font-size: 0.8em; margin: 0; }
#changes-legend li { float: left; background-position: 5px 0; }
table.filecontent { border: 1px solid #ccc; border-collapse: collapse; width:98%; background-color: #fafafa; }
table.filecontent th { border: 1px solid #ccc; background-color: #eee; }
table.filecontent th.filename { background-color: #e4e4d4; text-align: left; padding: 0.2em;}
table.filecontent tr.spacing th { text-align:center; }
table.filecontent tr.spacing td { height: 0.4em; background: #EAF2F5;}
table.filecontent th.line-num {
border: 1px solid #d7d7d7;
font-size: 0.8em;
text-align: right;
width: 2%;
padding-right: 3px;
color: #999;
border: 1px solid #d7d7d7;
font-size: 0.8em;
text-align: right;
width: 2%;
padding-right: 3px;
color: #999;
}
table.filecontent th.line-num a {
text-decoration: none;
color: inherit;
text-decoration: none;
color: inherit;
}
table.filecontent td.line-code pre {
margin: 0px;
white-space: pre-wrap; /* CSS2.1 compliant */
white-space: -moz-pre-wrap; /* Mozilla-based browsers */
white-space: -o-pre-wrap; /* Opera 7+ */
margin: 0px;
white-space: pre-wrap; /* CSS2.1 compliant */
white-space: -moz-pre-wrap; /* Mozilla-based browsers */
white-space: -o-pre-wrap; /* Opera 7+ */
}
/* 12 different colors for the annonate view */
table.annotate tr.bloc-0 {background: #FFFFBF;}
table.annotate tr.bloc-1 {background: #EABFFF;}
table.annotate tr.bloc-2 {background: #BFFFFF;}
table.annotate tr.bloc-3 {background: #FFD9BF;}
table.annotate tr.bloc-4 {background: #E6FFBF;}
table.annotate tr.bloc-5 {background: #BFCFFF;}
table.annotate tr.bloc-6 {background: #FFBFEF;}
table.annotate tr.bloc-7 {background: #FFE6BF;}
table.annotate tr.bloc-8 {background: #FFE680;}
table.annotate tr.bloc-9 {background: #AA80FF;}
table.annotate tr.bloc-10 {background: #FFBFDC;}
table.annotate tr.bloc-11 {background: #BFE4FF;}
table.annotate tr.bloc-0 {
background: #FFFFBF;
}
table.annotate tr.bloc-1 {
background: #EABFFF;
}
table.annotate tr.bloc-2 {
background: #BFFFFF;
}
table.annotate tr.bloc-3 {
background: #FFD9BF;
}
table.annotate tr.bloc-4 {
background: #E6FFBF;
}
table.annotate tr.bloc-5 {
background: #BFCFFF;
}
table.annotate tr.bloc-6 {
background: #FFBFEF;
}
table.annotate tr.bloc-7 {
background: #FFE6BF;
}
table.annotate tr.bloc-8 {
background: #FFE680;
}
table.annotate tr.bloc-9 {
background: #AA80FF;
}
table.annotate tr.bloc-10 {
background: #FFBFDC;
}
table.annotate tr.bloc-11 {
background: #BFE4FF;
}
table.annotate td.revision {
text-align: center;
width: 2%;
padding-left: 1em;
background: inherit;
text-align: center;
width: 2%;
padding-left: 1em;
background: inherit;
}
table.annotate td.author {
text-align: center;
border-right: 1px solid #d7d7d7;
white-space: nowrap;
padding-left: 1em;
padding-right: 1em;
width: 3%;
background: inherit;
font-size: 90%;
text-align: center;
border-right: 1px solid #d7d7d7;
white-space: nowrap;
padding-left: 1em;
padding-right: 1em;
width: 3%;
background: inherit;
font-size: 90%;
}
table.annotate td.line-code { background-color: #fafafa; }
table.annotate td.line-code {
background-color: #fafafa;
}
div.action_M { background: #fd8 }
div.action_D { background: #f88 }
div.action_A { background: #bfb }
div.action_M {
background: #fd8;
}
div.action_D {
background: #f88;
}
div.action_A {
background: #bfb;
}
/************* CodeRay styles *************/
.syntaxhl div {display: inline;}
.syntaxhl .line-numbers { padding: 2px 4px 2px 4px; background-color: #eee; margin: 0 7px 0 0; }
.syntaxhl .code pre { overflow: auto }
.syntaxhl .debug { color:white ! important; background:blue ! important; }
.syntaxhl .annotation { color:#007 }
.syntaxhl .attribute-name { color:#b48 }
.syntaxhl .attribute-value { color:#700 }
.syntaxhl .binary { color:#509 }
.syntaxhl .char .content { color:#D20 }
.syntaxhl .char .delimiter { color:#710 }
.syntaxhl .char { color:#D20 }
.syntaxhl .class { color:#B06; font-weight:bold }
.syntaxhl .class-variable { color:#369 }
.syntaxhl .color { color:#0A0 }
.syntaxhl .comment { color:#777 }
.syntaxhl .comment .char { color:#444 }
.syntaxhl .comment .delimiter { color:#444 }
.syntaxhl .complex { color:#A08 }
.syntaxhl .constant { color:#036; font-weight:bold }
.syntaxhl .decorator { color:#B0B }
.syntaxhl .definition { color:#099; font-weight:bold }
.syntaxhl .delimiter { color:black }
.syntaxhl .directive { color:#088; font-weight:bold }
.syntaxhl .doc { color:#970 }
.syntaxhl .doc-string { color:#D42; font-weight:bold }
.syntaxhl .doctype { color:#34b }
.syntaxhl .entity { color:#800; font-weight:bold }
.syntaxhl .error { color:#F00; background-color:#FAA }
.syntaxhl .escape { color:#666 }
.syntaxhl .exception { color:#C00; font-weight:bold }
.syntaxhl .float { color:#60E }
.syntaxhl .function { color:#06B; font-weight:bold }
.syntaxhl .global-variable { color:#d70 }
.syntaxhl .hex { color:#02b }
.syntaxhl .imaginary { color:#f00 }
.syntaxhl .include { color:#B44; font-weight:bold }
.syntaxhl .inline { background-color: hsla(0,0%,0%,0.07); color: black }
.syntaxhl .inline-delimiter { font-weight: bold; color: #666 }
.syntaxhl .instance-variable { color:#33B }
.syntaxhl .integer { color:#00D }
.syntaxhl .key .char { color: #60f }
.syntaxhl .key .delimiter { color: #404 }
.syntaxhl .key { color: #606 }
.syntaxhl .keyword { color:#080; font-weight:bold }
.syntaxhl .label { color:#970; font-weight:bold }
.syntaxhl .local-variable { color:#963 }
.syntaxhl .namespace { color:#707; font-weight:bold }
.syntaxhl .octal { color:#40E }
.syntaxhl .operator { }
.syntaxhl .predefined { color:#369; font-weight:bold }
.syntaxhl .predefined-constant { color:#069 }
.syntaxhl .predefined-type { color:#0a5; font-weight:bold }
.syntaxhl .preprocessor { color:#579 }
.syntaxhl .pseudo-class { color:#00C; font-weight:bold }
.syntaxhl .regexp .content { color:#808 }
.syntaxhl .regexp .delimiter { color:#404 }
.syntaxhl .regexp .modifier { color:#C2C }
.syntaxhl .regexp { background-color:hsla(300,100%,50%,0.06); }
.syntaxhl .reserved { color:#080; font-weight:bold }
.syntaxhl .shell .content { color:#2B2 }
.syntaxhl .shell .delimiter { color:#161 }
.syntaxhl .shell { background-color:hsla(120,100%,50%,0.06); }
.syntaxhl .string .char { color: #b0b }
.syntaxhl .string .content { color: #D20 }
.syntaxhl .string .delimiter { color: #710 }
.syntaxhl .string .modifier { color: #E40 }
.syntaxhl .string { background-color:hsla(0,100%,50%,0.05); }
.syntaxhl .symbol .content { color:#A60 }
.syntaxhl .symbol .delimiter { color:#630 }
.syntaxhl .symbol { color:#A60 }
.syntaxhl .tag { color:#070 }
.syntaxhl .type { color:#339; font-weight:bold }
.syntaxhl .value { color: #088; }
.syntaxhl .variable { color:#037 }
.syntaxhl .insert { background: hsla(120,100%,50%,0.12) }
.syntaxhl .delete { background: hsla(0,100%,50%,0.12) }
.syntaxhl .change { color: #bbf; background: #007; }
.syntaxhl .head { color: #f8f; background: #505 }
.syntaxhl .head .filename { color: white; }
.syntaxhl .delete .eyecatcher { background-color: hsla(0,100%,50%,0.2); border: 1px solid hsla(0,100%,45%,0.5); margin: -1px; border-bottom: none; border-top-left-radius: 5px; border-top-right-radius: 5px; }
.syntaxhl .insert .eyecatcher { background-color: hsla(120,100%,50%,0.2); border: 1px solid hsla(120,100%,25%,0.5); margin: -1px; border-top: none; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
.syntaxhl .insert .insert { color: #0c0; background:transparent; font-weight:bold }
.syntaxhl .delete .delete { color: #c00; background:transparent; font-weight:bold }
.syntaxhl .change .change { color: #88f }
.syntaxhl .head .head { color: #f4f }
.syntaxhl div {
display: inline;
}
.syntaxhl .line-numbers {
padding: 2px 4px 2px 4px;
background-color: #eee;
margin: 0 7px 0 0;
}
.syntaxhl .code pre {
overflow: auto;
}
.syntaxhl .debug {
color: white ! important;
background: blue ! important;
}
.syntaxhl .annotation {
color: #007;
}
.syntaxhl .attribute-name {
color: #b48;
}
.syntaxhl .attribute-value {
color: #700;
}
.syntaxhl .binary {
color: #509;
}
.syntaxhl .char .content {
color: #D20;
}
.syntaxhl .char .delimiter {
color: #710;
}
.syntaxhl .char {
color: #D20;
}
.syntaxhl .class {
color: #B06;
font-weight: bold;
}
.syntaxhl .class-variable {
color: #369;
}
.syntaxhl .color {
color: #0A0;
}
.syntaxhl .comment {
color: #777;
}
.syntaxhl .comment .char {
color: #444;
}
.syntaxhl .comment .delimiter {
color: #444;
}
.syntaxhl .complex {
color: #A08;
}
.syntaxhl .constant {
color: #036;
font-weight: bold;
}
.syntaxhl .decorator {
color: #B0B;
}
.syntaxhl .definition {
color: #099;
font-weight: bold;
}
.syntaxhl .delimiter {
color: black;
}
.syntaxhl .directive {
color: #088;
font-weight: bold;
}
.syntaxhl .doc {
color: #970;
}
.syntaxhl .doc-string {
color: #D42;
font-weight: bold;
}
.syntaxhl .doctype {
color: #34b;
}
.syntaxhl .entity {
color: #800;
font-weight: bold;
}
.syntaxhl .error {
color: #F00;
background-color: #FAA;
}
.syntaxhl .escape {
color: #666;
}
.syntaxhl .exception {
color: #C00;
font-weight: bold;
}
.syntaxhl .float {
color: #60E;
}
.syntaxhl .function {
color: #06B;
font-weight: bold;
}
.syntaxhl .global-variable {
color: #d70;
}
.syntaxhl .hex {
color: #02b;
}
.syntaxhl .imaginary {
color: #f00;
}
.syntaxhl .include {
color: #B44;
font-weight: bold;
}
.syntaxhl .inline {
background-color: hsla(0,0%,0%,0.07);
color: black;
}
.syntaxhl .inline-delimiter {
font-weight: bold;
color: #666;
}
.syntaxhl .instance-variable {
color: #33B;
}
.syntaxhl .integer {
color: #00D;
}
.syntaxhl .key .char {
color: #60f;
}
.syntaxhl .key .delimiter {
color: #404;
}
.syntaxhl .key {
color: #606;
}
.syntaxhl .keyword {
color: #080;
font-weight: bold;
}
.syntaxhl .label {
color: #970;
font-weight: bold;
}
.syntaxhl .local-variable {
color: #963;
}
.syntaxhl .namespace {
color: #707;
font-weight: bold;
}
.syntaxhl .octal {
color: #40E;
}
.syntaxhl .operator {
}
.syntaxhl .predefined {
color: #369;
font-weight: bold;
}
.syntaxhl .predefined-constant {
color: #069;
}
.syntaxhl .predefined-type {
color: #0a5;
font-weight: bold;
}
.syntaxhl .preprocessor {
color: #579;
}
.syntaxhl .pseudo-class {
color: #00C;
font-weight: bold;
}
.syntaxhl .regexp .content {
color: #808;
}
.syntaxhl .regexp .delimiter {
color: #404;
}
.syntaxhl .regexp .modifier {
color: #C2C;
}
.syntaxhl .regexp {
background-color: hsla(300,100%,50%,0.06);
}
.syntaxhl .reserved {
color: #080;
font-weight: bold;
}
.syntaxhl .shell .content {
color: #2B2;
}
.syntaxhl .shell .delimiter {
color: #161;
}
.syntaxhl .shell {
background-color: hsla(120,100%,50%,0.06);
}
.syntaxhl .string .char {
color: #b0b;
}
.syntaxhl .string .content {
color: #D20;
}
.syntaxhl .string .delimiter {
color: #710;
}
.syntaxhl .string .modifier {
color: #E40;
}
.syntaxhl .string {
background-color: hsla(0,100%,50%,0.05);
}
.syntaxhl .symbol .content {
color: #A60;
}
.syntaxhl .symbol .delimiter {
color: #630;
}
.syntaxhl .symbol {
color: #A60;
}
.syntaxhl .tag {
color: #070;
}
.syntaxhl .type {
color: #339;
font-weight: bold;
}
.syntaxhl .value {
color: #088;
}
.syntaxhl .variable {
color: #037;
}
.syntaxhl .insert {
background: hsla(120,100%,50%,0.12);
}
.syntaxhl .delete {
background: hsla(0,100%,50%,0.12);
}
.syntaxhl .change {
color: #bbf;
background: #007;
}
.syntaxhl .head {
color: #f8f;
background: #505;
}
.syntaxhl .head .filename {
color: white;
}
.syntaxhl .delete .eyecatcher {
background-color: hsla(0,100%,50%,0.2);
border: 1px solid hsla(0,100%,45%,0.5);
margin: -1px;
border-bottom: none;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.syntaxhl .insert .eyecatcher {
background-color: hsla(120,100%,50%,0.2);
border: 1px solid hsla(120,100%,25%,0.5);
margin: -1px;
border-top: none;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
.syntaxhl .insert .insert {
color: #0c0;
background: transparent;
font-weight: bold;
}
.syntaxhl .delete .delete {
color: #c00;
background: transparent;
font-weight: bold;
}
.syntaxhl .change .change {
color: #88f;
}
.syntaxhl .head .head {
color: #f4f;
}
......@@ -147,6 +147,28 @@ LOREM
end
end
context "#add_attachment" do
setup do
@request.session[:user_id] = 2
set_tmp_attachments_directory
@document = Document.generate!(:project => Project.find('ecookbook'),
:title => 'Test')
end
should "send a notification mail" do
ActionMailer::Base.deliveries.clear
Setting.notified_events = Setting.notified_events.dup << 'document_added'
post :add_attachment,
:id => @document.id,
:attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
@document.reload
assert_not_nil @document
assert_equal 2, ActionMailer::Base.deliveries.size
end
end
def test_destroy
@request.session[:user_id] = 2
post :destroy, :id => 1
......
......@@ -121,6 +121,30 @@ class MessagesControllerTest < ActionController::TestCase
assert_equal 'New body', message.content
end
def test_post_edit_sticky_and_locked
@request.session[:user_id] = 2
post :edit, :board_id => 1, :id => 1,
:message => { :subject => 'New subject',
:content => 'New body',
:locked => '1',
:sticky => '1'}
assert_redirected_to '/boards/1/topics/1'
message = Message.find(1)
assert_equal true, message.sticky?
assert_equal true, message.locked?
end
def test_post_edit_should_allow_to_change_board
@request.session[:user_id] = 2
post :edit, :board_id => 1, :id => 1,
:message => { :subject => 'New subject',
:content => 'New body',
:board_id => 2}
assert_redirected_to '/boards/2/topics/1'
message = Message.find(1)
assert_equal Board.find(2), message.board
end
def test_reply
@request.session[:user_id] = 2
post :reply, :board_id => 1, :id => 1, :reply => { :content => 'This is a test reply', :subject => 'Test reply' }
......
......@@ -131,6 +131,10 @@ class ProjectEnumerationsControllerTest < ActionController::TestCase
end
def test_update_when_creating_new_activities_will_not_convert_existing_data_if_an_exception_is_raised
# SQLite doesn't support nested transactions, thus we can't test transaction-
# based features in a test wrapped in a transaction.
return if ChiliProject::Database.sqlite?
# TODO: Need to cause an exception on create but these tests
# aren't setup for mocking. Just create a record now so the
# second one is a dupicate
......
......@@ -112,13 +112,18 @@ class VersionsControllerTest < ActionController::TestCase
def test_post_update
@request.session[:user_id] = 2
today = Date.today
put :update, :id => 2,
:version => { :name => 'New version name',
:effective_date => Date.today.strftime("%Y-%m-%d")}
:start_date => today.yesterday.strftime("%Y-%m-%d"),
:effective_date => today.strftime("%Y-%m-%d"),
}
assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
version = Version.find(2)
assert_equal 'New version name', version.name
assert_equal Date.today, version.effective_date
assert_equal today.yesterday, version.start_date
assert_equal today, version.effective_date
end
def test_post_update_with_validation_failure
......
......@@ -21,6 +21,7 @@ class IssueTest < ActiveSupport::TestCase
:issue_statuses, :issue_categories, :issue_relations, :workflows,
:enumerations,
:issues,
:journals,
:custom_fields, :custom_fields_projects, :custom_fields_trackers, :custom_values,
:time_entries
......
......@@ -14,7 +14,9 @@
require File.expand_path('../../test_helper', __FILE__)
class JournalTest < ActiveSupport::TestCase
fixtures :issues, :issue_statuses, :journals, :enumerations
fixtures :issues, :issue_statuses, :journals, :enumerations,\
:users, :trackers, :projects, :members, :member_roles, :roles,\
:enabled_modules
def setup
@journal = IssueJournal.find(1)
......@@ -35,23 +37,17 @@ class JournalTest < ActiveSupport::TestCase
def test_create_should_send_email_notification
ActionMailer::Base.deliveries.clear
issue = Issue.find(:first)
if issue.journals.empty?
issue.init_journal(User.current, "This journal represents the creationa of journal version 1")
issue.save
end
user = User.find(:first)
issue = issues :issues_001
assert_equal 0, ActionMailer::Base.deliveries.size
issue.reload
issue.update_attribute(:subject, "New subject to trigger automatic journal entry")
assert_equal 2, ActionMailer::Base.deliveries.size
end
def test_create_should_not_send_email_notification_if_told_not_to
ActionMailer::Base.deliveries.clear
issue = Issue.find(:first)
user = User.find(:first)
issue = issues :issues_001
user = users :users_001
journal = issue.init_journal(user, "A note")
JournalObserver.instance.send_notification = false
......
......@@ -231,6 +231,13 @@ begin
end
end
def test_default_branch
@adapter.send :scm_cmd, 'branch', '-m', 'master', 'non-master-default-branch'
assert_equal 'non-master-default-branch', @adapter.default_branch
ensure
@adapter.send :scm_cmd, 'branch', '-m', 'non-master-default-branch', 'master'
end
private
def test_scm_version_for(scm_command_version, version)
......
......@@ -101,6 +101,18 @@ class MessageTest < ActiveSupport::TestCase
# Watchers removed
end
def test_destroy_last_reply
message = Message.find(4)
last_reply = message.last_reply
penultimate_reply = message.children[-2]
assert last_reply.destroy
message.reload
assert_equal penultimate_reply, message.last_reply
end
def test_destroy_reply
message = Message.find(5)
board = message.board
......
......@@ -17,7 +17,7 @@ class NewsTest < ActiveSupport::TestCase
fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news
def valid_news
{ :title => 'Test news', :description => 'Lorem ipsum etc', :author => User.find(:first) }
{ :title => 'Test news', :description => 'Lorem ipsum etc', :author => users(:users_001) }
end
......@@ -28,7 +28,7 @@ class NewsTest < ActiveSupport::TestCase
def test_create_should_send_email_notification
ActionMailer::Base.deliveries.clear
Setting.notified_events = Setting.notified_events.dup << 'news_added'
news = Project.find(:first).news.new(valid_news)
news = projects(:projects_001).news.new(valid_news)
assert news.save
assert_equal 2, ActionMailer::Base.deliveries.size
......
......@@ -82,7 +82,7 @@ class ProjectTest < ActiveSupport::TestCase
end
assert_equal Tracker.all, Project.new.trackers
assert_equal Tracker.find(1, 3), Project.new(:tracker_ids => [1, 3]).trackers
assert_equal Tracker.find(1, 3).sort_by(&:id), Project.new(:tracker_ids => [1, 3]).trackers.sort_by(&:id)
end
def test_update
......
Copyright (c) 2007 West Arete Computing, Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
== Gravatar Plugin
This plugin provides a handful of view helpers for displaying gravatars
(globally-recognized avatars).
Gravatars allow users to configure an avatar to go with their email address at
a central location: http://gravatar.com. Gravatar-aware websites (such
as yours) can then look up and display each user's preferred avatar, without
having to handle avatar management. The user gets the benefit of not having to
set up an avatar for each site that they post on.
== Installation
cd ~/myapp
ruby script/plugin install git://github.com/woods/gravatar-plugin.git
or, if you're using piston[http://piston.rubyforge.org] (worth it!):
cd ~/myapp/vendor/plugins
piston import git://github.com/woods/gravatar-plugin.git
== Example
If you represent your users with a model that has an +email+ method (typical
for most rails authentication setups), then you can simply use this method
in your views:
<%= gravatar_for @user %>
This will be replaced with the full HTML +img+ tag necessary for displaying
that user's gravatar.
Other helpers are documented under GravatarHelper::PublicMethods.
== Acknowledgments
Thanks to Magnus Bergmark (http://github.com/Mange), who contributed the SSL
support in this plugin, as well as a few minor fixes.
The following people have also written gravatar-related Ruby libraries:
* Seth Rasmussen created the gravatar gem[http://gravatar.rubyforge.org]
* Matt McCray has also created a gravatar
plugin[http://mattmccray.com/svn/rails/plugins/gravatar_helper]
== Author
Scott A. Woods
West Arete Computing, Inc.
http://westarete.com
scott at westarete dot com
== TODO
* Add specs for ssl support
* Finish rdoc documentation
\ No newline at end of file
require 'spec/rake/spectask'
require 'rake/rdoctask'
desc 'Default: run all specs'
task :default => :spec
desc 'Run all application-specific specs'
Spec::Rake::SpecTask.new(:spec) do |t|
# t.rcov = true
end
desc "Report code statistics (KLOCs, etc) from the application"
task :stats do
RAILS_ROOT = File.dirname(__FILE__)
STATS_DIRECTORIES = [
%w(Libraries lib/),
%w(Specs spec/),
].collect { |name, dir| [ name, "#{RAILS_ROOT}/#{dir}" ] }.select { |name, dir| File.directory?(dir) }
require 'code_statistics'
CodeStatistics.new(*STATS_DIRECTORIES).to_s
end
namespace :doc do
desc 'Generate documentation for the assert_request plugin.'
Rake::RDocTask.new(:plugin) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = 'Gravatar Rails Plugin'
rdoc.options << '--line-numbers' << '--inline-source' << '--accessor' << 'cattr_accessor=rw'
rdoc.rdoc_files.include('README')
rdoc.rdoc_files.include('lib/**/*.rb')
end
end
author: Scott Woods, West Arete Computing
summary: View helpers for displaying gravatars.
homepage: http://github.com/woods/gravatar-plugin/
plugin: git://github.com/woods/gravatar-plugin.git
license: MIT
version: 0.1
rails_version: 1.0+
#-- encoding: UTF-8
require 'gravatar'
ActionView::Base.send :include, GravatarHelper::PublicMethods
#-- encoding: UTF-8
require 'digest/md5'
require 'cgi'
module GravatarHelper
# These are the options that control the default behavior of the public
# methods. They can be overridden during the actual call to the helper,
# or you can set them in your environment.rb as such:
#
# # Allow racier gravatars
# GravatarHelper::DEFAULT_OPTIONS[:rating] = 'R'
#
DEFAULT_OPTIONS = {
# The URL of a default image to display if the given email address does
# not have a gravatar.
:default => nil,
# The default size in pixels for the gravatar image (they're square).
:size => 50,
# The maximum allowed MPAA rating for gravatars. This allows you to
# exclude gravatars that may be out of character for your site.
:rating => 'PG',
# The alt text to use in the img tag for the gravatar. Since it's a
# decorational picture, the alt text should be empty according to the
# XHTML specs.
:alt => '',
# The title text to use for the img tag for the gravatar.
:title => '',
# The class to assign to the img tag for the gravatar.
:class => 'gravatar',
# Whether or not to display the gravatars using HTTPS instead of HTTP
:ssl => false,
}
# The methods that will be made available to your views.
module PublicMethods
# Return the HTML img tag for the given user's gravatar. Presumes that
# the given user object will respond_to "email", and return the user's
# email address.
def gravatar_for(user, options={})
gravatar(user.email, options)
end
# Return the HTML img tag for the given email address's gravatar.
def gravatar(email, options={})
src = h(gravatar_url(email, options))
options = DEFAULT_OPTIONS.merge(options)
[:class, :alt, :size, :title].each { |opt| options[opt] = h(options[opt]) }
"<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" title=\"#{options[:title]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />"
end
# Returns the base Gravatar URL for the given email hash. If ssl evaluates to true,
# a secure URL will be used instead. This is required when the gravatar is to be
# displayed on a HTTPS site.
def gravatar_api_url(hash, ssl=false)
if ssl
"https://secure.gravatar.com/avatar/#{hash}"
else
"http://www.gravatar.com/avatar/#{hash}"
end
end
# Return the gravatar URL for the given email address.
def gravatar_url(email, options={})
email_hash = Digest::MD5.hexdigest(email)
options = DEFAULT_OPTIONS.merge(options)
options[:default] = CGI::escape(options[:default]) unless options[:default].nil?
gravatar_api_url(email_hash, options.delete(:ssl)).tap do |url|
opts = []
[:rating, :size, :default].each do |opt|
unless options[opt].nil?
value = h(options[opt])
opts << [opt, value].join('=')
end
end
url << "?#{opts.join('&')}" unless opts.empty?
end
end
end
end
#-- encoding: UTF-8
require 'rubygems'
require 'erb' # to get "h"
require 'active_support' # to get "returning"
require File.dirname(__FILE__) + '/../lib/gravatar'
include GravatarHelper, GravatarHelper::PublicMethods, ERB::Util
describe "gravatar_url with a custom default URL" do
before(:each) do
@original_options = DEFAULT_OPTIONS.dup
DEFAULT_OPTIONS[:default] = "no_avatar.png"
@url = gravatar_url("somewhere")
end
it "should include the \"default\" argument in the result" do
@url.should match(/&default=no_avatar.png/)
end
after(:each) do
DEFAULT_OPTIONS.merge!(@original_options)
end
end
describe "gravatar_url with default settings" do
before(:each) do
@url = gravatar_url("somewhere")
end
it "should have a nil default URL" do
DEFAULT_OPTIONS[:default].should be_nil
end
it "should not include the \"default\" argument in the result" do
@url.should_not match(/&default=/)
end
end
describe "gravatar with a custom title option" do
it "should include the title in the result" do
gravatar('example@example.com', :title => "This is a title attribute").should match(/This is a title attribute/)
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment