competition
nwb 11 years ago
commit f36ccad76a

@ -16,6 +16,7 @@
# 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 ProjectsController < ApplicationController class ProjectsController < ApplicationController
layout :select_project_layout layout :select_project_layout
menu_item :overview menu_item :overview
menu_item :roadmap, :only => :roadmap menu_item :roadmap, :only => :roadmap
menu_item :settings, :only => :settings menu_item :settings, :only => :settings
@ -459,24 +460,10 @@ class ProjectsController < ApplicationController
end end
def new def new
@project_type = params[:project_type] ||= params[:course]
@issue_custom_fields = IssueCustomField.sorted.all @issue_custom_fields = IssueCustomField.sorted.all
@trackers = Tracker.sorted.all @trackers = Tracker.sorted.all
@project = Project.new
case @project_type @project.safe_attributes = params[:project]
when '0' # Project
@project = Project.new
@project.safe_attributes = params[:project]
when '1' # Course
@project = Project.new
@project.safe_attributes = params[:project]
@course_tag = params[:course]
@course = Course.new
@course.safe_attributes = params[:course]
else # default Project
@project = Project.new
@project.safe_attributes = params[:project]
end
render :layout => 'base' render :layout => 'base'
end end
@ -490,128 +477,43 @@ class ProjectsController < ApplicationController
end end
def create def create
@course_tag = params[:project][:project_type]
if(@course_tag=="1")
if User.current.user_extensions.identity#.include?(UserExtensions::TEACHER,UserExtensions::DEVELOPER)
@course = Course.new
@course.extra='course' + DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d_%H-%M-%S').to_s
@course.safe_attributes = params[:project][:course]
@course.tea_id = User.current.id
# added by bai
@course.term = params[:term]
@course.time = params[:time]
#@course.school_id = params[:occupation]
@course.school_id = User.current.user_extensions.school_id
@course.setup_time = params[:setup_time]
@course.endup_time = params[:endup_time]
@course.class_period = params[:class_period]
end
end
@issue_custom_fields = IssueCustomField.sorted.all @issue_custom_fields = IssueCustomField.sorted.all
@trackers = Tracker.sorted.all @trackers = Tracker.sorted.all
@project = Project.new @project = Project.new
@project.user_id = User.current.id
@project.dts_test = params[:project][:dts_test]
@project.safe_attributes = params[:project] @project.safe_attributes = params[:project]
if @course_tag == '1' if validate_parent_id && @project.save
@project.identifier = @course.extra @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
end # Add current user as a project member if he is not admin
if @course_tag == '1' #unless User.current.admin?
if User.current.user_extensions.identity == 0 r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
if@course.save m = Member.new(:user => User.current, :roles => [r])
if validate_parent_id && @project.save project_info = ProjectInfo.new(:user_id => User.current.id, :project_id => @project.id)
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') user_grades = UserGrade.create(:user_id => User.current.id, :project_id => @project.id)
# Add current user as a project member if he is not admin Rails.logger.debug "UserGrade created: #{user_grades.to_json}"
unless User.current.admin? if params[:project][:is_public] == '1'
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first project_status = ProjectStatus.create(:project_id => @project.id, :watchers_count => 0, :changesets_count => 0, :project_type => @project.project_type)
m = Member.new(:user => User.current, :roles => [r]) Rails.logger.debug "ProjectStatus created: #{project_status.to_json}"
project = ProjectInfo.new(:user_id => User.current.id, :project_id => @project.id) end
user_grades = UserGrade.create(:user_id => User.current.id, :project_id => @project.id) @project.members << m
if params[:project][:is_public] == '1' @project.project_infos << project_info
project_status = ProjectStatus.create(:project_id => @project.id, :watchers_count => 0, :changesets_count => 0, :grade => 0, :project_type => @course_tag) #end
end respond_to do |format|
@project.members << m format.html {
@project.project_infos << project flash[:notice] = l(:notice_successful_create)
end if params[:continue]
respond_to do |format| attrs = {:parent_id => @project.parent_id}.reject {|k,v| v.nil?}
format.html { redirect_to new_project_path(attrs, :course => '0')
flash[:notice] = l(:notice_successful_create)
if params[:continue]
attrs = {:parent_id => @project.parent_id}.reject {|k,v| v.nil?}
redirect_to new_project_path(attrs, :course => '0')
#Added by young
elsif params[:course_continue]
redirect_to new_project_path(:course => '1')
#Ended by young
else
redirect_to settings_project_path(@project,:project_type => 1)
end
}
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
end
else
@course.destroy
respond_to do |format|
format.html { render :action => 'new', :layout => 'base'}#Added by young
format.api { render_validation_errors(@project) }
end
end
else
if validate_parent_id && @project.save
@project.delete
respond_to do |format|
format.html { render :action => 'new', :layout => 'base'}#Added by young
format.api { render_validation_errors(@project) }
end
else else
respond_to do |format| redirect_to settings_project_path(@project)
format.html { render :action => 'new', :layout => 'base'}#Added by young
format.api { render_validation_errors(@project) }
end
end end
end }
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
end end
else else
#@project.memberships.create respond_to do |format|
if validate_parent_id && @project.save format.html { render :action => 'new', :layout => 'base'}#Added by young
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') format.api { render_validation_errors(@project) }
# Add current user as a project member if he is not admin end
#unless User.current.admin?
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])
project = ProjectInfo.new(:user_id => User.current.id, :project_id => @project.id)
user_grades = UserGrade.create(:user_id => User.current.id, :project_id => @project.id)
if params[:project][:is_public] == '1' || @course_tag=="1"
project_status = ProjectStatus.create(:project_id => @project.id, :watchers_count => 0, :changesets_count => 0, :project_type => @project.project_type)
end
@project.members << m
@project.project_infos << project
#end
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_create)
if params[:continue]
attrs = {:parent_id => @project.parent_id}.reject {|k,v| v.nil?}
redirect_to new_project_path(attrs, :course => '0')
#Added by young
elsif params[:course_continue]
redirect_to new_project_path(:course => '1')
#Ended by young
else
redirect_to settings_project_path(@project)
end
}
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
end
else
respond_to do |format|
format.html { render :action => 'new', :layout => 'base'}#Added by young
format.api { render_validation_errors(@project) }
end
end
end end
end end

@ -758,6 +758,7 @@ class Project < ActiveRecord::Base
'tracker_ids', 'tracker_ids',
'issue_custom_field_ids', 'issue_custom_field_ids',
'project_type', 'project_type',
'dts_test',
'attachmenttype' 'attachmenttype'

Loading…
Cancel
Save