diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index f89e9a4dd..a273afe51 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -88,10 +88,12 @@ class AccountController < ApplicationController # create a new token for password recovery token = Token.new(:user => user, :action => "recovery") if token.save - Mailer.lost_password(token).deliver - flash[:notice] = l(:notice_account_lost_email_sent) - redirect_to signin_path - return + Thread.new do + Mailer.lost_password(token).deliver + end + flash[:notice] = l(:notice_account_lost_email_sent) + redirect_to signin_path + return end end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 875a8db0c..ee98739e4 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -148,18 +148,26 @@ class ProjectsController < ApplicationController @trackers = Tracker.sorted.all @project = Project.new @project.safe_attributes = params[:project] + ##add by xianbo + @course=Course.new + @course.safe_attributes = params[:course] + ##end render :layout => 'base' end def create - @course_tag = params[:project][:project_type] + @course_tag = params[:project][:project_type] + @course = Course.new + @course.extra=params[:project][:identifier] + @course.safe_attributes = params[:project][:course] + @issue_custom_fields = IssueCustomField.sorted.all @trackers = Tracker.sorted.all @project = Project.new @project.safe_attributes = params[:project] - - if validate_parent_id && @project.save + @course.save + if validate_parent_id && @project.save @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') # Add current user as a project member if he is not admin unless User.current.admin? @@ -174,8 +182,9 @@ class ProjectsController < ApplicationController 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) + redirect_to new_project_path(attrs, :course => '1') #Added by young + elsif params[:course_continue] redirect_to new_project_path(:course => '1') #Ended by young @@ -233,9 +242,7 @@ class ProjectsController < ApplicationController @subprojects = @project.children.visible.all @news = @project.news.limit(5).includes(:author, :project).reorder("#{News.table_name}.created_on DESC").all @trackers = @project.rolled_up_trackers - cond = @project.project_condition(Setting.display_subprojects_issues?) - @open_issues_by_tracker = Issue.visible.open.where(cond).count(:group => :tracker) @total_issues_by_tracker = Issue.visible.where(cond).count(:group => :tracker) @@ -329,6 +336,8 @@ class ProjectsController < ApplicationController def update @project.safe_attributes = params[:project] + @Course.safe_attributes=params[:project][:course] + @Course.save if validate_parent_id && @project.save @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') respond_to do |format| diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 4b465a11e..cc7a29960 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -40,7 +40,7 @@ module ProjectsHelper #Added by young def course_settings_tabs - tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural}, + tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural, :course=>'1'}, {:name => 'boards', :action => :manage_boards, :partial => 'projects/settings/boards', :label => :label_board_plural}, {:name => 'repositories', :action => :manage_repository, :partial => 'projects/settings/repositories', :label => :label_repository_plural} ] diff --git a/app/models/bid.rb b/app/models/bid.rb index ef51e9589..25e7743f8 100644 --- a/app/models/bid.rb +++ b/app/models/bid.rb @@ -4,6 +4,7 @@ class Bid < ActiveRecord::Base include Redmine::SafeAttributes belongs_to :author, :class_name => 'User', :foreign_key => :author_id + belongs_to :course has_many :biding_projects, :dependent => :destroy has_many :projects, :through => :biding_projects has_many :journals_for_messages, :as => :jour, :dependent => :destroy diff --git a/app/models/project.rb b/app/models/project.rb index d249ec02a..48ca45746 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -58,7 +58,11 @@ class Project < ActiveRecord::Base has_many :project_infos, :dependent => :destroy #end has_one :wiki, :dependent => :destroy - # Custom field for the project issues + ##added by xianbo + has_one :course, :dependent => :destroy + accepts_nested_attributes_for :course + ##end + # Custom field for the project issues has_and_belongs_to_many :issue_custom_fields, :class_name => 'IssueCustomField', :order => "#{CustomField.table_name}.position", @@ -683,6 +687,7 @@ class Project < ActiveRecord::Base 'tracker_ids', 'issue_custom_field_ids', 'project_type' + safe_attributes 'enabled_module_names', :if => lambda {|project, user| project.new_record? || user.allowed_to?(:select_project_modules, project) } @@ -1027,6 +1032,9 @@ class Project < ActiveRecord::Base def update_position_under_parent set_or_update_position_under(parent) end + def course + @course + end # Inserts/moves the project so that target's children or root projects stay alphabetically sorted def set_or_update_position_under(target_parent) diff --git a/app/models/user.rb b/app/models/user.rb index 21e1664e1..8497918e7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -150,8 +150,11 @@ class User < Principal end def set_mail_notification + ##add byxianbo + thread=Thread.new do self.mail_notification = Setting.default_notification_option if self.mail_notification.blank? true + end end def update_hashed_password diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index d59980b75..80c619eb0 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -29,6 +29,7 @@
<% @project = Project.find_by_id(@project.id)%> + <% @course= Course.find_by_extra(@project.identifier)%> @@ -114,10 +115,10 @@
-
教师名称:XXX
+
教师名称:<%= @course.name%>
所在单位:并行与分布重点实验室
-
课程学分:X学分
-
课程学时:XX学时
+
课程学分:<%=@course.code%>
+
课程学时:<%=@course.time%>
XXXX:XXXXXXXX
    diff --git a/app/views/projects/_course_form.html.erb b/app/views/projects/_course_form.html.erb index 72dc3cd1e..39876fc4e 100644 --- a/app/views/projects/_course_form.html.erb +++ b/app/views/projects/_course_form.html.erb @@ -11,6 +11,11 @@ <%= l(:text_length_between, :min => 1, :max => Project::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_project_identifier_info).html_safe %> <% end %>

    <%= f.text_field :homepage, :size => 60, :style => "width:488px;margin-left: 10px;" %>

    + <%= f.fields_for @course do |m| %> +

    <%= m.text_field :time, :size => 60, :style => "width:488px;margin-left: 10px;" %>

    +

    <%= m.text_field :code, :size => 60, :style => "width:488px;margin-left: 10px;" %>

    +

    <%= m.text_field :name, :size => 60, :style => "width:488px;margin-left: 10px;" %>

    +<% end %>

    <%= f.check_box :is_public, :style => "margin-left:10px;" %>

    <%= f.text_field :project_type, :value => 1 %>

    diff --git a/app/views/projects/_edit.html.erb b/app/views/projects/_edit.html.erb index 8661b6874..c2bd5ce23 100644 --- a/app/views/projects/_edit.html.erb +++ b/app/views/projects/_edit.html.erb @@ -1,6 +1,8 @@
    <%= labelled_form_for @project do |f| %> -<%= render :partial => 'form', :locals => { :f => f } %> -<%= submit_tag l(:button_save) %> + + <%= render :partial => 'form', :locals => { :f => f } %> + <%= submit_tag l(:button_save) %> + <% end %>
    \ No newline at end of file diff --git a/config/locales/zh.yml b/config/locales/zh.yml index c47b21643..bb284824f 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -252,6 +252,8 @@ zh: field_principal: 用户/用户组 field_role: 角色 field_homepage: 主页 + field_time: 课时 + field_code: 学分 field_is_public: 公开 field_parent: 上级项目 field_is_in_roadmap: 在路线图中显示 diff --git a/db/schema.rb b/db/schema.rb index 944fce946..02256fdeb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130827003308) do +ActiveRecord::Schema.define(:version => 20130904075504) do create_table "a_user_watchers", :force => true do |t| t.string "name" @@ -161,6 +161,17 @@ ActiveRecord::Schema.define(:version => 20130827003308) do add_index "comments", ["author_id"], :name => "index_comments_on_author_id" add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type" + create_table "courses", :force => true do |t| + t.integer "tea_id" + t.string "name" + t.integer "state" + t.string "code" + t.integer "time" + t.string "extra" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "custom_fields", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 30, :default => "", :null => false @@ -565,10 +576,11 @@ ActiveRecord::Schema.define(:version => 20130827003308) do t.string "title" t.string "share_type" t.string "url" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.integer "project_id" t.integer "user_id" + t.string "description" end create_table "students", :force => true do |t| @@ -594,6 +606,16 @@ ActiveRecord::Schema.define(:version => 20130827003308) do t.string "name" end + create_table "teachers", :force => true do |t| + t.string "tea_name" + t.string "location" + t.integer "couurse_time" + t.integer "course_code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "extra" + end + create_table "time_entries", :force => true do |t| t.integer "project_id", :null => false t.integer "user_id", :null => false @@ -663,6 +685,9 @@ ActiveRecord::Schema.define(:version => 20130827003308) do t.datetime "updated_at", :null => false end + add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count" + add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count" + create_table "user_tags", :force => true do |t| t.integer "user_id" t.integer "tag_id"
<%= link_to image_tag(url_to_avatar(@project), :class => 'avatar2') %>