diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 769214d65..cf39898fe 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -111,8 +111,7 @@ class AccountController < ApplicationController user_params = params[:user] || {} @user = User.new @user.safe_attributes = user_params - #这里判断 - if params[:identity] == "2" + if params[:identity] == "2" # 2 企业 @user.firstname = params[:enterprise_name] @user.lastname = l(:field_enterprise) end @@ -132,16 +131,6 @@ class AccountController < ApplicationController @user.login = params[:user][:login] unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank? @user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation] - # system "htpasswd -mb "+@root_path+"user.passwd "+params[:user][:login]+" "+user_params[:password] - # system "echo -e '\n"+params[:user][:login]+"-write:"+ - # " "+params[:user][:login]+"' >> "+@root_path+"group.passwd" - # system "mkdir "+@root_path+"htdocs/"+params[:user][:login] -# - # system "echo -e 'Allow from all \n Order Deny,Allow \n "+ - # " \n"+ - # "Require group "+params[:user][:login]+"-write \n "+ - # " \n ' >>"+ - # @root_path+"htdocs/"+params[:user][:login]+"/.htaccess" end case Setting.self_registration @@ -183,6 +172,33 @@ class AccountController < ApplicationController redirect_to signin_path end + def valid_ajax + req = Hash.new(false) + req[:message] = '' + + valid_attr = params[:valid] + valid_value = params[:value] + + faker = User.new + + if valid_attr.eql?('login') + faker.login = valid_value + faker.valid? + req[:valid] = faker.errors[:login].blank? + req[:message] = faker.errors[:login] + end + + if valid_attr.eql?('mail') + faker.mail = valid_value + faker.valid? + req[:valid] = faker.errors[:mail].blank? + req[:message] = faker.errors[:mail] + end + + req[:message] = l(:modal_valid_passing) if req[:message].blank? + render :json => req + end + private def authenticate_user diff --git a/app/controllers/attachment_type_edit_controller.rb b/app/controllers/attachment_type_edit_controller.rb deleted file mode 100644 index 91e14f65a..000000000 --- a/app/controllers/attachment_type_edit_controller.rb +++ /dev/null @@ -1,6 +0,0 @@ - #资源类型编辑control -class AttachmentTypeEditController < ApplicationController - def index - - end -end diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index d341f0f6e..900487364 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -62,6 +62,17 @@ class AttachmentsController < ApplicationController end end + #更新资源文件类型 + def updateType + @attachment = Attachment.find(params[:attachmentid]) + if @attachment != nil + @attachment.attachtype = params[:newtype] + @attachment.save + render :text =>'success' + else + render :text=>'error' + end + end def thumbnail if @attachment.thumbnailable? && thumbnail = @attachment.thumbnail(:size => params[:size]) diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb index 8f48d3857..206421e5d 100644 --- a/app/controllers/bids_controller.rb +++ b/app/controllers/bids_controller.rb @@ -7,7 +7,7 @@ class BidsController < ApplicationController menu_item :homework_respond, :only => :homework_respond menu_item :homework_statistics, :only => :homework_statistics #Ended by young - before_filter :find_bid, :only => [:show, :show_project, :create,:destroy,:more,:back,:add,:new,:show_results,:set_reward, :add_homework, :fork, :create_fork, + before_filter :find_bid, :only => [:show, :show_project, :create,:destroy,:more,:back,:add,:delete,:new,:show_results,:set_reward, :add_homework, :fork, :create_fork, :show_course, :show_bid_project, :show_bid_user, :join_in_contest, :unjoin_in_contest, :new_join,:show_participator, :settings] # added by fq before_filter :require_login, :only => [:join_in_contest, :unjoin_in_contest] @@ -500,6 +500,15 @@ class BidsController < ApplicationController end end + #删除已提交的项目作业(不删项目) + def delete + binding_project = params[:binding_project] + if BidingProject.delete(binding_project) + redirect_to project_for_bid_path + else + redirect_to 403; + end + end ## 新建留言 def create @@ -693,7 +702,10 @@ class BidsController < ApplicationController redirect_to respond_path(@bid) else @bid.safe_attributes = params[:bid] - render :action => 'new_bid' + @homework = @bid + @project = Project.find_by_id(params[:course_id]) + @project_id = @project.id + render file: 'projects/new_homework', layout: 'base_courses' end end @@ -715,14 +727,14 @@ class BidsController < ApplicationController def update @bid = Bid.find(params[:id]) - @project = @bid.courses.first + @project = @bid.courses.first#Project.find(params[:course_id]) if @bid.update_attributes(params[:bid]) flash[:notice] = l(:label_update_homework_succeed) #@project = Project.find(params[:course_id]) redirect_to project_homework_path(@project) else @bid.safe_attributes = params[:bid] - render :action => 'edit', :layout =>'base_courses' ,:bid_id=>@bid.id,:project_id =>@project + render :action => 'edit', :layout =>'base_courses' end end diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb index 7ceb575f3..7741333a8 100644 --- a/app/controllers/contests_controller.rb +++ b/app/controllers/contests_controller.rb @@ -4,7 +4,8 @@ class ContestsController < ApplicationController menu_item :respond menu_item :project, :only => :show_project menu_item :application, :only => :show_softapplication - before_filter :find_contest, :only => [:show_contest, :show_project, :show_softapplication, :create,:destroy,:more,:back,:add,:add_softapplication,:new,:show_results, :set_reward, + menu_item :attendingcontest, :only => :show_attendingcontest + before_filter :find_contest, :only => [:show_contest, :show_project, :show_softapplication, :show_attendingcontest, :create,:destroy,:more,:back,:add,:add_softapplication,:new,:show_results, :set_reward, :show_contest_project, :show_contest_user, :join_in_contest, :unjoin_in_contest, :new_join,:show_participator, :settings] # added by fq @@ -252,6 +253,7 @@ class ContestsController < ApplicationController ############ ##显示参赛的应用 def show_softapplication + # @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current)) # @option = [] @@ -288,6 +290,66 @@ class ContestsController < ApplicationController end end + + ###我要参赛 + def show_attendingcontest +##取出参赛项目 + @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current)) + @option = [] + # @contesting_project_count = @contesting_project_all.count + # @contesting_project_pages = Paginator.new @contesting_project_count, per_page_option, params['page'] + @membership.each do |membership| + unless(membership.project.project_type==1) + membership.member_roles.each{|role| + if(role.role_id == 3) + @option << membership.project + end + } + end + end + @user = @contest.author + @contesting_project = @contest.contesting_projects.all + if params[:student_id].present? + @temp = [] + @contesting_project.each do |pro| + if pro.project && pro.project.project_status + if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id + @temp << pro + end + end + @temp + end + @contesting_project = @temp + else + + @temp = [] + @contesting_project.each do |pro| + if pro.project && pro.project.project_status + @temp << pro + end + @temp + end + if @temp.size > 0 + @contesting_project = @temp.sort {|a,b| b.project.project_status.grade <=> a.project.project_status.grade} + end + end +##取出参赛应用 + @softapplication = Softapplication.all + @contesting_softapplication = @contest.contesting_softapplications.reverse + @contesting_softapplication = paginateHelper @contesting_softapplication, 10 + + +##引用base_newcontest整体样式 + @contest = Contest.find_by_id(params[:id]) + respond_to do |format| + format.html { + render :layout => 'base_newcontest' + } + format.api + end + end + + ###end ###添加已创建的参赛项目 def add project = Project.find(params[:contest]) @@ -500,9 +562,9 @@ class ContestsController < ApplicationController @contest = Contest.find(params[:id]) @user = @contest.author end - rescue + rescue render_404 - end + end end diff --git a/app/controllers/memos_controller.rb b/app/controllers/memos_controller.rb index 20f0b45c4..b4de06fb6 100644 --- a/app/controllers/memos_controller.rb +++ b/app/controllers/memos_controller.rb @@ -94,7 +94,7 @@ class MemosController < ApplicationController @reply_pages = Paginator.new @reply_count, pre_count, page @replies = @memo.children. includes(:author, :attachments). - reorder("#{Memo.table_name}.created_at ASC"). + reorder("#{Memo.table_name}.created_at DESC"). limit(@reply_pages.per_page). offset(@reply_pages.offset). all diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 1baf5d62c..150071b41 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -43,7 +43,7 @@ class MessagesController < ApplicationController @reply_pages = Paginator.new @reply_count, REPLIES_PER_PAGE, page @replies = @topic.children. includes(:author, :attachments, {:board => :project}). - reorder("#{Message.table_name}.created_on ASC"). + reorder("#{Message.table_name}.created_on DESC"). limit(@reply_pages.per_page). offset(@reply_pages.offset). all diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index a120394ef..116ccd5d7 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -295,8 +295,12 @@ class ProjectsController < ApplicationController project_type = params[:project_type].to_i projects_all = (project_type.eql? Project::ProjectType_course) ? Project.course_entities : Project.project_entities @projects = projects_all.visible - @projects_all = @projects.visible.like(params[:name]) if params[:name].present? - + #@projects_all = @projects.visible.like(params[:name]) if params[:name].present? + if params[:name].present? + @projects_all = @projects.visible.like(params[:name]) + else + @projects_all = @projects; + end @project_count = @projects_all.count @project_pages = Paginator.new @project_count, per_page_option, params['page'] @@ -808,6 +812,8 @@ class ProjectsController < ApplicationController @render_file = 'member_list' # 判断是否课程 if @project.project_type == Project::ProjectType_course + @teachers= searchTeacherAndAssistant(@project) + @canShowCode = isCourseTeacher(User.current.id) case params[:role] when '1' @subPage_title = l :label_teacher_list @@ -829,6 +835,15 @@ class ProjectsController < ApplicationController render :layout => 'base_courses' if @project.project_type == 1 end + #判断指定用户是否为课程教师 + def isCourseTeacher(id) + result = false + if @teachers.find_by_user_id(id) != nil + result = true + end + result + end + def sort_project_members project, members #userGrade = UserGrade.where(:project_id => project.id) users = UserGrade.where(:project_id => project.id). diff --git a/app/controllers/school_controller.rb b/app/controllers/school_controller.rb index b8fb7a6f6..ec14ba5c8 100644 --- a/app/controllers/school_controller.rb +++ b/app/controllers/school_controller.rb @@ -47,8 +47,27 @@ class SchoolController < ApplicationController options << "" end - render :text => options - + # 取id取学校名 + # 连接子表: 查询已添加用户的学校 + school = School.select("id, name"). + joins("RIGHT JOIN ( + SELECT DISTINCT school_id + FROM #{UserExtensions.table_name} + WHERE school_id IS NOT NULL) AS sids ON schools.id = sids.school_id"). + where("#{School.table_name}.id IS NOT NULL") + + options_s = "" + school.each do |s| + options_s << "
  • #{s.name}
  • " + end + + res = Hash.new + res[:text] = options + res[:text_s] = options_s + + render :json => res + + end def get_options @@ -79,8 +98,11 @@ class SchoolController < ApplicationController end def search_school - @school = School.where("province = ? AND name LIKE '%"+params[:key_word]+"%'", params[:province]); - + if params[:province].nil? or params[:province] == "0" + @school = School.where("name LIKE '%"+params[:key_word]+"%'"); + else + @school = School.where("province = ? AND name LIKE '%"+params[:key_word]+"%'", params[:province]); + end options = "" @school.each do |s| options << "
  • #{s.name}
  • " diff --git a/app/controllers/softapplications_controller.rb b/app/controllers/softapplications_controller.rb index 3aba819e0..9ede52489 100644 --- a/app/controllers/softapplications_controller.rb +++ b/app/controllers/softapplications_controller.rb @@ -106,11 +106,13 @@ class SoftapplicationsController < ApplicationController @softapplication.save_attachments(params[:attachments]) respond_to do |format| if @softapplication.save + format.js format.html { redirect_to @softapplication, notice: 'Softapplication was successfully created.' } - format.json { render json: @softapplication, status: :created, location: @softapplication } + # format.json { render json: @softapplication, status: :created, location: @softapplication } else + format.js { render status: 406 } format.html { render action: "new" } - format.json { render json: @softapplication.errors, status: :unprocessable_entity } + # format.json { render json: @softapplication.errors, status: :unprocessable_entity } end end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d4248e3cc..9a21e26f2 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -38,6 +38,7 @@ class UsersController < ApplicationController :user_homeworks, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :watch_contests, :info, :watch_projects, :show_score, :topic_score_index, :project_score_index, :activity_score_index, :influence_score_index, :score_index] + before_filter :auth_user_extension, only: :show accept_api_auth :index, :show, :create, :update, :destroy,:tag_save #william @@ -548,6 +549,14 @@ class UsersController < ApplicationController format.api { render_validation_errors(@user) } end end + + unless @user.id.nil? + #后台注册的用户默认权限为男性开发员 + ue = UserExtensions.create(:identity => 3, + :gender => 0, + :user_id => @user.id) + ue.save + end end def edit @@ -735,4 +744,12 @@ class UsersController < ApplicationController def setting_layout(default_base='base_users') User.current.admin? ? 'base_admin' : default_base end + + # 必填自己的工作单位,其实就是学校 + def auth_user_extension + if @user == User.current && @user.user_extensions.school.nil? + flash[:error] = l(:error_complete_occupation) + redirect_to my_account_path + end + end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index aeacae866..6b8525a00 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -390,6 +390,16 @@ module ApplicationHelper s.html_safe end + #扩展的checkbox生成 + def principals_check_box_tags_ex(name, principals) + s = '' + principals.each do |principal| + s << "\n" + end + s.html_safe + end + + # Returns a string for users/groups option tags def principals_options_for_select(collection, selected=nil) s = '' diff --git a/app/helpers/files_helper.rb b/app/helpers/files_helper.rb index 16a3d8b58..052aae468 100644 --- a/app/helpers/files_helper.rb +++ b/app/helpers/files_helper.rb @@ -55,9 +55,9 @@ module FilesHelper result = true end if result - if contentType != l(:attachment_all) && contentType != attachment.suffix_type + if contentType != '0' && contentType != attachment.suffix_type result = false - end + end end result end diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb index 915e02627..75676f475 100644 --- a/app/helpers/members_helper.rb +++ b/app/helpers/members_helper.rb @@ -24,7 +24,7 @@ module MembersHelper principal_pages = Redmine::Pagination::Paginator.new principal_count, 10, params['page'] #by young principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all - s = content_tag('div', principals_check_box_tags('membership[user_ids][]', principals), :id => 'principals') + s = content_tag('div', principals_check_box_tags_ex('membership[user_ids][]', principals), :id => 'principals') links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options| link_to text, autocomplete_project_memberships_path(project, parameters.merge(:q => params[:q], :format => 'js')), :remote => true diff --git a/app/models/attachment.rb b/app/models/attachment.rb index 3bfd705f9..661762e5c 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -285,6 +285,7 @@ class Attachment < ActiveRecord::Base result end + def self.attach_filesex(obj, attachments,attachment_type) result = obj.save_attachmentsex(attachments, User.current,attachment_type) obj.attach_saved_attachments diff --git a/app/models/attachmentstype.rb b/app/models/attachmentstype.rb index 6a37cc51f..fb774836f 100644 --- a/app/models/attachmentstype.rb +++ b/app/models/attachmentstype.rb @@ -3,7 +3,7 @@ class Attachmentstype < ActiveRecord::Base has_many :attachments, :foreign_key => "attachtype",:primary_key => "id" # 当前使用的文件内容分类列表 - @@SuffixArr = ['pdf','zip','doc','docx','rar','txt','jpg','bmp','xls','xlsx'] + @@SuffixArr = ['pdf','zip','doc','docx','ppt','pptx','rar','txt','jpg','bmp','xls','xlsx'] def suffixArr @@SuffixArr diff --git a/app/models/biding_project.rb b/app/models/biding_project.rb index cc9c1fba2..0b7b3718e 100644 --- a/app/models/biding_project.rb +++ b/app/models/biding_project.rb @@ -19,7 +19,7 @@ class BidingProject < ActiveRecord::Base self.create(:user_id => User.current.id, :bid_id => bid_id, :project_id => project_id, :description => description) end - + # used to update the reward ,the value varies from 0,1,2,3,4,5 # added by william def update_reward(which) diff --git a/app/models/issue.rb b/app/models/issue.rb index b69ac246c..d2332350a 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -57,7 +57,7 @@ class Issue < ActiveRecord::Base :include => [:project, :visible_journals], # sort by id so that limited eager loading doesn't break with postgresql :order_column => "#{table_name}.id" - acts_as_event :title => Proc.new {|o| + acts_as_event :title => Proc.new {|o| #"#{o.tracker.name} ##{o.id} (#{o.status}): #{o.subject}" "#{o.tracker.name} #{o.source_from} (#{o.status}): #{o.subject}" }, @@ -991,6 +991,11 @@ class Issue < ActiveRecord::Base "#{tracker} ##{id}: #{subject}" end + # 缺陷在项目中的序号 + def inProjectIndex + (self.project.issues.index(self).to_i + 1).to_s + end + # Returns a string of css classes that apply to the issue def css_classes s = "issue tracker-#{tracker_id} status-#{status_id} #{priority.try(:css_classes)}" diff --git a/app/models/journal.rb b/app/models/journal.rb index 02d313731..0997640d8 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -29,8 +29,8 @@ class Journal < ActiveRecord::Base # end attr_accessor :indice - acts_as_event :title => Proc.new {|o| status = ((s = o.new_status) ? " (#{s})" : nil); "#{o.issue.tracker} ##{o.issue.id}#{status}: #{o.issue.subject}" }, - :description => :notes, + acts_as_event :title =>Proc.new {|o| status = ((s = o.new_status) ? " (#{s})" : nil); "#{o.issue.tracker} ##{o.issue.inProjectIndex}#{status}: #{o.issue.subject}" }, + :description =>:notes, :author => :user, :group => :issue, :type => Proc.new {|o| (s = o.new_status) ? (s.is_closed? ? 'issue-closed' : 'issue-edit') : 'issue-note' }, diff --git a/app/models/school.rb b/app/models/school.rb index 7dbf5e3a8..a180eefbe 100644 --- a/app/models/school.rb +++ b/app/models/school.rb @@ -1,4 +1,8 @@ class School < ActiveRecord::Base attr_accessible :name, :province has_many :courses + + def to_s + self.name.to_s + end end diff --git a/app/models/user.rb b/app/models/user.rb index 20624888a..d16d790d2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -190,7 +190,11 @@ class User < Principal where(" LOWER(concat(lastname, firstname)) LIKE :p ", :p => pattern) end } - + + #选择项目成员时显示的用户信息文字 + def userInfo + info=self.name + ' (' + self.login + ')'; + end ###添加留言 fq def add_jour(user, notes, reference_user_id = 0, options = {}) diff --git a/app/views/account/register.html.erb b/app/views/account/register.html.erb index 7f729552e..f24f7d052 100644 --- a/app/views/account/register.html.erb +++ b/app/views/account/register.html.erb @@ -278,8 +278,8 @@ <% if @user.auth_source_id.nil? %> -

    <%= f.text_field :login, :size => 25, :required => true %> - <%= l(:label_max_number) %>

    +

    <%= f.text_field :login, :size => 25, :required => true %> + <%= l(:label_max_number) %>

    <%= f.password_field :password, :size => 25, :required => true %> <%= l(:text_caracters_minimum, :count => Setting.password_min_length) %>

    @@ -294,7 +294,7 @@ <%= text_field_tag :enterprise_name %>

    -

    <%= f.text_field :mail, :required => true %>

    +

    <%= f.text_field :mail, :required => true %>

    <%="#{l(:label_mail_attention)} "%>

    <%= f.select :language, lang_options_for_select , :required => true %>

    @@ -368,3 +368,36 @@ + \ No newline at end of file diff --git a/app/views/attachment_type_edit/_show_attchment_type.html.erb b/app/views/attachment_type_edit/_show_attchment_type.html.erb deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/views/attachments/_type_edit.html.erb b/app/views/attachments/_type_edit.html.erb new file mode 100644 index 000000000..5d9278823 --- /dev/null +++ b/app/views/attachments/_type_edit.html.erb @@ -0,0 +1,14 @@ +<% edit_allowed = User.current.allowed_to?(:manage_files, @project) %> +<% if attachmenttypes.any? %> + + <%= link_to(image_tag('edit/edit.png'), 'javascript:void(0);',:style=>"white-space:nowrap;", :id=>"edit_box"+attachment.id.to_s , + :onclick =>"$('#put-tag-form-" +attachment.id.to_s+ "').show(); + $('#attach_type_id_label" +attachment.id.to_s+ "').hide(); + $('#edit_box" +attachment.id.to_s+ "').hide();") if edit_allowed %> + +<% end %> + diff --git a/app/views/bids/_bid_homework_show.html.erb b/app/views/bids/_bid_homework_show.html.erb index 7c8e1468c..3ef55c567 100644 --- a/app/views/bids/_bid_homework_show.html.erb +++ b/app/views/bids/_bid_homework_show.html.erb @@ -13,9 +13,11 @@ <%= l(:label_user_create_project_homework) %> <%= link_to(bid.name, respond_path(bid), :class => 'bid_path') %> + <% if(User.current.logged? && (!Member.where('user_id = ? and project_id = ?', User.current.id, bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',5, 10, 7)).size >0)) %> <%# 提交作业按钮 %> <%= link_to l(:label_commit_homework), '#OpenWindow', rel: 'leanModal', onclick: "showSubH(#{bid.id}, '#{bid.name}');" if User.current.member_of?(@project) %> - <% if (User.current.admin?||User.current.id==bid.author_id) %> + <% end %> + <% if (User.current.admin?||User.current.id==bid.author_id) %> <%= link_to( l(:button_edit), {:action => 'edit', :controller=>'bids', :project_id =>@project.id, :bid_id => bid.id}, @@ -33,10 +35,19 @@ - <% if bid.homework_type == 1%> + <% @bidding_project = bid.biding_projects.all + @temp = [] + @bidding_project.each do |pro| + if pro.project && pro.project.project_status + @temp << pro + end + @temp + end + %> + <% if bid.homework_type == 1%> <%= l(:label_x_homework_project, :count => bid.homeworks.count) %>(<%= link_to bid.homeworks.count, project_for_bid_path(bid.id) %>) <% else %> - <%= l(:label_x_homework_project, :count => bid.biding_projects.count) %>(<%= link_to bid.biding_projects.count, project_for_bid_path(bid.id) %>) + <%= l(:label_x_homework_project, :count => @temp.count) %>(<%= link_to @temp.count, project_for_bid_path(bid.id) %>) <% end %> <%= l(:label_x_responses, :count => bid.commit) %>(<%= link_to bid.commit, respond_path(bid) %>) diff --git a/app/views/bids/_list_projects.html.erb b/app/views/bids/_list_projects.html.erb index 41c5ab9d1..e51314c48 100644 --- a/app/views/bids/_list_projects.html.erb +++ b/app/views/bids/_list_projects.html.erb @@ -148,11 +148,17 @@ - + <% if Time.parse(@bid.deadline.to_s) < Time.parse(b_project.created_at.to_s) %> 迟交 <% end %> + + <% if b_project.user.id == User.current.id || User.current.id == b_project.bid.author.id + %> + <%= link_to image_tag('delete.png'),{ :action => "delete", :binding_project => b_project}, :confirm => "Are you sure?" %> + <% end %> + diff --git a/app/views/contests/_contest_list.html.erb b/app/views/contests/_contest_list.html.erb index 6ffac831e..8b5e34975 100644 --- a/app/views/contests/_contest_list.html.erb +++ b/app/views/contests/_contest_list.html.erb @@ -18,9 +18,14 @@ - <%= l(:label_contest_project, :count => contest.contesting_projects.count) %>(<%= link_to(contest.contesting_projects.count, show_project_contest_path(contest), :target => "_blank") %>) - <%= l(:label_contest_softapplication, :count => contest.contesting_softapplications.count) %>(<%= link_to(contest.contesting_softapplications.count, show_softapplication_contest_path(contest), :target => "_blank") %>) - + + + <% if contest.id == 2 or contest.id == 3 or contest.id == 6 %> + <%= l(:label_contest_work, :count => contest.contesting_projects.count) %>(<%= link_to(contest.projects.where('is_public=1').count, show_attendingcontest_contest_path(contest), :target => "_blank") %>) + <% else %> + <%= l(:label_contest_work, :count => contest.contesting_softapplications.count) %>(<%= link_to(contest.contesting_softapplications.count, show_attendingcontest_contest_path(contest), :target => "_blank") %>) + <% end %> diff --git a/app/views/contests/show_attendingcontest.html.erb b/app/views/contests/show_attendingcontest.html.erb new file mode 100644 index 000000000..8a00f12ae --- /dev/null +++ b/app/views/contests/show_attendingcontest.html.erb @@ -0,0 +1,246 @@ + + + + + +
    + 温馨提示:如果您希望在我们平台托管参赛数据和代码,请按下面参赛步骤参赛! +
    +<% if User.current.logged? %> + +
    +
    + 参赛步骤: +
    +
    + 步骤1: + <%#= link_to '新建参赛作品', new_softapplication_path(:target=>'_blank'), :target=>'_blank' %> + <%= link_to '新建参赛作品', "javascript:void(0);", onclick: "$('#put-project-form').toggle();" %> + (先点击“新建参赛作品”,然后刷新页面,再继续步骤2。) +
    +
    + 步骤2: + <%= link_to '关联参赛作品', "javascript:void(0);", onclick: "$('#put-bid-form').toggle();" %> +
    +
    + + + + + + + +<% end %> + +
    + + + +<% if @contest.id == 2 or @contest.id == 3 or @contest.id == 6 %> + +<% @contesting_project.sort.reverse.each do |c_project|%> +<% if c_project.project %> +
    +
    + + 参赛作品: + <%= link_to(c_project.project.name, project_path(c_project.project), :target => '_blank') %> +
    +
    +
    + + 简介: + <%= c_project.project.description.truncate(90, omission: '...') %> +
    +
    +
    + + 发布时间: + <%= format_time c_project.created_at%> + + +
    +
    +<% end %> +
    +<% end %> +<% else %> +<% @contesting_softapplication.each do |c_softapplication|%> +<% if c_softapplication.softapplication %> +
    +
    + + 参赛作品: + <%= link_to(c_softapplication.softapplication.name, softapplication_path(c_softapplication.softapplication), :target => '_blank') %> +
    +
    +
    + + 简介: + <%= c_softapplication.softapplication.description.truncate(90, omission: '...') %> +
    +
    +
    + + 发布时间: + <%= format_time c_softapplication.created_at %> + + +
    +
    +<% end %> +
    +<% end %> +<% end %> + + + diff --git a/app/views/files/_show_all_attachment.html.erb b/app/views/files/_show_all_attachment.html.erb index 57ac897d2..07dc6a27f 100644 --- a/app/views/files/_show_all_attachment.html.erb +++ b/app/views/files/_show_all_attachment.html.erb @@ -1,64 +1,72 @@ +<% selAttachType =@attachtype %> +<% selContentType =@contenttype %> +<% attachmenttypes = @project.attachmenttypes %> <% delete_allowed = User.current.allowed_to?(:manage_files, @project) %> <% edit_allowed = User.current.allowed_to?(:manage_files, @project) %> - + + diff --git a/app/views/files/_sort_by_attachtypel.html.erb b/app/views/files/_sort_by_attachtypel.html.erb index 5d5f28653..01c57c490 100644 --- a/app/views/files/_sort_by_attachtypel.html.erb +++ b/app/views/files/_sort_by_attachtypel.html.erb @@ -1,66 +1,71 @@ <% selAttachType =@attachtype %> <% selContentType =@contenttype %> +<% attachmenttypes = @project.attachmenttypes %> <% delete_allowed = User.current.allowed_to?(:manage_files, @project) %> <% edit_allowed = User.current.allowed_to?(:manage_files, @project) %> -
    - -
    \ No newline at end of file diff --git a/app/views/files/getattachtype.js.erb b/app/views/files/getattachtype.js.erb index fe8458e20..3bc9863b2 100644 --- a/app/views/files/getattachtype.js.erb +++ b/app/views/files/getattachtype.js.erb @@ -1,5 +1,5 @@ - <% if @attachtype==0 && @contenttype==l(:attachment_all)%> - $("#all_browse_div").html('<%= j(render partial: "show_all_attachment")%>'); - <%else%> - $("#all_browse_div").html('<%= j(render partial: "sort_by_attachtypel")%>'); - <%end%> +<% if @attachtype==0 && @contenttype=='0' %> +$("#all_browse_div").html('<%= j(render partial: "show_all_attachment")%>'); +<%else%> +$("#all_browse_div").html('<%= j(render partial: "sort_by_attachtypel")%>'); +<%end%> diff --git a/app/views/files/index.html.erb b/app/views/files/index.html.erb index a43b2ae07..a4f63e4b2 100644 --- a/app/views/files/index.html.erb +++ b/app/views/files/index.html.erb @@ -1,225 +1,54 @@ <% attachmenttypes = @project.attachmenttypes %> <% sufixtypes = @project.contenttypes %> - - -<%=(@project.project_type == 1) ? t(:label_user_course) : t(:label_project) %>资源共享区 +<%= (@project.project_type == 1) ? t(:label_user_course) : t(:label_project) %>资源共享区
    <%#= link_to(l(:label_attachment_new), 'javascript:void(0);', :onclick=>"$('#file_buttons').slideToggle();", :class => 'icon icon-add') if User.current.allowed_to?(:manage_files, @project) %>
    <%#= link_to('上传文件', new_project_file_path(@project), :class => 'icon m5p5 button_submit') if User.current.allowed_to?(:manage_files, @project) %> - <%= link_to( l(:label_upload_files), 'javascript:void(0);', :class => 'icon m5p5 button_submit', :onclick => "$('#relation_file_div').slideUp();$('#upload_file_div').slideToggle('slow');") if User.current.allowed_to?(:manage_files, @project) %> + <%= link_to(l(:label_upload_files), 'javascript:void(0);', :class => 'icon m5p5 button_submit', :onclick => "$('#relation_file_div').slideUp();$('#upload_file_div').slideToggle('slow');") if User.current.allowed_to?(:manage_files, @project) %> <%= link_to(l(:label_relation_files), 'javascript:void(0);', :onclick => "$('#upload_file_div').slideUp();$('#relation_file_div').slideToggle();", :class => 'icon m5p5 button_submit') if User.current.allowed_to?(:manage_files, @project) %> <% if attachmenttypes.any? %>       - - <%= select_tag "attachment_browse", content_tag('option',l(:attachment_all)) +options_from_collection_for_select(attachmenttypes, "id", "typeName"), - :onchange=>"attachmenttypes_searchex(this.value)"%> - <% end %> - <% if sufixtypes.any? %> + + <%= select_tag "attachment_browse", content_tag(:option, l(:attachment_all), :value => '0') +options_from_collection_for_select(attachmenttypes, "id", "typeName"), + :onchange => "attachmenttypes_searchex(this.value)" %> + <% end %> + <% if sufixtypes.any? %>   - - <%= select_tag "attach_sufix_browse", content_tag('option', l(:attachment_all)) +options_for_select(sufixtypes), - :onchange=>"attachment_contenttypes_searchex(this.value)"%> + + <%= select_tag "attach_sufix_browse", content_tag(:option, l(:attachment_all), :value => '0') +options_for_select(sufixtypes), + :onchange => "attachment_contenttypes_searchex(this.value)" %> <% end %> - - <% end %> <% if !@entries.nil? && authorize_for('repositories', 'browse') %> <%= render :partial => 'dir_list' %> diff --git a/app/views/school/index.html.erb b/app/views/school/index.html.erb index 06b294f89..755bd3151 100644 --- a/app/views/school/index.html.erb +++ b/app/views/school/index.html.erb @@ -4,12 +4,17 @@ $(document).ready(function() { $("#province").html(""); + + + $.ajax({ type :"POST", url :'/school/get_province', - data :'text', - success: function(data){ - $("#province").append(data); + data: "send", + success: function(data, textStatus){ + + $("#province").append(data.text); + $("#schoollist").html(data.text_s); } }) diff --git a/app/views/softapplications/create.js.erb b/app/views/softapplications/create.js.erb new file mode 100644 index 000000000..7f4ac2284 --- /dev/null +++ b/app/views/softapplications/create.js.erb @@ -0,0 +1 @@ +alert('新建参赛作品成功!'); diff --git a/app/views/softapplications/index.html.erb b/app/views/softapplications/index.html.erb index 30a57b1a7..841a8a207 100644 --- a/app/views/softapplications/index.html.erb +++ b/app/views/softapplications/index.html.erb @@ -14,10 +14,10 @@
    <%= image_tag('/images/app1.png')%>
    <%= softapplication.description.truncate(95, omission: '...') %>
    -
    +
    <%contest = softapplication.contests.first%> -

    所属竞赛:<%= contest ? link_to(contest.name.truncate(10, omission: '...'), show_softapplication_contest_path(contest), title: contest.name.to_s ) : '尚未加入竞赛'%>

    -

    所属类别:<%= softapplication.app_type_name.truncate(5, omission: '...') %>

    +

    所属竞赛:<%= contest ? link_to(contest.name.truncate(14, omission: '...'), show_attendingcontest_contest_path(contest), title: contest.name.to_s ) : '尚未加入竞赛'%>

    +

    所属类别:<%= softapplication.app_type_name.truncate(10, omission: '...') %>

    系统支持:<%= softapplication.android_min_version_available %>

    @@ -36,4 +36,4 @@ -<% html_title l(:label_softapplication_list)%> \ No newline at end of file +<% html_title l(:label_contest_work_list)%> \ No newline at end of file diff --git a/app/views/softapplications/show.html.erb b/app/views/softapplications/show.html.erb index c2f260e60..4bd6871a0 100644 --- a/app/views/softapplications/show.html.erb +++ b/app/views/softapplications/show.html.erb @@ -27,7 +27,7 @@ 所属类别:<%= @softapplication.app_type_name %> <% contest = @softapplication.contests.first %> - 所属竞赛:<%= contest ? link_to(contest.name, show_softapplication_contest_path(contest)) : '尚未加入竞赛'%> + 所属竞赛:<%= contest ? link_to(contest.name, show_attendingcontest_contest_path(contest)) : '尚未加入竞赛'%> 发布人员:<%= @softapplication.user.name %> @@ -35,7 +35,7 @@ - 应用下载: + 作品下载: <% options = {:author => true, :deletable => @softapplication.user.eql?(User.current) } %><%= render :partial => 'attachments/app_link', :locals => {:attachments => @app_items, :options => options} %> @@ -56,13 +56,13 @@
    -
    应用简介:
    +
    作品简介:
    <%= @softapplication.description %>
    -
    应用得分:
    +
    作品得分:
    @@ -93,7 +93,7 @@
    -
    软件截图:
    +
    作品截图:
    <% @image_results.take(4).each do |attachment| %> <%= link_to_attachment_img attachment, :class => "soft-application", :download => "true" %> @@ -116,7 +116,7 @@ <% end %>
    -->
    -
    软件评论:
    +
    作品评论:
    评分: <%= rating_for @softapplication, dimension: :quality, class: 'rateable div_inline' %>(您可以重新打分,打分结果以最后一次打分为主!)
    diff --git a/app/views/test/index.html.erb b/app/views/test/index.html.erb index 17c7089d1..de889b15b 100644 --- a/app/views/test/index.html.erb +++ b/app/views/test/index.html.erb @@ -1,12 +1,12 @@

    test

    -<% users = User.all%> +<% user = User.find(1)%> -<% users.each do |user| %> + @@ -22,7 +22,7 @@ -<% end %> +
    idnameCISfilecountissuecountlevelattachconut
    <%= calculate_attachments(user) %>

    diff --git a/app/views/users/_mail_notifications.html.erb b/app/views/users/_mail_notifications.html.erb index ee6ccb00b..47face839 100644 --- a/app/views/users/_mail_notifications.html.erb +++ b/app/views/users/_mail_notifications.html.erb @@ -1,5 +1,5 @@

    -<%= label_tag "user_mail_notification", l(:description_user_mail_notification), :class => "hidden-for-sighted" %> +<%= label_tag "user_mail_notification", l(:description_user_mail_notification), :class => "hidden-for-sighted_bak" %> <%= select_tag( 'user[mail_notification]', options_for_select( diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index dd912cfe6..d521d59f5 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -33,15 +33,24 @@ <% when 'JournalsForMessage' %> <% if User.current.login == @user.login %> <%# if e.user_id == act.jour.id %> - <%= link_to("#{e.user.name}", user_path(e.user_id)) %> 有了<%= link_to("#{e.act.user.name}", user_path(e.user.id))%>的留言 + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_have_feedback) %><%= + link_to("#{e.act.user.name}", user_path(e.user.id)) %><%= l(:label_of_feedback) + l(:label_layouts_feedback) %> <%# else %> <%# end %> <% else %> - <%= link_to("#{@user.name}", user_path(e.user_id)) %> 有了新的动态 + <%= link_to("#{e.user.name}", user_path(e.user_id)) %> <%= l(:label_have_feedback) %><%= + link_to("#{e.act.user.name}", user_path(e.user.id)) %><%= l(:label_of_feedback) + l(:label_layouts_feedback) %> <% end %> -

    <%=textilizable act.notes %>

    - + +

    <%= textilizable act.notes %>

    +
    <%= link_to(l(:label_goto), user_newfeedback_user_path(e.user_id)) %> +
    + + + + +
    <%=(l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %>
    @@ -171,9 +180,26 @@
    <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %>
    -
    <%= link_to l(:label_find_all_comments), {:controller => 'issues', :action => 'show', :id => act.id} %><%= l(:label_comments_count, :count => e.act.journals.count)%>
    +
    <%= link_to l(:label_find_all_comments), {:controller => 'issues', :action => 'show', :id => act.id} %><%= l(:label_comments_count, :count => e.act.journals.count)%>
    +<% when 'Contest' %> + + <% if e.user == User.current%> + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> <%= l(:label_i_new_activity) %> <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %> + <% else %> + <%= link_to(h(e.user), user_path(e.user_id)) %> <%= l(:label_new_activity) %> <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %> + <% end %> + +

    <%= h act.description %>

    + + +
    + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> +
    + +<% else %> + <% f=1 %> <% end %> @@ -244,7 +270,7 @@
    <% else %> diff --git a/app/views/users/user_projects.html.erb b/app/views/users/user_projects.html.erb index 6b218a97d..ffb420339 100644 --- a/app/views/users/user_projects.html.erb +++ b/app/views/users/user_projects.html.erb @@ -1,6 +1,6 @@ <%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'new', :course => 0, :project_type => 0}, :class => 'icon icon-add') if(User.current.allowed_to?(:add_project, nil, :global => true) && @user == User.current)%> -温馨提示:项目可以是一次作业,也可以是别人或者自己创建的一项小工程~ + <%= watch_projects @state %> <% unless @memberships.empty? %>
    diff --git a/app/views/users/watch_projects.html.erb b/app/views/users/watch_projects.html.erb index 7842e6d52..42047d4ea 100644 --- a/app/views/users/watch_projects.html.erb +++ b/app/views/users/watch_projects.html.erb @@ -1,5 +1,5 @@ <%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'new', :course => 0, :project_type => 0}, :class => 'icon icon-add') if(User.current.allowed_to?(:add_project, nil, :global => true) && @user == User.current)%> -温馨提示:项目可以是一次作业,也可以是别人或者自己创建的一项小工程~ + <%= watch_projects @state%> <% if @watch_projects.count > 0 %> <% for watch_project in @watch_projects %> diff --git a/app/views/welcome/contest.html.erb b/app/views/welcome/contest.html.erb index 1b6336985..65c96e4d0 100644 --- a/app/views/welcome/contest.html.erb +++ b/app/views/welcome/contest.html.erb @@ -152,7 +152,11 @@
    <%= link_to(contest.name, show_contest_contest_path(contest.id), :class => "d-g-blue d-p-project-name", :title => "#{contest.name}", :target => "_blank") %> - (<%= link_to("含#{contest.contesting_softapplications.count}个app", show_softapplication_contest_path(contest), :target => "_blank") %>) + <% if contest.id == 2 or contest.id == 3 or contest.id == 6 %> + (<%= link_to("含#{contest.projects.where('is_public=1').count}个作品", show_attendingcontest_contest_path(contest), :target => "_blank") %>) + <% else %> + (<%= link_to("含#{contest.contesting_softapplications.count}个app", show_attendingcontest_contest_path(contest), :target => "_blank") %>) + <% end %>
    @@ -201,7 +205,7 @@
    -

    最新参赛应用

    +

    最新参赛作品

    <%= link_to "更多>>", {:controller => 'softapplications', :action => 'index', :host => Setting.contest_domain}, :target => "_blank" %>
    <% if Softapplication.count > 0%> diff --git a/config/locales/en.yml b/config/locales/en.yml index 4f995d794..0215d43b6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1306,6 +1306,7 @@ en: label_have_respond: had a respond label_welcome: Welcome + label_goto: Go to>> label_join: join Trustie! label_repository_new: link to existing SVN repository label_repository_path: path of repository @@ -1411,6 +1412,8 @@ en: label_user_activity_myself: About me label_user_all_respond: All replies label_layouts_feedback: Messages + label_have_feedback: Have + label_of_feedback: Of label_welcome_participate: participates #modify by men label_x_welcome_participate: @@ -1607,3 +1610,5 @@ en: label_activity_time: publish date + # ajax异步验证 + modal_valid_passing: can be used. diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 6b4a925c8..3d8a0e54e 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -189,6 +189,8 @@ zh: notice_unable_delete_time_entry: 无法删除工时 notice_issue_done_ratios_updated: 问题完成度已更新。 notice_gantt_chart_truncated: "这个表是截断的因为它超过了可以显示的最大数量(%{max})" + + error_complete_occupation: "请您填写工作单位,否则本系统的部分功能将无法正常使用。" error_can_t_load_default_data: "无法载入默认设置:%{value}" error_scm_not_found: "版本库中不存在该条目和(或)其修订版本。" @@ -1495,6 +1497,7 @@ zh: label_issue_praise_over: 我刚才顶过了~ label_issue_tread_over: 我刚才踩过了~ #end + label_goto: 前往>> label_issue_appraise_over: 只能评价一次哦! label_welcome_my_respond: 请在此留下你的意见和建议! label_no_current_fans: 该用户暂无粉丝 @@ -1575,6 +1578,8 @@ zh: label_my_honework_no_homework: 暂无任何作业! label_user_all_respond: 所有反馈 label_layouts_feedback: 留言 + label_have_feedback: 有了 + label_of_feedback: 的 label_welcome_participate: 参与了 #modify by men label_x_welcome_participate: @@ -1844,8 +1849,9 @@ zh: label_contest_project: 参赛项目 label_contest_softapplication: 参赛应用 label_contest_response: 用户反馈 - label_contest_watchers: 关注人员 + label_contest_watchers: 关注人数 label_contest_application: 参赛应用 + label_contest_work: 参赛作品 button_contesting_as_project: 我要参赛(新建项目) button_contesting_as_application: 我要参赛(发布应用) label_release_softapplication: 发布应用 @@ -1874,6 +1880,8 @@ zh: label_edit_softapplication: 修改应用 label_contest_delete: 删除竞赛 label_softapplication_list: 应用列表 + label_contest_work_list: 参赛作品列表 + label_attending_contest: 我要参赛 label_coursefile_sharingarea: 课程资源共享区 label_sort_by_activity: 按动态数排序 @@ -1887,4 +1895,7 @@ zh: label_relation_files: 关联已有资源 label_contest_settings: 配置竞赛 label_contest_delete: 删除竞赛 + + # ajax异步验证 + modal_valid_passing: 可以使用 \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index f0bdfede8..039e905cc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -67,15 +67,16 @@ RedmineApp::Application.routes.draw do end member do match 'add_softapplication' - match 'update_contest' , via: [:put] - match 'show_contest' , via: :get - match 'show_project' , via: :get - match 'show_softapplication', via: :get - match 'show_participator' , via: :get - match 'add' , via: [:get, :post] - match 'add_softapplication' , via: [:get, :post] - match 'create' , via: :post - match 'settings' , via: [:get, :post] + match 'update_contest' , via: [:put] + match 'show_contest' , via: :get + match 'show_project' , via: :get + match 'show_softapplication' , via: :get + match 'show_attendingcontest' , via: :get + match 'show_participator' , via: :get + match 'add' , via: [:get, :post] + match 'add_softapplication' , via: [:get, :post] + match 'create' , via: :post + match 'settings' , via: [:get, :post] end end @@ -126,6 +127,7 @@ RedmineApp::Application.routes.draw do match 'account/register', :to => 'account#register', :via => [:get, :post], :as => 'register' match 'account/lost_password', :to => 'account#lost_password', :via => [:get, :post], :as => 'lost_password' match 'account/activate', :to => 'account#activate', :via => :get + match 'account/valid_ajax', :to => 'account#valid_ajax', :via => :get match '/news/preview', :controller => 'previews', :action => 'news', :as => 'preview_news', :via => [:get, :post, :put] match '/issues/preview/new/:project_id', :to => 'previews#issue', :as => 'preview_new_issue', :via => [:get, :post, :put] @@ -456,7 +458,11 @@ RedmineApp::Application.routes.draw do get 'attachments/autocomplete' match 'attachments/autocomplete', :to => 'attachments#autocomplete', via: [:post] post 'attachments/relationfile', to: 'attachments#add_exist_file_to_project', as: 'attach_relation' - resources :attachments, :only => [:show, :destroy] + resources :attachments, :only => [:show, :destroy] do + collection do + match "updateType" , via: [:get, :post] + end + end resources :groups do member do @@ -546,6 +552,7 @@ RedmineApp::Application.routes.draw do match 'calls/:id/show_project', :controller => 'bids', :action => 'show_project', :as => 'project_for_bid' match 'calls/:id/show_project_homework', :controller => 'bids', :action => 'show_project_homework', :as => 'project_for_bid_homework' # by huang match 'calls/:id/add', :controller => 'bids', :action => 'add' + match 'calls/:id/delete', :controller => 'bids', :action => 'delete' match 'calls/:id/add_homework', :controller => 'bids', :action => 'add_homework', via: :post match 'calls/:id/new_submit_homework', to: 'bids#new_submit_homework', via: :get, as: 'new_submit_homework' match 'words/add_project_respond', :controller => 'words', :action => 'add_project_respond' diff --git a/db/migrate/20140505082635_drop_user_scores.rb b/db/migrate/20140505082635_drop_user_scores.rb new file mode 100644 index 000000000..fc65788f2 --- /dev/null +++ b/db/migrate/20140505082635_drop_user_scores.rb @@ -0,0 +1,5 @@ +class DropUserScores < ActiveRecord::Migration + def change + drop_table :user_scores + end +end diff --git a/db/migrate/20140505083218_create_user_levels.rb b/db/migrate/20140505083218_create_user_levels.rb new file mode 100644 index 000000000..f0e201212 --- /dev/null +++ b/db/migrate/20140505083218_create_user_levels.rb @@ -0,0 +1,8 @@ +class CreateUserLevels < ActiveRecord::Migration + def change + create_table :user_levels do |t| + t.integer :user_id + t.integer :level + end + end +end diff --git a/db/migrate/20140505083430_create_user_scores.rb b/db/migrate/20140505083430_create_user_scores.rb new file mode 100644 index 000000000..6c63aa327 --- /dev/null +++ b/db/migrate/20140505083430_create_user_scores.rb @@ -0,0 +1,11 @@ +class CreateUserScores < ActiveRecord::Migration + def change + create_table :user_scores do |t| + t.integer :user_id + t.integer :collaboration + t.integer :influence + t.integer :skill + t.integer :activity + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 1d329f3c3..74310a946 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -863,6 +863,11 @@ ActiveRecord::Schema.define(:version => 20140509020307) do add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id" add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id" + create_table "user_levels", :force => true do |t| + t.integer "user_id" + t.integer "level" + end + create_table "user_preferences", :force => true do |t| t.integer "user_id", :default => 0, :null => false t.text "others" @@ -873,16 +878,11 @@ ActiveRecord::Schema.define(:version => 20140509020307) do add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id" create_table "user_scores", :force => true do |t| - t.integer "user_id", :null => false - t.integer "collaboration" - t.integer "influence" - t.integer "skill" - t.integer "active" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "level" - t.integer "file" - t.integer "issue" + t.integer "user_id" + t.integer "collaboration" + t.integer "influence" + t.integer "skill" + t.integer "activity" end create_table "user_statuses", :force => true do |t| diff --git a/lib/redmine.rb b/lib/redmine.rb index 2c935074b..d22feb9fc 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -279,8 +279,10 @@ end ###new add by linchun Redmine::MenuManager.map :contest_menu do |menu| menu.push :respond, :show_contest_contest_path, :caption => :label_user_response - menu.push :project, :show_project_contest_path, :caption => :label_contest_project - menu.push :application, :show_softapplication_contest_path, :caption => :label_contest_application + #menu.push :project, :show_project_contest_path, :caption => :label_contest_project + #menu.push :application, :show_softapplication_contest_path, :caption => :label_contest_application + menu.push :attendingcontest, {:controller => 'contests', :action => 'show_attendingcontest'}, :caption => :label_attending_contest + # menu.push :attendingcontest, :show_attendingcontest_contest_path, :caption => :label_attendin,g_contest # menu.push :result, { :controller => 'bids', :action => 'show_results' }, # :caption => :label_bidding_results,:if => Proc.new{ |p| User.current.id == p } end diff --git a/public/images/edit.png b/public/images/edit/edit.png similarity index 100% rename from public/images/edit.png rename to public/images/edit/edit.png diff --git a/public/stylesheets/nyan.css b/public/stylesheets/nyan.css index 85751a088..e1088c8c0 100644 --- a/public/stylesheets/nyan.css +++ b/public/stylesheets/nyan.css @@ -1,468 +1,518 @@ /* TODO: base/common/page 准备封装一些基本样式组合调用 参考YUI *******************************************************************************/ +span[id^=valid_user]{ + padding-left: 10px; +} +.red{ + color: red; +} +.green{ + color: green; +} .border_box { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -box-sizing: border-box; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -box-sizing: border-box; } -.div_inline{ - display: inline-block; + +.div_inline { + display: inline-block; } + /*文字不换行*/ -.text_nowrap{ - word-break:keep-all; - white-space:nowrap; - overflow:hidden; - text-overflow:ellipsis; +.text_nowrap { + word-break: keep-all; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + /*字体 斜体*/ -.font_italic{ - font-style: italic; +.font_italic { + font-style: italic; } + /*字体加粗*/ -.font_bolder{ - font-weight: bolder; +.font_bolder { + font-weight: bolder; } -.text_center{ - text-align: center; + +.text_center { + text-align: center; } -.ph10_5{ /*padding horizontal 10% 5%*/ - padding: 0px 5% 0px 10%; + +.ph10_5 { + /*padding horizontal 10% 5%*/ + padding: 0px 5% 0px 10%; } -.clear_both{ - clear: both; + +.clear_both { + clear: both; } -.memo-content pre{ - white-space: normal; - word-wrap: break-word; + +.memo-content pre { + white-space: normal; + word-wrap: break-word; } + .highlight { - background-color: #fff34d; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - -moz-box-shadow: 0px 1px 2px rgba(0,0,0,0.7); - -webkit-box-shadow: 0px 1px 2px rgba(0,0,0,0.7); - box-shadow: 0px 1px 2px rgba(0,0,0,0.7); - color: #cc0033; - /*padding: 1px 3px;*/ - /*margin: 0 -4px;*/ - filter: alpha(opacity=70); - -moz-opacity: 0.7; - -webkit-opacity: 0.7; - opacity: 0.7; + background-color: #fff34d; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.7); + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.7); + box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.7); + color: #cc0033; + /*padding: 1px 3px;*/ + /*margin: 0 -4px;*/ + filter: alpha(opacity = 70); + -moz-opacity: 0.7; + -webkit-opacity: 0.7; + opacity: 0.7; } + .clearfix { - width: 100%; - height: 0px; - clear: both; - display: block; + width: 100%; + height: 0px; + clear: both; + display: block; } + .hidden { - display: none; + display: none; } -.font_color_orange{ - color: #E8770D; + +.font_color_orange { + color: #E8770D; } * { - font-family: Helvetica, Tahoma, Arial, "Microsoft YaHei", "微软雅黑", SimSun, "宋体", STXihei, "华文细黑", Heiti, "黑体", sans-serif; + font-family: Helvetica, Tahoma, Arial, "Microsoft YaHei", "微软雅黑", SimSun, "宋体", STXihei, "华文细黑", Heiti, "黑体", sans-serif; } + /* 模态窗口 *******************************************************************************/ /** jRating CSS **/ /**Div containing the color of the stars */ - .jRatingAverage { - background-color:#f62929; - position:relative; - top:0; - left:0; - z-index:2; - height:100%; + background-color: #f62929; + position: relative; + top: 0; + left: 0; + z-index: 2; + height: 100%; } + .jRatingColor { - background-color:#FFD400; /* bgcolor of the stars*/ - position:relative; - top:0; - left:0; - z-index:2; - height:100%; + background-color: #FFD400; /* bgcolor of the stars*/ + position: relative; + top: 0; + left: 0; + z-index: 2; + height: 100%; } /** Div containing the stars **/ .jStar { - position:relative; - left:0; - z-index:3; + position: relative; + left: 0; + z-index: 3; } /** P containing the rate informations **/ p.jRatingInfos { - position: absolute; - z-index:9999; - background: transparent url('bg_jRatingInfos.png') no-repeat; - color: #CACACA; - display: none; - width: 91px; - height: 29px; - font-size:16px; - text-align:center; - padding-top:5px; + position: absolute; + z-index: 9999; + background: transparent url('bg_jRatingInfos.png') no-repeat; + color: #CACACA; + display: none; + width: 91px; + height: 29px; + font-size: 16px; + text-align: center; + padding-top: 5px; } + p.jRatingInfos span.maxRate { - color:#c9c9c9; - font-size:14px; + color: #c9c9c9; + font-size: 14px; } + /* 模态窗口 *******************************************************************************/ -#lean_overlay{ - position: fixed; - z-index: 80; - top: 0; - left: 0; - height: 100%; - width: 100%; - background: #000; - display: none; +#lean_overlay { + position: fixed; + z-index: 80; + top: 0; + left: 0; + height: 100%; + width: 100%; + background: #000; + display: none; } #OpenWindow { - background: none repeat scroll 0 0 #FFFFFF; - border-radius: 5px 5px 5px 5px; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.7); - display: none; - padding-bottom: 2px; - width: 404px; - z-index: 100; - left: 50%; - margin-left: -202px; - opacity: 1; - position: fixed; - top: 200px; + background: none repeat scroll 0 0 #FFFFFF; + border-radius: 5px 5px 5px 5px; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.7); + display: none; + padding-bottom: 2px; + width: 404px; + z-index: 100; + left: 50%; + margin-left: -202px; + opacity: 1; + position: fixed; + top: 200px; } + #OpenWindow-header { - background: url("/images/showmodal/hd-bg.png") repeat scroll 0 0 transparent; - border-bottom: 1px solid #CCCCCC; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - padding: 18px 18px 14px; -} -#OpenWindow-content{ - -webkit-transition: all 0.2s linear 1s; - -o-transition: all 0.2s linear 1s; - -moz-transition: all 0.2s linear 1s; - transition: all 0.2s linear 1s; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - padding: 18px 18px 14px; + background: url("/images/showmodal/hd-bg.png") repeat scroll 0 0 transparent; + border-bottom: 1px solid #CCCCCC; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + padding: 18px 18px 14px; +} + +#OpenWindow-content { + -webkit-transition: all 0.2s linear 1s; + -o-transition: all 0.2s linear 1s; + -moz-transition: all 0.2s linear 1s; + transition: all 0.2s linear 1s; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + padding: 18px 18px 14px; } .modal_close { - background: url("/images/showmodal/modal_close.png") repeat scroll 0 0 transparent; - display: block; - height: 14px; - position: absolute; - right: 12px; - top: 12px; - width: 14px; - z-index: 2; + background: url("/images/showmodal/modal_close.png") repeat scroll 0 0 transparent; + display: block; + height: 14px; + position: absolute; + right: 12px; + top: 12px; + width: 14px; + z-index: 2; } + body { - /*font-size: 13px;*/ + /*font-size: 13px;*/ } + #OpenWindow .txt-fld { - border-bottom: 1px solid #EEEEEE; - padding: 14px 20px; - position: relative; - text-align: right; - width: 364px; + border-bottom: 1px solid #EEEEEE; + padding: 14px 20px; + position: relative; + text-align: right; + width: 364px; } + #OpenWindow .txt-fld input { - background: none repeat scroll 0 0 #F7F7F7; - border-color: #CCCCCC #E7E6E6 #E7E6E6 #CCCCCC; - border-radius: 4px 4px 4px 4px; - border-style: solid; - border-width: 1px; - color: #222222; - font-family: "Helvetica Neue"; - font-size: 1.2em; - outline: medium none; - padding: 8px; - width: 244px; + background: none repeat scroll 0 0 #F7F7F7; + border-color: #CCCCCC #E7E6E6 #E7E6E6 #CCCCCC; + border-radius: 4px 4px 4px 4px; + border-style: solid; + border-width: 1px; + color: #222222; + font-family: "Helvetica Neue"; + font-size: 1.2em; + outline: medium none; + padding: 8px; + width: 244px; } + #OpenWindow .txt-fld input.good_input { - background: url("/images/showmodal/good.png") no-repeat scroll 236px center #DEF5E1; + background: url("/images/showmodal/good.png") no-repeat scroll 236px center #DEF5E1; } + #OpenWindow .btn-fld { - overflow: hidden; - padding: 12px 20px 12px 130px; - width: 254px; + overflow: hidden; + padding: 12px 20px 12px 130px; + width: 254px; } + #OpenWindow button { - background: none repeat scroll 0 0 #3F9D4A; - border: medium none; - border-radius: 4px 4px 4px 4px; - color: #FFFFFF; - float: right; - font-family: Verdana; - font-size: 13px; - font-weight: bold; - overflow: visible; - padding: 7px 10px; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4); - width: auto; + background: none repeat scroll 0 0 #3F9D4A; + border: medium none; + border-radius: 4px 4px 4px 4px; + color: #FFFFFF; + float: right; + font-family: Verdana; + font-size: 13px; + font-weight: bold; + overflow: visible; + padding: 7px 10px; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4); + width: auto; } + /********************************************************************************************************************* * Wen的OpenWindow *********************************************************************************************************************/ #WOpenWindow { - background: none repeat scroll 0 0 #FFFFFF; - border-radius: 5px 5px 5px 5px; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.7); - display: none; - padding-bottom: 2px; - width: 1000px; - z-index: 100; - left: 50%; - margin-left: -202px; - opacity: 1; - position: fixed; - top: 200px; -} -#WOpenWindow .school_list{ - width: 900px; - line-height: 20px; - + background: none repeat scroll 0 0 #FFFFFF; + border-radius: 5px 5px 5px 5px; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.7); + display: none; + padding-bottom: 2px; + width: 1000px; + z-index: 100; + left: 50%; + margin-left: -202px; + opacity: 1; + position: fixed; + top: 200px; +} + +#WOpenWindow .school_list { + width: 900px; + line-height: 20px; + } + #WOpenWindow-header { - background: url("/images/showmodal/hd-bg.png") repeat scroll 0 0 transparent; - border-bottom: 1px solid #CCCCCC; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - padding: 18px 18px 14px; + background: url("/images/showmodal/hd-bg.png") repeat scroll 0 0 transparent; + border-bottom: 1px solid #CCCCCC; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + padding: 18px 18px 14px; } -#WOpenWindow-content{ - -webkit-transition: all 0.2s linear 1s; - -o-transition: all 0.2s linear 1s; - -moz-transition: all 0.2s linear 1s; - transition: all 0.2s linear 1s; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - padding: 18px 18px 14px; + +#WOpenWindow-content { + -webkit-transition: all 0.2s linear 1s; + -o-transition: all 0.2s linear 1s; + -moz-transition: all 0.2s linear 1s; + transition: all 0.2s linear 1s; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + padding: 18px 18px 14px; } -#WOpenWindow .content{ - width: 1000px; - height: 220px; - overflow: scroll; + +#WOpenWindow .content { + width: 1000px; + height: 220px; + overflow: scroll; } -#WOpenWindow .pcontent{ +#WOpenWindow .pcontent { } - #WOpenWindow .txt-fld { - border-bottom: 1px solid #EEEEEE; - padding: 14px 20px; - position: relative; - text-align: right; - width: 364px; + border-bottom: 1px solid #EEEEEE; + padding: 14px 20px; + position: relative; + text-align: right; + width: 364px; } + #WOpenWindow .txt-fld input { - background: none repeat scroll 0 0 #F7F7F7; - border-color: #CCCCCC #E7E6E6 #E7E6E6 #CCCCCC; - border-radius: 4px 4px 4px 4px; - border-style: solid; - border-width: 1px; - color: #222222; - font-family: "Helvetica Neue"; - font-size: 1.2em; - outline: medium none; - padding: 8px; - width: 244px; + background: none repeat scroll 0 0 #F7F7F7; + border-color: #CCCCCC #E7E6E6 #E7E6E6 #CCCCCC; + border-radius: 4px 4px 4px 4px; + border-style: solid; + border-width: 1px; + color: #222222; + font-family: "Helvetica Neue"; + font-size: 1.2em; + outline: medium none; + padding: 8px; + width: 244px; } + #WOpenWindow .txt-fld input.good_input { - background: url("/images/showmodal/good.png") no-repeat scroll 236px center #DEF5E1; + background: url("/images/showmodal/good.png") no-repeat scroll 236px center #DEF5E1; } + #WOpenWindow .btn-fld { - overflow: hidden; - padding: 12px 20px 12px 130px; - width: 254px; + overflow: hidden; + padding: 12px 20px 12px 130px; + width: 254px; } + #WOpenWindow button { - background: none repeat scroll 0 0 #3F9D4A; - border: medium none; - border-radius: 4px 4px 4px 4px; - color: #FFFFFF; - float: right; - font-family: Verdana; - font-size: 13px; - font-weight: bold; - overflow: visible; - padding: 7px 10px; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4); - width: auto; + background: none repeat scroll 0 0 #3F9D4A; + border: medium none; + border-radius: 4px 4px 4px 4px; + color: #FFFFFF; + float: right; + font-family: Verdana; + font-size: 13px; + font-weight: bold; + overflow: visible; + padding: 7px 10px; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4); + width: auto; } - /*********************************************************************************************************************/ - /* 按钮 *******************************************************************************/ .orangeButton { - background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #e87832), color-stop(1, #db6825)); - background:-moz-linear-gradient(top, #e87832 5%, #db6825 100%); - background:-webkit-linear-gradient(top, #e87832 5%, #db6825 100%); - background:-o-linear-gradient(top, #e87832 5%, #db6825 100%); - background:-ms-linear-gradient(top, #e87832 5%, #db6825 100%); - background:linear-gradient(to bottom, #e87832 5%, #db6825 100%); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e87832', endColorstr='#db6825',GradientType=0); - background-color:#e87832; - -moz-border-radius:4px; - -webkit-border-radius:4px; - border-radius:4px; - border:1px solid #e87832; - display:inline-block; - cursor:pointer; - color:#ffffff; - font-size:16px; - padding:4px 11px; - text-decoration:none; - text-shadow:0px 1px 0px #754529; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #e87832), color-stop(1, #db6825)); + background: -moz-linear-gradient(top, #e87832 5%, #db6825 100%); + background: -webkit-linear-gradient(top, #e87832 5%, #db6825 100%); + background: -o-linear-gradient(top, #e87832 5%, #db6825 100%); + background: -ms-linear-gradient(top, #e87832 5%, #db6825 100%); + background: linear-gradient(to bottom, #e87832 5%, #db6825 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#e87832', endColorstr = '#db6825', GradientType = 0); + background-color: #e87832; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + border: 1px solid #e87832; + display: inline-block; + cursor: pointer; + color: #ffffff; + font-size: 16px; + padding: 4px 11px; + text-decoration: none; + text-shadow: 0px 1px 0px #754529; } + .orangeButton:hover { - background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #db6825), color-stop(1, #e87832)); - background:-moz-linear-gradient(top, #db6825 5%, #e87832 100%); - background:-webkit-linear-gradient(top, #db6825 5%, #e87832 100%); - background:-o-linear-gradient(top, #db6825 5%, #e87832 100%); - background:-ms-linear-gradient(top, #db6825 5%, #e87832 100%); - background:linear-gradient(to bottom, #db6825 5%, #e87832 100%); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#db6825', endColorstr='#e87832',GradientType=0); - background-color:#db6825; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #db6825), color-stop(1, #e87832)); + background: -moz-linear-gradient(top, #db6825 5%, #e87832 100%); + background: -webkit-linear-gradient(top, #db6825 5%, #e87832 100%); + background: -o-linear-gradient(top, #db6825 5%, #e87832 100%); + background: -ms-linear-gradient(top, #db6825 5%, #e87832 100%); + background: linear-gradient(to bottom, #db6825 5%, #e87832 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#db6825', endColorstr = '#e87832', GradientType = 0); + background-color: #db6825; } + .orangeButton:active { - position:relative; - top:1px; + position: relative; + top: 1px; } + input[class~='whiteButton'], .whiteButton { - -moz-box-shadow:inset 0px 1px 0px 0px #ffffff; - -webkit-box-shadow:inset 0px 1px 0px 0px #ffffff; - box-shadow:inset 0px 1px 0px 0px #ffffff; - background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ffffff), color-stop(1, #f6f6f6)); - background:-moz-linear-gradient(top, #ffffff 5%, #f6f6f6 100%); - background:-webkit-linear-gradient(top, #ffffff 5%, #f6f6f6 100%); - background:-o-linear-gradient(top, #ffffff 5%, #f6f6f6 100%); - background:-ms-linear-gradient(top, #ffffff 5%, #f6f6f6 100%); - background:linear-gradient(to bottom, #ffffff 5%, #f6f6f6 100%); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6',GradientType=0); - background-color:#ffffff; - -moz-border-radius:6px; - -webkit-border-radius:6px; - border-radius:6px; - border:1px solid #dcdcdc; - display:inline-block; - color:#666666; + -moz-box-shadow: inset 0px 1px 0px 0px #ffffff; + -webkit-box-shadow: inset 0px 1px 0px 0px #ffffff; + box-shadow: inset 0px 1px 0px 0px #ffffff; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ffffff), color-stop(1, #f6f6f6)); + background: -moz-linear-gradient(top, #ffffff 5%, #f6f6f6 100%); + background: -webkit-linear-gradient(top, #ffffff 5%, #f6f6f6 100%); + background: -o-linear-gradient(top, #ffffff 5%, #f6f6f6 100%); + background: -ms-linear-gradient(top, #ffffff 5%, #f6f6f6 100%); + background: linear-gradient(to bottom, #ffffff 5%, #f6f6f6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#f6f6f6', GradientType = 0); + background-color: #ffffff; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border: 1px solid #dcdcdc; + display: inline-block; + color: #666666; color: #116699; - font-family:arial; - font-size:15px; - font-weight:bold; - padding:6px 24px; + font-family: arial; + font-size: 15px; + font-weight: bold; + padding: 6px 24px; /*padding:3px 10px;*/ - text-decoration:none; - text-shadow:0px 1px 0px #ffffff; + text-decoration: none; + text-shadow: 0px 1px 0px #ffffff; } + input[class~='whiteButton']:hover, .whiteButton:hover { color: #c61a1a; - background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f6f6f6), color-stop(1, #ffffff)); - background:-moz-linear-gradient(top, #f6f6f6 5%, #ffffff 100%); - background:-webkit-linear-gradient(top, #f6f6f6 5%, #ffffff 100%); - background:-o-linear-gradient(top, #f6f6f6 5%, #ffffff 100%); - background:-ms-linear-gradient(top, #f6f6f6 5%, #ffffff 100%); - background:linear-gradient(to bottom, #f6f6f6 5%, #ffffff 100%); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f6f6f6', endColorstr='#ffffff',GradientType=0); - text-decoration: none; - background-color:#f6f6f6; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f6f6f6), color-stop(1, #ffffff)); + background: -moz-linear-gradient(top, #f6f6f6 5%, #ffffff 100%); + background: -webkit-linear-gradient(top, #f6f6f6 5%, #ffffff 100%); + background: -o-linear-gradient(top, #f6f6f6 5%, #ffffff 100%); + background: -ms-linear-gradient(top, #f6f6f6 5%, #ffffff 100%); + background: linear-gradient(to bottom, #f6f6f6 5%, #ffffff 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#f6f6f6', endColorstr = '#ffffff', GradientType = 0); + text-decoration: none; + background-color: #f6f6f6; } + input[class~='whiteButton']:active, .whiteButton:active { - position:relative; - top:1px; + position: relative; + top: 1px; text-decoration: none; } + input[class~='m3p10'], .m3p10 { - margin: 0; - padding: 3px 10px; - height: 20px; - display: inline-block; + margin: 0; + padding: 3px 10px; + height: 20px; + display: inline-block; } -input[class~='h30'], .h30{ - height: 30px; + +input[class~='h30'], .h30 { + height: 30px; } + /* minimal *******************************************************************************/ input[class='nyan-minimal'], .nyan-minimal { - background: #e3e3e3; - border: 1px solid #bbb; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: inset 0 0 1px 1px #f6f6f6; - -moz-box-shadow: inset 0 0 1px 1px #f6f6f6; - box-shadow: inset 0 0 1px 1px #f6f6f6; - color: #333; - font: bold 12px "helvetica neue", helvetica, arial, sans-serif; - line-height: 1; - padding: 8px 0 9px; - text-align: center; - text-shadow: 0 1px 0 #fff; - padding-left:10px; - padding-right:10px; + background: #e3e3e3; + border: 1px solid #bbb; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 0 1px 1px #f6f6f6; + -moz-box-shadow: inset 0 0 1px 1px #f6f6f6; + box-shadow: inset 0 0 1px 1px #f6f6f6; + color: #333; + font: bold 12px "helvetica neue", helvetica, arial, sans-serif; + line-height: 1; + padding: 8px 0 9px; + text-align: center; + text-shadow: 0 1px 0 #fff; + padding-left: 10px; + padding-right: 10px; } + input[class='nyan-minimal'], .nyan-minimal:hover { background: #d9d9d9; -webkit-box-shadow: inset 0 0 1px 1px #eaeaea; -moz-box-shadow: inset 0 0 1px 1px #eaeaea; box-shadow: inset 0 0 1px 1px #eaeaea; color: #222; - cursor: pointer; + cursor: pointer; } + input[class='nyan-minimal'], .nyan-minimal:active { background: #d0d0d0; -webkit-box-shadow: inset 0 0 1px 1px #e3e3e3; -moz-box-shadow: inset 0 0 1px 1px #e3e3e3; box-shadow: inset 0 0 1px 1px #e3e3e3; - color: #000; + color: #000; } /* clean gray *******************************************************************************/ input[class='nyan-clean-gray'], .nyan-clean-gray { - background-color: #eeeeee; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #cccccc)); - background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); - background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); - background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); - background-image: -o-linear-gradient(top, #eeeeee, #cccccc); - background-image: linear-gradient(top, #eeeeee, #cccccc); - border: 1px solid #ccc; - border-bottom: 1px solid #bbb; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - color: #333; - font: bold 11px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; - line-height: 1; - padding: 8px 0; - text-align: center; - text-shadow: 0 1px 0 #eee; - padding-left:10px; - padding-right:10px; + background-color: #eeeeee; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #cccccc)); + background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); + background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); + background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); + background-image: -o-linear-gradient(top, #eeeeee, #cccccc); + background-image: linear-gradient(top, #eeeeee, #cccccc); + border: 1px solid #ccc; + border-bottom: 1px solid #bbb; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + color: #333; + font: bold 11px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; + line-height: 1; + padding: 8px 0; + text-align: center; + text-shadow: 0 1px 0 #eee; + padding-left: 10px; + padding-right: 10px; } + input[class='nyan-clean-gray']:hover, .nyan-clean-gray:hover { background-color: #dddddd; background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #bbbbbb)); @@ -474,221 +524,252 @@ input[class='nyan-clean-gray']:hover, .nyan-clean-gray:hover { border: 1px solid #bbb; border-bottom: 1px solid #999; cursor: pointer; - text-shadow: 0 1px 0 #ddd; + text-shadow: 0 1px 0 #ddd; } + input[class='nyan-clean-gray']:active, .nyan-clean-gray:active { border: 1px solid #aaa; border-bottom: 1px solid #888; -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; } - #share_label { line-height: 1.4em } /* 项目左侧siderbar下面工具集的样式 *******************************************************************************/ - .tools a:link{ - color: #116699; - text-decoration:none; - width:100px; - padding:3px 5px 0px 5px; -} -.tools a:visited{ - color: #116699; - text-decoration:none; - padding:3px 5px 0px 5px; - width:100px; -} -.tools a:hover{ - color:white; - padding:3px 3px 0px 20px; - width:88px; - text-decoration:none; - background-color:#539D26; -} -.tools a:active{ - color:white; - padding:3px 3px 0px 20px; - width:88px; - text-decoration:none; - background-color:#BD06B4; -} - -.tools ul{ - list-style-type: none; - margin: 0px 0px 0px 10% ; - padding: 0; -} -.tools li{ - background: url("/images/sidebar/tool_tag_alpha.png") 10px 30% no-repeat transparent; - color: #3e3e3e; - font-weight: 400; - line-height: 1.5em; - margin: 0px 0px 10px; - padding: 0px 0px 0px 30px; - font-size: 1.0em; - /*border-bottom: 1px solid #CCC;*/ -} -.tools li:last-child{ - border: none; +.tools a:link { + color: #116699; + text-decoration: none; + width: 100px; + padding: 3px 5px 0px 5px; +} + +.tools a:visited { + color: #116699; + text-decoration: none; + padding: 3px 5px 0px 5px; + width: 100px; +} + +.tools a:hover { + color: white; + padding: 3px 3px 0px 20px; + width: 88px; + text-decoration: none; + background-color: #539D26; } + +.tools a:active { + color: white; + padding: 3px 3px 0px 20px; + width: 88px; + text-decoration: none; + background-color: #BD06B4; +} + +.tools ul { + list-style-type: none; + margin: 0px 0px 0px 10%; + padding: 0; +} + +.tools li { + background: url("/images/sidebar/tool_tag_alpha.png") 10px 30% no-repeat transparent; + color: #3e3e3e; + font-weight: 400; + line-height: 1.5em; + margin: 0px 0px 10px; + padding: 0px 0px 0px 30px; + font-size: 1.0em; + /*border-bottom: 1px solid #CCC;*/ +} + +.tools li:last-child { + border: none; +} + /* 贴吧 forum memo *******************************************************************************/ -div.actions input[type="text"]{ - padding: 3px; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -box-sizing: border-box; +div.actions input[type="text"] { + padding: 3px; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -box-sizing: border-box; } + .lz { - position:relative; + position: relative; min-height: 200px; margin: 10px 2px; border-radius: 5px; box-shadow: 1px 1px 6px #97EBF4; border: 1px solid #F1F1F1; } -.lz-left{ - float: left; - margin: 2%; - padding: 0; + +.lz-left { + float: left; + margin: 2%; + padding: 0; } -.memo-section{ + +.memo-section { width: auto; margin-left: 15%; padding-top: 1%; border-left: 2px dotted #EEE; } -.memo-title{ - margin: 1em 0; - padding-left: 1%; - padding-bottom: 1%; - font-weight: bold; - border-bottom: 1px dashed rgb(204, 204, 204); -} -.memo-content{ - padding: 1%; - margin: 1%; - margin-bottom: 40px; - background-color: #F8F8F8; - border-radius: 3px; -} -.memo-timestamp{ - position: absolute; - bottom: 0px; - right: 0; - margin: 20px; -} -.replies{ - overflow:hidden; - max-width: 100%; - float: right; - /*max-width: 90%;*/ -} -.reply-box{ - float: right; - width: 640px; - padding: 3%; - /*border: 2px solid #C6F3F9;*/ - border-top: 2px double #C6F3F9; - /*border-radius: 10px;*/ + +.memo-title { + margin: 1em 0; + padding-left: 1%; + padding-bottom: 1%; + font-weight: bold; + border-bottom: 1px dashed rgb(204, 204, 204); } + +.memo-content { + padding: 1%; + margin: 1%; + margin-bottom: 40px; + background-color: #F8F8F8; + border-radius: 3px; +} + +.memo-timestamp { + position: absolute; + bottom: 0px; + right: 0; + margin: 20px; +} + +.replies { + overflow: hidden; + max-width: 100%; + float: right; + /*max-width: 90%;*/ +} + +.reply-box { + float: right; + width: 640px; + padding: 3%; + /*border: 2px solid #C6F3F9;*/ + border-top: 2px double #C6F3F9; + /*border-radius: 10px;*/ +} + .memo-content img, .comments img { - overflow:hidden; - /*width: 100%;*/ - max-width: 500px; - height: auto !important; - width:expression(this.width > 500 ? "500px" : this.width+"px"); -} -table.content-text-list tbody tr td.sticky, div.memo-section .sticky{ - background: url(../images/zding.gif) no-repeat 0 1px; padding-left: 35px; - /*background: url(../images/2uparrow.png) no-repeat 0 1px; padding-left: 20px;*/ - font-weight: bold; - margin-left: 5px; -} -table.content-text-list tbody tr td.locked, div.memo-section .locked{ - background: url(../images/locked.png) no-repeat 0 1px; - padding-left: 20px; - margin-left: 5px; + overflow: hidden; + /*width: 100%;*/ + max-width: 500px; + height: auto !important; + width: expression(this.width > 500 ? "500px" : this.width+"px"); } + +table.content-text-list tbody tr td.sticky, div.memo-section .sticky { + background: url(../images/zding.gif) no-repeat 0 1px; + padding-left: 35px; + /*background: url(../images/2uparrow.png) no-repeat 0 1px; padding-left: 20px;*/ + font-weight: bold; + margin-left: 5px; +} + +table.content-text-list tbody tr td.locked, div.memo-section .locked { + background: url(../images/locked.png) no-repeat 0 1px; + padding-left: 20px; + margin-left: 5px; +} + /* 问题列表 *******************************************************************************/ .query_form { } + .content-title-top { - padding-bottom: 10px; + padding-bottom: 10px; } + .custom_query { - max-width : 95%; - margin : 3px auto; - border-bottom : solid 1px #; - -o-box-shadow :inset 0px 1px 1px 0px #FAFAFA; - -moz-box-shadow :inset 0px 1px 1px 0px #FAFAFA; - -webkit-box-shadow:inset 0px 1px 1px 0px #FAFAFA; - box-shadow :inset 0px 1px 1px 0px #FAFAFA; + max-width: 95%; + margin: 3px auto; + -o-box-shadow: inset 0px 1px 1px 0px #FAFAFA; + -moz-box-shadow: inset 0px 1px 1px 0px #FAFAFA; + -webkit-box-shadow: inset 0px 1px 1px 0px #FAFAFA; + box-shadow: inset 0px 1px 1px 0px #FAFAFA; } + .custom_query>span { - display : block; - max-width : 100%; - line-height : 1.8em; - font-size : 14px; - text-align : center; - border-radius : 3px; - background-color: #DBEBEE; + display: block; + max-width: 100%; + line-height: 1.8em; + font-size: 14px; + text-align: center; + border-radius: 3px; + background-color: #DBEBEE; } + .custom_query > .hide-when-print { - max-width : 97%; - padding : 1px 3px 6px; - margin : 0 auto; - background-color: #F7F7F7; - border-bottom-left-radius : 10px; - border-bottom-right-radius: 10px; + max-width: 97%; + padding: 1px 3px 6px; + margin: 0 auto; + background-color: #F7F7F7; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; } + /* 项目新闻栏 *******************************************************************************/ .add_frame { - position:relative; + position: relative; margin: 5px 10px 2px 0px; padding: 10px 10px; border-radius: 5px; /*box-shadow: 1px 1px 6px rgb(241,241,241);*/ /*border: 1px solid #F1F1F1;*/ } -.add_frame_header{ - background: linear-gradient(#fbfbfb, #f8f8f8) repeat scroll 0% 0% transparent; - border-bottom: 1px solid rgb(226,226,226); - box-shadow: 0px 1px 0px white, 0px, -1px 0px rgb(245,245,245); - height: 39px; - font-size: 15px; - line-height: 26px; - height: 30px; - font-size: 1.5em; - padding-left: 4%; +.add_frame_header { + background: linear-gradient(#fbfbfb, #f8f8f8) repeat scroll 0% 0% transparent; + border-bottom: 1px solid rgb(226, 226, 226); + box-shadow: 0px 1px 0px white, 0px, -1px 0px rgb(245, 245, 245); + height: 39px; + font-size: 15px; + + line-height: 26px; + height: 30px; + font-size: 1.5em; + padding-left: 4%; } + /* xx动态框 *******************************************************************************/ -.project_acts *{border:1px solid #000000;} -.project_acts{ - height: 250px; +.project_acts * { + border: 1px solid #000000; +} + +.project_acts { + height: 250px; } -.project_acts .project_acts_left{ - float: left; - height: 100%; - width: 61%; + +.project_acts .project_acts_left { + float: left; + height: 100%; + width: 61%; } -.project_acts .project_acts_right{ - height: 100%; - margin-left: 61%; + +.project_acts .project_acts_right { + height: 100%; + margin-left: 61%; } + /* stores 资源库 *******************************************************************************/ .line_block { @@ -701,152 +782,361 @@ table.content-text-list tbody tr td.locked, div.memo-section .locked{ -moz-box-sizing: border-box; -box-sizing: border-box; } -.resource_sum{ - height: auto; -} -.line_block p{ - margin: 20px -2px 0px 0px; - /*background: linear-gradient(#ffffff, #e5e5e5) repeat scroll 0% 0% transparent;*/ - border-bottom: 1px solid rgb(226,226,226); - border-top-left-radius : 6px; - border-top-right-radius : 6px; - box-shadow: 0px 1px 0px white, 0px, -1px 0px rgb(245,245,245); - height: 39px; - font-size: 15px; - line-height: 26px; - height: 30px; - font-size: 1.5em; - padding-left: 4%; - border-bottom: 1px solid rgb(21, 165, 200); -} -.resource_sum, .line_blo{ - border: 1px solid #eeeeee; + +.resource_sum { + height: auto; } + +.line_block p { + margin: 20px -2px 0px 0px; + /*background: linear-gradient(#ffffff, #e5e5e5) repeat scroll 0% 0% transparent;*/ + border-bottom: 1px solid rgb(226, 226, 226); + border-top-left-radius: 6px; + border-top-right-radius: 6px; + box-shadow: 0px 1px 0px white, 0px, -1px 0px rgb(245, 245, 245); + height: 39px; + font-size: 15px; + line-height: 26px; + height: 30px; + font-size: 1.5em; + padding-left: 4%; + border-bottom: 1px solid rgb(21, 165, 200); +} + +.resource_sum, .line_blo { + border: 1px solid #eeeeee; +} + .filename { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - max-width: 247px; -} -.line_block .table1{ - display: table; - width: 100%; - border-left: 1px solid #eeeeee; - border-right: 1px solid #eeeeee; - border-bottom: 1px solid #eeeeee; -} -.line_block .table_row1{ - height: 38px; - display: table-row; - width: 100%; -} -.line_block .table_cell1{ - display: table-cell; - padding: 2px; - border: 1px solid #FFFFFF; - vertical-align: middle; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + max-width: 230px; } -.line_block .filename1{ - width: 62%; - padding-left: 8px; +.line_block .table1 { + display: table; + width: 100%; + border-left: 1px solid #eeeeee; + border-right: 1px solid #eeeeee; + border-bottom: 1px solid #eeeeee; } -.line_block .filedown1{ - width: 19%; - text-align: center; + +.line_block .table_row1 { + height: 38px; + display: table-row; + width: 100%; } -.line_block .downicon1{ - width: 19%; - text-align: center; + +.line_block .table_cell1 { + display: table-cell; + padding: 2px; + border: 1px solid #FFFFFF; + vertical-align: middle; } -.blue-color, .blue-color a{ - color: rgb(109,153,178); +.line_block .filename1 { + width: 62%; + padding-left: 8px; } -.gray-color, .gray-color a{ - color: rgb(153,153,153); + +.line_block .filedown1 { + width: 19%; + text-align: center; } + +.line_block .downicon1 { + width: 19%; + text-align: center; +} + +.blue-color, .blue-color a { + color: rgb(109, 153, 178); +} + +.gray-color, .gray-color a { + color: rgb(153, 153, 153); +} + #top_field { - max-width: 100%; - margin: 20px auto; -} -.blueinputbar{ - -o-transform-origin: 138px 46.5px; - -o-transition: background 0.2s cubic-bezier(0, 0, 1, 1); - -webkit-border-bottom-left-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -webkit-border-radius: 3px; - -webkit-border-top-left-radius: 3px; - -webkit-border-top-right-radius: 3px; - -webkit-transform-origin: 138px 46.5px; - -webkit-transition: background 0.2s cubic-bezier(0, 0, 1, 1); - -webkit-transition-delay: 0; - -webkit-transition-duration: 0.2s; - -webkit-transition-property: background; - -webkit-transition-timing-function: cubic-bezier(0, 0, 1, 1); - align-content: stretch; - align-items: stretch; - align-self: stretch; - background: #FFFFFF; - border-bottom: 1px solid #56B4EF; - border-left: 1px solid #56B4EF; - border-radius: 3px; - border-right: 1px solid #56B4EF; - border-top: 1px solid #56B4EF; - color: #333333; - justify-content: flex-start; - margin: 0px; - order: 0; - outline: #333333 0px; - overflow-wrap: break-word; - resize: none; - text-shadow: none; - transform-origin: 138px 46.5px; - transition: background 0.2s cubic-bezier(0, 0, 1, 1); - unicode-bidi: embed; - vertical-align: top; - word-wrap: break-word; + max-width: 100%; + margin: 20px auto; } + +.blueinputbar { + -o-transform-origin: 138px 46.5px; + -o-transition: background 0.2s cubic-bezier(0, 0, 1, 1); + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-radius: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -webkit-transform-origin: 138px 46.5px; + -webkit-transition: background 0.2s cubic-bezier(0, 0, 1, 1); + -webkit-transition-delay: 0; + -webkit-transition-duration: 0.2s; + -webkit-transition-property: background; + -webkit-transition-timing-function: cubic-bezier(0, 0, 1, 1); + align-content: stretch; + align-items: stretch; + align-self: stretch; + background: #FFFFFF; + border-bottom: 1px solid #56B4EF; + border-left: 1px solid #56B4EF; + border-radius: 3px; + border-right: 1px solid #56B4EF; + border-top: 1px solid #56B4EF; + color: #333333; + justify-content: flex-start; + margin: 0px; + order: 0; + outline: #333333 0px; + overflow-wrap: break-word; + resize: none; + text-shadow: none; + transform-origin: 138px 46.5px; + transition: background 0.2s cubic-bezier(0, 0, 1, 1); + unicode-bidi: embed; + vertical-align: top; + word-wrap: break-word; +} + input.blueinputbar:focus { - box-shadow: rgba(0, 0, 0, 0.047) 0px 1px 3px 0px inset, rgba(82, 168, 236, 0.600) 0px 0px 5px 0px; - border-bottom: 1px solid #56B4EF; - border-left: 1px solid #56B4EF; - border-radius: 3px; - border-right: 1px solid #56B4EF; - border-top: 1px solid #56B4EF; + box-shadow: rgba(0, 0, 0, 0.047) 0px 1px 3px 0px inset, rgba(82, 168, 236, 0.600) 0px 0px 5px 0px; + border-bottom: 1px solid #56B4EF; + border-left: 1px solid #56B4EF; + border-radius: 3px; + border-right: 1px solid #56B4EF; + border-top: 1px solid #56B4EF; } + .r1 { - font-size:13px; - line-height: 1.7em; - overflow-wrap: break-word; - padding-bottom: 20px; - /*padding-left: 20px;*/ - /*width: 50em;*/ + font-size: 13px; + line-height: 1.7em; + overflow-wrap: break-word; + padding-bottom: 20px; + /*padding-left: 20px;*/ + /*width: 50em;*/ } + .r1 .cb { - font-size: 16px; - color: #3333cc; + font-size: 16px; + color: #3333cc; } + /* course 用户 课程 历史 *******************************************************************************/ -.courses_history{ - opacity: 0.7; +.courses_history { + opacity: 0.7; } + .courses_history a { - color: #666; + color: #666; } /* issue div.issues *******************************************************************************/ -div.issue{ - background: none repeat scroll 0 0 #FFFFEC; - /*border: none;*/ - margin-bottom: 6px; - padding: 10; - border-radius: 3px; -/* -moz-box-shadow: 3px 3px 10px rgba(100,150,205,0.1); - -webkit-box-shadow: 3px 3px 10px rgba(100,150,205,0.1); - box-shadow: 3px 3px 10px rgba(100,150,205,0.1);*/ +div.issue { + background: none repeat scroll 0 0 #FFFFEC; + /*border: none;*/ + margin-bottom: 6px; + padding: 10; + border-radius: 3px; + /* -moz-box-shadow: 3px 3px 10px rgba(100,150,205,0.1); + -webkit-box-shadow: 3px 3px 10px rgba(100,150,205,0.1); + box-shadow: 3px 3px 10px rgba(100,150,205,0.1);*/ } +/* project 文件列表 资源库 +*******************************************************************************/ +.tags_area { + height: 13px; +} +#ver-zebra, .file_table_des { + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 5px 10px; + width: 98%; + text-align: left; + border-collapse: collapse; + font-size: 14px; +} + +#ver-zebra th { + font-size: 14px; + font-weight: normal; + padding: 12px 15px; + border-right: 1px solid #fff; + border-left: 1px solid #fff; + color: #039; + text-align: left; +} + +#ver-zebra td { + padding: 8px; + border-right: 1px solid #fff; + border-left: 1px solid #fff; + color: #669; +} + +#ver-zebra td.description { + background-color: white; + padding: 0px; + margin: 0px auto; +} + +#ver-zebra1, .file_table_des { + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + margin: 5px 10px; + width: 98%; + text-align: left; + border-collapse: collapse; + line-height: 20px; + font-size: 14px; +} + +#ver-zebra1 th { + font-size: 14px; + font-weight: normal; + padding: 12px 15px; + border-right: 1px solid #fff; + border-left: 1px solid #fff; + color: #039; + text-align: left; +} + +#ver-zebra1 td { + padding: 8px ; + border-right: 1px solid #fff; + border-left: 1px solid #fff; + color: #669; +} + +#ver-zebra1 td.description { + background-color: white; + padding: 0px; + margin: 0px auto; +} + +div.tags_area { + padding: 2px 10px 10px 10px; + margin: 0px; + margin-bottom: 10px; + /*border-bottom: 1px dashed #CCCCCC;*/ + overflow: hidden; + position: relative; +} + +.tags_gradint { +} + +.read-more { + padding: 5px; + border-top: 4px double #ddd; + background: #fff; + color: #333; +} + +.read-more a { + padding-right: 22px; + background: no-repeat 100% 50%; + font-weight: bold; + text-decoration: none; +} + +.read-more a:hover { + color: #000; +} + +.vzebra-odd { + background: #eff2ff; +} + +.vzebra-even { + background: #e8edff; +} + +#ver-zebra #vzebra-adventure, #ver-zebra #vzebra-children { + background: #ffffff; + border-bottom: 1px solid #c8d4fd; +} + +#ver-zebra #vzebra-comedy, #ver-zebra #vzebra-action { + background: #ffffff; + border-bottom: 1px solid #d6dfff; +} + +#ver-zebra1 #vzebra-adventure, #ver-zebra #vzebra-children { + background: #ffffff; + border-bottom: 1px solid #c8d4fd; +} + +#ver-zebra1 #vzebra-comedy, #ver-zebra #vzebra-action { + background: #ffffff; + border-bottom: 1px solid #d6dfff; +} + +ver-zebra .filename { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +div.pagination { + margin: 10px 0px; + height: 1.5em; + text-align: left; + font-size: 13px; +} + +.m5p5 { + display: inline-block; + height: auto; + color: white !important; + margin: 8px; + padding: 3px 7px; +} + +.m5p5:hover { + text-decoration: none; + /*padding-bottom: 3px;*/ + /*border-bottom: 1px solid #666666;*/ + border-radius: 4px; + border: 1px solid #15bccf; + box-shadow: 3px 3px 3px #666666; +} + +.relation_file_div { + margin: 0px 25px; +} + +.relation_file_div fieldset { + margin: 0px 0px; + padding: 10px; + border-radius: 5px; + transition: all 2s linear 1s; +} + +.relation_file_div input#attach_search:focus { + border: 1px solid #1B95C6; + box-shadow: 0px 0px 4px #1B95C6; + width: 200px; +} + +.relation_file_div input#attach_search { + width: 150px; + outline: none; + border-radius: 5px; + -webkit-transition: 1s width; + -moz-transition: 1s width; + -o-transition: 1s width; + transition: 1s width; +} +.all_browse_div table .description{ + border-bottom: 1px solid #efffff; +} +.all_browse_div table td{ + vertical-align: middle; +}