Merge branch 'unstable' into ticket/unstable/123-journalized
Conflicts: test/unit/journal_test.rb vendor/plugins/acts_as_journalized/lib/redmine/acts/journalized/permissions.rb
This commit is contained in:
commit
216619d376
|
@ -24,3 +24,6 @@
|
|||
/vendor/rails
|
||||
*.rbc
|
||||
doc/app
|
||||
/.bundle
|
||||
/Gemfile.lock
|
||||
/.rvmrc*
|
||||
|
|
|
@ -27,3 +27,7 @@ vendor/rails
|
|||
*.rbc
|
||||
.svn/
|
||||
.git/
|
||||
doc/app
|
||||
/.bundle
|
||||
/Gemfile.lock
|
||||
/.rvmrc*
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
source :rubygems
|
||||
|
||||
gem "rails", "2.3.11"
|
||||
|
||||
gem "coderay", "~> 0.9.7"
|
||||
gem "i18n", "~> 0.4.2"
|
||||
gem "rubytree", "~> 0.5.2", :require => 'tree'
|
||||
|
||||
group :test do
|
||||
gem 'shoulda', '~> 2.10.3'
|
||||
gem 'edavis10-object_daddy', :require => 'object_daddy'
|
||||
gem 'mocha'
|
||||
end
|
||||
|
||||
group :openid do
|
||||
gem "ruby-openid", '~> 2.1.4', :require => 'openid'
|
||||
end
|
||||
|
||||
group :rmagick do
|
||||
gem "rmagick", "~> 1.15.17"
|
||||
end
|
||||
|
||||
# Use the commented pure ruby gems, if you have not the needed prerequisites on
|
||||
# board to compile the native ones. Note, that their use is discouraged, since
|
||||
# their integration is propbably not that well tested and their are slower in
|
||||
# orders of magnitude compared to their native counterparts. You have been
|
||||
# warned.
|
||||
#
|
||||
platforms :mri do
|
||||
group :mysql do
|
||||
gem "mysql"
|
||||
# gem "ruby-mysql"
|
||||
end
|
||||
|
||||
group :mysql2 do
|
||||
gem "mysql2", "~> 0.2.7"
|
||||
end
|
||||
|
||||
group :postgres do
|
||||
gem "pg", "~> 0.9.0"
|
||||
# gem "postgres-pr"
|
||||
end
|
||||
|
||||
group :sqlite do
|
||||
gem "sqlite3-ruby", "< 1.3", :require => "sqlite3"
|
||||
# please tell me, if you are fond of a pure ruby sqlite3 binding
|
||||
end
|
||||
end
|
||||
|
||||
platforms :jruby do
|
||||
gem "jruby-openssl"
|
||||
|
||||
group :mysql do
|
||||
gem "activerecord-jdbcmysql-adapter"
|
||||
end
|
||||
|
||||
group :postgres do
|
||||
gem "activerecord-jdbcpostgresql-adapter"
|
||||
end
|
||||
|
||||
group :sqlite do
|
||||
gem "activerecord-jdbcsqlite3-adapter"
|
||||
end
|
||||
end
|
||||
|
||||
# Load plugins' Gemfiles
|
||||
Dir.glob File.expand_path("../vendor/plugins/*/Gemfile", __FILE__) do |file|
|
||||
puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
|
||||
instance_eval File.read(file)
|
||||
end
|
4
Rakefile
4
Rakefile
|
@ -1,5 +1,5 @@
|
|||
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||
# for example lib/tasks/switchtower.rake, and they will automatically be available to Rake.
|
||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||
|
||||
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
|
||||
|
||||
|
@ -7,4 +7,4 @@ require 'rake'
|
|||
require 'rake/testtask'
|
||||
require 'rake/rdoctask'
|
||||
|
||||
require 'tasks/rails'
|
||||
require 'tasks/rails'
|
||||
|
|
|
@ -66,7 +66,7 @@ class AccountController < ApplicationController
|
|||
if token.save
|
||||
Mailer.deliver_lost_password(token)
|
||||
flash[:notice] = l(:notice_account_lost_email_sent)
|
||||
redirect_to :action => 'login'
|
||||
redirect_to :action => 'login', :back_url => home_url
|
||||
return
|
||||
end
|
||||
end
|
||||
|
|
|
@ -275,6 +275,7 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
end
|
||||
redirect_to default
|
||||
false
|
||||
end
|
||||
|
||||
def render_403(options={})
|
||||
|
|
|
@ -38,8 +38,9 @@ class CustomFieldsController < ApplicationController
|
|||
flash[:notice] = l(:notice_successful_create)
|
||||
call_hook(:controller_custom_fields_new_after_save, :params => params, :custom_field => @custom_field)
|
||||
redirect_to :action => 'index', :tab => @custom_field.class.name
|
||||
else
|
||||
@trackers = Tracker.find(:all, :order => 'position')
|
||||
end
|
||||
@trackers = Tracker.find(:all, :order => 'position')
|
||||
end
|
||||
|
||||
def edit
|
||||
|
@ -48,8 +49,9 @@ class CustomFieldsController < ApplicationController
|
|||
flash[:notice] = l(:notice_successful_update)
|
||||
call_hook(:controller_custom_fields_edit_after_save, :params => params, :custom_field => @custom_field)
|
||||
redirect_to :action => 'index', :tab => @custom_field.class.name
|
||||
else
|
||||
@trackers = Tracker.find(:all, :order => 'position')
|
||||
end
|
||||
@trackers = Tracker.find(:all, :order => 'position')
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
|
|
@ -74,10 +74,12 @@ class EnumerationsController < ApplicationController
|
|||
# No associated objects
|
||||
@enumeration.destroy
|
||||
redirect_to :action => 'index'
|
||||
return
|
||||
elsif params[:reassign_to_id]
|
||||
if reassign_to = @enumeration.class.find_by_id(params[:reassign_to_id])
|
||||
@enumeration.destroy(reassign_to)
|
||||
redirect_to :action => 'index'
|
||||
return
|
||||
end
|
||||
end
|
||||
@enumerations = @enumeration.class.find(:all) - [@enumeration]
|
||||
|
|
|
@ -65,10 +65,12 @@ class IssueCategoriesController < ApplicationController
|
|||
# No issue assigned to this category
|
||||
@category.destroy
|
||||
redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories'
|
||||
return
|
||||
elsif params[:todo]
|
||||
reassign_to = @project.issue_categories.find_by_id(params[:reassign_to_id]) if params[:todo] == 'reassign'
|
||||
@category.destroy(reassign_to)
|
||||
redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories'
|
||||
return
|
||||
end
|
||||
@categories = @project.issue_categories - [@category]
|
||||
end
|
||||
|
|
|
@ -123,6 +123,7 @@ class IssuesController < ApplicationController
|
|||
|
||||
def create
|
||||
call_hook(:controller_issues_new_before_save, { :params => params, :issue => @issue })
|
||||
IssueObserver.instance.send_notification = params[:send_notification] == '0' ? false : true
|
||||
if @issue.save
|
||||
attachments = Attachment.attach_files(@issue, params[:attachments])
|
||||
render_attachment_warning_if_needed(@issue)
|
||||
|
@ -158,7 +159,7 @@ class IssuesController < ApplicationController
|
|||
|
||||
def update
|
||||
update_issue_from_params
|
||||
|
||||
JournalObserver.instance.send_notification = params[:send_notification] == '0' ? false : true
|
||||
if @issue.save_issue_with_child_records(params, @time_entry)
|
||||
render_attachment_warning_if_needed(@issue)
|
||||
flash[:notice] = l(:notice_successful_update) unless @issue.current_journal == @journal
|
||||
|
@ -198,6 +199,7 @@ class IssuesController < ApplicationController
|
|||
journal = issue.init_journal(User.current, params[:notes])
|
||||
issue.safe_attributes = attributes
|
||||
call_hook(:controller_issues_bulk_edit_before_save, { :params => params, :issue => issue })
|
||||
JournalObserver.instance.send_notification = params[:send_notification] == '0' ? false : true
|
||||
unless issue.save
|
||||
# Keep unsaved issue ids to display them in flash error
|
||||
unsaved_issue_ids << issue.id
|
||||
|
|
|
@ -38,9 +38,10 @@ class RolesController < ApplicationController
|
|||
end
|
||||
flash[:notice] = l(:notice_successful_create)
|
||||
redirect_to :action => 'index'
|
||||
else
|
||||
@permissions = @role.setable_permissions
|
||||
@roles = Role.find :all, :order => 'builtin, position'
|
||||
end
|
||||
@permissions = @role.setable_permissions
|
||||
@roles = Role.find :all, :order => 'builtin, position'
|
||||
end
|
||||
|
||||
def edit
|
||||
|
@ -48,8 +49,9 @@ class RolesController < ApplicationController
|
|||
if request.post? and @role.update_attributes(params[:role])
|
||||
flash[:notice] = l(:notice_successful_update)
|
||||
redirect_to :action => 'index'
|
||||
else
|
||||
@permissions = @role.setable_permissions
|
||||
end
|
||||
@permissions = @role.setable_permissions
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
|
|
@ -36,16 +36,16 @@ class SettingsController < ApplicationController
|
|||
end
|
||||
flash[:notice] = l(:notice_successful_update)
|
||||
redirect_to :action => 'edit', :tab => params[:tab]
|
||||
return
|
||||
end
|
||||
@options = {}
|
||||
@options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] }
|
||||
@deliveries = ActionMailer::Base.perform_deliveries
|
||||
else
|
||||
@options = {}
|
||||
@options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] }
|
||||
@deliveries = ActionMailer::Base.perform_deliveries
|
||||
|
||||
@guessed_host_and_path = request.host_with_port.dup
|
||||
@guessed_host_and_path << ('/'+ Redmine::Utils.relative_url_root.gsub(%r{^\/}, '')) unless Redmine::Utils.relative_url_root.blank?
|
||||
@guessed_host_and_path = request.host_with_port.dup
|
||||
@guessed_host_and_path << ('/'+ Redmine::Utils.relative_url_root.gsub(%r{^\/}, '')) unless Redmine::Utils.relative_url_root.blank?
|
||||
|
||||
Redmine::Themes.rescan
|
||||
Redmine::Themes.rescan
|
||||
end
|
||||
end
|
||||
|
||||
def plugin
|
||||
|
@ -54,9 +54,10 @@ class SettingsController < ApplicationController
|
|||
Setting["plugin_#{@plugin.id}"] = params[:settings]
|
||||
flash[:notice] = l(:notice_successful_update)
|
||||
redirect_to :action => 'plugin', :id => @plugin.id
|
||||
else
|
||||
@partial = @plugin.settings[:partial]
|
||||
@settings = Setting["plugin_#{@plugin.id}"]
|
||||
end
|
||||
@partial = @plugin.settings[:partial]
|
||||
@settings = Setting["plugin_#{@plugin.id}"]
|
||||
rescue Redmine::PluginNotFound
|
||||
render_404
|
||||
end
|
||||
|
|
|
@ -28,7 +28,7 @@ module AttachmentsHelper
|
|||
end
|
||||
end
|
||||
|
||||
def to_utf8(str)
|
||||
def to_utf8_for_attachments(str)
|
||||
if str.respond_to?(:force_encoding)
|
||||
str.force_encoding('UTF-8')
|
||||
return str if str.valid_encoding?
|
||||
|
|
|
@ -289,4 +289,14 @@ module IssuesHelper
|
|||
end
|
||||
export
|
||||
end
|
||||
|
||||
def send_notification_option
|
||||
content_tag(:p,
|
||||
content_tag(:label,
|
||||
l(:label_notify_member_plural)) +
|
||||
hidden_field_tag('send_notification', '0') +
|
||||
check_box_tag('send_notification', '1', true))
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -116,7 +116,7 @@ module RepositoriesHelper
|
|||
output
|
||||
end
|
||||
|
||||
def to_utf8(str)
|
||||
def to_utf8_for_repositories(str)
|
||||
return str if str.nil?
|
||||
str = to_utf8_internal(str)
|
||||
if str.respond_to?(:force_encoding)
|
||||
|
@ -217,45 +217,44 @@ module RepositoriesHelper
|
|||
def darcs_field_tags(form, repository)
|
||||
content_tag('p', form.text_field(:url, :label => :label_darcs_path, :size => 60, :required => true, :disabled => (repository && !repository.new_record?))) +
|
||||
content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS,
|
||||
:label => 'Commit messages encoding', :required => true))
|
||||
:label => l(:setting_commit_logs_encoding), :required => true))
|
||||
end
|
||||
|
||||
def mercurial_field_tags(form, repository)
|
||||
content_tag('p', form.text_field(:url, :label => :label_mercurial_path, :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)) +
|
||||
'<br />local repository (e.g. /hgrepo, c:\hgrepo)' ) +
|
||||
content_tag('p', form.select(
|
||||
:path_encoding, [nil] + Setting::ENCODINGS,
|
||||
:label => 'Path encoding') +
|
||||
'<br />Default: UTF-8')
|
||||
'<br />' + l(:text_mercurial_repo_example)) +
|
||||
content_tag('p', form.select(:path_encoding, [nil] + Setting::ENCODINGS,
|
||||
:label => l(:label_path_encoding)) +
|
||||
'<br />' + l(:text_default_encoding))
|
||||
end
|
||||
|
||||
def git_field_tags(form, repository)
|
||||
content_tag('p', form.text_field(:url, :label => :label_git_path, :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)) +
|
||||
'<br />a bare and local repository (e.g. /gitrepo, c:\gitrepo)') +
|
||||
'<br />' + l(:text_git_repo_example)) +
|
||||
content_tag('p', form.select(
|
||||
:path_encoding, [nil] + Setting::ENCODINGS,
|
||||
:label => 'Path encoding') +
|
||||
'<br />Default: UTF-8')
|
||||
:label => l(:label_path_encoding)) +
|
||||
'<br />' + l(:text_default_encoding))
|
||||
end
|
||||
|
||||
def cvs_field_tags(form, repository)
|
||||
content_tag('p', form.text_field(:root_url, :label => :label_cvs_path, :size => 60, :required => true, :disabled => !repository.new_record?)) +
|
||||
content_tag('p', form.text_field(:url, :label => :label_cvs_module, :size => 30, :required => true, :disabled => !repository.new_record?)) +
|
||||
content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS,
|
||||
:label => 'Commit messages encoding', :required => true))
|
||||
:label => l(:setting_commit_logs_encoding), :required => true))
|
||||
end
|
||||
|
||||
def bazaar_field_tags(form, repository)
|
||||
content_tag('p', form.text_field(:url, :label => :label_bazaar_path, :size => 60, :required => true, :disabled => (repository && !repository.new_record?))) +
|
||||
content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS,
|
||||
:label => 'Commit messages encoding', :required => true))
|
||||
:label => l(:setting_commit_logs_encoding), :required => true))
|
||||
end
|
||||
|
||||
def filesystem_field_tags(form, repository)
|
||||
content_tag('p', form.text_field(:url, :label => :label_filesystem_path, :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) +
|
||||
content_tag('p', form.select(:path_encoding, [nil] + Setting::ENCODINGS,
|
||||
:label => 'Path encoding') +
|
||||
'<br />Default: UTF-8')
|
||||
:label => l(:label_path_encoding)) +
|
||||
'<br />' + l(:text_default_encoding))
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -144,7 +144,7 @@ module TimelogHelper
|
|||
headers = criterias.collect {|criteria| l(@available_criterias[criteria][:label]) }
|
||||
headers += periods
|
||||
headers << l(:label_total)
|
||||
csv << headers.collect {|c| to_utf8(c) }
|
||||
csv << headers.collect {|c| to_utf8_for_timelogs(c) }
|
||||
# Content
|
||||
report_criteria_to_csv(csv, criterias, periods, hours)
|
||||
# Total row
|
||||
|
@ -166,7 +166,7 @@ module TimelogHelper
|
|||
hours_for_value = select_hours(hours, criterias[level], value)
|
||||
next if hours_for_value.empty?
|
||||
row = [''] * level
|
||||
row << to_utf8(format_criteria_value(criterias[level], value))
|
||||
row << to_utf8_for_timelogs(format_criteria_value(criterias[level], value))
|
||||
row += [''] * (criterias.length - level - 1)
|
||||
total = 0
|
||||
periods.each do |period|
|
||||
|
@ -183,7 +183,7 @@ module TimelogHelper
|
|||
end
|
||||
end
|
||||
|
||||
def to_utf8(s)
|
||||
def to_utf8_for_timelogs(s)
|
||||
@ic ||= Iconv.new(l(:general_csv_encoding), 'UTF-8')
|
||||
begin; @ic.iconv(s.to_s); rescue; s.to_s; end
|
||||
end
|
||||
|
|
|
@ -16,7 +16,25 @@
|
|||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
class IssueObserver < ActiveRecord::Observer
|
||||
attr_accessor :send_notification
|
||||
|
||||
def after_create(issue)
|
||||
Mailer.deliver_issue_add(issue) if Setting.notified_events.include?('issue_added')
|
||||
if self.send_notification
|
||||
Mailer.deliver_issue_add(issue) if Setting.notified_events.include?('issue_added')
|
||||
end
|
||||
clear_notification
|
||||
end
|
||||
|
||||
# Wrap send_notification so it defaults to true, when it's nil
|
||||
def send_notification
|
||||
return true if @send_notification.nil?
|
||||
return @send_notification
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Need to clear the notification setting after each usage otherwise it might be cached
|
||||
def clear_notification
|
||||
@send_notification = true
|
||||
end
|
||||
end
|
||||
|
|
|
@ -131,7 +131,10 @@ class WikiPage < ActiveRecord::Base
|
|||
unless @updated_on
|
||||
if time = read_attribute(:updated_on)
|
||||
# content updated_on was eager loaded with the page
|
||||
@updated_on = Time.parse(time) rescue nil
|
||||
unless time.is_a? Time
|
||||
time = Time.parse(time) rescue nil
|
||||
end
|
||||
@updated_on = time
|
||||
else
|
||||
@updated_on = content && content.updated_on
|
||||
end
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<% else -%>
|
||||
<table class="filecontent">
|
||||
<thead>
|
||||
<tr><th colspan="3" class="filename"><%=to_utf8 table_file.file_name %></th></tr>
|
||||
<tr><th colspan="3" class="filename"><%=to_utf8_for_attachments table_file.file_name %></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% table_file.each_line do |spacing, line| %>
|
||||
|
@ -44,7 +44,7 @@
|
|||
<th class="line-num"><%= line.nb_line_left %></th>
|
||||
<th class="line-num"><%= line.nb_line_right %></th>
|
||||
<td class="line-code <%= line.type_diff %>">
|
||||
<pre><%=to_utf8 line.html_line %></pre>
|
||||
<pre><%=to_utf8_for_attachments line.html_line %></pre>
|
||||
</td>
|
||||
</tr>
|
||||
<% end -%>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<table class="filecontent syntaxhl">
|
||||
<tbody>
|
||||
<% line_num = 1 %>
|
||||
<% syntax_highlight(filename, to_utf8(content)).each_line do |line| %>
|
||||
<% syntax_highlight(filename, to_utf8_for_attachments(content)).each_line do |line| %>
|
||||
<tr><th class="line-num" id="L<%= line_num %>"><a href="#L<%= line_num %>"><%= line_num %></a></th><td class="line-code"><pre><%= line %></pre></td></tr>
|
||||
<% line_num += 1 %>
|
||||
<% end %>
|
||||
|
|
|
@ -43,6 +43,8 @@
|
|||
<%= render :partial => 'attachments/form' %>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<%= send_notification_option %>
|
||||
</div>
|
||||
|
||||
<%= f.hidden_field :lock_version %>
|
||||
|
|
|
@ -84,6 +84,7 @@
|
|||
<fieldset><legend><%= l(:field_notes) %></legend>
|
||||
<%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %>
|
||||
<%= wikitoolbar_for 'notes' %>
|
||||
<%= send_notification_option %>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<%= error_messages_for 'issue' %>
|
||||
<div class="box">
|
||||
<%= render :partial => 'issues/form', :locals => {:f => f} %>
|
||||
<%= send_notification_option %>
|
||||
</div>
|
||||
<%= submit_tag l(:button_create) %>
|
||||
<%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<h3><%=l(:label_my_account)%></h3>
|
||||
|
||||
<p><%=l(:field_login)%>: <strong><%= @user.login %></strong><br />
|
||||
<p><%=l(:field_login)%>: <strong><%= link_to_user(@user, :format => :username) %></strong><br />
|
||||
<%=l(:field_created_on)%>: <%= format_time(@user.created_on) %></p>
|
||||
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
|||
<h4><%= l(:label_api_access_key) %></h4>
|
||||
<div>
|
||||
<%= link_to_function(l(:button_show), "$('api-access-key').toggle();")%>
|
||||
<pre id='api-access-key' class='autoscroll'><%= @user.api_key %></pre>
|
||||
<pre id='api-access-key' class='autoscroll'><%= h(@user.api_key) %></pre>
|
||||
</div>
|
||||
<%= javascript_tag("$('api-access-key').hide();") %>
|
||||
<p>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<table class="filecontent annotate syntaxhl">
|
||||
<tbody>
|
||||
<% line_num = 1 %>
|
||||
<% syntax_highlight(@path, to_utf8(@annotate.content)).each_line do |line| %>
|
||||
<% syntax_highlight(@path, to_utf8_for_repositories(@annotate.content)).each_line do |line| %>
|
||||
<% revision = @annotate.revisions[line_num-1] %>
|
||||
<tr class="bloc-<%= revision.nil? ? 0 : colors[revision.identifier || revision.revision] %>">
|
||||
<th class="line-num" id="L<%= line_num %>"><a href="#L<%= line_num %>"><%= line_num %></a></th>
|
||||
|
|
|
@ -36,6 +36,15 @@ module Rails
|
|||
class Boot
|
||||
def run
|
||||
load_initializer
|
||||
|
||||
# This block was added for bundler support while following setup
|
||||
# instructions from http://gembundler.com/rails23.html
|
||||
Rails::Initializer.class_eval do
|
||||
def load_gems
|
||||
@bundler_loaded ||= Bundler.require :default, Rails.env
|
||||
end
|
||||
end
|
||||
|
||||
Rails::Initializer.run(:set_load_path)
|
||||
end
|
||||
end
|
||||
|
@ -62,8 +71,12 @@ module Rails
|
|||
gem 'rails'
|
||||
end
|
||||
rescue Gem::LoadError => load_error
|
||||
$stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
|
||||
exit 1
|
||||
if load_error.message =~ /Could not find RubyGem rails/
|
||||
STDERR.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
|
||||
exit 1
|
||||
else
|
||||
raise
|
||||
end
|
||||
end
|
||||
|
||||
class << self
|
||||
|
@ -106,60 +119,5 @@ module Rails
|
|||
end
|
||||
end
|
||||
|
||||
# TODO: Workaround for #7013 to be removed for 1.2.0
|
||||
# Loads i18n 0.4.2 before Rails loads any more recent gem
|
||||
# 0.5.0 is not compatible with the old interpolation syntax
|
||||
# Plugins will have to migrate to the new syntax for 1.2.0
|
||||
require 'rubygems'
|
||||
begin
|
||||
gem 'i18n', '0.4.2'
|
||||
rescue Gem::LoadError => load_error
|
||||
$stderr.puts %(Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`)
|
||||
exit 1
|
||||
end
|
||||
|
||||
# TODO: Workaround for rubygems > 1.5 compatibility (#133), to be removed
|
||||
# for Rails > 2.3.5
|
||||
#
|
||||
# Fixes the deprecation warning about removal of version_requirements for
|
||||
# rubygems < 1.5 and provide a workaround for rubygems >= 1.5 where that
|
||||
# method was finally removed.
|
||||
module Rails
|
||||
# See lib/gems/1.8/gems/rails-2.3.5/lib/rails/gem_dependency.rb
|
||||
class GemDependency < Gem::Dependency
|
||||
def dependencies
|
||||
return [] if framework_gem?
|
||||
return [] unless installed?
|
||||
specification.dependencies.reject do |dependency|
|
||||
dependency.type == :development
|
||||
end.map do |dependency|
|
||||
GemDependency.new(dependency.name,
|
||||
:requirement => (dependency.respond_to?(:requirement) ?
|
||||
dependency.requirement :
|
||||
dependency.version_requirements))
|
||||
end
|
||||
end
|
||||
|
||||
if method_defined?(:requirement)
|
||||
# rubygem > 1.5
|
||||
def requirement
|
||||
req = super
|
||||
req unless req == Gem::Requirement.default
|
||||
end
|
||||
# bypass passenger error
|
||||
alias :version_requirements :requirement
|
||||
else
|
||||
# rubygem < 1.5
|
||||
def requirement
|
||||
req = version_requirements
|
||||
req unless req == Gem::Requirement.default
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# working around deprecation in RubyGems 1.6
|
||||
require 'thread'
|
||||
|
||||
# All that for this:
|
||||
Rails.boot!
|
||||
|
|
|
@ -50,11 +50,8 @@ Rails::Initializer.run do |config|
|
|||
# It will automatically turn deliveries on
|
||||
config.action_mailer.perform_deliveries = false
|
||||
|
||||
config.gem 'rubytree', :lib => 'tree'
|
||||
config.gem 'coderay', :version => '~>0.9.7'
|
||||
|
||||
# Load any local configuration that is kept out of source control
|
||||
# (e.g. gems, patches).
|
||||
# (e.g. patches).
|
||||
if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
||||
instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
||||
end
|
||||
|
|
|
@ -3,14 +3,15 @@
|
|||
# In the development environment your application's code is reloaded on
|
||||
# every request. This slows down response time but is perfect for development
|
||||
# since you don't have to restart the webserver when you make code changes.
|
||||
config.cache_classes = false
|
||||
config.cache_classes = false
|
||||
|
||||
# Log error messages when you accidentally call methods on nil.
|
||||
config.whiny_nils = true
|
||||
config.whiny_nils = true
|
||||
|
||||
# Show full error reports and disable caching
|
||||
config.action_controller.consider_all_requests_local = true
|
||||
config.action_view.debug_rjs = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Don't care if the mailer can't send
|
||||
config.action_mailer.raise_delivery_errors = false
|
||||
config.action_mailer.raise_delivery_errors = false
|
|
@ -23,7 +23,3 @@ config.action_controller.session = {
|
|||
|
||||
# Skip protect_from_forgery in requests http://m.onkey.org/2007/9/28/csrf-protection-for-your-existing-rails-application
|
||||
config.action_controller.allow_forgery_protection = false
|
||||
|
||||
config.gem "shoulda", :version => "~> 2.10.3"
|
||||
config.gem "edavis10-object_daddy", :lib => "object_daddy"
|
||||
config.gem "mocha"
|
||||
|
|
|
@ -3,3 +3,4 @@ I18n.default_locale = 'en'
|
|||
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
||||
|
||||
require 'redmine'
|
||||
require 'chili_project'
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# These settings change the behavior of Rails 2 apps and will be defaults
|
||||
# for Rails 3. You can remove this initializer when Rails 3 is released.
|
||||
|
||||
if defined?(ActiveRecord)
|
||||
# Include Active Record class name as root for JSON serialized output.
|
||||
ActiveRecord::Base.include_root_in_json = true
|
||||
|
||||
# Store the full class name (including module namespace) in STI type column.
|
||||
ActiveRecord::Base.store_full_sti_class = true
|
||||
end
|
||||
|
||||
ActionController::Routing.generate_best_match = true
|
||||
|
||||
# Use ISO 8601 format for JSON serialized times and dates.
|
||||
ActiveSupport.use_standard_json_time_format = true
|
||||
|
||||
# Don't escape HTML entities in JSON, leave that for the #json_escape helper.
|
||||
# if you're including raw json in an HTML page.
|
||||
ActiveSupport.escape_html_entities_in_json = false
|
|
@ -17,7 +17,10 @@ bg:
|
|||
month_names: [~, Януари, Февруари, Март, Април, Май, Юни, Юли, Август, Септември, Октомври, Ноември, Декември]
|
||||
abbr_month_names: [~, Яну, Фев, Мар, Апр, Май, Юни, Юли, Авг, Сеп, Окт, Ное, Дек]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -267,7 +270,7 @@ bg:
|
|||
field_attr_mail: Атрибут Email
|
||||
field_onthefly: Динамично създаване на потребител
|
||||
field_start_date: Начална дата
|
||||
field_done_ratio: % Прогрес
|
||||
field_done_ratio: "% Прогрес"
|
||||
field_auth_source: Начин на оторизация
|
||||
field_hide_mail: Скрий e-mail адреса ми
|
||||
field_comments: Коментар
|
||||
|
@ -955,3 +958,8 @@ bg:
|
|||
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
|
||||
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)
|
||||
|
|
|
@ -15,7 +15,10 @@ bs:
|
|||
|
||||
month_names: [~, Januar, Februar, Mart, April, Maj, Jun, Jul, Avgust, Septembar, Oktobar, Novembar, Decembar]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, Maj, Jun, Jul, Avg, Sep, Okt, Nov, Dec]
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -256,7 +259,7 @@ bs:
|
|||
field_attr_mail: Atribut za email
|
||||
field_onthefly: 'Kreiranje korisnika "On-the-fly"'
|
||||
field_start_date: Početak
|
||||
field_done_ratio: % Realizovano
|
||||
field_done_ratio: "% Realizovano"
|
||||
field_auth_source: Mod za authentifikaciju
|
||||
field_hide_mail: Sakrij moju email adresu
|
||||
field_comments: Komentar
|
||||
|
@ -969,3 +972,8 @@ bs:
|
|||
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)
|
||||
|
|
|
@ -20,7 +20,10 @@ ca:
|
|||
month_names: [~, Gener, Febrer, Març, Abril, Maig, Juny, Juliol, Agost, Setembre, Octubre, Novembre, Desembre]
|
||||
abbr_month_names: [~, Gen, Feb, Mar, Abr, Mai, Jun, Jul, Ago, Set, Oct, Nov, Des]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -268,7 +271,7 @@ ca:
|
|||
field_attr_mail: Atribut del correu electrònic
|
||||
field_onthefly: "Creació de l'usuari «al vol»"
|
||||
field_start_date: Inici
|
||||
field_done_ratio: % realitzat
|
||||
field_done_ratio: "% realitzat"
|
||||
field_auth_source: "Mode d'autenticació"
|
||||
field_hide_mail: "Oculta l'adreça de correu electrònic"
|
||||
field_comments: Comentari
|
||||
|
@ -958,3 +961,8 @@ ca:
|
|||
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)
|
||||
|
|
|
@ -21,7 +21,10 @@ cs:
|
|||
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]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -271,7 +274,7 @@ cs:
|
|||
field_attr_mail: Email (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_comments: Komentář
|
||||
|
@ -1179,3 +1182,8 @@ cs:
|
|||
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)
|
||||
|
|
|
@ -14,7 +14,10 @@ da:
|
|||
abbr_day_names: [sø, ma, ti, 'on', to, fr, lø]
|
||||
month_names: [~, januar, februar, marts, april, maj, juni, juli, august, september, oktober, november, december]
|
||||
abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec]
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -254,7 +257,7 @@ da:
|
|||
field_attr_mail: Email attribut
|
||||
field_onthefly: løbende brugeroprettelse
|
||||
field_start_date: Start date
|
||||
field_done_ratio: % Færdig
|
||||
field_done_ratio: "% Færdig"
|
||||
field_auth_source: Sikkerhedsmetode
|
||||
field_hide_mail: Skjul min email
|
||||
field_comments: Kommentar
|
||||
|
@ -971,3 +974,8 @@ da:
|
|||
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)
|
||||
|
|
|
@ -19,7 +19,10 @@ de:
|
|||
month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
|
||||
abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez]
|
||||
# Used in date_select and datime_select.
|
||||
order: [:day, :month, :year]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -282,7 +285,7 @@ de:
|
|||
field_attr_mail: E-Mail-Attribut
|
||||
field_onthefly: On-the-fly-Benutzererstellung
|
||||
field_start_date: Beginn
|
||||
field_done_ratio: % erledigt
|
||||
field_done_ratio: "% erledigt"
|
||||
field_auth_source: Authentifizierungs-Modus
|
||||
field_hide_mail: E-Mail-Adresse nicht anzeigen
|
||||
field_comments: Kommentar
|
||||
|
@ -972,3 +975,8 @@ de:
|
|||
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)
|
||||
|
|
|
@ -19,7 +19,10 @@ el:
|
|||
month_names: [~, Ιανουάριος, Φεβρουάριος, Μάρτιος, Απρίλιος, Μάϊος, Ιούνιος, Ιούλιος, Αύγουστος, Σεπτέμβριος, Οκτώβριος, Νοέμβριος, Δεκέμβριος]
|
||||
abbr_month_names: [~, Ιαν, Φεβ, Μαρ, Απρ, Μαϊ, Ιον, Ιολ, Αυγ, Σεπ, Οκτ, Νοε, Δεκ]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -251,7 +254,7 @@ el:
|
|||
field_attr_mail: Ιδιότητα email
|
||||
field_onthefly: Άμεση δημιουργία χρήστη
|
||||
field_start_date: Εκκίνηση
|
||||
field_done_ratio: % επιτεύχθη
|
||||
field_done_ratio: "% επιτεύχθη"
|
||||
field_auth_source: Τρόπος πιστοποίησης
|
||||
field_hide_mail: Απόκρυψη διεύθυνσης email
|
||||
field_comments: Σχόλιο
|
||||
|
@ -955,3 +958,8 @@ el:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@ en-GB:
|
|||
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -272,7 +275,7 @@ en-GB:
|
|||
field_attr_mail: Email attribute
|
||||
field_onthefly: On-the-fly user creation
|
||||
field_start_date: Start date
|
||||
field_done_ratio: % Done
|
||||
field_done_ratio: "% Done"
|
||||
field_auth_source: Authentication mode
|
||||
field_hide_mail: Hide my email address
|
||||
field_comments: Comment
|
||||
|
@ -959,3 +962,8 @@ en-GB:
|
|||
label_mercurial_path: Root directory
|
||||
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
|
||||
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
|
||||
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)
|
||||
|
|
|
@ -17,7 +17,10 @@ en:
|
|||
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -268,7 +271,7 @@ en:
|
|||
field_attr_mail: Email attribute
|
||||
field_onthefly: On-the-fly user creation
|
||||
field_start_date: Start date
|
||||
field_done_ratio: % Done
|
||||
field_done_ratio: "% Done"
|
||||
field_auth_source: Authentication mode
|
||||
field_hide_mail: Hide my email address
|
||||
field_comments: Comment
|
||||
|
@ -805,6 +808,8 @@ en:
|
|||
label_filesystem_path: Root directory
|
||||
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
|
||||
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
|
||||
label_notify_member_plural: Email issue updates
|
||||
label_path_encoding: Path encoding
|
||||
|
||||
button_login: Login
|
||||
button_submit: Submit
|
||||
|
@ -925,6 +930,9 @@ en:
|
|||
text_zoom_out: Zoom out
|
||||
text_powered_by: "Powered by %{link}"
|
||||
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_mercurial_repo_example: "local repository (e.g. /hgrepo, c:\hgrepo)"
|
||||
text_git_repo_example: "a bare and local repository (e.g. /gitrepo, c:\gitrepo)"
|
||||
|
||||
default_role_manager: Manager
|
||||
default_role_developer: Developer
|
||||
|
|
|
@ -159,7 +159,10 @@ es:
|
|||
month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Setiembre, Octubre, Noviembre, Diciembre]
|
||||
abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Set, Oct, Nov, Dic]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -266,7 +269,7 @@ es:
|
|||
field_default_value: Estado por defecto
|
||||
field_delay: Retraso
|
||||
field_description: Descripción
|
||||
field_done_ratio: % Realizado
|
||||
field_done_ratio: "% Realizado"
|
||||
field_downloads: Descargas
|
||||
field_due_date: Fecha fin
|
||||
field_estimated_hours: Tiempo estimado
|
||||
|
@ -992,3 +995,8 @@ es:
|
|||
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)
|
||||
|
|
|
@ -20,7 +20,10 @@ eu:
|
|||
month_names: [~, Urtarrila, Otsaila, Martxoa, Apirila, Maiatza, Ekaina, Uztaila, Abuztua, Iraila, Urria, Azaroa, Abendua]
|
||||
abbr_month_names: [~, Urt, Ots, Mar, Api, Mai, Eka, Uzt, Abu, Ira, Urr, Aza, Abe]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -959,3 +962,8 @@ eu:
|
|||
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)
|
||||
|
|
|
@ -17,7 +17,10 @@ fa:
|
|||
month_names: [~, ژانویه, فوریه, مارس, آوریل, مه, ژوئن, ژوئیه, اوت, سپتامبر, اکتبر, نوامبر, دسامبر]
|
||||
abbr_month_names: [~, ژان, فور, مار, آور, مه, ژوئن, ژوئیه, اوت, سپت, اکت, نوا, دسا]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -958,3 +961,8 @@ fa:
|
|||
text_powered_by: Powered by %{link}
|
||||
default_role_non_member: Non member
|
||||
label_mercurial_path: Root directory
|
||||
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)
|
||||
|
|
|
@ -13,7 +13,10 @@ fi:
|
|||
abbr_day_names: [Su, Ma, Ti, Ke, To, Pe, La]
|
||||
month_names: [~, Tammikuu, Helmikuu, Maaliskuu, Huhtikuu, Toukokuu, Kesäkuu, Heinäkuu, Elokuu, Syyskuu, Lokakuu, Marraskuu, Joulukuu]
|
||||
abbr_month_names: [~, Tammi, Helmi, Maalis, Huhti, Touko, Kesä, Heinä, Elo, Syys, Loka, Marras, Joulu]
|
||||
order: [:day, :month, :year]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -262,7 +265,7 @@ fi:
|
|||
field_attr_mail: Sähköpostinmääre
|
||||
field_onthefly: Automaattinen käyttäjien luonti
|
||||
field_start_date: Alku
|
||||
field_done_ratio: % Tehty
|
||||
field_done_ratio: "% Tehty"
|
||||
field_auth_source: Varmennusmuoto
|
||||
field_hide_mail: Piiloita sähköpostiosoitteeni
|
||||
field_comments: Kommentti
|
||||
|
@ -976,3 +979,8 @@ fi:
|
|||
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)
|
||||
|
|
|
@ -17,7 +17,10 @@ fr:
|
|||
abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
|
||||
month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
|
||||
abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.]
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -274,7 +277,7 @@ fr:
|
|||
field_attr_mail: Attribut Email
|
||||
field_onthefly: Création des utilisateurs à la volée
|
||||
field_start_date: Début
|
||||
field_done_ratio: % réalisé
|
||||
field_done_ratio: "% réalisé"
|
||||
field_auth_source: Mode d'authentification
|
||||
field_hide_mail: Cacher mon adresse mail
|
||||
field_comments: Commentaire
|
||||
|
@ -973,3 +976,8 @@ fr:
|
|||
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_notify_member_plural: Email issue updates
|
||||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
|
|
|
@ -55,7 +55,10 @@ gl:
|
|||
abbr_day_names: [Dom, Lun, Mar, Mer, Xov, Ven, Sab]
|
||||
month_names: [~, Xaneiro, Febreiro, Marzo, Abril, Maio, Xunio, Xullo, Agosto, Setembro, Outubro, Novembro, Decembro]
|
||||
abbr_month_names: [~, Xan, Feb, Maz, Abr, Mai, Xun, Xul, Ago, Set, Out, Nov, Dec]
|
||||
order: [:day, :month, :year]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -243,7 +246,7 @@ gl:
|
|||
field_default_value: Estado por defecto
|
||||
field_delay: Retraso
|
||||
field_description: Descrición
|
||||
field_done_ratio: % Realizado
|
||||
field_done_ratio: "% Realizado"
|
||||
field_downloads: Descargas
|
||||
field_due_date: Data fin
|
||||
field_estimated_hours: Tempo estimado
|
||||
|
@ -967,3 +970,8 @@ gl:
|
|||
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)
|
||||
|
|
|
@ -15,7 +15,10 @@ he:
|
|||
abbr_day_names: ["א'", "ב'", "ג'", "ד'", "ה'", "ו'", "ש'"]
|
||||
month_names: [~, ינואר, פברואר, מרץ, אפריל, מאי, יוני, יולי, אוגוסט, ספטמבר, אוקטובר, נובמבר, דצמבר]
|
||||
abbr_month_names: [~, יאנ, פבר, מרץ, אפר, מאי, יונ, יול, אוג, ספט, אוק, נוב, דצמ]
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -163,7 +166,7 @@ he:
|
|||
notice_email_error: "ארעה שגיאה בעת שליחת הדואל (%{value})"
|
||||
notice_feeds_access_key_reseted: מפתח ה־RSS שלך אופס.
|
||||
notice_api_access_key_reseted: מפתח הגישה שלך ל־API אופס.
|
||||
notice_failed_to_save_issues: "נכשרת בשמירת %{count} נושא\ים ב %{total} נבחרו: %{ids}."
|
||||
notice_failed_to_save_issues: "נכשרת בשמירת %{count} נושאים ב %{total} נבחרו: %{ids}."
|
||||
notice_failed_to_save_members: "כשלון בשמירת חבר(ים): %{errors}."
|
||||
notice_no_issue_selected: "לא נבחר אף נושא! בחר בבקשה את הנושאים שברצונך לערוך."
|
||||
notice_account_pending: "החשבון שלך נוצר ועתה מחכה לאישור מנהל המערכת."
|
||||
|
@ -270,7 +273,7 @@ he:
|
|||
field_attr_mail: תכונת דוא"ל
|
||||
field_onthefly: יצירת משתמשים זריזה
|
||||
field_start_date: תאריך התחלה
|
||||
field_done_ratio: % גמור
|
||||
field_done_ratio: "% גמור"
|
||||
field_auth_source: מקור הזדהות
|
||||
field_hide_mail: החבא את כתובת הדוא"ל שלי
|
||||
field_comments: הערות
|
||||
|
@ -845,7 +848,7 @@ he:
|
|||
text_regexp_info: כגון. ^[A-Z0-9]+$
|
||||
text_min_max_length_info: 0 משמעו ללא הגבלות
|
||||
text_project_destroy_confirmation: האם אתה בטוח שברצונך למחוק את הפרויקט ואת כל המידע הקשור אליו?
|
||||
text_subprojects_destroy_warning: "תת־הפרויקט\ים: %{value} ימחקו גם כן."
|
||||
text_subprojects_destroy_warning: "תת־הפרויקטים: %{value} ימחקו גם כן."
|
||||
text_workflow_edit: בחר תפקיד וסיווג כדי לערוך את זרימת העבודה
|
||||
text_are_you_sure: האם אתה בטוח?
|
||||
text_are_you_sure_with_children: האם למחוק את הנושא ואת כל בניו?
|
||||
|
@ -875,7 +878,7 @@ he:
|
|||
text_no_configuration_data: "לא הוגדרה תצורה עבור תפקידים, סיווגים, מצבי נושא וזרימת עבודה.\nמומלץ מאד לטעון את תצורת ברירת המחדל. תוכל לשנותה מאוחר יותר."
|
||||
text_load_default_configuration: טען את אפשרויות ברירת המחדל
|
||||
text_status_changed_by_changeset: "הוחל בסדרת השינויים %{value}."
|
||||
text_issues_destroy_confirmation: 'האם אתה בטוח שברצונך למחוק את הנושא\ים?'
|
||||
text_issues_destroy_confirmation: 'האם אתה בטוח שברצונך למחוק את הנושאים?'
|
||||
text_select_project_modules: 'בחר מודולים להחיל על פרויקט זה:'
|
||||
text_default_administrator_account_changed: מנהל המערכת ברירת המחדל שונה
|
||||
text_file_repository_writable: מאגר הקבצים ניתן לכתיבה
|
||||
|
@ -960,3 +963,8 @@ he:
|
|||
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)
|
||||
|
|
|
@ -19,7 +19,10 @@ hr:
|
|||
month_names: [~, Sijecanj, Veljaca, Ožujak, Travanj, Svibanj, Lipanj, Srpanj, Kolovoz, Rujan, Listopad, Studeni, Prosinac]
|
||||
abbr_month_names: [~, Sij, Velj, Ožu, Tra, Svi, Lip, Srp, Kol, Ruj, List, Stu, Pro]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -257,7 +260,7 @@ hr:
|
|||
field_attr_mail: Atribut e-pošte
|
||||
field_onthefly: "Izrada korisnika \"u hodu\""
|
||||
field_start_date: Pocetak
|
||||
field_done_ratio: % Učinjeno
|
||||
field_done_ratio: "% Učinjeno"
|
||||
field_auth_source: Vrsta prijavljivanja
|
||||
field_hide_mail: Sakrij moju adresu e-pošte
|
||||
field_comments: Komentar
|
||||
|
@ -962,3 +965,8 @@ hr:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@
|
|||
abbr_day_names: [v., h., k., sze., cs., p., szo.]
|
||||
month_names: [~, január, február, március, április, május, június, július, augusztus, szeptember, október, november, december]
|
||||
abbr_month_names: [~, jan., febr., márc., ápr., máj., jún., júl., aug., szept., okt., nov., dec.]
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -974,3 +977,8 @@
|
|||
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)
|
||||
|
|
|
@ -14,7 +14,10 @@ id:
|
|||
|
||||
month_names: [~, Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, Mei, Jun, Jul, Agu, Sep, Okt, Nov, Des]
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -255,7 +258,7 @@ id:
|
|||
field_attr_mail: Atribut email
|
||||
field_onthefly: Pembuatan pengguna seketika
|
||||
field_start_date: Mulai
|
||||
field_done_ratio: % Selesai
|
||||
field_done_ratio: "% Selesai"
|
||||
field_auth_source: Mode otentikasi
|
||||
field_hide_mail: Sembunyikan email saya
|
||||
field_comments: Komentar
|
||||
|
@ -963,3 +966,8 @@ id:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@ it:
|
|||
abbr_day_names: [Dom, Lun, Mar, Mer, Gio, Ven, Sab]
|
||||
month_names: [~, Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre]
|
||||
abbr_month_names: [~, Gen, Feb, Mar, Apr, Mag, Giu, Lug, Ago, Set, Ott, Nov, Dic]
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -233,7 +236,7 @@ it:
|
|||
field_attr_mail: Attributo email
|
||||
field_onthefly: Creazione utente "al volo"
|
||||
field_start_date: Inizio
|
||||
field_done_ratio: % completato
|
||||
field_done_ratio: "% completato"
|
||||
field_auth_source: Modalità di autenticazione
|
||||
field_hide_mail: Nascondi il mio indirizzo email
|
||||
field_comments: Commento
|
||||
|
@ -956,3 +959,8 @@ it:
|
|||
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)
|
||||
|
|
|
@ -20,7 +20,10 @@ ja:
|
|||
month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
|
||||
abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -977,3 +980,8 @@ ja:
|
|||
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
|
||||
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
|
||||
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_notify_member_plural: Email issue updates
|
||||
label_path_encoding: Path encoding
|
||||
text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
|
|
|
@ -21,7 +21,10 @@ ko:
|
|||
month_names: [~, 1월, 2월, 3월, 4월, 5월, 6월, 7월, 8월, 9월, 10월, 11월, 12월]
|
||||
abbr_month_names: [~, 1월, 2월, 3월, 4월, 5월, 6월, 7월, 8월, 9월, 10월, 11월, 12월]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -1007,3 +1010,8 @@ ko:
|
|||
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)
|
||||
|
|
|
@ -22,7 +22,10 @@ lt:
|
|||
month_names: [~, sausio, vasario, kovo, balandžio, gegužės, birželio, liepos, rugpjūčio, rugsėjo, spalio, lapkričio, gruodžio]
|
||||
abbr_month_names: [~, Sau, Vas, Kov, Bal, Geg, Bir, Lie, Rgp, Rgs, Spa, Lap, Grd]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -310,7 +313,7 @@ lt:
|
|||
field_attr_mail: Elektroninio pašto požymis
|
||||
field_onthefly: Automatinis vartotojų registravimas
|
||||
field_start_date: Pradėti
|
||||
field_done_ratio: % atlikta
|
||||
field_done_ratio: "% atlikta"
|
||||
field_auth_source: Autentiškumo nustatymo būdas
|
||||
field_hide_mail: Paslėpkite mano elektroninio pašto adresą
|
||||
field_comments: Komentaras
|
||||
|
@ -1015,3 +1018,8 @@ lt:
|
|||
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)
|
||||
|
|
|
@ -13,7 +13,10 @@ lv:
|
|||
|
||||
month_names: [~, Janvāris, Februāris, Marts, Aprīlis , Maijs, Jūnijs, Jūlijs, Augusts, Septembris, Oktobris, Novembris, Decembris]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, Jūn, Jūl, Aug, Sep, Okt, Nov, Dec]
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -252,7 +255,7 @@ lv:
|
|||
field_attr_mail: "E-pasta atribūts"
|
||||
field_onthefly: "Lietotāja izveidošana on-the-fly"
|
||||
field_start_date: Sākuma datums
|
||||
field_done_ratio: % padarīti
|
||||
field_done_ratio: "% padarīti"
|
||||
field_auth_source: Pilnvarošanas režīms
|
||||
field_hide_mail: "Paslēpt manu e-pasta adresi"
|
||||
field_comments: Komentārs
|
||||
|
@ -950,3 +953,8 @@ lv:
|
|||
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)
|
||||
|
|
|
@ -17,7 +17,10 @@ mk:
|
|||
month_names: [~, јануари, февруари, март, април, мај, јуни, јули, август, септември, октомври, ноември, декември]
|
||||
abbr_month_names: [~, јан, фев, мар, апр, мај, јун, јул, авг, сеп, окт, ное, дек]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -265,7 +268,7 @@ mk:
|
|||
field_attr_mail: Email attribute
|
||||
field_onthefly: Моментално (On-the-fly) креирање на корисници
|
||||
field_start_date: Почеток
|
||||
field_done_ratio: % Завршено
|
||||
field_done_ratio: "% Завршено"
|
||||
field_auth_source: Режим на автентикација
|
||||
field_hide_mail: Криј ја мојата адреса на е-пошта
|
||||
field_comments: Коментар
|
||||
|
@ -955,3 +958,8 @@ mk:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@ mn:
|
|||
month_names: [~, 1-р сар, 2-р сар, 3-р сар, 4-р сар, 5-р сар, 6-р сар, 7-р сар, 8-р сар, 9-р сар, 10-р сар, 11-р сар, 12-р сар]
|
||||
abbr_month_names: [~, 1сар, 2сар, 3сар, 4сар, 5сар, 6сар, 7сар, 8сар, 9сар, 10сар, 11сар, 12сар]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -256,7 +259,7 @@ mn:
|
|||
field_attr_mail: Имэйл аттрибут
|
||||
field_onthefly: Хүссэн үедээ хэрэглэгч үүсгэх
|
||||
field_start_date: Эхлэл
|
||||
field_done_ratio: %% Гүйцэтгэсэн
|
||||
field_done_ratio: "%% Гүйцэтгэсэн"
|
||||
field_auth_source: Нэвтрэх арга
|
||||
field_hide_mail: Миний имэйл хаягийг нуу
|
||||
field_comments: Тайлбар
|
||||
|
@ -956,3 +959,8 @@ mn:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@ nl:
|
|||
month_names: [~, januari, februari, maart, april, mei, juni, juli, augustus, september, oktober, november, december]
|
||||
abbr_month_names: [~, jan, feb, mar, apr, mei, jun, jul, aug, sep, okt, nov, dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -213,7 +216,7 @@ nl:
|
|||
field_default_value: Standaardwaarde
|
||||
field_delay: Vertraging
|
||||
field_description: Beschrijving
|
||||
field_done_ratio: % Gereed
|
||||
field_done_ratio: "% Gereed"
|
||||
field_downloads: Downloads
|
||||
field_due_date: Verwachte datum gereed
|
||||
field_estimated_hours: Geschatte tijd
|
||||
|
@ -937,3 +940,8 @@ nl:
|
|||
label_git_path: Path to .git directory
|
||||
text_powered_by: Powered by %{link}
|
||||
label_mercurial_path: Root directory
|
||||
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)
|
||||
|
|
|
@ -13,7 +13,10 @@
|
|||
abbr_day_names: [søn, man, tir, ons, tor, fre, lør]
|
||||
month_names: [~, januar, februar, mars, april, mai, juni, juli, august, september, oktober, november, desember]
|
||||
abbr_month_names: [~, jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des]
|
||||
order: [:day, :month, :year]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
time:
|
||||
formats:
|
||||
default: "%A, %e. %B %Y, %H:%M"
|
||||
|
@ -231,7 +234,7 @@
|
|||
field_attr_mail: E-post-attributt
|
||||
field_onthefly: On-the-fly brukeropprettelse
|
||||
field_start_date: Start
|
||||
field_done_ratio: % Ferdig
|
||||
field_done_ratio: "% Ferdig"
|
||||
field_auth_source: Autentifikasjonsmodus
|
||||
field_hide_mail: Skjul min e-post-adresse
|
||||
field_comments: Kommentarer
|
||||
|
@ -942,3 +945,8 @@
|
|||
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)
|
||||
|
|
|
@ -45,7 +45,10 @@ pl:
|
|||
|
||||
month_names: [~, Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień]
|
||||
abbr_month_names: [~, sty, lut, mar, kwi, maj, cze, lip, sie, wrz, paź, lis, gru]
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -230,7 +233,7 @@ pl:
|
|||
field_default_value: Domyślny
|
||||
field_delay: Opóźnienie
|
||||
field_description: Opis
|
||||
field_done_ratio: % Wykonane
|
||||
field_done_ratio: "% Wykonane"
|
||||
field_downloads: Pobrań
|
||||
field_due_date: Data oddania
|
||||
field_estimated_hours: Szacowany czas
|
||||
|
@ -865,7 +868,7 @@ pl:
|
|||
button_show: Pokaż
|
||||
error_can_not_archive_project: Ten projekt nie może zostać zarchiwizowany
|
||||
error_can_not_reopen_issue_on_closed_version: Zagadnienie przydzielone do zakończonej wersji nie może zostać ponownie otwarte
|
||||
error_issue_done_ratios_not_updated: % wykonania zagadnienia nie został uaktualniony.
|
||||
error_issue_done_ratios_not_updated: "% wykonania zagadnienia nie został uaktualniony."
|
||||
error_workflow_copy_source: Proszę wybrać źródłowy typ zagadnienia lub rolę
|
||||
error_workflow_copy_target: Proszę wybrać docelowe typ(y) zagadnień i rolę(e)
|
||||
field_sharing: Współdzielenie
|
||||
|
@ -896,7 +899,7 @@ pl:
|
|||
setting_default_projects_modules: Domyślnie włączone moduły dla nowo tworzonych projektów
|
||||
setting_gravatar_default: Domyślny obraz Gravatar
|
||||
setting_issue_done_ratio: Obliczaj postęp realizacji zagadnień za pomocą
|
||||
setting_issue_done_ratio_issue_field: % Wykonania zagadnienia
|
||||
setting_issue_done_ratio_issue_field: "% Wykonania zagadnienia"
|
||||
setting_issue_done_ratio_issue_status: Statusu zagadnienia
|
||||
setting_mail_handler_body_delimiters: Przycinaj e-maile po jednej z tych linii
|
||||
setting_rest_api_enabled: Uaktywnij usługę sieciową REST
|
||||
|
@ -972,3 +975,8 @@ pl:
|
|||
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)
|
||||
|
|
|
@ -12,7 +12,10 @@ pt-BR:
|
|||
abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb]
|
||||
month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro]
|
||||
abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez]
|
||||
order: [:day,:month,:year]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -264,7 +267,7 @@ pt-BR:
|
|||
field_attr_mail: Atributo para e-mail
|
||||
field_onthefly: Criar usuários dinamicamente ("on-the-fly")
|
||||
field_start_date: Início
|
||||
field_done_ratio: % Terminado
|
||||
field_done_ratio: "% Terminado"
|
||||
field_auth_source: Modo de autenticação
|
||||
field_hide_mail: Ocultar meu e-mail
|
||||
field_comments: Comentário
|
||||
|
@ -978,3 +981,8 @@ pt-BR:
|
|||
label_git_path: Path to .git directory
|
||||
text_powered_by: Powered by %{link}
|
||||
label_mercurial_path: Root directory
|
||||
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)
|
||||
|
|
|
@ -17,7 +17,10 @@ pt:
|
|||
abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb]
|
||||
month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro]
|
||||
abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez]
|
||||
order: [:day, :month, :year]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -249,7 +252,7 @@ pt:
|
|||
field_attr_mail: Atributo e-mail
|
||||
field_onthefly: Criação de utilizadores na hora
|
||||
field_start_date: Início
|
||||
field_done_ratio: % Completo
|
||||
field_done_ratio: "% Completo"
|
||||
field_auth_source: Modo de autenticação
|
||||
field_hide_mail: Esconder endereço de e-mail
|
||||
field_comments: Comentário
|
||||
|
@ -959,3 +962,8 @@ pt:
|
|||
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)
|
||||
|
|
|
@ -14,7 +14,10 @@ ro:
|
|||
month_names: [~, Ianuarie, Februarie, Martie, Aprilie, Mai, Iunie, Iulie, August, Septembrie, Octombrie, Noiembrie, Decembrie]
|
||||
abbr_month_names: [~, Ian, Feb, Mar, Apr, Mai, Iun, Iul, Aug, Sep, Oct, Noi, Dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -948,3 +951,8 @@ ro:
|
|||
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)
|
||||
|
|
|
@ -28,7 +28,10 @@ ru:
|
|||
abbr_month_names: [~, янв., февр., марта, апр., мая, июня, июля, авг., сент., окт., нояб., дек.]
|
||||
standalone_abbr_month_names: [~, янв., февр., март, апр., май, июнь, июль, авг., сент., окт., нояб., дек.]
|
||||
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -1068,3 +1071,8 @@ ru:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@ sk:
|
|||
month_names: [~, Január, Február, Marec, Apríl, Máj, Jún, Júl, August, September, Október, November, December]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, Máj, Jún, Júl, Aug, Sep, Okt, Nov, Dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -235,7 +238,7 @@ sk:
|
|||
field_attr_mail: Email (atribut)
|
||||
field_onthefly: Automatické vytváranie užívateľov
|
||||
field_start_date: Začiatok
|
||||
field_done_ratio: % hotovo
|
||||
field_done_ratio: "% hotovo"
|
||||
field_auth_source: Autentifikačný mód
|
||||
field_hide_mail: Nezobrazovať môj email
|
||||
field_comments: Komentár
|
||||
|
@ -950,3 +953,8 @@ sk:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@ sl:
|
|||
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -240,7 +243,7 @@ sl:
|
|||
field_attr_mail: Oznaka za e-naslov
|
||||
field_onthefly: Sprotna izdelava uporabnikov
|
||||
field_start_date: Začetek
|
||||
field_done_ratio: % Narejeno
|
||||
field_done_ratio: "% Narejeno"
|
||||
field_auth_source: Način overovljanja
|
||||
field_hide_mail: Skrij moj e-naslov
|
||||
field_comments: Komentar
|
||||
|
@ -951,3 +954,8 @@ sl:
|
|||
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)
|
||||
|
|
|
@ -18,7 +18,10 @@ sr-YU:
|
|||
month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar]
|
||||
abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -265,7 +268,7 @@ sr-YU:
|
|||
field_attr_mail: Atribut e-adrese
|
||||
field_onthefly: Kreiranje korisnika u toku rada
|
||||
field_start_date: Početak
|
||||
field_done_ratio: % urađeno
|
||||
field_done_ratio: "% urađeno"
|
||||
field_auth_source: Režim potvrde identiteta
|
||||
field_hide_mail: Sakrij moju e-adresu
|
||||
field_comments: Komentar
|
||||
|
@ -955,3 +958,8 @@ sr-YU:
|
|||
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)
|
||||
|
|
|
@ -18,7 +18,10 @@ sr:
|
|||
month_names: [~, јануар, фебруар, март, април, мај, јун, јул, август, септембар, октобар, новембар, децембар]
|
||||
abbr_month_names: [~, јан, феб, мар, апр, мај, јун, јул, авг, сеп, окт, нов, дец]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -265,7 +268,7 @@ sr:
|
|||
field_attr_mail: Атрибут е-адресе
|
||||
field_onthefly: Креирање корисника у току рада
|
||||
field_start_date: Почетак
|
||||
field_done_ratio: % урађено
|
||||
field_done_ratio: "% урађено"
|
||||
field_auth_source: Режим потврде идентитета
|
||||
field_hide_mail: Сакриј моју е-адресу
|
||||
field_comments: Коментар
|
||||
|
@ -956,3 +959,8 @@ sr:
|
|||
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)
|
||||
|
|
|
@ -149,7 +149,10 @@ sv:
|
|||
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 ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -207,7 +210,7 @@ sv:
|
|||
notice_default_data_loaded: Standardkonfiguration inläst.
|
||||
notice_unable_delete_version: Denna version var inte möjlig att ta bort.
|
||||
notice_unable_delete_time_entry: Tidloggning kunde inte tas bort.
|
||||
notice_issue_done_ratios_updated: % klart uppdaterade.
|
||||
notice_issue_done_ratios_updated: "% klart uppdaterade."
|
||||
notice_gantt_chart_truncated: "Schemat förminskades eftersom det överskrider det maximala antalet aktiviteter som får visas (%{max})"
|
||||
|
||||
error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}"
|
||||
|
@ -309,7 +312,7 @@ sv:
|
|||
field_attr_mail: Mailattribut
|
||||
field_onthefly: Skapa användare on-the-fly
|
||||
field_start_date: Startdatum
|
||||
field_done_ratio: % Klart
|
||||
field_done_ratio: "% Klart"
|
||||
field_auth_source: Autentiseringsläge
|
||||
field_hide_mail: Dölj min mailadress
|
||||
field_comments: Kommentar
|
||||
|
@ -997,3 +1000,8 @@ sv:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@ th:
|
|||
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -237,7 +240,7 @@ th:
|
|||
field_attr_mail: อีเมล์ attribute
|
||||
field_onthefly: สร้างผู้ใช้ทันที
|
||||
field_start_date: เริ่ม
|
||||
field_done_ratio: % สำเร็จ
|
||||
field_done_ratio: "% สำเร็จ"
|
||||
field_auth_source: วิธีการยืนยันตัวตน
|
||||
field_hide_mail: ซ่อนอีเมล์ของฉัน
|
||||
field_comments: ความเห็น
|
||||
|
@ -952,3 +955,8 @@ th:
|
|||
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)
|
||||
|
|
|
@ -18,7 +18,10 @@ tr:
|
|||
abbr_day_names: [Pzr, Pzt, Sal, Çrş, Prş, Cum, Cts]
|
||||
month_names: [~, Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık]
|
||||
abbr_month_names: [~, Oca, Şub, Mar, Nis, May, Haz, Tem, Ağu, Eyl, Eki, Kas, Ara]
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -260,7 +263,7 @@ tr:
|
|||
field_attr_mail: E-Posta Niteliği
|
||||
field_onthefly: Anında kullanıcı oluşturma
|
||||
field_start_date: Başlangıç
|
||||
field_done_ratio: % tamamlandı
|
||||
field_done_ratio: "% tamamlandı "
|
||||
field_auth_source: Kimlik Denetim Modu
|
||||
field_hide_mail: E-posta adresimi gizle
|
||||
field_comments: Açıklama
|
||||
|
@ -974,3 +977,8 @@ tr:
|
|||
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)
|
||||
|
|
|
@ -16,7 +16,10 @@ uk:
|
|||
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
||||
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -231,7 +234,7 @@ uk:
|
|||
field_attr_mail: Атрибут Email
|
||||
field_onthefly: Створення користувача на льоту
|
||||
field_start_date: Початок
|
||||
field_done_ratio: % зроблено
|
||||
field_done_ratio: "% зроблено"
|
||||
field_auth_source: Режим аутентифікації
|
||||
field_hide_mail: Приховувати мій email
|
||||
field_comments: Коментар
|
||||
|
@ -951,3 +954,8 @@ uk:
|
|||
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)
|
||||
|
|
|
@ -158,7 +158,10 @@ vi:
|
|||
month_names: [~, "Tháng một", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mười", "Tháng mười một", "Tháng mười hai"]
|
||||
abbr_month_names: [~, "Tháng một", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mười", "Tháng mười một", "Tháng mười hai"]
|
||||
# Used in date_select and datime_select.
|
||||
order: [ :day, :month, :year ]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -1006,3 +1009,8 @@ vi:
|
|||
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)
|
||||
|
|
|
@ -20,7 +20,10 @@
|
|||
month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月]
|
||||
abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
|
||||
# 使用於 date_select 與 datime_select.
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -1037,3 +1040,8 @@
|
|||
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)
|
||||
|
|
|
@ -12,7 +12,10 @@ zh:
|
|||
abbr_day_names: [日, 一, 二, 三, 四, 五, 六]
|
||||
month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月]
|
||||
abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
|
||||
order: [ :year, :month, :day ]
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
|
||||
time:
|
||||
formats:
|
||||
|
@ -969,3 +972,8 @@ zh:
|
|||
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)
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
begin
|
||||
require "rubygems"
|
||||
require "bundler"
|
||||
rescue LoadError
|
||||
raise "Could not load the bundler gem. Install it with `gem install bundler`."
|
||||
end
|
||||
|
||||
if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
|
||||
raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
|
||||
"Run `gem install bundler` to upgrade."
|
||||
end
|
||||
|
||||
begin
|
||||
# Set up load paths for all bundled gems
|
||||
ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
|
||||
Bundler.setup
|
||||
rescue Bundler::GemNotFound
|
||||
raise RuntimeError, "Bundler couldn't find some gems." +
|
||||
"Did you run `bundle install`?"
|
||||
end
|
|
@ -0,0 +1,7 @@
|
|||
# This file should contain all the record creation needed to seed the database with its default values.
|
||||
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
|
||||
# Major.create(:name => 'Daley', :city => cities.first)
|
|
@ -19,6 +19,12 @@
|
|||
* Patch #7598: Extensible MailHandler
|
||||
* Patch #7795: Internal server error at journals#index with custom fields
|
||||
|
||||
== 2011-05-01 v1.3.0
|
||||
|
||||
* Bug #309: The login screen after lost_password redirects back to lost_password after you login
|
||||
* Bug #347: Potential Security Vulnerability - Execution After Redirect
|
||||
* Bug #352: Errorpage should be modified
|
||||
|
||||
== 2011-03-27 v1.2.0
|
||||
|
||||
* Bug #209: Don't hardcode user viewable labels (like "Path to .git repository")
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
module ChiliProject
|
||||
end
|
|
@ -3,7 +3,7 @@ require 'rexml/document'
|
|||
module Redmine
|
||||
module VERSION #:nodoc:
|
||||
MAJOR = 1
|
||||
MINOR = 2
|
||||
MINOR = 3
|
||||
PATCH = 0
|
||||
TINY = PATCH # Redmine compat
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<title>redMine 404 error</title>
|
||||
<title>ChiliProject 404 error</title>
|
||||
<style>
|
||||
body{
|
||||
font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
|
||||
|
@ -20,4 +20,4 @@ font-size:0.8em;
|
|||
<p>The page you were trying to access doesn't exist or has been removed.</p>
|
||||
<p><a href="javascript:history.back()">Back</a></p>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
<title>The change you wanted was rejected (422)</title>
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/422.html -->
|
||||
<div class="dialog">
|
||||
<h1>The change you wanted was rejected.</h1>
|
||||
<p>Maybe you tried to change something you didn't have access to.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<title>redMine 500 error</title>
|
||||
<title>ChiliProject 500 error</title>
|
||||
<style>
|
||||
body{
|
||||
font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
|
||||
|
@ -18,7 +18,9 @@ font-size:0.8em;
|
|||
<body>
|
||||
<h1>Internal error</h1>
|
||||
<p>An error occurred on the page you were trying to access.<br />
|
||||
If you continue to experience problems please contact your redMine administrator for assistance.</p>
|
||||
If you continue to experience problems please contact your ChiliProject administrator for assistance.</p>
|
||||
|
||||
<p>If you are the ChiliProject administrator, check your log files for details about the error.</p>
|
||||
<p><a href="javascript:history.back()">Back</a></p>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -429,6 +429,22 @@ class IssuesControllerTest < ActionController::TestCase
|
|||
assert_equal 'Value for field 2', v.value
|
||||
end
|
||||
|
||||
def test_post_new_should_not_send_a_notification_if_send_notification_is_off
|
||||
ActionMailer::Base.deliveries.clear
|
||||
@request.session[:user_id] = 2
|
||||
post :create, :project_id => 1,
|
||||
:send_notification => 0,
|
||||
:issue => {:tracker_id => 3,
|
||||
:subject => 'This is the test_new issue',
|
||||
:description => 'This is the description',
|
||||
:priority_id => 5,
|
||||
:estimated_hours => '',
|
||||
:custom_field_values => {'2' => 'Value for field 2'}}
|
||||
assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
|
||||
|
||||
assert_equal 0, ActionMailer::Base.deliveries.size
|
||||
end
|
||||
|
||||
def test_post_create_without_start_date
|
||||
@request.session[:user_id] = 2
|
||||
assert_difference 'Issue.count' do
|
||||
|
@ -1002,6 +1018,22 @@ class IssuesControllerTest < ActionController::TestCase
|
|||
}
|
||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||
end
|
||||
|
||||
def test_put_update_should_not_send_a_notification_if_send_notification_is_off
|
||||
@request.session[:user_id] = 2
|
||||
ActionMailer::Base.deliveries.clear
|
||||
issue = Issue.find(1)
|
||||
old_subject = issue.subject
|
||||
new_subject = 'Subject modified by IssuesControllerTest#test_post_edit'
|
||||
|
||||
put :update, :id => 1,
|
||||
:send_notification => 0,
|
||||
:issue => {:subject => new_subject,
|
||||
:priority_id => '6',
|
||||
:category_id => '1' # no change
|
||||
}
|
||||
assert_equal 0, ActionMailer::Base.deliveries.size
|
||||
end
|
||||
|
||||
def test_put_update_with_invalid_spent_time_hours_only
|
||||
@request.session[:user_id] = 2
|
||||
|
@ -1140,6 +1172,25 @@ class IssuesControllerTest < ActionController::TestCase
|
|||
assert_equal 1, journal.details.size
|
||||
end
|
||||
|
||||
def test_bullk_update_should_not_send_a_notification_if_send_notification_is_off
|
||||
@request.session[:user_id] = 2
|
||||
ActionMailer::Base.deliveries.clear
|
||||
post(:bulk_update,
|
||||
{
|
||||
:ids => [1, 2],
|
||||
:issue => {
|
||||
:priority_id => 7,
|
||||
:assigned_to_id => '',
|
||||
:custom_field_values => {'2' => ''}
|
||||
},
|
||||
:notes => 'Bulk editing',
|
||||
:send_notification => '0'
|
||||
})
|
||||
|
||||
assert_response 302
|
||||
assert_equal 0, ActionMailer::Base.deliveries.size
|
||||
end
|
||||
|
||||
def test_bulk_update_on_different_projects
|
||||
@request.session[:user_id] = 2
|
||||
# update issues priority
|
||||
|
|
|
@ -22,7 +22,7 @@ require 'roles_controller'
|
|||
class RolesController; def rescue_action(e) raise e end; end
|
||||
|
||||
class RolesControllerTest < ActionController::TestCase
|
||||
fixtures :roles, :users, :members, :member_roles, :workflows
|
||||
fixtures :roles, :users, :members, :member_roles, :workflows, :trackers
|
||||
|
||||
def setup
|
||||
@controller = RolesController.new
|
||||
|
|
|
@ -77,7 +77,7 @@ class AccountTest < ActionController::IntegrationTest
|
|||
assert_template "account/lost_password"
|
||||
|
||||
post "account/lost_password", :mail => 'jSmith@somenet.foo'
|
||||
assert_redirected_to "/login"
|
||||
assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2F"
|
||||
|
||||
token = Token.find(:first)
|
||||
assert_equal 'recovery', token.action
|
||||
|
@ -143,6 +143,30 @@ class AccountTest < ActionController::IntegrationTest
|
|||
assert_redirected_to '/login'
|
||||
log_user('newuser', 'newpass')
|
||||
end
|
||||
|
||||
should_eventually "login after losing password should redirect back to home" do
|
||||
visit "/login"
|
||||
assert_response :success
|
||||
|
||||
click_link "Lost password"
|
||||
assert_response :success
|
||||
|
||||
# Lost password form
|
||||
fill_in "mail", :with => "admin@somenet.foo"
|
||||
click_button "Submit"
|
||||
|
||||
assert_response :success # back to login page
|
||||
assert_equal "/login", current_path
|
||||
|
||||
fill_in "Login:", :with => 'admin'
|
||||
fill_in "Password:", :with => 'test'
|
||||
click_button "login"
|
||||
|
||||
assert_response :success
|
||||
assert_equal "/", current_path
|
||||
|
||||
end
|
||||
|
||||
|
||||
if Object.const_defined?(:Mocha)
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ require File.expand_path('../../../test_helper', __FILE__)
|
|||
class RepositoryHelperTest < HelperTestCase
|
||||
include RepositoriesHelper
|
||||
|
||||
def test_from_latin1_to_utf8
|
||||
def test_from_latin1_to_utf8_for_repositories
|
||||
with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do
|
||||
s1 = "Texte encod\xc3\xa9"
|
||||
s2 = "Texte encod\xe9"
|
||||
|
@ -30,12 +30,12 @@ class RepositoryHelperTest < HelperTestCase
|
|||
s2.force_encoding("ASCII-8BIT")
|
||||
s3.force_encoding("UTF-8")
|
||||
end
|
||||
assert_equal s1, to_utf8(s2)
|
||||
assert_equal s1, to_utf8(s3)
|
||||
assert_equal s1, to_utf8_for_repositories(s2)
|
||||
assert_equal s1, to_utf8_for_repositories(s3)
|
||||
end
|
||||
end
|
||||
|
||||
def test_from_euc_jp_to_utf8
|
||||
def test_from_euc_jp_to_utf8_for_repositories
|
||||
with_settings :repositories_encodings => 'UTF-8,EUC-JP' do
|
||||
s1 = "\xe3\x83\xac\xe3\x83\x83\xe3\x83\x89\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xb3"
|
||||
s2 = "\xa5\xec\xa5\xc3\xa5\xc9\xa5\xde\xa5\xa4\xa5\xf3"
|
||||
|
@ -45,12 +45,12 @@ class RepositoryHelperTest < HelperTestCase
|
|||
s2.force_encoding("ASCII-8BIT")
|
||||
s3.force_encoding("UTF-8")
|
||||
end
|
||||
assert_equal s1, to_utf8(s2)
|
||||
assert_equal s1, to_utf8(s3)
|
||||
assert_equal s1, to_utf8_for_repositories(s2)
|
||||
assert_equal s1, to_utf8_for_repositories(s3)
|
||||
end
|
||||
end
|
||||
|
||||
def test_to_utf8_should_be_converted_all_latin1_to_utf8
|
||||
def test_to_utf8_for_repositories_should_be_converted_all_latin1_to_utf8
|
||||
with_settings :repositories_encodings => 'ISO-8859-1' do
|
||||
s1 = "\xc3\x82\xc2\x80"
|
||||
s2 = "\xC2\x80"
|
||||
|
@ -60,25 +60,25 @@ class RepositoryHelperTest < HelperTestCase
|
|||
s2.force_encoding("ASCII-8BIT")
|
||||
s3.force_encoding("UTF-8")
|
||||
end
|
||||
assert_equal s1, to_utf8(s2)
|
||||
assert_equal s1, to_utf8(s3)
|
||||
assert_equal s1, to_utf8_for_repositories(s2)
|
||||
assert_equal s1, to_utf8_for_repositories(s3)
|
||||
end
|
||||
end
|
||||
|
||||
def test_to_utf8_blank_string
|
||||
assert_equal "", to_utf8("")
|
||||
assert_equal nil, to_utf8(nil)
|
||||
def test_to_utf8_for_repositories_blank_string
|
||||
assert_equal "", to_utf8_for_repositories("")
|
||||
assert_equal nil, to_utf8_for_repositories(nil)
|
||||
end
|
||||
|
||||
def test_to_utf8_returns_ascii_as_utf8
|
||||
def test_to_utf8_for_repositories_returns_ascii_as_utf8
|
||||
s1 = "ASCII"
|
||||
s2 = s1.dup
|
||||
if s1.respond_to?(:force_encoding)
|
||||
s1.force_encoding("UTF-8")
|
||||
s2.force_encoding("ISO-8859-1")
|
||||
end
|
||||
str1 = to_utf8(s1)
|
||||
str2 = to_utf8(s2)
|
||||
str1 = to_utf8_for_repositories(s1)
|
||||
str2 = to_utf8_for_repositories(s2)
|
||||
assert_equal s1, str1
|
||||
assert_equal s1, str2
|
||||
if s1.respond_to?(:force_encoding)
|
||||
|
@ -87,10 +87,10 @@ class RepositoryHelperTest < HelperTestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_to_utf8_invalid_utf8_sequences_should_be_stripped
|
||||
def test_to_utf8_for_repositories_invalid_utf8_sequences_should_be_stripped
|
||||
with_settings :repositories_encodings => '' do
|
||||
s1 = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
|
||||
str = to_utf8(s1)
|
||||
str = to_utf8_for_repositories(s1)
|
||||
if str.respond_to?(:force_encoding)
|
||||
assert_equal "Texte encod? en ISO-8859-1.", str
|
||||
assert str.valid_encoding?
|
||||
|
|
|
@ -893,4 +893,13 @@ class IssueTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
end
|
||||
|
||||
def test_create_should_not_send_email_notification_if_told_not_to
|
||||
ActionMailer::Base.deliveries.clear
|
||||
issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 3, :status_id => 1, :priority => IssuePriority.first, :subject => 'test_create', :estimated_hours => '1:30')
|
||||
IssueObserver.instance.send_notification = false
|
||||
|
||||
assert issue.save
|
||||
assert_equal 0, ActionMailer::Base.deliveries.size
|
||||
end
|
||||
end
|
||||
|
|
|
@ -50,4 +50,56 @@ class JournalTest < ActiveSupport::TestCase
|
|||
issue.update_attribute(:subject, "New subject to trigger automatic journal entry")
|
||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||
end
|
||||
|
||||
def test_visible_scope_for_anonymous
|
||||
# Anonymous user should see issues of public projects only
|
||||
journals = Journal.visible(User.anonymous).all
|
||||
assert journals.any?
|
||||
assert_nil journals.detect {|journal| !journal.issue.project.is_public?}
|
||||
# Anonymous user should not see issues without permission
|
||||
Role.anonymous.remove_permission!(:view_issues)
|
||||
journals = Journal.visible(User.anonymous).all
|
||||
assert journals.empty?
|
||||
end
|
||||
|
||||
def test_visible_scope_for_user
|
||||
user = User.find(9)
|
||||
assert user.projects.empty?
|
||||
# Non member user should see issues of public projects only
|
||||
journals = Journal.visible(user).all
|
||||
assert journals.any?
|
||||
assert_nil journals.detect {|journal| !journal.issue.project.is_public?}
|
||||
# Non member user should not see issues without permission
|
||||
Role.non_member.remove_permission!(:view_issues)
|
||||
user.reload
|
||||
journals = Journal.visible(user).all
|
||||
assert journals.empty?
|
||||
# User should see issues of projects for which he has view_issues permissions only
|
||||
Member.create!(:principal => user, :project_id => 1, :role_ids => [1])
|
||||
user.reload
|
||||
journals = Journal.visible(user).all
|
||||
assert journals.any?
|
||||
assert_nil journals.detect {|journal| journal.issue.project_id != 1}
|
||||
end
|
||||
|
||||
def test_visible_scope_for_admin
|
||||
user = User.find(1)
|
||||
user.members.each(&:destroy)
|
||||
assert user.projects.empty?
|
||||
journals = Journal.visible(user).all
|
||||
assert journals.any?
|
||||
# Admin should see issues on private projects that he does not belong to
|
||||
assert journals.detect {|journal| !journal.issue.project.is_public?}
|
||||
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)
|
||||
journal = issue.init_journal(user, issue)
|
||||
JournalObserver.instance.send_notification = false
|
||||
|
||||
assert journal.save
|
||||
assert_equal 0, ActionMailer::Base.deliveries.size
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,155 +0,0 @@
|
|||
--- !ruby/object:Gem::Specification
|
||||
name: coderay
|
||||
version: !ruby/object:Gem::Version
|
||||
hash: 53
|
||||
prerelease: false
|
||||
segments:
|
||||
- 0
|
||||
- 9
|
||||
- 7
|
||||
version: 0.9.7
|
||||
platform: ruby
|
||||
authors:
|
||||
- murphy
|
||||
autorequire:
|
||||
bindir: bin
|
||||
cert_chain: []
|
||||
|
||||
date: 2011-01-15 00:00:00 +01:00
|
||||
default_executable:
|
||||
dependencies: []
|
||||
|
||||
description: |
|
||||
Fast and easy syntax highlighting for selected languages, written in Ruby.
|
||||
Comes with RedCloth integration and LOC counter.
|
||||
|
||||
email: murphy@rubychan.de
|
||||
executables:
|
||||
- coderay
|
||||
- coderay_stylesheet
|
||||
extensions: []
|
||||
|
||||
extra_rdoc_files:
|
||||
- lib/README
|
||||
- FOLDERS
|
||||
files:
|
||||
- ./lib/coderay/duo.rb
|
||||
- ./lib/coderay/encoder.rb
|
||||
- ./lib/coderay/encoders/_map.rb
|
||||
- ./lib/coderay/encoders/comment_filter.rb
|
||||
- ./lib/coderay/encoders/count.rb
|
||||
- ./lib/coderay/encoders/debug.rb
|
||||
- ./lib/coderay/encoders/div.rb
|
||||
- ./lib/coderay/encoders/filter.rb
|
||||
- ./lib/coderay/encoders/html/css.rb
|
||||
- ./lib/coderay/encoders/html/numerization.rb
|
||||
- ./lib/coderay/encoders/html/output.rb
|
||||
- ./lib/coderay/encoders/html.rb
|
||||
- ./lib/coderay/encoders/json.rb
|
||||
- ./lib/coderay/encoders/lines_of_code.rb
|
||||
- ./lib/coderay/encoders/null.rb
|
||||
- ./lib/coderay/encoders/page.rb
|
||||
- ./lib/coderay/encoders/span.rb
|
||||
- ./lib/coderay/encoders/statistic.rb
|
||||
- ./lib/coderay/encoders/term.rb
|
||||
- ./lib/coderay/encoders/text.rb
|
||||
- ./lib/coderay/encoders/token_class_filter.rb
|
||||
- ./lib/coderay/encoders/xml.rb
|
||||
- ./lib/coderay/encoders/yaml.rb
|
||||
- ./lib/coderay/for_redcloth.rb
|
||||
- ./lib/coderay/helpers/file_type.rb
|
||||
- ./lib/coderay/helpers/gzip_simple.rb
|
||||
- ./lib/coderay/helpers/plugin.rb
|
||||
- ./lib/coderay/helpers/word_list.rb
|
||||
- ./lib/coderay/scanner.rb
|
||||
- ./lib/coderay/scanners/_map.rb
|
||||
- ./lib/coderay/scanners/c.rb
|
||||
- ./lib/coderay/scanners/cpp.rb
|
||||
- ./lib/coderay/scanners/css.rb
|
||||
- ./lib/coderay/scanners/debug.rb
|
||||
- ./lib/coderay/scanners/delphi.rb
|
||||
- ./lib/coderay/scanners/diff.rb
|
||||
- ./lib/coderay/scanners/groovy.rb
|
||||
- ./lib/coderay/scanners/html.rb
|
||||
- ./lib/coderay/scanners/java/builtin_types.rb
|
||||
- ./lib/coderay/scanners/java.rb
|
||||
- ./lib/coderay/scanners/java_script-0.9.6.rb
|
||||
- ./lib/coderay/scanners/java_script.rb
|
||||
- ./lib/coderay/scanners/json.rb
|
||||
- ./lib/coderay/scanners/nitro_xhtml.rb
|
||||
- ./lib/coderay/scanners/php.rb
|
||||
- ./lib/coderay/scanners/plaintext.rb
|
||||
- ./lib/coderay/scanners/python.rb
|
||||
- ./lib/coderay/scanners/rhtml.rb
|
||||
- ./lib/coderay/scanners/ruby/patterns.rb
|
||||
- ./lib/coderay/scanners/ruby.rb
|
||||
- ./lib/coderay/scanners/scheme.rb
|
||||
- ./lib/coderay/scanners/sql.rb
|
||||
- ./lib/coderay/scanners/xml.rb
|
||||
- ./lib/coderay/scanners/yaml.rb
|
||||
- ./lib/coderay/style.rb
|
||||
- ./lib/coderay/styles/_map.rb
|
||||
- ./lib/coderay/styles/cycnus.rb
|
||||
- ./lib/coderay/styles/murphy.rb
|
||||
- ./lib/coderay/token_classes.rb
|
||||
- ./lib/coderay/tokens.rb
|
||||
- ./lib/coderay.rb
|
||||
- ./Rakefile
|
||||
- ./test/functional/basic.rb
|
||||
- ./test/functional/basic.rbc
|
||||
- ./test/functional/for_redcloth.rb
|
||||
- ./test/functional/for_redcloth.rbc
|
||||
- ./test/functional/load_plugin_scanner.rb
|
||||
- ./test/functional/load_plugin_scanner.rbc
|
||||
- ./test/functional/suite.rb
|
||||
- ./test/functional/suite.rbc
|
||||
- ./test/functional/vhdl.rb
|
||||
- ./test/functional/vhdl.rbc
|
||||
- ./test/functional/word_list.rb
|
||||
- ./test/functional/word_list.rbc
|
||||
- ./lib/README
|
||||
- ./LICENSE
|
||||
- lib/README
|
||||
- FOLDERS
|
||||
- bin/coderay
|
||||
- bin/coderay_stylesheet
|
||||
has_rdoc: true
|
||||
homepage: http://coderay.rubychan.de
|
||||
licenses: []
|
||||
|
||||
post_install_message:
|
||||
rdoc_options:
|
||||
- -SNw2
|
||||
- -mlib/README
|
||||
- -t CodeRay Documentation
|
||||
require_paths:
|
||||
- lib
|
||||
required_ruby_version: !ruby/object:Gem::Requirement
|
||||
none: false
|
||||
requirements:
|
||||
- - ">="
|
||||
- !ruby/object:Gem::Version
|
||||
hash: 51
|
||||
segments:
|
||||
- 1
|
||||
- 8
|
||||
- 2
|
||||
version: 1.8.2
|
||||
required_rubygems_version: !ruby/object:Gem::Requirement
|
||||
none: false
|
||||
requirements:
|
||||
- - ">="
|
||||
- !ruby/object:Gem::Version
|
||||
hash: 3
|
||||
segments:
|
||||
- 0
|
||||
version: "0"
|
||||
requirements: []
|
||||
|
||||
rubyforge_project: coderay
|
||||
rubygems_version: 1.3.7
|
||||
signing_key:
|
||||
specification_version: 3
|
||||
summary: Fast syntax highlighting for selected languages.
|
||||
test_files:
|
||||
- ./test/functional/suite.rb
|
|
@ -1,53 +0,0 @@
|
|||
= CodeRay - Trunk folder structure
|
||||
|
||||
== bench - Benchmarking system
|
||||
|
||||
All benchmarking stuff goes here.
|
||||
|
||||
Test inputs are stored in files named <code>example.<lang></code>.
|
||||
Test outputs go to <code>bench/test.<encoder-default-file-extension></code>.
|
||||
|
||||
Run <code>bench/bench.rb</code> to get a usage description.
|
||||
|
||||
Run <code>rake bench</code> to perform an example benchmark.
|
||||
|
||||
|
||||
== bin - Scripts
|
||||
|
||||
Executional files for CodeRay.
|
||||
|
||||
|
||||
== demo - Demos and functional tests
|
||||
|
||||
Demonstrational scripts to show of CodeRay's features.
|
||||
|
||||
Run them as functional tests with <code>rake test:demos</code>.
|
||||
|
||||
|
||||
== etc - Lots of stuff
|
||||
|
||||
Some addidtional files for CodeRay, mainly graphics and Vim scripts.
|
||||
|
||||
|
||||
== gem_server - Gem output folder
|
||||
|
||||
For <code>rake gem</code>.
|
||||
|
||||
|
||||
== lib - CodeRay library code
|
||||
|
||||
This is the base directory for the CodeRay library.
|
||||
|
||||
|
||||
== rake_helpers - Rake helper libraries
|
||||
|
||||
Some files to enhance Rake, including the Autumnal Rdoc template and some scripts.
|
||||
|
||||
|
||||
== test - Tests
|
||||
|
||||
Tests for the scanners.
|
||||
|
||||
Each language has its own subfolder and sub-suite.
|
||||
|
||||
Run with <code>rake test</code>.
|
|
@ -1,504 +0,0 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
require 'rake/rdoctask'
|
||||
|
||||
ROOT = '.'
|
||||
LIB_ROOT = File.join ROOT, 'lib'
|
||||
EXTRA_RDOC_FILES = %w(lib/README FOLDERS)
|
||||
|
||||
task :default => :test
|
||||
|
||||
if File.directory? 'rake_tasks'
|
||||
|
||||
# load rake tasks from subfolder
|
||||
for task_file in Dir['rake_tasks/*.rake'].sort
|
||||
load task_file
|
||||
end
|
||||
|
||||
else
|
||||
|
||||
# fallback tasks when rake_tasks folder is not present
|
||||
desc 'Run CodeRay tests (basic)'
|
||||
task :test do
|
||||
ruby './test/functional/suite.rb'
|
||||
ruby './test/functional/for_redcloth.rb'
|
||||
end
|
||||
|
||||
desc 'Generate documentation for CodeRay'
|
||||
Rake::RDocTask.new :doc do |rd|
|
||||
rd.title = 'CodeRay Documentation'
|
||||
rd.main = 'lib/README'
|
||||
rd.rdoc_files.add Dir['lib']
|
||||
rd.rdoc_files.add 'lib/README'
|
||||
rd.rdoc_files.add 'FOLDERS'
|
||||
rd.rdoc_dir = 'doc'
|
||||
end
|
||||
|
||||
end
|
|
@ -1,86 +0,0 @@
|
|||
#!/usr/bin/env ruby
|
||||
# CodeRay Executable
|
||||
#
|
||||
# Version: 0.2
|
||||
# Author: murphy
|
||||
|
||||
require 'coderay'
|
||||
|
||||
if ARGV.empty?
|
||||
$stderr.puts <<-USAGE
|
||||
CodeRay #{CodeRay::VERSION} (http://coderay.rubychan.de)
|
||||
|
||||
Usage:
|
||||
coderay file [-<format>]
|
||||
coderay -<lang> [-<format>] [< file] [> output]
|
||||
|
||||
Defaults:
|
||||
lang: based on file extension
|
||||
format: ANSI colorized output for terminal, HTML page for files
|
||||
|
||||
Examples:
|
||||
coderay foo.rb # colorized output to terminal, based on file extension
|
||||
coderay foo.rb -loc # print LOC count, based on file extension and format
|
||||
coderay foo.rb > foo.html # HTML page output to file, based on extension
|
||||
coderay -ruby < foo.rb # colorized output to terminal, based on lang
|
||||
coderay -ruby -loc < foo.rb # print LOC count, based on lang
|
||||
coderay -ruby -page foo.rb # HTML page output to terminal, based on lang and format
|
||||
coderay -ruby -page foo.rb > foo.html # HTML page output to file, based on lang and format
|
||||
USAGE
|
||||
end
|
||||
|
||||
first, second = ARGV
|
||||
|
||||
def read
|
||||
file = ARGV.grep(/^(?!-)/).last
|
||||
if file
|
||||
if File.exist?(file)
|
||||
File.read file
|
||||
else
|
||||
$stderr.puts "No such file: #{file}"
|
||||
end
|
||||
else
|
||||
$stdin.read
|
||||
end
|
||||
end
|
||||
|
||||
if first
|
||||
if first[/-(\w+)/] == first
|
||||
lang = $1
|
||||
input = read
|
||||
tokens = :scan
|
||||
else
|
||||
file = first
|
||||
unless File.exist? file
|
||||
$stderr.puts "No such file: #{file}"
|
||||
exit 2
|
||||
end
|
||||
tokens = CodeRay.scan_file file
|
||||
end
|
||||
else
|
||||
$stderr.puts 'No lang/file given.'
|
||||
exit 1
|
||||
end
|
||||
|
||||
if second
|
||||
if second[/-(\w+)/] == second
|
||||
format = $1.to_sym
|
||||
else
|
||||
raise 'invalid format (must be -xxx)'
|
||||
end
|
||||
else
|
||||
if $stdout.tty?
|
||||
format = :term
|
||||
else
|
||||
$stderr.puts 'No format given; setting to default (HTML Page).'
|
||||
format = :page
|
||||
end
|
||||
end
|
||||
|
||||
if tokens == :scan
|
||||
output = CodeRay::Duo[lang => format].highlight input
|
||||
else
|
||||
output = tokens.encode format
|
||||
end
|
||||
out = $stdout
|
||||
out.puts output
|
|
@ -1,4 +0,0 @@
|
|||
#!/usr/bin/env ruby
|
||||
require 'coderay'
|
||||
|
||||
puts CodeRay::Encoders[:html]::CSS.new.stylesheet
|
|
@ -1,134 +0,0 @@
|
|||
= CodeRay
|
||||
|
||||
[- Tired of blue'n'gray? Try the original version of this documentation on
|
||||
coderay.rubychan.de[http://coderay.rubychan.de/doc/] (use Ctrl+Click to open it in its own frame.) -]
|
||||
|
||||
== About
|
||||
CodeRay is a Ruby library for syntax highlighting.
|
||||
|
||||
Syntax highlighting means: You put your code in, and you get it back colored;
|
||||
Keywords, strings, floats, comments - all in different colors.
|
||||
And with line numbers.
|
||||
|
||||
*Syntax* *Highlighting*...
|
||||
* makes code easier to read and maintain
|
||||
* lets you detect syntax errors faster
|
||||
* helps you to understand the syntax of a language
|
||||
* looks nice
|
||||
* is what everybody should have on their website
|
||||
* solves all your problems and makes the girls run after you
|
||||
|
||||
Version: 0.9.7
|
||||
Author:: murphy (Kornelius Kalnbach)
|
||||
Contact:: murphy rubychan de
|
||||
Website:: coderay.rubychan.de[http://coderay.rubychan.de]
|
||||
License:: GNU LGPL; see LICENSE file in the main directory.
|
||||
|
||||
== Installation
|
||||
|
||||
You need RubyGems[http://rubyforge.org/frs/?group_id=126].
|
||||
|
||||
% gem install coderay
|
||||
|
||||
|
||||
=== Dependencies
|
||||
|
||||
CodeRay needs Ruby 1.8.6 or later. It also runs with Ruby 1.9.1+ and JRuby 1.1+.
|
||||
|
||||
|
||||
== Example Usage
|
||||
(Forgive me, but this is not highlighted.)
|
||||
|
||||
require 'coderay'
|
||||
|
||||
tokens = CodeRay.scan "puts 'Hello, world!'", :ruby
|
||||
page = tokens.html :line_numbers => :inline, :wrap => :page
|
||||
puts page
|
||||
|
||||
|
||||
== Documentation
|
||||
|
||||
See CodeRay.
|
||||
|
||||
Please report errors in this documentation to <murphy rubychan de>.
|
||||
|
||||
|
||||
== Credits
|
||||
|
||||
=== Special Thanks to
|
||||
|
||||
* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder
|
||||
project and the input/output plugin system.
|
||||
CodeRay would not exist without him.
|
||||
* bovi (Daniel Bovensiepen) for helping me out on various occasions.
|
||||
|
||||
=== Thanks to
|
||||
|
||||
* Caleb Clausen for writing RubyLexer (see
|
||||
http://rubyforge.org/projects/rubylexer) and lots of very interesting mail
|
||||
traffic
|
||||
* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments.
|
||||
You guys rock!
|
||||
* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax)
|
||||
I got some useful ideas from it.
|
||||
* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me
|
||||
coding CodeRay, but also gave me a wonderful target to reach for the Ruby
|
||||
scanner.
|
||||
* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de
|
||||
* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de
|
||||
* Dethix from ruby-mine.de
|
||||
* zickzackw
|
||||
* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de
|
||||
* Andreas Schwarz for finding out that CaseIgnoringWordList was not case
|
||||
ignoring! Such things really make you write tests.
|
||||
* closure for the first version of the Scheme scanner.
|
||||
* Stefan Walk for the first version of the JavaScript and PHP scanners.
|
||||
* Josh Goebel for another version of the JavaScript scanner, a SQL and a Diff scanner.
|
||||
* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file.
|
||||
* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType.
|
||||
* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby.
|
||||
* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth.
|
||||
* 0xf30fc7 for the FileType patch concerning Delphi file extensions.
|
||||
* The folks at redmine.org - thank you for using and fixing CodeRay!
|
||||
* Keith Pitt for his SQL scanners
|
||||
* Rob Aldred for the terminal encoder
|
||||
* Trans for pointing out $DEBUG dependencies
|
||||
* Flameeyes for finding that Term::ANSIColor was obsolete
|
||||
* Etienne Massip for reporting a serious bug in JavaScript scanner
|
||||
* matz and all Ruby gods and gurus
|
||||
* The inventors of: the computer, the internet, the true color display, HTML &
|
||||
CSS, VIM, Ruby, pizza, microwaves, guitars, scouting, programming, anime,
|
||||
manga, coke and green ice tea.
|
||||
|
||||
Where would we be without all those people?
|
||||
|
||||
=== Created using
|
||||
|
||||
* Ruby[http://ruby-lang.org/]
|
||||
* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook);
|
||||
Triella, born Rico (my new MacBook); as well as
|
||||
Seras and Hikari (my PCs)
|
||||
* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html],
|
||||
VIM[http://vim.org] and TextMate[http://macromates.com]
|
||||
* Subversion[http://subversion.tigris.org/]
|
||||
* Redmine[http://redmine.org/]
|
||||
* Firefox[http://www.mozilla.org/products/firefox/],
|
||||
Firebug[http://getfirebug.com/], Safari[http://www.apple.com/safari/], and
|
||||
Thunderbird[http://www.mozilla.org/products/thunderbird/]
|
||||
* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/]
|
||||
* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via
|
||||
XAMPP[http://www.apachefriends.org/en/xampp.html]
|
||||
* RDoc (though I'm quite unsatisfied with it)
|
||||
* Microsoft Windows (yes, I confess!) and MacOS X
|
||||
* GNUWin32, MinGW and some other tools to make the shell under windows a bit
|
||||
less useless
|
||||
* Term::ANSIColor[http://term-ansicolor.rubyforge.org/]
|
||||
* PLEAC[http://pleac.sourceforge.net/] code examples
|
||||
|
||||
=== Free
|
||||
|
||||
* As you can see, CodeRay was created under heavy use of *free* software.
|
||||
* So CodeRay is also *free*.
|
||||
* If you use CodeRay to create software, think about making this software
|
||||
*free*, too.
|
||||
* Thanks :)
|
|
@ -1,322 +0,0 @@
|
|||
# = CodeRay Library
|
||||
#
|
||||
# CodeRay is a Ruby library for syntax highlighting.
|
||||
#
|
||||
# I try to make CodeRay easy to use and intuitive, but at the same time fully featured, complete,
|
||||
# fast and efficient.
|
||||
#
|
||||
# See README.
|
||||
#
|
||||
# It consists mainly of
|
||||
# * the main engine: CodeRay (Scanners::Scanner, Tokens/TokenStream, Encoders::Encoder), PluginHost
|
||||
# * the scanners in CodeRay::Scanners
|
||||
# * the encoders in CodeRay::Encoders
|
||||
#
|
||||
# Here's a fancy graphic to light up this gray docu:
|
||||
#
|
||||
# http://cycnus.de/raindark/coderay/scheme.png
|
||||
#
|
||||
# == Documentation
|
||||
#
|
||||
# See CodeRay, Encoders, Scanners, Tokens.
|
||||
#
|
||||
# == Usage
|
||||
#
|
||||
# Remember you need RubyGems to use CodeRay, unless you have it in your load path. Run Ruby with
|
||||
# -rubygems option if required.
|
||||
#
|
||||
# === Highlight Ruby code in a string as html
|
||||
#
|
||||
# require 'coderay'
|
||||
# print CodeRay.scan('puts "Hello, world!"', :ruby).html
|
||||
#
|
||||
# # prints something like this:
|
||||
# puts <span class="s">"Hello, world!"</span>
|
||||
#
|
||||
#
|
||||
# === Highlight C code from a file in a html div
|
||||
#
|
||||
# require 'coderay'
|
||||
# print CodeRay.scan(File.read('ruby.h'), :c).div
|
||||
# print CodeRay.scan_file('ruby.h').html.div
|
||||
#
|
||||
# You can include this div in your page. The used CSS styles can be printed with
|
||||
#
|
||||
# % coderay_stylesheet
|
||||
#
|
||||
# === Highlight without typing too much
|
||||
#
|
||||
# If you are one of the hasty (or lazy, or extremely curious) people, just run this file:
|
||||
#
|
||||
# % ruby -rubygems /path/to/coderay/coderay.rb > example.html
|
||||
#
|
||||
# and look at the file it created in your browser.
|
||||
#
|
||||
# = CodeRay Module
|
||||
#
|
||||
# The CodeRay module provides convenience methods for the engine.
|
||||
#
|
||||
# * The +lang+ and +format+ arguments select Scanner and Encoder to use. These are
|
||||
# simply lower-case symbols, like <tt>:python</tt> or <tt>:html</tt>.
|
||||
# * All methods take an optional hash as last parameter, +options+, that is send to
|
||||
# the Encoder / Scanner.
|
||||
# * Input and language are always sorted in this order: +code+, +lang+.
|
||||
# (This is in alphabetical order, if you need a mnemonic ;)
|
||||
#
|
||||
# You should be able to highlight everything you want just using these methods;
|
||||
# so there is no need to dive into CodeRay's deep class hierarchy.
|
||||
#
|
||||
# The examples in the demo directory demonstrate common cases using this interface.
|
||||
#
|
||||
# = Basic Access Ways
|
||||
#
|
||||
# Read this to get a general view what CodeRay provides.
|
||||
#
|
||||
# == Scanning
|
||||
#
|
||||
# Scanning means analysing an input string, splitting it up into Tokens.
|
||||
# Each Token knows about what type it is: string, comment, class name, etc.
|
||||
#
|
||||
# Each +lang+ (language) has its own Scanner; for example, <tt>:ruby</tt> code is
|
||||
# handled by CodeRay::Scanners::Ruby.
|
||||
#
|
||||
# CodeRay.scan:: Scan a string in a given language into Tokens.
|
||||
# This is the most common method to use.
|
||||
# CodeRay.scan_file:: Scan a file and guess the language using FileType.
|
||||
#
|
||||
# The Tokens object you get from these methods can encode itself; see Tokens.
|
||||
#
|
||||
# == Encoding
|
||||
#
|
||||
# Encoding means compiling Tokens into an output. This can be colored HTML or
|
||||
# LaTeX, a textual statistic or just the number of non-whitespace tokens.
|
||||
#
|
||||
# Each Encoder provides output in a specific +format+, so you select Encoders via
|
||||
# formats like <tt>:html</tt> or <tt>:statistic</tt>.
|
||||
#
|
||||
# CodeRay.encode:: Scan and encode a string in a given language.
|
||||
# CodeRay.encode_tokens:: Encode the given tokens.
|
||||
# CodeRay.encode_file:: Scan a file, guess the language using FileType and encode it.
|
||||
#
|
||||
# == Streaming
|
||||
#
|
||||
# Streaming saves RAM by running Scanner and Encoder in some sort of
|
||||
# pipe mode; see TokenStream.
|
||||
#
|
||||
# CodeRay.scan_stream:: Scan in stream mode.
|
||||
#
|
||||
# == All-in-One Encoding
|
||||
#
|
||||
# CodeRay.encode:: Highlight a string with a given input and output format.
|
||||
#
|
||||
# == Instanciating
|
||||
#
|
||||
# You can use an Encoder instance to highlight multiple inputs. This way, the setup
|
||||
# for this Encoder must only be done once.
|
||||
#
|
||||
# CodeRay.encoder:: Create an Encoder instance with format and options.
|
||||
# CodeRay.scanner:: Create an Scanner instance for lang, with '' as default code.
|
||||
#
|
||||
# To make use of CodeRay.scanner, use CodeRay::Scanner::code=.
|
||||
#
|
||||
# The scanning methods provide more flexibility; we recommend to use these.
|
||||
#
|
||||
# == Reusing Scanners and Encoders
|
||||
#
|
||||
# If you want to re-use scanners and encoders (because that is faster), see
|
||||
# CodeRay::Duo for the most convenient (and recommended) interface.
|
||||
module CodeRay
|
||||
|
||||
$CODERAY_DEBUG ||= false
|
||||
|
||||
# Version: Major.Minor.Teeny[.Revision]
|
||||
# Major: 0 for pre-stable, 1 for stable
|
||||
# Minor: feature milestone
|
||||
# Teeny: development state, 0 for pre-release
|
||||
# Revision: Subversion Revision number (generated on rake gem:make)
|
||||
VERSION = '0.9.7'
|
||||
|
||||
require 'coderay/tokens'
|
||||
require 'coderay/token_classes'
|
||||
require 'coderay/scanner'
|
||||
require 'coderay/encoder'
|
||||
require 'coderay/duo'
|
||||
require 'coderay/style'
|
||||
|
||||
|
||||
class << self
|
||||
|
||||
# Scans the given +code+ (a String) with the Scanner for +lang+.
|
||||
#
|
||||
# This is a simple way to use CodeRay. Example:
|
||||
# require 'coderay'
|
||||
# page = CodeRay.scan("puts 'Hello, world!'", :ruby).html
|
||||
#
|
||||
# See also demo/demo_simple.
|
||||
def scan code, lang, options = {}, &block
|
||||
scanner = Scanners[lang].new code, options, &block
|
||||
scanner.tokenize
|
||||
end
|
||||
|
||||
# Scans +filename+ (a path to a code file) with the Scanner for +lang+.
|
||||
#
|
||||
# If +lang+ is :auto or omitted, the CodeRay::FileType module is used to
|
||||
# determine it. If it cannot find out what type it is, it uses
|
||||
# CodeRay::Scanners::Plaintext.
|
||||
#
|
||||
# Calls CodeRay.scan.
|
||||
#
|
||||
# Example:
|
||||
# require 'coderay'
|
||||
# page = CodeRay.scan_file('some_c_code.c').html
|
||||
def scan_file filename, lang = :auto, options = {}, &block
|
||||
file = IO.read filename
|
||||
if lang == :auto
|
||||
require 'coderay/helpers/file_type'
|
||||
lang = FileType.fetch filename, :plaintext, true
|
||||
end
|
||||
scan file, lang, options = {}, &block
|
||||
end
|
||||
|
||||
# Scan the +code+ (a string) with the scanner for +lang+.
|
||||
#
|
||||
# Calls scan.
|
||||
#
|
||||
# See CodeRay.scan.
|
||||
def scan_stream code, lang, options = {}, &block
|
||||
options[:stream] = true
|
||||
scan code, lang, options, &block
|
||||
end
|
||||
|
||||
# Encode a string in Streaming mode.
|
||||
#
|
||||
# This starts scanning +code+ with the the Scanner for +lang+
|
||||
# while encodes the output with the Encoder for +format+.
|
||||
# +options+ will be passed to the Encoder.
|
||||
#
|
||||
# See CodeRay::Encoder.encode_stream
|
||||
def encode_stream code, lang, format, options = {}
|
||||
encoder(format, options).encode_stream code, lang, options
|
||||
end
|
||||
|
||||
# Encode a string.
|
||||
#
|
||||
# This scans +code+ with the the Scanner for +lang+ and then
|
||||
# encodes it with the Encoder for +format+.
|
||||
# +options+ will be passed to the Encoder.
|
||||
#
|
||||
# See CodeRay::Encoder.encode
|
||||
def encode code, lang, format, options = {}
|
||||
encoder(format, options).encode code, lang, options
|
||||
end
|
||||
|
||||
# Highlight a string into a HTML <div>.
|
||||
#
|
||||
# CSS styles use classes, so you have to include a stylesheet
|
||||
# in your output.
|
||||
#
|
||||
# See encode.
|
||||
def highlight code, lang, options = { :css => :class }, format = :div
|
||||
encode code, lang, format, options
|
||||
end
|
||||
|
||||
# Encode pre-scanned Tokens.
|
||||
# Use this together with CodeRay.scan:
|
||||
#
|
||||
# require 'coderay'
|
||||
#
|
||||
# # Highlight a short Ruby code example in a HTML span
|
||||
# tokens = CodeRay.scan '1 + 2', :ruby
|
||||
# puts CodeRay.encode_tokens(tokens, :span)
|
||||
#
|
||||
def encode_tokens tokens, format, options = {}
|
||||
encoder(format, options).encode_tokens tokens, options
|
||||
end
|
||||
|
||||
# Encodes +filename+ (a path to a code file) with the Scanner for +lang+.
|
||||
#
|
||||
# See CodeRay.scan_file.
|
||||
# Notice that the second argument is the output +format+, not the input language.
|
||||
#
|
||||
# Example:
|
||||
# require 'coderay'
|
||||
# page = CodeRay.encode_file 'some_c_code.c', :html
|
||||
def encode_file filename, format, options = {}
|
||||
tokens = scan_file filename, :auto, get_scanner_options(options)
|
||||
encode_tokens tokens, format, options
|
||||
end
|
||||
|
||||
# Highlight a file into a HTML <div>.
|
||||
#
|
||||
# CSS styles use classes, so you have to include a stylesheet
|
||||
# in your output.
|
||||
#
|
||||
# See encode.
|
||||
def highlight_file filename, options = { :css => :class }, format = :div
|
||||
encode_file filename, format, options
|
||||
end
|
||||
|
||||
# Finds the Encoder class for +format+ and creates an instance, passing
|
||||
# +options+ to it.
|
||||
#
|
||||
# Example:
|
||||
# require 'coderay'
|
||||
#
|
||||
# stats = CodeRay.encoder(:statistic)
|
||||
# stats.encode("puts 17 + 4\n", :ruby)
|
||||
#
|
||||
# puts '%d out of %d tokens have the kind :integer.' % [
|
||||
# stats.type_stats[:integer].count,
|
||||
# stats.real_token_count
|
||||
# ]
|
||||
# #-> 2 out of 4 tokens have the kind :integer.
|
||||
def encoder format, options = {}
|
||||
Encoders[format].new options
|
||||
end
|
||||
|
||||
# Finds the Scanner class for +lang+ and creates an instance, passing
|
||||
# +options+ to it.
|
||||
#
|
||||
# See Scanner.new.
|
||||
def scanner lang, options = {}
|
||||
Scanners[lang].new '', options
|
||||
end
|
||||
|
||||
# Extract the options for the scanner from the +options+ hash.
|
||||
#
|
||||
# Returns an empty Hash if <tt>:scanner_options</tt> is not set.
|
||||
#
|
||||
# This is used if a method like CodeRay.encode has to provide options
|
||||
# for Encoder _and_ scanner.
|
||||
def get_scanner_options options
|
||||
options.fetch :scanner_options, {}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# This Exception is raised when you try to stream with something that is not
|
||||
# capable of streaming.
|
||||
class NotStreamableError < Exception
|
||||
def initialize obj
|
||||
@obj = obj
|
||||
end
|
||||
|
||||
def to_s
|
||||
'%s is not Streamable!' % @obj.class
|
||||
end
|
||||
end
|
||||
|
||||
# A dummy module that is included by subclasses of CodeRay::Scanner an CodeRay::Encoder
|
||||
# to show that they are able to handle streams.
|
||||
module Streamable
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# Run a test script.
|
||||
if $0 == __FILE__
|
||||
$stderr.print 'Press key to print demo.'; gets
|
||||
# Just use this file as an example of Ruby code.
|
||||
code = File.read(__FILE__)[/module CodeRay.*/m]
|
||||
print CodeRay.scan(code, :ruby).html
|
||||
end
|
|
@ -1,85 +0,0 @@
|
|||
module CodeRay
|
||||
|
||||
# = Duo
|
||||
#
|
||||
# A Duo is a convenient way to use CodeRay. You just create a Duo,
|
||||
# giving it a lang (language of the input code) and a format (desired
|
||||
# output format), and call Duo#highlight with the code.
|
||||
#
|
||||
# Duo makes it easy to re-use both scanner and encoder for a repetitive
|
||||
# task. It also provides a very easy interface syntax:
|
||||
#
|
||||
# require 'coderay'
|
||||
# CodeRay::Duo[:python, :div].highlight 'import this'
|
||||
#
|
||||
# Until you want to do uncommon things with CodeRay, I recommend to use
|
||||
# this method, since it takes care of everything.
|
||||
class Duo
|
||||
|
||||
attr_accessor :lang, :format, :options
|
||||
|
||||
# Create a new Duo, holding a lang and a format to highlight code.
|
||||
#
|
||||
# simple:
|
||||
# CodeRay::Duo[:ruby, :page].highlight 'bla 42'
|
||||
#
|
||||
# streaming:
|
||||
# CodeRay::Duo[:ruby, :page].highlight 'bar 23', :stream => true
|
||||
#
|
||||
# with options:
|
||||
# CodeRay::Duo[:ruby, :html, :hint => :debug].highlight '????::??'
|
||||
#
|
||||
# alternative syntax without options:
|
||||
# CodeRay::Duo[:ruby => :statistic].encode 'class << self; end'
|
||||
#
|
||||
# alternative syntax with options:
|
||||
# CodeRay::Duo[{ :ruby => :statistic }, :do => :something].encode 'abc'
|
||||
#
|
||||
# The options are forwarded to scanner and encoder
|
||||
# (see CodeRay.get_scanner_options).
|
||||
def initialize lang = nil, format = nil, options = {}
|
||||
if format == nil and lang.is_a? Hash and lang.size == 1
|
||||
@lang = lang.keys.first
|
||||
@format = lang[@lang]
|
||||
else
|
||||
@lang = lang
|
||||
@format = format
|
||||
end
|
||||
@options = options
|
||||
end
|
||||
|
||||
class << self
|
||||
# To allow calls like Duo[:ruby, :html].highlight.
|
||||
alias [] new
|
||||
end
|
||||
|
||||
# The scanner of the duo. Only created once.
|
||||
def scanner
|
||||
@scanner ||= CodeRay.scanner @lang, CodeRay.get_scanner_options(@options)
|
||||
end
|
||||
|
||||
# The encoder of the duo. Only created once.
|
||||
def encoder
|
||||
@encoder ||= CodeRay.encoder @format, @options
|
||||
end
|
||||
|
||||
# Tokenize and highlight the code using +scanner+ and +encoder+.
|
||||
#
|
||||
# If the :stream option is set, the Duo will go into streaming mode,
|
||||
# saving memory for the cost of time.
|
||||
def encode code, options = { :stream => false }
|
||||
stream = options.delete :stream
|
||||
options = @options.merge options
|
||||
if stream
|
||||
encoder.encode_stream(code, @lang, options)
|
||||
else
|
||||
scanner.code = code
|
||||
encoder.encode_tokens(scanner.tokenize, options)
|
||||
end
|
||||
end
|
||||
alias highlight encode
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue