diff --git a/app/assets/javascripts/subfield_subdomain_dirs.js.coffee b/app/assets/javascripts/subfield_subdomain_dirs.js.coffee new file mode 100644 index 000000000..761567942 --- /dev/null +++ b/app/assets/javascripts/subfield_subdomain_dirs.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/subfield_subdomain_dirs.css.scss b/app/assets/stylesheets/subfield_subdomain_dirs.css.scss new file mode 100644 index 000000000..6843d92f8 --- /dev/null +++ b/app/assets/stylesheets/subfield_subdomain_dirs.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the subfield_subdomain_dirs 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/at_controller.rb b/app/controllers/at_controller.rb index 9e7309646..25e731754 100644 --- a/app/controllers/at_controller.rb +++ b/app/controllers/at_controller.rb @@ -53,6 +53,7 @@ class AtController < ApplicationController end def find_project(id) + return [] if id<0 at_persons = Project.find(id).users at_persons.delete_if { |u| u.id == User.current.id } end diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb index 85423f2fd..c4932b1b2 100644 --- a/app/controllers/files_controller.rb +++ b/app/controllers/files_controller.rb @@ -172,6 +172,7 @@ class FilesController < ApplicationController # #render 'stores' # redirect_to search_course_files_url end + @page = params[:page] || 1 end def find_course_attache keywords,course,sort = "" @@ -380,6 +381,7 @@ class FilesController < ApplicationController @organization = Organization.find(@containers.first.organization_id) show_attachments @containers @tag_list = attachment_tag_list @all_attachments + @page = params[:page] || 1 render :layout => 'base_org' # @subfield = params[:org_subfield_id] end diff --git a/app/controllers/org_document_comments_controller.rb b/app/controllers/org_document_comments_controller.rb index 7685b77a8..f250b46de 100644 --- a/app/controllers/org_document_comments_controller.rb +++ b/app/controllers/org_document_comments_controller.rb @@ -20,7 +20,12 @@ class OrgDocumentCommentsController < ApplicationController flash.keep[:notice] = l(:notice_successful_create) EditorOfDocument.create(:editor_id => User.current.id, :org_document_comment_id => @org_document_comment.id, :created_at => @org_document_comment.updated_at) if params[:field_id] - redirect_to organization_path(@organization, :org_subfield_id => params[:field_id]) + @org_subfield = OrgSubfield.find(params[:field_id]) + if @org_subfield.subfield_subdomain_dir.nil? + redirect_to organization_path(@organization, :org_subfield_id => params[:field_id]) + else + redirect_to show_org_subfield_organization_path(:id => @organization.id, :sub_dir_name => @org_subfield.subfield_subdomain_dir.name) + end else redirect_to organization_org_document_comments_path(@organization) end diff --git a/app/controllers/org_subfields_controller.rb b/app/controllers/org_subfields_controller.rb index 66a236b5b..5850629f0 100644 --- a/app/controllers/org_subfields_controller.rb +++ b/app/controllers/org_subfields_controller.rb @@ -1,22 +1,90 @@ class OrgSubfieldsController < ApplicationController + helper :attachments + layout 'base_org' def create - @subfield = OrgSubfield.create(:name => params[:name]) - @organization = Organization.find(params[:organization_id]) - @organization.org_subfields << @subfield - @subfield.update_attributes(:priority => @subfield.id, :field_type => params[:field_type]) + if OrgSubfield.where("organization_id=#{params[:organization_id]} and name=?",params[:name]).count == 0 + @res = true + @subfield = OrgSubfield.create(:name => params[:name]) + @organization = Organization.find(params[:organization_id]) + @organization.org_subfields << @subfield + if !params[:sub_dir].blank? + sql = "select subfield_subdomain_dirs.* from subfield_subdomain_dirs, org_subfields where subfield_subdomain_dirs.org_subfield_id = org_subfields.id "+ + "and org_subfields.organization_id=#{@organization.id} and subfield_subdomain_dirs.name='#{params[:sub_dir]}'" + if SubfieldSubdomainDir.find_by_sql(sql).count == 0 + SubfieldSubdomainDir.create(:org_subfield_id => @subfield.id, :name => params[:sub_dir]) + end + end + @subfield.update_attributes(:priority => @subfield.id, :field_type => params[:field_type]) + else + @res = false + end end def show - @org_subfield = OrgSubfield.find(params[:id]) - @organization = @org_subfield.organization.id - @messages = [] - @messages << @org_subfield.org_document_comments - @messages << @org_subfield.messages - @messages.sort{|a, b| b.updated_at <=> a.updated_at} - respond_to do |format| - format.html{render :layout => 'base_org'} + @flag = params[:flag] || false + sort = "" + @sort = "" + @order = "" + @is_remote = false + @organization = Organization.find(params[:id]) + @org_subfield = OrgSubfield.find_by_sql("select distinct org_subfields.* from org_subfields,"+ + "subfield_subdomain_dirs where org_subfields.id = subfield_subdomain_dirs.org_subfield_id and "+ + " org_subfields.organization_id=#{@organization.id} and subfield_subdomain_dirs.name='#{params[:sub_dir_name]}'").first + if @org_subfield.field_type == 'Post' + @org_subfield_ids = @org_subfield.org_document_comments.map(&:id) << 0 + @org_activities = OrgActivity.where("(org_act_type='OrgDocumentComment'and org_act_id in (#{@org_subfield_ids.join(",")})) || (container_type='OrgSubfield' and container_id=#{@org_subfield.id})").order('updated_at desc').page(params[:page] || 1).per(10) + #redirect_to organization_path(@organization, :org_subfield_id => @org_subfield.id) + else + if params[:sort] + params[:sort].split(",").each do |sort_type| + order_by = sort_type.split(":") + case order_by[0] + when "filename" + attribute = "filename" + when "size" + attribute = "filesize" + when "attach_type" + attribute = "attachtype" + when "content_type" + attribute = "created_on" + when "field_file_dense" + attribute = "is_public" + when "downloads" + attribute = "downloads" + when "created_on" + attribute = "created_on" + when "quotes" + attribute = "quotes" + else + attribute = "created_on" + end + @sort = order_by[0] + @order = order_by[1] + if order_by.count == 1 && attribute + sort += "#{Attachment.table_name}.#{attribute} asc " + if sort_type != params[:sort].split(",").last + sort += "," + end + elsif order_by.count == 2 && order_by[1] + sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} " + if sort_type != params[:sort].split(",").last + sort += "," + end + end + end + else + sort = "#{Attachment.table_name}.created_on desc" + end + @container_type = 2 + @containers = [ OrgSubfield.includes(:attachments).reorder(sort).find(@org_subfield.id)] + @organization = Organization.find(@containers.first.organization_id) + show_attachments @containers + @tag_list = attachment_tag_list @all_attachments end + @page = params[:page] || 1 + #render :layout => 'base_org' end + def destroy @subfield = OrgSubfield.find(params[:id]) @organization = Organization.find(@subfield.organization_id) @@ -29,4 +97,43 @@ class OrgSubfieldsController < ApplicationController @subfield.update_attributes(:name => params[:name]) end + def update_sub_dir + @org_subfield = OrgSubfield.find(params[:id]) + sql = "select subfield_subdomain_dirs.* from subfield_subdomain_dirs, org_subfields where subfield_subdomain_dirs.org_subfield_id = org_subfields.id "+ + "and org_subfields.organization_id=#{@org_subfield.organization.id} and subfield_subdomain_dirs.name='#{params[:sub_dir_name]}'" + if SubfieldSubdomainDir.find_by_sql(sql).count == 0 + if @org_subfield.subfield_subdomain_dir + @sub_dir = @org_subfield.subfield_subdomain_dir + @sub_dir.update_attribute(:name, params[:sub_dir_name]) + else + @sub_dir = SubfieldSubdomainDir.create(:org_subfield_id => @org_subfield.id, :name => params[:sub_dir_name]) + end + @exist = false + else + @exist = true + end + end + + def show_attachments obj + @attachments = [] + obj.each do |container| + @attachments += container.attachments + end + @all_attachments = User.current.admin? ? @attachments : visable_attachemnts(@attachments) + @limit = 10 + @feedback_count = @all_attachments.count + @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] + @offset ||= @feedback_pages.offset + #@curse_attachments_all = @all_attachments[@offset, @limit] + @obj_attachments = paginateHelper @all_attachments,10 + end + + #获取指定资源列表的TAG的集合以及每个TAG的数量,降序排序 + def attachment_tag_list attachments + tag_list = Hash.new + attachments.each do |attachment| + attachment.tag_list.map{|tag| tag_list.has_key?(tag) ? tag_list[tag] = tag_list[tag] + 1 : tag_list[tag] = 1} + end + tag_list.sort {|a,b| b[1]<=>a[1]} + end end diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index 9f80503d8..25ee3dc48 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -114,7 +114,7 @@ class OrganizationsController < ApplicationController @organization = Organization.find(params[:id]) @organization.name = params[:organization][:name] @organization.description = params[:organization][:description] - @organization.domain = params[:organization][:domain] + # @organization.domain = params[:organization][:domain] @organization.is_public = params[:organization][:is_public] == 'on' ? 1 : 0 #@organization.name = params[:organization][:name] @organization.save diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index a93585827..f2de6085f 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -519,6 +519,14 @@ class ProjectsController < ApplicationController def edit end + def set_public_or_private + @project = Project.find(params[:id]) + if @project.is_public? + @project.update_attribute(:is_public, 0) + else + @project.update_attribute(:is_public, 1) + end + end # by young # include CoursesHelper def member diff --git a/app/controllers/subfield_subdomain_dirs_controller.rb b/app/controllers/subfield_subdomain_dirs_controller.rb new file mode 100644 index 000000000..90c6a7a92 --- /dev/null +++ b/app/controllers/subfield_subdomain_dirs_controller.rb @@ -0,0 +1,10 @@ +class SubfieldSubdomainDirsController < ApplicationController + def update + @org_subfield = OrgSubfield.find(params[:org_subfield_id]) + if @org_subfield.subfield_subdomain_dir + @org_subfield.subfield_subdomain_dir.update_attribute(:name, :params[:sub_dir_name]) + else + SubfieldSubdomainDir.create(:org_subfield_id => @org_subfield.id, :name => params[:sub_dir_name]) + end + end +end diff --git a/app/helpers/subfield_subdomain_dirs_helper.rb b/app/helpers/subfield_subdomain_dirs_helper.rb new file mode 100644 index 000000000..584de578c --- /dev/null +++ b/app/helpers/subfield_subdomain_dirs_helper.rb @@ -0,0 +1,2 @@ +module SubfieldSubdomainDirsHelper +end diff --git a/app/models/org_subfield.rb b/app/models/org_subfield.rb index 0747114ca..b109ba042 100644 --- a/app/models/org_subfield.rb +++ b/app/models/org_subfield.rb @@ -1,5 +1,6 @@ class OrgSubfield < ActiveRecord::Base belongs_to :organization, :foreign_key => :organization_id + has_one :subfield_subdomain_dir,:dependent => :destroy has_many :org_document_comments, :dependent => :destroy has_many :files has_many :org_subfield_messages, :dependent => :destroy diff --git a/app/models/subfield_subdomain_dir.rb b/app/models/subfield_subdomain_dir.rb new file mode 100644 index 000000000..9897e19ac --- /dev/null +++ b/app/models/subfield_subdomain_dir.rb @@ -0,0 +1,4 @@ +class SubfieldSubdomainDir < ActiveRecord::Base + # attr_accessible :title, :body + belongs_to :org_subfield +end diff --git a/app/views/account/login.html.erb b/app/views/account/login.html.erb index b316aa406..3d07f69b2 100644 --- a/app/views/account/login.html.erb +++ b/app/views/account/login.html.erb @@ -205,7 +205,7 @@
-
  欢迎加入Trustie高校创新实践社区!老师、学生和科研人员可以在此开展各种在线协同学习、协同作业、协同开发等活动。

  Trustie是在中国推行大规模开放在线研究模式(MOORE)的支撑平台。
+
  欢迎加入Trustie创新实践社区!在这里,您的创新意识和创新潜力将得到充分发挥!目前已有超过200所高校和科研机构在平台中开展在线协同开发、协同学习和协同研究。

  Trustie社区的理想是:让创新过程变的更美好!
diff --git a/app/views/blogs/_article.html.erb b/app/views/blogs/_article.html.erb index 0c43d0542..22df4499a 100644 --- a/app/views/blogs/_article.html.erb +++ b/app/views/blogs/_article.html.erb @@ -26,12 +26,21 @@ ) if User.current && User.current.id == activity.author.id %>
  • - <%= link_to( - l(:button_set_homepage), - {:controller => 'blogs',:action => 'set_homepage',:user_id=>activity.author_id,:id=>activity.blog_id, :article_id => activity.id}, - :method => :post, - :class => 'postOptionLink' - ) if User.current && User.current.id == activity.blog.author_id %> + <% if activity.id == activity.blog.homepage_id %> + <%= link_to( + l(:button_cancel_homepage), + {:controller => 'blogs',:action => 'cancel_homepage',:user_id=>activity.author_id,:id=>activity.blog_id, :article_id => activity.id}, + :method => :post, + :class => 'postOptionLink' + ) if User.current && User.current.id == activity.blog.author_id %> + <% else %> + <%= link_to( + l(:button_set_homepage), + {:controller => 'blogs',:action => 'set_homepage',:user_id=>activity.author_id,:id=>activity.blog_id, :article_id => activity.id}, + :method => :post, + :class => 'postOptionLink' + ) if User.current && User.current.id == activity.blog.author_id %> + <% end %>
  • diff --git a/app/views/blogs/_article_list.html.erb b/app/views/blogs/_article_list.html.erb index 182db9dd0..ca85c0ba2 100644 --- a/app/views/blogs/_article_list.html.erb +++ b/app/views/blogs/_article_list.html.erb @@ -43,11 +43,6 @@
    - <% if blog.homepage_id and BlogComment.where("id=?", blog.homepage_id).count > 0 %> - <% homepage = BlogComment.find(blog.homepage_id) %> - <%= render :partial => 'blogs/homepage', :locals => {:activity => homepage, :user_activity_id => homepage.id} %> - <% end %> - <% if User.current.logged? && User.current.id == @user.id %> <%= labelled_form_for @article, :url =>{:controller=>'blog_comments',:action => 'create',:user_id=>user.id , :blog_id => blog.id}, :html => {:nhname=>'form',:multipart => true, :id => 'message-form'} do |f| %> diff --git a/app/views/blogs/_homepage.html.erb b/app/views/blogs/_homepage.html.erb index 30e1b69a5..99835c87d 100644 --- a/app/views/blogs/_homepage.html.erb +++ b/app/views/blogs/_homepage.html.erb @@ -36,7 +36,7 @@
    <%end%>
    -