diff --git a/app/assets/javascripts/article_homepages.js.coffee b/app/assets/javascripts/article_homepages.js.coffee new file mode 100644 index 000000000..761567942 --- /dev/null +++ b/app/assets/javascripts/article_homepages.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/javascripts/homepages.js.coffee b/app/assets/javascripts/homepages.js.coffee new file mode 100644 index 000000000..761567942 --- /dev/null +++ b/app/assets/javascripts/homepages.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/stylesheets/article_homepages.css.scss b/app/assets/stylesheets/article_homepages.css.scss new file mode 100644 index 000000000..6c4c64d96 --- /dev/null +++ b/app/assets/stylesheets/article_homepages.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the ArticleHomepages controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/homepages.css.scss b/app/assets/stylesheets/homepages.css.scss new file mode 100644 index 000000000..2305c36d1 --- /dev/null +++ b/app/assets/stylesheets/homepages.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Homepages controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/article_homepages_controller.rb b/app/controllers/article_homepages_controller.rb new file mode 100644 index 000000000..298cfe3d3 --- /dev/null +++ b/app/controllers/article_homepages_controller.rb @@ -0,0 +1,71 @@ +class ArticleHomepagesController < ApplicationController + before_filter :find_article_homepage, :only => [:show, :edit, :update, :destroy] + + def new + @article = ArticleHomepage.new + respond_to do |format| + format.html {render :layout=>'static_base'} + end + end + + def create + if User.current.logged? + @article = ArticleHomepage.new + @article.user = User.current + @article.homepage_id = User.current.homepage.id + @article.title = params[:article_homepage][:title] + @article.content = params[:article_homepage][:content] + if @article.save + if params[:set_homepage] + User.current.homepage.update_attribute(:article_id, @article.id) + end + redirect_to user_homepages_path(:user_id => User.current.id) + end + else + redirect_to signin_path + end + end + + def show + respond_to do |format| + format.html {render :layout => 'clear_base'} + end + end + + def edit + if User.current.admin? || User.current.id == @article.user_id + respond_to do |format| + format.html { render :layout => 'static_base' } + end + else + render_403 + end + end + + def update + if User.current.logged? + @article.title = params[:article_homepage][:title] + @article.content = params[:article_homepage][:content] + if @article.save + redirect_to user_homepages_path(:user_id => User.current.id) + end + else + redirect_to signin_path + end + end + + def destroy + if @article + if @article.homepage.article_id == @article.id + @article.homepage.update_attribute(:article_id, nil) + end + @article.destroy + redirect_to user_homepages_path(:user_id => User.current.id) + end + end + + private + def find_article_homepage + @article = ArticleHomepage.find params[:id] + end +end diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb new file mode 100644 index 000000000..dfaaaa225 --- /dev/null +++ b/app/controllers/homepages_controller.rb @@ -0,0 +1,72 @@ +class HomepagesController < ApplicationController + before_filter :find_user + + def index + if User.current.logged? && User.current == @user + @b_sort = params[:sort] || 1 + @b_sort = @b_sort.to_i == 1 ? 2 : 1 + sort_type = @b_sort == 1 ? "asc" : "desc" + @articles = @user.homepage.article_homepages.reorder("updated_at #{sort_type}") + @limit = 20 + @is_remote = true + @atta_count = @articles.count + @atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1 + @offset ||= @atta_pages.offset + @articles = paginateHelper @articles,@limit + + respond_to do |format| + format.js + format.html {render :layout=>'new_base_user'} + end + else + render_403 + end + end + + def show + + end + + def set_homepage + @homepage = Homepage.find(params[:id]) + @homepage.update_attribute(:article_id, params[:article_id]) + @articles = @user.homepage.article_homepages.reorder("updated_at desc") + @limit = 20 + @is_remote = true + @atta_count = @articles.count + @atta_pages = Paginator.new @atta_count, @limit, 1 + @articles = paginateHelper @articles,@limit + if params[:show] + redirect_to homepage_user_path(@user.id) + return + else + respond_to do |format| + format.js + end + end + end + + def cancel_homepage + @homepage = Homepage.find(params[:id]) + @homepage.update_attribute(:article_id, nil) + @articles = @user.homepage.article_homepages.reorder("updated_at desc") + @limit = 20 + @is_remote = true + @atta_count = @articles.count + @atta_pages = Paginator.new @atta_count, @limit, 1 + @articles = paginateHelper @articles,@limit + if params[:show] + redirect_to user_homepage_article_homepage_path(:user_id=>@user.id, :homepage_id=>@homepage.id,:id=>params[:article_id].to_i) + return + else + respond_to do |format| + format.js + end + end + end + + private + def find_user + @user = User.find(params[:user_id]) + end +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 25593049d..84b661456 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -42,7 +42,7 @@ class UsersController < ApplicationController :activity_new_score_index, :influence_new_score_index, :score_new_index,:user_projects_index,:user_resource, :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction, :user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist,:sort_syllabus_list, - :sort_project_list,:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks, :cancel_or_collect,:expand_courses] + :sort_project_list,:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks, :cancel_or_collect,:expand_courses,:homepage] before_filter :auth_user_extension, only: :show #before_filter :rest_user_score, only: :show #before_filter :select_entry, only: :user_projects @@ -3580,6 +3580,15 @@ class UsersController < ApplicationController end end + def homepage + if @user.base_homepage + @article = @user.base_homepage + respond_to do |format| + format.html {render :layout => 'clear_base'} + end + end + end + private def find_user diff --git a/app/helpers/article_homepages_helper.rb b/app/helpers/article_homepages_helper.rb new file mode 100644 index 000000000..bf180680e --- /dev/null +++ b/app/helpers/article_homepages_helper.rb @@ -0,0 +1,2 @@ +module ArticleHomepagesHelper +end diff --git a/app/helpers/homepages_helper.rb b/app/helpers/homepages_helper.rb new file mode 100644 index 000000000..4bd8098f3 --- /dev/null +++ b/app/helpers/homepages_helper.rb @@ -0,0 +1,2 @@ +module HomepagesHelper +end diff --git a/app/helpers/owner_type_helper.rb b/app/helpers/owner_type_helper.rb index 01320660c..3da722118 100644 --- a/app/helpers/owner_type_helper.rb +++ b/app/helpers/owner_type_helper.rb @@ -9,4 +9,5 @@ module OwnerTypeHelper HOMEWORKCOMMON = 8 BLOGCOMMENT = 9 SYLLABUS = 10 + ArticleHomepage = 11 end \ No newline at end of file diff --git a/app/models/article_homepage.rb b/app/models/article_homepage.rb new file mode 100644 index 000000000..b81353310 --- /dev/null +++ b/app/models/article_homepage.rb @@ -0,0 +1,5 @@ +class ArticleHomepage < ActiveRecord::Base + belongs_to :user + belongs_to :homepage + attr_accessible :content, :title, :user_id, :homepage_id +end diff --git a/app/models/homepage.rb b/app/models/homepage.rb new file mode 100644 index 000000000..f499aa54e --- /dev/null +++ b/app/models/homepage.rb @@ -0,0 +1,5 @@ +class Homepage < ActiveRecord::Base + belongs_to :user + has_many :article_homepages + attr_accessible :name, :article_id, :user_id +end diff --git a/app/models/student_work.rb b/app/models/student_work.rb index a33200b3b..0a0c880c1 100644 --- a/app/models/student_work.rb +++ b/app/models/student_work.rb @@ -30,15 +30,15 @@ class StudentWork < ActiveRecord::Base student_work_tests.order('id desc').first end - private + private def set_program_score if self.homework_common.is_program_homework? #编程作业,学生提交作品后计算系统得分 - #根据最后一次测试计算得分 - unless last_test - self.system_score = 0 - else - self.system_score = last_test.test_score - end + #根据最后一次测试计算得分 + unless last_test + self.system_score = 0 + else + self.system_score = last_test.test_score self.homework_common.homework_tests.size + end end set_final_score self.homework_common,self end @@ -133,7 +133,7 @@ class StudentWork < ActiveRecord::Base else student_work.work_score = nil end - end + end else #不考虑教师评分 if student_work.teaching_asistant_score.nil? #教辅未评分 if student_work.student_score.nil? diff --git a/app/models/student_work_test.rb b/app/models/student_work_test.rb index f2a35871f..9f62d89e7 100644 --- a/app/models/student_work_test.rb +++ b/app/models/student_work_test.rb @@ -32,13 +32,14 @@ class StudentWorkTest < ActiveRecord::Base end end - def test_score - if self.status.to_i == 0 + #必须和测试集个数一样才能得100分 + def test_score(testcount) + if self.status.to_i == 0 && testcount == self.results.count 100 elsif self.results.empty? 0 - else - get_success_count * 100 / self.results.count + else + get_success_count * 100 / testcount end end diff --git a/app/models/user.rb b/app/models/user.rb index ed17010c6..6a285efd1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -208,6 +208,9 @@ class User < Principal acts_as_watchable has_one :user_extensions,:dependent => :destroy + has_one :homepage, :dependent => :destroy + has_many :article_homepages, :dependent => :destroy + ## end # default_scope -> { includes(:user_extensions, :user_score) } @@ -347,6 +350,25 @@ class User < Principal @blog end + def homepage + @homepage = Homepage.where("user_id = #{self.id}").all[0] + if @homepage.nil? + #如果某个user的blog不存在,那么就创建一条,并且跳转 + @homepage = Homepage.create(:name=>(User.find(self.id).login), :user_id=>self.id) + @homepage.save + end + @homepage + end + + def base_homepage + @base_homepage = nil + @homepage = self.homepage + if @homepage.article_id and ArticleHomepage.where("id=?", @homepage.article_id).count > 0 + @base_homepage = ArticleHomepage.where("id=?", @homepage.article_id).first + end + @base_homepage + end + # 查询指派给我的缺陷记录 def count_new_issue_assign_to self.issue_assigns diff --git a/app/views/article_homepages/_article_form.html.erb b/app/views/article_homepages/_article_form.html.erb new file mode 100644 index 000000000..b0707eb6a --- /dev/null +++ b/app/views/article_homepages/_article_form.html.erb @@ -0,0 +1,50 @@ +<%= content_for(:header_tags) do %> + <%= import_ke(enable_at: false, prettify: false) %> + <%= javascript_include_tag 'homepage' %> +<% end %> + +
<%= l(:label_no_data) %>
+ <% end %> +您还没有设置个人主页,其他用户无法查看哦
+<% end %> +<% if !@articles.empty? %> + <%= render :partial => 'article_list' %> +<% else %> +您还没有创建属于自己的个人主页。<%=link_to '新建', new_user_homepage_article_homepage_path(:user_id=> @user.id, :homepage_id => @user.homepage.id), :target => "_blank", :class => 'linkBlue' %>
+<% end%> \ No newline at end of file diff --git a/app/views/homepages/cancel_homepage.js.erb b/app/views/homepages/cancel_homepage.js.erb new file mode 100644 index 000000000..7df0ea83e --- /dev/null +++ b/app/views/homepages/cancel_homepage.js.erb @@ -0,0 +1 @@ +$("#user_homepages").html('<%= escape_javascript(render :partial => 'articles') %>'); \ No newline at end of file diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb new file mode 100644 index 000000000..58f54432e --- /dev/null +++ b/app/views/homepages/index.html.erb @@ -0,0 +1,12 @@ +您还没有创建属于自己的个人主页。<%=link_to '新建', new_user_homepage_article_homepage_path(:user_id=> @user.id, :homepage_id => @user.homepage.id), :target => "_blank", :class => 'linkBlue' %>
+ <% end %> + +