diff --git a/app/controllers/org_courses_controller.rb b/app/controllers/org_courses_controller.rb index 3d1d313c5..d054e41de 100644 --- a/app/controllers/org_courses_controller.rb +++ b/app/controllers/org_courses_controller.rb @@ -3,7 +3,9 @@ class OrgCoursesController < ApplicationController org_ids = params[:orgNames] @course = Course.find(params[:course_id]) org_ids.each do |org_id| - OrgCourse.create(:organization_id => org_id.to_i, :course_id => params[:course_id].to_i, :created_at => Time.now) + if OrgCourse.where("organization_id =? and course_id =?", org_id.to_i, params[:course_id].to_i).count == 0 + OrgCourse.create(:organization_id => org_id.to_i, :course_id => params[:course_id].to_i, :created_at => Time.now) + end end respond_to do |format| format.js diff --git a/app/controllers/org_document_comments_controller.rb b/app/controllers/org_document_comments_controller.rb index 61a27c433..776bd132d 100644 --- a/app/controllers/org_document_comments_controller.rb +++ b/app/controllers/org_document_comments_controller.rb @@ -38,12 +38,19 @@ class OrgDocumentCommentsController < ApplicationController act.update_attributes(:updated_at => @org_document.updated_at) end respond_to do |format| - format.html {redirect_to organization_org_document_comments_path(:organization_id => @org_document.organization.id)} + format.html { + if params[:flag] == 0 + redirect_to organization_org_document_comments_path(:organization_id => @org_document.organization.id) + else + redirect_to org_document_comment_path(@org_document.root.id, :organization_id => @org_document.organization.id) + end + } end end def edit @org_document = OrgDocumentComment.find(params[:id]) + @flag = params[:flag] @organization = Organization.find(params[:organization_id]) end diff --git a/app/controllers/org_projects_controller.rb b/app/controllers/org_projects_controller.rb index 29e60a62a..a455ce408 100644 --- a/app/controllers/org_projects_controller.rb +++ b/app/controllers/org_projects_controller.rb @@ -3,7 +3,9 @@ class OrgProjectsController < ApplicationController org_ids = params[:orgNames] @project = Project.find(params[:project_id]) org_ids.each do |org_id| - OrgProject.create(:organization_id => org_id.to_i, :project_id => params[:project_id].to_i, :created_at => Time.now) + if OrgProject.where("organization_id =? and project_id =?", org_id.to_i, @project.id).count == 0 + OrgProject.create(:organization_id => org_id.to_i, :project_id => params[:project_id].to_i, :created_at => Time.now) + end end respond_to do |format| format.js diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index 0d22ab461..ba4dda939 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -175,4 +175,75 @@ class OrganizationsController < ApplicationController format.js end end + + def join_course_menu + @organization = Organization.find(params[:id]) + respond_to do |format| + format.js + end + end + + def search_courses + @organization = Organization.find(params[:id]) + condition = '%%' + if !params[:name].nil? + condition = "%#{params[:name].strip}%".gsub(" ","") + end + #sql = "select courses.* from courses inner join members on courses.id = members.course_id inner join org_courses on courses.id = org_courses.course_id where org_courses.organization_id != #{@organization.id} and members.user_id = #{User.current.id} and courses.name like '#{condition}'" + sql = "select courses.* from courses inner join members on courses.id = members.course_id where members.user_id = #{User.current.id} and courses.name like '#{condition}'" + user_courses = Course.find_by_sql(sql) + @added_course_ids = @organization.courses.map(&:id) + @courses = [] + user_courses.each do |course| + if !@added_course_ids.include?(course.id) + @courses << course + end + end + end + + def join_courses + @organization = Organization.find(params[:id]) + course_ids = params[:courseNames] + course_ids.each do |id| + OrgCourse.create(:organization_id => @organization.id, :course_id => id.to_i, :created_at => Time.now) + end + respond_to do |format| + format.js + end + end + + def join_project_menu + @organization = Organization.find(params[:id]) + respond_to do |format| + format.js + end + end + + def search_projects + @organization = Organization.find(params[:id]) + condition = '%%' + if !params[:name].nil? + condition = "%#{params[:name].strip}%".gsub(" ","") + end + sql = "select projects.* from projects inner join members on projects.id = members.project_id where members.user_id = #{User.current.id} and projects.status != 9 and projects.name like '#{condition}'" + user_projects = Course.find_by_sql(sql) + @added_course_ids = @organization.projects.map(&:id) + @projects = [] + user_projects.each do |project| + if !@added_course_ids.include?(project.id) + @projects << project + end + end + end + + def join_projects + @organization = Organization.find(params[:id]) + project_ids = params[:projectNames] + project_ids.each do |id| + OrgProject.create(:organization_id => @organization.id, :project_id => id.to_i, :created_at => Time.now) + end + respond_to do |format| + format.js + end + end end diff --git a/app/views/courses/settings/_join_org.html.erb b/app/views/courses/settings/_join_org.html.erb index cd2d515cc..fff0f807c 100644 --- a/app/views/courses/settings/_join_org.html.erb +++ b/app/views/courses/settings/_join_org.html.erb @@ -68,8 +68,7 @@ }); }); function cancel_join_orgs() { - $("#search_orgs_result_list").html(""); - $("#paginator").css("display", "none") + $("#join_orgs_for_course input:checked").attr("checked", false); } function course_join_org(courseId) { $.ajax({ diff --git a/app/views/layouts/base_org.html.erb b/app/views/layouts/base_org.html.erb index 84edf02e1..b89977b09 100644 --- a/app/views/layouts/base_org.html.erb +++ b/app/views/layouts/base_org.html.erb @@ -85,10 +85,24 @@
<%= link_to "动态",organization_path(@organization), :class => "homepageMenuText" %>
-
项目 +
+ 项目 + <%=link_to "", join_project_menu_organization_path(@organization),:remote => true, :method => "post", :class => "homepageMenuSetting fr", :title => "关联项目"%> + + + + + + + + + + + +
-
+
    <%= render :partial => 'layouts/org_projects',:locals=>{:projects=>@organization.projects.reorder('created_at').limit(5),:org_id=>@organization.id,:page=>1}%> @@ -97,10 +111,25 @@
-
课程 +
+ 课程 + <%=link_to "", join_course_menu_organization_path(@organization),:remote => true, :method => "post", :class => "homepageMenuSetting fr", :title => "关联课程"%> + <%#= link_to "关联课程",join_course_menu_organization_path(@organization),:remote => true,:class => "menuGrey",:method => "post"%> + + + + + + + + + + + +
-
+
    <%= render :partial => 'layouts/org_courses',:locals=>{:courses=>@organization.courses.reorder('created_at').limit(5),:org_id=>@organization.id,:page=>1}%>
@@ -125,6 +154,21 @@ + + diff --git a/app/views/org_document_comments/_new.html.erb b/app/views/org_document_comments/_new.html.erb index 3a3356c66..a7ce22548 100644 --- a/app/views/org_document_comments/_new.html.erb +++ b/app/views/org_document_comments/_new.html.erb @@ -25,13 +25,14 @@ $("#document_title").val(""); org_document_description_editor.html(""); org_document_description_editor.sync(); - $('#org_document_editor').hide(); $('#doc_title_hint').hide(); + $('#org_document_editor').hide(); + $('#doc_title_hint').hide(); } <%= form_tag organization_org_document_comments_path(:organization_id => @organization.id), :id => 'new_org_document_form' do |f| %>
- +
diff --git a/app/views/org_document_comments/edit.html.erb b/app/views/org_document_comments/edit.html.erb index 4b50c1064..c4a74c791 100644 --- a/app/views/org_document_comments/edit.html.erb +++ b/app/views/org_document_comments/edit.html.erb @@ -17,7 +17,7 @@
-<%= form_tag url_for(:controller => 'org_document_comments',:action => 'update', :id => @org_document.id),:method => 'put', :id => 'new_org_document_form' do |f| %> +<%= form_tag url_for(:controller => 'org_document_comments',:action => 'update', :id => @org_document.id, :flag => @flag),:method => 'put', :id => 'new_org_document_form' do |f| %>
diff --git a/app/views/org_document_comments/show.html.erb b/app/views/org_document_comments/show.html.erb index 9df568e02..31e4f7e05 100644 --- a/app/views/org_document_comments/show.html.erb +++ b/app/views/org_document_comments/show.html.erb @@ -43,7 +43,7 @@ <% end %>
  • - <%= link_to "编辑文章", edit_org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id), :class => "postOptionLink" %> + <%= link_to "编辑文章", edit_org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id, :flag => 1), :class => "postOptionLink" %>
  • <%= link_to "删除文章", org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id), :method => 'delete', diff --git a/app/views/org_document_comments/update.js.erb b/app/views/org_document_comments/update.js.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/org_member/create.js.erb b/app/views/org_member/create.js.erb index f1e48281f..25bbded34 100644 --- a/app/views/org_member/create.js.erb +++ b/app/views/org_member/create.js.erb @@ -4,4 +4,5 @@ $("#org_member_list").html('<%= escape_javascript( render :partial=>"organizations/org_member_list",:locals=> {:members=>@org.org_members}) %>'); $("#principals_for_new_member").html(''); $("#org_members_count_id").html("<%= @org.org_members.count %>"); + $("#not_org_member_search").val(""); <% end %> \ No newline at end of file diff --git a/app/views/organizations/_join_course_menu.html.erb b/app/views/organizations/_join_course_menu.html.erb new file mode 100644 index 000000000..e66d0bcce --- /dev/null +++ b/app/views/organizations/_join_course_menu.html.erb @@ -0,0 +1,99 @@ + + + + + + + + + + + + + +
    +
    +
    请选择关联到组织的课程
    +
    +
    +
    + <%=form_tag url_for(:controller => 'organizations', :action => 'join_courses', :organization_id => organization_id),:method => 'post', :id => 'join_courses_form', :remote => true,:class=>"resourcesSearchBox" do %> + +
    +
    + 关联 +
    + + <% end %> +
    + +
    +
    +
    +
    +
    + + + + diff --git a/app/views/organizations/_join_project_menu.html.erb b/app/views/organizations/_join_project_menu.html.erb new file mode 100644 index 000000000..765b4b23a --- /dev/null +++ b/app/views/organizations/_join_project_menu.html.erb @@ -0,0 +1,95 @@ + + + + + + + + + + + + + +
    +
    +
    请选择关联到组织的项目
    +
    +
    +
    + <%=form_tag url_for(:controller => 'organizations', :action => 'join_projects', :organization_id => organization_id),:method => 'post', :id => 'join_projects_form', :remote => true,:class=>"resourcesSearchBox" do %> + +
    +
    + 关联 +
    + + <% end %> +
    +
    +
    + + + + diff --git a/app/views/organizations/_org_activities.html.erb b/app/views/organizations/_org_activities.html.erb index aa48fedf1..33ac13e76 100644 --- a/app/views/organizations/_org_activities.html.erb +++ b/app/views/organizations/_org_activities.html.erb @@ -56,7 +56,7 @@ <% end %> <% if org_act_count == 10 %> -
    展开更多<%=link_to "", organization_path(org,:page => page.to_i + 1),:id => "more_org_activities_link",:remote => "true",:class => "none" %>
    +
    展开更多<%=link_to "", organization_path(org,:page => page.to_i + 1, :type => params[:type]),:id => "more_org_activities_link",:remote => "true",:class => "none" %>
    <%#= link_to "点击展开更多",user_activities_path(@user.id,:type => type,:page => page),:id => "show_more_activities",:remote => "true",:class => "loadMore mt10 f_grey"%> <% end%> diff --git a/app/views/organizations/_show_org_document.html.erb b/app/views/organizations/_show_org_document.html.erb index e74da846e..888cbbf68 100644 --- a/app/views/organizations/_show_org_document.html.erb +++ b/app/views/organizations/_show_org_document.html.erb @@ -36,7 +36,7 @@ <% end %>
  • - <%= link_to "编辑文章", edit_org_document_comment_path(:id => document.id, :organization_id => document.organization_id), :class => "postOptionLink" %> + <%= link_to "编辑文章", edit_org_document_comment_path(:id => document.id, :organization_id => document.organization_id, :flag => 0), :class => "postOptionLink" %>
  • <%= link_to "删除文章", org_document_comment_path(:id => document.id, :organization_id => document.organization_id), :method => 'delete', @@ -87,7 +87,7 @@
  • -
    +
    <%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33", :alt => "用户头像"), user_path(User.current) %>
    diff --git a/app/views/organizations/join_course_menu.js.erb b/app/views/organizations/join_course_menu.js.erb new file mode 100644 index 000000000..27c96c8c7 --- /dev/null +++ b/app/views/organizations/join_course_menu.js.erb @@ -0,0 +1,3 @@ +$('#topnav_course_menu').hide(); +$('#ajax-modal').html('<%= escape_javascript(render :partial => 'join_course_menu', :locals => {:organization_id => @organization.id}) %>'); +$('#ajax-modal').show(); diff --git a/app/views/organizations/join_courses.js.erb b/app/views/organizations/join_courses.js.erb new file mode 100644 index 000000000..1c234704e --- /dev/null +++ b/app/views/organizations/join_courses.js.erb @@ -0,0 +1,5 @@ +$("#homepageLeftMenuCourses").html(""); +$("#homepageLeftMenuCourses").append("
      "); +$("#homepageLeftMenuCourses").append("<%= escape_javascript(render :partial => 'layouts/org_courses', + :locals=>{:courses=>@organization.courses.reorder('created_at').limit(5),:org_id=>@organization.id,:page=> 1}) %>"); +$("#homepageLeftMenuCourses").append("
    "); \ No newline at end of file diff --git a/app/views/organizations/join_project_menu.js.erb b/app/views/organizations/join_project_menu.js.erb new file mode 100644 index 000000000..413aa7081 --- /dev/null +++ b/app/views/organizations/join_project_menu.js.erb @@ -0,0 +1,3 @@ +$('#topnav_project_menu').hide(); +$('#ajax-modal').html('<%= escape_javascript(render :partial => 'join_project_menu', :locals => {:organization_id => @organization.id}) %>'); +$('#ajax-modal').show(); \ No newline at end of file diff --git a/app/views/organizations/join_projects.js.erb b/app/views/organizations/join_projects.js.erb new file mode 100644 index 000000000..1db8021bf --- /dev/null +++ b/app/views/organizations/join_projects.js.erb @@ -0,0 +1,5 @@ +$("#homepageLeftMenuProjects").html(""); +$("#homepageLeftMenuProjects").append("
      "); +$("#homepageLeftMenuProjects").append("<%= escape_javascript(render :partial => 'layouts/org_projects', + :locals=>{:projects=>@organization.projects.reorder('created_at').limit(5),:org_id=>@organization.id,:page=> 1}) %>"); +$("#homepageLeftMenuProjects").append("
    "); \ No newline at end of file diff --git a/app/views/organizations/search_courses.js.erb b/app/views/organizations/search_courses.js.erb new file mode 100644 index 000000000..9e92b4b07 --- /dev/null +++ b/app/views/organizations/search_courses.js.erb @@ -0,0 +1,9 @@ +$("#search_courses_result_list").html(""); +$("#search_courses_result_list").append('
      '); + +<% @courses.each do |course|%> +link = "
    • "; +$("#search_courses_result_list").append(link ); +<%end %> +$("#search_courses_result_list").append('
    ') + diff --git a/app/views/organizations/search_projects.js.erb b/app/views/organizations/search_projects.js.erb new file mode 100644 index 000000000..184683e9b --- /dev/null +++ b/app/views/organizations/search_projects.js.erb @@ -0,0 +1,9 @@ +$("#search_projects_result_list").html(""); +$("#search_projects_result_list").append('
      '); + +<% @projects.each do |project|%> + link = "
    • "; + $("#search_projects_result_list").append(link ); +<%end %> +$("#search_projects_result_list").append('
    ') + diff --git a/app/views/projects/settings/_join_org.html.erb b/app/views/projects/settings/_join_org.html.erb index 8b8425934..982e7b79e 100644 --- a/app/views/projects/settings/_join_org.html.erb +++ b/app/views/projects/settings/_join_org.html.erb @@ -67,9 +67,7 @@ }); }); function cancel_join_orgs() { - $("#search_orgs_result_list").html(""); - $("#paginator").html(""); - $("#paginator").css("display", "none"); + $("#join_orgs_for_project input:checked").attr("checked", false); } function join_org(projectId) { $.ajax({ diff --git a/app/views/student_work/edit.html.erb b/app/views/student_work/edit.html.erb index 517a238b0..d506b5542 100644 --- a/app/views/student_work/edit.html.erb +++ b/app/views/student_work/edit.html.erb @@ -62,10 +62,13 @@
    \ No newline at end of file diff --git a/app/views/student_work/new.html.erb b/app/views/student_work/new.html.erb index fdf1e31a3..4f9999277 100644 --- a/app/views/student_work/new.html.erb +++ b/app/views/student_work/new.html.erb @@ -121,10 +121,13 @@
    \ No newline at end of file diff --git a/app/views/users/user_organizations.html.erb b/app/views/users/user_organizations.html.erb index e9d78e695..ed8238169 100644 --- a/app/views/users/user_organizations.html.erb +++ b/app/views/users/user_organizations.html.erb @@ -6,8 +6,8 @@
    组织列表 - - + <%#= form_tag url_for(:controller => 'users', :action => 'search_user_orgs', :id => User.current.id), :method => 'get', :id => "search_org_form", :class=>"resourcesSearchloadBox", :style=>"float:right; margin-top:-5px;" do %> + diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 4563944c8..ea172b554 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2081,7 +2081,7 @@ zh: label_co_organizer_BHU: 北京航空航天大学 label_co_organizer_CAS: 中国科学院软件研究所 label_co_organizer_InforS: 中创软件 - label_rights_reserved: Copyright 2007~2015, All Rights Riserved + label_rights_reserved: Copyright 2007~2015, All Rights Reserved label_about_us: 关于我们 label_contact_us: 联系我们 label_recruitment_information: 招聘信息 diff --git a/config/routes.rb b/config/routes.rb index d137553ad..e84225464 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -39,6 +39,12 @@ RedmineApp::Application.routes.draw do get 'members' get 'more_org_projects' get 'more_org_courses' + get 'search_courses' + post 'join_course_menu' + post 'join_courses' + get 'search_projects' + post 'join_project_menu' + post 'join_projects' end collection do get 'check_uniq' diff --git a/db/migrate/20151124032319_delete_useless_org_activities.rb b/db/migrate/20151124032319_delete_useless_org_activities.rb new file mode 100644 index 000000000..57d858e7e --- /dev/null +++ b/db/migrate/20151124032319_delete_useless_org_activities.rb @@ -0,0 +1,18 @@ +class DeleteUselessOrgActivities < ActiveRecord::Migration + def up + OrgActivity.all.each do |act| + if act.container_type == 'Course' + if CourseActivity.where("course_act_type=? and course_act_id =? and course_id =?", act.org_act_type, act.org_act_id, act.container_id).count == 0 + act.destroy + end + else + if act.container_type == 'Project' and ForgeActivity.where("forge_act_type=? and forge_act_id =? and project_id =?", act.org_act_type, act.org_act_id, act.container_id).count == 0 + act.destroy + end + end + end + end + + def down + end +end diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index d18dd27d8..01e149bfb 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -384,6 +384,8 @@ a.resourcesGrey:hover {font-size:12px; color:#269ac9;} a.uploadText {color:#ffffff; font-size:14px;} .resourcesSearchloadBox {border:1px solid #e6e6e6; width:225px; float:left; background-color:#ffffff;} .searchResource {border:none; outline:none; background-color:#ffffff; width:184px; height:32px; padding-left:10px; display:block; float:left;} +.searchCourse {border:none; outline:none; background-color:#ffffff; width:184px; padding-left:10px; display:block; margin-bottom:15px;} +.searchResource:focus {border:none;} .searchIcon{width:31px; height:32px; background-color:#ffffff; background:url(images/resource_icon_list.png) -40px -15px no-repeat; display:block; float:left;} /*.resourcesSearchBanner {height:34px; margin-bottom:10px;}*/ .resourcesSearchBanner {width:710px; height:34px; margin-bottom:10px; margin-top:15px; margin-left:auto; margin-right:auto;} diff --git a/public/stylesheets/org.css b/public/stylesheets/org.css index 914df16b5..a0118b263 100644 --- a/public/stylesheets/org.css +++ b/public/stylesheets/org.css @@ -37,16 +37,21 @@ a.org_member_btn{ padding:1px 5px; background:#15bccf; color:#fff;} /*项目关联css*/ .relateOrg {width:335px;} .relatedList {width:335px;} -.searchOrg {height:24px; width:200px; color:#9b9b9b9; border:1px solid #15bccf;} +.searchOrg {height:24px; width:200px; color:#9b9b9b; border:1px solid #15bccf;} a.cancelBtn {padding:3px 5px; background-color:#D9D9D9; color:#656565;} a.cancelBtn:hover {background-color:#717171; color:#ffffff;} .relatedList ul li {border-bottom:1px solid #e4e4e4; width:320px; height:22px; vertical-align:middle; line-height:22px;} .relatedListName {width:240px; text-align:left; max-width:240px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;} .relatedListOption {width:80px; text-align:center;} .relateOrgName {width:240px; max-width:240px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;color:#656565;} +.search_org {width:150px; max-width:200px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;color:#656565;} /*组织列表*/ .mt28 {margin-top:28px;} .orgWrap {width:880px; float:left;} .orgTitle {width:880px; max-width:880px; margin-bottom:5px;word-break: break-all; word-wrap:break-word; } -.orgIntro {width:880px; max-width:880px; margin-bottom:6px; color:#484848;} \ No newline at end of file +.orgIntro {width:880px; max-width:880px; margin-bottom:6px; color:#484848;} + +/*关联项目弹窗*/ +.projectRelate {float:left; max-height:118px;margin-right:16px;margin-bottom:10px; overflow:auto; overflow-x:hidden; width:288px;} +.relateText {font-size:16px; color:#269ac9; line-height:16px; padding-top:20px; display:inline-block; font-weight: bold;} \ No newline at end of file