Compare commits

...

21 Commits
2.1.5 ... 1.3.0

Author SHA1 Message Date
Jean-Philippe Lang
3351ef22b2 tagged version 1.3.0
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/tags/1.3.0@8180 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:50:59 +00:00
Jean-Philippe Lang
e56dd42e64 CHANGELOG updated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8176 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:48:48 +00:00
Jean-Philippe Lang
a0c34ab916 Merged r8166 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8174 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:41:48 +00:00
Jean-Philippe Lang
c8a6b01e9f Backported r8168 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8173 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 14:39:26 +00:00
Jean-Philippe Lang
ff02412e75 Merged r8130 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8161 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 12:20:47 +00:00
Jean-Philippe Lang
166c3c15dd Merged r8112 from trunk (#9748).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8160 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 12:08:55 +00:00
Jean-Philippe Lang
65a7c7e96c Merged r8113 from trunk (#9738).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8159 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-10 12:07:13 +00:00
Jean-Philippe Lang
9a8cf5fa60 Merged r8103 from trunk (#9737).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8114 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 21:47:24 +00:00
Toshi MARUYAMA
bf0008cd4e Merged r8106 from trunk
remove trailing white-spaces from calendar-hr.js

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8110 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 01:25:19 +00:00
Toshi MARUYAMA
b849b9a47e Merged r8105 from trunk
convert calendar-hr.js (Croatian) from Windows-1250 to UTF-8.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8109 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-07 01:24:36 +00:00
Toshi MARUYAMA
011d9587a5 Merged r8099 from trunk
pdf: move note number to the head of line for single issue's PDF.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8100 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-06 03:49:39 +00:00
Jean-Philippe Lang
b7d813047b Merged r8096 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8097 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 19:55:23 +00:00
Toshi MARUYAMA
08784f551e Merged r8090 from trunk
pdf: add note number for single issue's PDF.

Contributed by Akiko T.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8091 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-05 07:39:55 +00:00
Jean-Philippe Lang
faad143c03 Merged r8030 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8032 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-02 22:31:14 +00:00
Toshi MARUYAMA
08b6d7b654 Merged r8022 from trunk
scm: git: mercurial: not show revision graph in sub directory.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8023 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 23:46:26 +00:00
Toshi MARUYAMA
18a30fd942 Merged r8015 from trunk
remove trailing white-spaces except SQL from extra/svn/Redmine.pm.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8016 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 05:31:19 +00:00
Toshi MARUYAMA
2813b93370 Merged r8013 from trunk
Japanese translation updated by Go MAEDA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8014 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-12-01 04:13:04 +00:00
Toshi MARUYAMA
930cf0b487 Merged r8002 from trunk
Bulgarian translation updated by Ivan Cenov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8004 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 08:25:27 +00:00
Toshi MARUYAMA
27ac3193e3 Merged r8001 from trunk
pdf: fix textilized outputs of coderay line numbers.

Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@8003 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-30 08:25:01 +00:00
Jean-Philippe Lang
80f5d3d041 Set version to 1.3.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@7994 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-29 21:05:08 +00:00
Jean-Philippe Lang
a3f8fbaee6 1.3-stable branch added.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@7992 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-11-29 21:02:26 +00:00
21 changed files with 233 additions and 75 deletions

View File

@@ -83,7 +83,8 @@ module QueriesHelper
else
# retrieve from session
@query = Query.find_by_id(session[:query][:id]) if session[:query][:id]
@query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
@query ||= Query.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
@query.project = @project
end
end

View File

@@ -74,7 +74,7 @@ class Mailer < ActionMailer::Base
subject s
body :issue => issue,
:journal => journal,
:issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
:issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue, :anchor => "change-#{journal.id}")
render_multipart('issue_edit', body)
end

View File

@@ -13,7 +13,7 @@
<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
<%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'),
l(:label_issue_category_new),
'category[name]',
'issue_category[name]',
{:controller => 'issue_categories', :action => 'create', :project_id => @project},
:title => l(:label_issue_category_new),
:tabindex => 199) if authorize_for('issue_categories', 'new') %></p>

View File

@@ -1,8 +1,9 @@
<% show_revision_graph = ( @repository.supports_revision_graph? && path.blank? ) %>
<% form_tag({:controller => 'repositories', :action => 'diff', :id => @project, :path => to_path_param(path)}, :method => :get) do %>
<table class="list changesets">
<thead><tr>
<% if @repository.supports_revision_graph? %>
<th></th>
<% if show_revision_graph %>
<th></th>
<% end %>
<th>#</th>
<th></th>
@@ -16,7 +17,7 @@
<% line_num = 1 %>
<% revisions.each do |changeset| %>
<tr class="changeset <%= cycle 'odd', 'even' %>">
<% if @repository.supports_revision_graph? %>
<% if show_revision_graph %>
<% if line_num == 1 %>
<td class="revision_graph" rowspan="<%= revisions.size %>">
<% href_base = Proc.new {|x| url_for(:controller => 'repositories',
@@ -39,7 +40,7 @@
<td class="checkbox"><%= radio_button_tag('rev_to', changeset.identifier, (line_num==2), :id => "cbto-#{line_num}", :onclick => "if ($('cb-#{line_num}').checked==true) {$('cb-#{line_num-1}').checked=true;}") if show_diff && (line_num > 1) %></td>
<td class="committed_on"><%= format_time(changeset.committed_on) %></td>
<td class="author"><%= h truncate(changeset.author.to_s, :length => 30) %></td>
<% if @repository.supports_revision_graph? %>
<% if show_revision_graph %>
<td class="comments_nowrap">
<%= textilizable(truncate(truncate_at_line_break(changeset.comments, 0), :length => 90)) %>
</td>

View File

@@ -370,7 +370,7 @@ bg:
setting_issue_done_ratio_issue_status: Използване на състоянието на задачите
setting_start_of_week: Първи ден на седмицата
setting_rest_api_enabled: Разрешаване на REST web сървис
setting_cache_formatted_text: Cache formatted text
setting_cache_formatted_text: Кещиране на форматираните текстове
setting_default_notification_option: Подразбиращ се начин за известяване
setting_commit_logtime_enabled: Разрешаване на отчитането на работното време
setting_commit_logtime_activity_id: Дейност при отчитане на работното време

View File

@@ -349,8 +349,8 @@ ja:
setting_default_language: 既定の言語
setting_login_required: 認証が必要
setting_self_registration: ユーザは自分で登録できる
setting_attachment_max_size: 添付ファイルの最大サイズ
setting_issues_export_limit: 出力するチケット数の上限
setting_attachment_max_size: 添付ファイルサイズの上限
setting_issues_export_limit: エクスポートするチケット数の上限
setting_mail_from: 送信元メールアドレス
setting_bcc_recipients: ブラインドカーボンコピーで受信(bcc)
setting_plain_text_mail: プレインテキストのみ(HTMLなし)
@@ -376,7 +376,7 @@ ja:
setting_per_page_options: ページ毎の表示件数
setting_user_format: ユーザ名の表示書式
setting_activity_days_default: プロジェクトの活動ページに表示される日数
setting_display_subprojects_issues: デフォルトでサブプロジェクトのチケットをメインプロジェクトに表示する
setting_display_subprojects_issues: サブプロジェクトのチケットをメインプロジェクトに表示する
setting_enabled_scm: 使用するバージョン管理システム
setting_mail_handler_body_delimiters: "メール本文から一致する行以降を切り取る"
setting_mail_handler_api_enabled: 受信メール用のWebサービスを有効にする
@@ -385,7 +385,7 @@ ja:
setting_gravatar_enabled: Gravatarのアイコンを使用する
setting_gravatar_default: デフォルトのGravatarアイコン
setting_diff_max_lines_displayed: 差分の表示行数の上限
setting_file_max_size_displayed: テキストファイルのインライン表示行数の上限
setting_file_max_size_displayed: 画面表示するテキストファイルサイズの上限
setting_repository_log_display_limit: ファイルのリビジョン表示数の上限
setting_openid: OpenIDによるログインと登録
setting_password_min_length: パスワードの最低必要文字数
@@ -439,7 +439,7 @@ ja:
permission_rename_wiki_pages: Wikiページ名の変更
permission_delete_wiki_pages: Wikiページの削除
permission_view_wiki_pages: Wikiの閲覧
permission_export_wiki_pages: Wikiページを他の形式に出力
permission_export_wiki_pages: Wikiページを他の形式にエクスポート
permission_view_wiki_edits: Wiki履歴の閲覧
permission_edit_wiki_pages: Wikiページの編集
permission_delete_wiki_pages_attachments: 添付ファイルの削除
@@ -583,7 +583,7 @@ ja:
label_version_plural: バージョン
label_confirmation: 確認
label_close_versions: 完了したバージョンを終了にする
label_export_to: '他の形式に出力:'
label_export_to: '他の形式にエクスポート:'
label_read: 読む...
label_public_projects: 公開プロジェクト
label_open_issues: 未完了
@@ -680,7 +680,7 @@ ja:
label_latest_revision_plural: 最新リビジョン
label_view_revisions: リビジョンを見る
label_view_all_revisions: すべてのリビジョンを見る
label_max_size: 最大サイズ
label_max_size: サイズの上限
label_sort_highest: 一番上へ
label_sort_higher: 上へ
label_sort_lower: 下へ
@@ -878,7 +878,7 @@ ja:
button_change_password: パスワード変更
button_copy: コピー
button_copy_and_follow: コピー後表示
button_annotate: 注釈
button_annotate: アノテート
button_update: 更新
button_configure: 設定
button_quote: 引用
@@ -1012,27 +1012,27 @@ ja:
notice_issue_successful_create: チケット %{id} が作成されました。
label_between: 次の範囲内
setting_issue_group_assignment: グループへのチケット割り当てを許可
description_query_sort_criteria_direction: Sort direction
description_project_scope: Search scope
description_query_sort_criteria_direction: 順序
description_project_scope: 検索範囲
description_filter: Filter
description_user_mail_notification: Mail notification settings
description_date_from: Enter start date
description_message_content: Message content
description_available_columns: Available Columns
description_date_range_interval: Choose range by selecting start and end date
description_issue_category_reassign: Choose issue category
description_search: Searchfield
description_notes: Notes
description_date_range_list: Choose range from list
description_choose_project: Projects
description_date_to: Enter end date
description_query_sort_criteria_attribute: Sort attribute
description_wiki_subpages_reassign: Choose new parent page
description_selected_columns: Selected Columns
error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size.
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Edit this section
description_all_columns: All Columns
button_export: Export
label_export_options: "%{export_format} export options"
error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})
description_user_mail_notification: メール通知の設定
description_date_from: 開始日
description_message_content: 内容
description_available_columns: 利用できる項目
description_date_range_interval: 日付で指定
description_issue_category_reassign: 新しいカテゴリを選択してください
description_search: 検索キーワード
description_notes: 注記
description_date_range_list: 一覧から選択
description_choose_project: プロジェクト
description_date_to: 終了日
description_query_sort_criteria_attribute: 項目
description_wiki_subpages_reassign: 新しい親ページを選択してください
description_selected_columns: 選択された項目
error_scm_annotate_big_text_file: テキストファイルサイズの上限を超えているためアノテートできません。
setting_default_issue_start_date_to_creation_date: 現在の日付を新しいチケットの開始日とする
button_edit_section: このセクションを編集
description_all_columns: すべての項目
button_export: エクスポート
label_export_options: "%{export_format} エクスポート設定"
error_attachment_too_big: このファイルはアップロードできません。添付ファイルサイズの上限(%{max_size})を超えています。

View File

@@ -80,7 +80,7 @@ ActionController::Routing::Routes.draw do |map|
map.resources :queries, :except => [:show]
# Misc issue routes. TODO: move into resources
map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues'
map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues', :conditions => { :method => :get }
map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue' # TODO: would look nicer as /issues/:id/preview
map.issues_context_menu '/issues/context_menu', :controller => 'context_menus', :action => 'issues'
map.issue_changes '/issues/changes', :controller => 'journals', :action => 'index'

View File

@@ -4,6 +4,107 @@ Redmine - project management software
Copyright (C) 2006-2011 Jean-Philippe Lang
http://www.redmine.org/
== 2011-12-10 v1.3.0
* Defect #2109: Context menu is being submitted twice per right click
* Defect #7717: MailHandler user creation for unknown_user impossible due to diverging length-limits of login and email fields
* Defect #7917: Creating users via email fails if user real name containes special chars
* Defect #7966: MailHandler does not include JournalDetail for attached files
* Defect #8368: Bad decimal separator in time entry CSV
* Defect #8371: MySQL error when filtering a custom field using the REST api
* Defect #8549: Export CSV has character encoding error
* Defect #8573: Do not show inactive Enumerations where not needed
* Defect #8611: rake/rdoctask is deprecated
* Defect #8751: Email notification: bug, when number of recipients more then 8
* Defect #8894: Private issues - make it more obvious in the UI?
* Defect #8994: Hardcoded French string "anonyme"
* Defect #9043: Hardcoded string "diff" in Wiki#show and Repositories_Helper
* Defect #9051: wrong "text_issue_added" in russian translation.
* Defect #9108: Custom query not saving status filter
* Defect #9252: Regression: application title escaped 2 times
* Defect #9264: Bad Portuguese translation
* Defect #9470: News list is missing Avatars
* Defect #9471: Inline markup broken in Wiki link labels
* Defect #9489: Label all input field and control tags
* Defect #9534: Precedence: bulk email header is non standard and discouraged
* Defect #9540: Issue filter by assigned_to_role is not project specific
* Defect #9619: Time zone ignored when logging time while editing ticket
* Defect #9638: Inconsistent image filename extensions
* Defect #9669: Issue list doesn't sort assignees/authors regarding user display format
* Defect #9672: Message-quoting in forums module broken
* Defect #9719: Filtering by numeric custom field types broken after update to master
* Defect #9724: Can't remote add new categories
* Defect #9738: Setting of cross-project custom query is not remembered inside project
* Defect #9748: Error about configuration.yml validness should mention file path
* Feature #69: Textilized description in PDF
* Feature #401: Add pdf export for WIKI page
* Feature #1567: Make author column sortable and groupable
* Feature #2222: Single section edit.
* Feature #2269: Default issue start date should become configurable.
* Feature #2371: character encoding for attachment file
* Feature #2964: Ability to assign issues to groups
* Feature #3033: Bug Reporting: Using "Create and continue" should show bug id of saved bug
* Feature #3261: support attachment images in PDF export
* Feature #4264: Update CodeRay to 1.0 final
* Feature #4324: Redmine renames my files, it shouldn't.
* Feature #4729: Add Date-Based Filters for Issues List
* Feature #4742: CSV export: option to export selected or all columns
* Feature #4976: Allow rdm-mailhandler to read the API key from a file
* Feature #5501: Git: Mercurial: Adding visual merge/branch history to repository view
* Feature #5634: Export issue to PDF does not include Subtasks and Related Issues
* Feature #5670: Cancel option for file upload
* Feature #5737: Custom Queries available through the REST Api
* Feature #6180: Searchable custom fields do not provide adequate operators
* Feature #6954: Filter from date to date
* Feature #7180: List of statuses in REST API
* Feature #7181: List of trackers in REST API
* Feature #7366: REST API for Issue Relations
* Feature #7403: REST API for Versions
* Feature #7671: REST API for reading attachments
* Feature #7832: Ability to assign issue categories to groups
* Feature #8420: Consider removing #7013 workaround
* Feature #9196: Improve logging in MailHandler when user creation fails
* Feature #9496: Adds an option in mailhandler to disable server certificate verification
* Feature #9553: CRUD operations for "Issue categories" in REST API
* Feature #9593: HTML title should be reordered
* Feature #9600: Wiki links for news and forums
* Feature #9607: Filter for issues without start date (or any another field based on date type)
* Feature #9609: Upgrade to Rails 2.3.14
* Feature #9612: "side by side" and "inline" patch view for attachments
* Feature #9667: Check attachment size before upload
* Feature #9690: Link in notification pointing to the actual update
* Feature #9720: Add note number for single issue's PDF
* Patch #8617: Indent subject of subtask ticket in exported issues PDF
* Patch #8778: Traditional Chinese 'issue' translation change
* Patch #9053: Fix up Russian translation
* Patch #9129: Improve wording of Git repository note at project setting
* Patch #9148: Better handling of field_due_date italian translation
* Patch #9273: Fix typos in russian localization
* Patch #9484: Limit SCM annotate to text files under the maximum file size for viewing
* Patch #9659: Indexing rows in auth_sources/index view
* Patch #9692: Fix Textilized description in PDF for CodeRay
== 2011-12-10 v1.2.3
* Defect #8707: Reposman: wrong constant name
* Defect #8809: Table in timelog report overflows
* Defect #9055: Version files in Files module cannot be downloaded if issue tracking is disabled
* Defect #9137: db:encrypt fails to handle repositories with blank password
* Defect #9394: Custom date field only validating on regex and not a valid date
* Defect #9405: Any user with :log_time permission can edit time entries via context menu
* Defect #9448: The attached images are not shown in documents
* Defect #9520: Copied private query not visible after project copy
* Defect #9552: Error when reading ciphered text from the database without cipher key configured
* Defect #9566: Redmine.pm considers all projects private when login_required is enabled
* Defect #9567: Redmine.pm potential security issue with cache credential enabled and subversion
* Defect #9577: Deleting a subtasks doesn't update parent's rgt & lft values
* Defect #9597: Broken version links in wiki annotate history
* Defect #9682: Wiki HTML Export only useful when Access history is accessible
* Defect #9737: Custom values deleted before issue submit
* Defect #9741: calendar-hr.js (Croatian) is not UTF-8
* Patch #9558: Simplified Chinese translation for 1.2.2 updated
* Patch #9695: Bulgarian translation (r7942)
== 2011-11-11 v1.2.2
* Defect #3276: Incorrect handling of anchors in Wiki to HTML export

View File

@@ -49,7 +49,7 @@ Authen::Simple::LDAP (and IO::Socket::SSL if LDAPS is used):
PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler
## for mysql
RedmineDSN "DBI:mysql:database=databasename;host=my.db.server"
## for postgres
@@ -144,7 +144,7 @@ my @directives = (
},
);
sub RedmineDSN {
sub RedmineDSN {
my ($self, $parms, $arg) = @_;
$self->{RedmineDSN} = $arg;
my $query = "SELECT
@@ -164,12 +164,12 @@ sub RedmineDSN {
sub RedmineDbUser { set_val('RedmineDbUser', @_); }
sub RedmineDbPass { set_val('RedmineDbPass', @_); }
sub RedmineDbWhereClause {
sub RedmineDbWhereClause {
my ($self, $parms, $arg) = @_;
$self->{RedmineQuery} = trim($self->{RedmineQuery}.($arg ? $arg : "")." ");
}
sub RedmineCacheCredsMax {
sub RedmineCacheCredsMax {
my ($self, $parms, $arg) = @_;
if ($arg) {
$self->{RedmineCachePool} = APR::Pool->new;
@@ -216,10 +216,10 @@ sub access_handler {
sub authen_handler {
my $r = shift;
my ($res, $redmine_pass) = $r->get_basic_auth_pw();
return $res unless $res == OK;
if (is_member($r->user, $redmine_pass, $r)) {
return OK;
} else {
@@ -246,7 +246,7 @@ sub is_authentication_forced {
}
$sth->finish();
undef $sth;
$dbh->disconnect();
undef $dbh;
@@ -256,7 +256,7 @@ sub is_authentication_forced {
sub is_public_project {
my $project_id = shift;
my $r = shift;
if (is_authentication_forced($r)) {
return 0;
}
@@ -283,12 +283,12 @@ sub is_public_project {
sub anonymous_role_allows_browse_repository {
my $r = shift;
my $dbh = connect_database($r);
my $sth = $dbh->prepare(
"SELECT permissions FROM roles WHERE builtin = 2;"
);
$sth->execute();
my $ret = 0;
if (my @row = $sth->fetchrow_array) {
@@ -300,7 +300,7 @@ sub anonymous_role_allows_browse_repository {
undef $sth;
$dbh->disconnect();
undef $dbh;
$ret;
}
@@ -328,7 +328,7 @@ sub is_member {
my $project_id = get_project_identifier($r);
my $pass_digest = Digest::SHA1::sha1_hex($redmine_pass);
my $access_mode = defined $read_only_methods{$r->method} ? "R" : "W";
my $cfg = Apache2::Module::get_config(__PACKAGE__, $r->server, $r->per_dir_config);
@@ -397,7 +397,7 @@ sub is_member {
sub get_project_identifier {
my $r = shift;
my $location = $r->location;
my ($identifier) = $r->uri =~ m{$location/*([^/]+)};
$identifier;
@@ -405,7 +405,7 @@ sub get_project_identifier {
sub connect_database {
my $r = shift;
my $cfg = Apache2::Module::get_config(__PACKAGE__, $r->server, $r->per_dir_config);
return DBI->connect($cfg->{RedmineDSN}, $cfg->{RedmineDbUser}, $cfg->{RedmineDbPass});
}

View File

@@ -79,7 +79,13 @@ module Redmine
private
def load_from_yaml(filename, env)
yaml = YAML::load_file(filename)
yaml = nil
begin
yaml = YAML::load_file(filename)
rescue ArgumentError
$stderr.puts "Your Redmine configuration file located at #{filename} is not a valid YAML file and could not be loaded."
exit 1
end
conf = {}
if yaml.is_a?(Hash)
if yaml['default']
@@ -89,7 +95,7 @@ module Redmine
conf.merge!(yaml[env])
end
else
$stderr.puts "#{filename} is not a valid Redmine configuration file"
$stderr.puts "Your Redmine configuration file located at #{filename} is not a valid Redmine configuration file."
exit 1
end
conf

View File

@@ -452,12 +452,16 @@ module Redmine
pdf.SetFontStyle('B',9)
pdf.RDMCell(190,5, l(:label_history), "B")
pdf.Ln
indice = 0
for journal in issue.journals.find(
:all, :include => [:user, :details],
:order => "#{Journal.table_name}.created_on ASC")
indice = indice + 1
pdf.SetFontStyle('B',8)
pdf.RDMCell(190,5,
format_time(journal.created_on) + " - " + journal.user.name)
"#" + indice.to_s +
" - " + format_time(journal.created_on) +
" - " + journal.user.name)
pdf.Ln
pdf.SetFontStyle('I',8)
for detail in journal.details

View File

@@ -3,14 +3,14 @@ require 'rexml/document'
module Redmine
module VERSION #:nodoc:
MAJOR = 1
MINOR = 2
TINY = 2
MINOR = 3
TINY = 0
# Branch values:
# * official release: nil
# * stable branch: stable
# * trunk: devel
BRANCH = 'devel'
BRANCH = 'stable'
def self.revision
revision = nil

View File

@@ -77,7 +77,7 @@ module Redmine
end
desc "Displays a list of all available macros, including description if available."
macro :macro_list do
macro :macro_list do |obj, args|
out = ''
@@available_macros.keys.collect(&:to_s).sort.each do |macro|
out << content_tag('dt', content_tag('code', macro))

View File

@@ -293,6 +293,7 @@ function observeParentIssueField(url) {
{ minChars: 3,
frequency: 0.5,
paramName: 'q',
method: 'get',
updateElement: function(value) {
document.getElementById('issue_parent_issue_id').value = value.id;
}});
@@ -305,6 +306,7 @@ function observeRelatedIssueField(url) {
{ minChars: 3,
frequency: 0.5,
paramName: 'q',
method: 'get',
updateElement: function(value) {
document.getElementById('relation_issue_to_id').value = value.id;
},

View File

@@ -18,7 +18,7 @@ Calendar._DN = new Array
"Cetvrtak",
"Petak",
"Subota",
"Nedjelja");
"Nedjelja");
// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary. We give it here
@@ -51,7 +51,7 @@ Calendar._FD = 0;
Calendar._MN = new Array
("Sijecanj",
"Veljaca",
"Ožujak",
"Ožujak",
"Travanj",
"Svibanj",
"Lipanj",
@@ -66,7 +66,7 @@ Calendar._MN = new Array
Calendar._SMN = new Array
("Sij",
"Velj",
"Ožu",
"Ožu",
"Tra",
"Svi",
"Lip",
@@ -100,7 +100,7 @@ Calendar._TT["ABOUT_TIME"] = "\n\n" +
Calendar._TT["PREV_YEAR"] = "Prethodna godina (hold for menu)";
Calendar._TT["PREV_MONTH"] = "Prethodni mjesec (hold for menu)";
Calendar._TT["GO_TODAY"] = "Na današnji dan";
Calendar._TT["GO_TODAY"] = "Na današnji dan";
Calendar._TT["NEXT_MONTH"] = "Naredni mjesec (hold for menu)";
Calendar._TT["NEXT_YEAR"] = "Naredna godina (hold for menu)";
Calendar._TT["SEL_DATE"] = "Odaberite datum";
@@ -109,7 +109,7 @@ Calendar._TT["PART_TODAY"] = " (Danas)";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Prikaži %s prvo";
Calendar._TT["DAY_FIRST"] = "Prikaži %s prvo";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1

View File

@@ -254,6 +254,28 @@ class IssuesControllerTest < ActionController::TestCase
assert_not_nil assigns(:issue_count_by_group)
end
def test_index_with_query_id_and_project_id_should_set_session_query
get :index, :project_id => 1, :query_id => 4
assert_response :success
assert_kind_of Hash, session[:query]
assert_equal 4, session[:query][:id]
assert_equal 1, session[:query][:project_id]
end
def test_index_with_cross_project_query_in_session_should_show_project_issues
q = Query.create!(:name => "test", :user_id => 2, :is_public => false, :project => nil)
@request.session[:query] = {:id => q.id, :project_id => 1}
with_settings :display_subprojects_issues => '0' do
get :index, :project_id => 1
end
assert_response :success
assert_not_nil assigns(:query)
assert_equal q.id, assigns(:query).id
assert_equal 1, assigns(:query).project_id
assert_equal [1], assigns(:issues).map(&:project_id).uniq
end
def test_private_query_should_not_be_available_to_other_users
q = Query.create!(:name => "private", :user => User.find(2), :is_public => false, :project => nil)
@request.session[:user_id] = 3

View File

@@ -765,7 +765,7 @@ RAW
'</ul>'
@project = Project.find(1)
assert textilizable(raw).gsub("\n", "").include?(expected), textilizable(raw)
assert textilizable(raw).gsub("\n", "").include?(expected)
end
def test_table_of_content_should_contain_included_page_headings

View File

@@ -278,6 +278,22 @@ class IssueTest < ActiveSupport::TestCase
assert_equal custom_value.id, issue.custom_value_for(field).id
end
def test_should_not_update_custom_fields_on_changing_tracker_with_different_custom_fields
issue = Issue.new(:project_id => 1)
issue.attributes = {:tracker_id => 1, :author_id => 1, :status_id => 1, :subject => 'Test', :custom_field_values => {'2' => 'Test'}}
issue.save!
assert !Tracker.find(2).custom_field_ids.include?(2)
issue = Issue.find(issue.id)
issue.attributes = {:tracker_id => 2, :custom_field_values => {'1' => ''}}
issue = Issue.find(issue.id)
custom_value = issue.custom_value_for(2)
assert_not_nil custom_value
assert_equal 'Test', custom_value.value
end
def test_assigning_tracker_id_should_reload_custom_fields_values
issue = Issue.new(:project => Project.find(1))
assert issue.custom_field_values.empty?

View File

@@ -48,7 +48,7 @@ class MailerTest < ActiveSupport::TestCase
assert_select_email do
# link to the main ticket
assert_select "a[href=?]",
"https://mydomain.foo/issues/1",
"https://mydomain.foo/issues/1#change-2",
:text => "Bug #1: Can't print recipes"
# link to a referenced ticket
assert_select "a[href=?][title=?]",
@@ -78,7 +78,7 @@ class MailerTest < ActiveSupport::TestCase
assert_select_email do
# link to the main ticket
assert_select "a[href=?]",
"http://mydomain.foo/rdm/issues/1",
"http://mydomain.foo/rdm/issues/1#change-2",
:text => "Bug #1: Can't print recipes"
# link to a referenced ticket
assert_select "a[href=?][title=?]",
@@ -111,7 +111,7 @@ class MailerTest < ActiveSupport::TestCase
assert_select_email do
# link to the main ticket
assert_select "a[href=?]",
"http://mydomain.foo/rdm/issues/1",
"http://mydomain.foo/rdm/issues/1#change-2",
:text => "Bug #1: Can't print recipes"
# link to a referenced ticket
assert_select "a[href=?][title=?]",
@@ -213,6 +213,11 @@ class MailerTest < ActiveSupport::TestCase
assert_not_nil mail
assert_equal Mailer.message_id_for(journal), mail.message_id
assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
assert_select_email do
# link to the update
assert_select "a[href=?]",
"http://mydomain.foo/issues/#{journal.journalized_id}#change-#{journal.id}"
end
end
def test_message_posted_message_id

View File

@@ -71,7 +71,6 @@ module Redmine
custom_field_values.each do |custom_value|
custom_value.value = values[custom_value.custom_field_id.to_s] if values.has_key?(custom_value.custom_field_id.to_s)
end if values.is_a?(Hash)
self.custom_values = custom_field_values
end
def custom_field_values
@@ -92,6 +91,7 @@ module Redmine
end
def save_custom_field_values
self.custom_values = custom_field_values
custom_field_values.each(&:save)
@custom_field_values_changed = false
@custom_field_values = nil

View File

@@ -3532,11 +3532,11 @@ class TCPDF
@page = base_page;
@x = base_x + @tdwidth;
@y = base_y;
elsif (@pre_state == true and element.length > 0)
Write(@lasth, unhtmlentities(element), '', fill);
elsif (element.strip.length > 0)
if @pre_state != true
element.gsub!(/[\t\r\n\f]/, "");
element.gsub!(/&nbsp;/, " ");
end
element.gsub!(/[\t\r\n\f]/, "");
element.gsub!(/&nbsp;/, " ");
Write(@lasth, unhtmlentities(element), '', fill);
end
end