Merged r2109, r2118, r2130, r2131, r2134, r2135, r2136 and r2139 to r2145 from trunk.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.8-stable@2146 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2008-12-19 11:45:33 +00:00
parent 4570fcb7a2
commit 7389b4bed0
28 changed files with 767 additions and 691 deletions

View File

@ -19,6 +19,7 @@ require 'diff'
class WikiController < ApplicationController class WikiController < ApplicationController
before_filter :find_wiki, :authorize before_filter :find_wiki, :authorize
before_filter :find_existing_page, :only => [:rename, :protect, :history, :diff, :annotate, :add_attachment, :destroy]
verify :method => :post, :only => [:destroy, :destroy_attachment, :protect], :redirect_to => { :action => :index } verify :method => :post, :only => [:destroy, :destroy_attachment, :protect], :redirect_to => { :action => :index }
@ -91,7 +92,6 @@ class WikiController < ApplicationController
# rename a page # rename a page
def rename def rename
@page = @wiki.find_page(params[:page])
return render_403 unless editable? return render_403 unless editable?
@page.redirect_existing_links = true @page.redirect_existing_links = true
# used to display the *original* title if some AR validation errors occur # used to display the *original* title if some AR validation errors occur
@ -103,15 +103,12 @@ class WikiController < ApplicationController
end end
def protect def protect
page = @wiki.find_page(params[:page]) @page.update_attribute :protected, params[:protected]
page.update_attribute :protected, params[:protected] redirect_to :action => 'index', :id => @project, :page => @page.title
redirect_to :action => 'index', :id => @project, :page => page.title
end end
# show page history # show page history
def history def history
@page = @wiki.find_page(params[:page])
@version_count = @page.content.versions.count @version_count = @page.content.versions.count
@version_pages = Paginator.new self, @version_count, per_page_option, params['p'] @version_pages = Paginator.new self, @version_count, per_page_option, params['p']
# don't load text # don't load text
@ -125,21 +122,19 @@ class WikiController < ApplicationController
end end
def diff def diff
@page = @wiki.find_page(params[:page])
@diff = @page.diff(params[:version], params[:version_from]) @diff = @page.diff(params[:version], params[:version_from])
render_404 unless @diff render_404 unless @diff
end end
def annotate def annotate
@page = @wiki.find_page(params[:page])
@annotate = @page.annotate(params[:version]) @annotate = @page.annotate(params[:version])
render_404 unless @annotate
end end
# remove a wiki page and its history # remove a wiki page and its history
def destroy def destroy
@page = @wiki.find_page(params[:page])
return render_403 unless editable? return render_403 unless editable?
@page.destroy if @page @page.destroy
redirect_to :action => 'special', :id => @project, :page => 'Page_index' redirect_to :action => 'special', :id => @project, :page => 'Page_index'
end end
@ -181,7 +176,6 @@ class WikiController < ApplicationController
end end
def add_attachment def add_attachment
@page = @wiki.find_page(params[:page])
return render_403 unless editable? return render_403 unless editable?
attach_files(@page, params[:attachments]) attach_files(@page, params[:attachments])
redirect_to :action => 'index', :page => @page.title redirect_to :action => 'index', :page => @page.title
@ -204,6 +198,12 @@ private
render_404 render_404
end end
# Finds the requested page and returns a 404 error if it doesn't exist
def find_existing_page
@page = @wiki.find_page(params[:page])
render_404 if @page.nil?
end
# Returns true if the current user is allowed to edit the page, otherwise false # Returns true if the current user is allowed to edit the page, otherwise false
def editable?(page = @page) def editable?(page = @page)
page.editable_by?(User.current) page.editable_by?(User.current)

View File

@ -48,8 +48,8 @@ module ApplicationHelper
end end
# Display a link to user's account page # Display a link to user's account page
def link_to_user(user) def link_to_user(user, options={})
(user && !user.anonymous?) ? link_to(user, :controller => 'account', :action => 'show', :id => user) : 'Anonymous' (user && !user.anonymous?) ? link_to(user.name(options[:format]), :controller => 'account', :action => 'show', :id => user) : 'Anonymous'
end end
def link_to_issue(issue, options={}) def link_to_issue(issue, options={})

View File

@ -33,6 +33,13 @@ module IssuesHelper
"<strong>#{@cached_label_priority}</strong>: #{issue.priority.name}" "<strong>#{@cached_label_priority}</strong>: #{issue.priority.name}"
end end
# Returns a string of css classes that apply to the given issue
def css_issue_classes(issue)
s = "issue status-#{issue.status.position} priority-#{issue.priority.position}"
s << ' overdue' if issue.overdue?
s
end
def sidebar_queries def sidebar_queries
unless @sidebar_queries unless @sidebar_queries
# User can see public queries and his own queries # User can see public queries and his own queries

View File

@ -195,6 +195,11 @@ class Issue < ActiveRecord::Base
self.status.is_closed? self.status.is_closed?
end end
# Returns true if the issue is overdue
def overdue?
!due_date.nil? && (due_date < Date.today)
end
# Users the issue can be assigned to # Users the issue can be assigned to
def assignable_users def assignable_users
project.assignable_users project.assignable_users

View File

@ -16,6 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class MailHandler < ActionMailer::Base class MailHandler < ActionMailer::Base
include ActionView::Helpers::SanitizeHelper
class UnauthorizedAction < StandardError; end class UnauthorizedAction < StandardError; end
class MissingInformation < StandardError; end class MissingInformation < StandardError; end
@ -88,7 +89,7 @@ class MailHandler < ActionMailer::Base
issue.status = status issue.status = status
end end
issue.subject = email.subject.chomp.toutf8 issue.subject = email.subject.chomp.toutf8
issue.description = email.plain_text_body.chomp issue.description = plain_text_body
issue.save! issue.save!
add_attachments(issue) add_attachments(issue)
logger.info "MailHandler: issue ##{issue.id} created by #{user}" if logger && logger.info logger.info "MailHandler: issue ##{issue.id} created by #{user}" if logger && logger.info
@ -120,7 +121,7 @@ class MailHandler < ActionMailer::Base
raise UnauthorizedAction unless status.nil? || user.allowed_to?(:edit_issues, issue.project) raise UnauthorizedAction unless status.nil? || user.allowed_to?(:edit_issues, issue.project)
# add the note # add the note
journal = issue.init_journal(user, email.plain_text_body.chomp) journal = issue.init_journal(user, plain_text_body)
add_attachments(issue) add_attachments(issue)
# check workflow # check workflow
if status && issue.new_statuses_allowed_to(user).include?(status) if status && issue.new_statuses_allowed_to(user).include?(status)
@ -156,21 +157,30 @@ class MailHandler < ActionMailer::Base
end end
def get_keyword(attr) def get_keyword(attr)
if @@handler_options[:allow_override].include?(attr.to_s) && email.plain_text_body =~ /^#{attr}:[ \t]*(.+)$/i if @@handler_options[:allow_override].include?(attr.to_s) && plain_text_body =~ /^#{attr}:[ \t]*(.+)$/i
$1.strip $1.strip
elsif !@@handler_options[:issue][attr].blank? elsif !@@handler_options[:issue][attr].blank?
@@handler_options[:issue][attr] @@handler_options[:issue][attr]
end end
end end
end
class TMail::Mail # Returns the text/plain part of the email
# Returns body of the first plain text part found if any # If not found (eg. HTML-only email), returns the body with tags removed
def plain_text_body def plain_text_body
return @plain_text_body unless @plain_text_body.nil? return @plain_text_body unless @plain_text_body.nil?
p = self.parts.collect {|c| (c.respond_to?(:parts) && !c.parts.empty?) ? c.parts : c}.flatten parts = @email.parts.collect {|c| (c.respond_to?(:parts) && !c.parts.empty?) ? c.parts : c}.flatten
plain = p.detect {|c| c.content_type == 'text/plain'} if parts.empty?
@plain_text_body = plain.nil? ? self.body : plain.body parts << @email
end
plain_text_part = parts.detect {|p| p.content_type == 'text/plain'}
if plain_text_part.nil?
# no text/plain part found, assuming html-only email
# strip html tags and remove doctype directive
@plain_text_body = strip_tags(@email.body.to_s)
@plain_text_body.gsub! %r{^<!DOCTYPE .*$}, ''
else
@plain_text_body = plain_text_part.body.to_s
end
@plain_text_body.strip!
end end
end end

View File

@ -144,7 +144,7 @@ class User < ActiveRecord::Base
end end
def time_zone def time_zone
@time_zone ||= (self.pref.time_zone.blank? ? nil : TimeZone[self.pref.time_zone]) @time_zone ||= (self.pref.time_zone.blank? ? nil : ActiveSupport::TimeZone[self.pref.time_zone])
end end
def wants_comments_in_reverse_order? def wants_comments_in_reverse_order?

View File

@ -11,7 +11,7 @@
</tr></thead> </tr></thead>
<tbody> <tbody>
<% issues.each do |issue| -%> <% issues.each do |issue| -%>
<tr id="issue-<%= issue.id %>" class="issue hascontextmenu <%= cycle('odd', 'even') %> <%= "status-#{issue.status.position} priority-#{issue.priority.position}" %>"> <tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= css_issue_classes(issue) %>">
<td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td> <td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
<td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td> <td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
<% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %> <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>

View File

@ -8,7 +8,7 @@
</tr></thead> </tr></thead>
<tbody> <tbody>
<% for issue in issues %> <% for issue in issues %>
<tr id="issue-<%= issue.id %>" class="issue hascontextmenu <%= cycle('odd', 'even') %> <%= "status-#{issue.status.position} priority-#{issue.priority.position}" %>"> <tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= css_issue_classes(issue) %>">
<td class="id"> <td class="id">
<%= check_box_tag("ids[]", issue.id, false, :style => 'display:none;') %> <%= check_box_tag("ids[]", issue.id, false, :style => 'display:none;') %>
<%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %> <%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %>

View File

@ -9,7 +9,7 @@
<h2><%= @issue.tracker.name %> #<%= @issue.id %></h2> <h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
<div class="issue <%= "status-#{@issue.status.position} priority-#{@issue.priority.position}" %>"> <div class="<%= css_issue_classes(@issue) %>">
<%= avatar(@issue.author, :size => "64") %> <%= avatar(@issue.author, :size => "64") %>
<h3><%=h @issue.subject %></h3> <h3><%=h @issue.subject %></h3>
<p class="author"> <p class="author">

View File

@ -1,5 +1,5 @@
<% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %> <% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %>
<%= text_area_tag :notes, @journal.notes, :class => 'wiki-edit', <%= text_area_tag :notes, h(@journal.notes), :class => 'wiki-edit',
:rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %> :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %>
<%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %> <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>
<p><%= submit_tag l(:button_save) %> <p><%= submit_tag l(:button_save) %>

View File

@ -24,7 +24,7 @@
<div id="account"> <div id="account">
<%= render_menu :account_menu -%> <%= render_menu :account_menu -%>
</div> </div>
<%= content_tag('div', "#{l(:label_logged_as)} #{User.current.login}", :id => 'loggedas') if User.current.logged? %> <%= content_tag('div', "#{l(:label_logged_as)} #{link_to_user(User.current, :format => :username)}", :id => 'loggedas') if User.current.logged? %>
<%= render_menu :top_menu -%> <%= render_menu :top_menu -%>
</div> </div>

View File

@ -38,7 +38,7 @@
<div class="box tabular"> <div class="box tabular">
<% fields_for :pref, @user.pref, :builder => TabularFormBuilder, :lang => current_language do |pref_fields| %> <% fields_for :pref, @user.pref, :builder => TabularFormBuilder, :lang => current_language do |pref_fields| %>
<p><%= pref_fields.check_box :hide_mail %></p> <p><%= pref_fields.check_box :hide_mail %></p>
<p><%= pref_fields.select :time_zone, TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %></p> <p><%= pref_fields.select :time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %></p>
<p><%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %></p> <p><%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %></p>
<% end %> <% end %>
</div> </div>

View File

@ -236,7 +236,7 @@ label_register: הרשמה
label_password_lost: אבדה הסיסמה? label_password_lost: אבדה הסיסמה?
label_home: דף הבית label_home: דף הבית
label_my_page: הדף שלי label_my_page: הדף שלי
label_my_account: השבון שלי label_my_account: החשבון שלי
label_my_projects: הפרויקטים שלי label_my_projects: הפרויקטים שלי
label_administration: אדמיניסטרציה label_administration: אדמיניסטרציה
label_login: התחבר label_login: התחבר
@ -292,7 +292,7 @@ label_confirmation: אישור
label_export_to: יצא ל label_export_to: יצא ל
label_read: קרא... label_read: קרא...
label_public_projects: פרויקטים פומביים label_public_projects: פרויקטים פומביים
label_open_issues: פותח label_open_issues: פתוח
label_open_issues_plural: פתוחים label_open_issues_plural: פתוחים
label_closed_issues: סגור label_closed_issues: סגור
label_closed_issues_plural: סגורים label_closed_issues_plural: סגורים
@ -308,7 +308,7 @@ label_used_by: בשימוש ע"י
label_details: פרטים label_details: פרטים
label_add_note: הוסף הערה label_add_note: הוסף הערה
label_per_page: לכל דף label_per_page: לכל דף
label_calendar: לו"ח שנה label_calendar: לוח שנה
label_months_from: חודשים מ label_months_from: חודשים מ
label_gantt: גאנט label_gantt: גאנט
label_internal: פנימי label_internal: פנימי
@ -357,7 +357,7 @@ label_sort_higher: הזז למעלה
label_sort_lower: הזז למטה label_sort_lower: הזז למטה
label_sort_lowest: הזז לתחתית label_sort_lowest: הזז לתחתית
label_roadmap: מפת הדרכים label_roadmap: מפת הדרכים
label_roadmap_due_in: %s נגמר בעוד label_roadmap_due_in: נגמר בעוד %s
label_roadmap_overdue: %s מאחר label_roadmap_overdue: %s מאחר
label_roadmap_no_issues: אין נושאים לגירסא זו label_roadmap_no_issues: אין נושאים לגירסא זו
label_search: חפש label_search: חפש
@ -421,8 +421,8 @@ label_send_information: שלח מידע על חשבון למשתמש
label_year: שנה label_year: שנה
label_month: חודש label_month: חודש
label_week: שבוע label_week: שבוע
label_date_from: מאת label_date_from: מתאריך
label_date_to: אל label_date_to: עד
label_language_based: מבוסס שפה label_language_based: מבוסס שפה
label_sort_by: מין לפי %s label_sort_by: מין לפי %s
label_send_test_email: שלח דו"ל בדיקה label_send_test_email: שלח דו"ל בדיקה
@ -487,7 +487,7 @@ text_journal_set_to: שונה ל %s
text_journal_deleted: נמחק text_journal_deleted: נמחק
text_tip_task_begin_day: מטלה המתחילה היום text_tip_task_begin_day: מטלה המתחילה היום
text_tip_task_end_day: מטלה המסתיימת היום text_tip_task_end_day: מטלה המסתיימת היום
text_tip_task_begin_end_day: מתלה המתחילה ומסתיימת היום text_tip_task_begin_end_day: מטלה המתחילה ומסתיימת היום
text_project_identifier_info: 'אותיות לטיניות (a-z), מספרים ומקפים.<br />ברגע שנשמר, לא ניתן לשנות את המזהה.' text_project_identifier_info: 'אותיות לטיניות (a-z), מספרים ומקפים.<br />ברגע שנשמר, לא ניתן לשנות את המזהה.'
text_caracters_maximum: מקסימום %d תווים. text_caracters_maximum: מקסימום %d תווים.
text_length_between: אורך בין %d ל %d תווים. text_length_between: אורך בין %d ל %d תווים.
@ -618,81 +618,79 @@ label_overall_activity: פעילות כוללת
setting_default_projects_public: פרויקטים חדשים הינם פומביים כברירת מחדל setting_default_projects_public: פרויקטים חדשים הינם פומביים כברירת מחדל
error_scm_annotate: "הכניסה לא קיימת או שלא ניתן לתאר אותה." error_scm_annotate: "הכניסה לא קיימת או שלא ניתן לתאר אותה."
label_planning: תכנון label_planning: תכנון
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' text_subprojects_destroy_warning: 'תת הפרויקט\ים: %s ימחקו גם כן.'
label_and_its_subprojects: %s and its subprojects label_and_its_subprojects: %s וכל תת הפרויקטים שלו
mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d days:" mail_body_reminder: "%d נושאים שמיועדים אליך מיועדים להגשה בתוך %d ימים:"
mail_subject_reminder: "%d issue(s) due in the next days" mail_subject_reminder: "%d נושאים מיעדים להגשה בימים הקרובים"
text_user_wrote: '%s wrote:' text_user_wrote: '%s כתב:'
label_duplicated_by: duplicated by label_duplicated_by: שוכפל ע"י
setting_enabled_scm: Enabled SCM setting_enabled_scm: אפשר SCM
text_enumeration_category_reassign_to: 'Reassign them to this value:' text_enumeration_category_reassign_to: 'הצב מחדש לערך הזה:'
text_enumeration_destroy_question: '%d objects are assigned to this value.' text_enumeration_destroy_question: '%d אוביקטים מוצבים לערך זה.'
label_incoming_emails: Incoming emails label_incoming_emails: דוא"ל נכנס
label_generate_key: Generate a key label_generate_key: יצר מפתח
setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_enabled: Enable WS for incoming emails
setting_mail_handler_api_key: API key setting_mail_handler_api_key: מפתח API
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
field_parent_title: Parent page field_parent_title: דף אב
label_issue_watchers: Watchers label_issue_watchers: צופים
setting_commit_logs_encoding: Commit messages encoding setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote button_quote: צטט
setting_sequential_project_identifiers: Generate sequential project identifiers setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version notice_unable_delete_version: לא ניתן למחוק גירסא
label_renamed: renamed label_renamed: השם שונה
label_copied: copied label_copied: הועתק
setting_plain_text_mail: plain text only (no HTML) setting_plain_text_mail: טקסט פשוט בלבד (ללא HTML)
permission_view_files: View files permission_view_files: צפה בקבצים
permission_edit_issues: Edit issues permission_edit_issues: ערוך נושאים
permission_edit_own_time_entries: Edit own time logs permission_edit_own_time_entries: ערוך את לוג הזמן של עצמך
permission_manage_public_queries: Manage public queries permission_manage_public_queries: נהל שאילתות פומביות
permission_add_issues: Add issues permission_add_issues: הוסף נושא
permission_log_time: Log spent time permission_log_time: תעד זמן שבוזבז
permission_view_changesets: View changesets permission_view_changesets: צפה בקבוצות שינויים
permission_view_time_entries: View spent time permission_view_time_entries: צפה בזמן שבוזבז
permission_manage_versions: Manage versions permission_manage_versions: נהל גירסאות
permission_manage_wiki: Manage wiki permission_manage_wiki: נהל wiki
permission_manage_categories: Manage issue categories permission_manage_categories: נהל קטגוריות נושאים
permission_protect_wiki_pages: Protect wiki pages permission_protect_wiki_pages: הגן כל דפי wiki
permission_comment_news: Comment news permission_comment_news: הגב על החדשות
permission_delete_messages: Delete messages permission_delete_messages: מחק הודעות
permission_select_project_modules: Select project modules permission_select_project_modules: בחר מודולי פרויקט
permission_manage_documents: Manage documents permission_manage_documents: נהל מסמכים
permission_edit_wiki_pages: Edit wiki pages permission_edit_wiki_pages: ערוך דפי wiki
permission_add_issue_watchers: Add watchers permission_add_issue_watchers: הוסף צופים
permission_view_gantt: View gantt chart permission_view_gantt: צפה בגאנט
permission_move_issues: Move issues permission_move_issues: הזז נושאים
permission_manage_issue_relations: Manage issue relations permission_manage_issue_relations: נהל יחס בין נושאים
permission_delete_wiki_pages: Delete wiki pages permission_delete_wiki_pages: מחק דפי wiki
permission_manage_boards: Manage boards permission_manage_boards: נהל לוחות
permission_delete_wiki_pages_attachments: Delete attachments permission_delete_wiki_pages_attachments: מחק דבוקות
permission_view_wiki_edits: View wiki history permission_view_wiki_edits: צפה בהיסטורית wiki
permission_add_messages: Post messages permission_add_messages: הצב הודעות
permission_view_messages: View messages permission_view_messages: צפה בהודעות
permission_manage_files: Manage files permission_manage_files: נהל קבצים
permission_edit_issue_notes: Edit notes permission_edit_issue_notes: ערוך רשימות
permission_manage_news: Manage news permission_manage_news: נהל חדשות
permission_view_calendar: View calendrier permission_view_calendar: צפה בלוח השנה
permission_manage_members: Manage members permission_manage_members: נהל חברים
permission_edit_messages: Edit messages permission_edit_messages: ערוך הודעות
permission_delete_issues: Delete issues permission_delete_issues: מחק נושאים
permission_view_issue_watchers: View watchers list permission_view_issue_watchers: צפה ברשימה צופים
permission_manage_repository: Manage repository permission_manage_repository: נהל מאגר
permission_commit_access: Commit access permission_commit_access: Commit access
permission_browse_repository: Browse repository permission_browse_repository: סייר במאגר
permission_view_documents: View documents permission_view_documents: צפה במסמכים
permission_edit_project: Edit project permission_edit_project: ערוך פרויקט
permission_add_issue_notes: Add notes permission_add_issue_notes: Add notes
permission_save_queries: Save queries permission_save_queries: שמור שאילתות
permission_view_wiki_pages: View wiki permission_view_wiki_pages: צפה ב-wiki
permission_rename_wiki_pages: Rename wiki pages permission_rename_wiki_pages: שנה שם של דפי wiki
permission_edit_time_entries: Edit time logs permission_edit_time_entries: ערוך רישום זמנים
permission_edit_own_issue_notes: Edit own notes permission_edit_own_issue_notes: Edit own notes
setting_gravatar_enabled: Use Gravatar user icons setting_gravatar_enabled: Use Gravatar user icons
label_example: Example label_example: דוגמא
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages permission_edit_own_messages: ערוך הודעות של עצמך
permission_delete_own_messages: Delete own messages permission_delete_own_messages: מחק הודעות של עצמך
label_user_activity: "%s's activity" label_user_activity: "הפעילות של %s"
label_updated_time_by: Updated by %s %s ago label_updated_time_by: עודכן ע"י %s לפני %s
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
setting_diff_max_lines_displayed: Max number of diff lines displayed

View File

@ -39,15 +39,15 @@ activerecord_error_circular_dependency: Šis ryšys sukurtų ciklinę priklausom
general_fmt_age: %d m. general_fmt_age: %d m.
general_fmt_age_plural: %d metų(ai) general_fmt_age_plural: %d metų(ai)
general_fmt_date: %%Y-%%m-%%d general_fmt_date: %%Y-%%m-%%d
general_fmt_datetime: %%Y-%%m-%%d %%I:%%M %%p general_fmt_datetime: %%Y-%%m-%%d %%H:%%M
general_fmt_datetime_short: %%b %%d, %%I:%%M %%p general_fmt_datetime_short: %%b %%d, %%H:%%M
general_fmt_time: %%I:%%M %%p general_fmt_time: %%H:%%M
general_text_No: 'Ne' general_text_No: 'Ne'
general_text_Yes: 'Taip' general_text_Yes: 'Taip'
general_text_no: 'ne' general_text_no: 'ne'
general_text_yes: 'taip' general_text_yes: 'taip'
general_lang_name: 'Lithuanian (lietuvių)' general_lang_name: 'Lithuanian (lietuvių)'
general_csv_separator: ',' general_csv_separator: ';'
general_csv_decimal_separator: '.' general_csv_decimal_separator: '.'
general_csv_encoding: UTF-8 general_csv_encoding: UTF-8
general_pdf_encoding: UTF-8 general_pdf_encoding: UTF-8
@ -69,7 +69,6 @@ notice_successful_delete: Sėkmingas panaikinimas.
notice_successful_connection: Sėkmingas susijungimas. notice_successful_connection: Sėkmingas susijungimas.
notice_file_not_found: Puslapis, į kurį ketinate įeiti, neegzistuoja arba pašalintas. notice_file_not_found: Puslapis, į kurį ketinate įeiti, neegzistuoja arba pašalintas.
notice_locking_conflict: Duomenys atnaujinti kito vartotojo. notice_locking_conflict: Duomenys atnaujinti kito vartotojo.
notice_scm_error: Duomenys ir/ar pakeitimai saugykloje(repozitorojoje) neegzistuoja.
notice_not_authorized: Jūs neturite teisių gauti prieigą prie šio puslapio. notice_not_authorized: Jūs neturite teisių gauti prieigą prie šio puslapio.
notice_email_sent: Laiškas išsiųstas %s notice_email_sent: Laiškas išsiųstas %s
notice_email_error: Laiško siųntimo metu įvyko klaida (%s) notice_email_error: Laiško siųntimo metu įvyko klaida (%s)
@ -77,9 +76,14 @@ notice_feeds_access_key_reseted: Jūsų RSS raktas buvo atnaujintas.
notice_failed_to_save_issues: "Nepavyko išsaugoti %d problemos(ų) iš %d pasirinkto: %s." notice_failed_to_save_issues: "Nepavyko išsaugoti %d problemos(ų) iš %d pasirinkto: %s."
notice_no_issue_selected: "Nepasirinkta nė viena problema! Prašom pažymėti problemą, kurią norite redaguoti." notice_no_issue_selected: "Nepasirinkta nė viena problema! Prašom pažymėti problemą, kurią norite redaguoti."
notice_account_pending: "Jūsų paskyra buvo sukūrta ir dabar laukiama administratoriaus patvirtinimo." notice_account_pending: "Jūsų paskyra buvo sukūrta ir dabar laukiama administratoriaus patvirtinimo."
notice_default_data_loaded: Numatytoji konfiguracija sėkmingai užkrauta.
notice_unable_delete_version: Neimanoma panaikinti versiją
error_can_t_load_default_data: "Numatytoji konfiguracija negali būti užkrauta: %s"
error_scm_not_found: "Duomenys ir/ar pakeitimai saugykloje(repozitorojoje) neegzistuoja." error_scm_not_found: "Duomenys ir/ar pakeitimai saugykloje(repozitorojoje) neegzistuoja."
error_scm_command_failed: "Įvyko klaida jungiantis prie saugyklos: %s" error_scm_command_failed: "Įvyko klaida jungiantis prie saugyklos: %s"
error_scm_annotate: "Įrašas neegzituoja arba negalima jo atvaizduoti."
error_issue_not_found_in_project: 'Darbas nerastas arba nesurištas su šiuo projektu'
mail_subject_lost_password: Jūsų %s slaptažodis mail_subject_lost_password: Jūsų %s slaptažodis
mail_body_lost_password: 'Norėdami pakeisti slaptažodį, spauskite nuorodą:' mail_body_lost_password: 'Norėdami pakeisti slaptažodį, spauskite nuorodą:'
@ -89,6 +93,8 @@ mail_body_account_information_external: Jūs galite naudoti Jūsų "%s" paskyrą
mail_body_account_information: Informacija apie Jūsų paskyrą mail_body_account_information: Informacija apie Jūsų paskyrą
mail_subject_account_activation_request: %s paskyros aktyvavimo prašymas mail_subject_account_activation_request: %s paskyros aktyvavimo prašymas
mail_body_account_activation_request: 'Užsiregistravo naujas vartotojas (%s). Jo paskyra laukia jūsų patvirtinimo:' mail_body_account_activation_request: 'Užsiregistravo naujas vartotojas (%s). Jo paskyra laukia jūsų patvirtinimo:'
mail_subject_reminder: "%d darbas(ai) po kelių dienų"
mail_body_reminder: "%d darbas(ai), kurie yra jums priskirti, baigiasi po %d dienų(os):"
gui_validation_error: 1 klaida gui_validation_error: 1 klaida
gui_validation_error_plural: %d klaidų(os) gui_validation_error_plural: %d klaidų(os)
@ -126,7 +132,7 @@ field_subject: Tema
field_due_date: Užbaigimo data field_due_date: Užbaigimo data
field_assigned_to: Paskirtas field_assigned_to: Paskirtas
field_priority: Prioritetas field_priority: Prioritetas
field_fixed_version: Target version field_fixed_version: Tikslinė versija
field_user: Vartotojas field_user: Vartotojas
field_role: Vaidmuo field_role: Vaidmuo
field_homepage: Pagrindinis puslapis field_homepage: Pagrindinis puslapis
@ -146,14 +152,14 @@ field_password_confirmation: Patvirtinimas
field_version: Versija field_version: Versija
field_type: Tipas field_type: Tipas
field_host: Pagrindinis kompiuteris field_host: Pagrindinis kompiuteris
field_port: Jungtis field_port: Portas
field_account: Paskyra field_account: Paskyra
field_base_dn: Bazinis skiriamasis vardas field_base_dn: Bazinis skiriamasis vardas
field_attr_login: Registracijos vardo požymis field_attr_login: Registracijos vardo požymis
field_attr_firstname: Vardo priskiria field_attr_firstname: Vardo priskiria
field_attr_lastname: Pavardės priskiria field_attr_lastname: Pavardės priskiria
field_attr_mail: Elektroninio pašto požymis field_attr_mail: Elektroninio pašto požymis
field_onthefly: Vartotojų sukūrimas paskubomis field_onthefly: Automatinis vartotojų registravimas
field_start_date: Pradėti field_start_date: Pradėti
field_done_ratio: %% Atlikta field_done_ratio: %% Atlikta
field_auth_source: Autentiškumo nustatymo būdas field_auth_source: Autentiškumo nustatymo būdas
@ -176,6 +182,9 @@ field_column_names: Skiltys
field_time_zone: Laiko juosta field_time_zone: Laiko juosta
field_searchable: Randamas field_searchable: Randamas
field_default_value: Numatytoji vertė field_default_value: Numatytoji vertė
field_comments_sorting: rodyti komentarus
field_parent_title: Aukštesnio lygio puslapis
setting_app_title: Programos pavadinimas setting_app_title: Programos pavadinimas
setting_app_subtitle: Programos paantraštė setting_app_subtitle: Programos paantraštė
setting_welcome_text: Pasveikinimas setting_welcome_text: Pasveikinimas
@ -183,13 +192,15 @@ setting_default_language: Numatytoji kalba
setting_login_required: Reikalingas autentiškumo nustatymas setting_login_required: Reikalingas autentiškumo nustatymas
setting_self_registration: Saviregistracija setting_self_registration: Saviregistracija
setting_attachment_max_size: Priedo maks. dydis setting_attachment_max_size: Priedo maks. dydis
setting_issues_export_limit pagal dydį: Darbų eksportavimo riba setting_issues_export_limit: Darbų eksportavimo riba
setting_mail_from: Emisijos elektroninio pašto adresas setting_mail_from: Emisijos elektroninio pašto adresas
setting_bcc_recipients: Akli tikslios kopijos gavėjai (bcc) setting_bcc_recipients: Akli tikslios kopijos gavėjai (bcc)
setting_plain_text_mail: tik grinas tekstas (be HTML)
setting_host_name: Pagrindinio kompiuterio vardas setting_host_name: Pagrindinio kompiuterio vardas
setting_text_formatting: Teksto apipavidalinimas setting_text_formatting: Teksto apipavidalinimas
setting_wiki_compression: Wiki istorijos suspaudimas setting_wiki_compression: Wiki istorijos suspaudimas
setting_feeds_limit: Perdavimo turinio riba setting_feeds_limit: Perdavimo turinio riba
setting_default_projects_public: Naujas projektas viešas pagal nutylėjimą
setting_autofetch_changesets: Automatinis pakeitimų siuntimas setting_autofetch_changesets: Automatinis pakeitimų siuntimas
setting_sys_api_enabled: Įgalinkite WS sandėlio vadybai setting_sys_api_enabled: Įgalinkite WS sandėlio vadybai
setting_commit_ref_keywords: Nurodymo reikšminiai žodžiai setting_commit_ref_keywords: Nurodymo reikšminiai žodžiai
@ -200,8 +211,77 @@ setting_time_format: Laiko formatas
setting_cross_project_issue_relations: Leisti tarprojektinius darbų ryšius setting_cross_project_issue_relations: Leisti tarprojektinius darbų ryšius
setting_issue_list_default_columns: Numatytosios skiltys darbų sąraše setting_issue_list_default_columns: Numatytosios skiltys darbų sąraše
setting_repositories_encodings: Saugyklos koduotė setting_repositories_encodings: Saugyklos koduotė
setting_commit_logs_encoding: Commit pranėšimų koduotė
setting_emails_footer: elektroninio pašto puslapinė poraštė setting_emails_footer: elektroninio pašto puslapinė poraštė
setting_protocol: Protokolas setting_protocol: Protokolas
setting_per_page_options: Įrašų puslapyje nustatimas
setting_user_format: Vartotojo atvaizdavimo formatas
setting_activity_days_default: Atvaizduojamos dienos projekto veikloje
setting_display_subprojects_issues: Pagal nutylėjimą rodyti subprojektų darbus pagrindiniame projekte
setting_enabled_scm: Įgalintas SCM
setting_mail_handler_api_enabled: Įgalinti WS įeinantiems laiškams
setting_mail_handler_api_key: API raktas
setting_sequential_project_identifiers: Generuoti nuoseklus projekto identifikatorius
setting_gravatar_enabled: Naudoti Gravatar vartotojo ikonkės
setting_diff_max_lines_displayed: Maksimalus rodomas eilučiu skaičius diff\'e
permission_edit_project: Edit project
permission_select_project_modules: Select project modules
permission_manage_members: Manage members
permission_manage_versions: Manage versions
permission_manage_categories: Manage issue categories
permission_add_issues: Add issues
permission_edit_issues: Edit issues
permission_manage_issue_relations: Manage issue relations
permission_add_issue_notes: Add notes
permission_edit_issue_notes: Edit notes
permission_edit_own_issue_notes: Edit own notes
permission_move_issues: Move issues
permission_delete_issues: Delete issues
permission_manage_public_queries: Manage public queries
permission_save_queries: Save queries
permission_view_gantt: View gantt chart
permission_view_calendar: View calender
permission_view_issue_watchers: View watchers list
permission_add_issue_watchers: Add watchers
permission_log_time: Log spent time
permission_view_time_entries: View spent time
permission_edit_time_entries: Edit time logs
permission_edit_own_time_entries: Edit own time logs
permission_manage_news: Manage news
permission_comment_news: Comment news
permission_manage_documents: Manage documents
permission_view_documents: View documents
permission_manage_files: Manage files
permission_view_files: View files
permission_manage_wiki: Manage wiki
permission_rename_wiki_pages: Rename wiki pages
permission_delete_wiki_pages: Delete wiki pages
permission_view_wiki_pages: View wiki
permission_view_wiki_edits: View wiki history
permission_edit_wiki_pages: Edit wiki pages
permission_delete_wiki_pages_attachments: Delete attachments
permission_protect_wiki_pages: Protect wiki pages
permission_manage_repository: Manage repository
permission_browse_repository: Browse repository
permission_view_changesets: View changesets
permission_commit_access: Commit access
permission_manage_boards: Manage boards
permission_view_messages: View messages
permission_add_messages: Post messages
permission_edit_messages: Edit messages
permission_edit_own_messages: Edit own messages
permission_delete_messages: Delete messages
permission_delete_own_messages: Delete own messages
project_module_issue_tracking: Darbu pėdsekys
project_module_time_tracking: Laiko pėdsekys
project_module_news: Žinios
project_module_documents: Dokumentai
project_module_files: Rinkmenos
project_module_wiki: Wiki
project_module_repository: Saugykla
project_module_boards: Forumai
label_user: Vartotojas label_user: Vartotojas
label_user_plural: Vartotojai label_user_plural: Vartotojai
@ -216,9 +296,12 @@ label_issue_new: Naujas darbas
label_issue_plural: Darbai label_issue_plural: Darbai
label_issue_view_all: Peržiūrėti visus darbus label_issue_view_all: Peržiūrėti visus darbus
label_issues_by: Darbai pagal %s label_issues_by: Darbai pagal %s
label_issue_added: Darbas pridėtas
label_issue_updated: Darbas atnaujintas
label_document: Dokumentas label_document: Dokumentas
label_document_new: Naujas dokumentas label_document_new: Naujas dokumentas
label_document_plural: Dokumentai label_document_plural: Dokumentai
label_document_added: Dokumentas pridėtas
label_role: Vaidmuo label_role: Vaidmuo
label_role_plural: Vaidmenys label_role_plural: Vaidmenys
label_role_new: Naujas vaidmuo label_role_new: Naujas vaidmuo
@ -261,6 +344,8 @@ label_last_updates: Paskutinis atnaujinimas
label_last_updates_plural: %d paskutinis atnaujinimas label_last_updates_plural: %d paskutinis atnaujinimas
label_registered_on: Užregistruota label_registered_on: Užregistruota
label_activity: Veikla label_activity: Veikla
label_overall_activity: Visa veikla
label_user_activity: "%so veiksmai"
label_new: Naujas label_new: Naujas
label_logged_as: Prisijungęs kaip label_logged_as: Prisijungęs kaip
label_environment: Aplinka label_environment: Aplinka
@ -269,6 +354,7 @@ label_auth_source: Autentiškumo nustatymo būdas
label_auth_source_new: Naujas autentiškumo nustatymo būdas label_auth_source_new: Naujas autentiškumo nustatymo būdas
label_auth_source_plural: Autentiškumo nustatymo būdai label_auth_source_plural: Autentiškumo nustatymo būdai
label_subproject_plural: Subprojektai label_subproject_plural: Subprojektai
label_and_its_subprojects: %s projektas ir jo subprojektai
label_min_max_length: Min - Maks ilgis label_min_max_length: Min - Maks ilgis
label_list: Sąrašas label_list: Sąrašas
label_date: Data label_date: Data
@ -288,6 +374,7 @@ label_attachment: Rinkmena
label_attachment_new: Nauja rinkmena label_attachment_new: Nauja rinkmena
label_attachment_delete: Pašalinkite rinkmeną label_attachment_delete: Pašalinkite rinkmeną
label_attachment_plural: Rinkmenos label_attachment_plural: Rinkmenos
label_file_added: Byla pridėta
label_report: Ataskaita label_report: Ataskaita
label_report_plural: Ataskaitos label_report_plural: Ataskaitos
label_news: Žinia label_news: Žinia
@ -295,6 +382,7 @@ label_news_new: Pridėkite žinią
label_news_plural: Žinios label_news_plural: Žinios
label_news_latest: Paskutinės naujienos label_news_latest: Paskutinės naujienos
label_news_view_all: Peržiūrėti visas žinias label_news_view_all: Peržiūrėti visas žinias
label_news_added: Naujiena pridėta
label_change_log: Pakeitimų žurnalas label_change_log: Pakeitimų žurnalas
label_settings: Nustatymai label_settings: Nustatymai
label_overview: Apžvalga label_overview: Apžvalga
@ -345,7 +433,15 @@ label_in_less_than: mažiau negu
label_in_more_than: daugiau negu label_in_more_than: daugiau negu
label_in: in label_in: in
label_today: šiandien label_today: šiandien
label_all_time: visas laikas
label_yesterday: vakar
label_this_week: šią savaitę label_this_week: šią savaitę
label_last_week: paskutinė savaitė
label_last_n_days: paskutinių %d dienų
label_this_month: šis menuo
label_last_month: paskutinis menuo
label_this_year: šiemet
label_date_range: Dienų diapazonas
label_less_than_ago: mažiau negu dienomis prieš label_less_than_ago: mažiau negu dienomis prieš
label_more_than_ago: daugiau negu dienomis prieš label_more_than_ago: daugiau negu dienomis prieš
label_ago: dienomis prieš label_ago: dienomis prieš
@ -353,13 +449,17 @@ label_contains: turi savyje
label_not_contains: neturi savyje label_not_contains: neturi savyje
label_day_plural: dienos label_day_plural: dienos
label_repository: Saugykla label_repository: Saugykla
label_repository_plural: Saugiklos
label_browse: Naršyti label_browse: Naršyti
label_modification: %d pakeitimas label_modification: %d pakeitimas
label_modification_plural: %d pakeitimai label_modification_plural: %d pakeitimai
label_revision: Revizija label_revision: Revizija
label_revision_plural: Revizijos label_revision_plural: Revizijos
label_associated_revisions: susijusios revizijos
label_added: pridėtas label_added: pridėtas
label_modified: pakeistas label_modified: pakeistas
label_copied: nukopijuotas
label_renamed: pervardintas
label_deleted: pašalintas label_deleted: pašalintas
label_latest_revision: Paskutinė revizija label_latest_revision: Paskutinė revizija
label_latest_revision_plural: Paskutinės revizijos label_latest_revision_plural: Paskutinės revizijos
@ -410,10 +510,11 @@ label_loading: Kraunama...
label_relation_new: Naujas ryšys label_relation_new: Naujas ryšys
label_relation_delete: Pašalinkite ryšį label_relation_delete: Pašalinkite ryšį
label_relates_to: susietas su label_relates_to: susietas su
label_duplicates: dublikatai label_duplicates: dubliuoja
label_blocks: blokai label_duplicated_by: dubliuojasi
label_blocked_by: blokuotas label_blocks: blokuoja
label_precedes: įvyksta pirma label_blocked_by: blokuojasi
label_precedes: ankstesnė
label_follows: seka label_follows: seka
label_end_to_start: užbaigti, kad pradėti label_end_to_start: užbaigti, kad pradėti
label_end_to_end: užbaigti, kad pabaigti label_end_to_end: užbaigti, kad pabaigti
@ -430,6 +531,7 @@ label_topic_plural: Temos
label_message_plural: Pranešimai label_message_plural: Pranešimai
label_message_last: Paskutinis pranešimas label_message_last: Paskutinis pranešimas
label_message_new: Naujas pranešimas label_message_new: Naujas pranešimas
label_message_posted: Pranešimas pridėtas
label_reply_plural: Atsakymai label_reply_plural: Atsakymai
label_send_information: Nusiųsti paskyros informaciją vartotojui label_send_information: Nusiųsti paskyros informaciją vartotojui
label_year: Metai label_year: Metai
@ -443,11 +545,12 @@ label_send_test_email: Nusiųsti bandomąjį elektroninį laišką
label_feeds_access_key_created_on: RSS prieigos raktas sukūrtas prieš %s label_feeds_access_key_created_on: RSS prieigos raktas sukūrtas prieš %s
label_module_plural: Moduliai label_module_plural: Moduliai
label_added_time_by: Pridėjo %s prieš %s label_added_time_by: Pridėjo %s prieš %s
label_updated_time_by: Atnaujino %s %s atgal
label_updated_time: Atnaujinta prieš %s label_updated_time: Atnaujinta prieš %s
label_jump_to_a_project: Šuolis į projektą... label_jump_to_a_project: Šuolis į projektą...
label_file_plural: Bylos label_file_plural: Bylos
label_changeset_plural: Changesets label_changeset_plural: Changesets
label_default_columns: Numatytosios skiltys label_default_columns: Numatyti stulpeliai
label_no_change_option: (Jokio pakeitimo) label_no_change_option: (Jokio pakeitimo)
label_bulk_edit_selected_issues: Masinis pasirinktų darbų(issues) redagavimas label_bulk_edit_selected_issues: Masinis pasirinktų darbų(issues) redagavimas
label_theme: Tema label_theme: Tema
@ -460,6 +563,25 @@ label_user_mail_no_self_notified: "Nenoriu būti informuotas apie pakeitimus, ku
label_registration_activation_by_email: "paskyros aktyvacija per e-paštą" label_registration_activation_by_email: "paskyros aktyvacija per e-paštą"
label_registration_manual_activation: "rankinė paskyros aktyvacija" label_registration_manual_activation: "rankinė paskyros aktyvacija"
label_registration_automatic_activation: "automatinė paskyros aktyvacija" label_registration_automatic_activation: "automatinė paskyros aktyvacija"
label_display_per_page: '%s įrašų puslapyje'
label_age: Amžius
label_change_properties: Pakeisti nustatymus
label_general: Bendri
label_more: Daugiau
label_scm: SCM
label_plugins: Plugins
label_ldap_authentication: LDAP autentifikacija
label_downloads_abbr: siunt.
label_optional_description: Apibūdinimas (laisvai pasirenkamas)
label_add_another_file: Pridėti kitą bylą
label_preferences: Savybės
label_chronological_order: Chronologine tvarka
label_reverse_chronological_order: Atbuline chronologine tvarka
label_planning: Planavimas
label_incoming_emails: Įeinantys laiškai
label_generate_key: Generuoti raktą
label_issue_watchers: Stebėtojai
label_example: Pavizdys
button_login: Registruotis button_login: Registruotis
button_submit: Pateikti button_submit: Pateikti
@ -496,6 +618,9 @@ button_rename: Pervadinti
button_change_password: Pakeisti slaptažodį button_change_password: Pakeisti slaptažodį
button_copy: Kopijuoti button_copy: Kopijuoti
button_annotate: Rašyti pastabą button_annotate: Rašyti pastabą
button_update: Atnaujinti
button_configure: Konfigūruoti
button_quote: Cituoti
status_active: aktyvus status_active: aktyvus
status_registered: užregistruotas status_registered: užregistruotas
@ -505,6 +630,7 @@ text_select_mail_notifications: Išrinkite veiksmus, apie kuriuos būtų praneš
text_regexp_info: pvz. ^[A-Z0-9]+$ text_regexp_info: pvz. ^[A-Z0-9]+$
text_min_max_length_info: 0 reiškia jokių apribojimų text_min_max_length_info: 0 reiškia jokių apribojimų
text_project_destroy_confirmation: Ar esate įsitikinęs, kad jūs norite pašalinti šį projektą ir visus susijusius duomenis? text_project_destroy_confirmation: Ar esate įsitikinęs, kad jūs norite pašalinti šį projektą ir visus susijusius duomenis?
text_subprojects_destroy_warning: 'Šis(ie) subprojektas(ai): %s taip pat bus ištrintas(i).'
text_workflow_edit: Išrinkite vaidmenį ir pėdsekį, kad redaguotumėte darbų eigą text_workflow_edit: Išrinkite vaidmenį ir pėdsekį, kad redaguotumėte darbų eigą
text_are_you_sure: Ar esate įsitikinęs? text_are_you_sure: Ar esate įsitikinęs?
text_journal_changed: pakeistas iš %s į %s text_journal_changed: pakeistas iš %s į %s
@ -528,6 +654,24 @@ text_issue_category_destroy_question: Kai kurie darbai (%d) yra paskirti šiai k
text_issue_category_destroy_assignments: Pašalinti kategorijos užduotis text_issue_category_destroy_assignments: Pašalinti kategorijos užduotis
text_issue_category_reassign_to: Iš naujo priskirti darbus šiai kategorijai text_issue_category_reassign_to: Iš naujo priskirti darbus šiai kategorijai
text_user_mail_option: "neišrinktiems projektams, jūs tiktai gausite pranešimus apie įvykius, kuriuos jūs stebite, arba į kuriuos esate įtrauktas (pvz. darbai, jūs esate autorius ar įgaliotinis)." text_user_mail_option: "neišrinktiems projektams, jūs tiktai gausite pranešimus apie įvykius, kuriuos jūs stebite, arba į kuriuos esate įtrauktas (pvz. darbai, jūs esate autorius ar įgaliotinis)."
text_no_configuration_data: "Vaidmenys, pėdsekiai, darbų būsenos ir darbų eiga dar nebuvo konfigūruoti.\nGriežtai rekomenduojam užkrauti numatytąją(default)konfiguraciją. Užkrovus, galėsite ją modifikuoti."
text_load_default_configuration: Užkrauti numatytąj konfiguraciją
text_status_changed_by_changeset: Pakeista %s revizijoi.
text_issues_destroy_confirmation: 'Ar jūs tikrai norite panaikinti pažimėtą(us) darbą(us)?'
text_select_project_modules: 'Parinkite modulius, kuriuos norite naudoti šiame projekte:'
text_default_administrator_account_changed: Administratoriaus numatyta paskyra pakeista
text_file_repository_writable: Į rinkmenu saugyklą galima saugoti (RW)
text_rmagick_available: RMagick pasiekiamas (pasirinktinai)
text_destroy_time_entries_question: Naikinamam darbui paskelbta %.02f valandų. Ką jūs noryte su jomis daryti?
text_destroy_time_entries: Ištrinti paskelbtas valandas
text_assign_time_entries_to_project: Priskirti valandas prie projekto
text_reassign_time_entries: 'Priskirti paskelbtas valandas šiam darbui:'
text_user_wrote: '%s parašė:'
text_enumeration_destroy_question: '%d objektai priskirti šiai reikšmei.'
text_enumeration_category_reassign_to: 'Priskirti juos šiai reikšmei:'
text_email_delivery_not_configured: "Email pristatymas nesukonfigūruotas , ir perspėjimai neaktyvus.\nSukonfigūruokyte savo SMTP serverį byloje config/email.yml ir perleiskyte programą kad pritaikyti pakeitymus."
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
text_diff_truncated: "... Šis diff'as nukarpitas, todėl kad jis viršijo maksimalu rodoma eilučiu skaičiu."
default_role_manager: Vadovas default_role_manager: Vadovas
default_role_developper: Projektuotojas default_role_developper: Projektuotojas
@ -554,147 +698,3 @@ default_activity_development: Vystymas
enumeration_issue_priorities: Darbo prioritetai enumeration_issue_priorities: Darbo prioritetai
enumeration_doc_categories: Dokumento kategorijos enumeration_doc_categories: Dokumento kategorijos
enumeration_activities: Veiklos (laiko sekimas) enumeration_activities: Veiklos (laiko sekimas)
label_display_per_page: '%s įrašų puslapyje'
setting_per_page_options: Įrašų puslapyje nustatimas
notice_default_data_loaded: Numatytoji konfiguracija sėkmingai užkrauta.
label_age: Amžius
label_general: Bendri
button_update: Atnaujinti
setting_issues_export_limit: Darbų eksportavimo limitas
label_change_properties: Pakeisti nustatymus
text_load_default_configuration: Užkrauti numatytąj konfiguraciją
text_no_configuration_data: "Vaidmenys, pėdsekiai, darbų būsenos ir darbų eiga dar nebuvo konfigūruoti.\nGriežtai rekomenduojam užkrauti numatytąją(default)konfiguraciją. Užkrovus, galėsite ją modifikuoti."
label_repository_plural: Saugiklos
error_can_t_load_default_data: "Numatytoji konfiguracija negali būti užkrauta: %s"
label_associated_revisions: susijusios revizijos
setting_user_format: Vartotojo atvaizdavimo formatas
text_status_changed_by_changeset: Pakeista %s revizijoi.
label_more: Daugiau
text_issues_destroy_confirmation: 'Ar jūs tikrai norite panaikinti pažimėtą(us) darbą(us)?'
label_scm: SCM
text_select_project_modules: 'Parinkite modulius, kuriuos norite naudoti šiame projekte:'
label_issue_added: Darbas pridėtas
label_issue_updated: Darbas atnaujintas
label_document_added: Dokumentas pridėtas
label_message_posted: Pranešimas pridėtas
label_file_added: Byla pridėta
label_news_added: Naujiena pridėta
project_module_boards: Forumai
project_module_issue_tracking: Darbu pėdsekys
project_module_wiki: Wiki
project_module_files: Rinkmenos
project_module_documents: Dokumentai
project_module_repository: Saugykla
project_module_news: Žinios
project_module_time_tracking: Laiko pėdsekys
text_file_repository_writable: Į rinkmenu saugyklą galima saugoti (RW)
text_default_administrator_account_changed: Administratoriaus numatyta paskyra pakeista
text_rmagick_available: RMagick pasiekiamas (pasirinktinai)
button_configure: Konfiguruoti
label_plugins: Plugins
label_ldap_authentication: LDAP autentifikacija
label_downloads_abbr: siunt.
label_this_month: šis menuo
label_last_n_days: paskutinių %d dienų
label_all_time: visas laikas
label_this_year: šiemet
label_date_range: Dienų diapazonas
label_last_week: paskutinė savaitė
label_yesterday: vakar
label_last_month: paskutinis menuo
label_add_another_file: Pridėti kitą bylą
label_optional_description: Apibūdinimas (laisvai pasirenkamas)
text_destroy_time_entries_question: Naikinamam darbui paskelbta %.02f valandų. Ką jūs noryte su jomis daryti?
error_issue_not_found_in_project: 'Darbas nerastas arba nesurištas su šiuo projektu'
text_assign_time_entries_to_project: Priskirti valandas prie projekto
text_destroy_time_entries: Ištrinti paskelbtas valandas
text_reassign_time_entries: 'Priskirti paskelbtas valandas šiam darbui:'
setting_activity_days_default: Atvaizduojamos dienos projekto veikloje
label_chronological_order: Chronologine tvarka
field_comments_sorting: rodyti komentarus
label_reverse_chronological_order: Atbuline chronologine tvarka
label_preferences: Savybės
setting_display_subprojects_issues: Pagal nutylėjimą rodyti subprojektų darbus pagrindiniame projekte
label_overall_activity: Visa veikla
setting_default_projects_public: Naujas projektas viešas pagal nutylėjimą
error_scm_annotate: "Įrašas neegzituoja arba negalima jo atvaizduoti."
label_planning: Planavimas
text_subprojects_destroy_warning: 'Šis(ie) subprojektas(ai): %s taip pat bus ištrintas(i).'
label_and_its_subprojects: %s projektas ir jo subprojektai
mail_body_reminder: "%d darbas(ai), kurie yra jums priskirti, baigiasi po %d dienų(os):"
mail_subject_reminder: "%d darbas(ai) po kelių dienų"
text_user_wrote: '%s parašė:'
label_duplicated_by: susiejo
setting_enabled_scm: Įgalintas SCM
text_enumeration_category_reassign_to: 'Priskirti juos šiai reikšmei:'
text_enumeration_destroy_question: '%d objektai priskirti šiai reikšmei.'
label_incoming_emails: Įeinantys laiškai
label_generate_key: Generuoti raktą
setting_mail_handler_api_enabled: Įgalinti WS įeinantiems laiškams
setting_mail_handler_api_key: API raktas
text_email_delivery_not_configured: "Email pristatymas nesukonfigūruotas , ir perspėjimai neaktyvus.\nSukonfigūruokyte savo SMTP serverį byloje config/email.yml ir perleiskyte programą kad pritaikyti pakeitymus."
field_parent_title: Aukštesnio lygio puslapis
label_issue_watchers: Stebetojai
setting_commit_logs_encoding: Commit pranėšimų koduotė
setting_sequential_project_identifiers: Generate sequential project identifiers
button_quote: Cituoti
notice_unable_delete_version: Neimanoma panaikinti versiją
label_renamed: pervardintas
label_copied: nukopijuotas
setting_plain_text_mail: plain text only (no HTML)
permission_view_files: View files
permission_edit_issues: Edit issues
permission_edit_own_time_entries: Edit own time logs
permission_manage_public_queries: Manage public queries
permission_add_issues: Add issues
permission_log_time: Log spent time
permission_view_changesets: View changesets
permission_view_time_entries: View spent time
permission_manage_versions: Manage versions
permission_manage_wiki: Manage wiki
permission_manage_categories: Manage issue categories
permission_protect_wiki_pages: Protect wiki pages
permission_comment_news: Comment news
permission_delete_messages: Delete messages
permission_select_project_modules: Select project modules
permission_manage_documents: Manage documents
permission_edit_wiki_pages: Edit wiki pages
permission_add_issue_watchers: Add watchers
permission_view_gantt: View gantt chart
permission_move_issues: Move issues
permission_manage_issue_relations: Manage issue relations
permission_delete_wiki_pages: Delete wiki pages
permission_manage_boards: Manage boards
permission_delete_wiki_pages_attachments: Delete attachments
permission_view_wiki_edits: View wiki history
permission_add_messages: Post messages
permission_view_messages: View messages
permission_manage_files: Manage files
permission_edit_issue_notes: Edit notes
permission_manage_news: Manage news
permission_view_calendar: View calendrier
permission_manage_members: Manage members
permission_edit_messages: Edit messages
permission_delete_issues: Delete issues
permission_view_issue_watchers: View watchers list
permission_manage_repository: Manage repository
permission_commit_access: Commit access
permission_browse_repository: Browse repository
permission_view_documents: View documents
permission_edit_project: Edit project
permission_add_issue_notes: Add notes
permission_save_queries: Save queries
permission_view_wiki_pages: View wiki
permission_rename_wiki_pages: Rename wiki pages
permission_edit_time_entries: Edit time logs
permission_edit_own_issue_notes: Edit own notes
setting_gravatar_enabled: Use Gravatar user icons
label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
label_user_activity: "%s's activity"
label_updated_time_by: Updated by %s %s ago
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
setting_diff_max_lines_displayed: Max number of diff lines displayed

View File

@ -712,6 +712,6 @@ text_wiki_destroy_confirmation: Jesteś pewien, że chcesz usunąć to wiki i ca
text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu
label_user_activity: "Aktywność: %s" label_user_activity: "Aktywność: %s"
label_updated_time_by: Updated by %s %s ago label_updated_time_by: Uaktualnione przez %s %s temu
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_diff_truncated: '... Ten plik różnic został przycięty ponieważ jest zbyt długi.'
setting_diff_max_lines_displayed: Max number of diff lines displayed setting_diff_max_lines_displayed: Maksymalna liczba linii różnicy do pokazania

View File

@ -557,7 +557,7 @@ label_theme: 畫面主題
label_default: 預設 label_default: 預設
label_search_titles_only: 僅搜尋標題 label_search_titles_only: 僅搜尋標題
label_user_mail_option_all: "提醒與我的專案有關的所有事件" label_user_mail_option_all: "提醒與我的專案有關的所有事件"
label_user_mail_option_selected: "只醒我所選擇專案中的事件..." label_user_mail_option_selected: "只醒我所選擇專案中的事件..."
label_user_mail_option_none: "只提醒我觀察中或參與中的事件" label_user_mail_option_none: "只提醒我觀察中或參與中的事件"
label_user_mail_no_self_notified: "不提醒我自己所做的變更" label_user_mail_no_self_notified: "不提醒我自己所做的變更"
label_registration_activation_by_email: 透過電子郵件啟用帳戶 label_registration_activation_by_email: 透過電子郵件啟用帳戶

View File

@ -435,13 +435,16 @@ class RedCloth3 < String
# #
# Flexible HTML escaping # Flexible HTML escaping
# #
def htmlesc( str, mode ) def htmlesc( str, mode=:Quotes )
if str
str.gsub!( '&', '&amp;' ) str.gsub!( '&', '&amp;' )
str.gsub!( '"', '&quot;' ) if mode != :NoQuotes str.gsub!( '"', '&quot;' ) if mode != :NoQuotes
str.gsub!( "'", '&#039;' ) if mode == :Quotes str.gsub!( "'", '&#039;' ) if mode == :Quotes
str.gsub!( '<', '&lt;') str.gsub!( '<', '&lt;')
str.gsub!( '>', '&gt;') str.gsub!( '>', '&gt;')
end end
str
end
# Search and replace for Textile glyphs (quotes, dashes, other symbols) # Search and replace for Textile glyphs (quotes, dashes, other symbols)
def pgl( text ) def pgl( text )
@ -914,6 +917,7 @@ class RedCloth3 < String
def inline_textile_image( text ) def inline_textile_image( text )
text.gsub!( IMAGE_RE ) do |m| text.gsub!( IMAGE_RE ) do |m|
stln,algn,atts,url,title,href,href_a1,href_a2 = $~[1..8] stln,algn,atts,url,title,href,href_a1,href_a2 = $~[1..8]
htmlesc title
atts = pba( atts ) atts = pba( atts )
atts = " src=\"#{ url }\"#{ atts }" atts = " src=\"#{ url }\"#{ atts }"
atts << " title=\"#{ title }\"" if title atts << " title=\"#{ title }\"" if title

View File

@ -63,7 +63,7 @@ module Redmine
logger.debug "<cvs> entries '#{path}' with identifier '#{identifier}'" logger.debug "<cvs> entries '#{path}' with identifier '#{identifier}'"
path_with_project="#{url}#{with_leading_slash(path)}" path_with_project="#{url}#{with_leading_slash(path)}"
entries = Entries.new entries = Entries.new
cmd = "#{CVS_BIN} -d #{root_url} rls -ed" cmd = "#{CVS_BIN} -d #{root_url} rls -e"
cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier
cmd << " #{shell_quote path_with_project}" cmd << " #{shell_quote path_with_project}"
shellout(cmd) do |io| shellout(cmd) do |io|

View File

@ -55,9 +55,10 @@ h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; bord
#sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; } #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
* html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; } * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
#content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; height:600px; min-height: 600px;} #content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
* html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;} * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
html>body #content { height: auto; min-height: 600px; overflow: auto; } html>body #content { min-height: 600px; }
* html body #content { height: 600px; } /* IE */
#main.nosidebar #sidebar{ display: none; } #main.nosidebar #sidebar{ display: none; }
#main.nosidebar #content{ width: auto; border-right: 0; } #main.nosidebar #content{ width: auto; border-right: 0; }

View File

@ -0,0 +1,22 @@
x-sender: <jsmith@somenet.foo>
x-receiver: <redmine@somenet.foo>
Received: from [127.0.0.1] ([127.0.0.1]) by somenet.foo with Quick 'n Easy Mail Server SMTP (1.0.0.0);
Sun, 14 Dec 2008 16:18:06 GMT
Message-ID: <494531B9.1070709@somenet.foo>
Date: Sun, 14 Dec 2008 17:18:01 +0100
From: "John Smith" <jsmith@somenet.foo>
User-Agent: Thunderbird 2.0.0.18 (Windows/20081105)
MIME-Version: 1.0
To: redmine@somenet.foo
Subject: HTML email
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
This is a <b>html-only</b> email.<br>
</body>
</html>

View File

@ -258,4 +258,9 @@ class WikiControllerTest < Test::Unit::TestCase
post :destroy_attachment, :id => 1, :page => 'Page_with_an_inline_image', :attachment_id => 3 post :destroy_attachment, :id => 1, :page => 'Page_with_an_inline_image', :attachment_id => 3
end end
end end
def test_history_of_non_existing_page_should_return_404
get :history, :id => 1, :page => 'Unknown_page'
assert_response 404
end
end end

View File

@ -70,6 +70,8 @@ class ApplicationHelperTest < HelperTestCase
'floating !>http://foo.bar/image.jpg!' => 'floating <div style="float:right"><img src="http://foo.bar/image.jpg" alt="" /></div>', 'floating !>http://foo.bar/image.jpg!' => 'floating <div style="float:right"><img src="http://foo.bar/image.jpg" alt="" /></div>',
'with class !(some-class)http://foo.bar/image.jpg!' => 'with class <img src="http://foo.bar/image.jpg" class="some-class" alt="" />', 'with class !(some-class)http://foo.bar/image.jpg!' => 'with class <img src="http://foo.bar/image.jpg" class="some-class" alt="" />',
'with style !{width:100px;height100px}http://foo.bar/image.jpg!' => 'with style <img src="http://foo.bar/image.jpg" style="width:100px;height100px;" alt="" />', 'with style !{width:100px;height100px}http://foo.bar/image.jpg!' => 'with style <img src="http://foo.bar/image.jpg" style="width:100px;height100px;" alt="" />',
'with title !http://foo.bar/image.jpg(This is a title)!' => 'with title <img src="http://foo.bar/image.jpg" title="This is a title" alt="This is a title" />',
'with title !http://foo.bar/image.jpg(This is a double-quoted "title")!' => 'with title <img src="http://foo.bar/image.jpg" title="This is a double-quoted &quot;title&quot;" alt="This is a double-quoted &quot;title&quot;" />',
} }
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) } to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }
end end

View File

@ -190,4 +190,11 @@ class IssueTest < Test::Unit::TestCase
assert_nil Issue.find_by_id(1) assert_nil Issue.find_by_id(1)
assert_nil TimeEntry.find_by_issue_id(1) assert_nil TimeEntry.find_by_issue_id(1)
end end
def test_overdue
assert Issue.new(:due_date => 1.day.ago.to_date).overdue?
assert !Issue.new(:due_date => Date.today).overdue?
assert !Issue.new(:due_date => 1.day.from_now.to_date).overdue?
assert !Issue.new(:due_date => nil).overdue?
end
end end

View File

@ -130,6 +130,15 @@ class MailHandlerTest < Test::Unit::TestCase
assert_equal IssueStatus.find_by_name("Resolved"), issue.status assert_equal IssueStatus.find_by_name("Resolved"), issue.status
end end
def test_should_strip_tags_of_html_only_emails
issue = submit_email('ticket_html_only.eml', :issue => {:project => 'ecookbook'})
assert issue.is_a?(Issue)
assert !issue.new_record?
issue.reload
assert_equal 'HTML email', issue.subject
assert_equal 'This is a html-only email.', issue.description
end
private private
def submit_email(filename, options={}) def submit_email(filename, options={})

View File

@ -53,6 +53,12 @@ class RepositoryCvsTest < Test::Unit::TestCase
@repository.fetch_changesets @repository.fetch_changesets
assert_equal 5, @repository.changesets.count assert_equal 5, @repository.changesets.count
end end
def test_deleted_files_should_not_be_listed
entries = @repository.entries('sources')
assert entries.detect {|e| e.name == 'watchers_controller.rb'}
assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'}
end
else else
puts "CVS test repository NOT FOUND. Skipping unit tests !!!" puts "CVS test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end def test_fake; assert true end

View File

@ -1,7 +1,7 @@
require 'action_web_service' require 'action_web_service'
# These need to be in the load path for action_web_service to work # These need to be in the load path for action_web_service to work
Dependencies.load_paths += ["#{RAILS_ROOT}/app/apis"] ActiveSupport::Dependencies.load_paths += ["#{RAILS_ROOT}/app/apis"]
# AWS Test helpers # AWS Test helpers
require 'action_web_service/test_invoke' if ENV['RAILS_ENV'] && ENV['RAILS_ENV'] =~ /^test/ require 'action_web_service/test_invoke' if ENV['RAILS_ENV'] && ENV['RAILS_ENV'] =~ /^test/

View File

@ -97,8 +97,8 @@ module ActionController
"Unknown options: #{unknown_option_keys.join(', ')}" unless "Unknown options: #{unknown_option_keys.join(', ')}" unless
unknown_option_keys.empty? unknown_option_keys.empty?
options[:singular_name] ||= Inflector.singularize(collection_id.to_s) options[:singular_name] ||= ActiveSupport::Inflector.singularize(collection_id.to_s)
options[:class_name] ||= Inflector.camelize(options[:singular_name]) options[:class_name] ||= ActiveSupport::Inflector.camelize(options[:singular_name])
end end
# Returns a paginator and a collection of Active Record model instances # Returns a paginator and a collection of Active Record model instances

View File

@ -140,4 +140,4 @@ module Engines::RailsExtensions::Dependencies
end end
end end
Dependencies.send :include, Engines::RailsExtensions::Dependencies ActiveSupport::Dependencies.send :include, Engines::RailsExtensions::Dependencies