# HG changeset patch
# User Chris Cannam
# Date 1299153723 0
# Node ID eeebe205a0562c9814c0b2c39e1cc019f43cf0df
# Parent fca2657f4aa53be4f8affe9948b049cf92f74972# Parent 051f544170feb8c1cc74773285cfe55ab128e6e7
* Merge from default branch, bringing us up to SVN trunk rev 4993
diff -r 051f544170fe -r eeebe205a056 app/controllers/account_controller.rb
--- a/app/controllers/account_controller.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/controllers/account_controller.rb Thu Mar 03 12:02:03 2011 +0000
@@ -77,13 +77,19 @@
# User self-registration
def register
redirect_to(home_url) && return unless Setting.self_registration? || session[:auth_source_registration]
+
if request.get?
session[:auth_source_registration] = nil
@user = User.new(:language => Setting.default_language)
+
+ @ssamr_user_details = SsamrUserDetail.new
+
else
@user = User.new(params[:user])
@user.admin = false
+
@user.register
+
if session[:auth_source_registration]
@user.activate
@user.login = session[:auth_source_registration][:login]
@@ -98,6 +104,11 @@
@user.login = params[:user][:login]
@user.password, @user.password_confirmation = params[:password], params[:password_confirmation]
+ @ssamr_user_details = SsamrUserDetail.new(params[:ssamr_user_details])
+
+ # associates the 2 objects
+ @user.ssamr_user_detail = @ssamr_user_details
+
case Setting.self_registration
when '1'
register_by_email_activation(@user)
@@ -269,6 +280,9 @@
# Pass a block for behavior when a user fails to save
def register_manually_by_administrator(user, &block)
if user.save
+
+ @ssamr_user_details.save!
+
# Sends an email to the administrators
Mailer.deliver_account_activation_request(user)
account_pending
diff -r 051f544170fe -r eeebe205a056 app/controllers/application_controller.rb
--- a/app/controllers/application_controller.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/controllers/application_controller.rb Thu Mar 03 12:02:03 2011 +0000
@@ -314,7 +314,7 @@
if api_request?
logger.error "Form authenticity token is missing or is invalid. API calls must include a proper Content-type header (text/xml or text/json)."
end
- render_error "Invalid form authenticity token."
+ render_error "Invalid form authenticity token. Perhaps your session has timed out; try reloading the form and entering your details again."
end
def render_feed(items, options={})
diff -r 051f544170fe -r eeebe205a056 app/controllers/issues_controller.rb
--- a/app/controllers/issues_controller.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/controllers/issues_controller.rb Thu Mar 03 12:02:03 2011 +0000
@@ -136,7 +136,19 @@
attachments = Attachment.attach_files(@issue, params[:attachments])
render_attachment_warning_if_needed(@issue)
flash[:notice] = l(:notice_successful_create)
+
call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue})
+
+ # Adds user to watcher's list
+ @issue.add_watcher(User.current)
+
+ # Also adds the assignee to the watcher's list
+ if params[:issue][:assigned_to_id] && !params[:issue][:assigned_to_id].empty?:
+ unless @issue.watcher_ids.include?(params[:issue][:assigned_to_id]):
+ @issue.add_watcher(User.find(params[:issue][:assigned_to_id]))
+ end
+ end
+
respond_to do |format|
format.html {
redirect_to(params[:continue] ? { :action => 'new', :project_id => @project, :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
@@ -271,6 +283,18 @@
@notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil)
@issue.init_journal(User.current, @notes)
@issue.safe_attributes = params[:issue]
+
+ # tests if the the user assigned_to_id
+ # is in this issues watcher's list
+ # if not, adds it.
+
+ if params[:issue][:assigned_to_id] && !params[:issue][:assigned_to_id].empty?:
+ unless @issue.watcher_ids.include?(params[:issue][:assigned_to_id]):
+ @issue.add_watcher(User.find(params[:issue][:assigned_to_id]))
+ end
+ end
+
+
end
# TODO: Refactor, lots of extra code in here
diff -r 051f544170fe -r eeebe205a056 app/controllers/members_controller.rb
--- a/app/controllers/members_controller.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/controllers/members_controller.rb Thu Mar 03 12:02:03 2011 +0000
@@ -94,6 +94,7 @@
def autocomplete_for_member
@principals = Principal.active.like(params[:q]).find(:all, :limit => 100) - @project.principals
+ logger.debug "Query for #{params[:q]} returned #{@principals.size} results"
render :layout => false
end
diff -r 051f544170fe -r eeebe205a056 app/controllers/projects_controller.rb
--- a/app/controllers/projects_controller.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/controllers/projects_controller.rb Thu Mar 03 12:02:03 2011 +0000
@@ -42,12 +42,22 @@
helper :repositories
include RepositoriesHelper
include ProjectsHelper
-
+
# Lists visible projects
def index
respond_to do |format|
format.html {
- @projects = Project.visible.find(:all, :order => 'lft')
+ sort_init 'lft'
+ sort_update %w(lft title created_on updated_on)
+ @limit = per_page_option
+ @project_count = Project.visible.count
+ @project_pages = Paginator.new self, @project_count, @limit, params['page']
+ @offset ||= @project_pages.current.offset
+ @projects = Project.visible.all(:offset => @offset, :limit => @limit, :order => sort_clause)
+ if User.current.logged?
+ @user_projects = User.current.projects.sort_by(&:lft)
+ end
+ render :template => 'projects/index.rhtml', :layout => !request.xhr?
}
format.api {
@offset, @limit = api_offset_and_limit
diff -r 051f544170fe -r eeebe205a056 app/controllers/users_controller.rb
--- a/app/controllers/users_controller.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/controllers/users_controller.rb Thu Mar 03 12:02:03 2011 +0000
@@ -62,6 +62,11 @@
end
def show
+
+ if @user.ssamr_user_detail != nil
+ @description = @user.ssamr_user_detail.description
+ end
+
# show projects based on current user visibility
@memberships = @user.memberships.all(:conditions => Project.visible_by(User.current))
@@ -81,15 +86,19 @@
end
end
- def new
+ def new
@user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option)
@auth_sources = AuthSource.find(:all)
+
+ @ssamr_user_details = SsamrUserDetail.new
+
end
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option)
@user.safe_attributes = params[:user]
+ @user = User.new(params[:user])
@user.admin = params[:user][:admin] || false
@user.login = params[:user][:login]
@user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] unless @user.auth_source_id
@@ -98,9 +107,16 @@
@user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
+ @ssamr_user_details = SsamrUserDetail.new(params[:ssamr_user_details])
+
+ # associates the 2 objects
+ @user.ssamr_user_detail = @ssamr_user_details
+
if @user.save
@user.pref.save
- @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
+
+ @ssamr_user_details.save!
+
Mailer.deliver_account_information(@user, params[:user][:password]) if params[:send_information]
@@ -127,6 +143,9 @@
end
def edit
+
+ @ssamr_user_details = @user.ssamr_user_detail
+
@auth_sources = AuthSource.find(:all)
@membership ||= Member.new
end
@@ -145,6 +164,21 @@
@user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
+ if @user.ssamr_user_detail == nil
+ @ssamr_user_details = SsamrUserDetail.new()
+ @user.ssamr_user_detail = @ssamr_user_details
+ else
+ @ssamr_user_details = @user.ssamr_user_detail
+ end
+
+
+ if params[:ssamr_user_details].nil? or params[:ssamr_user_details].empty?
+ @ssamr_user_details.description = @user.ssamr_user_detail.description
+ else
+ @ssamr_user_details.description = params[:ssamr_user_details][:description]
+ @ssamr_user_details.save!
+ end
+
if @user.save
@user.pref.save
@user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
diff -r 051f544170fe -r eeebe205a056 app/controllers/welcome_controller.rb
--- a/app/controllers/welcome_controller.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/controllers/welcome_controller.rb Thu Mar 03 12:02:03 2011 +0000
@@ -21,6 +21,14 @@
def index
@news = News.latest User.current
@projects = Project.latest User.current
+
+ # tests if user is logged in to gfenerate the tips of the day list
+ if User.current.logged?
+ @tipsoftheday = Setting.tipoftheday_text
+ else
+ @tipsoftheday = ''
+ end
+
end
def robots
diff -r 051f544170fe -r eeebe205a056 app/helpers/application_helper.rb
--- a/app/helpers/application_helper.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/helpers/application_helper.rb Thu Mar 03 12:02:03 2011 +0000
@@ -287,7 +287,7 @@
def principals_check_box_tags(name, principals)
s = ''
principals.sort.each do |principal|
- s << "#{ check_box_tag name, principal.id, false } #{h principal} \n"
+ s << "#{ check_box_tag name, principal.id, false } #{link_to_user principal} \n"
end
s
end
diff -r 051f544170fe -r eeebe205a056 app/helpers/projects_helper.rb
--- a/app/helpers/projects_helper.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/helpers/projects_helper.rb Thu Mar 03 12:02:03 2011 +0000
@@ -83,6 +83,162 @@
s
end
+
+ # Renders a tree of projects where the current user belongs
+ # as a nested set of unordered lists
+ # The given collection may be a subset of the whole project tree
+ # (eg. some intermediate nodes are private and can not be seen)
+ def render_my_project_hierarchy(projects)
+ s = ''
+
+ a = ''
+
+ # Flag to tell if user has any projects
+ t = FALSE
+
+ if projects.any?
+ ancestors = []
+ original_project = @project
+ projects.each do |project|
+ # set the project environment to please macros.
+
+ @project = project
+
+ if User.current.member_of?(project):
+
+ t = TRUE
+
+ if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
+ s << "
\n"
+ else
+ ancestors.pop
+ s << ""
+ while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
+ ancestors.pop
+ s << " \n"
+ end
+ end
+
+ classes = (ancestors.empty? ? 'root' : 'child')
+ s << "" +
+ link_to_project(project, {}, :class => "project my-project")
+ if project.is_public?
+ s << "
" << l("field_is_public") << " "
+ else
+ s << "
" << l("field_is_private") << " "
+ end
+ s << "
#{textilizable(project.short_description, :project => project)}
" unless project.description.blank?
+ s << "
\n"
+ ancestors << project
+ end
+ end
+ s << (" \n" * ancestors.size)
+ @project = original_project
+ end
+
+ if t == TRUE
+ a << ""
+ a << l("label_my_project_plural")
+ a << " "
+ a << s
+ else
+ a = s
+ end
+
+ a
+ end
+
+ # Renders a tree of projects that the current user does not belong
+ # to, or of all projects if the current user is not logged in. The
+ # given collection may be a subset of the whole project tree
+ # (eg. some intermediate nodes are private and can not be seen). We
+ # are potentially interested in various things: the project name,
+ # description, manager(s), creation date, last activity date,
+ # general activity level, whether there is anything actually hosted
+ # here for the project, etc.
+ def render_project_table(projects)
+
+ s = ""
+ s << ""
+ s << "
"
+ s << ""
+
+ s << sort_header_tag('lft', :caption => l("field_name"), :default_order => 'desc')
+ s << "" << l("label_managers") << " "
+ s << sort_header_tag('created_on', :default_order => 'desc')
+ s << sort_header_tag('updated_on', :default_order => 'desc')
+
+ s << " "
+
+ ancestors = []
+ original_project = @project
+ oddeven = 'even'
+ level = 0
+
+ projects.each do |project|
+
+ # set the project environment to please macros.
+
+ @project = project
+
+ if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
+ level = level + 1
+ else
+ level = 0
+ oddeven = cycle('odd','even')
+ ancestors.pop
+ while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
+ ancestors.pop
+ end
+ end
+
+ classes = (ancestors.empty? ? 'root' : 'child')
+
+ s << ""
+ s << "" << link_to_project(project, {}, :class => "project #{User.current.member_of?(project) ? 'my-project' : nil}") << " "
+ s << ""
+
+ u = project.users_by_role
+ if u
+ u.keys.each do |r|
+ if r.allowed_to?(:edit_project)
+ mgrs = []
+ u[r].sort.each do |m|
+ mgrs << link_to_user(m)
+ end
+ if mgrs.size < 3
+ s << '' << mgrs.join(', ') << ' '
+ else
+ s << mgrs.join(', ')
+ end
+ end
+ end
+ end
+
+ s << " "
+ s << "" << format_date(project.created_on) << " "
+ s << "" << format_date(project.updated_on) << " "
+
+ s << " "
+ s << ""
+ s << ""
+ s << textilizable(project.short_description, :project => project) unless project.description.blank?
+ s << " "
+ s << " "
+ s << " "
+
+ ancestors << project
+ end
+
+ s << "
"
+
+ @project = original_project
+
+ s
+ end
+
+
+
# Returns a set of options for a select field, grouped by project.
def version_options_for_select(versions, selected=nil)
grouped = Hash.new {|h,k| h[k] = []}
diff -r 051f544170fe -r eeebe205a056 app/models/project.rb
--- a/app/models/project.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/models/project.rb Thu Mar 03 12:02:03 2011 +0000
@@ -438,7 +438,14 @@
# Returns a short description of the projects (first lines)
def short_description(length = 255)
- description.gsub(/^(.{#{length}}[^\n\r]*).*$/m, '\1...').strip if description
+ ## Original Redmine code: this truncates to the CR that is more
+ ## than "length" characters from the start.
+ # description.gsub(/^(.{#{length}}[^\n\r]*).*$/m, '\1...').strip if description
+ ## That's too much for us, and also we want to omit images and the
+ ## like. Truncate instead to the first CR that follows _any_
+ ## non-blank text, and to the next word break beyond "length"
+ ## characters if the result is still longer than that.
+ description.gsub(/![^\s]+!/, '').gsub(/^(\s*[^\n\r]*).*$/m, '\1').gsub(/^(.{#{length}}\b).*$/m, '\1 ...').strip if description
end
def css_classes
diff -r 051f544170fe -r eeebe205a056 app/models/ssamr_user_detail.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/models/ssamr_user_detail.rb Thu Mar 03 12:02:03 2011 +0000
@@ -0,0 +1,5 @@
+class SsamrUserDetail < ActiveRecord::Base
+ belongs_to :user
+
+ validates_presence_of :description
+end
diff -r 051f544170fe -r eeebe205a056 app/models/user.rb
--- a/app/models/user.rb Thu Mar 03 11:42:28 2011 +0000
+++ b/app/models/user.rb Thu Mar 03 12:02:03 2011 +0000
@@ -52,6 +52,9 @@
has_one :api_token, :class_name => 'Token', :conditions => "action='api'"
belongs_to :auth_source
+ has_one :ssamr_user_detail, :dependent => :destroy, :class_name => 'SsamrUserDetail'
+ accepts_nested_attributes_for :ssamr_user_detail
+
# Active non-anonymous users scope
named_scope :active, :conditions => "#{User.table_name}.status = #{STATUS_ACTIVE}"
@@ -63,6 +66,9 @@
attr_protected :login, :admin, :password, :password_confirmation, :hashed_password
validates_presence_of :login, :firstname, :lastname, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
+
+ # TODO: is this validation correct validates_presence_of :ssamr_user_detail
+
validates_uniqueness_of :login, :if => Proc.new { |user| !user.login.blank? }, :case_sensitive => false
validates_uniqueness_of :mail, :if => Proc.new { |user| !user.mail.blank? }, :case_sensitive => false
# Login must contain lettres, numbers, underscores only
@@ -97,6 +103,10 @@
write_attribute(:mail, arg.to_s.strip)
end
+ def description=(arg)
+ write_attribute(:description, arg.to_s.strip)
+ end
+
def identity_url=(url)
if url.blank?
write_attribute(:identity_url, '')
diff -r 051f544170fe -r eeebe205a056 app/sweepers/.svn/all-wcprops
--- a/app/sweepers/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 37
-/svn/!svn/ver/1157/trunk/app/sweepers
-END
diff -r 051f544170fe -r eeebe205a056 app/views/account/.svn/all-wcprops
--- a/app/views/account/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 42
-/svn/!svn/ver/3530/trunk/app/views/account
-END
-password_recovery.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 66
-/svn/!svn/ver/3341/trunk/app/views/account/password_recovery.rhtml
-END
-lost_password.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 61
-/svn/!svn/ver/747/trunk/app/views/account/lost_password.rhtml
-END
-register.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/2678/trunk/app/views/account/register.rhtml
-END
-login.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/3530/trunk/app/views/account/login.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/account/register.rhtml
--- a/app/views/account/register.rhtml Thu Mar 03 11:42:28 2011 +0000
+++ b/app/views/account/register.rhtml Thu Mar 03 12:02:03 2011 +0000
@@ -29,6 +29,22 @@
<%=l(:field_language)%>
<%= select("user", "language", lang_options_for_select) %>
+
+
<%=l(:label_ssamr_details)%>
+
+ <% fields_for :ssamr_user_details, :builder => TabularFormBuilder, :lang => current_language do |ssamr_user_detail| %>
+
+
+ <%= ssamr_user_detail.text_area :description, :rows => 3, :cols => 40, :required => true, :class => 'wiki-edit' %>
+ <%= wikitoolbar_for 'ssamr_user_details_description' %>
+
+ <%=l(:text_user_ssamr_description_info)%>
+
+ <% end %>
+
+
+
+
<% if Setting.openid? %>
<%=l(:field_identity_url)%>
<%= text_field 'user', 'identity_url' %>
diff -r 051f544170fe -r eeebe205a056 app/views/activities/.svn/all-wcprops
--- a/app/views/activities/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 45
-/svn/!svn/ver/4047/trunk/app/views/activities
-END
-index.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/4047/trunk/app/views/activities/index.html.erb
-END
diff -r 051f544170fe -r eeebe205a056 app/views/admin/.svn/all-wcprops
--- a/app/views/admin/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 40
-/svn/!svn/ver/4271/trunk/app/views/admin
-END
-info.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/3200/trunk/app/views/admin/info.rhtml
-END
-plugins.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/2041/trunk/app/views/admin/plugins.rhtml
-END
-_menu.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/3909/trunk/app/views/admin/_menu.rhtml
-END
-_no_data.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/1040/trunk/app/views/admin/_no_data.rhtml
-END
-index.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/3176/trunk/app/views/admin/index.rhtml
-END
-projects.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/4271/trunk/app/views/admin/projects.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/attachments/.svn/all-wcprops
--- a/app/views/attachments/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/3879/trunk/app/views/attachments
-END
-_links.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/2116/trunk/app/views/attachments/_links.rhtml
-END
-file.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/2693/trunk/app/views/attachments/file.rhtml
-END
-_form.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/3879/trunk/app/views/attachments/_form.rhtml
-END
-diff.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/2693/trunk/app/views/attachments/diff.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/auth_sources/.svn/all-wcprops
--- a/app/views/auth_sources/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/3744/trunk/app/views/auth_sources
-END
-index.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 62
-/svn/!svn/ver/3436/trunk/app/views/auth_sources/index.html.erb
-END
-edit.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/333/trunk/app/views/auth_sources/edit.rhtml
-END
-_form.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 62
-/svn/!svn/ver/3744/trunk/app/views/auth_sources/_form.html.erb
-END
-new.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 56
-/svn/!svn/ver/333/trunk/app/views/auth_sources/new.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/auto_completes/.svn/all-wcprops
--- a/app/views/auto_completes/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/3945/trunk/app/views/auto_completes
-END
-issues.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 65
-/svn/!svn/ver/3945/trunk/app/views/auto_completes/issues.html.erb
-END
diff -r 051f544170fe -r eeebe205a056 app/views/context_menus/.svn/all-wcprops
--- a/app/views/context_menus/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 48
-/svn/!svn/ver/4409/trunk/app/views/context_menus
-END
-issues.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/!svn/ver/4409/trunk/app/views/context_menus/issues.html.erb
-END
diff -r 051f544170fe -r eeebe205a056 app/views/custom_fields/.svn/all-wcprops
--- a/app/views/custom_fields/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 48
-/svn/!svn/ver/4382/trunk/app/views/custom_fields
-END
-_form.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/4382/trunk/app/views/custom_fields/_form.rhtml
-END
-edit.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/3144/trunk/app/views/custom_fields/edit.rhtml
-END
-_index.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 61
-/svn/!svn/ver/3672/trunk/app/views/custom_fields/_index.rhtml
-END
-index.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/2871/trunk/app/views/custom_fields/index.rhtml
-END
-new.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/3144/trunk/app/views/custom_fields/new.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/documents/.svn/all-wcprops
--- a/app/views/documents/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 44
-/svn/!svn/ver/3603/trunk/app/views/documents
-END
-_document.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/3602/trunk/app/views/documents/_document.rhtml
-END
-show.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/3603/trunk/app/views/documents/show.rhtml
-END
-_form.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 56
-/svn/!svn/ver/2777/trunk/app/views/documents/_form.rhtml
-END
-edit.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/333/trunk/app/views/documents/edit.rhtml
-END
-index.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 56
-/svn/!svn/ver/2295/trunk/app/views/documents/index.rhtml
-END
-new.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/1180/trunk/app/views/documents/new.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/enumerations/.svn/all-wcprops
--- a/app/views/enumerations/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/3734/trunk/app/views/enumerations
-END
-list.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/3734/trunk/app/views/enumerations/list.rhtml
-END
-_form.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/2946/trunk/app/views/enumerations/_form.rhtml
-END
-edit.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/2810/trunk/app/views/enumerations/edit.rhtml
-END
-destroy.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 61
-/svn/!svn/ver/1558/trunk/app/views/enumerations/destroy.rhtml
-END
-new.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/2810/trunk/app/views/enumerations/new.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/files/.svn/all-wcprops
--- a/app/views/files/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 40
-/svn/!svn/ver/4268/trunk/app/views/files
-END
-index.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/4268/trunk/app/views/files/index.html.erb
-END
-new.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/4085/trunk/app/views/files/new.html.erb
-END
diff -r 051f544170fe -r eeebe205a056 app/views/groups/.svn/all-wcprops
--- a/app/views/groups/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 41
-/svn/!svn/ver/4312/trunk/app/views/groups
-END
-autocomplete_for_user.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 72
-/svn/!svn/ver/2869/trunk/app/views/groups/autocomplete_for_user.html.erb
-END
-edit.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/2871/trunk/app/views/groups/edit.html.erb
-END
-index.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 56
-/svn/!svn/ver/2869/trunk/app/views/groups/index.html.erb
-END
-new.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/3375/trunk/app/views/groups/new.html.erb
-END
-_general.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/2879/trunk/app/views/groups/_general.html.erb
-END
-_memberships.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 63
-/svn/!svn/ver/3734/trunk/app/views/groups/_memberships.html.erb
-END
-_users.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/4312/trunk/app/views/groups/_users.html.erb
-END
-show.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/2869/trunk/app/views/groups/show.html.erb
-END
-_form.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 56
-/svn/!svn/ver/2869/trunk/app/views/groups/_form.html.erb
-END
diff -r 051f544170fe -r eeebe205a056 app/views/issue_categories/.svn/all-wcprops
--- a/app/views/issue_categories/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/4385/trunk/app/views/issue_categories
-END
-new.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/!svn/ver/3549/trunk/app/views/issue_categories/new.html.erb
-END
-_form.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 63
-/svn/!svn/ver/4385/trunk/app/views/issue_categories/_form.rhtml
-END
-edit.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 61
-/svn/!svn/ver/725/trunk/app/views/issue_categories/edit.rhtml
-END
-destroy.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 65
-/svn/!svn/ver/1182/trunk/app/views/issue_categories/destroy.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/issue_statuses/.svn/all-wcprops
--- a/app/views/issue_statuses/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/3600/trunk/app/views/issue_statuses
-END
-index.html.erb
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/!svn/ver/3600/trunk/app/views/issue_statuses/index.html.erb
-END
-_form.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 61
-/svn/!svn/ver/3157/trunk/app/views/issue_statuses/_form.rhtml
-END
-edit.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 60
-/svn/!svn/ver/2810/trunk/app/views/issue_statuses/edit.rhtml
-END
-new.rhtml
-K 25
-svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/2810/trunk/app/views/issue_statuses/new.rhtml
-END
diff -r 051f544170fe -r eeebe205a056 app/views/issues/_form.rhtml
--- a/app/views/issues/_form.rhtml Thu Mar 03 11:42:28 2011 +0000
+++ b/app/views/issues/_form.rhtml Thu Mar 03 12:02:03 2011 +0000
@@ -9,9 +9,12 @@
<%= f.text_field :subject, :size => 80, :required => true %>
<% if User.current.allowed_to?(:manage_subtasks, @project) %>
-
<%= f.text_field :parent_issue_id, :size => 10 %>
-
-<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %>
+
<%= f.text_field :parent_issue_id, :size => 10, :autocomplete => :on %>
+
+ <%=l(:text_issue_parent_issue_info)%>
+
+
+ <%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %>
<% end %>
<%= f.text_area :description,
diff -r 051f544170fe -r eeebe205a056 app/views/layouts/base.rhtml
--- a/app/views/layouts/base.rhtml Thu Mar 03 11:42:28 2011 +0000
+++ b/app/views/layouts/base.rhtml Thu Mar 03 12:02:03 2011 +0000
@@ -32,7 +32,7 @@
<%= render_menu :top_menu -%>
-