settings are now stored in the database (config_custom.rb no more used) and editable through the application in: Admin -> Settings
git-svn-id: http://redmine.rubyforge.org/svn/trunk@167 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
a1b12335ab
commit
0b4d4db131
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -95,7 +95,7 @@ class AccountController < ApplicationController
|
||||||
|
|
||||||
# User self-registration
|
# User self-registration
|
||||||
def register
|
def register
|
||||||
redirect_to :controller => '' and return if $RDM_SELF_REGISTRATION == false
|
redirect_to :controller => '' and return unless Setting.self_registration?
|
||||||
if params[:token]
|
if params[:token]
|
||||||
token = Token.find_by_action_and_value("register", params[:token])
|
token = Token.find_by_action_and_value("register", params[:token])
|
||||||
redirect_to :controller => '' and return unless token and !token.expired?
|
redirect_to :controller => '' and return unless token and !token.expired?
|
||||||
|
@ -110,7 +110,7 @@ class AccountController < ApplicationController
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if request.get?
|
if request.get?
|
||||||
@user = User.new(:language => $RDM_DEFAULT_LANG)
|
@user = User.new(:language => Setting.default_language)
|
||||||
@custom_values = UserCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @user) }
|
@custom_values = UserCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @user) }
|
||||||
else
|
else
|
||||||
@user = User.new(params[:user])
|
@user = User.new(params[:user])
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -33,7 +33,7 @@ class ApplicationController < ActionController::Base
|
||||||
|
|
||||||
# check if login is globally required to access the application
|
# check if login is globally required to access the application
|
||||||
def check_if_login_required
|
def check_if_login_required
|
||||||
require_login if $RDM_LOGIN_REQUIRED
|
require_login if Setting.login_required?
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_localization
|
def set_localization
|
||||||
|
@ -48,7 +48,7 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
rescue
|
rescue
|
||||||
nil
|
nil
|
||||||
end || $RDM_DEFAULT_LANG
|
end || Setting.default_language
|
||||||
set_language_if_valid(lang)
|
set_language_if_valid(lang)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
# redMine - project management software
|
||||||
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
class SettingsController < ApplicationController
|
||||||
|
layout 'base'
|
||||||
|
before_filter :require_admin
|
||||||
|
|
||||||
|
def index
|
||||||
|
edit
|
||||||
|
render :action => 'edit'
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
if request.post? and params[:settings] and params[:settings].is_a? Hash
|
||||||
|
params[:settings].each { |name, value| Setting[name] = value }
|
||||||
|
redirect_to :action => 'edit' and return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -45,7 +45,7 @@ class UsersController < ApplicationController
|
||||||
|
|
||||||
def add
|
def add
|
||||||
if request.get?
|
if request.get?
|
||||||
@user = User.new(:language => $RDM_DEFAULT_LANG)
|
@user = User.new(:language => Setting.default_language)
|
||||||
@custom_values = UserCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @user) }
|
@custom_values = UserCustomField.find(:all).collect { |x| CustomValue.new(:custom_field => x, :customized => @user) }
|
||||||
else
|
else
|
||||||
@user = User.new(params[:user])
|
@user = User.new(params[:user])
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -93,7 +93,7 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def textilizable(text)
|
def textilizable(text)
|
||||||
$RDM_TEXTILE_DISABLED ? simple_format(auto_link(h(text))) : RedCloth.new(h(text)).to_html
|
(Setting.text_formatting == 'textile') && (ActionView::Helpers::TextHelper.method_defined? "textilize") ? RedCloth.new(h(text)).to_html : simple_format(auto_link(h(text)))
|
||||||
end
|
end
|
||||||
|
|
||||||
def error_messages_for(object_name, options = {})
|
def error_messages_for(object_name, options = {})
|
||||||
|
@ -131,8 +131,9 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def lang_options_for_select
|
def lang_options_for_select(blank=true)
|
||||||
[["(auto)", ""]] + (GLoc.valid_languages.sort {|x,y| x.to_s <=> y.to_s }).collect {|lang| [ l_lang_name(lang.to_s, lang), lang.to_s]}
|
(blank ? [["(auto)", ""]] : []) +
|
||||||
|
(GLoc.valid_languages.sort {|x,y| x.to_s <=> y.to_s }).collect {|lang| [ l_lang_name(lang.to_s, lang), lang.to_s]}
|
||||||
end
|
end
|
||||||
|
|
||||||
def label_tag_for(name, option_tags = nil, options = {})
|
def label_tag_for(name, option_tags = nil, options = {})
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
# redMine - project management software
|
||||||
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
module SettingsHelper
|
||||||
|
end
|
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -21,11 +21,14 @@ class Attachment < ActiveRecord::Base
|
||||||
belongs_to :container, :polymorphic => true
|
belongs_to :container, :polymorphic => true
|
||||||
belongs_to :author, :class_name => "User", :foreign_key => "author_id"
|
belongs_to :author, :class_name => "User", :foreign_key => "author_id"
|
||||||
|
|
||||||
@@max_size = $RDM_ATTACHMENT_MAX_SIZE || 5*1024*1024
|
|
||||||
cattr_reader :max_size
|
|
||||||
|
|
||||||
validates_presence_of :container, :filename
|
validates_presence_of :container, :filename
|
||||||
validates_inclusion_of :filesize, :in => 1..@@max_size
|
|
||||||
|
cattr_accessor :storage_path
|
||||||
|
@@storage_path = "#{RAILS_ROOT}/files"
|
||||||
|
|
||||||
|
def validate
|
||||||
|
errors.add_to_base :too_long if self.filesize > Setting.attachment_max_size.to_i.kilobytes
|
||||||
|
end
|
||||||
|
|
||||||
def file=(incomming_file)
|
def file=(incomming_file)
|
||||||
unless incomming_file.nil?
|
unless incomming_file.nil?
|
||||||
|
@ -63,7 +66,7 @@ class Attachment < ActiveRecord::Base
|
||||||
|
|
||||||
# Returns file's location on disk
|
# Returns file's location on disk
|
||||||
def diskfile
|
def diskfile
|
||||||
"#{$RDM_STORAGE_PATH}/#{self.disk_filename}"
|
"#{@@storage_path}/#{self.disk_filename}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def increment_download
|
def increment_download
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -16,13 +16,12 @@
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
class Mailer < ActionMailer::Base
|
class Mailer < ActionMailer::Base
|
||||||
|
|
||||||
helper IssuesHelper
|
helper IssuesHelper
|
||||||
|
|
||||||
def issue_add(issue)
|
def issue_add(issue)
|
||||||
# Sends to all project members
|
# Sends to all project members
|
||||||
@recipients = issue.project.members.collect { |m| m.user.mail if m.user.mail_notification }.compact
|
@recipients = issue.project.members.collect { |m| m.user.mail if m.user.mail_notification }.compact
|
||||||
@from = $RDM_MAIL_FROM
|
@from = Setting.mail_from
|
||||||
@subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] #{issue.status.name} - #{issue.subject}"
|
@subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] #{issue.status.name} - #{issue.subject}"
|
||||||
@body['issue'] = issue
|
@body['issue'] = issue
|
||||||
end
|
end
|
||||||
|
@ -31,7 +30,7 @@ class Mailer < ActionMailer::Base
|
||||||
# Sends to all project members
|
# Sends to all project members
|
||||||
issue = journal.journalized
|
issue = journal.journalized
|
||||||
@recipients = issue.project.members.collect { |m| m.user.mail if m.user.mail_notification }.compact
|
@recipients = issue.project.members.collect { |m| m.user.mail if m.user.mail_notification }.compact
|
||||||
@from = $RDM_MAIL_FROM
|
@from = Setting.mail_from
|
||||||
@subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] #{issue.status.name} - #{issue.subject}"
|
@subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] #{issue.status.name} - #{issue.subject}"
|
||||||
@body['issue'] = issue
|
@body['issue'] = issue
|
||||||
@body['journal']= journal
|
@body['journal']= journal
|
||||||
|
@ -39,14 +38,14 @@ class Mailer < ActionMailer::Base
|
||||||
|
|
||||||
def lost_password(token)
|
def lost_password(token)
|
||||||
@recipients = token.user.mail
|
@recipients = token.user.mail
|
||||||
@from = $RDM_MAIL_FROM
|
@from = Setting.mail_from
|
||||||
@subject = l(:mail_subject_lost_password)
|
@subject = l(:mail_subject_lost_password)
|
||||||
@body['token'] = token
|
@body['token'] = token
|
||||||
end
|
end
|
||||||
|
|
||||||
def register(token)
|
def register(token)
|
||||||
@recipients = token.user.mail
|
@recipients = token.user.mail
|
||||||
@from = $RDM_MAIL_FROM
|
@from = Setting.mail_from
|
||||||
@subject = l(:mail_subject_register)
|
@subject = l(:mail_subject_register)
|
||||||
@body['token'] = token
|
@body['token'] = token
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
# redMine - project management software
|
||||||
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
class Setting < ActiveRecord::Base
|
||||||
|
|
||||||
|
cattr_accessor :available_settings
|
||||||
|
@@available_settings = YAML::load(File.open("#{RAILS_ROOT}/config/settings.yml"))
|
||||||
|
|
||||||
|
validates_uniqueness_of :name
|
||||||
|
validates_inclusion_of :name, :in => @@available_settings.keys
|
||||||
|
validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' }
|
||||||
|
|
||||||
|
def self.get(name)
|
||||||
|
name = name.to_s
|
||||||
|
setting = find_by_name(name)
|
||||||
|
setting ||= new(:name => name, :value => @@available_settings[name]['default']) if @@available_settings.has_key? name
|
||||||
|
setting
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.[](name)
|
||||||
|
get(name).value
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.[]=(name, value)
|
||||||
|
setting = get(name)
|
||||||
|
setting.value = value
|
||||||
|
setting.save
|
||||||
|
setting.value
|
||||||
|
end
|
||||||
|
|
||||||
|
@@available_settings.each do |name, params|
|
||||||
|
src = <<-END_SRC
|
||||||
|
def self.#{name}
|
||||||
|
self[:#{name}]
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.#{name}?
|
||||||
|
self[:#{name}].to_s == "1"
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.#{name}=(value)
|
||||||
|
self[:#{name}] = values
|
||||||
|
end
|
||||||
|
END_SRC
|
||||||
|
class_eval src, __FILE__, __LINE__
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -69,7 +69,7 @@ class User < ActiveRecord::Base
|
||||||
if attrs
|
if attrs
|
||||||
onthefly = new(*attrs)
|
onthefly = new(*attrs)
|
||||||
onthefly.login = login
|
onthefly.login = login
|
||||||
onthefly.language = $RDM_DEFAULT_LANG
|
onthefly.language = Setting.default_language
|
||||||
if onthefly.save
|
if onthefly.save
|
||||||
user = find(:first, :conditions => ["login=?", login])
|
user = find(:first, :conditions => ["login=?", login])
|
||||||
logger.info("User '#{user.login}' created on the fly.") if logger
|
logger.info("User '#{user.login}' created on the fly.") if logger
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<p><center><input type="submit" name="login" value="<%=l(:button_login)%> »" class="primary" /></center>
|
<p><center><input type="submit" name="login" value="<%=l(:button_login)%> »" class="primary" /></center>
|
||||||
<%= end_form_tag %>
|
<%= end_form_tag %>
|
||||||
|
|
||||||
<br><% unless $RDM_SELF_REGISTRATION == false %><%= link_to l(:label_register), :action => 'register' %> |<% end %>
|
<br><% if Setting.self_registration? %><%= link_to l(:label_register), :action => 'register' %> |<% end %>
|
||||||
<%= link_to l(:label_password_lost), :action => 'lost_password' %></p>
|
<%= link_to l(:label_password_lost), :action => 'lost_password' %></p>
|
||||||
</div>
|
</div>
|
||||||
</center>
|
</center>
|
|
@ -36,6 +36,10 @@
|
||||||
<%= link_to l(:label_authentication), :controller => 'auth_sources' %>
|
<%= link_to l(:label_authentication), :controller => 'auth_sources' %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p class="icon22 icon22-settings">
|
||||||
|
<%= link_to l(:label_settings), :controller => 'settings' %>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p class="icon22 icon22-info">
|
<p class="icon22 icon22-info">
|
||||||
<%= link_to l(:label_information_plural), :controller => 'admin', :action => 'info' %>
|
<%= link_to l(:label_information_plural), :controller => 'admin', :action => 'info' %>
|
||||||
</p>
|
</p>
|
|
@ -14,7 +14,7 @@
|
||||||
<!--[eoform:document]-->
|
<!--[eoform:document]-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% unless $RDM_TEXTILE_DISABLED %>
|
<% if Setting.text_formatting == 'textile' %>
|
||||||
<%= javascript_include_tag 'jstoolbar' %>
|
<%= javascript_include_tag 'jstoolbar' %>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
//<![CDATA[
|
//<![CDATA[
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<%= start_form_tag ({ :controller => 'documents', :action => 'add_attachment', :id => @document }, :multipart => true, :class => "tabular") %>
|
<%= start_form_tag ({ :controller => 'documents', :action => 'add_attachment', :id => @document }, :multipart => true, :class => "tabular") %>
|
||||||
<p id="attachments_p"><label for="attachment_file"><%=l(:label_attachment)%>
|
<p id="attachments_p"><label for="attachment_file"><%=l(:label_attachment)%>
|
||||||
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
||||||
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Attachment.max_size) %>)</em></p>
|
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Setting.attachment_max_size.to_i.kilobytes) %>)</em></p>
|
||||||
<%= submit_tag l(:button_add) %>
|
<%= submit_tag l(:button_add) %>
|
||||||
<%= end_form_tag %>
|
<%= end_form_tag %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
xml.instruct!
|
xml.instruct!
|
||||||
xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do
|
xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do
|
||||||
xml.channel do
|
xml.channel do
|
||||||
xml.title "#{$RDM_HEADER_TITLE}: #{l(:label_news_latest)}"
|
xml.title "#{Setting.header_title}: #{l(:label_news_latest)}"
|
||||||
xml.link url_for(:controller => '', :only_path => false)
|
xml.link url_for(:controller => '', :only_path => false)
|
||||||
xml.pubDate CGI.rfc1123_date(@news.first.created_on)
|
xml.pubDate CGI.rfc1123_date(@news.first.created_on)
|
||||||
xml.description "#{$RDM_HEADER_TITLE}: #{l(:label_news_latest)}"
|
xml.description l(:label_news_latest)
|
||||||
@news.each do |news|
|
@news.each do |news|
|
||||||
xml.item do
|
xml.item do
|
||||||
xml.title "#{news.project.name}: #{news.title}"
|
xml.title "#{news.project.name}: #{news.title}"
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
<%= submit_tag l(:button_save) %>
|
<%= submit_tag l(:button_save) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% unless $RDM_TEXTILE_DISABLED %>
|
<% if Setting.text_formatting == 'textile' %>
|
||||||
<%= javascript_include_tag 'jstoolbar' %>
|
<%= javascript_include_tag 'jstoolbar' %>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
//<![CDATA[
|
//<![CDATA[
|
||||||
|
|
|
@ -93,7 +93,7 @@ end %>
|
||||||
<%= start_form_tag ({ :controller => 'issues', :action => 'add_attachment', :id => @issue }, :multipart => true, :class => "tabular") %>
|
<%= start_form_tag ({ :controller => 'issues', :action => 'add_attachment', :id => @issue }, :multipart => true, :class => "tabular") %>
|
||||||
<p id="attachments_p"><label><%=l(:label_attachment_new)%>
|
<p id="attachments_p"><label><%=l(:label_attachment_new)%>
|
||||||
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
||||||
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Attachment.max_size) %>)</em></p>
|
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Setting.attachment_max_size.to_i.kilobytes) %>)</em></p>
|
||||||
<%= submit_tag l(:button_add) %>
|
<%= submit_tag l(:button_add) %>
|
||||||
<%= end_form_tag %>
|
<%= end_form_tag %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<title><%= $RDM_HEADER_TITLE + (@html_title ? ": #{@html_title}" : "") %></title>
|
<title><%= Setting.header_title + (@html_title ? ": #{@html_title}" : "") %></title>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||||
<meta name="description" content="redMine" />
|
<meta name="description" content="redMine" />
|
||||||
<meta name="keywords" content="issue,bug,tracker" />
|
<meta name="keywords" content="issue,bug,tracker" />
|
||||||
|
@ -23,8 +23,8 @@
|
||||||
|
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<div style="float: left;">
|
<div style="float: left;">
|
||||||
<h1><%= $RDM_HEADER_TITLE %></h1>
|
<h1><%= Setting.header_title %></h1>
|
||||||
<h2><%= $RDM_HEADER_SUBTITLE %></h2>
|
<h2><%= Setting.header_subtitle %></h2>
|
||||||
</div>
|
</div>
|
||||||
<div style="float: right; padding-right: 1em; padding-top: 0.2em;">
|
<div style="float: right; padding-right: 1em; padding-top: 0.2em;">
|
||||||
<% if loggedin? %><small><%=l(:label_logged_as)%> <b><%= @logged_in_user.login %></b></small><% end %>
|
<% if loggedin? %><small><%=l(:label_logged_as)%> <b><%= @logged_in_user.login %></b></small><% end %>
|
||||||
|
@ -69,6 +69,7 @@
|
||||||
<a class="menuItem" href="/enumerations"><%=l(:label_enumerations)%></a>
|
<a class="menuItem" href="/enumerations"><%=l(:label_enumerations)%></a>
|
||||||
<a class="menuItem" href="/admin/mail_options"><%=l(:field_mail_notification)%></a>
|
<a class="menuItem" href="/admin/mail_options"><%=l(:field_mail_notification)%></a>
|
||||||
<a class="menuItem" href="/auth_sources"><%=l(:label_authentication)%></a>
|
<a class="menuItem" href="/auth_sources"><%=l(:label_authentication)%></a>
|
||||||
|
<a class="menuItem" href="/settings"><%=l(:label_settings)%></a>
|
||||||
<a class="menuItem" href="/admin/info"><%=l(:label_information_plural)%></a>
|
<a class="menuItem" href="/admin/info"><%=l(:label_information_plural)%></a>
|
||||||
</div>
|
</div>
|
||||||
<div id="menuTrackers" class="menu">
|
<div id="menuTrackers" class="menu">
|
||||||
|
@ -134,10 +135,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<p>
|
<p><a href="http://redmine.rubyforge.org/"><%= RDM_APP_NAME %></a> <%= RDM_APP_VERSION %></p>
|
||||||
<%= auto_link $RDM_FOOTER_SIG %> |
|
|
||||||
<a href="http://redmine.rubyforge.org/"><%= RDM_APP_NAME %></a> <%= RDM_APP_VERSION %>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,4 +4,4 @@
|
||||||
|
|
||||||
<%= issue.description %>
|
<%= issue.description %>
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/issues/show/<%= issue.id %>
|
http://<%= Setting.host_name %>/issues/show/<%= issue.id %>
|
|
@ -1,3 +1,3 @@
|
||||||
To change your password, use the following link:
|
To change your password, use the following link:
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/account/lost_password?token=<%= @token.value %>
|
http://<%= Setting.host_name %>/account/lost_password?token=<%= @token.value %>
|
|
@ -1,3 +1,3 @@
|
||||||
To change your password, use the following link:
|
To change your password, use the following link:
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/account/lost_password?token=<%= @token.value %>
|
http://<%= Setting.host_name %>/account/lost_password?token=<%= @token.value %>
|
|
@ -1,3 +1,3 @@
|
||||||
To change your password, use the following link:
|
To change your password, use the following link:
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/account/lost_password?token=<%= @token.value %>
|
http://<%= Setting.host_name %>/account/lost_password?token=<%= @token.value %>
|
|
@ -1,3 +1,3 @@
|
||||||
Pour changer votre mot de passe, utilisez le lien suivant:
|
Pour changer votre mot de passe, utilisez le lien suivant:
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/account/lost_password?token=<%= @token.value %>
|
http://<%= Setting.host_name %>/account/lost_password?token=<%= @token.value %>
|
|
@ -1,3 +1,3 @@
|
||||||
To activate your redMine account, use the following link:
|
To activate your redMine account, use the following link:
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/account/register?token=<%= @token.value %>
|
http://<%= Setting.host_name %>/account/register?token=<%= @token.value %>
|
|
@ -1,3 +1,3 @@
|
||||||
To activate your redMine account, use the following link:
|
To activate your redMine account, use the following link:
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/account/register?token=<%= @token.value %>
|
http://<%= Setting.host_name %>/account/register?token=<%= @token.value %>
|
|
@ -1,3 +1,3 @@
|
||||||
To activate your redMine account, use the following link:
|
To activate your redMine account, use the following link:
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/account/register?token=<%= @token.value %>
|
http://<%= Setting.host_name %>/account/register?token=<%= @token.value %>
|
|
@ -1,3 +1,3 @@
|
||||||
Pour activer votre compte sur redMine, utilisez le lien suivant:
|
Pour activer votre compte sur redMine, utilisez le lien suivant:
|
||||||
|
|
||||||
http://<%= $RDM_HOST_NAME %>/account/register?token=<%= @token.value %>
|
http://<%= Setting.host_name %>/account/register?token=<%= @token.value %>
|
|
@ -5,7 +5,7 @@
|
||||||
<p><%= f.text_area :description, :required => true, :cols => 60, :rows => 15 %></p>
|
<p><%= f.text_area :description, :required => true, :cols => 60, :rows => 15 %></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% unless $RDM_TEXTILE_DISABLED %>
|
<% if Setting.text_formatting == 'textile' %>
|
||||||
<%= javascript_include_tag 'jstoolbar' %>
|
<%= javascript_include_tag 'jstoolbar' %>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
//<![CDATA[
|
//<![CDATA[
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p id="attachments_p"><label for="attachment_file"><%=l(:label_attachment)%>
|
<p id="attachments_p"><label for="attachment_file"><%=l(:label_attachment)%>
|
||||||
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
||||||
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Attachment.max_size) %>)</em></p>
|
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Setting.attachment_max_size.to_i.kilobytes) %>)</em></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= submit_tag l(:button_create) %>
|
<%= submit_tag l(:button_create) %>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
<p id="attachments_p"><label for="attachment_file"><%=l(:label_attachment)%>
|
<p id="attachments_p"><label for="attachment_file"><%=l(:label_attachment)%>
|
||||||
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
||||||
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Attachment.max_size) %>)</em></p>
|
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Setting.attachment_max_size.to_i.kilobytes) %>)</em></p>
|
||||||
</div>
|
</div>
|
||||||
<%= submit_tag l(:button_add) %>
|
<%= submit_tag l(:button_add) %>
|
||||||
<%= end_form_tag %>
|
<%= end_form_tag %>
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
<p id="attachments_p"><label for="attachment_file"><%=l(:label_attachment)%>
|
<p id="attachments_p"><label for="attachment_file"><%=l(:label_attachment)%>
|
||||||
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
<%= image_to_function "add.png", "addFileField();return false" %></label>
|
||||||
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Attachment.max_size) %>)</em></p>
|
<%= file_field_tag 'attachments[]', :size => 30 %> <em>(<%= l(:label_max_size) %>: <%= human_size(Setting.attachment_max_size.to_i.kilobytes) %>)</em></p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!--[eoform:issue]-->
|
<!--[eoform:issue]-->
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
<%= submit_tag l(:button_create) %>
|
<%= submit_tag l(:button_create) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% unless $RDM_TEXTILE_DISABLED %>
|
<% if Setting.text_formatting == 'textile' %>
|
||||||
<%= javascript_include_tag 'jstoolbar' %>
|
<%= javascript_include_tag 'jstoolbar' %>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
//<![CDATA[
|
//<![CDATA[
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
<h2><%= l(:label_settings) %></h2>
|
||||||
|
|
||||||
|
<%= start_form_tag({:action => 'edit'}, :class => "tabular") %>
|
||||||
|
<div class="box">
|
||||||
|
<p><label>header_title</label>
|
||||||
|
<%= text_field_tag 'settings[header_title]', Setting.header_title, :size => 30 %></p>
|
||||||
|
|
||||||
|
<p><label>header_subtitle</label>
|
||||||
|
<%= text_field_tag 'settings[header_subtitle]', Setting.header_subtitle, :size => 60 %></p>
|
||||||
|
|
||||||
|
<p><label>welcome_text</label>
|
||||||
|
<%= text_area_tag 'settings[welcome_text]', Setting.welcome_text, :cols => 60, :rows => 5 %></p>
|
||||||
|
|
||||||
|
<p><label>default_language</label>
|
||||||
|
<%= select_tag 'settings[default_language]', options_for_select( lang_options_for_select(false), Setting.default_language) %></p>
|
||||||
|
|
||||||
|
<p><label>login_required</label>
|
||||||
|
<%= check_box_tag 'settings[login_required]', 1, Setting.login_required? %><%= hidden_field_tag 'settings[login_required]', 0 %></p>
|
||||||
|
|
||||||
|
<p><label>self_registration</label>
|
||||||
|
<%= check_box_tag 'settings[self_registration]', 1, Setting.self_registration? %><%= hidden_field_tag 'settings[self_registration]', 0 %></p>
|
||||||
|
|
||||||
|
<p><label>attachment_max_size</label>
|
||||||
|
<%= text_field_tag 'settings[attachment_max_size]', Setting.attachment_max_size, :size => 6 %></p>
|
||||||
|
|
||||||
|
<p><label>mail_from</label>
|
||||||
|
<%= text_field_tag 'settings[mail_from]', Setting.mail_from, :size => 60 %></p>
|
||||||
|
|
||||||
|
<p><label>host_name</label>
|
||||||
|
<%= text_field_tag 'settings[host_name]', Setting.host_name, :size => 60 %></p>
|
||||||
|
|
||||||
|
<p><label>text_formatting</label>
|
||||||
|
<%= select_tag 'settings[text_formatting]', options_for_select( [[l(:label_none), 0], ["textile", "textile"]], Setting.text_formatting) %></p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<%= submit_tag l(:button_save) %>
|
||||||
|
<%= end_form_tag %>
|
|
@ -1,7 +1,7 @@
|
||||||
<h2><%= $RDM_WELCOME_TITLE || l(:label_home) %></h2>
|
<h2><%= l(:label_home) %></h2>
|
||||||
|
|
||||||
<div class="splitcontentleft">
|
<div class="splitcontentleft">
|
||||||
<% if $RDM_WELCOME_TEXT %><p><%= $RDM_WELCOME_TEXT %></p><br /><% end %>
|
<p><%= Setting.welcome_text %></p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h3><%=l(:label_news_latest)%></h3>
|
<h3><%=l(:label_news_latest)%></h3>
|
||||||
<%= render :partial => 'news/news', :collection => @news %>
|
<%= render :partial => 'news/news', :collection => @news %>
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
# redMine - project management software
|
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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 General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
|
|
||||||
# To set your own configuration, rename this file to config_custom.rb
|
|
||||||
# and edit parameters below
|
|
||||||
# Don't forget to restart the application after any change.
|
|
||||||
|
|
||||||
|
|
||||||
# Application host name
|
|
||||||
# Used to provide absolute links in mail notifications
|
|
||||||
# $RDM_HOST_NAME = "somenet.foo"
|
|
||||||
|
|
||||||
# File storage path
|
|
||||||
# Directory used to store uploaded files
|
|
||||||
# #{RAILS_ROOT} represents application's home directory
|
|
||||||
# $RDM_STORAGE_PATH = "#{RAILS_ROOT}/files"
|
|
||||||
|
|
||||||
# Set $RDM_LOGIN_REQUIRED to true if you want to force users to login
|
|
||||||
# to access any page of the application
|
|
||||||
# $RDM_LOGIN_REQUIRED = false
|
|
||||||
|
|
||||||
# Uncomment to disable user self-registration
|
|
||||||
# $RDM_SELF_REGISTRATION = false
|
|
||||||
|
|
||||||
# Default langage ('en', 'es', 'de', 'fr' are available)
|
|
||||||
# $RDM_DEFAULT_LANG = 'en'
|
|
||||||
|
|
||||||
# Email adress used to send mail notifications
|
|
||||||
# $RDM_MAIL_FROM = "redmine@somenet.foo"
|
|
||||||
|
|
||||||
# Page title
|
|
||||||
# $RDM_HEADER_TITLE = "Title"
|
|
||||||
|
|
||||||
# Page sub-title
|
|
||||||
# $RDM_HEADER_SUBTITLE = "Sub title"
|
|
||||||
|
|
||||||
# Welcome page title
|
|
||||||
# $RDM_WELCOME_TITLE = "Welcome"
|
|
||||||
|
|
||||||
# Welcome page text
|
|
||||||
# $RDM_WELCOME_TEXT = ""
|
|
||||||
|
|
||||||
# Signature displayed in footer
|
|
||||||
# Email adresses will be automatically displayed as a mailto link
|
|
||||||
# $RDM_FOOTER_SIG = "admin@somenet.foo"
|
|
||||||
|
|
||||||
# Textile formatting (only available if RedCloth is installed)
|
|
||||||
# Textile formatting is automativaly disabled if RedCloth is not available
|
|
||||||
# Set to true to manually disable.
|
|
||||||
# $RDM_TEXTILE_DISABLED = true
|
|
||||||
|
|
||||||
# Maximum size for attachments (in bytes)
|
|
||||||
# Default to 5 MB
|
|
||||||
# $RDM_ATTACHMENT_MAX_SIZE = 5*1024*1024
|
|
|
@ -68,47 +68,11 @@ end
|
||||||
# inflect.uncountable %w( fish sheep )
|
# inflect.uncountable %w( fish sheep )
|
||||||
# end
|
# end
|
||||||
|
|
||||||
if File.exist? File.join(File.dirname(__FILE__), 'config_custom.rb')
|
|
||||||
begin
|
|
||||||
print "=> Loading config_custom.rb... "
|
|
||||||
require File.join(File.dirname(__FILE__), 'config_custom')
|
|
||||||
puts "done."
|
|
||||||
rescue Exception => detail
|
|
||||||
puts
|
|
||||||
puts detail
|
|
||||||
puts detail.backtrace.join("\n")
|
|
||||||
puts "=> Error in config_custom.rb. Check your configuration."
|
|
||||||
exit
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# IMPORTANT !!! DO NOT MODIFY PARAMETERS HERE
|
# IMPORTANT !!! DO NOT MODIFY PARAMETERS HERE
|
||||||
# Instead, rename config_custom.example.rb to config_custom.rb
|
# Instead, rename config_custom.example.rb to config_custom.rb
|
||||||
# and set your own configuration in that file
|
# and set your own configuration in that file
|
||||||
# Parameters defined in config_custom.rb override those defined below
|
# Parameters defined in config_custom.rb override those defined below
|
||||||
|
|
||||||
# application host name
|
|
||||||
$RDM_HOST_NAME ||= "localhost:3000"
|
|
||||||
# file storage path
|
|
||||||
$RDM_STORAGE_PATH ||= "#{RAILS_ROOT}/files"
|
|
||||||
# if RDM_LOGIN_REQUIRED is set to true, login is required to access the application
|
|
||||||
$RDM_LOGIN_REQUIRED ||= false
|
|
||||||
# default langage
|
|
||||||
$RDM_DEFAULT_LANG ||= 'en'
|
|
||||||
# email sender adress
|
|
||||||
$RDM_MAIL_FROM ||= "redmine@somenet.foo"
|
|
||||||
|
|
||||||
# page title
|
|
||||||
$RDM_HEADER_TITLE ||= "redMine"
|
|
||||||
# page sub-title
|
|
||||||
$RDM_HEADER_SUBTITLE ||= "Project management"
|
|
||||||
# footer signature
|
|
||||||
$RDM_FOOTER_SIG = "admin@somenet.foo"
|
|
||||||
|
|
||||||
# textile formatting
|
|
||||||
# automaticaly disabled if 'textile' method is not defined (RedCloth unavailable)
|
|
||||||
$RDM_TEXTILE_DISABLED = true unless ActionView::Helpers::TextHelper.method_defined? "textilize"
|
|
||||||
|
|
||||||
# application name
|
# application name
|
||||||
RDM_APP_NAME = "redMine"
|
RDM_APP_NAME = "redMine"
|
||||||
# application version
|
# application version
|
||||||
|
@ -131,7 +95,7 @@ ActiveRecord::Errors.default_error_messages = {
|
||||||
|
|
||||||
ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "#{html_tag}" }
|
ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "#{html_tag}" }
|
||||||
|
|
||||||
GLoc.set_config :default_language => $RDM_DEFAULT_LANG
|
GLoc.set_config :default_language => :en
|
||||||
GLoc.clear_strings
|
GLoc.clear_strings
|
||||||
GLoc.set_kcode
|
GLoc.set_kcode
|
||||||
GLoc.load_localized_strings
|
GLoc.load_localized_strings
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
# redMine - project management software
|
||||||
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
|
||||||
|
# DO NOT MODIFY THIS FILE !!!
|
||||||
|
# Settings can be defined through the application in Admin -> Settings
|
||||||
|
|
||||||
|
header_title:
|
||||||
|
default: redMine
|
||||||
|
header_subtitle:
|
||||||
|
default: Project management
|
||||||
|
welcome_text:
|
||||||
|
default:
|
||||||
|
login_required:
|
||||||
|
default: 0
|
||||||
|
self_registration:
|
||||||
|
default: 1
|
||||||
|
attachment_max_size:
|
||||||
|
format: int
|
||||||
|
default: 5120
|
||||||
|
mail_from:
|
||||||
|
default: redmine@somenet.foo
|
||||||
|
text_formatting:
|
||||||
|
default: textile
|
||||||
|
default_language:
|
||||||
|
default: en
|
||||||
|
host_name:
|
||||||
|
default: localhost:3000
|
|
@ -0,0 +1,12 @@
|
||||||
|
class CreateSettings < ActiveRecord::Migration
|
||||||
|
def self.up
|
||||||
|
create_table :settings, :force => true do |t|
|
||||||
|
t.column "name", :string, :limit => 30, :default => "", :null => false
|
||||||
|
t.column "value", :text
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.down
|
||||||
|
drop_table :settings
|
||||||
|
end
|
||||||
|
end
|
|
@ -5,7 +5,16 @@ Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
http://redmine.rubyforge.org/
|
http://redmine.rubyforge.org/
|
||||||
|
|
||||||
|
|
||||||
== 03/02/2006 v0.4.1
|
== xx/xx/2006 v0.4.2
|
||||||
|
|
||||||
|
* settings are now stored in the database (config_custom.rb no more used) and editable through the application in: Admin -> Settings
|
||||||
|
* tooltips added on Gantt chart and calender to view the details of the issues
|
||||||
|
* all icons replaced (new icons are based on GPL icon set: "KDE Crystal Diamond 2.5" -by paolino- and "kNeu! Alpha v0.1" -by Pablo Fabregat-)
|
||||||
|
* added back "fixed version" field on issue screen and in filters
|
||||||
|
* fixed: subprojects count is always 0 on projects list
|
||||||
|
|
||||||
|
|
||||||
|
== 01/03/2006 v0.4.1
|
||||||
|
|
||||||
* fixed: emails have no recipient when one of the project members has notifications disabled
|
* fixed: emails have no recipient when one of the project members has notifications disabled
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ http://redmine.rubyforge.org/
|
||||||
|
|
||||||
Optional:
|
Optional:
|
||||||
* RedCloth (to enable textile formatting)
|
* RedCloth (to enable textile formatting)
|
||||||
|
* SVN binaries (needed for repository browsing, must be available in PATH)
|
||||||
|
|
||||||
Supported databases:
|
Supported databases:
|
||||||
* MySQL (tested with MySQL 5)
|
* MySQL (tested with MySQL 5)
|
||||||
|
@ -57,14 +58,12 @@ Supported databases:
|
||||||
|
|
||||||
== Configuration
|
== Configuration
|
||||||
|
|
||||||
A sample configuration file is provided: "config/config_custom.example.rb"
|
|
||||||
Rename it to config_custom.rb and set your parameters.
|
|
||||||
Don't forget to restart the application after any change.
|
|
||||||
|
|
||||||
In config/environment.rb, you can set parameters for your SMTP server:
|
In config/environment.rb, you can set parameters for your SMTP server:
|
||||||
config.action_mailer.server_settings: SMTP server configuration
|
config.action_mailer.server_settings: SMTP server configuration
|
||||||
config.action_mailer.perform_deliveries: set to false to disable mail delivering
|
config.action_mailer.perform_deliveries: set to false to disable mail delivering
|
||||||
|
|
||||||
|
Don't forget to restart the application after any change.
|
||||||
|
|
||||||
|
|
||||||
== Upgrading
|
== Upgrading
|
||||||
|
|
||||||
|
|
|
@ -4,19 +4,19 @@ redMine - project management software
|
||||||
Copyright (C) 2006-2007 Jean-Philippe Lang
|
Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
http://redmine.rubyforge.org/
|
http://redmine.rubyforge.org/
|
||||||
|
|
||||||
== From 0.3.0
|
|
||||||
|
== From 0.3.0 and above
|
||||||
|
|
||||||
1. Uncompress program archive in a new directory:
|
1. Uncompress program archive in a new directory:
|
||||||
tar zxvf <filename>
|
tar zxvf <filename>
|
||||||
|
|
||||||
3. Copy your database (database.yml) and configuration settings (config_custom.rb)
|
3. Copy your database settings (database.yml) into the new config directory
|
||||||
into the new config directory
|
|
||||||
|
|
||||||
4. Migrate your database:
|
4. Migrate your database:
|
||||||
rake migrate RAILS_ENV="production"
|
rake migrate RAILS_ENV="production"
|
||||||
|
|
||||||
|
|
||||||
== From 0.2.x and previous
|
== From 0.2.x and below
|
||||||
|
|
||||||
Due to major database changes since 0.2.x, there is no migration support
|
Due to major database changes since 0.2.x, there is no migration support
|
||||||
from 0.2.x and previous versions.
|
from 0.2.x and previous versions.
|
||||||
|
|
|
@ -2,7 +2,7 @@ desc 'Load default configuration data'
|
||||||
|
|
||||||
task :load_default_data => :environment do
|
task :load_default_data => :environment do
|
||||||
include GLoc
|
include GLoc
|
||||||
set_language_if_valid($RDM_DEFAULT_LANG)
|
set_language_if_valid('en')
|
||||||
puts
|
puts
|
||||||
|
|
||||||
while true
|
while true
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 772 B |
|
@ -176,6 +176,7 @@ vertical-align: middle;
|
||||||
.icon22-info { background-image: url(../images/22x22/info.png); }
|
.icon22-info { background-image: url(../images/22x22/info.png); }
|
||||||
.icon22-comment { background-image: url(../images/22x22/comment.png); }
|
.icon22-comment { background-image: url(../images/22x22/comment.png); }
|
||||||
.icon22-package { background-image: url(../images/22x22/package.png); }
|
.icon22-package { background-image: url(../images/22x22/package.png); }
|
||||||
|
.icon22-settings { background-image: url(../images/22x22/settings.png); }
|
||||||
|
|
||||||
/**************** Content styles ****************/
|
/**************** Content styles ****************/
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ class ProjectTest < Test::Unit::TestCase
|
||||||
@ecookbook.name = ""
|
@ecookbook.name = ""
|
||||||
assert !@ecookbook.save
|
assert !@ecookbook.save
|
||||||
assert_equal 1, @ecookbook.errors.count
|
assert_equal 1, @ecookbook.errors.count
|
||||||
assert_equal l(:activerecord_error_blank), @ecookbook.errors.on(:name)
|
assert_equal "activerecord_error_blank", @ecookbook.errors.on(:name)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_public_projects
|
def test_public_projects
|
||||||
|
|
Loading…
Reference in New Issue