##// END OF EJS Templates
Removes changelog view....
Removes changelog view. All trackers can now be displayed on the roadmap. By default, only those marked as displayed on the roadmap are displayed. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3162 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r3048:c66943c9b893
r3048:c66943c9b893
Show More
projects_controller.rb
398 lines | 15.0 KiB | text/x-ruby | RubyLexer
/ app / controllers / projects_controller.rb
Jean-Philippe Lang
Display stats about objects that can be copied....
r2861 # Redmine - project management software
# Copyright (C) 2006-2009 Jean-Philippe Lang
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 #
# 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 ProjectsController < ApplicationController
Jean-Philippe Lang
Highlight the current item of the main menu....
r1062 menu_item :overview
menu_item :activity, :only => :activity
menu_item :roadmap, :only => :roadmap
menu_item :files, :only => [:list_files, :add_file]
menu_item :settings, :only => :settings
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 before_filter :find_project, :except => [ :index, :list, :add, :copy, :activity ]
Jean-Philippe Lang
Activity enhancements:...
r1213 before_filter :find_optional_project, :only => :activity
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 before_filter :authorize, :except => [ :index, :list, :add, :copy, :archive, :unarchive, :destroy, :activity ]
Jean-Philippe Lang
Ability to allow non-admin users to create projects (#1007)....
r2651 before_filter :authorize_global, :only => :add
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
Jean-Philippe Lang
Adds support for free ticket filtering and custom queries on Calendar....
r1796 accept_key_auth :activity
Jean-Philippe Lang
Added fragment caching for calendar and gantt views...
r512
Jean-Philippe Lang
Replaces the obsolete robots.txt with a cached action (#2491)....
r2317 after_filter :only => [:add, :edit, :archive, :unarchive, :destroy] do |controller|
if controller.request.post?
controller.send :expire_action, :controller => 'welcome', :action => 'robots.txt'
end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 helper :sort
include SortHelper
helper :custom_fields
include CustomFieldsHelper
Jean-Philippe Lang
Performance improvement on calendar and gantt (about 45% on gantt for large number of issues)....
r783 helper :issues
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 helper IssuesHelper
helper :queries
include QueriesHelper
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 helper :repositories
include RepositoriesHelper
Jean-Philippe Lang
Gantt chart can now be exported to a graphic file (png)....
r660 include ProjectsHelper
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Main project list now displays root projects with their subprojects....
r718 # Lists visible projects
Jean-Philippe Lang
Moved ProjectsController#list to ProjectsController#index....
r1450 def index
Jean-Philippe Lang
Adds new projects atom feed (#1290)....
r1451 respond_to do |format|
format.html {
Jean-Philippe Lang
Merged nested projects branch. Removes limit on subproject nesting (#594)....
r2302 @projects = Project.visible.find(:all, :order => 'lft')
Jean-Philippe Lang
Adds new projects atom feed (#1290)....
r1451 }
format.atom {
Jean-Philippe Lang
Merged nested projects branch. Removes limit on subproject nesting (#594)....
r2302 projects = Project.visible.find(:all, :order => 'created_on DESC',
:limit => Setting.feeds_limit.to_i)
render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}")
Jean-Philippe Lang
Adds new projects atom feed (#1290)....
r1451 }
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Main project list now displays root projects with their subprojects....
r718
Jean-Philippe Lang
Initial commit...
r2 # Add a new project
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def add
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
Jean-Philippe Lang
Added per-project tracker selection. Trackers can be selected on project settings....
r907 @trackers = Tracker.all
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @project = Project.new(params[:project])
if request.get?
Jean-Philippe Lang
Adds an option to generate sequential project identifiers....
r1776 @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
Jean-Philippe Lang
Added per-project tracker selection. Trackers can be selected on project settings....
r907 @project.trackers = Tracker.all
Jean-Philippe Lang
Adds a setting for whether new projects should be public by default (closes #842, #839)....
r1221 @project.is_public = Setting.default_projects_public?
Jean-Philippe Lang
Adds a setting for new projects default modules (#1797)....
r2954 @project.enabled_module_names = Setting.default_projects_modules
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 else
Jean-Philippe Lang
Fixed: Modules selection not remembered when new project creation fails (#1109)....
r1343 @project.enabled_module_names = params[:enabled_modules]
Jean-Philippe Lang
v0.2.0...
r5 if @project.save
Jean-Philippe Lang
Allow non admin users to add subprojects (#2963)....
r2945 @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
Jean-Philippe Lang
Ability to allow non-admin users to create projects (#1007)....
r2651 # Add current user as a project member if he is not admin
unless User.current.admin?
Jean-Philippe Lang
Adds a setting to choose which role is given to a non-admin user who creates a project (#1007)....
r2655 r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
m = Member.new(:user => User.current, :roles => [r])
Jean-Philippe Lang
Ability to allow non-admin users to create projects (#1007)....
r2651 @project.members << m
end
Jean-Philippe Lang
notice messages translation...
r15 flash[:notice] = l(:notice_successful_create)
Jean-Philippe Lang
Ability to allow non-admin users to create projects (#1007)....
r2651 redirect_to :controller => 'projects', :action => 'settings', :id => @project
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
end
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608
def copy
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@trackers = Tracker.all
@root_projects = Project.find(:all,
:conditions => "parent_id IS NULL AND status = #{Project::STATUS_ACTIVE}",
:order => 'name')
Jean-Philippe Lang
Display stats about objects that can be copied....
r2861 @source_project = Project.find(params[:id])
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 if request.get?
Jean-Philippe Lang
Display stats about objects that can be copied....
r2861 @project = Project.copy_from(@source_project)
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 if @project
@project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
else
redirect_to :controller => 'admin', :action => 'projects'
end
else
@project = Project.new(params[:project])
@project.enabled_module_names = params[:enabled_modules]
Jean-Philippe Lang
Display stats about objects that can be copied....
r2861 if @project.copy(@source_project, :only => params[:only])
Jean-Philippe Lang
Allow non admin users to add subprojects (#2963)....
r2945 @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'admin', :action => 'projects'
end
Jean-Philippe Lang
Fixed a test failure....
r2878 end
rescue ActiveRecord::RecordNotFound
redirect_to :controller => 'admin', :action => 'projects'
Eric Davis
Added the ability to copy a project in the Project Administration panel....
r2608 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
# Show @project
def show
Jean-Philippe Lang
Jump to the current tab when using the project quick-jump combo (#2364)....
r2208 if params[:jump]
# try to redirect to the requested menu item
redirect_to_project_menu_item(@project, params[:jump]) && return
end
Jean-Philippe Lang
Display all users roles on project overview (#3339)....
r2635 @users_by_role = @project.users_by_role
Jean-Philippe Lang
Merged nested projects branch. Removes limit on subproject nesting (#594)....
r2302 @subprojects = @project.children.visible
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
Jean-Philippe Lang
Include subprojects on the issue list, calendar and gantt by default....
r1164 @trackers = @project.rolled_up_trackers
Jean-Philippe Lang
If 'Display subprojects issues on main projects' is set to false:...
r1283
cond = @project.project_condition(Setting.display_subprojects_issues?)
Jean-Philippe Lang
Removes Issue.visible_by...
r2340
@open_issues_by_tracker = Issue.visible.count(:group => :tracker,
Jean-Philippe Lang
Include subprojects on the issue list, calendar and gantt by default....
r1164 :include => [:project, :status, :tracker],
Jean-Philippe Lang
If 'Display subprojects issues on main projects' is set to false:...
r1283 :conditions => ["(#{cond}) AND #{IssueStatus.table_name}.is_closed=?", false])
Jean-Philippe Lang
Removes Issue.visible_by...
r2340 @total_issues_by_tracker = Issue.visible.count(:group => :tracker,
Jean-Philippe Lang
Include subprojects on the issue list, calendar and gantt by default....
r1164 :include => [:project, :status, :tracker],
Jean-Philippe Lang
If 'Display subprojects issues on main projects' is set to false:...
r1283 :conditions => cond)
Jean-Philippe Lang
Removes Issue.visible_by...
r2340
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 TimeEntry.visible_by(User.current) do
@total_hours = TimeEntry.sum(:hours,
:include => :project,
Jean-Philippe Lang
If 'Display subprojects issues on main projects' is set to false:...
r1283 :conditions => cond).to_f
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 end
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 @key = User.current.rss_key
Jean-Philippe Lang
v0.2.0...
r5 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
def settings
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @issue_category ||= IssueCategory.new
@member ||= @project.members.new
Jean-Philippe Lang
Added per-project tracker selection. Trackers can be selected on project settings....
r907 @trackers = Tracker.all
Jean-Philippe Lang
Added project module concept....
r714 @repository ||= @project.repository
@wiki ||= @project.wiki
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
# Edit @project
def edit
if request.post?
@project.attributes = params[:project]
Jean-Philippe Lang
svn browser merged in trunk...
r103 if @project.save
Jean-Philippe Lang
Allow non admin users to add subprojects (#2963)....
r2945 @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
Jean-Philippe Lang
notice messages translation...
r15 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 redirect_to :action => 'settings', :id => @project
else
settings
render :action => 'settings'
end
Jean-Philippe Lang
v0.2.0...
r5 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Added project module concept....
r714
def modules
@project.enabled_module_names = params[:enabled_modules]
redirect_to :action => 'settings', :id => @project, :tab => 'modules'
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Added the ability to archive projects:...
r546 def archive
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 if request.post?
unless @project.archive
flash[:error] = l(:error_can_not_archive_project)
end
end
Jean-Philippe Lang
Keep status filter on the projects list when un/archiving a project (#3530)....
r2706 redirect_to(url_for(:controller => 'admin', :action => 'projects', :status => params[:status]))
Jean-Philippe Lang
Added the ability to archive projects:...
r546 end
def unarchive
@project.unarchive if request.post? && !@project.active?
Jean-Philippe Lang
Keep status filter on the projects list when un/archiving a project (#3530)....
r2706 redirect_to(url_for(:controller => 'admin', :action => 'projects', :status => params[:status]))
Jean-Philippe Lang
Added the ability to archive projects:...
r546 end
Jean-Philippe Lang
0.3 unstable...
r10 # Delete @project
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def destroy
Jean-Philippe Lang
Added the ability to archive projects:...
r546 @project_to_destroy = @project
Jean-Philippe Lang
Initial commit...
r2 if request.post? and params[:confirm]
Jean-Philippe Lang
Added the ability to archive projects:...
r546 @project_to_destroy.destroy
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 redirect_to :controller => 'admin', :action => 'projects'
end
Jean-Philippe Lang
Added the ability to archive projects:...
r546 # hide project in layout
@project = nil
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
# Add a new issue category to @project
def add_issue_category
Jean-Philippe Lang
Each category can now be associated to a user, so that new issues in that category are automatically assigned to that user....
r574 @category = @project.issue_categories.build(params[:category])
Jean-Philippe Lang
Fixed: no error message when creating a category from the issue form fails (#1477)....
r3004 if request.post?
if @category.save
respond_to do |format|
format.html do
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'settings', :tab => 'categories', :id => @project
end
format.js do
# IE doesn't support the replace_html rjs method for select box options
render(:update) {|page| page.replace "issue_category_id",
content_tag('select', '<option></option>' + options_from_collection_for_select(@project.issue_categories, 'id', 'name', @category.id), :id => 'issue_category_id', :name => 'issue[category_id]')
}
end
Jean-Philippe Lang
Added a link to add a new category when creating or editing an issue....
r642 end
Jean-Philippe Lang
Fixed: no error message when creating a category from the issue form fails (#1477)....
r3004 else
respond_to do |format|
format.html
format.js do
render(:update) {|page| page.alert(@category.errors.full_messages.join('\n')) }
end
Jean-Philippe Lang
Added a link to add a new category when creating or editing an issue....
r642 end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Each category can now be associated to a user, so that new issues in that category are automatically assigned to that user....
r574 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
# Add a new version to @project
def add_version
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 @version = @project.versions.build
if params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
@version.attributes = attributes
end
Jean-Philippe Lang
Ability to add a new version from the issue form (#4315)....
r3012 if request.post?
if @version.save
respond_to do |format|
format.html do
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'settings', :tab => 'versions', :id => @project
end
format.js do
# IE doesn't support the replace_html rjs method for select box options
render(:update) {|page| page.replace "issue_fixed_version_id",
content_tag('select', '<option></option>' + version_options_for_select(@project.shared_versions.open, @version), :id => 'issue_fixed_version_id', :name => 'issue[fixed_version_id]')
}
end
end
else
respond_to do |format|
format.html
format.js do
render(:update) {|page| page.alert(@version.errors.full_messages.join('\n')) }
end
end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
end
def add_file
if request.post?
Jean-Philippe Lang
Files module: makes version field non required (#1053)....
r2115 container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
attachments = attach_files(container, params[:attachments])
if !attachments.empty? && Setting.notified_events.include?('file_added')
Mailer.deliver_attachments_added(attachments)
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 redirect_to :controller => 'projects', :action => 'list_files', :id => @project
Jean-Philippe Lang
Files module: makes version field non required (#1053)....
r2115 return
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Versions can now be created with no date....
r533 @versions = @project.versions.sort
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Eric Davis
Added a Activities tab to Project Settings...
r2835
def save_activities
if request.post? && params[:enumerations]
Eric Davis
When a specific TimeEntryActivity are change, associated TimeEntries will be...
r2836 Project.transaction do
params[:enumerations].each do |id, activity|
@project.update_or_create_time_entry_activity(id, activity)
end
Eric Davis
Added a Activities tab to Project Settings...
r2835 end
end
redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
end
def reset_activities
@project.time_entry_activities.each do |time_entry_activity|
Eric Davis
When a specific TimeEntryActivity are change, associated TimeEntries will be...
r2836 time_entry_activity.destroy(time_entry_activity.parent)
Eric Davis
Added a Activities tab to Project Settings...
r2835 end
redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
def list_files
Jean-Philippe Lang
Validates sort_key and sort_order params (#2378)....
r2169 sort_init 'filename', 'asc'
sort_update 'filename' => "#{Attachment.table_name}.filename",
'created_on' => "#{Attachment.table_name}.created_on",
'size' => "#{Attachment.table_name}.filesize",
'downloads' => "#{Attachment.table_name}.downloads"
Jean-Philippe Lang
Files module: makes version field non required (#1053)....
r2115 @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
@containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
Jean-Philippe Lang
Make the project files list sortable (#997)....
r1315 render :layout => !request.xhr?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
def roadmap
Jean-Philippe Lang
Removes changelog view....
r3048 @trackers = @project.trackers.find(:all, :order => 'position')
retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
@versions = @project.shared_versions.sort
@versions.reject! {|version| version.closed? || version.completed? } unless params[:completed]
@issues_by_version = {}
unless @selected_tracker_ids.empty?
@versions.each do |version|
conditions = {:tracker_id => @selected_tracker_ids}
if !@project.versions.include?(version)
conditions.merge!(:project_id => project_ids)
end
issues = version.fixed_issues.visible.find(:all,
:include => [:status, :tracker, :priority],
:conditions => conditions,
:order => "#{Tracker.table_name}.position, #{Issue.table_name}.id")
@issues_by_version[version] = issues
end
end
@versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].empty?}
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
def activity
Jean-Philippe Lang
Display the last 30 days on the activity view rather than the current month....
r1182 @days = Setting.activity_days_default.to_i
if params[:from]
Jean-Philippe Lang
Fixes activity date param....
r1999 begin; @date_to = params[:from].to_date + 1; rescue; end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Display the last 30 days on the activity view rather than the current month....
r1182 @date_to ||= Date.today + 1
@date_from = @date_to - @days
Jean-Philippe Lang
Activity refactoring....
r1692 @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
Jean-Philippe Lang
Fixed: 404 when "Apply" clicked on activity page (#2251)....
r2080 @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Makes activity view accept a user_id param to show user's activity (#1002)....
r2065 @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project,
:with_subprojects => @with_subprojects,
:author => @author)
Jean-Philippe Lang
Activity refactoring....
r1692 @activity.scope_select {|t| !params["show_#{t}"].nil?}
Jean-Philippe Lang
Makes activity view accept a user_id param to show user's activity (#1002)....
r2065 @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
Jean-Philippe Lang
patch #9429 Display Wiki edits in activity log (Nick Read)...
r367
Jean-Philippe Lang
Activity refactoring....
r1692 events = @activity.events(@date_from, @date_to)
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663
Jean-Philippe Lang
Add etag check on the activity view to avoid rendering when not modified....
r2868 if events.empty? || stale?(:etag => [events.first, User.current])
respond_to do |format|
format.html {
@events_by_day = events.group_by(&:event_date)
render :layout => false if request.xhr?
}
format.atom {
title = l(:label_activity)
if @author
title = @author.name
elsif @activity.scope.size == 1
title = l("label_#{@activity.scope.first.singularize}_plural")
end
render_feed(events, :title => "#{@project || Setting.app_title}: #{title}")
}
end
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 end
Jean-Philippe Lang
Makes activity view accept a user_id param to show user's activity (#1002)....
r2065
rescue ActiveRecord::RecordNotFound
render_404
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
private
# Find project of id params[:id]
# if not found, redirect to project list
# Used as a before_filter
def find_project
@project = Project.find(params[:id])
Jean-Philippe Lang
ActiveRecord::RecordNotFound exceptions handled more gracefully...
r130 rescue ActiveRecord::RecordNotFound
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 render_404
end
Jean-Philippe Lang
Activity enhancements:...
r1213 def find_optional_project
return true unless params[:id]
@project = Project.find(params[:id])
authorize
rescue ActiveRecord::RecordNotFound
render_404
end
Jean-Philippe Lang
Removes changelog view....
r3048 def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
Jean-Philippe Lang
Patch #9705 Tracker filtering on Main Calendar (Jeffrey Jones)...
r392 if ids = params[:tracker_ids]
@selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
else
Jean-Philippe Lang
Removes changelog view....
r3048 @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
Jean-Philippe Lang
Patch #9705 Tracker filtering on Main Calendar (Jeffrey Jones)...
r392 end
end
Jean-Philippe Lang
Initial commit...
r2 end