From 20cd5941a8cd06a760c984340107c410d6a2f3af Mon Sep 17 00:00:00 2001 From: xianbo Date: Fri, 21 Mar 2014 15:17:14 +0800 Subject: [PATCH 1/3] modify project main page --- app/helpers/application_helper.rb | 12 +- app/views/layouts/base.html.erb | 4 + app/views/projects/index.html.erb | 1 - app/views/welcome/_search_project.html.erb | 7 ++ app/views/welcome/index.html.erb | 131 ++++++++------------- lib/redmine.rb | 4 +- 6 files changed, 70 insertions(+), 89 deletions(-) create mode 100644 app/views/welcome/_search_project.html.erb diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index fc3d6cd61..ab45d8e9a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1500,16 +1500,16 @@ module ApplicationHelper end def render_dynamic_nav - home_link = link_to l(:field_homepage), {:controller => 'welcome', :action => 'index',:host => Setting.forge_domain} + home_link = link_to l(:field_homepage), {:controller => 'welcome', :action => 'index'} course_all_course_link = link_to l(:label_course_all), {:controller => 'projects', :action => 'course', :project_type => 1} course_teacher_all_link = link_to l(:label_teacher_all), {:controller => 'users', :action => 'index', :role => 'teacher'} - courses_link = link_to l(:label_course_practice), {:controller => 'projects', :action => 'course', :project_type => 1, :host=>Setting.course_domain} - projects_link = link_to l(:label_project_deposit), {:controller => 'projects', :action => 'index', :project_type => 0, :host => Setting.project_domain} + courses_link = link_to l(:label_course_practice), {:controller => 'projects', :action => 'course', :project_type => 1} + projects_link = link_to l(:label_project_deposit), {:controller => 'projects', :action => 'index', :project_type => 0} users_link = link_to l(:label_software_user), {:controller => 'users', :action => 'index'} - contest_link = link_to l(:label_contest_innovate), {:controller => 'bids', :action => 'contest', :project_type => 1, :host=>Setting.contest_domain} + contest_link = link_to l(:label_contest_innovate), {:controller => 'bids', :action => 'contest', :project_type => 1 } bids_link = link_to l(:label_requirement_enterprise), {:controller => 'bids', :action => 'index'} - forum_link = link_to l(:label_project_module_forums), {:controller => "forums", :action => "index", :host => Setting.forge_domain} - stores_link = link_to l(:label_stores_index), {:controller => 'stores', :action=> 'index', :host => Setting.forge_domain} + forum_link = link_to l(:label_project_module_forums), {:controller => "forums", :action => "index"} + stores_link = link_to l(:label_stores_index), {:controller => 'stores', :action=> 'index'} #@nav_dispaly_project_label nav_list = Array.new diff --git a/app/views/layouts/base.html.erb b/app/views/layouts/base.html.erb index e475bbd5f..421e76050 100644 --- a/app/views/layouts/base.html.erb +++ b/app/views/layouts/base.html.erb @@ -21,6 +21,10 @@ @nav_dispaly_course_all_label = 1 @nav_dispaly_teacher_all_label = 1 @nav_dispaly_forum_label = 1 + elsif (realUrl.match(/forge\.trustie\.net/)) + @nav_dispaly_project_label = 1 + @nav_dispaly_user_label = 1 + @nav_dispaly_forum_label = 1 else @nav_dispaly_course_label = 1 @nav_dispaly_project_label = 1 diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index 9d2aaccdd..db37af91b 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -25,7 +25,6 @@ <%= link_to request.host()+"/projects", :controller => 'projects', :action => 'index', :project_type => 0 %> <%=link_to l(:field_homepage), home_path %> > <%=link_to l(:label_project_deposit), :controller => 'projects', :action => 'index', :project_type => 0 %> - <% end %> <%= sort_project(@s_type, @project_type) %> diff --git a/app/views/welcome/_search_project.html.erb b/app/views/welcome/_search_project.html.erb new file mode 100644 index 000000000..a082a6dcf --- /dev/null +++ b/app/views/welcome/_search_project.html.erb @@ -0,0 +1,7 @@ +<%= form_tag(:controller => 'projects', :action => "search", :method => :get) do %> + +<% end %> \ No newline at end of file diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index b3d057c54..fd539b12f 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -94,8 +94,8 @@
<%= l(:label_welcome_trustie) %> , <%= l(:label_welcome_trustie_description) %>
- @@ -107,60 +107,13 @@ <%= stylesheet_link_tag 'welcome' %> -
- -
- -
- -
- - +

热门项目

<%= link_to "更多>>", { :controller => 'projects', :action => 'index', :project_type => 0, :host => Setting.project_domain}, :target => "_blank" %>
    - <% find_all_hot_project.map do |project| break if(project == find_all_hot_project[15]) %> + <% find_all_hot_project.map do |project| break if(project == find_all_hot_project[10]) %>
  • <%= image_tag url_to_avatar(project), :class => "avatar-4" %> @@ -185,36 +138,54 @@
    -

    热门课程

    - <%= link_to "更多>>", {:controller => 'projects', :action => 'course', :project_type => 1, :project_sort_type => 1, :host => Setting.course_domain}, :target => "_blank" %> -
    -
      - <% find_all_hot_course.map do |project| break if(project == find_all_hot_course[5]) %> -
    • -
      - <% if get_avatar?(project)%> - <%= image_tag(url_to_avatar(project), :class => "avatar-4") %> - <% else %> - <%= image_tag('../images/avatars/Project/course.jpg', :class => "avatar-4") %> - <% end %> -
      -
      -

      - <%= link_to( project.name, :controller => 'projects', :action => 'show', :id => project.id, :host => Setting.course_domain, :class => "d-g-blue d-p-project-name",:title => "#{project.name}", :target => "_blank" )%> - 学生人数:<%= link_to "#{studentCount(project)}", project_member_path(project, :role => 2) ,:course =>'1', :target => "_blank" %> -

      -

      - <%= content_tag "span", project.description.truncate(50, omission: '...'), :class => "d-p-project-intro" , :title => project.description %> -

      -
      +
        +

        用户动态

        + <%= link_to "更多>>", { :controller => 'users', :action => 'index'}, :target => "_blank" %> +
        + <% find_all_activities.each do |event| %> +
      • +
        + <%= image_tag url_to_avatar(event.event_author), :class => "avatar-3" %> +
        + +
        + <%= link_to event.event_author, (user_path(event.event_author) if event.event_author), :style => "color:green;", :target => "_blank" %><%= show_user_content event %> +

        <%= l(:field_updated_on) %><%= time_tag_welcome event.event_datetime %>前     <%= show_event_reply event %>

        +
      • - <% end %> + <% end %> +
    -
    - -
    +
    +
      +
      +

      贴吧动态

      + <%= link_to "更多>>", forums_path %> +
      +
      + <% find_new_forum_topics(8).each do |topic|%> +
    • +
      +       + <%= link_to topic.subject.truncate(30, omission: '...'), topic.event_url, :class => "gray" , :style => "font-size: 10pt !important;", :target => "_blank" %> + +
      + <%= l(:field_updated_on) %><%=time_tag_welcome(topic_last_time topic)%>前 + + 由 <%= link_to topic.author ? topic.author : 'Anonymous', user_path(topic.author_id), :style => "font-size: 9pt !important; color: rgb(17, 102, 173);", :target => "_blank" %> 发表 + + 回复(<%= link_to (topic.parent ? topic.parent.replies_count : topic.replies_count), topic.event_url, :target => "_blank" %>) +
      +
    • + <% end %> +
      +
    +
    + + + -
    + diff --git a/lib/redmine.rb b/lib/redmine.rb index 1d1df605d..e5fb39446 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -265,9 +265,9 @@ end Redmine::MenuManager.map :account_menu do |menu| menu.push :login, {:controller => 'account', :action => 'login', :host => Setting.forge_domain}, :if => Proc.new { !User.current.logged? } - menu.push :register, {:controller => 'account', :action => 'register', :host => Setting.forge_domain}, :if => Proc.new { !User.current.logged? && Setting.self_registration? } + menu.push :register, {:controller => 'account', :action => 'register'}, :if => Proc.new { !User.current.logged? && Setting.self_registration? } # menu.push :my_account, { :controller => 'my', :action => 'account' }, :if => Proc.new { User.current.logged? } - menu.push :logout, {:controller => 'account', :action => 'logout', :host => Setting.forge_domain}, :html => {:method => 'post'}, :if => Proc.new { User.current.logged? } + menu.push :logout, {:controller => 'account', :action => 'logout'}, :html => {:method => 'post'}, :if => Proc.new { User.current.logged? } end ########fq Redmine::MenuManager.map :bid_menu do |menu| From 9c54c9c1b67d6a54a4484637fd98cc8de4dfc0b0 Mon Sep 17 00:00:00 2001 From: yanxd Date: Fri, 21 Mar 2014 16:46:30 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=92=8C=E8=AF=BE=E7=A8=8B=E6=8E=92=E5=BA=8F=E9=83=A8=E5=88=86?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=88=86=E9=A1=B5=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 112 ++++++++++++------------- app/views/projects/course.html.erb | 2 +- app/views/projects/index.html.erb | 2 +- 3 files changed, 57 insertions(+), 59 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 0c98b804e..9492bfbad 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -49,7 +49,7 @@ class ProjectsController < ApplicationController # before_filter :authorize, :except => [:new_join, :new_homework, :homework, :statistics, :search, :watcherlist, :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy, :member, :focus, :file, # :statistics, :feedback, :course, :enterprise_course, :course_enterprise, :project_respond, :share, # :show_projects_score, :issue_score_index, :news_score_index, :file_score_index, :code_submit_score_index, :projects_topic_score_index] - before_filter :authorize, :only => [:sort_project_demo, :show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen] + before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen] before_filter :authorize_global, :only => [:new, :create] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar] #by young @@ -127,32 +127,39 @@ class ProjectsController < ApplicationController def index #Modified by nie @project_type = params[:project_type] - @limit = 10 - @project_count = Project.visible.where("project_type = ?", 0).count - @project_pages = Paginator.new @project_count, @limit, params['page'] - if params[:project_sort_type].present? - case params[:project_sort_type] - when '0' - @projects = @projects = Project.visible.where("project_type = ?", 0).order("created_on desc").offset(@project_pages.offset).limit(@limit).all - @s_type = 0 - when '1' - @projects = sort_project_demo project_type = 0, order_by="grade desc", @project_pages.offset, @limit - @s_type = 1 - when '2' - @projects = sort_project_demo project_type = 0, order_by="watchers_count desc", @project_pages.offset, @limit - @s_type = 2 - end + per_page_option = 10 + + @projects_all = Project.active.visible. + joins("LEFT JOIN #{ProjectStatus.table_name} ON #{Project.table_name}.id = #{ProjectStatus.table_name}.project_id"). + where("#{Project.table_name}.project_type = ? ", Project::ProjectType_project) + + @project_count = @projects_all.count + @project_pages = Paginator.new @project_count, per_page_option, params['page'] + + + case params[:project_sort_type] + when '0' + @projects = @projects_all.order("created_on desc") + @s_type = 0 + when '1' + @projects = @projects_all.order("grade desc") + @s_type = 1 + when '2' + @projects = @projects_all.order("watchers_count desc") + @s_type = 2 else - @projects = sort_project_demo project_type = 0, order_by="grade desc", @project_pages.offset, @limit - @s_type = 1 + @projects = @projects = @projects_all.order("grade desc") + @s_type = 1 end + @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) + respond_to do |format| format.html { render :layout => 'base' - scope = Project - unless params[:closed] - scope = scope.active - end + # scope = Project + # unless params[:closed] + # scope = scope.active + # end } format.api { # @offset, @limit = api_offset_and_limit @@ -168,34 +175,34 @@ class ProjectsController < ApplicationController def course @project_type = params[:project_type] - @limit = 10; - @project_count = Project.visible.where("project_type = 1").count - @project_pages = Paginator.new @project_count, @limit, params['page'] - if params[:project_sort_type].present? - case params[:project_sort_type] - when '0' - @projects = Project.visible.where("project_type = ?", 1).order("created_on desc").offset(@project_pages.offset).limit(@limit).all - @s_type = 0 - when '1' - @projects = sort_project_demo 1, "course_ac_para desc", @project_pages.offset, @limit - @s_type = 1 - when '2' - @projects = sort_project_demo 1, "watchers_count desc", @project_pages.offset, @limit - @s_type = 2 - end + per_page_option = 10 + + @projects_all = Project.active.visible. + joins("LEFT JOIN #{ProjectStatus.table_name} ON #{Project.table_name}.id = #{ProjectStatus.table_name}.project_id"). + where("#{Project.table_name}.project_type = ? ", Project::ProjectType_course) + + @project_count = @projects_all.count + @project_pages = Paginator.new @project_count, per_page_option, params['page'] + + case params[:project_sort_type] + when '0' + @projects = @projects_all.order("created_on desc") + @s_type = 0 + when '1' + @projects = @projects_all.order("course_ac_para desc") + @s_type = 1 + when '2' + @projects = @projects_all.order("watchers_count desc") + @s_type = 2 else - # @projects = sort_project_demo 1, "course_ac_para desc", @project_pages.offset, @limit - @s_type = 0 - @projects = Project.visible.where("project_type = ?", 1).order("created_on desc").offset(@project_pages.offset).limit(@limit).all - # @s_type = 0 + @s_type = 0 + @projects = @projects_all.order("created_on desc") end + @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) + respond_to do |format| format.html { render :layout => 'base' - scope = Project - unless params[:closed] - scope = scope.active - end } format.api { # @offset, @limit = api_offset_and_limit @@ -208,17 +215,8 @@ class ProjectsController < ApplicationController } end end - - def sort_project_demo project_type, order_by, offset, limit - #Project.visible.joins(:project_status).where("#{Project.table_name}.project_type = ?", project_type).order(order_by).offset(offset).limit(limit).all - Project.visible.find_by_sql(" - SELECT * - FROM projects AS p RIGHT OUTER JOIN ( - SELECT project_id,grade FROM project_statuses - WHERE project_type = #{project_type} ORDER BY #{order_by} LIMIT #{limit} OFFSET #{offset}) AS t ON p.id = t.project_id ") - end - - def search + + def search #modified by nie @projects = Project.visible @projects = @projects.visible.where('project_type = ?', params[:project_type]).like(params[:name]) if params[:name].present? @@ -461,7 +459,7 @@ class ProjectsController < ApplicationController 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_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 diff --git a/app/views/projects/course.html.erb b/app/views/projects/course.html.erb index 13672a6f1..d7a84f534 100644 --- a/app/views/projects/course.html.erb +++ b/app/views/projects/course.html.erb @@ -38,7 +38,7 @@ diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index db37af91b..a08deee71 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -34,7 +34,7 @@ From f786d0131287e6282d634098eef321b12308ee04 Mon Sep 17 00:00:00 2001 From: yanxd Date: Fri, 21 Mar 2014 16:49:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8A=A0=E4=B8=AAtable=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/projects/index.html.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index a08deee71..fd81c636e 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -25,6 +25,7 @@ <%= link_to request.host()+"/projects", :controller => 'projects', :action => 'index', :project_type => 0 %> <%=link_to l(:field_homepage), home_path %> > <%=link_to l(:label_project_deposit), :controller => 'projects', :action => 'index', :project_type => 0 %> + <% end %>
    <%= sort_project(@s_type, @project_type) %>