diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 191606afb..a1e547a84 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -708,7 +708,7 @@ class CoursesController < ApplicationController #"show_course_journals_for_messages" => true, "show_bids" => true, "show_homeworks" => true, - #"show_polls" => true + "show_polls" => true } @date_to ||= Date.today + 1 @date_from = (@date_to - @days) > @course.created_at.to_date ? (@date_to - @days) : @course.created_at.to_date diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb index 8b1c8ba32..69e7105aa 100644 --- a/app/controllers/files_controller.rb +++ b/app/controllers/files_controller.rb @@ -145,10 +145,14 @@ class FilesController < ApplicationController ids += version.id.to_s end end - resultSet = Attachment.where("((attachments.container_type = 'Project' And attachments.container_id = '#{project.id}') OR (container_type = 'Version' AND container_id IN (#{ids}))) AND filename LIKE :like ", like: "%#{keywords}%"). - reorder(sort) - #resultSet = Attachment.find_by_sql("SELECT `attachments`.* FROM `attachments` LEFT OUTER JOIN `homework_attaches` ON `attachments`.container_type = 'HomeworkAttach' AND `attachments`.container_id = `homework_attaches`.id LEFT OUTER JOIN `homework_for_courses` ON `homework_attaches`.bid_id = `homework_for_courses`.bid_id LEFT OUTER JOIN `homework_for_courses` AS H_C ON `attachments`.container_type = 'Bid' AND `attachments`.container_id = H_C.bid_id WHERE (`homework_for_courses`.course_id = 117 OR H_C.course_id = 117 OR (`attachments`.container_type = 'Course' AND `attachments`.container_id = 117)) AND `attachments`.filename LIKE '%#{keywords}%'").reorder("created_on DESC") - end + if ids.blank? + resultSet = Attachment.where("attachments.container_type = 'Project' And attachments.container_id = '#{project.id}' AND filename LIKE :like ", like: "%#{keywords}%"). + reorder(sort) + else + resultSet = Attachment.where("((attachments.container_type = 'Project' And attachments.container_id = '#{project.id}') OR (container_type = 'Version' AND container_id IN (#{ids}))) AND filename LIKE :like ", like: "%#{keywords}%"). + reorder(sort) + end + end def find_public_attache keywords,sort = "" # StoresController#search 将每条文件都查出来,再次进行判断过滤。---> resultSet.to_a.map diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 790718e5d..80be8c5d5 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -95,6 +95,7 @@ class IssuesController < ApplicationController format.api { Issue.load_visible_relations(@issues) if include_in_api_response?('relations') } + # format.json { render :json => @issues.map { |issue| issue.to_json}} #:json => @issues.map { |issue| issue.to_json} format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') } format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'issues.pdf') } diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb index b897d039a..32ec3dad2 100644 --- a/app/controllers/poll_controller.rb +++ b/app/controllers/poll_controller.rb @@ -29,7 +29,7 @@ class PollController < ApplicationController end #已提交问卷的用户不能再访问该界面 if has_commit_poll?(@poll.id,User.current.id) && (!User.current.admin?) - render_403 + redirect_to poll_index_url(:polls_type => "Course", :polls_group_id => @course.id) else @can_edit_poll = (!has_commit_poll?(@poll.id,User.current.id)) || User.current.admin? @percent = get_percent(@poll,User.current) diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb index fe7bcf0be..defc36868 100644 --- a/app/controllers/versions_controller.rb +++ b/app/controllers/versions_controller.rb @@ -85,13 +85,14 @@ class VersionsController < ApplicationController end def new - @version = @project.versions.build - @version.safe_attributes = params[:version] - - respond_to do |format| - format.html - format.js - end + # @version = @project.versions.build + # @version.safe_attributes = params[:version] + # + # respond_to do |format| + # format.html + # format.js + # end + redirect_to settings_project_url(@project, :tab => 'versions') end def create diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 0163c8dd8..69a3a8398 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -51,11 +51,11 @@ module ApplicationHelper def get_project_type_css(value) if value == 1 - "pr_friend" - elsif value == 1 + "pr_kafa" + elsif value == 2 "pr_keyan" else - "pr_kafa" + "pr_friend" end end diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 2e06e3a43..801d98b0b 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -691,9 +691,11 @@ module CoursesHelper #end #poll_count - #Poll.where(polls_group_id: @course_ids, polls_type: Course, polls_status: 2||3).where("published_at>?",date_from).each do |poll| - # activities[poll.polls_group_id]+=1 - #end + # 动态目前只统计发布的问卷,关闭的问卷不在动态内显示 + # Poll.where(polls_group_id: @course_ids, polls_type: Course, polls_status: 2||3).where("published_at>?",date_from).each do |poll| + Poll.where(polls_group_id: @course_ids, polls_type: Course, polls_status: 2||3).where("published_at>?",date_from).each do |poll| + activities[poll.polls_group_id]+=1 + end #end diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 9c4fab9de..b72a191db 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -340,17 +340,18 @@ module IssuesHelper if detail.property == 'attachment' && !value.blank? && atta = Attachment.find_by_id(detail.prop_key) # Link to the attachment if it has not been removed if options[:token].nil? - value = link_to_attachment(atta, :download => true, :only_path => options[:only_path], :class=> "info_foot_num c_blue") + value = atta.filename else - value = link_to_attachment(atta, :download => true, :only_path => options[:only_path], :token => options[:token], :class=> "info_foot_num c_blue") - end - if options[:only_path] != false && atta.is_text? - value += link_to( - image_tag('magnifier.png'), - :controller => 'attachments', :action => 'show', - :id => atta, :filename => atta.filename - ) + value = atta.filename end + # 放大镜搜索功能 + # if options[:only_path] != false && atta.is_text? + # value += link_to( + # image_tag('magnifier.png'), + # :controller => 'attachments', :action => 'show', + # :id => atta, :filename => atta.filename + # ) + # end else value = content_tag("i", h(value)) if value end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index d8078aeb7..508e58ba3 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -392,4 +392,19 @@ module ProjectsHelper type end + #显示项目配置菜单 + def show_project_memu user + if user.allowed_to?(:edit_project, @project) + result = "edit_project" + elsif user.allowed_to?(:select_project_modules, @project) + result = "select_project_modules" + elsif user.allowed_to?(:manage_members, @project) + result = "manage_members" + elsif user.allowed_to?(:manage_versions, @project) + result = "manage_versions" + elsif user.allowed_to?(:manage_repository, @project) + result = "manage_repository" + end + result + end end diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb index f36d2ea94..e1d8c3e12 100644 --- a/app/helpers/queries_helper.rb +++ b/app/helpers/queries_helper.rb @@ -255,8 +255,19 @@ module QueriesHelper # Give it a name, required to be valid @query = IssueQuery.new(:name => "_") @query.project = @project + params[:f] = %w(subject status_id priority_id author_id assigned_to_id) unless params[:status_id].nil? + params[:op] = {'subject' => "~" , + 'status_id' => ( params[:status_id] == '0' ? "!":"=" ), + 'priority_id' => ( params[:priority_id] == '0' ? "!":"=" ), + 'author_id' => ( params[:author_id] == '0' ? "!":"=" ), + 'assigned_to_id' => ( params[:assigned_to_id] == '0' ? "!":"=" )} unless params[:status_id].nil? + params[:v] = {'subject' => [params[:subject]], + 'status_id' => [params[:status_id]], + 'priority_id' => [params[:priority_id]], + 'author_id' => [params[:author_id]], + 'assigned_to_id' => [params[:assigned_to_id]]} unless params[:status_id].nil? @query.build_from_params(params) - session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names} + #session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names} else # retrieve from session @query = IssueQuery.find_by_id(session[:query][:id]) if session[:query][:id] diff --git a/app/models/poll.rb b/app/models/poll.rb index 943c08b51..64e9df79a 100644 --- a/app/models/poll.rb +++ b/app/models/poll.rb @@ -7,22 +7,24 @@ class Poll < ActiveRecord::Base has_many :poll_users, :dependent => :destroy has_many :users, :through => :poll_users #该文件被哪些用户提交答案过 # 添加课程的poll动态 -# has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy -# after_create :act_as_activity + has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy + after_create :act_as_activity -# acts_as_event :title => Proc.new {|o| "#{l(:label_my_message)} ##{o.id}: #{o.name}" }, -# :description => :description, -# :author => :author, -# :url => Proc.new {|o| {:controller => 'poll', :action => 'show', :id => o.id}} + acts_as_event :title => Proc.new {|o| "#{l(:label_course_poll)}: #{o.polls_name}" }, + :description => :polls_description, + :datetime => :published_at, + :author => :user, + :url => Proc.new {|o| {:controller => 'poll', :action => 'show', :id => o.id}} -# acts_as_activity_provider :type => 'polls', -# :permission => :view_course_polls, - #:find_options => {:include => [:course, :author]}, - #:timestamp => "#{self.table_name}.published_at", -# :author_key => :author_id + acts_as_activity_provider :type => 'polls', + #:permission => :view_course_polls, + :find_options => {:select => "#{Poll.table_name}.*", + :joins => "LEFT JOIN #{Course.table_name} ON ( #{Poll.table_name}.polls_type='Course' AND #{Poll.table_name}.polls_status= 2 AND #{Poll.table_name}.polls_group_id = #{Course.table_name}.id )"}, + :timestamp => "#{self.table_name}.published_at", + :author_key => :user_id -# def act_as_activity -# self.acts << Activity.new(:user_id => self.user_id) -# end + def act_as_activity + self.acts << Activity.new(:user_id => self.user_id) + end end diff --git a/app/views/boards/_project_show.html.erb b/app/views/boards/_project_show.html.erb index 43cea4b4f..31748014f 100644 --- a/app/views/boards/_project_show.html.erb +++ b/app/views/boards/_project_show.html.erb @@ -19,6 +19,7 @@
<% if User.current.logged? %> <%= form_for @message, :url => new_board_message_path(@board), :html => {:multipart => true, :id => 'message-form'} do |f| %> +

<%= l(:project_module_boards_post) %>

<%= render :partial => 'messages/form_project', :locals => {:f => f} %>

<%= l(:button_submit)%> diff --git a/app/views/files/_project_file_new.html.erb b/app/views/files/_project_file_new.html.erb index ad489742e..f71783ba2 100644 --- a/app/views/files/_project_file_new.html.erb +++ b/app/views/files/_project_file_new.html.erb @@ -1,8 +1,3 @@ - -

-

<%= l(:lable_file_sharingarea) %>

-
-

<%= l(:label_issue_tracking) %>

-
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %> - - <%= link_to l(:label_query), '#', - :onclick => '$("#custom_query").slideToggle(400); ' if true || User.current.logged? %> - + <%= form_tag({:controller => 'issues', :action => 'index', :project_id => @project}, :method => :get,:id=>"issue_query_form", :class => 'query_form') do %> + <%= hidden_field_tag 'set_filter', '1' %> + + +
+ <%= select( :issue,:user_id, @project.members.order("lower(users.login)").map{|c| [c.name, c.user_id]}.unshift(["指派给",0]), + { :include_blank => false,:selected=>0 + }, + {:onchange=>"remote_function();",:id=>"assigned_to_id",:name=>"v[assigned_to_id]",:class=>"w90"} + ) + %> + <%= select( :issue,:prior, [["低",1],["正常",2],["高",3],["紧急",4],["立刻",5]].unshift(["优先级",0]), + { :include_blank => false,:selected=>0 + }, + {:onchange=>"remote_function();",:id=>"priority_id",:name=>"v[priority_id]",:class=>"w90"} + ) + %> + <%= select( :issue,:status, [["新增",1],["正在解决",2],["已解决",3],["反馈",4],["关闭",5],["拒绝",6]].unshift(["状态",0]), + { :include_blank => false,:selected=>0 + }, + {:onchange=>"remote_function();",:id=>"status_id",:name=>"v[status_id]",:class=>"w90"} + ) + %> + <%= select( :issue,:user_id, @project.members.order("lower(users.login)").map{|c| [c.name, c.user_id]}.unshift(["作者",0]), + { :include_blank => false,:selected=>0 + }, + {:onchange=>"remote_function();",:id=>"author_id",:name=>"v[author_id]",:class=>"w90"} + ) + %> +
+
+ <% end %> +

<%= l(:label_issues_sum) %>:<%= @project.issues.count %> + <%= l(:lable_issues_undo) %>:<%= @project.issues.where('status_id in (1,2,4,6)').count %> +

+ +
<% end %> - <%= l(:label_issues_sum) %>:<%= @project.issues.count %> <%= l(:lable_issues_undo) %>:<%= @project.issues.where('status_id in (1,2,4,6)').count %>
<% if !@query.new_record? && @query.editable_by?(User.current) %> @@ -20,49 +75,6 @@ <% html_title(@query.new_record? ? l(:label_issue_plural) : @query.name) %>
- <%= form_tag({:controller => 'issues', :action => 'index', :project_id => @project}, :method => :get, :id => 'query_form', :class => 'query_form') do %> - <%= hidden_field_tag 'set_filter', '1' %> -
- ---<%= l :label_query_new %>--- -
-
"> - - <%= l(:label_issue_query_condition) %> - -
"> - <%= render :partial => 'queries/filters', :locals => {:query => @query} %> -
-
- -
- <%= link_to_function l(:label_issue_query), 'submit_query_form("query_form")', :class => 'icon icon-checked' %> - <%= link_to l(:label_issue_cancel_query), {:set_filter => 1, :project_id => @project}, :class => 'icon icon-reload' %> -
-
-
- <% end %>
<%= error_messages_for 'query' %> @@ -73,10 +85,10 @@ <%= l(:label_no_data) %>

<% else %> - <%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %> - +
+ <%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query,:issue_pages=>@issue_pages,:issue_count=>@issue_count} %> +
+ <% end %> diff --git a/app/views/issues/index.js.erb b/app/views/issues/index.js.erb new file mode 100644 index 000000000..34d2eb760 --- /dev/null +++ b/app/views/issues/index.js.erb @@ -0,0 +1 @@ +$("#issue_list").html("<%= escape_javascript(render :partial => 'issues/list',:locals => {:issues => @issues, :query => @query,:issue_pages=>@issue_pages,:issue_count=>@issue_count})%>"); \ No newline at end of file diff --git a/app/views/issues/show.html.erb b/app/views/issues/show.html.erb index d68e1fc7d..bed1e3d77 100644 --- a/app/views/issues/show.html.erb +++ b/app/views/issues/show.html.erb @@ -113,12 +113,13 @@
<%= render :partial => 'edit' %>
+ +

+ + <%= l(:button_submit) %> + <% end %> - -

- - <%= l(:button_submit) %> - + <%#= submit_tag l(:button_submit) %> <%#= preview_link preview_edit_issue_path(:project_id => @project, :id => @issue), 'issue-form' ,'preview',{:class => "blue_btn fr mr10"}%>
diff --git a/app/views/layouts/_join_exit_project.html.erb b/app/views/layouts/_join_exit_project.html.erb index 13baae37f..d52ecbb76 100644 --- a/app/views/layouts/_join_exit_project.html.erb +++ b/app/views/layouts/_join_exit_project.html.erb @@ -8,8 +8,8 @@ <%= join_in_project_link(@project, User.current) %> <% end %> - <% if ((User.current.member_of? @project) && User.current.login? && User.current.allowed_to?({:controller => 'projects', :action => 'settings'}, @project)) %> + <% if User.current.admin? || User.current.allowed_to?({:controller => 'projects', :action => 'settings'}, @project) %> <%= link_to "#{l(:button_configure)}".html_safe, settings_project_path(@project), :class => "pr_join_a" %> - <%= link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type"%> + <%= link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type"%> <% end %>
diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index d71722ce8..ed7a5a4dc 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -121,13 +121,13 @@
- - <%= l(:label_project_name) %><%= @project.name %> + + <%= l(:label_project_name) %><%= @project.name %> <% if @project.is_public? %> <%= l(:label_public)%> <% else %> <%= l(:label_private)%> - <% end %> + <% end %>
@@ -182,12 +182,12 @@

<%= l(:label_project_overview)%>:

-
+
<%= textilizable(@project.description) if @project.description && !@project.description.blank? %>
- + @@ -225,15 +225,16 @@

请选择项目类型:

    -
  • id="development_group"/>
  • -
  • id="research_group"/>
  • -
  • id="friend_organization"/>
  • +
  • id="development_group"/>
  • +
  • id="research_group"/>
  • +
  • id="friend_organization"/>
确定
123
+ <%= render :partial => 'layouts/new_feedback' %> diff --git a/app/views/messages/_form_project.html.erb b/app/views/messages/_form_project.html.erb index a1ef69fa9..5724acf47 100644 --- a/app/views/messages/_form_project.html.erb +++ b/app/views/messages/_form_project.html.erb @@ -1,7 +1,6 @@ <%= error_messages_for 'message' %> <% replying ||= false %> <% extra_option = replying ? { readonly: true} : { maxlength: 200 } %> -

<%= l(:label_message_reply) %>

  • <% if replying %> @@ -26,7 +25,7 @@
  • - + <%= text_area :quote,:quote,:style => 'display:none' %> <%= f.text_area :content, :class => 'talk_text fl', :id => 'message_content', :onkeyup => "regexContent();", :maxlength => 5000,:placeholder => "最多3000个汉字(或6000个英文字符)" %>
    @@ -35,7 +34,7 @@
  • -
    +
    <%= render :partial => 'attachments/form_project', :locals => {:container => @message,:isReply => @isReply} %>
  • diff --git a/app/views/messages/_project_show.html.erb b/app/views/messages/_project_show.html.erb index 069fd9d80..28b9e28d5 100644 --- a/app/views/messages/_project_show.html.erb +++ b/app/views/messages/_project_show.html.erb @@ -88,8 +88,9 @@ <% if !@topic.locked? && authorize_for('messages', 'reply') %> diff --git a/app/views/projects/settings.html.erb b/app/views/projects/settings.html.erb index d3499cfdd..25ec1c4d5 100644 --- a/app/views/projects/settings.html.erb +++ b/app/views/projects/settings.html.erb @@ -20,15 +20,27 @@

    配置

    +
      -
    • 信息
    • -
    • 模块
    • -
    • 成员
    • -
    • 版本
    • + <% show_memu = show_project_memu User.current%> + <% if User.current.allowed_to?(:edit_project, @project) %> +
    • 信息
    • + <% end %> + <% if User.current.allowed_to?(:select_project_modules, @project) %> +
    • 模块
    • + <% end %> + <% if User.current.allowed_to?(:manage_members, @project) %> +
    • 成员
    • + <% end %> + <% if User.current.allowed_to?(:manage_versions, @project) %> +
    • 版本
    • + <% end %> -
    • 版本库
    • + <% if User.current.allowed_to?(:manage_repository, @project) %> +
    • 版本库
    • + <% end %> @@ -37,28 +49,28 @@
      -
      - <%= render :partial=>"projects/settings/new_edit" %> +
      + <%= render :partial=>"projects/settings/new_edit" if User.current.allowed_to?(:edit_project, @project)%>
      -
      - <%= render :partial=>"projects/settings/new_modules" %> +
      + <%= render :partial=>"projects/settings/new_modules" if User.current.allowed_to?(:select_project_modules, @project)%>
      -
      - <%= render :partial=>"projects/settings/new_members" %> +
      + <%= render :partial=>"projects/settings/new_members" if User.current.allowed_to?(:manage_members, @project)%>
      -
      - <%= render :partial=>"projects/settings/new_versions" %> +
      + <%= render :partial=>"projects/settings/new_versions" if User.current.allowed_to?(:manage_versions, @project)%>
      -
      - <%= render :partial=>"projects/settings/new_repositories" %> +
      + <%= render :partial=>"projects/settings/new_repositories" if User.current.allowed_to?(:manage_repository, @project)%>
      diff --git a/app/views/projects/settings/_new_edit.html.erb b/app/views/projects/settings/_new_edit.html.erb index 58c328e87..a8998ece5 100644 --- a/app/views/projects/settings/_new_edit.html.erb +++ b/app/views/projects/settings/_new_edit.html.erb @@ -1,3 +1,4 @@ +<%= error_messages_for 'project' %> <%= labelled_form_for @project do |f| %>
      • @@ -7,7 +8,9 @@
      • - + + +
      • @@ -32,6 +35,6 @@
      - 保存 + 保存 <% end %>
      diff --git a/app/views/projects/settings/_new_members.html.erb b/app/views/projects/settings/_new_members.html.erb index f2b48d341..faccfbeeb 100644 --- a/app/views/projects/settings/_new_members.html.erb +++ b/app/views/projects/settings/_new_members.html.erb @@ -24,7 +24,7 @@ :html => {:id => "member-#{member.id}-roles-form", :class => 'hol'}} ) do |f| %> <% roles.each do |role| %> -
        +
          <%= check_box_tag 'membership[role_ids][]', role.id, member.roles.include?(role), :disabled => member.member_roles.detect { |mr| mr.role_id == role.id && !mr.inherited_from.nil? } %> @@ -32,7 +32,7 @@ <% end %> <%= hidden_field_tag 'membership[role_ids][]', '' %> -
          +
          <%= l(:button_change)%> diff --git a/app/views/projects/settings/_new_versions.html.erb b/app/views/projects/settings/_new_versions.html.erb index 326b56f1d..e52984d15 100644 --- a/app/views/projects/settings/_new_versions.html.erb +++ b/app/views/projects/settings/_new_versions.html.erb @@ -22,15 +22,15 @@ <%= 'shared' if version.project != @project %> <%= link_to_version version %> - <%= format_date(version.effective_date) %> + <%= format_date(version.effective_date) %> <%=h version.description %> <%= l("version_status_#{version.status}") %> <%=h format_version_sharing(version.sharing) %> - + <%= link_to_if_authorized(h(truncate(version.wiki_page_title,:length=>20)), {:controller => 'wiki', :action => 'show', :project_id => version.project, - :id => Wiki.titleize(version.wiki_page_title)}) || h(version.wiki_page_title) unless version.wiki_page_title.blank? || version.project.wiki.nil? %> + :id => Wiki.titleize(version.wiki_page_title)},:class=>"c_blue02") || h(version.wiki_page_title) unless version.wiki_page_title.blank? || version.project.wiki.nil? %> <% if version.project == @project && User.current.allowed_to?(:manage_versions, @project) %> diff --git a/app/views/projects/show.html.erb b/app/views/projects/show.html.erb index d4cfd88c8..abc63601e 100644 --- a/app/views/projects/show.html.erb +++ b/app/views/projects/show.html.erb @@ -11,7 +11,7 @@ <%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %>
          <%= link_to e.user, user_path(e.user), :class => "problem_name c_orange fl" %> <%= l(:label_project_create) %> : - <%= link_to e.project.name, :class => "problem_tit fl fb" %>
          + <%= link_to e.project.name,{} ,:class => "problem_tit fl fb" %>


          <%= l :label_create_time %> :<%= format_time(e.project.created_on) %>

          diff --git a/app/views/repositories/_link_to_functions.html.erb b/app/views/repositories/_link_to_functions.html.erb index f75a7ce5f..fc3784d46 100644 --- a/app/views/repositories/_link_to_functions.html.erb +++ b/app/views/repositories/_link_to_functions.html.erb @@ -1,6 +1,6 @@ <% if @entry && @entry.kind == 'file' %> -

          +

          <%= link_to_if action_name != 'changes', l(:label_history), {:action => 'changes', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev } %> | <% if @repository.supports_cat? %> <%= link_to_if action_name != 'entry', l(:button_view), {:action => 'entry', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev } %> | diff --git a/app/views/repositories/_revisions.html.erb b/app/views/repositories/_revisions.html.erb index 844c06500..a0a960b6c 100644 --- a/app/views/repositories/_revisions.html.erb +++ b/app/views/repositories/_revisions.html.erb @@ -47,5 +47,8 @@ end %> <% end %> -<%= submit_tag(l(:label_view_diff), :name => nil) if show_diff %> +

          + <%= submit_tag(l(:label_view_diff), :name => nil, :class=>"c_blue") if show_diff %> +

          + <% end %> diff --git a/app/views/repositories/changes.html.erb b/app/views/repositories/changes.html.erb index 9d7c4aa30..302c839ba 100644 --- a/app/views/repositories/changes.html.erb +++ b/app/views/repositories/changes.html.erb @@ -10,9 +10,10 @@ <%= render_properties(@properties) %> +
          <%= render(:partial => 'revisions', :locals => {:project => @project, :path => @path, :revisions => @changesets, :entry => @entry }) unless @changesets.empty? %> - +
          <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> <% end %> diff --git a/app/views/repositories/diff.html.erb b/app/views/repositories/diff.html.erb index 3d206854d..a3afebfff 100644 --- a/app/views/repositories/diff.html.erb +++ b/app/views/repositories/diff.html.erb @@ -5,7 +5,7 @@ :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev=> @rev}, :method => 'get') do %> <%= hidden_field_tag('rev_to', params[:rev_to]) if params[:rev_to] %> -

          +

          <%= l(:label_view_diff) %>: diff --git a/app/views/versions/index.html.erb b/app/views/versions/index.html.erb index be4fb27ef..0b71fa5e2 100644 --- a/app/views/versions/index.html.erb +++ b/app/views/versions/index.html.erb @@ -1,9 +1,6 @@

          <%= l(:label_roadmap) %>

          - - -
          diff --git a/app/views/versions/show.html.erb b/app/views/versions/show.html.erb index eb463300b..1a7fce16d 100644 --- a/app/views/versions/show.html.erb +++ b/app/views/versions/show.html.erb @@ -31,7 +31,7 @@
          - <%= l(:field_estimated_hours) %> +

          <%= l(:field_estimated_hours) %>:

          <%= html_hours(l_hours(@version.estimated_hours)) %> @@ -40,7 +40,7 @@ <% if User.current.allowed_to?(:view_time_entries, @project) %>
          - <%= l(:label_spent_time) %> +

          <%= l(:label_spent_time) %>:

          <%= html_hours(l_hours(@version.spent_hours)) %> diff --git a/config/locales/courses/zh.yml b/config/locales/courses/zh.yml index e0a39f51d..0f6c1fa01 100644 --- a/config/locales/courses/zh.yml +++ b/config/locales/courses/zh.yml @@ -90,4 +90,6 @@ zh: #setting label_user_name: "用户名称" - #setting end \ No newline at end of file + #setting end + + label_course_poll: 课程问卷 \ No newline at end of file diff --git a/config/locales/projects/zh.yml b/config/locales/projects/zh.yml index 3c4d4a97c..49fe0e19a 100644 --- a/config/locales/projects/zh.yml +++ b/config/locales/projects/zh.yml @@ -55,9 +55,9 @@ zh: label_apply_project_waiting: 已处理申请,请等待管理员审核 label_unapply_project: 取消申请 lable_sure_exit_project: 是否确认退出该项目 - label_friend_organization: 朋友圈 - label_research_group: 科研组 - label_development_team: 开发组 + label_friend_organization: 圈子模式 + label_research_group: 研讨模式 + label_development_team: 开发模式 label_member: 成员 project_module_attachments: 资源 diff --git a/lib/redmine.rb b/lib/redmine.rb index ad73c2db1..ed96e01ff 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -118,7 +118,7 @@ Redmine::AccessControl.map do |map| map.permission :projects_attachments_download,{:attachments => :download},:belong_to_project => true map.permission :course_attachments_download,{:attachments => :download},:belong_to_course => true map.permission :contest_attachments_download,{:attachments => :download},:belong_to_contest => true - + map.permission :view_polls, {}, :public => true, :read => true map.permission :view_homeworks, {}, :public => true, :read => true map.course_module :files do |map| @@ -487,7 +487,7 @@ Redmine::Activity.map do |activity| activity.register :course_messages, :default => false, :class_name => 'Message' activity.register :homeworks, :class_name => 'Bid' -# activity.register :polls, :class_name => 'Poll' + activity.register :polls, :class_name => 'Poll' end Redmine::Search.map do |search| diff --git a/public/javascripts/project.js b/public/javascripts/project.js index b5f769723..0aef464f8 100644 --- a/public/javascripts/project.js +++ b/public/javascripts/project.js @@ -47,14 +47,14 @@ function show_more_msg() { var information = $("#expend_more_information"); var arrow = $("#arrow"); var val = information.attr("value"); - if (val == "展开更多信息") { + if (val == "show_more") { $("#expend_more_information").text("收起描述信息"); - information.attr("value", "收起描述信息"); + information.attr("value", "hide_more"); arrow.attr("src", "/images/jiantouup.jpg") } else { $("#expend_more_information").text("展开更多信息"); - information.attr("value", "展开更多信息"); + information.attr("value", "show_more"); arrow.attr("src", "/images/jiantou.jpg") } } @@ -90,7 +90,7 @@ function regexContent() { return false; } -// 项目编辑和提交 +// 项目讨论区编辑和提交 function submitProjectsBoard() { if (regexSubject() && regexContent()) { $("#message-form").submit(); @@ -161,7 +161,7 @@ function course_setting(id) { $('#tbc_0' + (3 - id)).removeClass().addClass("undis"); } -//项目类型 +//项目类型(朋友圈、开发组、科研组) function show_window() { $('#light').css('display', 'block'); $('#fade').css('display', 'block'); @@ -189,6 +189,32 @@ function project_setting(n) { } } } + +//配置-验证项目名称 +function regex_project_name() +{ + var name = $.trim($("#project_name").val()); + if(name.length == 0) + { + $("#project_name_notice").show(); + return false; + } + else + { + $("#project_name_notice").hide(); + return true; + } +} + +//配置-信息提交 +function submit_edit_project(id) +{ + if(regex_project_name()) + { + $("#edit_project_"+id).submit(); + } +} + //配置--成员---申请列表--拒绝 function refusal_applied_member() { $('#new_membership').append(""); diff --git a/public/stylesheets/pleft.css b/public/stylesheets/pleft.css index cc7e18465..baca16c9c 100644 --- a/public/stylesheets/pleft.css +++ b/public/stylesheets/pleft.css @@ -24,7 +24,7 @@ a:hover.pr_join_a{ background:#41a8c8;} .pr_info_score{ font-size:14px; color:#3e4040; } .pr_info_score a{ color:#ff7143;} .pr_info_score a:hover{ color:#64bdd9;} -.img_private{ background:url(../images/new_project/img_project.png) 0 0 no-repeat; width:33px; height:16px; color:#fff; font-size:12px; padding-left:7px; } +.img_private{ background:url(../images/new_project/img_project.png) 0 0 no-repeat; width:33px; height:16px; color:#fff; font-size:12px; padding-left:7px;white-space:nowrap;} .info_foot_num{ color:#3ca5c6; } .pr_info_foot{ color:#7f7f7f; margin-top:5px; } .info_foot_num:hover{ color:#2390b2;} @@ -50,7 +50,7 @@ a:hover.subnav_green{ background:#14ad5a;} .project_intro{ width:220px; padding:10px; background:#fff; margin-top:10px; padding-top:5px; color:#6d6d6d; line-height:1.9;} .course_description{max-height: 112px;overflow:hidden; word-break: break-all;word-wrap: break-word;} .course_description_none{max-height: none;} -.lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;} +.lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;display: none;} .lg-foot:hover{ color:#787b7e; border:1px solid #d4d4d4;} /****标签(和资源库的tag样式一致)***/ .project_Label{ width:220px; padding:10px; background:#fff; margin-top:10px; padding-top:5px; margin-bottom:10px;} diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index b5244b73c..2f6a4babe 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -72,7 +72,10 @@ a:hover.problem_pic{border:1px solid #64bdd9;} a.problem_name{ color:#ff5722; } a:hover.problem_name{ color:#d33503;} a.problem_tit{ color:#0781b4; max-width:430px; font-weight:bold; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} -a.problem_tit02{ color:#0781b4; font-weight:bold;width:400px; } +a.problem_tit02{ color:#0781b4; font-weight:bold;max-width:400px;} +.problem_tit_div{ color:#0781b4; font-weight:bold;width:400px; } +a.problem_tit_a{ color:#0781b4; } +.problem_tit_a:hover{ color:#09658c; } a:hover.problem_tit,a:hover.problem_tit02{ color:#09658c; } .problem_main{ border-bottom:1px dashed #d4d4d4; padding-bottom:10px; margin-bottom:10px;} a.pro_mes{ float:left; color:#a0a0a0; display:block; width:100px; height:20px; } @@ -470,16 +473,8 @@ img.ui-datepicker-trigger { .wiki_page_con{ border-bottom:1px dashed #CCC; margin-bottom:10px; padding-bottom:10px;} #wiki_new_box{ display:none;} /*wiki显示附加*/ -.wiki-page { - font-size: 14px; - color: #09658C !important; - font-weight: bold; - width: 630px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - margin-bottom: 10px; -} +.wiki-page {font-size: 14px;color: #09658C !important; font-weight: bold;width: 630px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;margin-bottom: 10px;} +.wiki_con_tit{font-size: 14px;color: #09658C !important; font-weight: bold;width: 630px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;margin-bottom: 10px;} /*.author{*/ /*color: #FF5722;*/ /*margin-left:20px;*/ @@ -598,3 +593,94 @@ div.thumbnails div {background:#fff;display:inline-block;margin-right:2px;} #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;} #cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;} + +/*****项目版本库修订 Tables *****/ + +table.list{ border:none; border-collapse: collapse; width: 100%; margin-bottom: 4px; } +table.list th { background-color:#EEEEEE; padding: 4px; white-space:pre-line; } +table.list td { vertical-align: top; padding-right:10px; } +table.list td.id { width: 2%; text-align: center;} +table.list td.checkbox { width: 15px; padding: 2px 0 0 0; } +table.list td.checkbox input {padding:0px;} +table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; } +table.list td.buttons a { padding-right: 0.6em; } +table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; } + +table.list tbody td, table.list tbody tr td, table.list tbody tr td.checkbox { + border-bottom: solid 1px #ddd; + font-size: 11px; + padding: 4px 10px 4px 3px; +} + + +table.list thead th +{ + border:none; + border-bottom:1px solid #999; + font-size:12px;/*by young*/ + font-weight:400; + padding:0 3px 3px; + text-transform:uppercase +} + +table.list th +{ + background-color:#fff} + +table.list thead th +{ + border:none; + border-bottom:1px solid #999; + font-size:12px;/*by young*/ + font-weight:400; + padding:0 3px 3px; + text-transform:uppercase +} + +tr.changeset { height: 20px } +tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; } +tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; } +tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;} +tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;} + +div.changeset { padding: 4px;} +div.changeset { border-bottom: 1px solid #ddd; } + +.odd {background-color:#f6f7f8;} +.even {background-color: #fff;} + + +/*****项目版本库文件 Tables *****/ +.autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;} +tr.entry { border: 1px solid #f8f8f8; } +tr.entry td { white-space: nowrap; } +tr.entry td.filename { width: 30%; } +tr.entry td.filename_no_report { width: 70%; } +tr.entry td.size { text-align: right; font-size: 90%; } +tr.entry td.revision, tr.entry td.author { text-align: center; } +tr.entry td.age { text-align: right; } +tr.entry.file td.filename a { margin-center: 16px; } +tr.entry.file td.filename_no_report a { margin-left: 16px; } + +tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;} +tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);} +.icon-folder { background-image: url(../images/folder.png); } +.open .icon-folder { background-image: url(../images/folder_open.png); } +.icon-file { background-image: url(../images/files/default.png); } +.icon-file.text-plain { background-image: url(../images/files/text.png); } +.icon-file.text-x-c { background-image: url(../images/files/c.png); } +.icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); } +.icon-file.text-x-java { background-image: url(../images/files/java.png); } +.icon-file.text-x-javascript { background-image: url(../images/files/js.png); } +.icon-file.text-x-php { background-image: url(../images/files/php.png); } +.icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); } +.icon-file.text-xml { background-image: url(../images/files/xml.png); } +.icon-file.text-css { background-image: url(../images/files/css.png); } +.icon-file.text-html { background-image: url(../images/files/html.png); } +.icon-file.image-gif { background-image: url(../images/files/image.png); } +.icon-file.image-jpeg { background-image: url(../images/files/image.png); } +.icon-file.image-png { background-image: url(../images/files/image.png); } +.icon-file.image-tiff { background-image: url(../images/files/image.png); } +.icon-file.application-pdf { background-image: url(../images/files/pdf.png); } +.icon-file.application-zip { background-image: url(../images/files/zip.png); } +.icon-file.application-x-gzip { background-image: url(../images/files/zip.png); } diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index b11e69521..2f45bbd69 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -74,9 +74,12 @@ h4{ font-size:14px; color:#3b3b3b;} .mt5{ margin-top:5px;} .mt8{ margin-top:8px;} .mt10{ margin-top:10px;} +.mt13{ margin-top:13px;} .mt43{ margin-top:43px;} +.mt40{ margin-top:40px;} .mb5{ margin-bottom:5px;} .mb10{ margin-bottom:10px;} +.mb13{ margin-bottom:13px;} .pl15{ padding-left:15px;} .w90{ width:90px;} .w210{ width:210px;}