# 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 << "\n" + s << "\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" + 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 << "" + 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 << "" + s << "" + s << "" + s << "" + + s << "" + s << "" + s << "" + s << "" + s << "" + + ancestors << project + end + + s << "
    " << l("label_managers") << "
    " << link_to_project(project, {}, :class => "project #{User.current.member_of?(project) ? 'my-project' : nil}") << "" + + 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 << "" << format_date(project.created_on) << "" << format_date(project.updated_on) << "
    " + s << textilizable(project.short_description, :project => project) unless project.description.blank? + 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 @@

    <%= 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? %>

    <%= 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 -%>

    -