diff --git a/app/api/mobile/apis/comments.rb b/app/api/mobile/apis/comments.rb index 75932d60f..2e84fe5a9 100644 --- a/app/api/mobile/apis/comments.rb +++ b/app/api/mobile/apis/comments.rb @@ -2,6 +2,7 @@ module Mobile module Apis class Comments < Grape::API + include ApplicationHelper resource :comments do desc '课程通知评论' params do @@ -82,8 +83,8 @@ module Mobile memo: {:subject => params[:subject],:content => '该贴来自手机App意见反馈'}, } cs = CommentService.new - memo = cs.create_feedback cs_params, current_user - raise "commit failed #{memo.errors.full_messages}" if memo.new_record? + memo,message = cs.create_feedback cs_params, current_user + raise message if memo.new_record? present :status, 0 end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 9a5307be6..b6d1db25c 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -82,7 +82,7 @@ module Mobile desc "用户搜索" params do requires :name, type: String, desc: '用户名关键字' - requires :search_by, type: String,desc: '搜索依据:0 昵称,1 用户名,2 邮箱' + requires :search_by, type: String,desc: '搜索依据:0 昵称,1 用户名,2 邮箱,3 昵称和姓名' end get 'search/search_user' do us = UsersService.new diff --git a/app/api/mobile/entities/course_dynamic.rb b/app/api/mobile/entities/course_dynamic.rb index aa8aadbb6..b6e4630e4 100644 --- a/app/api/mobile/entities/course_dynamic.rb +++ b/app/api/mobile/entities/course_dynamic.rb @@ -15,6 +15,8 @@ module Mobile course_dynamic_expose :type course_dynamic_expose :count course_dynamic_expose :course_name + course_dynamic_expose :course_term + course_dynamic_expose :course_time course_dynamic_expose :course_id course_dynamic_expose :course_img_url course_dynamic_expose :message diff --git a/app/controllers/discuss_demos_controller.rb b/app/controllers/discuss_demos_controller.rb index 31b0f1dcc..a0955efe2 100644 --- a/app/controllers/discuss_demos_controller.rb +++ b/app/controllers/discuss_demos_controller.rb @@ -1,5 +1,6 @@ class DiscussDemosController < ApplicationController def index + @discuss_demo_list = DiscussDemo.where("body is not null").order("created_at desc").page(params[:page] || 1).per(10) end @@ -24,7 +25,12 @@ class DiscussDemosController < ApplicationController end def destroy - DiscussDemo.delete_all(["id = ?",params[:id]]) + asset = Kindeditor::Asset.find_by_owner_id(params[:id]) + filepath = File.join(Rails.root,"public","files","uploads", + asset[:created_at].to_s.gsub("+0800","").to_datetime.strftime("%Y%m").to_s, + asset[:asset].to_s) + File.delete(filepath) if File.exist?filepath + DiscussDemo.destroy(params[:id]) redirect_to :controller=> 'discuss_demos',:action => 'index' end diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb index 545d61155..9bf2ee846 100644 --- a/app/controllers/documents_controller.rb +++ b/app/controllers/documents_controller.rb @@ -91,6 +91,7 @@ class DocumentsController < ApplicationController def update @document.safe_attributes = params[:document] + @document.save_attachments(params[:attachments]) if request.put? and @document.save flash[:notice] = l(:notice_successful_update) redirect_to document_url(@document) diff --git a/app/controllers/forums_controller.rb b/app/controllers/forums_controller.rb index 2f7092d9a..64157ea42 100644 --- a/app/controllers/forums_controller.rb +++ b/app/controllers/forums_controller.rb @@ -20,7 +20,7 @@ class ForumsController < ApplicationController #@memo.author_id = User.current.id #@forum = @memo.forum cs = CommentService.new - @memo = cs.create_feedback params,User.current + @memo,message = cs.create_feedback params,User.current respond_to do |format| if !@memo.new_record? format.html { redirect_to forum_path(@memo.forum) } diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index ba312c74a..aaaa4484d 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -109,7 +109,7 @@ class MembersController < ApplicationController end if params[:flag] unless members.present? && members.all? {|m| m.valid? } - flash[:error] = members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') + flash[:error] = members.empty? ? l(:label_user_role_null) :members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') else flash[:notice] = l(:label_invite_success) end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 44e5fd8a3..e9a27cf44 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -340,6 +340,7 @@ class ProjectsController < ApplicationController @is_zhuce =false flash[:notice] = l(:notice_email_sent, :value => email) else + flash[:error] = l(:notice_registed_success, :value => email) @is_zhuce = true end respond_to do |format| diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index 949ddd643..f35210f01 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -20,7 +20,7 @@ class WelcomeController < ApplicationController include WelcomeHelper helper :project_score caches_action :robots - before_filter :find_first_page, :only => [:index] + #before_filter :find_first_page, :only => [:index] # before_filter :fake, :only => [:index, :course] before_filter :entry_select, :only => [:index] diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb index c865a500b..afdc306a4 100644 --- a/app/helpers/api_helper.rb +++ b/app/helpers/api_helper.rb @@ -60,4 +60,8 @@ module ApiHelper end [count,is_teacher] end + + def get_user_language user + (user.language.nil? || user.language == "") ? 'zh':user.language + end end \ No newline at end of file diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb index b9e658bb5..02bc3d8b3 100644 --- a/app/helpers/watchers_helper.rb +++ b/app/helpers/watchers_helper.rb @@ -43,7 +43,7 @@ module WatchersHelper ) method = watched ? 'delete' : 'post' - link_to text, url, :remote => true, :method => method, :class => css + link_to text, url, :remote => true, :method => method, :style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 22px; line-height: 21px;padding-top:1px; background: none repeat scroll 0% 0% #64BDD9; TES" end ############## added by linchun @@ -278,11 +278,11 @@ module WatchersHelper ) method = applied ? 'delete' : 'post' - link_to text, url, :remote => true, :method => method ,:class=>css + link_to text, url, :remote => true, :method => method ,:style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 21px; line-height: 22px;padding-top:1px; background: none repeat scroll 0% 0% #64BDD9; TES" end def exit_project_link(project) link_to(l(:label_exit_project),exit_cur_project_path(project.id), - :remote => true, :confirm => l(:lable_sure_exit_project), :style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 22px; line-height: 22px; background: none repeat scroll 0% 0% #64BDD9; TES" ) + :remote => true, :confirm => l(:lable_sure_exit_project), :style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 21px; line-height: 22px; background: none repeat scroll 0% 0% #64BDD9; TES;padding-top:1px;" ) end end diff --git a/app/models/discuss_demo.rb b/app/models/discuss_demo.rb index 74b21f9d4..6ed8d15b6 100644 --- a/app/models/discuss_demo.rb +++ b/app/models/discuss_demo.rb @@ -1,4 +1,4 @@ class DiscussDemo < ActiveRecord::Base attr_accessible :title, :body - has_many_kindeditor_assets :attachments, :dependent => :destroy + has_many_kindeditor_assets :assets, :dependent => :destroy end diff --git a/app/models/user.rb b/app/models/user.rb index 83e08254c..860eb56a5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -214,6 +214,8 @@ class User < Principal where(" LOWER(login) LIKE '#{pattern}' ") elsif type == "1" where(" LOWER(concat(lastname, firstname)) LIKE '#{pattern}' ") + elsif type == "3" + where(" LOWER(concat(lastname, firstname,login)) LIKE '#{pattern}' ") else where(" LOWER(mail) LIKE '#{pattern}' ") end diff --git a/app/models/user_extensions.rb b/app/models/user_extensions.rb index 92690d1db..09c88e6df 100644 --- a/app/models/user_extensions.rb +++ b/app/models/user_extensions.rb @@ -32,40 +32,42 @@ class UserExtensions < ActiveRecord::Base def get_brief_introduction return self.brief_introduction end - + + # added by meng def show_identity - if self.identity == 0 - if User.current.language == 'zh' - user_identity = '教师' - else - user_identity = 'Teacher' - end - elsif self.identity == 1 - if User.current.language == 'zh' - user_identity = '学生' - else - user_identity = 'Student' - end - elsif self.identity == 2 - if User.current.language == 'zh' - user_identity = '企业' - else - user_identity = 'Enterprise' - end - elsif self.identity == 3 - if User.current.language == 'zh' - user_identity = '开发者' - else - user_identity = 'Developer' + if User.current.language == 'zh'||User.current.language == '' + case self.identity + when 0 + user_identity = l(:label_account_identity_teacher) + when 1 + user_identity = l(:label_account_identity_student) + when 2 + user_identity = l(:label_account_identity_enterprise) + when 3 + user_identity = l(:label_account_identity_developer) + else + user_identity = '' end else - user_identity = '' + case self.identity + when 0 + user_identity = l(:label_account_identity_teacher) + when 1 + user_identity = l(:label_account_identity_student) + when 2 + user_identity = l(:label_account_identity_enterprise) + when 3 + user_identity = l(:label_account_identity_developer) + else + user_identity = '' + end end return user_identity end -# end - +# end + + def self.introduction(user, message) unless user.user_extensions.nil? info = user.user_extensions diff --git a/app/services/comment_service.rb b/app/services/comment_service.rb index e74cc902b..f75e14b85 100644 --- a/app/services/comment_service.rb +++ b/app/services/comment_service.rb @@ -1,4 +1,6 @@ class CommentService + include ApiHelper + include Redmine::I18n #评论 def news_comments params,current_user @news = News.find(params[:id]) @@ -84,7 +86,8 @@ class CommentService @memo.forum_id = "1" @memo.author_id = current_user.id @memo.save - @memo + message = "#{l(:label_commit_failed,:locale => get_user_language(current_user))}: #{@memo.errors.full_messages}" if @memo.new_record? + [@memo,message] end #课程留言列表 diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 1ec8a0ef0..c689d699d 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -38,7 +38,7 @@ class CoursesService if name.blank? raise 'sumbit empty' end - @courses = courses_all.visible + @courses = courses_all.visible(current_user) if params[:name].present? @courses_all = @courses.like(params[:name]) else @@ -346,7 +346,7 @@ class CoursesService membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user)) end if membership.nil? || membership.count == 0 - raise l(:label_no_courses,:locale => current_user.language.nil? ? 'zh':current_user.language) + raise l(:label_no_courses,:locale => get_user_language(current_user)) end membership.sort! {|older, newer| newer.created_on <=> older.created_on } result = [] @@ -355,19 +355,19 @@ class CoursesService latest_course_dynamics = [] latest_news = course.news.order("created_on desc").first unless latest_news.nil? - latest_course_dynamics << {:type => 1,:time => latest_news.created_on,:message => l(:label_recently_updated_notification,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 1,:time => latest_news.created_on,:message => l(:label_recently_updated_notification,:locale => get_user_language(current_user))} end latest_message = course.journals_for_messages.order("created_on desc").first unless latest_message.nil? - latest_course_dynamics << {:type => 2,:time => latest_message.created_on,:message => l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 2,:time => latest_message.created_on,:message => l(:label_recently_updated_message,:locale => get_user_language(current_user))} end latest_attachment = course.attachments.order("created_on desc").first unless latest_attachment.nil? - latest_course_dynamics << {:type => 3,:time => latest_attachment.created_on,:message => l(:label_recently_updated_courseware,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 3,:time => latest_attachment.created_on,:message => l(:label_recently_updated_courseware,:locale => get_user_language(current_user))} end latest_bid = course.homeworks.order('updated_on DESC').first unless latest_bid.nil? - latest_course_dynamics << {:type => 4,:time => latest_bid.updated_on,:message => l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 4,:time => latest_bid.updated_on,:message => l(:label_recently_updated_homework,:locale => get_user_language(current_user))} end #每个作业中的最新留言 messages = [] @@ -382,7 +382,7 @@ class CoursesService end latest_bid_message = messages.first unless latest_bid_message.nil? - latest_course_dynamics << {:type => 4,:time => latest_bid_message.created_on,:message => l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 4,:time => latest_bid_message.created_on,:message => l(:label_recently_updated_message,:locale => get_user_language(current_user))} end #每个作业中学生最后提交的作业 homeworks = [] @@ -397,12 +397,12 @@ class CoursesService end latest_homework_attach = homeworks.first unless latest_homework_attach.nil? - latest_course_dynamics << {:type => 4,:time => latest_homework_attach.updated_at,:message => l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 4,:time => latest_homework_attach.updated_at,:message => l(:label_recently_updated_homework,:locale => get_user_language(current_user))} end latest_course_dynamics.sort!{|order,newer| newer[:time] <=> order[:time]} latest_course_dynamic = latest_course_dynamics.first unless latest_course_dynamic.nil? - result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => latest_course_dynamic[:type],:update_time => latest_course_dynamic[:time],:message => latest_course_dynamic[:message],:count => nil} + result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:course_time => course.time,:course_term => course.term,:type => latest_course_dynamic[:type],:update_time => latest_course_dynamic[:time],:message => latest_course_dynamic[:message],:count => nil} end end result.sort!{|order,newer| newer[:update_time] <=> order[:update_time]} diff --git a/app/services/users_service.rb b/app/services/users_service.rb index f75a84c5b..39ca37d26 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -193,7 +193,6 @@ class UsersService @current_user.save #raise @current_user.errors.full_message #return @current_user - else raise 'wrong password' end diff --git a/app/views/attachments/_form.html.erb b/app/views/attachments/_form.html.erb index 22dc447f2..872797d5c 100644 --- a/app/views/attachments/_form.html.erb +++ b/app/views/attachments/_form.html.erb @@ -49,7 +49,7 @@ <%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %> - <%= button_tag "浏览", :type=>"button", :onclick=>"_file.click()",:onmouseover => 'this.focus()' %> + <%= button_tag l(:button_browse), :type=>"button", :onclick=>"_file.click()",:onmouseover => 'this.focus()' %> <%= file_field_tag 'attachments[dummy][file]', :id => '_file', :class => 'file_selector', diff --git a/app/views/attachments/_form_course.html.erb b/app/views/attachments/_form_course.html.erb index b2089d629..43f99056b 100644 --- a/app/views/attachments/_form_course.html.erb +++ b/app/views/attachments/_form_course.html.erb @@ -38,7 +38,7 @@ <%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %> -<%= button_tag "浏览", :type=>"button", :onclick=>"_file.click()" %> +<%= button_tag l(:button_browse), :type=>"button", :onclick=>"_file.click()" %> <%= file_field_tag 'attachments[dummy][file]', :id => '_file', :class => 'file_selector', diff --git a/app/views/attachments/destroy.js.erb b/app/views/attachments/destroy.js.erb index 04cd4e02d..4893d22fe 100644 --- a/app/views/attachments/destroy.js.erb +++ b/app/views/attachments/destroy.js.erb @@ -1,7 +1,7 @@ $('#attachments_<%= j params[:attachment_id] %>').remove(); var count=$('#attachments_fields>span').length; if(count<=0){ - $("#upload_file_count").text("未上传文件"); + $("#upload_file_count").text(<%= l(:label_no_file_uploaded)%>); $(".remove_all").remove(); }else{ $("#upload_file_count").html("已上传"+""+count+""+"个文件"); diff --git a/app/views/boards/_project_show.html.erb b/app/views/boards/_project_show.html.erb index 1d9408e86..7ddd37ad6 100644 --- a/app/views/boards/_project_show.html.erb +++ b/app/views/boards/_project_show.html.erb @@ -24,10 +24,6 @@ -
-

<%= h @board.name %>

-
- <% if !User.current.logged? %>
<% if @project.project_type == 1 %> @@ -39,62 +35,52 @@
<% end %> -
- - 共有 - <%= link_to @topic_count,:controller => 'boards',:action => 'index' %> - 个贴子 - - <% if @project.enabled_modules.where("name = 'boards'").count > 0 && User.current.member_of?(@project) %> - - <%= link_to l(:label_message_new), - new_board_message_path(@board), - :class => 'icon icon-add', - :onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' if User.current.logged? %> - - <% end %> -
-
- <% if @topics.any? %> - <% @topics.each do |topic| %> - - - - - -
- <%= link_to image_tag(url_to_avatar(topic.author), :class => "avatar"), user_path(topic.author) %> - - - - - - - - - -
- <%= link_to h(topic.subject.truncate(40,ommision:'...')), board_message_path(@board, topic),title:topic.subject.to_s %> - - - - - - - - -
<%= link_to (topic.replies_count), board_message_path(@board, topic) %>
回答
-
- <%= authoring topic.created_on, topic.author %>
-
- <% end %> - + + +
+
+

<%= h @board.name %>

+
+
+
项目讨论区共有<%= @topic_count %>个帖子
+ <% if @project.enabled_modules.where("name = 'boards'").count > 0 && User.current.member_of?(@project) %> + <%= link_to l(:label_message_new), new_board_message_path(@board), + :class => 'problem_new_btn fl', + :onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' if User.current.logged? %> + <% end %> +
+
+ + <% if @topics.any? %> + <% @topics.each do |topic| %> +
+ + <%= link_to image_tag(url_to_avatar(topic.author), :class => "problem_pic talk_pic fl"), user_path(topic.author) %> + +
+
+ <%= link_to h(topic.subject), board_message_path(@board, topic), title:topic.subject.to_s, :class =>"problem_tit fl" %> + <% if topic.sticky? %> + 置顶 + <% end %> +
+
+ 由<%= link_to topic.author, user_path(topic.author), :class =>"problem_name" %> + 添加于<%= format_time topic.created_on %> +
+
+ 回复<%= link_to (topic.replies_count), board_message_path(@board, topic), :style =>"color:#fff;" %> +
+
+ <% end %> +
    + <%= pagination_links_full @topic_pages, @topic_count, :per_page_links => false, :remote => false, :flag => true %> +
<% else %>

<%= l(:label_no_data) %>

<% end %> + +
<% other_formats_links do |f| %> diff --git a/app/views/documents/_form.html.erb b/app/views/documents/_form.html.erb index 72361b9ab..50f47e5f7 100644 --- a/app/views/documents/_form.html.erb +++ b/app/views/documents/_form.html.erb @@ -11,8 +11,8 @@ <%= wikitoolbar_for 'document_description' %> -<% if @document.new_record? %> +

<%= render :partial => 'attachments/form', :locals => {:container => @document} %>

-<% end %> + diff --git a/app/views/documents/edit.html.erb b/app/views/documents/edit.html.erb index 8a6122f8c..5c6ed2383 100644 --- a/app/views/documents/edit.html.erb +++ b/app/views/documents/edit.html.erb @@ -1,4 +1,6 @@ -

<%=l(:label_document)%>

+
+

<%=l(:label_document_plural)%>

+
<%= labelled_form_for @document do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> diff --git a/app/views/files/_new.html.erb b/app/views/files/_new.html.erb index 6e8e806cf..76aab9a73 100644 --- a/app/views/files/_new.html.erb +++ b/app/views/files/_new.html.erb @@ -8,10 +8,10 @@ <% if versions.any? %> - + <% if attachmenttypes.any? %> @@ -31,14 +31,10 @@ <% end %>

<% end %> -

<%= l(:field_version) %>

<%= l(:field_version) %>

<%= select_tag "version_id", content_tag('option', '') + - options_from_collection_for_select(versions, "id", "name"), {style: 'width:100px'} %> + options_from_collection_for_select(versions, "id", "name"), {style: 'width:230px'} %> <%= l(:attachment_type) %>
- - +

<%=l(:label_attachment_plural)%><%= render :partial => 'attachments/form', locals: {project: project} %>

- -

<%=l(:label_attachment_plural)%><%= render :partial => 'attachments/form', locals: {project: project} %>

<%= submit_tag l(:button_add) %> <% end %> diff --git a/app/views/files/_project_file.html.erb b/app/views/files/_project_file.html.erb index aa597f3f2..b4d849cd6 100644 --- a/app/views/files/_project_file.html.erb +++ b/app/views/files/_project_file.html.erb @@ -1,7 +1,7 @@ <% attachmenttypes = @project.attachmenttypes %> <% sufixtypes = @project.contenttypes %>
-

资源共享区

+

<%= l(:lable_file_sharingarea) %>

@@ -16,12 +16,12 @@
diff --git a/app/views/files/_sort_by_attachtypel.html.erb b/app/views/files/_sort_by_attachtypel.html.erb index 5faa73b0f..27aaf2f3d 100644 --- a/app/views/files/_sort_by_attachtypel.html.erb +++ b/app/views/files/_sort_by_attachtypel.html.erb @@ -15,8 +15,8 @@ <%= sort_header_tag('filename', :caption => l(:field_filename), :scope => "col", :id => "vzebra-adventure" ,:class => "tableth") %> <%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc', :scope => "col", :id => "vzebra-children",:class => "tableth") %> - <%= sort_header_tag('attach_type', :caption => l(:attachment_browse), :default_order => 'desc', :scope => "col", :id => "vzebra-attachmenttype",:class => "tableth") %> - <%= content_tag('th', l(:attachment_sufix_browse), id: 'vzebra-contenttype', class: 'tableth', style: 'color: black')%> + <%= sort_header_tag('attach_type', :caption => l(:field_filecontenttype), :default_order => 'desc', :scope => "col", :id => "vzebra-attachmenttype",:class => "tableth") %> + <%= content_tag('th', l(:field_filetype), id: 'vzebra-contenttype', class: 'tableth', style: 'color: black')%> <%= sort_header_tag('field_file_dense', :caption => l(:field_file_dense), :default_order => 'desc', :scope => "col", :id => "vzebra-field_file_dense",:class => "tableth") %> <%= sort_header_tag('downloads', :caption => l(:field_downloads), :default_order => 'desc', :scope => "col", :id => "vzebra-action",:class => "tableth") %> <%= sort_header_tag('operation', :caption => "", :scope => "col", :id => "vzebra-children",:class => "tableth") %> @@ -76,7 +76,7 @@
diff --git a/app/views/issues/_action_menu.html.erb b/app/views/issues/_action_menu.html.erb index 61cea920c..bcd7b30c5 100644 --- a/app/views/issues/_action_menu.html.erb +++ b/app/views/issues/_action_menu.html.erb @@ -12,7 +12,7 @@ <% end %> -<%= watcher_link(@issue, User.current) %> + <%= link_to l(:button_copy), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy' if User.current.allowed_to?(:add_issues, @project) %> <%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'icon icon-del' if User.current.allowed_to?(:delete_issues, @project) %> diff --git a/app/views/issues/_newissue_index.html.erb b/app/views/issues/_newissue_index.html.erb deleted file mode 100644 index 4b282aa8f..000000000 --- a/app/views/issues/_newissue_index.html.erb +++ /dev/null @@ -1,139 +0,0 @@ -
-

问题跟踪

-
-
- <% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %> - - <% if User.current.member_of?(@project) %> - <%= link_to l(:label_issue_new), {:controller => 'issues', :action => 'new', :copy_from => nil}, :param => :project_id, :caption => :label_issue_new, - :html => {:accesskey => Redmine::AccessKeys.key_for(:new_issue)}, :class => 'icon icon-add' %> - <% end %> - <%= link_to l(:label_query), '#', :class => 'icon icon-help', - :onclick => '$("#custom_query").slideToggle(400); ' if true || User.current.logged? %> - - <% end %> - 问题总数:<%= @project.issues.count %> 未解决:<%= @project.issues.where('status_id in (1,2,4,6)').count %> -
-
- <% if !@query.new_record? && @query.editable_by?(User.current) %> - <%= link_to l(:button_edit), edit_query_path(@query), :class => 'icon icon-edit' %> - <%= delete_link query_path(@query) %> - <% end %> -
- -<% 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' %> - -<% if @query.valid? %> - <% if @issues.empty? %> -

- <%= l(:label_no_data) %> -

- <% else %> - <%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %> - - <% end %> -
- <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %> - <%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %> - <%= f.link_to 'PDF', :url => params %> - <% end %> -
- - - - -<% end %> - -<%= call_hook(:view_issues_index_bottom, {:issues => @issues, :project => @project, :query => @query}) %> - -<% content_for :sidebar do %> - <%= render :partial => 'issues/sidebar' %> -<% end %> - -<% content_for :header_tags do %> - <%= auto_discovery_link_tag(:atom, - {:query_id => @query, :format => 'atom', - :page => nil, :key => User.current.rss_key}, - :title => l(:label_issue_plural)) %> - <%= auto_discovery_link_tag(:atom, - {:controller => 'journals', :action => 'index', - :query_id => @query, :format => 'atom', - :page => nil, :key => User.current.rss_key}, - :title => l(:label_changes_details)) %> -<% end %> - -<%= context_menu issues_context_menu_path %> diff --git a/app/views/issues/index.html.erb b/app/views/issues/index.html.erb index b3750a770..4b282aa8f 100644 --- a/app/views/issues/index.html.erb +++ b/app/views/issues/index.html.erb @@ -1 +1,139 @@ -<%= render :partial => 'issues/newissue_index' %> \ No newline at end of file +
+

问题跟踪

+
+
+ <% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %> + + <% if User.current.member_of?(@project) %> + <%= link_to l(:label_issue_new), {:controller => 'issues', :action => 'new', :copy_from => nil}, :param => :project_id, :caption => :label_issue_new, + :html => {:accesskey => Redmine::AccessKeys.key_for(:new_issue)}, :class => 'icon icon-add' %> + <% end %> + <%= link_to l(:label_query), '#', :class => 'icon icon-help', + :onclick => '$("#custom_query").slideToggle(400); ' if true || User.current.logged? %> + + <% end %> + 问题总数:<%= @project.issues.count %> 未解决:<%= @project.issues.where('status_id in (1,2,4,6)').count %> +
+
+ <% if !@query.new_record? && @query.editable_by?(User.current) %> + <%= link_to l(:button_edit), edit_query_path(@query), :class => 'icon icon-edit' %> + <%= delete_link query_path(@query) %> + <% end %> +
+ +<% 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' %> + +<% if @query.valid? %> + <% if @issues.empty? %> +

+ <%= l(:label_no_data) %> +

+ <% else %> + <%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %> + + <% end %> +
+ <% other_formats_links do |f| %> + <%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %> + <%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %> + <%= f.link_to 'PDF', :url => params %> + <% end %> +
+ + + + +<% end %> + +<%= call_hook(:view_issues_index_bottom, {:issues => @issues, :project => @project, :query => @query}) %> + +<% content_for :sidebar do %> + <%= render :partial => 'issues/sidebar' %> +<% end %> + +<% content_for :header_tags do %> + <%= auto_discovery_link_tag(:atom, + {:query_id => @query, :format => 'atom', + :page => nil, :key => User.current.rss_key}, + :title => l(:label_issue_plural)) %> + <%= auto_discovery_link_tag(:atom, + {:controller => 'journals', :action => 'index', + :query_id => @query, :format => 'atom', + :page => nil, :key => User.current.rss_key}, + :title => l(:label_changes_details)) %> +<% end %> + +<%= context_menu issues_context_menu_path %> diff --git a/app/views/issues/index.js.erb b/app/views/issues/index.js.erb deleted file mode 100644 index 866882053..000000000 --- a/app/views/issues/index.js.erb +++ /dev/null @@ -1 +0,0 @@ -$('#content').html('<%= escape_javascript(render :partial => 'issues/newissue_index') %>'); diff --git a/app/views/issues/show.html.erb b/app/views/issues/show.html.erb index 69abf79a6..38afc672d 100644 --- a/app/views/issues/show.html.erb +++ b/app/views/issues/show.html.erb @@ -1,181 +1,181 @@ -
-

<%= l(:label_issue_plural) %>

-
-<%# html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> -<% html_title "#{@issue.tracker.name} #{@issue.source_from}'#'#{@issue.project_index}: #{@issue.subject}" %> - -<%= render :partial => 'action_menu' %> - -

- <%= issue_heading(@issue) %> -

- - - -
- <% if @prev_issue_id || @next_issue_id %> - - <% end %> - - - -
-<%= render_issue_subject_with_tree(@issue) %> -
- - - - <%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @issue,:show_flag => true,:user_id =>User.current.id,:horizontal => false}%> - - -

- <%= authoring @issue.created_on, @issue.author %>. - <% if @issue.created_on != @issue.updated_on %> - <%= l(:label_updated_time, time_tag(@issue.updated_on)).html_safe %>. - <% end %> -

- -
- <%= render :partial => 'tags/tag', :locals => {:obj => @issue,:object_flag => "3" }%> -
- -<%= issue_fields_rows do |rows| - rows.left l(:field_status), h(@issue.status.name), :class => 'status' - rows.left l(:field_priority), h(@issue.priority.name), :class => 'priority' - - unless @issue.disabled_core_fields.include?('assigned_to_id') - #modified by nie - #modified by huang - rows.left l(:field_assigned_to), (image_tag url_to_avatar(@issue.assigned_to(@user)), :class => 'avatar').to_s.html_safe + (@issue.assigned_to ? link_to_user(@issue.assigned_to) : "-"), :class => 'assigned-to' - end - # end huang - unless @issue.disabled_core_fields.include?('category_id') - rows.left l(:field_category), h(@issue.category ? @issue.category.name : "-"), :class => 'category' - end - unless @issue.disabled_core_fields.include?('fixed_version_id') - rows.left l(:field_fixed_version), (@issue.fixed_version ? link_to_version(@issue.fixed_version) : "-"), :class => 'fixed-version' - end - - unless @issue.disabled_core_fields.include?('start_date') - rows.right l(:field_start_date), format_date(@issue.start_date), :class => 'start-date' - end - unless @issue.disabled_core_fields.include?('due_date') - rows.right l(:field_due_date), format_date(@issue.due_date), :class => 'due-date' - end - unless @issue.disabled_core_fields.include?('done_ratio') - rows.right l(:field_done_ratio), progress_bar(@issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%"), :class => 'progress' - end - unless @issue.disabled_core_fields.include?('estimated_hours') - unless @issue.estimated_hours.nil? - rows.right l(:field_estimated_hours), l_hours(@issue.estimated_hours), :class => 'estimated-hours' - end - end - if User.current.allowed_to?(:view_time_entries, @project) - rows.right l(:label_spent_time), (@issue.total_spent_hours > 0 ? link_to(l_hours(@issue.total_spent_hours), project_issue_time_entries_path(@project, @issue)) : "-"), :class => 'spent-time' - end -end %> -<%= render_custom_fields_rows(@issue) %> -<%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %> -
-woca -<% if @issue.description? || @issue.attachments.any? -%> -
-<% if @issue.description? %> -
-
- <%= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %> -
- -

<%=l(:field_description)%>

-
- <%= textilizable @issue, :description, :attachments => @issue.attachments %> -
-
-<% end %> -<%= link_to_attachments @issue, :thumbnails => true %> -<% end -%> - -<%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %> - -<% if false # !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %> -
- -
-
- <%= link_to_new_subtask(@issue) if User.current.allowed_to?(:manage_subtasks, @project) %> -
- -

<%=l(:label_subtask_plural)%>

-<%= render_descendants_tree(@issue) unless @issue.leaf? %> -
-<% end %> - -<% if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %> -
-
-<%= render :partial => 'relations' %> -
-<% end %> - -
- -<% if @changesets.present? %> -
-

<%=l(:label_associated_revisions)%>

-<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %> -
-<% end %> - -<% if @journals.present? %> -
-

<%=l(:label_history)%>

-<%= render :partial => 'history', :locals => { :issue => @issue, :journals => @journals } %> -
-<% end %> - - -
-<%= render :partial => 'action_menu' %> - -
-<% if @issue.editable? %> -
-

<%= l(:button_update) %>

- <%= render :partial => 'edit' %> -
-<% end %> - -<% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %> - <%= f.link_to 'PDF' %> -<% end %> - - -<% content_for :sidebar do %> - <%= render :partial => 'issues/sidebar' %> - - <% if User.current.allowed_to?(:add_issue_watchers, @project) || - (@issue.watchers.present? && User.current.allowed_to?(:view_issue_watchers, @project)) %> -
- <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %> -
- <% end %> -<% end %> - -<% content_for :header_tags do %> - <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %> -<% end %> - -<%= context_menu issues_context_menu_path %> +
+

<%= l(:label_issue_plural) %>

+
+<%# html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> +<% html_title "#{@issue.tracker.name} #{@issue.source_from}'#'#{@issue.project_index}: #{@issue.subject}" %> + +<%= render :partial => 'action_menu' %> + +

+ <%= issue_heading(@issue) %> +

+ + + +
+ <% if @prev_issue_id || @next_issue_id %> + + <% end %> + + + +
+<%= render_issue_subject_with_tree(@issue) %> +
+ + + + <%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @issue,:show_flag => true,:user_id =>User.current.id,:horizontal => false}%> + + +

+ <%= authoring @issue.created_on, @issue.author %>. + <% if @issue.created_on != @issue.updated_on %> + <%= l(:label_updated_time, time_tag(@issue.updated_on)).html_safe %>. + <% end %> +

+ +
+ <%= render :partial => 'tags/tag', :locals => {:obj => @issue,:object_flag => "3" }%> +
+ +<%= issue_fields_rows do |rows| + rows.left l(:field_status), h(@issue.status.name), :class => 'status' + rows.left l(:field_priority), h(@issue.priority.name), :class => 'priority' + + unless @issue.disabled_core_fields.include?('assigned_to_id') + #modified by nie + #modified by huang + rows.left l(:field_assigned_to), (image_tag url_to_avatar(@issue.assigned_to(@user)), :class => 'avatar').to_s.html_safe + (@issue.assigned_to ? link_to_user(@issue.assigned_to) : "-"), :class => 'assigned-to' + end + # end huang + unless @issue.disabled_core_fields.include?('category_id') + rows.left l(:field_category), h(@issue.category ? @issue.category.name : "-"), :class => 'category' + end + unless @issue.disabled_core_fields.include?('fixed_version_id') + rows.left l(:field_fixed_version), (@issue.fixed_version ? link_to_version(@issue.fixed_version) : "-"), :class => 'fixed-version' + end + + unless @issue.disabled_core_fields.include?('start_date') + rows.right l(:field_start_date), format_date(@issue.start_date), :class => 'start-date' + end + unless @issue.disabled_core_fields.include?('due_date') + rows.right l(:field_due_date), format_date(@issue.due_date), :class => 'due-date' + end + unless @issue.disabled_core_fields.include?('done_ratio') + rows.right l(:field_done_ratio), progress_bar(@issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%"), :class => 'progress' + end + unless @issue.disabled_core_fields.include?('estimated_hours') + unless @issue.estimated_hours.nil? + rows.right l(:field_estimated_hours), l_hours(@issue.estimated_hours), :class => 'estimated-hours' + end + end + if User.current.allowed_to?(:view_time_entries, @project) + rows.right l(:label_spent_time), (@issue.total_spent_hours > 0 ? link_to(l_hours(@issue.total_spent_hours), project_issue_time_entries_path(@project, @issue)) : "-"), :class => 'spent-time' + end +end %> +<%= render_custom_fields_rows(@issue) %> +<%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %> +
+ +<% if @issue.description? || @issue.attachments.any? -%> +
+<% if @issue.description? %> +
+
+ <%= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %> +
+ +

<%=l(:field_description)%>

+
+ <%= textilizable @issue, :description, :attachments => @issue.attachments %> +
+
+<% end %> +<%= link_to_attachments @issue, :thumbnails => true %> +<% end -%> + +<%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %> + +<% if false # !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %> +
+ +
+
+ <%= link_to_new_subtask(@issue) if User.current.allowed_to?(:manage_subtasks, @project) %> +
+ +

<%=l(:label_subtask_plural)%>

+<%= render_descendants_tree(@issue) unless @issue.leaf? %> +
+<% end %> + +<% if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %> +
+
+<%= render :partial => 'relations' %> +
+<% end %> + +
+ +<% if @changesets.present? %> +
+

<%=l(:label_associated_revisions)%>

+<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %> +
+<% end %> + +<% if @journals.present? %> +
+

<%=l(:label_history)%>

+<%= render :partial => 'history', :locals => { :issue => @issue, :journals => @journals } %> +
+<% end %> + + +
+<%= render :partial => 'action_menu' %> + +
+<% if @issue.editable? %> +
+

<%= l(:button_update) %>

+ <%= render :partial => 'edit' %> +
+<% end %> + +<% other_formats_links do |f| %> + <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %> + <%= f.link_to 'PDF' %> +<% end %> + + +<% content_for :sidebar do %> + <%= render :partial => 'issues/sidebar' %> + + <% if User.current.allowed_to?(:add_issue_watchers, @project) || + (@issue.watchers.present? && User.current.allowed_to?(:view_issue_watchers, @project)) %> +
+ <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %> +
+ <% end %> +<% end %> + +<% content_for :header_tags do %> + <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %> +<% end %> + +<%= context_menu issues_context_menu_path %> diff --git a/app/views/layouts/base_contest.html.erb b/app/views/layouts/base_contest.html.erb index a11defebf..42a7eccd1 100644 --- a/app/views/layouts/base_contest.html.erb +++ b/app/views/layouts/base_contest.html.erb @@ -194,7 +194,7 @@ <% if show_more_fans?(@bid) %> - <%= link_to l(:label_more), :controller => 'bids', :action => 'show_bid_user'%> + <%= link_to l(:button_more), :controller => 'bids', :action => 'show_bid_user'%> <% end %> @@ -217,7 +217,7 @@ <% if show_more_bid_project?(@bid) %> - <%= link_to l(:label_more), :controller => 'bids', :action => 'show_project'%> + <%= link_to l(:button_more), :controller => 'bids', :action => 'show_project'%> <% end %> @@ -244,7 +244,7 @@ <% if show_more_participate?(@bid) %> - <%= link_to l(:label_more), :controller => "bids", :action => "show_participator"%> + <%= link_to l(:button_more), :controller => "bids", :action => "show_participator"%> <% end %> diff --git a/app/views/layouts/base_newcontest.html.erb b/app/views/layouts/base_newcontest.html.erb index f3c598598..26015d536 100644 --- a/app/views/layouts/base_newcontest.html.erb +++ b/app/views/layouts/base_newcontest.html.erb @@ -215,7 +215,7 @@ <%= l(:label_x_followers, :count => @contest.watcher_users.count) %> <% if show_more_fans?(@contest) %> - <%= link_to l(:label_more), show_contest_user_contest_path(@contest) %> + <%= link_to l(:button_more), show_contest_user_contest_path(@contest) %> <% end %>
diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 3098a5cda..9c999aa05 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -93,7 +93,7 @@ <%= image_tag(url_to_avatar(@project), :style => 'width:61px; height:61px;') %>
- ID:<%= @project.id %> + <%= l(:label_project_id)%><%= @project.id %>
@@ -126,7 +126,9 @@ <%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :style => "color:#3CA5C6;font-weight:bold" %>) | <%= l(:project_module_attachments) %>( - <%= link_to "#{@project.attachments.count}", project_files_path(@project), :style => "color:#3CA5C6;font-weight:bold" %>)
+ <% attaments_num = @project.attachments.count+Attachment.where(["`container_type` = 'Version' and `container_id` in (?)",@project.versions.map{ |v| v.id}]).all.count %> + <%= link_to "#{attaments_num}", project_files_path(@project), :style => "color:#3CA5C6;font-weight:bold" %>
) +
@@ -168,9 +170,9 @@ <% end%> <% unless @project.enabled_modules.where("name = 'files'").empty? %> <% end %> - + diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb index d68e6abe5..213c9ed07 100644 --- a/app/views/layouts/base_users.html.erb +++ b/app/views/layouts/base_users.html.erb @@ -258,10 +258,10 @@ <% else %> - <%= l(:label_identity)%>: + <%= l(:label_identity)%>: - <%= l(:label_account_student) %> + <%= l(:label_account_identity_student) %> @@ -269,10 +269,10 @@ <% elsif @user.user_extensions.identity == 3 %> - <%= l(:label_identity)%>: + <%= l(:label_identity)%>: - <%= l(:label_account_developer) %> + <%= l(:label_account_identity_developer) %> <% end %> @@ -295,7 +295,7 @@ <% if show_more_watchers?(@user) %>
- <%= link_to l(:label_more), :controller => "users", :action => "user_watchlist"%> + <%= link_to l(:button_more), :controller => "users", :action => "user_watchlist"%>
<% end %> @@ -319,7 +319,7 @@ <% if show_more_fans?(@user) %>
- <%= link_to l(:label_more), :controller => "users", :action => "user_fanslist"%> + <%= link_to l(:button_more), :controller => "users", :action => "user_fanslist"%>
<% end %> diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb index c5be3f4fd..c24ab84e7 100644 --- a/app/views/layouts/mailer.html.erb +++ b/app/views/layouts/mailer.html.erb @@ -41,7 +41,8 @@ a:hover.mail_reply{ background:#06a9bc; text-decoration:none;}
-

<%= l(:mail_issue_greetings)%>

+ +
<%= yield %>
diff --git a/app/views/messages/_project_show.html.erb b/app/views/messages/_project_show.html.erb index b0a593180..01465188c 100644 --- a/app/views/messages/_project_show.html.erb +++ b/app/views/messages/_project_show.html.erb @@ -57,6 +57,9 @@
+
+

<%= h @board.name %>

+
<%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @topic,:show_flag => true,:user_id =>User.current.id,:horizontal => true}%> diff --git a/app/views/projects/_member_list.html.erb b/app/views/projects/_member_list.html.erb index 09173b835..ca42e1c86 100644 --- a/app/views/projects/_member_list.html.erb +++ b/app/views/projects/_member_list.html.erb @@ -3,7 +3,7 @@
<% next if member.new_record? %> <% unless member.created_on.nil? %> - <%= content_tag "p", "#{format_date(member.created_on)}#{l(:label_member_since)}", :class => "float_right member_since" %> + <%= content_tag "p", (User.current.language == ""|| User.current.language == "zh")?("#{format_date(member.created_on)}"+" "+"#{l(:label_member_since)}"):("#{l(:label_member_since)}"+" "+"#{format_date(member.created_on)}"), :class => "float_right member_since" %> <% end %> <%= member.user.nil? ? '' : (image_tag(url_to_avatar(member.user), :class => 'avatar')) %> <%= content_tag "div", link_to(member.user.name, user_path(member.user)), :class => "nomargin avatar_name" %> diff --git a/app/views/projects/_tools_expand.html.erb b/app/views/projects/_tools_expand.html.erb index b6e5f8c0d..f62b0822a 100644 --- a/app/views/projects/_tools_expand.html.erb +++ b/app/views/projects/_tools_expand.html.erb @@ -42,7 +42,7 @@
  • <% unless @project.enabled_modules.where("name = 'dts'").empty? %> - <%= link_to l(:label_module_share) ,share_show_path(@project) %> + <%= link_to l(:project_module_dts) ,share_show_path(@project) %> <% end %>
  • diff --git a/app/views/projects/invite_members_by_mail.html.erb b/app/views/projects/invite_members_by_mail.html.erb index 63f69e120..c222bece1 100644 --- a/app/views/projects/invite_members_by_mail.html.erb +++ b/app/views/projects/invite_members_by_mail.html.erb @@ -45,6 +45,7 @@
    +

    <%= l(:label_invite_new_user)%>

    <%= l(:label_invite_email_tips)%> @@ -62,5 +63,6 @@ <%#= submit_tag '免费发送', :style => "display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;" %> <% end %> +

    \ No newline at end of file diff --git a/app/views/projects/watcherlist.html.erb b/app/views/projects/watcherlist.html.erb index 1acefe092..0a7a222d4 100644 --- a/app/views/projects/watcherlist.html.erb +++ b/app/views/projects/watcherlist.html.erb @@ -17,7 +17,7 @@

    <% unless user.memberships.empty? %> - <%= l(:label_contribute_to, :project_count => "#{user.memberships.count}") %> + <%= l(:label_contribute_to, :count => user.memberships.count) %> <% for member in user.memberships %> <%= link_to_project(member.project) %><%= (user.memberships.last == member) ? '' : ',' %> <% end %> @@ -25,7 +25,7 @@

    - <%= l(:label_user_joinin) %><%= format_date(user.created_on) %> + <%= l(:label_user_joinin) %> <%= format_date(user.created_on) %> diff --git a/app/views/tags/_project_tag.html.erb b/app/views/tags/_project_tag.html.erb index 8694d69ca..d10506d0d 100644 --- a/app/views/tags/_project_tag.html.erb +++ b/app/views/tags/_project_tag.html.erb @@ -1,32 +1,30 @@ -
    +
    <%= render :partial => "tags/tag_name",:locals => {:obj => obj,:non_list_all => false ,:object_flag => object_flag} %>
    +
    <% if User.current.logged? %> <%= toggle_link (l(:label_add_tag)), 'put-tag-form', {:focus => 'tags_name'} %> <% end %> + - +
    diff --git a/app/views/tags/_show_attachments.html.erb b/app/views/tags/_show_attachments.html.erb index a76211fc6..ca6a2dd7a 100644 --- a/app/views/tags/_show_attachments.html.erb +++ b/app/views/tags/_show_attachments.html.erb @@ -24,19 +24,19 @@    <%= file.description %>
    - <%= l('label_attachment_category')%> + <%= l('attachment.category')%> <%=result_come_from file%>
    - <%= l('label_attachment_download_num')%> + <%= l('attachment.download_num')%> <%= file.downloads%>| - <%= l('label_attachment_size')%> + <%= l('attachment.size')%> <%= number_to_human_size(file.filesize) %>| - <%= l('label_attachment_sharer')%> + <%= l('attachment.sharer')%> <%= link_to file.author, user_path(file.author), target: "_blank" unless file.author.blank? %> | - <%= l('label_attachment_upload_time')%> + <%= l('attachment.upload_time')%> <%= format_time(file.created_on) %>
    diff --git a/app/views/tags/_tag_name.html.erb b/app/views/tags/_tag_name.html.erb index 225a09aec..b97012723 100644 --- a/app/views/tags/_tag_name.html.erb +++ b/app/views/tags/_tag_name.html.erb @@ -31,7 +31,12 @@ <% if @tags.size > 0 %> <% @tags.each do |tag| %> -
    + + <% if object_flag == '2' %> + + <%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %> + <% else %> +
    <%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %> @@ -43,13 +48,6 @@ :taggable_id => obj.id, :taggable_type => object_flag %> <% end %> - <% when '2' %> - <% if (ProjectInfo.find_by_project_id(obj.id)).try(:user_id) == User.current.id %> - - <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag, - :taggable_id => obj.id, :taggable_type => object_flag %> - - <% end %> <% when '3' %> <% if (ProjectInfo.find_by_project_id(obj.project_id)).try(:user_id) == User.current.id %> @@ -101,6 +99,7 @@ <% end %>
    - <% end %> + <% end %> + <% end %> <% end %> <% end %> \ No newline at end of file diff --git a/app/views/users/_my_joinedcourse.html.erb b/app/views/users/_my_joinedcourse.html.erb index e616004e6..373ed9234 100644 --- a/app/views/users/_my_joinedcourse.html.erb +++ b/app/views/users/_my_joinedcourse.html.erb @@ -16,8 +16,8 @@ diff --git a/app/views/welcome/_hot_projects_list.html.erb b/app/views/welcome/_hot_projects_list.html.erb index d14a6901b..ff41fa532 100644 --- a/app/views/welcome/_hot_projects_list.html.erb +++ b/app/views/welcome/_hot_projects_list.html.erb @@ -10,7 +10,7 @@ <% end %> <%= link_to( project.name, project_path(project.id), :class => "d-g-blue d-p-project-name",:title => "#{project.name}" )%> - (<%= link_to l(:label_project_member_amount, :count=>projectCount(project)), project_member_path(project) ,:course =>'0' %>) + (<%= link_to l(:label_project_member_amount, :count => projectCount(project)), project_member_path(project) ,:course =>'0' %>)
    <%=project.description.truncate(90, omission: '...')%> diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 51139ac89..ba0002eff 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -115,7 +115,7 @@

    <%= l(:lable_bar_active)%> <%= link_to l(:label_my_question) , newbie_send_path, {:class => 'orangeButton idea_btn', :style => "color: #EEEEEE" }%> <%= link_to l(:label_my_feedback) , suggestion_send_path, {:class => 'orangeButton idea_btn', :style => "color: #EEEEEE" }%>

    - <%= link_to l(:label_more), forums_path %> + <%= link_to l(:button_more), forums_path %>
    <% topics = find_new_forum_topics(12) %> diff --git a/config/locales/commons/en.yml b/config/locales/commons/en.yml index 5998ee875..296e8bc30 100644 --- a/config/locales/commons/en.yml +++ b/config/locales/commons/en.yml @@ -138,10 +138,7 @@ en: circular_dependency: "This relation would create a circular dependency" cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" - attachment_all: "All" - attachment_browse: "Attachment Content Browse" - attachment_sufix_browse: "Attachment Type Browse" - attachment_type: "Attachment Type" + general_text_No: 'No' general_text_Yes: 'Yes' general_text_no: 'no' @@ -166,7 +163,6 @@ en: label_requirement: Calls label_forum: Forum label_contest: Contest - @@ -189,7 +185,7 @@ en: text_are_you_sure: Are you sure? #js 提示 - + label_no_data: No data to display # 项目、课程、用户公用 label_settings: Settings label_information_plural: Information @@ -206,11 +202,12 @@ en: button_cancel: Cancel label_submit: Submit button_project_tags_add: Add - label_more: "More>>" button_download: Download + button_more: "More»" button_delete: Delete - - + button_unfollow: Unfollow + button_follow: Follow + button_browse: Browse # diff --git a/config/locales/commons/zh.yml b/config/locales/commons/zh.yml index a0eb6e74a..efb08ec6e 100644 --- a/config/locales/commons/zh.yml +++ b/config/locales/commons/zh.yml @@ -147,10 +147,7 @@ zh: cant_link_an_issue_with_a_descendant: "问题不能关联到它的子任务" groupname_repeat: "该班名已存在" - attachment_all: "全部" - attachment_sufix_browse: "文件类型" - attachment_browse: "内容类型" - attachment_type: '分类' + general_text_No: '否' general_text_Yes: '是' general_text_no: '否' @@ -190,7 +187,10 @@ zh: text_are_you_sure: 您确定要删除吗? #js 提示 - + + + + label_no_data: 没有任何数据可供显示 # 项目、课程、用户公用 label_settings: 配置 label_information_plural: 信息 @@ -207,10 +207,14 @@ zh: button_cancel: 取消 label_submit: 提交 button_project_tags_add: 增加 - label_more: "更多>>" button_download: 下载 - button_more: 更多 + button_more: "更多»" button_delete: 删除 + button_unfollow: 取消关注 + button_follow: 关注 + button_watch: 跟踪 + button_unwatch: 取消跟踪 + button_browse: 浏览 # diff --git a/config/locales/contests/en.yml b/config/locales/contests/en.yml index e124e3f1a..1c2784050 100644 --- a/config/locales/contests/en.yml +++ b/config/locales/contests/en.yml @@ -2,3 +2,13 @@ en: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr + # + # 竞赛托管平台 + # + # 主页 + # + label_current_hot_contest: Latest Hot Competition + label_current_attendingcontest_work: Latest Competition Work + label_issue_feedback_activities: Question&Feedback + label_more_information: More... + label_release_time: Release-time \ No newline at end of file diff --git a/config/locales/contests/zh.yml b/config/locales/contests/zh.yml index 08115110b..1c4c4d126 100644 --- a/config/locales/contests/zh.yml +++ b/config/locales/contests/zh.yml @@ -3,4 +3,15 @@ # by tsechingho (http://github.com/tsechingho) zh: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) - direction: ltr \ No newline at end of file + direction: ltr + + # + # 竞赛托管平台 + # + # 主页 + # + label_current_hot_contest: 最新热门竞赛 + label_current_attendingcontest_work: 最新参赛作品 + label_issue_feedback_activities: 问题和反馈动态 + label_more_information: 更多>> + label_release_time: 发布时间 diff --git a/config/locales/en.yml b/config/locales/en.yml index f0f953f11..910eb0f98 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -71,10 +71,9 @@ en: field_summary: Summary field_job_category: Job category # added by bai - field_filename: File - field_file_dense: File Dense - field_filesize: Size - field_downloads: Downloads + + + field_author: Author field_created_on: Created field_closed_on: Closed @@ -108,7 +107,6 @@ en: field_last_login_on: Last connection field_effective_date: Date - field_version: Version field_type: Type field_host: Host field_port: Port @@ -340,8 +338,7 @@ en: label_create_new_projects: Create a project label_work_scores_people: The total number of users given scores label_project_grade: Score - label_user_for_project_grade: Score - label_relation_files: Select an existing resource + # Personal signature tips @@ -478,13 +475,11 @@ en: label_text: Long text label_attribute: Attribute label_attribute_plural: Attributes - label_no_data: No data to display label_change_status: Change status label_history: History label_attachment: Files - label_attachment_new: New file label_attachment_delete: Delete file - label_attachment_plural: Files + label_file_added: File added label_report: Report label_report_plural: Reports @@ -614,12 +609,10 @@ en: label_latest_revision_plural: Latest revisions label_view_revisions: View revisions label_view_all_revisions: View all revisions - label_max_size: Maximum size label_sort_highest: Move to top label_sort_higher: Move up label_sort_lower: Move down label_sort_lowest: Move to bottom - label_roadmap: Roadmap label_roadmap_due_in: "Due in %{value}" label_roadmap_overdue: "%{value} late" label_roadmap_no_issues: No issues for this version @@ -724,7 +717,6 @@ en: label_plugins: Plugins label_ldap_authentication: LDAP authentication label_downloads_abbr: D/L - label_optional_description: Optional description label_add_another_file: Add another file label_preferences: Preferences label_chronological_order: In chronological order @@ -794,7 +786,7 @@ en: label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects label_gantt_progress_line: Progress line - label_files_filter: Files Filter: + button_check_all: Check all button_uncheck_all: Uncheck all @@ -933,9 +925,7 @@ en: text_turning_multiple_off: "If you disable multiple values, multiple values will be removed in order to preserve only one value per item." text_applied_project: "User %{id} Apply Join Project %{project}" - default_role_manager: Manager - default_role_developer: Developer - default_role_reporter: Reporter + default_tracker_bug: Bug default_tracker_feature: Feature default_tracker_support: Support @@ -1019,8 +1009,7 @@ en: #end by huang #added by liuping - button_unfollow: Unfollow - button_follow: Follow + label_delete_confirm: Confirm delete? label_exit_project: Exit Project @@ -1034,7 +1023,7 @@ en: label_leave_message: Message content label_message: message board field_add: Add before %{time} - button_more: More + label_bidding_project: projects button_bidding: I will participate in it @@ -1067,11 +1056,6 @@ en: zero: Follower one: Follower other: Followers - #end - label_member_since: joined - label_contribute_to: Participates %{project_count} projects: - #modify by men - #end label_total_commit: Totally %{total_commit} commits # modified by bai #modify by men @@ -1084,7 +1068,7 @@ en: label_type_as: Type as label_status_as: Status as label_priority_as: Priority as - label_member_list: Member list + label_author_name: Posted by %{author_name} label_comments_count: (%{count} comments) label_post_on: posts on @@ -1440,13 +1424,7 @@ en: label_your_course: your course label_have_message: have a new message lable_not_receive_mail: Click here don't receive email form site! -#added by linchun as competition# - label_current_hot_contest: Latest Hot Competition - label_current_attendingcontest_work: Latest Competition Work - label_issue_feedback_activities: Question&Feedback - label_more_information: More... - label_release_time: Release-time label_weixin: WeiXin @@ -1581,7 +1559,6 @@ en: label_trustie_team: The Trustie development team label_memos_max_length: The content of the post up to 65535 characters in length label_forums_max_length: Post Bar describing the maximum length of 65535 characters - label_unknow_type: Unknow type review_assignments: Review assignments label_my_school: My school @@ -1606,3 +1583,5 @@ en: label_recently_updated_message: Recently updated the message label_recently_updated_courseware: Recently updated the courseware label_no_courses: You do not participate in any course, please search the curriculum, course, or create a course! + label_commit_failed: commit failed + #api end diff --git a/config/locales/projects/en.yml b/config/locales/projects/en.yml index d3743a247..5aca81426 100644 --- a/config/locales/projects/en.yml +++ b/config/locales/projects/en.yml @@ -19,7 +19,9 @@ en: # lable_hot_projects: Hot Projects label_private: private - label_project_member_amount: "%{count} members" + label_project_member_amount: + one: "%{count} member" + other: "%{count} members" label_project_score_tips: "Considering all activities of the project, project's score reflects the activity level of project" label_project_score: Score @@ -29,7 +31,7 @@ en: # # 左边栏 # - label_id: "ID:" + label_project_id: "Projcet ID:" label_apply_project: Apply to Join label_exit_project: Exit @@ -48,24 +50,88 @@ en: project_module_boards: Forums project_module_boards_post: New Post - # 与课程公用资源库 + project_module_files: Resources + label_upload_files: New File project_module_repository: Repository project_module_create_repository: New Repository - + label_project_more: More project_module_news: News project_module_wiki: Wiki project_module_code_review: Code Review project_module_calendar: Calendar project_module_gantt: Gantt project_module_documents: Documents - label_project_tool_response: Response - label_module_share: DTS Test Tool + label_roadmap: Roadmap + label_project_tool_response: Feedback + project_module_dts: DTS Test Tool label_project_overview: "Profile:" label_expend_information: More Information + # + # 项目托管平台 + # + # 项目成员 + # + label_member_list: Members + + label_member_since: "joined at" + label_user_for_project_grade: Score + + default_role_manager: Manager + default_role_developer: Developer + default_role_reporter: Reporter + + + # + # 项目托管平台 + # + # 关注者列表 + # + label_followers: Followers + label_contribute_to: + one: "Participates %{count} project—" + other: "Participates %{count} projects—" + + + # + # 项目托管平台 + # + # 资源库 + # + lable_file_sharingarea: Resources + + # 资源库(附件)公用 + label_relation_files: Select an existing resource + label_search_by_keyword: "Search by keywords" + label_files_filter: "Files Filter:" + + attachment_all: "All" + attachment_browse: "Attachment Content Browse" + attachment_sufix_browse: "Attachment Type Browse" + label_unknow_type: Unknow type + + field_filename: File + field_filesize: Size + field_filecontenttype: Content + field_filetype: File Typ + field_downloads: Downloads + field_file_dense: Dense + + # 资源库(附件)公用 > 上传文件 + label_attachment_new: New file + field_version: Version + attachment_type: "Attachment Type" + + label_attachment_plural: Files + label_no_file_uploaded: No file uploaded + label_max_size: Maximum size + + label_optional_description: Description + label_file_count: "%{count} files were uploaded successfully" + # # 项目托管平台 # @@ -80,6 +146,20 @@ en: # + # + # 项目托管平台 + # + # 资源库 + # + + + # + # 项目托管平台 + # + # 版本库 + # + + # # 项目托管平台 # @@ -95,10 +175,8 @@ en: project_module_issue_tracking: Issue tracking project_module_time_tracking: Time tracking project_module_course: 课程 - project_module_files: Files project_module_boards: Forums - # # 项目托管平台 # @@ -122,7 +200,7 @@ en: # # 项目托管平台 # - # 新建项目 + # 新建项目/项目配置 >信息 # label_project_new_description: "A project can be used to do anything that requires distributed collaboration." field_name: Name @@ -177,6 +255,10 @@ en: - + # + # 项目托管平台 + # + # 项目得分 + # label_approve: Approve label_refusal: Refusal \ No newline at end of file diff --git a/config/locales/projects/zh.yml b/config/locales/projects/zh.yml index 2e6c06366..bd547c37e 100644 --- a/config/locales/projects/zh.yml +++ b/config/locales/projects/zh.yml @@ -22,7 +22,9 @@ zh: # lable_hot_projects: 热门项目 label_private: 私有 - label_project_member_amount: "%{count}人" + label_project_member_amount: + one: "%{count}人" + other: "%{count}人" label_project_score_tips: 项目得分,综合考虑了项目的各项活动,反映了该项目的活跃程度 label_project_score: 项目评分 @@ -32,13 +34,14 @@ zh: # # 左边栏 # - label_id: "ID:" + label_project_id: "项目ID:" label_apply_project: 申请加入 label_exit_project: 退出项目 label_apply_project_waiting: 已处理申请,请等待管理员审核 label_unapply_project: 取消申请 - + lable_sure_exit_project: 是否确认退出该项目 + label_member: 成员 project_module_attachments: 资源 @@ -49,22 +52,119 @@ zh: project_module_boards: 讨论区 project_module_boards_post: 发帖 - # 与课程公用资源库 + project_module_files: 资源库 project_module_repository: 版本库 project_module_create_repository: 创建版本库 + label_project_more: 更多 project_module_news: 新闻 project_module_wiki: Wiki project_module_code_review: 代码审查 project_module_calendar: 日历 project_module_gantt: 甘特图 project_module_documents: 文档 + label_roadmap: 里程碑 #版本路线图 + project_module_dts: DTS测试工具 label_project_tool_response: 用户反馈 - label_module_share: DTS测试工具 label_project_overview: "项目简介:" label_expend_information: 展开更多信息 + + # + # 项目托管平台 + # + # 项目成员 + # + label_member_list: 成员列表 + + label_member_since: "加入" + label_user_for_project_grade: 个人得分 + + default_role_manager: 管理人员 + default_role_developer: 开发人员 + default_role_reporter: 报告人员 + + + # + # 项目托管平台 + # + # 关注者列表 + # + label_followers: 关注 + label_contribute_to: + one: "参与了 %{count}个项目:" + other: "参与了 %{count}个项目:" + + + # + # 项目托管平台 + # + # 资源库 + # + lable_file_sharingarea: 资源共享区 + + label_upload_files: 上传文件 + + + # 资源库(附件)公用 > 关联资源 + label_relation_files: 关联已有资源 + label_search_by_keyword: "按关键字搜索:" + label_files_filter: "资源过滤:" + + field_filename: 文件 + field_filesize: 大小 + field_filecontenttype: 内容分类 + field_filetype: 文件格式 + field_file_dense: 是否公开 + field_downloads: 下载次数 + + attachment_sufix_browse: "文件类型" + attachment_browse: "内容类型" + attachment_all: "全部" + label_unknow_type: 未知类型 + + # 资源库(附件)公用 > 上传文件 + label_attachment_new: 新建文件 + field_version: 版本 + attachment_type: "分类" + + label_attachment_plural: 文件 + label_no_file_uploaded: 未上传文件 + label_max_size: 最大文件大小 + + label_optional_description: 可选的描述 + + + # + # 项目托管平台 + # + # 问题跟踪 + # + + + + + + # + # 项目托管平台 + # + # 项目讨论区 + # + + + # + # 项目托管平台 + # + # 资源库 + # + + + # + # 项目托管平台 + # + # 版本库 + # # # 项目托管平台 @@ -83,7 +183,8 @@ zh: project_moule_boards_show: 项目论坛 project_module_time_tracking: 时间跟踪 project_module_course: 课程 - + + # # 项目托管平台 # @@ -94,6 +195,7 @@ zh: label_invite_email_tips: 输入好友邮箱地址,Trustie会自动为该邮箱注册用户! notice_registed_success: 您输入的邮箱为空或者该邮箱已被注册! label_email_format_error: 您所填写的电子邮件格式不正确 + label_user_role_null: 用户和角色不能留空! label_send_email: 免费发送 label_input_email: 请输入邮箱地址 diff --git a/config/locales/users/en.yml b/config/locales/users/en.yml index fbfe1444e..ed10c69ee 100644 --- a/config/locales/users/en.yml +++ b/config/locales/users/en.yml @@ -77,8 +77,6 @@ en: label_technical_title: Title label_bidding_user_studentcode: Student ID - label_account_developer: Developer - label_account_student: Student # @@ -112,7 +110,7 @@ en: label_layouts_feedback: "a message " label_of_feedback: from - label_goto: Go to>> + label_goto: "Go to»" label_activity_project: "Project:" label_active_call: call @@ -180,12 +178,12 @@ en: # label_responses: Messages label_user_response: Feedback - label_leave_a_message: Leave him/her a message + label_leave_a_message: "Leave him/her a message" button_leave_meassge: Submit button_clear_meassge: Reset label_user_login_new: Login - label_user_login_tips: You haven't logged in, please login first to leave a message! + label_user_login_tips: "You haven't logged in, please login first to leave a message!" label_bid_respond_delete: Delete label_bid_respond_quote: Respond diff --git a/config/locales/users/zh.yml b/config/locales/users/zh.yml index 1362380a0..c6f7e4142 100644 --- a/config/locales/users/zh.yml +++ b/config/locales/users/zh.yml @@ -36,6 +36,7 @@ zh: label_user_edit: "修改资料" label_user_score: 个人综合得分 + # 用户身份在/my的修改资料下 label_user_score_of_collaboration: 协同得分 label_user_score_of_influence: 影响力得分 label_user_score_of_skill: 技术得分 @@ -87,10 +88,9 @@ zh: label_technicl_title_associate_professor: 副教授 label_technicl_title_lecturer: 讲师 label_technicl_title_teaching_assistant: 助教 - + + # 用户身份(学生、开发者)标签在/my的修改资料下 label_bidding_user_studentcode: 学号 - label_account_developer: 开发者 - label_account_student: 学生 label_no_current_fans: 该用户暂无粉丝 label_no_current_watchers: 该用户暂未关注其他用户 @@ -115,7 +115,7 @@ zh: label_of_feedback: 的 label_layouts_feedback: 留言 - label_goto: 前往>> + label_goto: "前往»" label_activity_project: "项目:" label_active_call: 需求 diff --git a/config/locales/zh.yml b/config/locales/zh.yml index a66182668..f3879421a 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -99,10 +99,9 @@ zh: lastname_empty: 姓氏不能为空 enterprise_empty: 企业名不能为空 field_lastname_eg: '(例:张三丰,请填写[张])' - field_filename: 文件 - field_file_dense: 是否公开 - field_filesize: 大小 - field_downloads: 下载次数 + + + field_author: 作者 field_created_on: 创建于 field_updated_on: 更新于 @@ -130,13 +129,12 @@ zh: field_priority: 优先级 field_fixed_version: 目标版本 field_user: 用户 - field_principal: 用户/用户组 + field_principal: 用户 field_role: 角色 field_homepage: 主页 field_time: 课时 field_class_period: 学时 field_code: 学分 - field_is_public: 公开 field_open_student: 学生列表公开 field_parent: 上级项目 field_is_in_roadmap: 在路线图中显示 @@ -145,7 +143,6 @@ zh: field_last_login_on: 最后登录 field_language: 语言 field_effective_date: 日期 - field_version: 版本 field_type: 类型 field_host: 主机 field_port: 端口 @@ -466,8 +463,6 @@ zh: label_new_contest: 竞赛 label_requirement_focus: 关注需求 label_developer: 用户 - label_account_developer: 开发者 - label_account_student: 学生 label_enterprise_into: 进入企业 label_college_into: 进入高校 label_investor: 投资人: @@ -509,7 +504,7 @@ zh: label_summer: 夏季学期 label_autumn: 秋季学期 label_winter: 冬季学期 - label_followers: 关注 + label_teacher_list: 教师列表 label_student_list: 学生列表 @@ -558,15 +553,15 @@ zh: label_text: 文本 label_attribute: 属性 label_attribute_plural: 属性 - label_no_data: 没有任何数据可供显示 + label_change_status: 变更状态 label_history: 历史记录 label_attachment: 文件 - label_attachment_new: 新建文件 + label_file_upload: 上传资料 label_course_file_upload: 上传了课件 label_attachment_delete: 删除文件 - label_attachment_plural: 文件 + label_file_added: 文件已添加 label_report: 报表 label_report_plural: 报表 @@ -692,13 +687,11 @@ zh: label_latest_revision_plural: 最近的修订版本 label_view_revisions: 查看修订 label_view_all_revisions: 查看所有修订 - label_no_file_uploaded: 未上传文件 - label_max_size: 最大文件大小 + label_sort_highest: 置顶 label_sort_higher: 上移 label_sort_lower: 下移 label_sort_lowest: 置底 - label_roadmap: 里程碑 #版本路线图 label_roadmap_due_in: "截止日期到 %{value}" label_roadmap_overdue: "%{value} 延期" label_roadmap_no_issues: 该版本没有问题 @@ -847,7 +840,7 @@ zh: label_plugins: 插件 label_ldap_authentication: LDAP 认证 label_downloads_abbr: D/L - label_optional_description: 可选的描述 + label_add_another_file: 添加其它文件 label_preferences: 首选项 label_chronological_order: 按时间顺序 @@ -915,8 +908,6 @@ zh: button_sort: 排序 button_log_time: 登记工时 button_rollback: 恢复到这个版本 - button_watch: 跟踪 - button_unwatch: 取消跟踪 button_reply: 回复 button_archive: 存档 button_unarchive: 取消存档 @@ -1003,9 +994,6 @@ zh: text_applied_project: "用户 %{id} 申请加入项目 %{project}" text_issue_expire: "分配给您的任务%{issue}即将到期" - default_role_manager: 管理人员 - default_role_developer: 开发人员 - default_role_reporter: 报告人员 default_tracker_bug: 错误 default_tracker_feature: 功能 default_tracker_support: 支持 @@ -1099,7 +1087,7 @@ zh: description_all_columns: 所有列 button_export: 导出 label_export_options: "%{export_format} 导出选项" - error_attachment_too_big: 该文件无法上传。超过文件大小限制 (%{max_size}) + error_pic_type: "仅支持如下图片格式:" notice_failed_to_save_time_entries: "无法保存下列所选取的 %{total} 个项目中的 %{count} 工时: %{ids}。" label_x_issues: @@ -1228,11 +1216,6 @@ zh: zero: 个关注者 one: 个关注者 other: 个关注者 - #end - label_member_since: 加入 - label_contribute_to: 参与了 %{project_count} 个项目: - #modify by men - #end label_total_commit: 共%{total_commit}次提交 label_question_number: 第%{question_number}题: @@ -1249,7 +1232,7 @@ zh: label_type_as: 类型为 label_status_as: 状态为 label_priority_as: 优先级为 - label_member_list: 成员列表 + label_author_name: 由%{author_name}发表了 label_post_on: 发表了 @@ -1263,9 +1246,6 @@ zh: #added by liuping - button_unfollow: 取消关注 - button_follow: 关注 - label_followers: 关注 label_delete_confirm: 确认删除? label_tags_bid: 需求名称 @@ -1604,8 +1584,6 @@ zh: label_code_submit_number: 代码提交次数 label_topic_number: 讨论区发言数量 - label_files_filter: 资源过滤: - label_join_contest: 加入竞赛 @@ -1732,7 +1710,6 @@ zh: label_project_grade: 项目得分 label_user_grade: 个人得分 - label_user_for_project_grade: 个人得分 label_system_grade: 系统评分 label_ta: 助教 @@ -1798,7 +1775,6 @@ zh: you_are_master: 您是该项目的版主 #add by linchun (竞赛相关) - label_upload_files: 上传文件 label_upload_softwarepackage: 上传软件包 label_upload_cuttingphoto: 上传截图 label_contests_reward_method: 奖励方式 @@ -1879,7 +1855,6 @@ zh: one: 个动态 other: 个动态 - label_relation_files: 关联已有资源 label_contest_settings: 配置竞赛 label_contest_delete: 删除竞赛 label_noawards_current: 暂未评奖 @@ -1936,12 +1911,6 @@ zh: lable_not_receive_mail: 点此设置接收本站邮件偏好! label_contest_notification: 竞赛通知 - #english site translation - label_current_hot_contest: 最新热门竞赛 - label_current_attendingcontest_work: 最新参赛作品 - label_issue_feedback_activities: 问题和反馈动态 - label_more_information: 更多>> - label_release_time: 发布时间 label_weixin: 微信扫码 @@ -1976,7 +1945,6 @@ zh: lable_hot_course: 活跃课程 lable_student_list_visable: 学生列表是否公开 - lable_sure_exit_project: 是否确认退出该项目 lable_input_class_vilidate: 学时只能为整数 lable_school_list: 学校列表 @@ -1984,7 +1952,6 @@ zh: lable_teacher_evaluation: 作业综评 lable_course_teacher: 主讲老师 lable_course_end: 课程学期已结束 - lable_file_sharingarea: 资源共享区 label_no_contest_news_description: 竞赛描述不能为空 label_contest_news_condition: 竞赛描述超过5000个汉字 label_no_contest_news_title: 竞赛标题不能为空 @@ -2052,13 +2019,6 @@ zh: label_enterprise_nil: 该模块为最新上线模块,目前还没有创建企业项目! label_enterprises: 组织 - label_tags_opensource: 开源项目 - label_attachment_category: 所属分类 - label_attachment_download_num: 下载 - label_attachment_size: 大小 - label_attachment_sharer: 共享者 - label_attachment_upload_time: 上传时间 - #api label_recently_updated_notification: 最近更新了通知 @@ -2066,9 +2026,12 @@ zh: label_recently_updated_message: 最近更新了留言 label_recently_updated_courseware: 最近更新了课件 label_no_courses: 您没有参与任何课程,请搜索课程、加入课程,或者创建课程吧! + label_commit_failed: 提交失败 + #api end + label_end_time: 截止时间 label_send_email: 确定发送 label_input_email: 请输入邮箱地址 - project_module_files: 资源库 + diff --git a/public/assets/kindeditor/plugins/image/image.js b/public/assets/kindeditor/plugins/image/image.js index 69029eda5..fd7f5a501 100644 --- a/public/assets/kindeditor/plugins/image/image.js +++ b/public/assets/kindeditor/plugins/image/image.js @@ -215,7 +215,51 @@ KindEditor.plugin('image', function(K) { } }); uploadbutton.fileBox.change(function(e) { - localUrlBox.val(uploadbutton.fileBox.val()); + //localUrlBox.val(uploadbutton.fileBox.val()); + if (dialog.isLoading) { + return; + } + // insert local image + if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) { + if (uploadbutton.fileBox.val() == '') { + alert(self.lang('pleaseSelectFile')); + return; + } + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + localUrlBox.val(''); + return; + } + // insert remote image + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(), + title = titleBox.val(), + align = ''; + alignBox.each(function() { + if (this.checked) { + align = this.value; + return false; + } + }); + if (url == 'http://' || K.invalidUrl(url)) { + alert(self.lang('invalidUrl')); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + alert(self.lang('invalidWidth')); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + alert(self.lang('invalidHeight')); + heightBox[0].focus(); + return; + } + clickFn.call(self, url, title, width, height, 0, align); + + }); if (allowFileManager) { viewServerBtn.click(function(e) { diff --git a/public/javascripts/attachments.js b/public/javascripts/attachments.js index 8ea71909b..8fbaa5981 100644 --- a/public/javascripts/attachments.js +++ b/public/javascripts/attachments.js @@ -135,8 +135,11 @@ function uploadBlob(blob, uploadUrl, attachmentId, options) { loadstartEventHandler: $.noop, progressEventHandler: $.noop }, options); - - uploadUrl = uploadUrl + '?attachment_id=' + attachmentId; + if(uploadUrl.indexOf('?') > 0){ + uploadUrl = uploadUrl + '&attachment_id=' + attachmentId; + }else{ + uploadUrl = uploadUrl + '?attachment_id=' + attachmentId; + } if (blob instanceof window.File) { uploadUrl += '&filename=' + encodeURIComponent(blob.name); } diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 5786c5758..ca8f0c3b6 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -13,7 +13,7 @@ ul.wlist{ margin-left: -40px; border-bottom:none; } ul.wlist li{float: left;} ul.wlist li a{ border:1px solid #15bccf; padding:4px; margin-left:3px;} ul.wlist li a:hover{ background:#15bccf; color:#fff; text-decoration:none;} -.wlist_select { background-color:#64bdd9; color:#fff; padding: 4px 3px 3px 3px; margin-left:3px;margin-top: -5px; border:1px solid #64bdd9;} +.wlist_select { background-color:#64bdd9; color:#fff; padding: 5px 3px 3px 3px; margin-left:3px;margin-top: 0px; border:1px solid #64bdd9;} /*20150203项目界面优化样式 By: huangjignquan*/ .project_new{font-size: 15px; padding: 5px;} @@ -69,15 +69,23 @@ a.ml105{ margin-left:120px;} a:hover.subnav_green{ background:#14ad5a;} /*简介*/ -.project_intro{ width:220px; padding:10px; background:#fff; padding-top:5px; color:#6d6d6d;} -.course_description{max-height: 105px;overflow:hidden;} +.project_intro{ width:220px; padding:5px 0px 10px 10px; background:#fff; color:#6d6d6d;} +.course_description{max-height: 103px;overflow:hidden;} .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:hover{ color:#787b7e;} +/****标签(和资源库的tag样式一致)***/ +.project_Label{ width:220px; padding-left:10px; padding-right:10px; background:#fff; margin-top:10px;} +a.yellowBtn{ display:inline-block;color:#0d90c3; height:22px;} +.submit{height:21px;border:0; cursor:pointer; background:url(../images/btn.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; } +.isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;} +.re_tag{ width: auto; padding-left:4px;padding-right: 4px; height:22px; border:1px solid #f8df8c; background:#fffce6; margin-right:5px;font-size:12px; } +.re_tag a{ color:#0d90c3;} +.tag_h span,.tag_h a{ margin-top:5px;} /*右侧内容--动态*/ - -.project_r_h{ height:40px; background:#eaeaea; margin-bottom: 5px;} -.project_h2{ background:#64bdd9; color:#fff; height:30px; width:90px; text-align:center; font-weight:normal; padding-top:3px; font-size:16px; padding-top:9px;} +/*右侧内容--动态*/ +.project_r_h{height:40px; background:#eaeaea; margin-bottom:10px;} +.project_h2{ background:#64bdd9; color:#fff; height:29px; width:90px; text-align:center; font-weight:normal; padding-top:10px; font-size:16px;padding-left:10px;} .project_r_box{ border:1px solid #e2e1e1; width:670px; margin-top:10px;} .project_h3 { color:#646464; font-size:14px; padding:0 10px; border-bottom:1px solid #e2e1e1;} a.more{ float:right; font-size:12px; font-weight:normal; color:#a9a9a9; margin-top:3px;} @@ -100,42 +108,124 @@ a:hover.more{ color:#64bdd9;} .box_close{ display:block; float:right; width:16px; height:16px; background:url(../images/img_floatbox.png) 0 0 no-repeat;} .box_close:hover{background:url(../images/img_floatbox.png) -22px 0 no-repeat;} /*邮件邀请*/ -.box_main{ width:345px; margin:0 auto;padding-left:28px;} -.box_h3{ color:#15bccf; text-align:center; font-size:16px;margin-right:40px;} +.box_main{ width:345px; margin:0 auto;} +.box_main02{ width:390px; margin:15px auto;} +.box_h3{ color:#15bccf; text-align:center; font-size:16px;} .box_p{ color:#404040; margin-bottom:5px;} -.fb_item{ color:#919191; border:1px solid #919191; height:28px; margin-bottom:10px; padding-left:5px; width:290px;} +.fb_item{ color:#919191; border:1px solid #919191; height:25px; margin-bottom:10px; padding-left:5px; width:290px;} .icon_addm{ background:url(../images/img_floatbox.png) 0 -33px no-repeat; width:16px; height:16px; display:block; margin:5px 0 0 5px;} .icon_addm:hover{background:url(../images/img_floatbox.png) 0 -61px no-repeat; } .icon_removem{ background:url(../images/img_floatbox.png) -22px -33px no-repeat;width:16px; height:16px; display:block; margin:5px 0 0 5px} .icon_removem:hover{background:url(../images/img_floatbox.png) -22px -61px no-repeat;} -.btn_free{ background:#ff5722; display:block; width:80px; text-align:center; color:#fff !important; height:26px; padding-top:8px; margin-bottom:10px;} -.btn_free:hover{ background:#d63502;} +.btn_free{ background:#ff5722; display:block; width:80px; text-align:center; color:#fff !important; height:25px; padding-top:5px; margin-bottom:10px;} +.btn_free:hover{ background:#d63502;text-decoration:none;} /*成员邀请*/ -.invi_search{ width:345px; margin:0 auto;} -.invi_search_input{ border:1px solid #15bccf; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;} +.invi_search{ margin-left:25px;} +.invi_search_input{ border:1px solid #15bccf; width:180px; height:24px; color:#9b9b9b; padding-left:5px;} .invi_search_btn{ background:#15bccf; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #15bccf; padding-top:2px; cursor:pointer;} .invi_search_btn:hover{ background:#0da1b2; border:1px solid #0da1b2;} -.rolebox{ margin-left: -40px;} +.rolebox{ margin:10px 0;margin-left:-38px;} /*问题跟踪*/ .problem_top{ margin:10px 0 ;} .problem_search_input{ border:1px solid #64bdd9; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;} .problem_search_btn{ background:#64bdd9; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #64bdd9; padding-top:2px; cursor:pointer;} .problem_search_btn:hover{ background:#3da1c1; border:1px solid #3da1c1;} -.problem_new_btn{ margin-left:10px; border:1px solid #ff7143; color:#ff7143; width:60px; height:22px; text-align:center; padding-top:2px;} -.problem_new_btn:hover{ background:#ff7143; color:#fff;} -.problem_p{ color:#535252; margin-right: 8px;} +.problem_new_btn{ margin-left:10px; border:1px solid #ff7143; color:#ff7143 !important; width:60px; height:19px; font-size:12px; text-align:center; padding-top:4px;margin-top:-2px;} +.problem_new_btn:hover{ background:#ff7143; color:#fff !important;} +.problem_p{ color:#535252; margin-top:5px;} .problem_p span{ color:#ff3e00;} -.problem_pic{ display:block; width:42px; height:42px; padding:3px; border:1px solid #e3e3e3;} +.problem_pic{ display:block; width:42px; height:42px; padding:3px; border:1px solid #e3e3e3; margin-top:5px;} +.problem_pic:hover{border:1px solid #64bdd9;} +.problem_txt{ width:610px; margin-left:10px; color:#777777;} +.problem_name{ color:#ff5722 !important;} +.problem_line{margin-top:5px;} +.problem_name:hover{ color:#d33503;} +.problem_tit{ color:#0781b4 !important; width:430px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} +.problem_tit:hover{ color:#09658c !important; } +.problem_main{ border-bottom:1px dashed #d4d4d4; padding-bottom:10px; margin-bottom:10px;} +/****翻页***/ +.wlist{} +.wlist a{ float:right; border:1px solid #64bdd9; padding:0 5px; margin-left:3px; color:#64bdd9;} +.wlist_l a{ float:left; margin-right:3px; margin-left:0px;} +.wlist a:hover{border:1px solid #64bdd9; background-color:#64bdd9; color:#fff; text-decoration:none;} +.wlist_select a { background-color:#48aac9; color:#fff;} +/****讨论区***/ +.talk_top{ margin:10px 0; font-size:14px; color:#4c4c4c;} +.talk_top span{ color:#ff7143;} +.talk_txt{ width:460px; margin-left:10px; color:#676868;} +.talk_up{ color:#f63c00;} +.talk_pic{width:32px; height:32px; padding:2px;} +.talk_btn{ background:#64bdd9; width:50px; height:22px; color:#fff; text-align:center; margin-top:9px; padding-top:2px;} +.talk_btn:hover{ background:#2a9dc1;} +/****讨论区内页***/ +.mt0{ margin-top:0px;} +.talk_info{ color:#7d7d7d; margin-left:50px; margin-top:10px;} +.talk_edit{ color:#426e9a; margin-right:5px;} +.talk_edit:hover{ color:#ff5722;} +.talk_reply { background:#eeeeee; padding:10px; margin-bottom:10px;} +.talkpage_text{ border:1px solid #64bdd9; width:600px; color:#7d7d7d; padding:5px; margin:10px 0 10px 50px;} +/****新建讨论***/ +.talk_new{ padding-left:15px; color:#4c4c4c;} +.c_red{ color:#F00;} +.talk_input{ border:1px solid #64bdd9; height:22px; width:595px; margin-bottom:10px;} +.talk_text{ border:1px solid #64bdd9; height:100px;width:595px; margin-bottom:10px;} +.talk_new ul li{ } +.view_span{font-weight:normal; color:#999;} +.sb{width:70px; height:26px; color:#606060;} +.ml60{ margin-left:60px;} +.blue_btn{ background:#64bdd9; display:block; font-size:14px;color:#fff; height:28px; width:50px; text-align:center; margin-left:10px; margin-top:10px;} +.blue_btn:hover{ background:#329cbd;} +.grey_btn{ background:#d9d9d9; color:#656565;} +.grey_btn:hover{ background:#717171; color:#fff;} +/****资源库***/ +.f_l{ float:left;} +.f_r{ float:right;} +.resource a{ text-align:center;} +.b_lblue{ background:#64bdd9;} +.b_dblue{ background:#55a1b9; cursor:pointer;} +.f_b{ font-weight: bold;} +.c_blue{ color:#64bdd9;} +a.c_dblue{ color: #3ca5c6;} +a:hover.c_dblue{ color: #0781b4;} +.c_grey{ color:#999999;} +.c_grey02{ color:#666666;} +.f_14{ font-size:14px;} +.c_dblue{ color:#3e6d8e;} +.w90{width:90px;} +.ml10{margin-left:10px;} +.resource{ width:670px;} +.re_top{width:660px; height:40px; background:#eaeaea; padding:5px;} +.re_top input{ float:left;} +.re_search{ margin-top:7px; margin-left:5px;} +.re_schbox{ width:240px; height:24px; border:1px solid #64bdd9; color:#666666;} +.re_schbtn{ width:60px; height:26px; color:#fff; margin-right:5px; border:none; margin-left:0px; } +a.re_fabu { display:block; width:90px; height:35px; font-size:14px; color:#fff; text-align:center; padding-top:5px; } +a:hover.re_fabu{background:#55a1b9;} +.re_con{ margin:5px; width:665px;} +.re_con_top{color:#494949; } +.re_con_top span{ color:#999999; font-weight:bold;} +a.re_select{ display:block; width:88px; height:22px; border:1px solid #ff9900; color:#ff9900; margin-left:10px;} +a:hover.re_select{ background:#ff9900; color:#fff; text-decoration:none;} +.re_open{display:block; width:46px; height:22px; border:1px solid #64bdd9; color:#64bdd9; margin-left:10px;} +a:hover.re_open{ background:#64bdd9; color:#fff; text-decoration:none;} +a.re_de{ color:#6883b6; margin-left:15px;} +.re_con_box{ border-bottom:1px dashed #dadada; padding-bottom:10px; margin-bottom:10px;} + +.upload_con { } +.upload_con h2{ display:block; background:#eaeaea; font-size:14px; color:#343333; height:31px; width: auto; margin-top:25px; padding-left:20px; padding-top:5px;} +.upload_box{ width:430px; height:80px;} +a.upload_btn02{ display:block; float:left; margin-top:15px; width:80px; height:30px; text-align: center; color:#fff; font-size:14px; background:#15bccf; margin-right:15px;} +a:hover.upload_btn02{ background:#55a1b9;} +a.upload_btn_grey{background:#a3a3a3;} +a:hover.upload_btn_grey{background:#8a8a8a;} +.upload_btn{width:80px; height:26px;} +.upload_check{ margin-top:4px;} +/****其他未更新页面***/ +.setting{ background:url(../images/setting.jpg) 0 0 no-repeat; width:670px; height:443px;} +.newproblem{} + -/****标签(和资源库的tag样式一致)***/ -.project_Label{ width:220px; padding:10px; background:#fff; margin-top:0px; padding-top:5px;} -a.yellowBtn{ display:inline-block;color:#0d90c3; height:22px;} -.submit{height:21px;border:0; cursor:pointer; background:url(../images/btn.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; } -.isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;} -.re_tag{ width: auto; padding:0 5px; height:22px; border:1px solid #f8df8c; background:#fffce6; margin-right:10px; } -.re_tag a{ color:#0d90c3;} -.tag_h span,.tag_h a{ margin-bottom:0px;} /*企业版样式*/ .content_syqy{ width:940px; height:400px; border:1px;} .content_syqy .list{ font-size:14px; font-weight:normal; margin-left:10px; font-weight:bold; padding-top:10px} @@ -1414,8 +1504,8 @@ input#openid_url { background: url(../images/openid-bg.gif) no-repeat; backgroun .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; } /***** Links *****/ -a, a:link, a:visited{ color: #169 ; text-decoration: none; } -a:hover, a:active{ color: #c61a1a; text-decoration: underline;} +a, a:link, a:visited{ color: #0781B4 ; text-decoration: none; } +a:hover, a:active{ color: #09658c;} a img{ border: 0; } a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; } @@ -3086,3 +3176,4 @@ input[class~='m3p10'], .m3p10 { } */ +