新版项目界面(部分未完成,先合并)

1、项目框架整理
2、各页面样式
This commit is contained in:
huang 2015-04-07 12:48:47 +08:00
parent 5954ced7a7
commit df43274565
43 changed files with 2091 additions and 1964 deletions

View File

@ -1921,6 +1921,8 @@ module ApplicationHelper
forum_link = link_to l(:label_forum_all), {:controller => "forums", :action => "index"} forum_link = link_to l(:label_forum_all), {:controller => "forums", :action => "index"}
stores_link = link_to l(:label_stores_index), {:controller => 'stores', :action=> 'index'} stores_link = link_to l(:label_stores_index), {:controller => 'stores', :action=> 'index'}
school_all_school_link = link_to l(:label_school_all), {:controller => 'school', :action => 'index'} school_all_school_link = link_to l(:label_school_all), {:controller => 'school', :action => 'index'}
project_new_link = link_to l(:label_project_new), {:controller => 'projects', :action => 'new', :host => Setting.project_domain}
# project_mine_link = link_to l(:label_my_project), {:controller => 'users', :action => 'user_projects', :host => Setting.project_domain}
#@nav_dispaly_project_label #@nav_dispaly_project_label
nav_list = Array.new nav_list = Array.new
@ -1933,6 +1935,8 @@ module ApplicationHelper
nav_list.push(main_contest_link) if @nav_dispaly_main_contest_label && @show_contest == 1 nav_list.push(main_contest_link) if @nav_dispaly_main_contest_label && @show_contest == 1
nav_list.push(courses_link) if @nav_dispaly_course_label && @show_course == 1 nav_list.push(courses_link) if @nav_dispaly_course_label && @show_course == 1
nav_list.push(project_new_link) if @nav_dispaly_project_label
# nav_list.push(project_mine_link) if @nav_dispaly_main_project_label
# nav_list.push(projects_link) if @nav_dispaly_project_label # nav_list.push(projects_link) if @nav_dispaly_project_label
#nav_list.push(users_link) if @nav_dispaly_user_label #nav_list.push(users_link) if @nav_dispaly_user_label
# nav_list.push(contest_link) if @nav_dispaly_contest_label && @show_contest == 1 # nav_list.push(contest_link) if @nav_dispaly_contest_label && @show_contest == 1

View File

@ -35,6 +35,16 @@ module AttachmentsHelper
end end
end end
def link_to_attachment_project(container, options = {})
options.assert_valid_keys(:author, :thumbnails)
if container.attachments.any?
options = {:deletable => container.attachments_deletable?, :author => true}.merge(options)
render :partial => 'attachments/project_file_links',
:locals => {:attachments => container.attachments, :options => options, :thumbnails => (options[:thumbnails] && Setting.thumbnails_enabled?)}
end
end
def link_to_attachments_course(container, options = {}) def link_to_attachments_course(container, options = {})
options.assert_valid_keys(:author, :thumbnails) options.assert_valid_keys(:author, :thumbnails)

View File

@ -1,92 +1,92 @@
# encoding: utf-8 # encoding: utf-8
# #
# Redmine - project management software # Redmine - project management software
# Copyright (C) 2006-2013 Jean-Philippe Lang # Copyright (C) 2006-2013 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2 # as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version. # of the License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module MembersHelper module MembersHelper
def render_principals_for_new_members(project) def render_principals_for_new_members(project)
scope = Principal.active.sorted.not_member_of(project).like(params[:q]) scope = Principal.active.sorted.not_member_of(project).like(params[:q])
principal_count = scope.count principal_count = scope.count
principal_pages = Redmine::Pagination::Paginator.new principal_count, 10, params['page'] #by young 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 principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all
s = content_tag('div', principals_check_box_tags_ex('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| 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 link_to text, autocomplete_project_memberships_path(project, parameters.merge(:q => params[:q], :format => 'js')), :remote => true
} }
s + content_tag('div', content_tag('ul', links), :class => 'pagination_new') s + content_tag('div', content_tag('ul', links), :class => 'pagination_new')
end end
#获取项目可邀请的成员列表 #获取项目可邀请的成员列表
def render_project_members project def render_project_members project
scope = Principal.active.sorted.not_member_of(project).like(params[:q]) scope = Principal.active.sorted.not_member_of(project).like(params[:q])
principals = paginateHelper scope,10 principals = paginateHelper scope,10
s = content_tag('ul', project_member_check_box_tags_ex('membership[user_ids][]', principals), :class => 'mb5', :style => "margin-left: -40px;") s = content_tag('ul', project_member_check_box_tags_ex('membership[user_ids][]', principals), :class => 'mb5', :style => "margin-left: -40px;")
links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true){|text, parameters, options| links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true){|text, parameters, options|
link_to text, autocomplete_project_memberships_path(project, parameters.merge(:q => params[:q],:flag => true, :format => 'js')), :remote => true link_to text, autocomplete_project_memberships_path(project, parameters.merge(:q => params[:q],:flag => true, :format => 'js')), :remote => true
} }
s + content_tag('ul', links,:class => 'wlist') s + content_tag('ul', links,:class => 'wlist')
end end
# add by nwb # add by nwb
# 课程可添加的成员列表 # 课程可添加的成员列表
def render_principals_for_new_course_members(course) def render_principals_for_new_course_members(course)
scope = Principal.active.sorted.not_member_of_course(course).like(params[:q]) scope = Principal.active.sorted.not_member_of_course(course).like(params[:q])
principals = paginateHelper scope,10 principals = paginateHelper scope,10
s = content_tag('ul', project_member_check_box_tags_ex('membership[user_ids][]', principals), :class => 'mb5', :id => 'principals') s = content_tag('ul', project_member_check_box_tags_ex('membership[user_ids][]', principals), :class => 'mb5', :id => 'principals')
links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true) {|text, parameters, options| links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true) {|text, parameters, options|
link_to text, autocomplete_course_memberships_path(course, parameters.merge(:q => params[:q], :format => 'js')), :remote => true link_to text, autocomplete_course_memberships_path(course, parameters.merge(:q => params[:q], :format => 'js')), :remote => true
} }
s + content_tag('ul', links,:class => 'wlist',:id => "course_member_pagination_links") s + content_tag('ul', links,:class => 'wlist',:id => "course_member_pagination_links")
end end
# 当前申请加入的成员名单 # 当前申请加入的成员名单
def render_principals_for_applied_members(project) def render_principals_for_applied_members(project)
scope = project.applied_projects.map(&:user) scope = project.applied_projects.map(&:user)
principal_count = scope.count principal_count = scope.count
principal_pages = Redmine::Pagination::Paginator.new principal_count, 10, params['page'] principal_pages = Redmine::Pagination::Paginator.new principal_count, 10, params['page']
offset ||= principal_pages.offset offset ||= principal_pages.offset
principals = scope[offset, 10] principals = scope[offset, 10]
#principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all #principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all
#principals = ApplicationController.new.paginateHelper scope,10 #principals = ApplicationController.new.paginateHelper scope,10
s = content_tag('div', principals_check_box_tags_ex('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| links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options|
link_to text, appliedproject_project_memberships_path(project, parameters.merge(:q => params[:q], :format => 'js')), :remote => true link_to text, appliedproject_project_memberships_path(project, parameters.merge(:q => params[:q], :format => 'js')), :remote => true
} }
s + content_tag('div', content_tag('ul', links), :class => 'applied_new') s + content_tag('div', content_tag('ul', links), :class => 'applied_new')
end end
private private
def paginateHelper obj, pre_size=20 def paginateHelper obj, pre_size=20
@obj_count = obj.count @obj_count = obj.count
@obj_pages = Redmine::Pagination::Paginator.new @obj_count, pre_size, params['page'] @obj_pages = Redmine::Pagination::Paginator.new @obj_count, pre_size, params['page']
if obj.kind_of? ActiveRecord::Base or obj.kind_of? ActiveRecord::Relation if obj.kind_of? ActiveRecord::Base or obj.kind_of? ActiveRecord::Relation
obj.limit(@obj_pages.per_page).offset(@obj_pages.offset) obj.limit(@obj_pages.per_page).offset(@obj_pages.offset)
elsif obj.kind_of? Array elsif obj.kind_of? Array
obj[@obj_pages.offset, @obj_pages.per_page] obj[@obj_pages.offset, @obj_pages.per_page]
else else
logger.error "[ApplicationController] Error : application_controller#paginateHelper ===> unknow category: #{obj.class}" logger.error "[ApplicationController] Error : application_controller#paginateHelper ===> unknow category: #{obj.class}"
raise RuntimeError, 'unknow type, Please input you type into this helper.' raise RuntimeError, 'unknow type, Please input you type into this helper.'
end end
end end
end end

View File

@ -304,7 +304,7 @@ module WatchersHelper
def exit_project_link(project) def exit_project_link(project)
link_to(l(:label_exit_project),exit_cur_project_path(project.id), link_to(l(:label_exit_project),exit_cur_project_path(project.id),
:remote => true, :confirm => l(:lable_sure_exit_project), :remote => true, :confirm => l(:lable_sure_exit_project),
:style => "color: #fff; display:block;font-size:12px; padding: 0px 5px; margin-right: 10px; height: 20px; line-height: 22px; background: none repeat scroll 0% 0% #64BDD9; TES;padding-top:1px;" ) :class => "pr_join_a" )
end end
#项目关注、取消关注 #项目关注、取消关注
@ -321,7 +321,7 @@ module WatchersHelper
:object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort)) :object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort))
method = watched ? 'delete' : 'post' method = watched ? 'delete' : 'post'
link_to text, url, :remote => true, :method => method, link_to text, url, :remote => true, :method => method,
:class => "project_watch_new" ,:id=>id :class => "pr_join_a" ,:id=>id
end end
#申请加入项目 #申请加入项目
@ -339,7 +339,7 @@ module WatchersHelper
:user_id => user.id, :user_id => user.id,
:project_id => project.id) :project_id => project.id)
method = applied ? 'delete' : 'post' method = applied ? 'delete' : 'post'
link_to text, url, :remote => true, :method => method , :class => "project_watch_new",:id => id link_to text, url, :remote => true, :method => method , :class => "pr_join_a",:id => id
end end
end end

View File

@ -0,0 +1,67 @@
<span id="attachments_fields" xmlns="http://www.w3.org/1999/html">
<% if defined?(container) && container && container.saved_attachments %>
<% if isReply %>
<% container.saved_attachments.each_with_index do |attachment, i| %>
<span id="attachments_p<%= i %>" class="attachment">
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
<%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") +
link_to('&nbsp;'.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
<%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
<span class="ispublic-label"><%= l(:field_is_public)%>:</span>
<%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public')%>
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
</span>
<% end %>
<% else %>
<% container.attachments.each_with_index do |attachment, i| %>
<span id="attachments_p<%= i %>" class="attachment">
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
<%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") +
link_to('&nbsp;'.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
<%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
<span class="ispublic-label"><%= l(:field_is_public)%>:</span>
<%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public')%>
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
</span>
<% end %>
<% end %>
<% end %>
</span></br>
<script type='text/javascript'>
// function CompatibleSend()
// {
// var obj=document.getElementById("_file");
// var file= $(obj).clone();
// file.click();
// }
</script>
<span class="add_attachment">
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
<%= button_tag "浏览", :type=>"button", :onclick=>"_file.click()",:class =>"sub_btn",:style => ie8? ? 'display:none' : '' %>
<%= file_field_tag 'attachments[dummy][file]',
:id => '_file',
:class => 'file_selector',
:multiple => true,
:onchange => 'addInputFiles(this);',
:style => 'display:none',
:data => {
:max_file_size => Setting.attachment_max_size.to_i.kilobytes,
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
:max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
:upload_path => uploads_path(:format => 'js'),
:description_placeholder => l(:label_optional_description),
:field_is_public => l(:field_is_public),
:are_you_sure => l(:text_are_you_sure),
:file_count => l(:label_file_count),
:delete_all_files => l(:text_are_you_sure_all)
} %>
<span id="upload_file_count" :class="c_grey"><%= l(:label_no_file_uploaded)%></span>
(<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)
</span>
<% content_for :header_tags do %>
<%= javascript_include_tag 'attachments' %>
<% end %>

View File

@ -0,0 +1,72 @@
<div class="attachments" style="font-weight:normal;">
<% is_float ||= false %>
<% for attachment in attachments %>
<p style="width: 100%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
<%if is_float%>
<div style="max-width:55%;white-space: nowrap; overflow: hidden; text-overflow: ellipsis;float: left;">
<% end%>
<span title="<%= attachment.filename%>" id = "attachment_">
<% if options[:length] %>
<%= link_to_short_attachment attachment, :class => ' link_file_board', :download => true,:length => options[:length] -%>
<% else %>
<%= link_to_short_attachment attachment, :class => ' link_file_board', :download => true -%>
<% end %>
</span>
<%if is_float%>
</div>
<% end%>
<% if attachment.is_text? %>
<%= link_to image_tag('magnifier.png'),
:controller => 'attachments',
:action => 'show',
:id => attachment,
:filename => attachment.filename%>
<% end %>
<span title="<%= attachment.description%>">
<%= h(truncate(" - #{attachment.description}", length: options[:length] ? options[:length]:15, omission: '...')) unless attachment.description.blank? %>
</span>
<span class="size">(
<%= number_to_human_size attachment.filesize %>)
</span>
<% if options[:deletable] %>
<% if attachment.container_type == 'HomeworkAttach' %>
<%= link_to image_tag('delete.png'), {:controller => 'attachments', :action => 'delete_homework', :id => attachment.id},
:data => {:confirm => l(:text_are_you_sure)},
:method => :delete,
:class => 'delete delete-homework-icon',
:remote => true,
:title => l(:button_delete) %>
<% else %>
<%= link_to image_tag('delete.png'), attachment_path(attachment),
:data => {:confirm => l(:text_are_you_sure)},
:method => :delete,
:class => 'delete',
#:remote => true,
#:id => "attachments_" + attachment.id.to_s,
:title => l(:button_delete) %>
<% end %>
<% end %>
<% if options[:wrap] %>
<br/>
&nbsp;
<% end %>
<% if options[:author] %>
<span class="author" title="<%= attachment.author%>">
<%= link_to h(truncate(attachment.author.name, length: 10, omission: '...')),user_path(attachment.author) %>,
<%= format_time(attachment.created_on) %>
</span>
<% end %>
</p>
<% end %>
<% if defined?(thumbnails) && thumbnails %>
<% images = attachments.select(&:thumbnailable?) %>
<% if images.any? %>
<div class="thumbnails">
<% images.each do |attachment| %>
<div><%= thumbnail_tag(attachment) %></div>
<% end %>
</div>
<% end %>
<% end %>
</div>

View File

@ -1,4 +1,4 @@
<script type="text/javascript"> <script type="text/javascript" xmlns="http://www.w3.org/1999/html">
function submitProjectBoard() function submitProjectBoard()
{ {
if(regexSubject()&&regexContent()) if(regexSubject()&&regexContent())
@ -37,51 +37,42 @@
<% end %> <% end %>
<!-- 内容显示部分 --> <!-- 内容显示部分 -->
<div class="project_right">
<div class="project_r_h"> <div class="project_r_h">
<h2 class="project_h2"><%= h @board.name %></h2> <h2 class="project_h2"><%= h @board.name %></h2>
</div> </div>
<div class="talk_top"> <div class="talk_top">
<div class="fl">项目讨论区共有<span><%= @topic_count %></span>个帖子 </div> <div class="fl">项目讨论区共有<span><%= @topic_count %></span>个帖子 </div>
<% if @project.enabled_modules.where("name = 'boards'").count > 0 && User.current.member_of?(@project) %> <% if @project.enabled_modules.where("name = 'boards'").count > 0 && User.current.member_of?(@project) %>
<span><%= link_to l(:label_message_new), new_board_message_path(@board), <span><%= link_to l(:label_message_new), new_board_message_path(@board),
:class => 'problem_new_btn fl', :class => 'problem_new_btn fl c_dorange',
:onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' if User.current.logged? %></span> :onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' if User.current.logged? %></span>
<% end %> <% end %>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<!-- 帖子内容显示 --> <!-- 帖子内容显示 -->
<% if @topics.any? %> <% if @topics.any? %>
<% @topics.each do |topic| %> <% @topics.each do |topic| %>
<div class="problem_main"> <div class="problem_main">
<a> <%= link_to image_tag(url_to_avatar(topic.author), :width=>"32",:height=>"32"), user_path(topic.author),:class => 'problem_pic talk_pic fl' %>
<%= link_to image_tag(url_to_avatar(topic.author), :class => "problem_pic talk_pic fl"), user_path(topic.author) %>
</a>
<div class="talk_txt fl"> <div class="talk_txt fl">
<div> <%= link_to h(topic.subject), board_message_path(@board, topic), title:topic.subject.to_s, :class =>"problem_tit fl" %>
<span><%= link_to h(topic.subject), board_message_path(@board, topic), title:topic.subject.to_s, :class =>"problem_tit fl" %></span> <% if topic.sticky? %>
<% if topic.sticky? %> <span class="talk_up fl c_red">置顶</span>
<span class="talk_up">置顶</span> <% end %>
<% end %> <br/>
</div> <p>由<%= link_to topic.author, user_path(topic.author), :class =>"problem_name c_orange" %>添加于<%= format_time topic.created_on %></p>
<div class="problem_line">
<span>由<%= link_to topic.author, user_path(topic.author), :class =>"problem_name" %></span>
<span>添加于<%= format_time topic.created_on %></span>
</div>
</div> </div>
<span class="talk_btn fr">回复<%= link_to (topic.replies_count), board_message_path(@board, topic), :style =>"color:#fff;" %></span> <%=link_to (l(:label_reply) + topic.replies_count.to_s), board_message_path(@board, topic),:class => "talk_btn fr c_white" %>
<div class="cl"></div> <div class="cl"></div>
</div><!--讨论主类容 end--> </div><!--讨论主类容 end-->
<% end %> <% end %>
<ul class="wlist">
<%= pagination_links_full @topic_pages, @topic_count, :per_page_links => false, :remote => false, :flag => true %>
</ul>
<% else %> <% else %>
<p class="nodata"><%= l(:label_no_data) %></p> <p class="nodata"><%= l(:label_no_data) %></p>
<% end %> <% end %>
<!--讨论主类容 end--> <ul class="wlist">
<div class="cl"></div> <%= pagination_links_full @topic_pages, @topic_count, :per_page_links => false, :remote => false, :flag => true %>
</div> </ul>
<!--讨论主类容 end-->
<% other_formats_links do |f| %> <% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %> <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>

View File

@ -1,49 +1,49 @@
<div class="members_left"> <div class="members_left">
<ul style=" border-bottom:none;"> <ul style=" border-bottom:none;">
<li> <li>
<span class="w150 f_b" > <span class="w150 f_b" >
用户 用户
</span> </span>
<span class="w150 f_b"> <span class="w150 f_b">
角色 角色
</span> </span>
<span></span> <span></span>
</li> </li>
<div id="course_member_list"> <div id="course_member_list">
<%= render :partial => "courses/member" %> <%= render :partial => "courses/member" %>
</div> </div>
</ul> </ul>
</div><!-- 左边--> </div><!-- 左边-->
<div class="members_right"> <div class="members_right">
<p class="c_blue fb mt10 mb5">添加成员</p> <p class="c_blue fb mt10 mb5">添加成员</p>
<%= form_for(@member, {:as => :membership, :url => course_memberships_path(@course), :remote => true, :method => :post}) do |f| %> <%= form_for(@member, {:as => :membership, :url => course_memberships_path(@course), :remote => true, :method => :post}) do |f| %>
<div class="member_search"> <div class="member_search">
<input hidden="hidden" value="true" name="flag"> <input hidden="hidden" value="true" name="flag">
<input id="principal_search" class="member_search_input fl" type="text" placeholder="请输入用户名称来搜索好友"> <input id="principal_search" class="member_search_input fl" type="text" placeholder="请输入用户名称来搜索好友">
<%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_course_memberships_path(@course, :format => 'js',:flag => true) }')" %> <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_course_memberships_path(@course, :format => 'js',:flag => true) }')" %>
<div class="cl"></div> <div class="cl"></div>
<div id="principals_for_new_member"> <div id="principals_for_new_member">
<%= render_principals_for_new_course_members(@course) %> <%= render_principals_for_new_course_members(@course) %>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<ul class="rolebox mb10 mt10"> <ul class="rolebox mb10 mt10">
<li class="fb"> <li class="fb">
<%= l(:label_role_plural) %> <%= l(:label_role_plural) %>
</li> </li>
<% @roles.each do |role| %> <% @roles.each do |role| %>
<li> <li>
<%= radio_button_tag 'membership[role_ids][]', role.id, role.name == "学生" || role.name == "Student" %> <%= radio_button_tag 'membership[role_ids][]', role.id, role.name == "学生" || role.name == "Student" %>
<label ><%= h role %></label> <label ><%= h role %></label>
</li> </li>
<% end %> <% end %>
</ul> </ul>
<div class="cl mb10"></div> <div class="cl mb10"></div>
<a href="javascript:void(0)" class="member_btn" onclick="$('#new_membership').submit();"> <a href="javascript:void(0)" class="member_btn" onclick="$('#new_membership').submit();">
新增成员 新增成员
</a> </a>
</div> </div>
<% end%> <% end%>
</div><!-- 右边 end--> </div><!-- 右边 end-->

View File

@ -1,69 +1,28 @@
<div class="autoscroll"> <% issue_list(issues) do |issue, level| -%>
<ul>
<% issue_list(issues) do |issue, level| -%>
<% if @query.grouped? && (group = @query.group_by_column.value(issue)) != previous_group %> <% if @query.grouped? && (group = @query.group_by_column.value(issue)) != previous_group %>
<% reset_cycle %> <% reset_cycle %>
<% previous_group = group %> <% previous_group = group %>
<% end %> <% end %>
<div style=""> <!-- CONTENT LIST -->
<li id="issue-<%= issue.id %>" class="hascontextmenu-1 <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>"> <div class="problem_main">
<% column_content = ( query.inline_columns.map {|column| "#{column_content_new(column, issue)}"}) %> <!--< id="issue-<%#= issue.id %>" class="hascontextmenu-1 <%#= issue.css_classes %> <%#= level > 0 ? "idnt idnt-#{level}" : nil %>" >-->
<% if issue.tracker_id == 1 %> <% column_content = ( query.inline_columns.map {|column| "#{column_content_new(column, issue)}"}) %>
<%= image_tag("/images/task.png", :class => "img-tag-issues") %> <% unless issue.author.nil? || issue.author.name == "Anonymous" %>
<% end %> <a class="problem_pic fl"><%= image_tag(url_to_avatar(issue.author), :width => "42", :height => "42") %></a>
<% if issue.tracker_id == 2 %> <div class="problem_txt fl">
<%= image_tag("/images/feature.png", :class => "img-tag-issues") %> <%= link_to issue.author.name, user_path(issue.author), :class => "problem_name c_orange fl" %>
<% end %> <span class="fl"><%= l(:label_post_on_issue) %><%= "#{raw column_content[2]}" %></span>
<% if issue.tracker_id == 3 %> <%=link_to column_content[4], issue_path(issue.id), :class => "problem_tit fl" %><br />
<%= image_tag("/images/support.png", :class => "img-tag-issues") %> <p><%= textilizable issue, :description %></p><br/>
<% end %> <p>
<% if issue.tracker_id == 4 %> <% unless issue.assigned_to_id.nil? %>
<%= image_tag("/images/issues.png", :class => "img-tag-issues") %> <%= l(:field_assigned_to) %>
<% end %> <%=link_to issue.assigned_to(@user), user_path(issue.assigned_to(@user)), :class => "problem_name c_orange f1" %>
<% end %>
<ul class="issue_list"> <%= l(:label_updated_time_on, format_date(issue.updated_on)).html_safe %>
<% unless issue.author.nil? || issue.author.name == "Anonymous" %> </p>
<ul class="list-group-item-meta" style="word-break: break-all;word-wrap: break-word;width: 100%;"> </div>
<!-- 在这里添加赞和踩--> <% end %>
<span id="praise_tread" style="float: right"> <div class="cl"></div>
<%= render :partial => "/praise_tread/praise_tread",:locals =>
{:obj => issue,:show_flag => true,:user_id =>User.current.id,:horizontal => false}%>
</span>
<span>
<%= link_to issue.author.name, user_path(issue.author), :class => "bid_user_u" %>
</span>
<%= l(:label_post_on)%>
<% a = [] %>
<% a << column_content[1] %>
<%# a << "##{column_content[0]}" << "(#{raw column_content[2]}):" << column_content[4] %>
<% a << "#{issue.source_from}" << "(#{raw column_content[2]}):" << column_content[4] %>
<%= link_to a.join(' '), issue_path(issue.id), :class => "issue-link" , :target =>"_blank"%>
<ul class="list-group-item-meta">
<div class="wiki" style="width: 100%;word-break: break-all;word-wrap: break-word;">
<%= textilizable issue, :description %>
</div>
</ul>
</ul>
<ul class="list-group-item-meta" style="margin-top: -15px;">
<% unless issue.assigned_to_id.nil? %>
<span>
<%= l(:field_assigned_to)%>&nbsp;
</span>
<%= raw column_content[5] %>&nbsp;
<% end %>
<%= l(:label_updated_time_on, format_date(issue.updated_on)).html_safe %>
<div class="find-comment-class">
<span>
<%= link_to l(:label_find_all_comments), issue_path(issue.id) %>
</span>
<%= l(:label_comments_count, :count => issue.journals.all.count) %>
</div>
</ul>
<% end -%>
</ul>
</li>
</div> </div>
<% end -%> <% end -%>
</ul>
</div>

View File

@ -79,11 +79,12 @@
</p> </p>
<% else %> <% else %>
<%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %> <%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %>
<div class="pagination"> <ul class="wlist">
<ul><%= pagination_links_full @issue_pages, @issue_count %></ul> <%= pagination_links_full @issue_pages, @issue_count, :per_page_links => false, :remote => false, :flag => true %>
</div> </ul>
<% end %> <% end %>
<div style="float: right; padding-top: 30px"> <div style="float: left; padding-top: 30px">
<% other_formats_links do |f| %> <% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %> <%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %>
<%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %> <%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %>

View File

@ -10,230 +10,199 @@
<meta name="keywords" content="issue,bug,tracker" /> <meta name="keywords" content="issue,bug,tracker" />
<%= csrf_meta_tag %> <%= csrf_meta_tag %>
<%= favicon %> <%= favicon %>
<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', 'application', 'nyan', :media => 'all' %>
<%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
<%= javascript_heads %> <%= javascript_heads %>
<%= heads_for_theme %> <%= heads_for_theme %>
<%= hubspot_head %> <%= stylesheet_link_tag 'public', 'pleft', 'project' %>
<%= javascript_include_tag 'project', 'header' %>
<%= call_hook :view_layouts_base_html_head %> <%= call_hook :view_layouts_base_html_head %>
<!-- page specific tags --> <!-- page specific tags -->
<%= yield :header_tags -%> <%= yield :header_tags -%>
</head> </head>
<!--add by huang--> <!--add by huang-->
<body class="<%= h body_css_classes %>"> <body>
<div id="wrapper"> <div id="Container">
<div id="wrapper2"> <%= render :partial => 'layouts/new_header'%>
<div id="wrapper3"> <div class="cl"></div>
<%= render :partial => 'layouts/base_header'%>
<div id="main">
<div class="top-content">
<table>
<tr>
<td class="info_font" style="width: 240px;" rowspan="2"><a href="http://<%= Setting.host_name%>" style="color: #15bccf;"> <%= l(:label_projects_community)%> </a></td>
<td style="width: 430px; color: #15bccf"><strong><%= l(:label_user_location) %> : </strong></td>
<td rowspan="2" width="250px">
<div class="top-content-search">
<script type="text/javascript">
function regexName()
{
var name = $.trim($("#name").val());
if(name.length == 0)
{
$("#project_name_span").text("<%= l(:label_search_conditions_not_null) %>");
$("#project_name_span").css('color','#ff0000');
$("#project_name_span").focus();
return false;
}
else
{
$("#project_name_span").text("");
return true;
}
}
// 项目描述超过展开
$(function(){
$(".subNav").click(function(){
$(this).toggleClass("currentDd").siblings(".subNav").removeClass("currentDd")
$(this).toggleClass("currentDt").siblings(".subNav").removeClass("currentDt")
// 修改数字控制速度, slideUp(500)控制卷起速度
$(this).next(".navContent").slideToggle(500).siblings(".navContent").slideUp(500);
})
})
function show_more_msg() <!--TopBar begin-->
{$("#course_description").toggleClass("course_description_none");} <div id="TopBar">
</script> <div class="topbar_info02 fl">
<h2>
<%= form_tag(projects_search_path, :method => :get, :id => "project_search_form") do %> <a href="http://<%= Setting.host_name %>" target="_blank" class="c_blue">
<%= text_field_tag 'name', params[:name], :size => 20, :onkeyup => "regexName();", :style => "float:left" %> <%= l(:label_projects_community) %>
<%= hidden_field_tag 'project_type', params[:project_type] %> </a>
<%#= submit_tag l(:label_search), :class => "enterprise", :name => nil %> </h2>
<a href="#" onclick="submitSerch();" class="ButtonColor m3p10" style="float:left;padding-top: 3px; margin: 0px;padding-bottom:0px;" > <%= l(:label_search)%> </a> <p>
<br /> <%= l(:label_user_location) %> :
<span id="project_name_span" style="float: left"></span> <%= link_to l(:field_homepage), home_path %>
<% end %> >
</div></td> <a href="http://<%= Setting.host_name %>">
</tr> <%=l(:label_project_hosting_platform) %>
<tr> </a>
<td> >
<p class="top-content-list"> <%= link_to @project.name, nil %>
<%= link_to l(:label_home),home_path %> > </p>
<%= link_to @project, project_path(@project) %> </div>
</p></td> <div class="search fl">
</tr>
</table> <%= form_tag(projects_search_path, :method => :get, :id => "project_search_form", :class => "search_form") do %>
</div> <%= text_field_tag 'name', params[:name], :placeholder => "项目名称", :class => "search_text fl", :onkeyup => "regexName('#{l(:label_search_conditions_not_null)}');" %>
<!-- 左边侧栏内容 --> <a href="#" onclick="submitSerch('<%= l(:label_search_conditions_not_null) %>');" class="search_btn fl f14 c_white" >
<div id="sidebar"> <%= l(:label_search)%>
<div class="project_left"> </a>
<div class="project_info"> <br />
<div class="pr_info_logo fl mr10 mb5"> <span id="project_name_span" style="float: left"></span>
<%= image_tag(url_to_avatar(@project), :style => 'width:61px; height:61px;') %> <% end %>
</div> </div>
<div class="pr_info_id fl mb5"> </div><!--TopBar end-->
<%= l(:label_project_id)%><%= @project.id %> <div id="content">
</div> <div id="LSide" class="fl">
<!--关注、申请加入/退出项目--> <div class="project_info">
<div id="join_exit_project_div"> <div class="pr_info_logo fl mr10 mb5">
<%= render 'layouts/join_exit_project' %> <%= image_tag(url_to_avatar(@project), :width => "60", :height => "60") %>
</div> </div>
<!-- 项目得分 --> <div class="pr_info_id fl mb5 f14">
<div class="cl"></div> <%= l(:label_project_id)%><%= @project.id %>
<div class="pr_info_name f1"> </div>
<%= link_to @project.name, project_path(@project), :style => "color:#3E4040"%> <!--关注、申请加入/退出项目-->
<% if !@project.is_public? %> <div id="join_exit_project_div">
<span class="img_private"><%= l(:label_private)%></span> <%= render 'layouts/join_exit_project' %>
<% end %> </div>
</div> <!-- 项目得分 -->
<div class="cl"></div> <div class="cl"></div>
<div class="pr_info_score"> <div>
<% if @project.project_type == 0 %> <a class="pr_info_name fl c_dark fb" href="javascript:void(0)" target="_blank">
<%= l(:label_project_score)%> : <%= l(:label_project_name) %><%= @project.name %></a>
<%= link_to(format("%.2f" ,project_scores(@project) ).to_i, {:controller => 'projects', <% if @project.is_public? %>
:action => 'show_projects_score', <span class="img_private"><%= l(:label_public)%></span>
:remote => true, <% else %>
:id => @project.id }, <span class="img_private"><%= l(:label_private)%></span>
:style => "color: #EC6300;") %> <% end %>
<% end %> </div>
</div> <div class="cl"></div>
<div class="pr_info_foot"> <div>
<%= l(:label_member) %><span class="info_foot_num" > <% if @project.project_type == 0 %>
<%= link_to "#{@project.members.count}", project_member_path(@project), :style => "color:#3CA5C6;font-weight:bold" %></span> <span class="fb f14 "><%= l(:label_project_score)%> :</span>
<span>| </span> <%= link_to(format("%.2f" ,project_scores(@project) ).to_i, {:controller => 'projects',
<%= l(:label_user_watcher) %><span class="info_foot_num"> :action => 'show_projects_score',
<%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :style => "color:#3CA5C6;font-weight:bold" %></span> :remote => true,
<span>| </span> :id => @project.id
<%= l(:project_module_attachments) %><span class="info_foot_num" > }, :class => "c_orange f14" ) %>
<% end %>
</div>
<!--参数-->
<div class="pr_info_foot">
<%= l(:label_member) %><%= link_to "#{@project.members.count}", project_member_path(@project), :class => 'info_foot_num c_blue' %>
<span>|&nbsp;</span>
<%= l(:label_user_watcher) %><%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :class => 'info_foot_num c_blue' %>
<span>|&nbsp;</span>
<%= l(:project_module_attachments) %>
<% attaments_num = @project.attachments.count+Attachment.where(["`container_type` = 'Version' and `container_id` in (?)",@project.versions.map{ |v| v.id}]).all.count %> <% attaments_num = @project.attachments.count+Attachment.where(["`container_type` = 'Version' and `container_id` in (?)",@project.versions.map{ |v| v.id}]).all.count %>
<%= link_to "#{attaments_num}", project_files_path(@project), :style => "color:#3CA5C6;font-weight:bold" %></span> <%= link_to "#{attaments_num}", project_files_path(@project), :class => 'info_foot_num c_blue' %></span>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
</div><!--项目信息 end--> </div><!--参数 end-->
<!--邀请加入-->
<div class="subNavBox">
<% if User.current.member_of?(@project) %>
<div class="subNav currentDd currentDt subNav_jiantou"><%= l(:label_invite)%></div>
<ul class="navContent " style="display:block">
<li><%= link_to l(:label_invite_new_user), :controller=>"projects", :action=>"invite_members_by_mail", :id => @project %></li>
<li><%= link_to l(:label_invite_trustie_user), :controller=>"projects", :action=>"invite_members", :id => @project %></li>
</ul>
<% end %><!--end-->
<!--menu -->
<div class="subNav">
<%= link_to l(:label_activity), {:controller => 'projects', :action => 'show', :id => @project.id}, :class => "f14 c_blue02" %>
<% unless ForgeActivity.where("project_id = ?", @project.id).count == 0 %>
<a class="subnav_num">(<%= ForgeActivity.where("project_id = ?", @project.id).count %>)</a>
<% end %>
</div>
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>
<div class="subNav">
<%= link_to l(:label_issue_tracking), project_issues_path(@project), :class => "f14 c_blue02" %>
<% unless @project.issues.count == 0 %>
<a class="subnav_num">(<%= @project.issues.count %>)</a><span>
<% end %>
<% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:label_release_issue), new_project_issue_path(@project) , :class => "subnav_green" %></span>
<% end %>
</div>
<% end %>
<% unless @project.enabled_modules.where("name = 'boards'").empty? %>
<div class="subNav">
<%= link_to l(:project_module_boards), project_boards_path(@project), :class => "f14 c_blue02" %>
<% unless @project.boards.first.topics.count == 0 %>
<a class="subnav_num">(<%= @project.boards.first.topics.count %>)</a>
<% end %>
<% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:project_module_boards_post), project_boards_path(@project, :flag => true), :layout => 'base_projects', :class => "subnav_green ml105" %>
<% end %>
</div>
<% end%>
<% unless @project.enabled_modules.where("name = 'files'").empty? %>
<div class="subNav">
<%= link_to l(:project_module_files), project_files_path(@project), :class => "f14 c_blue02" %>
<% unless attaments_num == 0 %>
<a class="subnav_num">(<%= attaments_num %>)</a>
<% end %>
<% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:label_upload_files), project_files_path(@project,:flag => true), :class => "subnav_green ml95" %>
<% end %>
</div>
<% end%>
<% unless @project.enabled_modules.where("name = 'repository'").empty? || @project.repositories.count == 0 %>
<div class="subNav">
<%= link_to l(:project_module_repository), {:controller => 'repositories', :action => 'show', :id => @project.id}, :class => "f14 c_blue02" %>
<a class="subnav_num">(<%= @project.repositories.count %>)</a>
<%# if User.current.member_of?(@project) %>
<%#= link_to "+"+l(:project_module_create_repository), new_project_repository_path(@project),:style => "font-size:12px;color:#fff; padding:1px 3px 3px 3px;height:18px;margin-top:3px;background:#28be6c;float:right;line-height:20px;" %>
<%# end %>
</div>
<% end %><!--meny end -->
<!-- more -->
<div class="subNav subNav_jiantou"><%= l(:label_project_more) %></div>
<ul class="navContent">
<%= render 'projects/tools_expand' %>
</ul>
</div><!--项目侧导航 end-->
<div class="cl"></div>
<!-- 项目描述 -->
<div class="project_intro">
<div id="course_description" class="course_description">
<h4 ><%= l(:label_project_overview) %></h4><%= @project.description %>
</div>
<div class="lg-foot" onclick="show_more_msg();"><%= l(:label_expend_information) %><span class="g-arr-down"><img src="/images/jiantou.jpg" width="12" height="6" /></span></div>
</div>
<!-- tag模块 -->
<div class="project_Label">
<h4 class="mb5"><%= l(:label_tag)%>:</h4>
<div class="tag_h">
<div id="tags">
<%= render :partial => 'tags/project_tag', :locals => {:obj => @project,:object_flag => "2"}%>
</div>
</div>
<div class="cl"></div>
</div><!--项目标签 end-->
</div>
</div>
<div class="subNavBox"> <div id="RSide" class="fl">
<% if User.current.member_of?(@project) %> <%= render_flash_messages %>
<div class="subNav currentDd currentDt subNav_jiantou"><%= l(:label_invite)%></div> <%= yield %>
<ul class="navContent " style="display:block; padding-left: 0px; margin-top:0px;"> <%= call_hook :view_layouts_base_content %>
<li><%= link_to l(:label_invite_new_user), :controller=>"projects", :action=>"invite_members_by_mail", :id => @project %></li> <div style="clear:both;"></div>
<li><%= link_to l(:label_invite_trustie_user), :controller=>"projects", :action=>"invite_members", :id => @project %></li> </div>
</ul> <div style="clear:both;"></div>
<% end %> <div class="cl"></div>
<div class="subNav"> <%= render :partial => 'layouts/new_footer'%>
<%= link_to l(:label_activity), {:controller => 'projects', :action => 'show', :id => @project.id}, :style => "color:#3CA5C6" %> <div class="cl"></div>
<% unless ForgeActivity.where("project_id = ?", @project.id).count == 0 %> </div><!--Container end-->
<span class="subnav_num">(<%= ForgeActivity.where("project_id = ?", @project.id).count %>)</span> <div id="ajax-indicator" style="display:none;">
<% end %> <span><%= l(:label_loading) %></span>
</div> </div>
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %> <div id="ajax-modal" style="display:none;"></div>
<div class="subNav"> <%= call_hook :view_layouts_base_body_bottom %>
<%= link_to l(:label_issue_tracking), project_issues_path(@project), :style => "color:#3CA5C6" %>
<% unless @project.issues.count == 0 %>
<span class="subnav_num">(<%= @project.issues.count %>)</span><span>
<% end %>
<% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:label_release_issue), new_project_issue_path(@project) , :style => "font-size:12px !important;color:#fff; padding:1px 3px 3px 3px;height:16px;margin-top:4px;background:#28be6c;float:right;line-height:20px;" %></span>
<% end %>
</div>
<% end %>
<% unless @project.enabled_modules.where("name = 'boards'").empty? %>
<div class="subNav">
<%= link_to l(:project_module_boards), project_boards_path(@project), :style => "color:#3CA5C6" %>
<% unless @project.boards.first.topics.count == 0 %>
<span class="subnav_num">(<%= @project.boards.first.topics.count %>)</span>
<% end %>
<% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:project_module_boards_post), project_boards_path(@project, :flag => true), :layout => 'base_projects',:style => "font-size:12px !important;color:#fff; padding:0px 3px 3px 3px;height:16px;margin-top:5px;background:#28be6c;float:right;line-height:20px;" %>
<% end %>
</div>
<% end%>
<% unless @project.enabled_modules.where("name = 'files'").empty? %>
<div class="subNav">
<%= link_to l(:project_module_files), project_files_path(@project), :style => "color:#3CA5C6" %>
<% unless attaments_num == 0 %>
<span class="subnav_num">(<%= attaments_num %>)</span>
<% end %>
<% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:label_upload_files), project_files_path(@project,:flag => true),:style => "font-size:12px !important;color:#fff; padding:1px 3px 3px 3px;height:16px;margin-top:4px;background:#28be6c;float:right;line-height:20px;" %>
<% end %>
</div>
<% end%>
<% unless @project.enabled_modules.where("name = 'repository'").empty? || @project.repositories.count == 0 %>
<div class="subNav">
<%= link_to l(:project_module_repository), {:controller => 'repositories', :action => 'show', :id => @project.id}, :style => "color:#3CA5C6" %>
<span class="subnav_num">(<%= @project.repositories.count %>)</span>
<%# if User.current.member_of?(@project) %>
<%#= link_to "+"+l(:project_module_create_repository), new_project_repository_path(@project),:style => "font-size:12px;color:#fff; padding:1px 3px 3px 3px;height:18px;margin-top:3px;background:#28be6c;float:right;line-height:20px;" %>
<%# end %>
</div>
<% end %>
<div class="subNav subNav_jiantou"><%= l(:label_project_more) %></div>
<ul class="navContent" style="padding-left: 0px">
<%= render 'projects/tools_expand' %>
</ul>
</div><!--项目侧导航 end-->
<div class="cl"></div>
<!-- 项目描述 -->
<div class="project_intro">
<div id="course_description" class="course_description">
<h4 ><%= l(:label_project_overview) %></h4><%= @project.description %>
</div>
<div class="lg-foot" onclick="show_more_msg();"><%= l(:label_expend_information) %><span class="g-arr-down"><img src="/images/jiantou.jpg" width="12" height="6" /></span></div>
</div>
<!-- tag模块 -->
<div class="project_Label">
<h4 class="project_h4"><%= l(:label_tag)%>:</h4>
<div class="tag_h" >
<div class="user_tags">
<div id="tags">
<%= render :partial => 'tags/project_tag', :locals => {:obj => @project,:object_flag => "2"}%>
</div>
</div>
</div>
<div class="cl"></div>
</div><!--项目标签 end-->
</div>
</div>
<div id="content">
<%= render_flash_messages %>
<%= yield %>
<%= call_hook :view_layouts_base_content %>
<div style="clear:both;"></div>
</div>
<%= render :partial => 'layouts/base_footer'%>
</div>
<div id="ajax-indicator" style="display:none;">
<span><%= l(:label_loading) %></span>
</div>
<div id="ajax-modal" style="display:none;"></div>
</div>
</div>
<%= call_hook :view_layouts_base_body_bottom %>
</div>
</body> </body>
</html> </html>

View File

@ -0,0 +1,44 @@
<%= error_messages_for 'message' %>
<% replying ||= false %>
<% extra_option = replying ? { readonly: true} : { maxlength: 200 } %>
<li>
<label><span class="c_red">*</span>&nbsp;<%= l(:field_subject) %>&nbsp;&nbsp;</label>
<% if replying %>
<%= f.text_field :subject, { size: 60, id: "message_subject",:class=>"talk_input w585" }.merge(extra_option) %>
<% else %>
<%= f.text_field :subject, { size: 60, id: "message_subject", onkeyup: "regexSubject();",:class=>"talk_input w585" }.merge(extra_option) %>
<% end %>
<p id="subject_span" class="ml55"></p>
</li>
<li class="ml60 mb5">
<% unless replying %>
<% if @message.safe_attribute? 'sticky' %>
<%= f.check_box :sticky %>
<%= label_tag 'message_sticky', l(:label_board_sticky) %>
<% end %>
<% if @message.safe_attribute? 'locked' %>
<%= f.check_box :locked %>
<%= label_tag 'message_locked', l(:label_board_locked) %>
<% end %>
<% end %>
<div class="cl"></div>
</li>
<li>
<div id="message_quote" class="wiki" style="width: 100%;word-break: break-all;word-wrap: break-word;"></div>
<label class="fl" ><span class="c_red">*</span>&nbsp;<%= l(:field_description) %>&nbsp;&nbsp;</label>
<%= text_area :quote,:quote,:style => 'display:none' %>
<%= f.text_area :content, :class => 'talk_text fl', :id => 'message_content', :onkeyup => "regexContent();", :maxlength => 5000,:placeholder => "最多3000个汉字(或6000个英文字符)" %>
<div class="cl"></div>
<p id="message_content_span" class="ml55"></p>
</li>
<div class="cl"></div>
<li>
<label class="fl">&nbsp;&nbsp;<%= l(:label_attachment_plural) %>&nbsp;&nbsp;</label>
<div class="fl">
<%= render :partial => 'attachments/form_project', :locals => {:container => @message,:isReply => @isReply} %>
</div>
</li>
<li >
<div class="cl"></div>
</li>

View File

@ -1,209 +1,114 @@
<style type="text/css"> <div class="project_r_h">
.lz { <h2 class="project_h2"><%= h @board.name %></h2>
position: relative;
min-height: 200px;
margin: 10px 2px;
border-radius: 5px;
box-shadow: 1px 1px 6px #97EBF4;
}
.lz-left {
float: left;
margin: 2%;
padding: 0;
}
.memo-section {
width: auto;
margin-left: 15%;
padding-top: 1%;
border-left: 2px dotted #EEE;/*#8BE9F3;*/
}
.memo-title {
margin: 1em 0;
padding-left: 1%;
padding-bottom: 1%;
font-weight: bold;
border-bottom: 1px dashed rgb(204, 204, 204);
}
.memo-content {
width: 82%;
padding: 1%;
margin: 1%;
margin-bottom: 40px;
background-color: #F6F6F6;
white-space: normal;
word-break: break-all;
word-wrap: break-word;
/*word-wrap: break-word;*/
}
.memo-timestamp {
position: absolute;
bottom: 0px;
/*right: 0;*/
left: 0;
margin: 20px;
}
.replies {
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;*/
}
</style>
<div class="lz">
<div class="project_r_h">
<h2 class="project_h2"><%= h @board.name %></h2>
</div>
<!-- 在这里添加赞和踩-->
<span id="praise_tread" style="float: right">
<%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @topic,:show_flag => true,:user_id =>User.current.id,:horizontal => true}%>
</span>
<div class="contextual">
<%= watcher_link(@topic, User.current) %>
<%= link_to(
l(:button_quote),
{:action => 'quote', :id => @topic},
:remote => true,
:method => 'get',
:class => 'icon icon-comment',
:remote => true) if !@topic.locked? && authorize_for('messages', 'reply') %>
<%= link_to(
l(:button_edit),
{:action => 'edit', :id => @topic},
:class => 'icon icon-edit'
) if @message.editable_by?(User.current) %>
<%= link_to(
l(:button_delete),
{:action => 'destroy', :id => @topic},
:method => :post,
:data => {:confirm => l(:text_are_you_sure)},
:class => 'icon icon-del'
) if @message.destroyable_by?(User.current) %>
</div>
<div class="lz-left">
<div class="">
<%= link_to image_tag(url_to_avatar(@topic.author), :class => "avatar"), user_path(@topic.author) %>
</div>
<p class="">
<%= link_to @topic.author, user_path(@topic.author) %>
</p>
</div>
<div class="memo-section" style="width: 100%;word-break: break-all;word-wrap: break-word;">
<div class="memo-title <%= @topic.sticky? ? 'sticky' : '' %> <%= @topic.locked? ? 'locked' : '' %>" style="width: 53%;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">
<% if @project %>
<%= label_tag l(:field_subject) %>:
<%= link_to @topic.subject, project_boards_path(@topic.project),title: @topic.subject.to_s %>
<% elsif @course %>
<%= label_tag l(:field_subject) %>:
<%= link_to @topic.subject, course_boards_path(@topic.course),title: @topic.subject.to_s %>
<% end %>
</div>
<div class="memo-content">
<%= textilizable(@topic, :content) %>
<%= link_to_attachments @topic, :author => false %>
</div>
<div class="memo-timestamp">
<div style="float: left">
<%= authoring @topic.created_on, @topic.author %>
</div>
<div style="float: right">
<% if User.current.logged? %>
<%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %>
<% else %>
<%= link_to l(:button_reply), signin_path %>
<% end %>
</div>
</div>
</div>
<br />
</div> </div>
<div class="problem_main">
<div class="ping_dispic">
<%=link_to image_tag(url_to_avatar(@topic.author), :width => "46", :height => "46"), user_path(@topic.author) %>
</div>
<div class="talk_txt fl">
<p class="problem_tit fl fb" >
<%= link_to @topic.subject, project_boards_path(@topic.project),title: @topic.subject.to_s %></p>
<br/>
<p>由<%= link_to_user_header @topic.author,false,:class=> 'problem_name c_orange' %> 添加于<%= format_time(@topic.created_on) %></p>
</div>
<!-- <a class="talk_edit fr">删除</a><a class="talk_edit fr">编辑</a><a class="talk_edit fr">置顶</a> -->
<%#= watcher_link(@topic, User.current) %>
<%= link_to(
l(:button_edit),
{:action => 'edit', :id => @topic},
:class => 'talk_edit fr'
) if @message.editable_by?(User.current) %>
<%= link_to(
l(:button_delete),
{:action => 'destroy', :id => @topic},
:method => :post,
:data => {:confirm => l(:text_are_you_sure)},
:class => 'talk_edit fr'
) if @message.destroyable_by?(User.current) %>
<div class="cl"></div>
<div class="talk_info mb10"><%= textilizable(@topic, :content) %></div>
<div class="talk_info mb10"><%= link_to_attachment_project @topic, :author => false %></div>
<!-- <a href="#" class=" link_file ml60">附件爱覅俄方if.zip(27.5kB)</a>-->
<div class="cl"></div>
<% if User.current.logged? %>
<%= toggle_link l(:button_reply), "reply", :focus => 'message_content',:class => 'talk_edit fr' %>
<% else %>
<%= link_to l(:button_reply), signin_path,:class => 'talk_edit fr' %>
<% end %>
<%= link_to(
l(:button_quote),
{:action => 'quote', :id => @topic},
:remote => true,
:method => 'get',
:class => 'talk_edit fr',
:remote => true) if !@topic.locked? && authorize_for('messages', 'reply') %>
<div class="cl"></div>
</div><!--讨论主类容 end-->
<% unless @replies.empty? %> <% unless @replies.empty? %>
<br />
<br />
<br />
<br />
<h3 class="comments"><%= l(:label_reply_plural) %> (<%= @reply_count %>)</h3>
<% reply_count = 0 %> <% reply_count = 0 %>
<% @replies.each do |message| %> <% @replies.each do |message| %>
<div class="message reply" id="<%= "message-#{message.id}" %>"> <div class="ping_C mb10" id="<%= "message-#{message.id}" %>">
<table class="borad-text-list"> <div class="ping_dispic"><%= link_to image_tag(url_to_avatar(message.author), :width => '46',:height => '46'), user_path(message.author) %></div>
<tr> <div class="ping_discon">
<td rowspan="3" valign="top" width="60px"> <div class="ping_distop">
<%= link_to image_tag(url_to_avatar(message.author), :class => "avatar"), user_path(message.author) %> <%= link_to_user_header message.author,false,:class => 'c_blue fb fl mb10 ' %>
</td> <span class="c_grey fr"><%= format_time(message.created_on) %></span>
<td> <div class="cl"></div>
<div class="contextual-borad"> <p><%= textilizable message,:content,:attachments => message.attachments %></p>
<%= link_to( <%= link_to_attachments message, :author => false %>
"引用", </div>
{:action => 'quote', :id => message}, <div class="ping_disfoot">
:remote => true, <%= link_to(
:method => 'get', l(:button_quote),
:title => l(:button_quote)) if !@topic.locked? && authorize_for('messages', 'reply') %> {:action => 'quote', :id => message},
<%= link_to( :remote => true,
#image_tag('edit.png'), :method => 'get',
"编辑", :title => l(:button_quote)) if !@topic.locked? && authorize_for('messages', 'reply') %>
{:action => 'edit', :id => message}, <%= link_to(
:title => l(:button_edit) #image_tag('edit.png'),
) if message.editable_by?(User.current) %> l(:button_edit),
<%= link_to( {:action => 'edit', :id => message},
#image_tag('delete.png'), :title => l(:button_edit)
"删除", ) if message.course_editable_by?(User.current) %>
{:action => 'destroy', :id => message}, <%= link_to(
:method => :post, #image_tag('delete.png'),
:data => {:confirm => l(:text_are_you_sure)}, l(:button_delete),
:title => l(:button_delete) {:action => 'destroy', :id => message},
) if message.destroyable_by?(User.current) %> :method => :post,
</div> :data => {:confirm => l(:text_are_you_sure)},
</td> :title => l(:button_delete)
</tr> ) if message.course_destroyable_by?(User.current) %>
<tr> </div>
<td class="comments"> <div class="cl"></div>
<div class="wiki" style="width: 100%;word-break: break-all;word-wrap: break-word;"> </div>
<%= textilizable message,:content,:attachments => message.attachments %> <div class="cl"></div>
</div> </div><!---留言内容-->
<%= link_to_attachments message, :author => false %>
</td>
</tr>
<tr>
<td class="font_lighter" style="float: left">
<%= authoring message.created_on, message.author %>
</td>
</tr>
</table>
</div>
<% end %> <% end %>
<div class="pagination">
<%= pagination_links_full @reply_pages, @reply_count, :per_page_links => false %>
</div>
<% end %> <% end %>
<% if !@topic.locked? && authorize_for('messages', 'reply') %> <% if !@topic.locked? && authorize_for('messages', 'reply') %>
<div id="reply" style="display:none;"> <div id="reply" style="display:none;">
<%= form_for @reply, :as => :reply, :url => {:action => 'reply', :id => @topic}, :html => {:multipart => true, :id => 'message-form'} do |f| %> <%= form_for @reply, :as => :reply, :url => {:action => 'reply', :id => @topic}, :html => {:multipart => true, :id => 'message_form'} do |f| %>
<%= render :partial => 'form', :locals => {:f => f, :replying => true} %> <%= render :partial => 'form', :locals => {:f => f, :replying => true} %>
<input type="button" class="enterprise" value="<%=l(:button_submit) %>" onclick="submit_message_replay();" > <a href="#" onclick="submit_message_replay();"class="blue_btn fl c_white" style="margin-left: 50px;"><%= l(:button_submit)%></a>
<% end %> <% end %>
<div id="preview" class="wiki"></div> <div id="preview" class="wiki"></div>
</div> </div>
<% end %> <% end %>
<ul class="wlist">
<%= pagination_links_full @reply_pages, @reply_count, :per_page_links => false, :remote => false, :flag => true%>
</ul>
<% html_title @topic.subject %> <% html_title @topic.subject %>
<script type="text/javascript"> <script type="text/javascript">
var flag = false; // var flag = false;
jQuery(document).ready(function($) { // jQuery(document).ready(function($) {
transpotUrl('#content'); // transpotUrl('#content');
}); // });
function submit_message_replay() function submit_message_replay()
{ {
if(flag) if(flag)
{ {
$("#message-form").submit(); $("#message_form").submit();
} }
} }
function regexContent() function regexContent()

View File

@ -3,22 +3,22 @@
</div> </div>
<% if @message.project %> <% if @message.project %>
<%= board_breadcrumb(@message) %> <%#= board_breadcrumb(@message) %>
<h3><%= avatar(@topic.author, :size => "24") %><span style = "width:100%;word-break:break-all;word-wrap: break-word;"><%=h @topic.subject %></span></h3> <!--<h3><%#= avatar(@topic.author, :size => "24") %><span style = "width:100%;word-break:break-all;word-wrap: break-word;"><%#=h @topic.subject %></span></h3>-->
<div class="talk_new ml15">
<%= form_for @message, { <ul>
:as => :message, <%= form_for @message, { :as => :message,
:url => {:action => 'edit'}, :url => {:action => 'edit'},
:html => {:multipart => true, :html => {:multipart => true,
:id => 'message-form', :id => 'message-form',
:method => :post} :method => :post}
} do |f| %> } do |f| %>
<%= render :partial => 'form', <%= render :partial => 'form_project',
:locals => {:f => f, :replying => !@message.parent.nil?} %> :locals => {:f => f, :replying => !@message.parent.nil?} %>
<a href="#" onclick="$('#message-form').submit();" class="ButtonColor m3p10"> <a href="#" onclick="submitProjectsBoard();"class="blue_btn fl c_white"><%= l(:button_submit)%></a>
<%= l(:button_save) %> <%= link_to l(:button_cancel), board_message_url(@message.board, @message.root, :r => (@message.parent_id && @message.id)), :class => "blue_btn grey_btn fl c_white" %>
</a> </ul>
<%= link_to l(:button_cancel), board_message_url(@message.board, @message.root, :r => (@message.parent_id && @message.id)), :class => "ButtonColor m3p10" %> </div>
<% end %> <% end %>
<% elsif @message.course %> <% elsif @message.course %>
<%#= course_board_breadcrumb(@message) %> <%#= course_board_breadcrumb(@message) %>

View File

@ -0,0 +1,27 @@
<li class="ml45">
<label><span class="c_red">*</span>&nbsp;<%= l(:field_title) %>&nbsp;&nbsp;</label>
<input type="text" name="news[title]" class="hwork_input" id="news_title" size="60" onkeyup="regexTitle();" maxlength="60" placeholder="60个字符以内" value="<%= is_new ? '' : @news.title %>">
<p id="title_notice_span" class="ml55"></p>
</li>
<li class="ml45">
<label class="fl" ><span class="c_red">*</span>&nbsp;<%= l(:field_description) %>&nbsp;&nbsp;</label>
<textarea id="news_description" name="news[description]" placeholder="最多3000个汉字(或6000个英文字符)" class="hwork_text fl" onkeyup="regexDescription();" maxlength="6000"><%= is_new ? '' : @news.description %></textarea>
<p id="description_notice_span" class="ml55"></p>
</li>
<div class="cl"></div>
<li class="ml45">
<label class="fl">&nbsp;&nbsp;<%= l(:label_attachment_plural) %>&nbsp;&nbsp;</label>
<%= render :partial => 'attachments/new_form', :locals => {:container => @news} %>
<div class="cl"></div>
</li>
<li class=" ml90" >
<% if is_new %>
<%= link_to l(:button_create), "#", :onclick => 'submitNews();', :onmouseover => 'submitFocus(this);', :class => 'blue_btn fl c_white' %>
<%= link_to l(:button_cancel), project_news_index_path(@project), :onclick => '$("#add-news").hide()', :class => 'blue_btn grey_btn fl c_white' %>
<% else %>
<%= link_to l(:button_save), "#", :onclick => 'submitNews();',:onmouseover => 'this.focus()',:class => 'blue_btn fl c_white' %>
<%= link_to l(:button_cancel), "#", :onclick => '$("#edit-news").hide(); return false;',:class => 'blue_btn grey_btn fl c_white' %>
<% end %>
<div class="cl"></div>
</li>
<!-- <#%= wikitoolbar_for 'news_description'%>-->

View File

@ -1,95 +1,21 @@
<div class="project_r_h">
<h2 class="project_h2"><%= l(:label_news) %></h2>
</div>
<script type="text/javascript">
function regexTitle()
{
var name = $("#news_title").val();
if(name.length ==0)
{
$("#title_notice_span").text("标题不能为空");
$("#title_notice_span").css('color','#ff0000');
$("#title_notice_span").focus();
return false;
}
else if(name.length <= 60)
{
$("#title_notice_span").text("填写正确");
$("#title_notice_span").css('color','#008000');
return true;
}
else
{
$("#title_notice_span").text("标题超过60个字符");
$("#title_notice_span").css('color','#ff0000');
$("#title_notice_span").focus();
return false;
}
}
function regexDescription()
{
var name = $("#news_description").val();
if(name.length ==0)
{
$("#description_notice_span").text("描述不能为空");
$("#description_notice_span").css('color','#ff0000');
$("#description_notice_span").focus();
return false;
}
else
{
$("#description_notice_span").text("填写正确");
$("#description_notice_span").css('color','#008000');
return true;
}
}
function submitNews()
{
if(regexTitle() && regexDescription())
{
$("#news-form").submit();
}
}
function submitFocus(obj)
{
$(obj).focus();
}
</script>
<% <%
if @project.project_type == Project::ProjectType_course btn_tips = l(:label_news_new)
btn_tips = l(:label_news_notice) label_tips = l(:label_news)
label_tips = l(:label_course_news)
else
btn_tips = l(:label_news_new)
label_tips = l(:label_news)
end
%> %>
<% if @project.enabled_modules.where("name = 'news'").count > 0 && User.current.member_of?(@project) %> <div class="project_r_h">
<%= link_to(btn_tips, <h2 class="project_h2"><%= label_tips %></h2>
new_project_news_path(@project), </div>
:class => 'icon icon-add', <div class="talk_top">
:onclick => 'showAndScrollTo("add-news", "news_title"); return false;') %> <p class="fl"><%= l(:label_total_news) %><span><%= @news_count %></span><%= l(:label_project_new_list) %></p>
<% end %> <% if @project && User.current.allowed_to?(:manage_news, @project) %>
<% if @project && User.current.allowed_to?(:manage_news, @project) %> <%= link_to(btn_tips, new_project_news_path(@project),
<div id="add-news" class="add_frame" style="display:none;"> :class => 'problem_new_btn fl c_dorange') %>
<%= labelled_form_for @news, :url => project_news_index_path(@project), <div class="cl"></div>
:html => {:id => 'news-form', :multipart => true} do |f| %>
<%= render :partial => 'news/form', :locals => {:f => f} %>
<%#= submit_tag l(:button_create), :class => 'whiteButton m3p10 h30', :name => nil %><!-- button-submit -->
<%= link_to l(:button_create), "#", :onclick => 'submitNews();',:onmouseover => 'submitFocus(this);', :class => 'ButtonColor m3p10' %>
<%#= preview_link preview_news_path(:project_id => @project), 'news-form', target='preview', {:class => 'whiteButton m3p10'} %> <% end %>
<div class="cl"></div>
</div>
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-news").hide()', :class => 'ButtonColor m3p10' %>
<% end if @project %>
<div id="preview" class="wiki"></div>
</div>
<% end %>
<div> <div>
<% if @newss.empty? %> <% if @newss.empty? %>
<p class="nodata"> <p class="nodata">
@ -97,58 +23,25 @@
</p> </p>
<% else %> <% else %>
<% @newss.each do |news| %> <% @newss.each do |news| %>
<div class="problem_main">
<%= link_to image_tag(url_to_avatar(news.author),:width => 42,:height => 42), user_path(news.author), :class => "problem_pic fl" %>
<div class="problem_txt fl mt5">
<%= link_to_user_header(news.author,false,{:class=> 'problem_name c_orange fl'}) if news.respond_to?(:author) %>
<span class="fl"> <%= l(:label_release_news) %></span><%= link_to h(news.title), news_path(news),:class => 'problem_tit fl fb c_dblue' %><br />
<div class="cl mb5"></div>
<p id="news_description_<%= news.id %>" class="news_description mt5"><%= news.description %><br /> <%= l(:label_create_time) %> <%= format_time(news.created_on) %></p>
<div class="news_foot" style="display: none;" onclick="news_show_more_des(<%= news.id %>);" id="news_foot_<%= news.id %>"><%= l(:label_expend_information) %> <span class="g-arr-down"><img src="/images/jiantou.jpg" width="12" height="6" /></span></div>
</div>
<div class="cl"></div>
</div><!--problem_main end-->
<table class="content-text-list">
<tr>
<td colspan="2" valign="top" width="50">
<%= link_to image_tag(url_to_avatar(news.author), :class => "avatar"), user_path(news.author) %>
</td>
<td>
<table width="580px" border="0">
<% if @project.project_type == 1 %>
<tr>
<td colspan="2" valign="top">
<strong><%= link_to_user(news.author) if news.respond_to?(:author) %></strong>
<span style="margin-left: 4px;" class="font_lighter"><%= l(:label_project_notice) %></span>
<span><%= link_to h(news.title), news_path(news) %></span>
<span style="float: right"><%= delete_link news_path(news) if User.current.allowed_to?(:manage_news, @project) %> </span>
</td>
</tr>
<% else %>
<tr>
<td colspan="2" valign="top">
<strong><%= link_to_user(news.author) if news.respond_to?(:author) %></strong>
<span style="margin-left: 4px;" class="font_lighter"><%= l(:label_project_newshare) %></span>
<span> <%= link_to h(news.title), news_path(news) %></span>
<span style="float: right" class='delete_icon'>
<%= delete_link news_path(news) if User.current.allowed_to?(:manage_news, @project) %>
</span>
</td>
</tr>
<% end %>
<tr>
<td colspan="2" width="580px">
<span class="font_description"><%= textilizable(news, :description) %></span></td>
</tr>
<tr>
<td align="left"><span class="font_lighter"> <%= l :label_update_time %>
&nbsp;<%= format_time(news.created_on) %></span></td>
<td width="350" align="right" class="a"><%= link_to l(:label_project_newother), news_path(news) %><%= "(#{l(:label_x_comments, :count => news.comments_count)})" if news.comments_count >= 0 %></td>
</tr>
</table>
</td>
</tr>
</table>
<% end %> <% end %>
<% end %> <% end %>
</div> </div>
<!--end--> <!--end-->
<div style="padding-right: 10px"> <ul class="wlist">
<div class="pagination"> <%= pagination_links_full @news_pages, @news_count, :per_page_links => false, :remote => false, :flag => true%>
<ul> </ul>
<%= pagination_links_full @news_pages %>
</ul>
</div>
<% other_formats_links do |f| %> <% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => {:project_id => @project, :key => User.current.rss_key} %> <%= f.link_to 'Atom', :url => {:project_id => @project, :key => User.current.rss_key} %>
@ -160,7 +53,6 @@
<% end %> <% end %>
<% html_title(l(:label_news_plural)) -%> <% html_title(l(:label_news_plural)) -%>
</div>
<script type='text/javascript'> <script type='text/javascript'>
$(document).ready(function ($) { $(document).ready(function ($) {

View File

@ -4,12 +4,23 @@
label_tips = l(:label_course_news) label_tips = l(:label_course_news)
%> %>
<% if @project %> <% if @project %>
<%= labelled_form_for @news, :url => project_news_index_path(@project), <div class="project_r_h">
:html => {:id => 'news-form', :multipart => true} do |f| %> <h2 class="project_h2"><%= l(:label_news) %></h2>
<%= render :partial => 'news/form', :locals => {:f => f} %> </div>
<%= submit_tag l(:button_create), :class => "whiteButton m3p10 h30" %> <div class="hwork_new">
<%#= preview_link preview_news_path(:project_id => @project), 'news-form', target='preview', {:class => 'whiteButton m3p10'} %> <%= error_messages_for @news %>
<% end %> <p class="talk_top pl15" >
<%= l(:label_news_new)%>
</p>
<ul>
<%= labelled_form_for @news, :url => project_news_index_path(@project),
:html => {:id => 'news-form', :multipart => true} do |f| %>
<%= render :partial => 'news/project_form', :locals => {:f => f, :is_new => true} %>
<% end if @project %>
</ul>
<div id="preview" class="wiki"></div>
</div>
<% elsif @course %> <% elsif @course %>
<div class="project_r_h"> <div class="project_r_h">
<h2 class="project_h2"><%= label_tips %></h2> <h2 class="project_h2"><%= label_tips %></h2>

View File

@ -1,213 +1,133 @@
<%= javascript_include_tag "jquery.infinitescroll.js" %>
<div class="project_r_h"> <div class="project_r_h">
<h2 class="project_h2"><%= l(:label_activity) %></h2> <h2 class="project_h2"><%= l(:label_activity) %></h2>
</div> </div>
<%= javascript_include_tag "jquery.infinitescroll.js" %> <!--CONTENT LIST-->
<script> <% unless @events_pages.empty? %>
/* $(document).ready(function (){ //别忘了加这句除非你没学Jquery
$("#container").infinitescroll({
navSelector: "#paginator", //页面分页元素--成功后自动隐藏
nextSelector: "#paginator a[rel='next']", //下一页的按钮,但是貌似这个选不中
itemSelector: ".scroll " ,
path: function(current){ var page = parseInt(current)+1;
var project_id = <%= @project.id %>;
return "/projects/"+project_id+"?page="+page
}, //下一页的路径
animate: true,
maxPage: 500
});
});*/
</script>
<div id="container">
<div class="scroll">
<% unless @events_pages.empty? %>
<% @events_pages.each do |e| -%> <% @events_pages.each do |e| -%>
<% if e.forge_act_type == "ProjectCreateInfo"%> <!--创建-->
<div class="font_description"> <% if e.forge_act_type == "ProjectCreateInfo"%>
<table width="660"> <div class="problem_main">
<tr> <a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<td> <div class="problem_txt fl mt5">
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <%= link_to e.user, user_path(e.user), :class => "problem_name c_orange fl" %><span class="fl"> <%= l(:label_project_new) %> </span>
</td> <%= link_to e.project.name, :class => "problem_tit fl fb" %></a><br />
<td colspan="2"> <p class="mt5"><br /> <%= l :label_create_time %> <%= format_time(e.project.created_on) %></p>
<table width="580">
<tr>
<td>
<%= link_to_user(e.user)%>
<%= l(:label_project_new) %>
<%= link_to e.project.name %>
<strong> !</strong>
</td>
</tr>
<tr>
<td class="font_lighter" >
<%= l :label_create_time %>:
<%= format_time(e.project.created_on) %>
</table>
</td>
</tr>
</table>
</div> </div>
<% end %> <div class="cl"></div>
<% next if e.forge_act_type.safe_constantize.nil?
act = e.forge_act;
next if act.nil? %>
<% if e.forge_act_type == "Issue" %>
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;width: 100%;word-wrap: break-word;word-break: break-all;margin-top: 10px;">
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;">
<%= image_tag(url_to_avatar(act.author), :class => "avatar") %>
</div>
<div class="activity-content" style="padding:5px 5px 5px 70px;">
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong>
<span class="activity-title font_lighter">
<%= link_to_user(act.author) %>
<%= l(:label_new_activity) %>
</span>
<%= link_to format_activity_title("#{act.source_from}##{act.project_issues_index} (#{act.status}): #{act.tracker.name} #{act.subject}"),
{:controller => 'issues',
:action => 'show',
:id => act.id} %>
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;">
<%= textAreailizable act,:description %>
</div>
<div class="activity_status" style="position:relative; padding-top: 3px;">
<span class="font_lighter"> <%= l :label_activity_time %>
&nbsp; <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></span>
<div class="" style="display:inline-block;position:absolute; right:2%;">
<span> <%= link_to l(:label_find_all_comments), issue_path(act.id) %> </span><span class="font_lighter"><%= l(:label_comments_count, :count => act.journals.count) %></span>
</div>
</div>
</div>
</div>
<% elsif e.forge_act_type == "Journal" %>
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;width: 100%;word-wrap: break-word;word-break: break-all;">
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;">
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %>
</div>
<div class="activity-content" style="padding:5px 5px 5px 70px;">
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong>
<span class="activity-title font_lighter">
<%= link_to(h(e.user), user_path(e.user_id)) %>
<%= l(:label_new_activity) %>
</span>
<%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.id)) %>
<%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.project_issues_index}: #{act.issue.subject}"),
{:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %>
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;">
<%= textAreailizable act,:notes %>
</div> </div>
<div class="activity_status" style="position:relative; padding-top: 3px;"> <% end %>
<span class="font_lighter"> <%= l :label_activity_time %> <% next if e.forge_act_type.safe_constantize.nil?
&nbsp; <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></span> act = e.forge_act;
</div> next if act.nil? %>
</div> <!--缺陷动态-->
</div> <% if e.forge_act_type == "Issue" %>
<% elsif e.forge_act_type == "Message" %> <div class="problem_main">
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;width: 100%;word-wrap: break-word;word-break: break-all;"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(act.author), :width => "42", :height => "42") %></a>
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;"> <div class="problem_txt fl mt5">
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <a class="problem_name fl ">
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<%= link_to act.author, user_path(act.author), :class => "problem_name c_orange fl" %><span class="fl"> <%= l(:label_new_activity) %> </span>
<%= link_to format_activity_title("#{act.source_from}##{act.project_issues_index} (#{act.status}): #{act.tracker.name} #{act.subject}"),
{:controller => 'issues',
:action => 'show',
:id => act.id},
:class => "problem_tit fl fb " %>
</a><br />
<p class="mt5"><%= textAreailizable act,:description %><br />
<%= l :label_activity_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %>
</p>
</div> </div>
<div class="activity-content" style="padding:5px 5px 5px 70px;"> <div class="cl"></div>
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong>
<span class="activity-title font_lighter">
<%= link_to(h(e.user), user_path(e.user_id)) %>
<%= l(:label_new_activity) %>
</span>
<%= link_to format_activity_title("#{act.board.name}: #{act.subject}"),
{:controller => 'messages',
:action => 'show',
:board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %>
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;">
<%= textAreailizable act,:content %>
</div> </div>
<div class="activity_status" style="position:relative; padding-top: 3px;"> <!--jou留言-->
<span class="font_lighter"> <%= l :label_activity_time %> <% elsif e.forge_act_type == "Journal" %>
&nbsp; <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></span> <div class="problem_main">
<a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<div class="problem_txt fl mt5">
<a class="problem_name fl ">
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %>
</a><span class="fl"> <%= l(:label_new_activity) %> </span>
<a class="problem_tit fl fb">
<%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.id), :class => "problem_tit fl fb") %>
<%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.project_issues_index}: #{act.issue.subject}"),
{:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"}, :class => "problem_tit fl fb" %>
</a><br />
<p class="mt5"><%= textAreailizable act,:notes %><br />
<%= l :label_activity_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
</div>
<div class="cl"></div>
</div> </div>
</div> <!--message -->
</div> <% elsif e.forge_act_type == "Message" %>
<% elsif e.forge_act_type == "News" %> <div class="problem_main">
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;width: 100%;word-wrap: break-word;word-break: break-all;"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;"> <div class="problem_txt fl mt5">
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <a class="problem_name fl ">
</div> <%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<div class="activity-content" style="padding:5px 5px 5px 70px;"> <%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> </span>
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong>
<span class="activity-title font_lighter">
<%= link_to(h(e.user), user_path(e.user_id)) %>
<%= l(:label_new_activity) %>
</span>
<% unless act.nil? %>
<%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %>
<% end %>
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;">
<%= textAreailizable act,:description %>
</div>
<div class="activity_status" style="position:relative; padding-top: 3px;">
<span class="font_lighter"> <%= l :label_activity_time %>
&nbsp; <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></span>
<div class="" style="display:inline-block;position:absolute; right:2%;">
<span>
<%= link_to l(:label_find_all_comments), {:controller => 'news', :action => 'show', :id => act.id} %>
</span>
<span class="font_lighter">
<%= l(:label_comments_count, :count => act.comments_count) %>
</span>
</div>
</div>
</div>
</div>
<% elsif e.forge_act_type == "Document" %>
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;width: 100%;word-wrap: break-word;word-break: break-all;">
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;">
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %>
</div>
<div class="activity-content" style="padding:5px 5px 5px 70px;">
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong>
<span class="activity-title font_lighter">
<%= link_to(h(e.user), user_path(e.user_id)) %>
<%= l(:label_new_activity) %>
</span>
<%= link_to format_activity_title("#{l(:label_document)}: #{act.title}"), {:controller => 'documents', :action => 'show', :id => act.id} %>
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;">
<%= textAreailizable act,:description %>
</div>
<div class="activity_status" style="position:relative; padding-top: 3px;">
<span class="font_lighter"> <%= l :label_activity_time %>
&nbsp; <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></span>
</div> <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"),
</div> {:controller => 'messages',
</div> :action => 'show',
<% elsif e.forge_act_type == "Attachment" %> :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}),
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;width: 100%;word-wrap: break-word;word-break: break-all;"> :class => "problem_tit fl fb " %>
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;"> <br />
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <p class="mt5"><%= textAreailizable act,:content %><br />
</div> <%= l :label_create_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
<div class="activity-content" style="padding:5px 5px 5px 70px;"> </div>
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong> <div class="cl"></div>
<span class="activity-title font_lighter"> </div>
<%= link_to(h(e.user), user_path(e.user_id)) %> <!--new 新闻-->
<%= l(:label_new_activity) %> <% elsif e.forge_act_type == "News" %>
</span> <div class="problem_main">
<%= link_to format_activity_title("#{l(:label_attachment)}: #{act.filename}"), {:controller => 'attachments', :action => 'show', :id => act.id} %> <a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;"> <div class="problem_txt fl mt5">
<%= textAreailizable act,:description %> <a class="problem_name fl ">
</div> <%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<div class="activity_status" style="position:relative; padding-top: 3px;"> <%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> </span>
<span class="font_lighter"> <%= l :label_activity_time %> <a class="problem_tit fl fb">
&nbsp; <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></span> <% unless act.nil? %>
<%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id}, :class => "problem_tit fl fb " %>
<% end %>
</a><br />
<p class="mt5"><%= textAreailizable act,:description %><br />
<%= l :label_create_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
</div>
<div class="cl"></div>
</div>
<!--Document-->
<% elsif e.forge_act_type == "Document" %>
<div class="problem_main">
<a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<div class="problem_txt fl mt5">
<a class="problem_name fl ">
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> </span>
</div> <%= link_to format_activity_title("#{l(:label_document)}: #{act.title}"), {:controller => 'documents', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %><br />
</div> <p class="mt5"><%= textAreailizable act,:description %><br />
</div> <%= l :label_create_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
<% end %> </div>
<div class="cl"></div>
</div>
<!--Attachment -->
<% elsif e.forge_act_type == "Attachment" %>
<div class="problem_main">
<a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<div class="problem_txt fl mt5">
<a class="problem_name fl ">
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> </span>
<%= link_to format_activity_title("#{l(:label_attachment)}: #{act.filename}"), {:controller => 'attachments', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %></a><br />
<p class="mt5"><%= textAreailizable act,:description %><br />
<%= l :label_create_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
</div>
<div class="cl"></div>
</div>
<% end %>
<% end %> <% end %>
<% end %> <% end %>
</div>
</div>
<%= paginate @events_pages, :left => 3, :right => 3%> <%= paginate @events_pages, :left => 3, :right => 3%>

View File

@ -1,30 +1,15 @@
<div id="tags_show" style="float: left;"> <div id="tags_show">
<%= render :partial => "tags/tag_name",:locals => {:obj => obj,:non_list_all => false ,:object_flag => object_flag} %> <%= render :partial => "tags/tag_name",:locals => {:obj => obj,:non_list_all => false ,:object_flag => object_flag} %>
</div> </div>
<div style="float: left;"> <% if User.current.logged?%>
<% if User.current.logged? %> <a href="javascript:void(0)" class="yellowBtn f_l" onclick="$('#add_tag01').slideToggle();"><%= l(:label_add_tag)%></a>
<span> <%= toggle_link (l(:label_add_tag)), 'put-tag-form', {:focus => 'tags_name'} %> </span> <span id="add_tag01" style="display:none; vertical-align: middle;" class="ml10 f_l">
<% end %> <%= form_for "tag_for_save",:remote=>true,:url=>save_tag_path,:update => "tags_show",:complete => '$("#put-tag-form").slideUp();' do |f| %>
<%= f.text_field :name ,:id => "tags_name",:size=>"20",:require=>true,:maxlength => Setting.tags_max_length,:minlength=>Setting.tags_min_length,:class =>"isTxt w90 f_l" %>
<%= f.text_field :object_id,:value=> obj.id,:style=>"display:none"%>
<%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%>
<input type="button" class="submit f_l" onclick="$('#tags_name').parent().submit();" />
<% end %>
</span>
<% end%>
<div id="put-tag-form" style="display: none;text-align: center">
<%= form_for "tag_for_save",:remote=>true,:url=>tag_path,
:update => "tags_show",
:complete => '$("#put-tag-form").slideUp();' do |f| %>
<table>
<tr>
<td>
<%= f.text_field :name ,:id => "tags_name",:size=>"20",
:require=>true,
:maxlength => Setting.tags_max_length,
:minlength=>Setting.tags_min_length %>
</td>
<%= f.text_field :object_id,:value=> obj.id,:style=>"display:none"%>
<%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%>
<td style="margin-left: 5px" vertical-valign="middle" >
<a href="#" onclick='$("#tags_name").parent().submit();' type="button" class="submit f_l"></a>
</td>
<tr>
</table>
<% end %>
</div>
</div>

View File

@ -31,13 +31,13 @@
<!-- 用来显示三大对象的主页中的tag 故是全部显示 --> <!-- 用来显示三大对象的主页中的tag 故是全部显示 -->
<% if @tags.size > 0 %> <% if @tags.size > 0 %>
<% @tags.each do |tag| %> <% @tags.each do |tag| %>
<!--项目暂时单独出来,后面重构--> <!--object_flag == '2'为项目 项目暂时单独出来,后面其它几个选项也需样式重构-->
<% if object_flag == '2' %> <% if object_flag == '2' %>
<span class="re_tag f_l"> <span class="re_tag f_l">
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %> <%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id, :class => 'pt5' %>
<% if (ProjectInfo.find_by_project_id(obj.id)).try(:user_id) == User.current.id %> <% if (ProjectInfo.find_by_project_id(obj.id)).try(:user_id) == User.current.id %>
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag, <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
:taggable_id => obj.id, :taggable_type => object_flag %> :taggable_id => obj.id, :taggable_type => object_flag %>
<% end %> <% end %>
</span> </span>
<% else %> <% else %>

View File

@ -12,6 +12,9 @@ zh:
# #
label_project_new: "新建项目" label_project_new: "新建项目"
label_join_project: "加入项目" label_join_project: "加入项目"
label_my_project: "我的项目"
# #
@ -20,13 +23,23 @@ zh:
# 热门项目栏 # 热门项目栏
# #
lable_hot_projects: 热门项目 lable_hot_projects: 热门项目
label_project_name: 项目名称:
label_private: 私有 label_private: 私有
label_public: 公开
label_project_member_amount: label_project_member_amount:
one: "%{count}人" one: "%{count}人"
other: "%{count}人" other: "%{count}人"
label_project_score_tips: 项目得分,综合考虑了项目的各项活动,反映了该项目的活跃程度 label_project_score_tips: 项目得分,综合考虑了项目的各项活动,反映了该项目的活跃程度
label_project_score: 项目评分 label_project_score: 项目评分
#
# 项目托管平台主页
#
# TopBar
#
label_project_hosting_platform: 项目托管平台
# #
# 项目托管平台主页 # 项目托管平台主页
@ -36,7 +49,7 @@ zh:
label_project_id: "项目ID:" label_project_id: "项目ID:"
label_apply_project: "+申请加入" label_apply_project: "+申请加入"
label_button_following: "+关注" label_button_following: "+添加关注"
label_exit_project: 退出项目 label_exit_project: 退出项目
label_apply_project_waiting: 已处理申请,请等待管理员审核 label_apply_project_waiting: 已处理申请,请等待管理员审核
label_unapply_project: 取消申请 label_unapply_project: 取消申请
@ -52,7 +65,7 @@ zh:
project_module_boards: 讨论区 project_module_boards: 讨论区
project_module_boards_post: 发帖 project_module_boards_post: 发帖新帖
project_module_files: 资源库 project_module_files: 资源库
project_module_repository: 版本库 project_module_repository: 版本库
project_module_create_repository: 创建版本库 project_module_create_repository: 创建版本库
@ -253,7 +266,8 @@ zh:
# 项目得分 # 项目得分
# #
label_projects_score: 项目综合得分 label_projects_score: 项目综合得分
label_project_new_list: 条项目新闻
label_issue_score: issue得分 label_issue_score: issue得分
label_issue_number: issue的数量 label_issue_number: issue的数量
label_issue_journal_number: issue的留言数量 label_issue_journal_number: issue的留言数量

View File

@ -1225,6 +1225,7 @@ zh:
label_author_name: 由%{author_name}发表了 label_author_name: 由%{author_name}发表了
label_post_on: 发表了 label_post_on: 发表了
label_post_on_issue: 发表了问题

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

View File

@ -1,372 +1,372 @@
//配置课程信息 //配置课程信息
function course_setting(id) function course_setting(id)
{ {
//alert(id); //alert(id);
$('#tb_'+id).removeClass().addClass("hwork_hovertab"); $('#tb_'+id).removeClass().addClass("hwork_hovertab");
$('#tbc_0'+id).removeClass().addClass("dis"); $('#tbc_0'+id).removeClass().addClass("dis");
$('#tb_'+(3-id)).removeClass().addClass("hwork_normaltab"); $('#tb_'+(3-id)).removeClass().addClass("hwork_normaltab");
$('#tbc_0'+(3-id)).removeClass().addClass("undis"); $('#tbc_0'+(3-id)).removeClass().addClass("undis");
} }
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
//添加分班 //添加分班
function add_group(url,course_id) { function add_group(url,course_id) {
var group_name = $('#group_name').val(); var group_name = $('#group_name').val();
$.get( $.get(
url, url,
{ valid: "name", { valid: "name",
value: group_name, value: group_name,
course_id: course_id }, course_id: course_id },
function (data) { function (data) {
if (data.valid) { if (data.valid) {
$("#add_group_name").submit(); $("#add_group_name").submit();
} }
else else
{ {
alert(data.message); alert(data.message);
} }
} }
); );
} }
//修改分班:修改分班时得考虑什么都不改但是点击确定的情况 //修改分班:修改分班时得考虑什么都不改但是点击确定的情况
function edit_group(id,url,course_id,group_id) function edit_group(id,url,course_id,group_id)
{ {
var group_name = $('#'+id).val(); var group_name = $('#'+id).val();
$.get( $.get(
url, url,
{ {
valid: "name", valid: "name",
value: group_name, value: group_name,
course_id: course_id, course_id: course_id,
group_id: group_id group_id: group_id
}, },
function (data) { function (data) {
if (data.valid) { if (data.valid) {
$("#update_group_"+group_id).submit(); $("#update_group_"+group_id).submit();
} }
else else
{ {
alert(data.message); alert(data.message);
} }
} }
); );
} }
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////新建课程相关 ///////////////////////////////////////////////////////////////新建课程相关
//验证课程名称 //验证课程名称
function regex_course_name() function regex_course_name()
{ {
var name = $.trim($("#course_name").val()); var name = $.trim($("#course_name").val());
if(name.length == 0) if(name.length == 0)
{ {
$("#course_name_notice").show(); $("#course_name_notice").show();
return false; return false;
} }
else else
{ {
$("#course_name_notice").hide(); $("#course_name_notice").hide();
return true; return true;
} }
} }
//验证课程学时 //验证课程学时
function regex_course_class_period() function regex_course_class_period()
{ {
var class_period = $.trim($("#class_period").val()); var class_period = $.trim($("#class_period").val());
var regex = /^\d*$/; var regex = /^\d*$/;
if(class_period.length == 0) if(class_period.length == 0)
{ {
$("#course_class_period_notice").html("学时总数不能为空"); $("#course_class_period_notice").html("学时总数不能为空");
$("#course_class_period_notice").show(); $("#course_class_period_notice").show();
return false; return false;
} }
else if (regex.test(class_period)) { else if (regex.test(class_period)) {
$("#course_class_period_notice").html(""); $("#course_class_period_notice").html("");
$("#course_class_period_notice").hide(); $("#course_class_period_notice").hide();
return true; return true;
} }
else else
{ {
$("#course_class_period_notice").html("学时总数必须为数字"); $("#course_class_period_notice").html("学时总数必须为数字");
$("#course_class_period_notice").show(); $("#course_class_period_notice").show();
return false; return false;
} }
} }
//提交新建课程 //提交新建课程
function submit_new_course() function submit_new_course()
{ {
if(regex_course_name()&&regex_course_class_period()) if(regex_course_name()&&regex_course_class_period())
{ {
$("#new_course").submit(); $("#new_course").submit();
} }
} }
function submit_edit_course(id) function submit_edit_course(id)
{ {
if(regex_course_name()&&regex_course_class_period()) if(regex_course_name()&&regex_course_class_period())
{ {
$("#edit_course_"+id).submit(); $("#edit_course_"+id).submit();
} }
} }
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////课程讨论区 //////////////////////////////////////////////////////////////课程讨论区
function regexSubject() function regexSubject()
{ {
var content = $.trim($("#message_subject").val()); var content = $.trim($("#message_subject").val());
if(content.length ==0) if(content.length ==0)
{ {
$("#subject_span").text("主题不能为空"); $("#subject_span").text("主题不能为空");
$("#subject_span").css('color','#ff0000'); $("#subject_span").css('color','#ff0000');
return false; return false;
} }
else else
{ {
$("#subject_span").text("填写正确"); $("#subject_span").text("填写正确");
$("#subject_span").css('color','#008000'); $("#subject_span").css('color','#008000');
return true; return true;
} }
return false; return false;
} }
function regexContent() function regexContent()
{ {
var content = $.trim($("#message_content").val()); var content = $.trim($("#message_content").val());
if(content.length ==0) if(content.length ==0)
{ {
$("#message_content_span").text("描述不能为空"); $("#message_content_span").text("描述不能为空");
$("#message_content_span").css('color','#ff0000'); $("#message_content_span").css('color','#ff0000');
return false; return false;
} }
else else
{ {
$("#message_content_span").text("填写正确"); $("#message_content_span").text("填写正确");
$("#message_content_span").css('color','#008000'); $("#message_content_span").css('color','#008000');
return true; return true;
} }
return false; return false;
} }
function submitCoursesBoard() function submitCoursesBoard()
{ {
if(regexSubject()&&regexContent()){$("#message-form").submit();} if(regexSubject()&&regexContent()){$("#message-form").submit();}
} }
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////// 课程通知 /////////////////////////////////////////////////////////////// 课程通知
function regexTitle() function regexTitle()
{ {
var name = $("#news_title").val(); var name = $("#news_title").val();
if(name.length ==0) if(name.length ==0)
{ {
$("#title_notice_span").text("标题不能为空"); $("#title_notice_span").text("标题不能为空");
$("#title_notice_span").css('color','#ff0000'); $("#title_notice_span").css('color','#ff0000');
$("#title_notice_span").focus(); $("#title_notice_span").focus();
return false; return false;
} }
else if(name.length <= 60) else if(name.length <= 60)
{ {
$("#title_notice_span").text("填写正确"); $("#title_notice_span").text("填写正确");
$("#title_notice_span").css('color','#008000'); $("#title_notice_span").css('color','#008000');
return true; return true;
} }
else else
{ {
$("#title_notice_span").text("标题超过60个字符"); $("#title_notice_span").text("标题超过60个字符");
$("#title_notice_span").css('color','#ff0000'); $("#title_notice_span").css('color','#ff0000');
$("#title_notice_span").focus(); $("#title_notice_span").focus();
return false; return false;
} }
} }
function regexDescription() function regexDescription()
{ {
var name = $("#news_description").val(); var name = $("#news_description").val();
if(name.length ==0) if(name.length ==0)
{ {
$("#description_notice_span").text("描述不能为空"); $("#description_notice_span").text("描述不能为空");
$("#description_notice_span").css('color','#ff0000'); $("#description_notice_span").css('color','#ff0000');
$("#description_notice_span").focus(); $("#description_notice_span").focus();
return false; return false;
} }
else else
{ {
$("#description_notice_span").text("填写正确"); $("#description_notice_span").text("填写正确");
$("#description_notice_span").css('color','#008000'); $("#description_notice_span").css('color','#008000');
return true; return true;
} }
} }
function submitNews() function submitNews()
{ {
if(regexTitle() && regexDescription()) if(regexTitle() && regexDescription())
{ {
$("#news-form").submit(); $("#news-form").submit();
} }
} }
function submitFocus(obj) function submitFocus(obj)
{ {
$(obj).focus(); $(obj).focus();
} }
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
//验证搜索时输入名字 //验证搜索时输入名字
function regexName(content) function regexName(content)
{ {
var name = $.trim($("#name").val()); var name = $.trim($("#name").val());
if(name.length == 0) if(name.length == 0)
{ {
$("#project_name_span").text(content); $("#project_name_span").text(content);
$("#project_name_span").css('color','#ff0000'); $("#project_name_span").css('color','#ff0000');
$("#project_name_span").focus(); $("#project_name_span").focus();
return false; return false;
} }
else else
{ {
$("#project_name_span").text(""); $("#project_name_span").text("");
return true; return true;
} }
} }
//提交搜索 //提交搜索
function submitSerch(content) function submitSerch(content)
{ {
if(regexName(content)){$("#course_search_form").submit();} if(regexName(content)){$("#course_search_form").submit();}
} }
//课程描述显示更多信息 //课程描述显示更多信息
function show_more_msg() function show_more_msg()
{ {
$("#course_description").toggleClass("course_description_none"); $("#course_description").toggleClass("course_description_none");
} }
//作业描述显示更多信息 //作业描述显示更多信息
function news_show_more_des(id) function news_show_more_des(id)
{ {
$('#news_description_' + id).toggleClass("news_description_none"); $('#news_description_' + id).toggleClass("news_description_none");
} }
function bid_show_more_des(id) function bid_show_more_des(id)
{ {
$("#bid_description_" + id).toggleClass("news_description_none"); $("#bid_description_" + id).toggleClass("news_description_none");
} }
//课程作业结束时间倒计时 //课程作业结束时间倒计时
function show_bid_dead_line(year,month,day,divname) function show_bid_dead_line(year,month,day,divname)
{ {
var now = new Date(); var now = new Date();
var endDate = new Date(year, month-1, day); var endDate = new Date(year, month-1, day);
var leftTime=endDate.getTime()-now.getTime(); var leftTime=endDate.getTime()-now.getTime();
var leftsecond = parseInt(leftTime/1000); var leftsecond = parseInt(leftTime/1000);
var day1=Math.floor(leftsecond/(60*60*24)); var day1=Math.floor(leftsecond/(60*60*24));
var hour=Math.floor((leftsecond-day1*24*60*60)/3600); var hour=Math.floor((leftsecond-day1*24*60*60)/3600);
var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60); var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60);
var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60); var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60);
$("#"+divname).html("<form name='formnow' class='fr'>" $("#"+divname).html("<form name='formnow' class='fr'>"
+ "<input class='c_orange' type='text' style='border:0;' size='1' value='"+day1+"' > 天" + "<input class='c_orange' type='text' style='border:0;' size='1' value='"+day1+"' > 天"
+ "<input class='c_orange' type='text' style='border:0;' size='1' value='"+hour+"' > 小时" + "<input class='c_orange' type='text' style='border:0;' size='1' value='"+hour+"' > 小时"
+ "<input class='c_orange' type='text' style='border:0;' size='1' value='"+minute+"' > 分" + "<input class='c_orange' type='text' style='border:0;' size='1' value='"+minute+"' > 分"
+ "<input class='c_orange' type='text' style='border:0;' size='1' value='"+second+"' > 秒" + "<input class='c_orange' type='text' style='border:0;' size='1' value='"+second+"' > 秒"
+ "</form>" + "</form>"
+ "<p class='fr'>作业提交还剩:</p>"); + "<p class='fr'>作业提交还剩:</p>");
} }
//验证新建作业的名字 //验证新建作业的名字
function regex_bid_name() function regex_bid_name()
{ {
var name = $.trim($("#bid_name").val()); var name = $.trim($("#bid_name").val());
if(name=="") if(name=="")
{ {
$("#bid_name_span").text("名称不能为空"); $("#bid_name_span").text("名称不能为空");
return false; return false;
} }
else else
{ {
$("#bid_name_span").text(""); $("#bid_name_span").text("");
return true; return true;
} }
} }
//验证匿评数量 //验证匿评数量
function regex_evaluation_num() function regex_evaluation_num()
{ {
var evaluation_num = $.trim($("#bid_evaluation_num").val()); var evaluation_num = $.trim($("#bid_evaluation_num").val());
var regex = /^\d+$/; var regex = /^\d+$/;
if($("#bid_open_anonymous_evaluation").attr("checked") == "checked") if($("#bid_open_anonymous_evaluation").attr("checked") == "checked")
{ {
if(evaluation_num=="") if(evaluation_num=="")
{ {
$("#bid_evaluation_num_span").text("匿评分配数量不能为空"); $("#bid_evaluation_num_span").text("匿评分配数量不能为空");
return false; return false;
} }
else if(regex.test(evaluation_num)) else if(regex.test(evaluation_num))
{ {
if(evaluation_num > 0) if(evaluation_num > 0)
{ {
$("#bid_evaluation_num_span").text(""); $("#bid_evaluation_num_span").text("");
return true; return true;
} }
else else
{ {
$("#bid_evaluation_num_span").text("匿评分配数量必须为大于0"); $("#bid_evaluation_num_span").text("匿评分配数量必须为大于0");
return false; return false;
} }
} }
else else
{ {
$("#bid_evaluation_num_span").text("匿评分配数量只能为数字"); $("#bid_evaluation_num_span").text("匿评分配数量只能为数字");
return false; return false;
} }
} }
else else
{ {
return true; return true;
} }
} }
//点击是否开启匿评单选框效果 //点击是否开启匿评单选框效果
$(function(){ $(function(){
$("#bid_open_anonymous_evaluation").click(function(){ $("#bid_open_anonymous_evaluation").click(function(){
if($("#bid_open_anonymous_evaluation").attr("checked") == "checked") if($("#bid_open_anonymous_evaluation").attr("checked") == "checked")
{ {
$("#bid_evaluation_num_li").slideDown(); $("#bid_evaluation_num_li").slideDown();
} }
else else
{ {
$("#bid_evaluation_num_li").slideUp(); $("#bid_evaluation_num_li").slideUp();
} }
}); });
}); });
//老师提交新建作业 //老师提交新建作业
function submit_new_bid(id) function submit_new_bid(id)
{ {
if(regex_bid_name()&&regex_evaluation_num()) if(regex_bid_name()&&regex_evaluation_num())
{ {
$("#"+id).submit(); $("#"+id).submit();
} }
} }
function show_window (id1,id2,top,left) { function show_window (id1,id2,top,left) {
$('#'+ id1).css('top',top); $('#'+ id1).css('top',top);
$('#'+ id1).css('left',left); $('#'+ id1).css('left',left);
$('#'+ id1).css('display','block'); $('#'+ id1).css('display','block');
$('#' + id2).css('display','block'); $('#' + id2).css('display','block');
} }
function close_window(id1,id2){ function close_window(id1,id2){
$('#' + id1).css('display','none'); $('#' + id1).css('display','none');
$('#' + id2).css('display','none'); $('#' + id2).css('display','none');
} }
//隐藏提示狂 //隐藏提示狂
function hidden_atert_form(cur_page,cur_type) function hidden_atert_form(cur_page,cur_type)
{ {
hideModal($("#popbox")); hideModal($("#popbox"));
} }
//当课程描述长度小于112px时不显示更多按钮 //当课程描述长度小于112px时不显示更多按钮
$(function(){ $(function(){
if($("#course_description_content").height()>112) if($("#course_description_content").height()>112)
{ {
$("#lg-foot").show(); $("#lg-foot").show();
} }
}); });
//将右侧的最小高度设置成左侧高度,美化界面 //将右侧的最小高度设置成左侧高度,美化界面
$(document).ready(function () { $(document).ready(function () {
$("#RSide").css("min-height",$("#LSide").height()-30); $("#RSide").css("min-height",$("#LSide").height()-30);
}); });

View File

@ -0,0 +1,129 @@
//验证搜索时输入字
function regexName() {
var name = $.trim($("#name").val());
if (name.length == 0) {
$("#project_name_span").text("<%= l(:label_search_conditions_not_null) %>");
$("#project_name_span").css('color', '#ff0000');
$("#project_name_span").focus();
return false;
}
else {
$("#project_name_span").text("");
return true;
}
}
// 项目描述超过展开
$(function(){
$(".subNav").click(function(){
$(this).toggleClass("currentDd").siblings(".subNav").removeClass("currentDd")
$(this).toggleClass("currentDt").siblings(".subNav").removeClass("currentDt")
// 修改数字控制速度, slideUp(500)控制卷起速度
$(this).next(".navContent").slideToggle(500).siblings(".navContent").slideUp(500);
})
})
// 描述显示更多信息
function show_more_msg()
{$("#course_description").toggleClass("course_description_none");}
///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////项目讨论区
function regexSubject()
{
var content = $.trim($("#message_subject").val());
if(content.length ==0)
{
$("#subject_span").text("主题不能为空");
$("#subject_span").css('color','#ff0000');
return false;
}
else
{
$("#subject_span").text("填写正确");
$("#subject_span").css('color','#008000');
return true;
}
return false;
}
function regexContent()
{
var content = $.trim($("#message_content").val());
if(content.length ==0)
{
$("#message_content_span").text("描述不能为空");
$("#message_content_span").css('color','#ff0000');
return false;
}
else
{
$("#message_content_span").text("填写正确");
$("#message_content_span").css('color','#008000');
return true;
}
return false;
}
// 项目编辑和提交
function submitProjectsBoard()
{
if(regexSubject()&&regexContent()){$("#message-form").submit();}
}
// 提交新闻
function regexTitle()
{
var name = $("#news_title").val();
if(name.length ==0)
{
$("#title_notice_span").text("标题不能为空");
$("#title_notice_span").css('color','#ff0000');
$("#title_notice_span").focus();
return false;
}
else if(name.length <= 60)
{
$("#title_notice_span").text("填写正确");
$("#title_notice_span").css('color','#008000');
return true;
}
else
{
$("#title_notice_span").text("标题超过60个字符");
$("#title_notice_span").css('color','#ff0000');
$("#title_notice_span").focus();
return false;
}
}
function regexDescription()
{
var name = $("#news_description").val();
if(name.length ==0)
{
$("#description_notice_span").text("描述不能为空");
$("#description_notice_span").css('color','#ff0000');
$("#description_notice_span").focus();
return false;
}
else
{
$("#description_notice_span").text("填写正确");
$("#description_notice_span").css('color','#008000');
return true;
}
}
function submitNews()
{
if(regexTitle() && regexDescription())
{
$("#news-form").submit();
}
}
function submitFocus(obj)
{
$(obj).focus();
}

View File

@ -1,459 +1,459 @@
/*右侧内容--动态*/ /*右侧内容--动态*/
.project_r_h{ width:670px; height:40px; background:#eaeaea; margin-bottom:10px;} .project_r_h{ width:670px; height:40px; background:#eaeaea; margin-bottom:10px;}
.project_r_h02{ width:920px; height:40px; background:#eaeaea; margin-bottom:10px;} .project_r_h02{ width:920px; height:40px; background:#eaeaea; margin-bottom:10px;}
.project_h2{ background:#64bdd9; color:#fff; height:33px; width:90px; text-align:center; font-weight:normal; padding-top:7px; font-size:16px;} .project_h2{ background:#64bdd9; color:#fff; height:33px; width:90px; text-align:center; font-weight:normal; padding-top:7px; font-size:16px;}
.project_r_box{ border:1px solid #e2e1e1; width:670px; margin-top:10px;} .project_r_box{ border:1px solid #e2e1e1; width:670px; margin-top:10px;}
.project_h3 { color:#646464; font-size:14px; padding:0 10px; border-bottom:1px solid #e2e1e1;} .project_h3 { color:#646464; font-size:14px; padding:0 10px; border-bottom:1px solid #e2e1e1;}
.more{ float:right; font-size:12px; font-weight:normal; color:#a9a9a9; margin-top:3px;} .more{ float:right; font-size:12px; font-weight:normal; color:#a9a9a9; margin-top:3px;}
.more:hover{ color:#64bdd9;} .more:hover{ color:#64bdd9;}
.project_box_ul{ padding:0 10px;} .project_box_ul{ padding:0 10px;}
.project_box_list{ padding:10px 0; border-bottom:1px dashed #e2e1e1; padding-left:30px; color:#6f6c6c;} .project_box_list{ padding:10px 0; border-bottom:1px dashed #e2e1e1; padding-left:30px; color:#6f6c6c;}
.img_problem{ background:url(../images/new_project/img_project.png) 0 -20px no-repeat;} .img_problem{ background:url(../images/new_project/img_project.png) 0 -20px no-repeat;}
.img_talk{ background:url(../images/new_project/img_project.png) 0 -62px no-repeat;} .img_talk{ background:url(../images/new_project/img_project.png) 0 -62px no-repeat;}
.img_ziyuan{ background:url(../images/new_project/img_project.png) 0 -115px no-repeat;} .img_ziyuan{ background:url(../images/new_project/img_project.png) 0 -115px no-repeat;}
.img_edition{ background:url(../images/new_project/img_project.png) 0 -167px no-repeat;} .img_edition{ background:url(../images/new_project/img_project.png) 0 -167px no-repeat;}
a.project_name{ color:#058c42;} a.project_name{ color:#058c42;}
a:hover.project_name{ color:#016f33;} a:hover.project_name{ color:#016f33;}
.project_txt{ color:#0781b4; width:445px; display:block; float:left; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} .project_txt{ color:#0781b4; width:445px; display:block; float:left; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
a.project_txt02{ color:#0781b4; width:618px; display:block; float:left; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} a.project_txt02{ color:#0781b4; width:618px; display:block; float:left; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
a:hover.project_txt{ color:#066e9a;} a:hover.project_txt{ color:#066e9a;}
.noline{ border-bottom:none;} .noline{ border-bottom:none;}
.news_description{max-height: 38px;overflow:hidden; } .news_description{max-height: 38px;overflow:hidden; }
.news_description_none{max-height: none;} .news_description_none{max-height: none;}
a.news_foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:600px; height:20px; padding-top:3px; cursor:pointer;} a.news_foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:600px; height:20px; padding-top:3px; cursor:pointer;}
a:hover.news_foot{ color:#787b7e; border:1px solid #d4d4d4;} a:hover.news_foot{ color:#787b7e; border:1px solid #d4d4d4;}
/*邮件邀请*/ /*邮件邀请*/
.box_main{ width:345px; margin:0 auto;} .box_main{ width:345px; margin:0 auto;}
.box_h3{ color:#15bccf; text-align:center; font-size:16px;} .box_h3{ color:#15bccf; text-align:center; font-size:16px;}
.box_p{ color:#404040; margin-bottom:5px;} .box_p{ color:#404040; margin-bottom:5px;}
.fb_item{ color:#919191; border:1px solid #919191; height:28px; margin-bottom:10px; padding-left:5px; width:290px;} .fb_item{ color:#919191; border:1px solid #919191; height:28px; margin-bottom:10px; padding-left:5px; width:290px;}
/*.icon_addm{ background:url(../images/img_floatbox.png) 0 -33px no-repeat; width:16px; height:16px; display:block; margin:5px 0 0 5px;}*/ /*.icon_addm{ background:url(../images/img_floatbox.png) 0 -33px no-repeat; width:16px; height:16px; display:block; margin:5px 0 0 5px;}*/
/*.icon_addm:hover{background:url(../images/img_floatbox.png) 0 -61px no-repeat; }*/ /*.icon_addm:hover{background:url(../images/img_floatbox.png) 0 -61px no-repeat; }*/
/*.icon_removem{ background:url(../images/img_floatbox.png) -22px -33px no-repeat;width:16px; height:16px; display:block; margin:5px 0 0 5px}*/ /*.icon_removem{ background:url(../images/img_floatbox.png) -22px -33px no-repeat;width:16px; height:16px; display:block; margin:5px 0 0 5px}*/
/*.icon_removem:hover{background:url(../images/img_floatbox.png) -22px -61px no-repeat;}*/ /*.icon_removem:hover{background:url(../images/img_floatbox.png) -22px -61px no-repeat;}*/
a.btn_free{ background:#ff5722; display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;} a.btn_free{ background:#ff5722; display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;}
a:hover.btn_free{ background:#d63502;} a:hover.btn_free{ background:#d63502;}
/*成员邀请*/ /*成员邀请*/
.invi_search{ width:230px; margin:0 auto;} .invi_search{ width:230px; margin:0 auto;}
.invi_search_input{ border:1px solid #15bccf; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;} .invi_search_input{ border:1px solid #15bccf; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
a.invi_search_btn{ background:#15bccf; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #15bccf; padding-top:2px; cursor:pointer;} a.invi_search_btn{ background:#15bccf; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #15bccf; padding-top:2px; cursor:pointer;}
a:hover.invi_search_btn{ background:#0da1b2; border:1px solid #0da1b2;} a:hover.invi_search_btn{ background:#0da1b2; border:1px solid #0da1b2;}
/*问题跟踪*/ /*问题跟踪*/
.problem_top{ margin:10px 0 ;} .problem_top{ margin:10px 0 ;}
.problem_search_input{ border:1px solid #64bdd9; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;} .problem_search_input{ border:1px solid #64bdd9; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
a.problem_search_btn{ background:#64bdd9; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #64bdd9; padding-top:2px; cursor:pointer;} a.problem_search_btn{ background:#64bdd9; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #64bdd9; padding-top:2px; cursor:pointer;}
a:hover.problem_search_btn{ background:#3da1c1; border:1px solid #3da1c1;} a:hover.problem_search_btn{ background:#3da1c1; border:1px solid #3da1c1;}
a.problem_new_btn{ margin-left:10px; border:1px solid #ff7143; color:#ff7143; padding:1px 3px; font-size:12px; text-align:center; padding-top:2px;} a.problem_new_btn{ margin-left:10px; border:1px solid #ff7143; color:#ff7143; padding:1px 3px; font-size:12px; text-align:center; padding-top:2px;}
a:hover.problem_new_btn{ background:#ff7143; color:#fff;} a:hover.problem_new_btn{ background:#ff7143; color:#fff;}
.problem_p{ color:#535252; margin-top:5px;} .problem_p{ color:#535252; margin-top:5px;}
.problem_p span{ color:#ff3e00;} .problem_p span{ color:#ff3e00;}
a.problem_pic{ display:block; width:42px; height:42px; padding:3px; border:1px solid #e3e3e3;} a.problem_pic{ display:block; width:42px; height:42px; padding:3px; border:1px solid #e3e3e3;}
a:hover.problem_pic{border:1px solid #64bdd9;} a:hover.problem_pic{border:1px solid #64bdd9;}
.problem_txt{ width:610px; margin-left:10px; color:#777777;word-break: break-all;word-wrap: break-word;} .problem_txt{ width:610px; margin-left:10px; color:#777777;word-break: break-all;word-wrap: break-word;}
a.problem_name{ color:#ff5722;} a.problem_name{ color:#ff5722;}
a:hover.problem_name{ color:#d33503;} a:hover.problem_name{ color:#d33503;}
a.problem_tit{ color:#0781b4; width:430px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} a.problem_tit{ color:#0781b4; width:430px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
a:hover.problem_tit{ color:#09658c; } a:hover.problem_tit{ color:#09658c; }
.problem_main{ border-bottom:1px dashed #d4d4d4; padding-bottom:10px; margin-bottom:10px;} .problem_main{ border-bottom:1px dashed #d4d4d4; padding-bottom:10px; margin-bottom:10px;}
/****翻页***/ /****翻页***/
ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px; } ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px; }
ul.wlist li{float: left;} ul.wlist li{float: left;}
ul.wlist li a{ border:1px solid #15bccf; padding: 1px 4px 1px 4px; margin-left:3px;} ul.wlist li a{ border:1px solid #15bccf; padding: 1px 4px 1px 4px; margin-left:3px;}
ul.wlist li a:hover{ background:#15bccf; color:#fff; text-decoration:none;} ul.wlist li a:hover{ background:#15bccf; color:#fff; text-decoration:none;}
/*.wlist_select { background-color:#64bdd9; color:#fff; padding: 1px 5px 0px 5px; margin-left:3px;margin-top: -2px; border:1px solid #64bdd9;}*/ /*.wlist_select { background-color:#64bdd9; color:#fff; padding: 1px 5px 0px 5px; margin-left:3px;margin-top: -2px; border:1px solid #64bdd9;}*/
.wlist_select a{background-color: #64bdd9;cursor: default;} .wlist_select a{background-color: #64bdd9;cursor: default;}
/****讨论区***/ /****讨论区***/
.talk_top{ margin:10px 0; font-size:14px; color:#4c4c4c;} .talk_top{ margin:10px 0; font-size:14px; color:#4c4c4c;}
.talk_top span{ color:#ff7143;} .talk_top span{ color:#ff7143;}
.talk_txt{ width:460px; margin-left:10px; color:#676868;} .talk_txt{ width:460px; margin-left:10px; color:#676868;}
.talk_up{ color:#f63c00;} .talk_up{ color:#f63c00;}
a.talk_pic{ display:block; width:32px; height:32px; padding:3px; border:1px solid #e3e3e3;} a.talk_pic{ display:block; width:32px; height:32px; padding:3px; border:1px solid #e3e3e3;}
a:hover.talk_pic{border:1px solid #64bdd9;} a:hover.talk_pic{border:1px solid #64bdd9;}
a.talk_btn{ background:#64bdd9; width:50px; height:20px; color:#fff; text-align:center; margin-top:12px; padding-top:3px;} a.talk_btn{ background:#64bdd9; width:50px; height:20px; color:#fff; text-align:center; margin-top:12px; padding-top:3px;}
a:hover.talk_btn{ background:#2a9dc1;} a:hover.talk_btn{ background:#2a9dc1;}
/****讨论区内页***/ /****讨论区内页***/
.mt0{ margin-top:0px;} .mt0{ margin-top:0px;}
.talk_info{ color:#7d7d7d; margin-left:60px; margin-top:10px;} .talk_info{ color:#7d7d7d; margin-left:60px; margin-top:10px;}
a.talk_edit{ color:#426e9a; margin-right:5px;} a.talk_edit{ color:#426e9a; margin-right:5px;}
a:hover.talk_edit{ color:#ff5722;} a:hover.talk_edit{ color:#ff5722;}
.talk_reply { background:#eeeeee; padding:10px; margin-bottom:10px;} .talk_reply { background:#eeeeee; padding:10px; margin-bottom:10px;}
.talkpage_text{ border:1px solid #64bdd9; width:600px; color:#7d7d7d; padding:5px; margin:10px 0 10px 50px; background:#fff;} .talkpage_text{ border:1px solid #64bdd9; width:600px; color:#7d7d7d; padding:5px; margin:10px 0 10px 50px; background:#fff;}
/****新建讨论***/ /****新建讨论***/
.talk_new{ color:#4c4c4c;} .talk_new{ color:#4c4c4c;}
.talk_input{ border:1px solid #64bdd9; height:16px; width:585px; background:#fff; margin-bottom:10px; padding:5px;} .talk_input{ border:1px solid #64bdd9; height:16px; width:585px; background:#fff; margin-bottom:10px; padding:5px;}
.talk_text{ border:1px solid #64bdd9; height:100px;width:585px; background:#fff; margin-left:5px; padding:5px; margin-bottom:10px;} .talk_text{ border:1px solid #64bdd9; height:100px;width:585px; background:#fff; margin-left:5px; padding:5px; margin-bottom:10px;}
.talk_new ul li{ } .talk_new ul li{ }
.sb{width:70px; height:26px; color:#606060; cursor:pointer;} .sb{width:70px; height:26px; color:#606060; cursor:pointer;}
a.blue_btn{ background:#64bdd9; display:block; font-size:14px;color:#fff; font-weight:normal; text-align:center; margin-left:10px; margin-bottom:10px; padding:2px 10px;} a.blue_btn{ background:#64bdd9; display:block; font-size:14px;color:#fff; font-weight:normal; text-align:center; margin-left:10px; margin-bottom:10px; padding:2px 10px;}
a:hover.blue_btn{ background:#329cbd;} a:hover.blue_btn{ background:#329cbd;}
a.grey_btn{ background:#d9d9d9; color:#656565;font-size:14px; font-weight:normal; text-align:center; margin-left:10px; margin-bottom:10px; padding:2px 10px;} a.grey_btn{ background:#d9d9d9; color:#656565;font-size:14px; font-weight:normal; text-align:center; margin-left:10px; margin-bottom:10px; padding:2px 10px;}
a:hover.grey_btn{ background:#717171; color:#fff;} a:hover.grey_btn{ background:#717171; color:#fff;}
/****资源库***/ /****资源库***/
.f_l{ float:left;} .f_l{ float:left;}
.f_r{ float:right;} .f_r{ float:right;}
.resource a{ text-align:center;} .resource a{ text-align:center;}
.b_lblue{ background:#64bdd9;} .b_lblue{ background:#64bdd9;}
.b_dblue{ background:#55a1b9; cursor:pointer;} .b_dblue{ background:#55a1b9; cursor:pointer;}
.f_b{ font-weight: bold;} .f_b{ font-weight: bold;}
.c_blue{ color:#64bdd9;} .c_blue{ color:#64bdd9;}
.c_grey{ color:#999999;} .c_grey{ color:#999999;}
.c_grey02{ color:#666666;} .c_grey02{ color:#666666;}
.f_14{ font-size:14px;} .f_14{ font-size:14px;}
.c_dblue{ color:#3e6d8e;} .c_dblue{ color:#3e6d8e;}
.w90{width:90px;} .w90{width:90px;}
.w40{width:40px;} .w40{width:40px;}
.ml10{margin-left:10px;} .ml10{margin-left:10px;}
.resource{ width:670px;} .resource{ width:670px;}
.re_top{width:660px; height:40px; background:#eaeaea; padding:5px;} .re_top{width:660px; height:40px; background:#eaeaea; padding:5px;}
.re_top input{ float:left;} .re_top input{ float:left;}
.re_search{ margin-top:7px; margin-left:5px;} .re_search{ margin-top:7px; margin-left:5px;}
.re_schbox{ width:240px; height:24px; border:1px solid #64bdd9; color:#666666;} .re_schbox{ width:240px; height:24px; border:1px solid #64bdd9; color:#666666;}
.re_schbtn{ width:60px; height:26px; color:#fff; margin-right:5px; border:none; margin-left:0px;padding-left: 0px;} .re_schbtn{ width:60px; height:26px; color:#fff; margin-right:5px; border:none; margin-left:0px;padding-left: 0px;}
a.re_fabu { display:block; width:90px; height:30px; font-size:14px; color:#fff; text-align:center; padding-top:10px; } a.re_fabu { display:block; width:90px; height:30px; font-size:14px; color:#fff; text-align:center; padding-top:10px; }
a:hover.re_fabu{background:#55a1b9;} a:hover.re_fabu{background:#55a1b9;}
.re_con{ margin:5px; width:665px;} .re_con{ margin:5px; width:665px;}
.re_con_top{color:#494949; } .re_con_top{color:#494949; }
.re_con_top span{ color:#999999; font-weight:bold;} .re_con_top span{ color:#999999; font-weight:bold;}
a.re_select{ display:block; height:20px; border:1px solid #ff9900; color:#ff9900; margin-left:10px; padding:2px 5px 1px;} a.re_select{ display:block; height:20px; border:1px solid #ff9900; color:#ff9900; margin-left:10px; padding:2px 5px 1px;}
a:hover.re_select{ background:#ff9900; color:#fff; text-decoration:none;} a:hover.re_select{ background:#ff9900; color:#fff; text-decoration:none;}
a.re_open{display:block; width:46px; height:19px; border:1px solid #64bdd9; color:#64bdd9; margin-left:10px;padding-top:3px;} a.re_open{display:block; width:46px; height:19px; border:1px solid #64bdd9; color:#64bdd9; margin-left:10px;padding-top:3px;}
a:hover.re_open{ background:#64bdd9; color:#fff; text-decoration:none;} a:hover.re_open{ background:#64bdd9; color:#fff; text-decoration:none;}
a.re_de{ color:#6883b6; margin-left:15px;} a.re_de{ color:#6883b6; margin-left:15px;}
.re_con_box{ border-bottom:1px dashed #dadada; padding-bottom:10px; margin-bottom:10px;} .re_con_box{ border-bottom:1px dashed #dadada; padding-bottom:10px; margin-bottom:10px;}
/****资源库***/ /****资源库***/
/*.setting{ background:url(../images/setting.jpg) 0 0 no-repeat; width:670px; height:443px;}*/ /*.setting{ background:url(../images/setting.jpg) 0 0 no-repeat; width:670px; height:443px;}*/
/* 作业列表 */ /* 作业列表 */
.ttl{ } .ttl{ }
.ctt{height:820px;clear:both; } .ctt{height:820px;clear:both; }
#contentbox{float:right;clear:both;width:670px;/*滑动门的宽度*/} #contentbox{float:right;clear:both;width:670px;/*滑动门的宽度*/}
/* TAB 切换效果 */ /* TAB 切换效果 */
.tb_{ background-color: #eaeaea; height:40px; } .tb_{ background-color: #eaeaea; height:40px; }
.tb_ ul{height:40px; } .tb_ ul{height:40px; }
.tb_ li{float:left;height:34px;width: 90px;cursor:pointer; font-size:14px; padding-top:6px; text-align:center; } .tb_ li{float:left;height:34px;width: 90px;cursor:pointer; font-size:14px; padding-top:6px; text-align:center; }
a.tb_all{ margin-left:212px; font-size:12px; display:block; height:23px; padding-top:4px; width:90px; color:#7a7a7a; border:1px solid #cbcbcb; background:#fff; text-align: center;} a.tb_all{ margin-left:212px; font-size:12px; display:block; height:23px; padding-top:4px; width:90px; color:#7a7a7a; border:1px solid #cbcbcb; background:#fff; text-align: center;}
a:hover.tb_all{ background:#eaeaea; text-decoration:none;} a:hover.tb_all{ background:#eaeaea; text-decoration:none;}
.work_tb_{ background-color: #eaeaea; height:40px; } .work_tb_{ background-color: #eaeaea; height:40px; }
a.work_edit{color: #64bdd9; display:block; padding:1px 5px; border:1px solid #64bdd9;} a.work_edit{color: #64bdd9; display:block; padding:1px 5px; border:1px solid #64bdd9;}
a:hover.work_edit{color: #fff; background: #64bdd9;} a:hover.work_edit{color: #fff; background: #64bdd9;}
/* 控制显示与隐藏css类 */ /* 控制显示与隐藏css类 */
.normaltab { color:#64bdd9 ; } .normaltab { color:#64bdd9 ; }
.hovertab { color:#fff; background-color:#64bdd9; } .hovertab { color:#fff; background-color:#64bdd9; }
.normaltab a { color:#64bdd9 ; } .normaltab a { color:#64bdd9 ; }
.hovertab a{color:#fff; background-color:#64bdd9; text-decoration:none;} .hovertab a{color:#fff; background-color:#64bdd9; text-decoration:none;}
.dis{display:block; } .dis{display:block; }
.undis{display:none;} .undis{display:none;}
.c_red{ color:#de030d;} .c_red{ color:#de030d;}
.f_12{ font-size:12px;} .f_12{ font-size:12px;}
.w_40{ width:40px; border:1px solid red;} .w_40{ width:40px; border:1px solid red;}
.dis_ul{ height:70px; border-bottom:1px dashed #d4d4d4; margin-bottom:10px;} .dis_ul{ height:70px; border-bottom:1px dashed #d4d4d4; margin-bottom:10px;}
.dis_ul li{ float:left;} .dis_ul li{ float:left;}
.dis_ul li a{ display:block; color:#15bccf; } .dis_ul li a{ display:block; color:#15bccf; }
.pic_head{ width:44px; padding:0px 15px 0 0px;} .pic_head{ width:44px; padding:0px 15px 0 0px;}
.pic_head a{ text-align:center; width:44px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;} .pic_head a{ text-align:center; width:44px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.pic_head img{ border:1px solid #e3e3e3; width:40px; height:40px; padding:1px;} .pic_head img{ border:1px solid #e3e3e3; width:40px; height:40px; padding:1px;}
.pic_head img:hover{border:1px solid #15bccf;} .pic_head img:hover{border:1px solid #15bccf;}
.dis ul li.wname a{ width:260px; font-size:14px; color:#595959; padding:20px 0 0 0px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;} .dis ul li.wname a{ width:260px; font-size:14px; color:#595959; padding:20px 0 0 0px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.dis ul li.wdown a{padding-top:22px; color:#3d7ec2; margin-right:35px;} .dis ul li.wdown a{padding-top:22px; color:#3d7ec2; margin-right:35px;}
.wscore{ padding-top:22px; color:#888888; width:96px;} .wscore{ padding-top:22px; color:#888888; width:96px;}
.dis ul li.wping{margin-left:12px; } .dis ul li.wping{margin-left:12px; }
.dis ul li.wping a{ margin-top:18px; margin-bottom:3px; width:43px; height:22px; background:#15bccf; color:#fff; text-align:center; padding-top:4px;} .dis ul li.wping a{ margin-top:18px; margin-bottom:3px; width:43px; height:22px; background:#15bccf; color:#fff; text-align:center; padding-top:4px;}
.dis ul li.wping a:hover{ background-color:#03a1b3;} .dis ul li.wping a:hover{ background-color:#03a1b3;}
.code_list{ float:right; font-size:12px; color:#484848; padding:5px 3px; border-bottom:2px solid #15bccf; width:665px; margin-bottom:10px;} .code_list{ float:right; font-size:12px; color:#484848; padding:5px 3px; border-bottom:2px solid #15bccf; width:665px; margin-bottom:10px;}
.code_list a{ color:#787878;} .code_list a{ color:#787878;}
.fr{ float:right;} .fr{ float:right;}
.c_grey{ color:#999; font-weight:normal;} .c_grey{ color:#999; font-weight:normal;}
.dis ul li.wname02 a{ width:200px; font-size:14px; color:#595959; padding:20px 0 0 15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;} .dis ul li.wname02 a{ width:200px; font-size:14px; color:#595959; padding:20px 0 0 15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.dis ul li.wmine{ margin:12px 0 0 10px;} .dis ul li.wmine{ margin:12px 0 0 10px;}
.dis ul li.wmine a{ color:#3d7ec2; text-align:center; width:50px; font-weight: bold;} .dis ul li.wmine a{ color:#3d7ec2; text-align:center; width:50px; font-weight: bold;}
.wzan{ margin:15px 0 0 25px; width:32px; height:44px;} .wzan{ margin:15px 0 0 25px; width:32px; height:44px;}
.wzan a{ display: block;} .wzan a{ display: block;}
a.wzan_img{background:url(images/pic_zan.png) 0 -59px no-repeat; display:block; height:31px; width:30px; color:#fff;} a.wzan_img{background:url(images/pic_zan.png) 0 -59px no-repeat; display:block; height:31px; width:30px; color:#fff;}
a.wzan_visited{background:url(images/pic_zan.png) 0 0 no-repeat;} a.wzan_visited{background:url(images/pic_zan.png) 0 0 no-repeat;}
.msg_box{ width:670px; height:173px; border-bottom:1px dashed #CCC; padding-top:10px;} .msg_box{ width:670px; height:173px; border-bottom:1px dashed #CCC; padding-top:10px;}
.msg_box h4{ } .msg_box h4{ }
.msg_box textarea{width:658px;height:90px;padding:5px;overflow:hidden;background-color: #ffffff; border:1px solid #CCC; margin:5px 0px; color:#666; font-size:12px; } .msg_box textarea{width:658px;height:90px;padding:5px;overflow:hidden;background-color: #ffffff; border:1px solid #CCC; margin:5px 0px; color:#666; font-size:12px; }
/*.msg_box a{ float:right; display:block; width:50px; height:22px; background:#15bccf; padding-top:3px; color:#fff; margin-left:10px; text-align:center; margin-top:5px; }*/ /*.msg_box a{ float:right; display:block; width:50px; height:22px; background:#15bccf; padding-top:3px; color:#fff; margin-left:10px; text-align:center; margin-top:5px; }*/
/*.msg_box a:hover{ background-color:#03a1b3; text-decoration:none;}*/ /*.msg_box a:hover{ background-color:#03a1b3; text-decoration:none;}*/
/****评分弹框****/ /****评分弹框****/
/*#popbox{width:488px;height:550px;position:absolute;z-index:100;left:50%;top:40%;margin:-215px 0 0 -300px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; padding:5px; overflow:auto; }*/ /*#popbox{width:488px;height:550px;position:absolute;z-index:100;left:50%;top:40%;margin:-215px 0 0 -300px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; padding:5px; overflow:auto; }*/
.alert .close{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-502px;background:url(images/close.png) no-repeat;cursor:pointer;} .alert .close{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-502px;background:url(images/close.png) no-repeat;cursor:pointer;}
.alert .C{width:476px;height:296px;position:absolute;left:5px;top:5px; } .alert .C{width:476px;height:296px;position:absolute;left:5px;top:5px; }
.ping_con{ margin:5px; border-bottom:1px dashed #CCC; padding-bottom:5px;} .ping_con{ margin:5px; border-bottom:1px dashed #CCC; padding-bottom:5px;}
.ping_con ul{ height:30px;} .ping_con ul{ height:30px;}
.ping_con ul li{ float:left; color:#656767; font-weight:bold;} .ping_con ul li{ float:left; color:#656767; font-weight:bold;}
.ping_con h2{ font-size:14px; color:#444443; margin-bottom:10px; float:left;} .ping_con h2{ font-size:14px; color:#444443; margin-bottom:10px; float:left;}
.ping_con p{ color:#777777; font-size:12px; border-bottom:1px dashed #CCC; padding-bottom:5px;} .ping_con p{ color:#777777; font-size:12px; border-bottom:1px dashed #CCC; padding-bottom:5px;}
.ping_con p span a{ color:#777777;} .ping_con p span a{ color:#777777;}
.ping_star{ width:160px; color:#333; font-weight:bold; margin-bottom:5px;} .ping_star{ width:160px; color:#333; font-weight:bold; margin-bottom:5px;}
.ping_star span a{ float:right; width:20px; height:20px; background:url(images/star.png) -2px 0 no-repeat; margin-right:3px;} .ping_star span a{ float:right; width:20px; height:20px; background:url(images/star.png) -2px 0 no-repeat; margin-right:3px;}
.ping_star span a:hover{background:url(images/star.png) -24px 0 no-repeat;} .ping_star span a:hover{background:url(images/star.png) -24px 0 no-repeat;}
.ping_con textarea{ width:455px; height:76px; border:1px solid #15bccf; margin-bottom:5px; color:#666; font-size:12px;} .ping_con textarea{ width:455px; height:76px; border:1px solid #15bccf; margin-bottom:5px; color:#666; font-size:12px;}
a.ping_sub{ float:right; height:22px; width:60px; background:#15bccf; color:#fff; text-align:center;} a.ping_sub{ float:right; height:22px; width:60px; background:#15bccf; color:#fff; text-align:center;}
a:hover.ping_sub{ background:#14a8b9;} a:hover.ping_sub{ background:#14a8b9;}
.recall{ border-top:1px solid #CCC; padding:5px 0;} .recall{ border-top:1px solid #CCC; padding:5px 0;}
.recall_head{ float:left;} .recall_head{ float:left;}
.recall_head a{ display:block; width:30px; height:30px; border:1px solid #CCC; padding:1px;} .recall_head a{ display:block; width:30px; height:30px; border:1px solid #CCC; padding:1px;}
.recall_head a:hover{border:1px solid #15bccf;} .recall_head a:hover{border:1px solid #15bccf;}
.recall_con{ float:left;color:#777777; width:520px; margin-left:10px;word-break: break-all;word-wrap: break-word; } .recall_con{ float:left;color:#777777; width:520px; margin-left:10px;word-break: break-all;word-wrap: break-word; }
.recall_con a{ color:#15bccf; } .recall_con a{ color:#15bccf; }
.ping_list{ margin-top:15px;} .ping_list{ margin-top:15px;}
.ping_ttl{height:18px;} .ping_ttl{height:18px;}
.ping_ctt{height:auto;padding:6px;clear:both;} .ping_ctt{height:auto;padding:6px;clear:both;}
.ping_tb_{ border-bottom:3px solid #e4e4e4; text-align:center;} .ping_tb_{ border-bottom:3px solid #e4e4e4; text-align:center;}
.ping_tb_ ul{height:24px;} .ping_tb_ ul{height:24px;}
.ping_tb_ li{float:left;height: 24px;width: auto; padding:0 10px;cursor:pointer;} .ping_tb_ li{float:left;height: 24px;width: auto; padding:0 10px;cursor:pointer;}
.ping_normaltab { color:#15bccf ; border-bottom:3px solid #e4e4e4;} .ping_normaltab { color:#15bccf ; border-bottom:3px solid #e4e4e4;}
.ping_hovertab { color:#656767; font-weight:bold; border-bottom:3px solid #15bccf; } .ping_hovertab { color:#656767; font-weight:bold; border-bottom:3px solid #15bccf; }
.ping_dis{display:block; } .ping_dis{display:block; }
.ping_undis{display:none;} .ping_undis{display:none;}
.ping_C{border-bottom:1px dashed #CCC; padding:10px 0 0px;} .ping_C{border-bottom:1px dashed #CCC; padding:10px 0 0px;}
.ping_dispic a{ display:block; height:46px; width:46px; border:1px solid #CCC; padding:1px; float:left;} .ping_dispic a{ display:block; height:46px; width:46px; border:1px solid #CCC; padding:1px; float:left;}
.ping_dispic a:hover{border:1px solid #15bccf;} .ping_dispic a:hover{border:1px solid #15bccf;}
.ping_discon{ float:left; width:610px; margin-left:10px; } .ping_discon{ float:left; width:610px; margin-left:10px; }
/*.ping_distop span{ float:left;}*/ /*.ping_distop span{ float:left;}*/
.ping_distop p{ color:#5f5f5f;word-break: break-all;word-wrap: break-word;} .ping_distop p{ color:#5f5f5f;word-break: break-all;word-wrap: break-word;}
.ping_disfoot a{ float:right; color: #6883b6; margin-left:5px; margin-bottom:5px;} .ping_disfoot a{ float:right; color: #6883b6; margin-left:5px; margin-bottom:5px;}
/*.ping_distop span a{ float:right; width:20px; height:20px; background:url(images/star.png) -24px 0 no-repeat; margin-right:3px;}*/ /*.ping_distop span a{ float:right; width:20px; height:20px; background:url(images/star.png) -24px 0 no-repeat; margin-right:3px;}*/
/* 创建作品 work */ /* 创建作品 work */
.Newwork{ width:668px; height:418px;} .Newwork{ width:668px; height:418px;}
.N_top{ float:right; margin-left:390px; } .N_top{ float:right; margin-left:390px; }
.N_con{ color:#484747; font-weight:bold; width:660px; margin-top:10px; } .N_con{ color:#484747; font-weight:bold; width:660px; margin-top:10px; }
.N_con p{ } .N_con p{ }
.w430{ width:470px;} .w430{ width:470px;}
.w557{ width:557px;} .w557{ width:557px;}
.w350{ width:350px;} .w350{ width:350px;}
.w620{ width:480px; height:160px; border:1px solid #CCC;} .w620{ width:480px; height:160px; border:1px solid #CCC;}
.bo{height:26px; border:1px solid #CCC; padding-left:5px; background:#fff;width:470px; } .bo{height:26px; border:1px solid #CCC; padding-left:5px; background:#fff;width:470px; }
.bo02{height:26px; border:1px solid #CCC; padding-left:5px; background:#fff;width:480px; margin-left:2px; color: #999; } .bo02{height:26px; border:1px solid #CCC; padding-left:5px; background:#fff;width:480px; margin-left:2px; color: #999; }
.hwork_txt{ width:560px; padding-left:5px; background:#fff;} .hwork_txt{ width:560px; padding-left:5px; background:#fff;}
a.tijiao{ height:28px; display:block; width:80px; color:#fff; background:#15bccf; text-align:center; padding-top:4px; float:left; margin-right:10px;} a.tijiao{ height:28px; display:block; width:80px; color:#fff; background:#15bccf; text-align:center; padding-top:4px; float:left; margin-right:10px;}
a:hover.tijiao{ background:#0f99a9;} a:hover.tijiao{ background:#0f99a9;}
.members_left{ float:left; width:410px; margin-right:20px; text-align:center;} .members_left{ float:left; width:410px; margin-right:20px; text-align:center;}
.members_left{} .members_left{}
.members_left ul li{ height:30px; border-bottom:1px solid #E4E4E4; width:410px; padding-top:10px; } .members_left ul li{ height:30px; border-bottom:1px solid #E4E4E4; width:410px; padding-top:10px; }
.members_left ul li a{ float:left; text-align:center;} .members_left ul li a{ float:left; text-align:center;}
.members_left ul li span{ float:left; text-align:center; color:#484747;} .members_left ul li span{ float:left; text-align:center; color:#484747;}
.w150{ text-align:center; width:150px;} .w150{ text-align:center; width:150px;}
.f_b{ font-weight: bold;} .f_b{ font-weight: bold;}
.members_right label{ margin-left:15px;} .members_right label{ margin-left:15px;}
.N_search{ height:20px; border:1px solid #999;} .N_search{ height:20px; border:1px solid #999;}
/* 创建作品 homework */ /* 创建作品 homework */
.hwork_new{ color:#4c4c4c;} .hwork_new{ color:#4c4c4c;}
.c_red{ color:#F00;} .c_red{ color:#F00;}
.hwork_input{ border:1px solid #64bdd9; height:22px; width:555px; background:#fff; margin-bottom:10px; padding:5px;} .hwork_input{ border:1px solid #64bdd9; height:22px; width:555px; background:#fff; margin-bottom:10px; padding:5px;}
.hwork_input02{ border:1px solid #64bdd9; height:15px; width:120px; background:#fff; margin-bottom:10px; padding:5px;} .hwork_input02{ border:1px solid #64bdd9; height:15px; width:120px; background:#fff; margin-bottom:10px; padding:5px;}
.hwork_text{ border:1px solid #64bdd9; height:100px;width:555px; background:#fff; margin-left:5px; padding:5px; margin-bottom:10px;} .hwork_text{ border:1px solid #64bdd9; height:100px;width:555px; background:#fff; margin-left:5px; padding:5px; margin-bottom:10px;}
.hwork_new ul li{ } .hwork_new ul li{ }
.ml21{ margin-left:21px;} .ml21{ margin-left:21px;}
.ml9{ margin-left:9px;} .ml9{ margin-left:9px;}
.hwork_ttl{height:24px;} .hwork_ttl{height:24px;}
.hwork_ctt{height:auto; padding-left:10px;clear:both;} .hwork_ctt{height:auto; padding-left:10px;clear:both;}
.hwork_tb_{ border-bottom:3px solid #e4e4e4; text-align:center;} .hwork_tb_{ border-bottom:3px solid #e4e4e4; text-align:center;}
.hwork_tb_ ul{height:24px;} .hwork_tb_ ul{height:24px;}
.hwork_tb_ li{float:left;height: 24px;width: auto; padding:0 10px;cursor:pointer;} .hwork_tb_ li{float:left;height: 24px;width: auto; padding:0 10px;cursor:pointer;}
.hwork_normaltab { color:#15bccf ; border-bottom:3px solid #e4e4e4; } .hwork_normaltab { color:#15bccf ; border-bottom:3px solid #e4e4e4; }
.hwork_hovertab { color:#656767; font-weight:bold; border-bottom:3px solid #15bccf; } .hwork_hovertab { color:#656767; font-weight:bold; border-bottom:3px solid #15bccf; }
.hwork_dis{display:block; } .hwork_dis{display:block; }
.hwork_undis{display:none;} .hwork_undis{display:none;}
.project_none{ display:none;} .project_none{ display:none;}
.about_project{ overflow:hidden;display:none;} .about_project{ overflow:hidden;display:none;}
/*成员搜索*/ /*成员搜索*/
.members_right{ float:left; margin-left:8px;} .members_right{ float:left; margin-left:8px;}
.member_search{ width:220px; margin:0 auto;} .member_search{ width:220px; margin:0 auto;}
.member_search_input{ border:1px solid #15bccf; background:#fff; width:170px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;} .member_search_input{ border:1px solid #15bccf; background:#fff; width:170px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
.member_search_btn{ background:#15bccf; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #15bccf; padding-top:2px; cursor:pointer;} .member_search_btn{ background:#15bccf; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #15bccf; padding-top:2px; cursor:pointer;}
.member_search_btn:hover{ background:#0da1b2; border:1px solid #0da1b2;} .member_search_btn:hover{ background:#0da1b2; border:1px solid #0da1b2;}
a.member_btn{ padding: 3px 5px; background:#15bccf; color:#fff;} a.member_btn{ padding: 3px 5px; background:#15bccf; color:#fff;}
a:hover.member_btn{ background:#329cbd;} a:hover.member_btn{ background:#329cbd;}
.hol{display: none;} .hol{display: none;}
/* 新建项目 */ /* 新建项目 */
.pro_new{ } .pro_new{ }
.pro_new ul li{ margin-bottom:5px; width:auto; padding:2px 5px;} .pro_new ul li{ margin-bottom:5px; width:auto; padding:2px 5px;}
/* 匿名评分弹框 */ /* 匿名评分弹框 */
/*.popbox02{width:480px;height:200px;position:absolute;z-index:100;left:50%;top:50%;margin:-215px 0 0 -300px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; overflow:auto;}*/ /*.popbox02{width:480px;height:200px;position:absolute;z-index:100;left:50%;top:50%;margin:-215px 0 0 -300px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; overflow:auto;}*/
.alert .close02{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-490px;background:url(images/close.png) no-repeat;cursor:pointer;} .alert .close02{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-490px;background:url(images/close.png) no-repeat;cursor:pointer;}
.ni_con { width:425px; margin:25px 30px;} .ni_con { width:425px; margin:25px 30px;}
.ni_con h2{ display:block; height:40px; width:188px; margin:0 auto;} .ni_con h2{ display:block; height:40px; width:188px; margin:0 auto;}
.ni_con p{ color:#808181;} .ni_con p{ color:#808181;}
.ni_con a:hover{ text-decoration:none;} .ni_con a:hover{ text-decoration:none;}
a.xls{ margin-left:5px; color:#136b3b;} a.xls{ margin-left:5px; color:#136b3b;}
/* 学生列表*/ /* 学生列表*/
.st_list{ width:670px;} .st_list{ width:670px;}
.st_search{ } .st_search{ }
.st_search span{ font-size:14px; font-weight:bold; color:#606060; margin-right:35px;} .st_search span{ font-size:14px; font-weight:bold; color:#606060; margin-right:35px;}
.st_search_input{ border:1px solid #1c9ec7; background:#fff; height:20px; color:#c4c4c4; width:200px; padding-left:5px; margin-bottom:5px;} .st_search_input{ border:1px solid #1c9ec7; background:#fff; height:20px; color:#c4c4c4; width:200px; padding-left:5px; margin-bottom:5px;}
.st_search a{ background:#1c9ec7; color:#fff;border:1px solid #1c9ec7; text-align:center; display:block; width:60px; height:20px; float:left; font-size:12px; } .st_search a{ background:#1c9ec7; color:#fff;border:1px solid #1c9ec7; text-align:center; display:block; width:60px; height:20px; float:left; font-size:12px; }
.st_search a:hover{ background:#048fbb; text-decoration:none;} .st_search a:hover{ background:#048fbb; text-decoration:none;}
.classbox{ border:1px solid #f8df8c; background:#fffce6; color:#0d90c3; padding:0 3px; float:left; margin-left:15px;} .classbox{ border:1px solid #f8df8c; background:#fffce6; color:#0d90c3; padding:0 3px; float:left; margin-left:15px;}
.st_addclass{ margin-top:5px;} .st_addclass{ margin-top:5px;}
.st_addclass ul li,.st_addclass a,.st_addclass img{ float:left;} .st_addclass ul li,.st_addclass a,.st_addclass img{ float:left;}
.st_addclass img{ margin-top:3px;} .st_addclass img{ margin-top:3px;}
.st_addclass a{ color:#0d90c3;} .st_addclass a{ color:#0d90c3;}
.st_box{ margin-top:10px; border-top:1px solid #CCC; padding-top:10px;} .st_box{ margin-top:10px; border-top:1px solid #CCC; padding-top:10px;}
.st_box ul li{ float:left;} .st_box ul li{ float:left;}
.st_box_top a{ font-weight:bold; color:#7a7a7a; float:left; margin-bottom:5px;} .st_box_top a{ font-weight:bold; color:#7a7a7a; float:left; margin-bottom:5px;}
.st_box_top a:hover{ color:#1c9ec7;} .st_box_top a:hover{ color:#1c9ec7;}
a.st_up{ display: block; width:8px; float:left; height:13px; background:url(../images/pic_up.png) 0 0 no-repeat; margin-top:5px; margin-left:3px;} a.st_up{ display: block; width:8px; float:left; height:13px; background:url(../images/pic_up.png) 0 0 no-repeat; margin-top:5px; margin-left:3px;}
a.st_down{ display: block; width:8px; float:left; height:13px; background:url(../images/pic_up.png) 0 -22px no-repeat; margin-top:5px; margin-left:3px;} a.st_down{ display: block; width:8px; float:left; height:13px; background:url(../images/pic_up.png) 0 -22px no-repeat; margin-top:5px; margin-left:3px;}
a.st_img { display:block;width:32px; height:32px; border:1px solid #CCC; padding:1px;} a.st_img { display:block;width:32px; height:32px; border:1px solid #CCC; padding:1px;}
a:hover.st_img { border:1px solid #1c9ec7; } a:hover.st_img { border:1px solid #1c9ec7; }
.st_boxlist{ border-bottom:1px dashed #CCC; height:43px; margin-bottom:10px; } .st_boxlist{ border-bottom:1px dashed #CCC; height:43px; margin-bottom:10px; }
.st_boxlist a{ float:left;} .st_boxlist a{ float:left;}
.st_boxlist ul{ float:left; width:200px; margin-left:10px;} .st_boxlist ul{ float:left; width:200px; margin-left:10px;}
.st_boxlist ul li a{ color:#5d5d5d;} .st_boxlist ul li a{ color:#5d5d5d;}
.st_boxlist ul li a span{ color:#1c9ec7;} .st_boxlist ul li a span{ color:#1c9ec7;}
.st_boxlist ul li a:hover span{ color:#ff8e15;} .st_boxlist ul li a:hover span{ color:#ff8e15;}
.ml50{ margin-left:50px;} .ml50{ margin-left:50px;}
.ml358{ margin-left:358px;} .ml358{ margin-left:358px;}
.ml258{ margin-left:254px;} .ml258{ margin-left:254px;}
.ml65{ margin-left:65px;} .ml65{ margin-left:65px;}
a:hover.st_add{ color:#ff8e15;} a:hover.st_add{ color:#ff8e15;}
.classbox_on{ border:1px solid #f8df8c; background:#f6f098; padding:0 3px; float:left; margin-left:15px;} .classbox_on{ border:1px solid #f8df8c; background:#f6f098; padding:0 3px; float:left; margin-left:15px;}
.classbox_on a{ color:#716cad;} .classbox_on a{ color:#716cad;}
/* 创建课程courses*/ /* 创建课程courses*/
.courses_input{ border:1px solid #64bdd9; height:16px; width:532px; background:#fff; margin-bottom:10px; padding:5px;} .courses_input{ border:1px solid #64bdd9; height:16px; width:532px; background:#fff; margin-bottom:10px; padding:5px;}
.courses_input_w{ width:300px;} .courses_input_w{ width:300px;}
.courses_text{ border:1px solid #64bdd9; height:100px;width:532px; background:#fff; margin-left:5px; padding:5px; margin-bottom:10px;} .courses_text{ border:1px solid #64bdd9; height:100px;width:532px; background:#fff; margin-left:5px; padding:5px; margin-bottom:10px;}
.upimg{ border:1px solid #eaeaea; display:block; width:60px; height:60px; padding:1px;} .upimg{ border:1px solid #eaeaea; display:block; width:60px; height:60px; padding:1px;}
.upimg:hover{ border:1px solid #64bdd9; } .upimg:hover{ border:1px solid #64bdd9; }
.upbtn{ margin:40px 0 0 15px; display:block; padding:2px 5px; border:1px solid #eaeaea;} .upbtn{ margin:40px 0 0 15px; display:block; padding:2px 5px; border:1px solid #eaeaea;}
.upbtn:hover{border:1px solid #64bdd9; color:#64bdd9;cursor: pointer;} .upbtn:hover{border:1px solid #64bdd9; color:#64bdd9;cursor: pointer;}
.upload_file{margin-left: -60px;margin-top: 40px;width: 50px;position: absolute;height: 24px;opacity: 0;cursor: pointer} .upload_file{margin-left: -60px;margin-top: 40px;width: 50px;position: absolute;height: 24px;opacity: 0;cursor: pointer}
/* 功能倒计时*/ /* 功能倒计时*/
.w_img{ float:left; margin:10px 10px 15px 0px;} .w_img{ float:left; margin:10px 10px 15px 0px;}
.w_p{ float:left; color:#15bccf; font-size:16px; font-weight:bold; margin-top:70px; } .w_p{ float:left; color:#15bccf; font-size:16px; font-weight:bold; margin-top:70px; }
/* 新建项目弹框*/ /* 新建项目弹框*/
.table_left{ width:90px; text-align:right; color:#4c4c4c; font-weight:bold;} .table_left{ width:90px; text-align:right; color:#4c4c4c; font-weight:bold;}
/*上传资源弹出框样式*/ /*上传资源弹出框样式*/
.popbox_polls{width:300px;height:100px;position:fixed !important;z-index:100;left:50%;top:50%;margin:-100px 0 0 -150px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; overflow:auto;} .popbox_polls{width:300px;height:100px;position:fixed !important;z-index:100;left:50%;top:50%;margin:-100px 0 0 -150px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; overflow:auto;}
.upload_con h2{ display:block; background:#eaeaea; font-size:14px; color:#343333; height:31px; width: auto; margin-top:25px; padding-left:20px; padding-top:5px;} .upload_con h2{ display:block; background:#eaeaea; font-size:14px; color:#343333; height:31px; width: auto; margin-top:25px; padding-left:20px; padding-top:5px;}
.upload_box{ width:430px; margin:15px auto;} .upload_box{ width:430px; margin:15px auto;}
a:hover.link_file{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;} a:hover.link_file{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;}
.r_txt_tit{width:500px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color:#15bccf; float:left; color:#09658c; font-size:14px;} .r_txt_tit{width:500px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color:#15bccf; float:left; color:#09658c; font-size:14px;}
blockquote {background: #eeeeee;padding: 10px;margin-bottom: 10px;} blockquote {background: #eeeeee;padding: 10px;margin-bottom: 10px;}
.respond-form{display: none;margin: auto;clear: both;} .respond-form{display: none;margin: auto;clear: both;}
.reply_btn{ cursor:pointer; -moz-border-radius:3px; -webkit-border-radius:3px; border:1px solid #ccc; color:#999; border-radius:3px; padding:2px 10px; margin-bottom:10px;display: block;margin-left: 470px;} .reply_btn{ cursor:pointer; -moz-border-radius:3px; -webkit-border-radius:3px; border:1px solid #ccc; color:#999; border-radius:3px; padding:2px 10px; margin-bottom:10px;display: block;margin-left: 470px;}
.reply_btn:hover{ background:#999; color:#fff; } .reply_btn:hover{ background:#999; color:#fff; }
#attachments_fields input.description {margin-left: 4px;width: 100px;} #attachments_fields input.description {margin-left: 4px;width: 100px;}
#attachments_fields span.ispublic-label {display: inline-block;width: 30px;margin-left: 10px;} #attachments_fields span.ispublic-label {display: inline-block;width: 30px;margin-left: 10px;}
a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%;width: 1px;display: inline-block;padding-left: 16px;} a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%;width: 1px;display: inline-block;padding-left: 16px;}
#attachments_fields input.filename {border: 0;height: 1.8em;width: 150px;color: #555;background-color: inherit;background: url(../images/attachment.png) no-repeat 1px 50%;padding-left: 18px;padding-top: 2px;} #attachments_fields input.filename {border: 0;height: 1.8em;width: 150px;color: #555;background-color: inherit;background: url(../images/attachment.png) no-repeat 1px 50%;padding-left: 18px;padding-top: 2px;}
span.add_attachment {font-size: 80%;line-height: 2.5em;} span.add_attachment {font-size: 80%;line-height: 2.5em;}
#attachments_fields span {display: block;white-space: nowrap;} #attachments_fields span {display: block;white-space: nowrap;}
.file_selector{position: relative;opacity: 0;filter: alpha(opacity:0);} .file_selector{position: relative;opacity: 0;filter: alpha(opacity:0);}
#attachments_fields .ajax-waiting input.filename {background:url(../images/hourglass.png) no-repeat 0px 50%;} #attachments_fields .ajax-waiting input.filename {background:url(../images/hourglass.png) no-repeat 0px 50%;}
#attachments_fields .ajax-loading input.filename {background:url(../images/loading.gif) no-repeat 0px 50%;} #attachments_fields .ajax-loading input.filename {background:url(../images/loading.gif) no-repeat 0px 50%;}
.reply_btn{ cursor:pointer; -moz-border-radius:3px; -webkit-border-radius:3px; border:1px solid #ccc; color:#999; border-radius:3px; padding:2px 10px; margin-bottom:10px;display: block;margin-left: 470px;} .reply_btn{ cursor:pointer; -moz-border-radius:3px; -webkit-border-radius:3px; border:1px solid #ccc; color:#999; border-radius:3px; padding:2px 10px; margin-bottom:10px;display: block;margin-left: 470px;}
.reply_btn:hover{ background:#999; color:#fff; } .reply_btn:hover{ background:#999; color:#fff; }
#attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; } #attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; }
.ui-widget { .ui-widget {
font-family: Verdana, sans-serif; font-family: Verdana, sans-serif;
font-size: 1.1em; font-size: 1.1em;
} }
.ui-widget-content { .ui-widget-content {
border: 1px solid #ddd; border: 1px solid #ddd;
color: #333; color: #333;
} }
.ui-progressbar-value{margin:-1px;height:100%} .ui-progressbar-value{margin:-1px;height:100%}
.ui-widget-header{border:1px solid #628db6;background:#759fcf url(jquery/images/ui-bg_gloss-wave_35_759fcf_500x100.png) 50% 50% repeat-x;color:#fff;font-weight:bold} .ui-widget-header{border:1px solid #628db6;background:#759fcf url(jquery/images/ui-bg_gloss-wave_35_759fcf_500x100.png) 50% 50% repeat-x;color:#fff;font-weight:bold}
.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px} .ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}
.link_file{ background:url(../images/pic_file.png) 0 7px no-repeat !important; padding-left:20px !important; color:#64bdd9 !important; } .link_file{ background:url(../images/pic_file.png) 0 7px no-repeat !important; padding-left:20px !important; color:#64bdd9 !important; }
a:hover.link_file_board{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;} a:hover.link_file_board{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;}
a.link_file_board{ background:url(../images/pic_file.png) 0 3px no-repeat !important; padding-left:20px !important; color:#64bdd9 !important; } a.link_file_board{ background:url(../images/pic_file.png) 0 3px no-repeat !important; padding-left:20px !important; color:#64bdd9 !important; }
#course_member_pagination_links{height: auto;float: left;} #course_member_pagination_links{height: auto;float: left;}
#course_member_pagination_links li{margin-bottom: 5px;} #course_member_pagination_links li{margin-bottom: 5px;}
/* colorbox /* colorbox
*******************************************************************************/ *******************************************************************************/
/* /*
Colorbox Core Style: Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered. The following CSS is consistent between example themes and should not be altered.
*/ */
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
#cboxWrapper {max-width:none;} #cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;} #cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;} #cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;} #cboxContent{position:relative;}
#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;} #cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;} #cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;} #cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;} .cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;} .cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;} #colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/* /*
User Style: User Style:
Change the following styles to modify the appearance of Colorbox. They are Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML. ordered & tabbed in a way that represents the nesting of the generated HTML.
*/ */
#cboxOverlay{background:#fff;} #cboxOverlay{background:#fff;}
#colorbox{outline:0;} #colorbox{outline:0;}
#cboxTopLeft{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat 0 0;} #cboxTopLeft{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat 0 0;}
#cboxTopCenter{height:25px; background:url(../images/colorbox/border1.png) repeat-x 0 -50px;} #cboxTopCenter{height:25px; background:url(../images/colorbox/border1.png) repeat-x 0 -50px;}
#cboxTopRight{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat -25px 0;} #cboxTopRight{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat -25px 0;}
#cboxBottomLeft{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat 0 -25px;} #cboxBottomLeft{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat 0 -25px;}
#cboxBottomCenter{height:25px; background:url(../images/colorbox/border1.png) repeat-x 0 -75px;} #cboxBottomCenter{height:25px; background:url(../images/colorbox/border1.png) repeat-x 0 -75px;}
#cboxBottomRight{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat -25px -25px;} #cboxBottomRight{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat -25px -25px;}
#cboxMiddleLeft{width:25px; background:url(../images/colorbox/border2.png) repeat-y 0 0;} #cboxMiddleLeft{width:25px; background:url(../images/colorbox/border2.png) repeat-y 0 0;}
#cboxMiddleRight{width:25px; background:url(../images/colorbox/border2.png) repeat-y -25px 0;} #cboxMiddleRight{width:25px; background:url(../images/colorbox/border2.png) repeat-y -25px 0;}
#cboxContent{background:#fff; overflow:hidden;} #cboxContent{background:#fff; overflow:hidden;}
.cboxIframe{background:#fff;} .cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;} #cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{margin-bottom:20px;} #cboxLoadedContent{margin-bottom:20px;}
#cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;} #cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;}
#cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;} #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;}
#cboxLoadingOverlay{background:#fff url(../images/colorbox/loading.gif) no-repeat 5px 5px;} #cboxLoadingOverlay{background:#fff url(../images/colorbox/loading.gif) no-repeat 5px 5px;}
/* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
#cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; } #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
/* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
#cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;} #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
#cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;} #cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;}
#cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;} #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
#cboxNext{position:absolute; bottom:0px; left:63px; color:#444;} #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
#cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;} #cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
/* /*
The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9. when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
See: http://jacklmoore.com/notes/ie-transparency-problems/ See: http://jacklmoore.com/notes/ie-transparency-problems/
*/ */
.cboxIE #cboxTopLeft, .cboxIE #cboxTopLeft,
.cboxIE #cboxTopCenter, .cboxIE #cboxTopCenter,
.cboxIE #cboxTopRight, .cboxIE #cboxTopRight,
.cboxIE #cboxBottomLeft, .cboxIE #cboxBottomLeft,
.cboxIE #cboxBottomCenter, .cboxIE #cboxBottomCenter,
.cboxIE #cboxBottomRight, .cboxIE #cboxBottomRight,
.cboxIE #cboxMiddleLeft, .cboxIE #cboxMiddleLeft,
.cboxIE #cboxMiddleRight { .cboxIE #cboxMiddleRight {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
} }

View File

@ -0,0 +1,63 @@
.topbar_info02{ margin:5px 10px;width:480px; }
.topbar_info02 p{color: #7f7f7f;}
.search{ margin-top:8px; margin-left:71px;}
/*信息*/
.project_info{ background:#fff; padding:10px; padding-right:0px;width:222px; padding-right:8px; margin-bottom:10px;}
.pr_info_id{ width:137px; color:#5a5a5a; font-size:14px; margin-top:5px;}
.pr_info_logo{ border:1px solid #eaeaea; width:60px; height:60px; padding:1px;}
.pr_info_logo:hover{ border:1px solid #64bdd9; }
.pr_info_join{}
a.pr_join_a{ color:#fff; display:block; padding:0 5px 0 3px; padding-top:2px; height:20px; margin-right:5px; float:left; text-align:center; background-color:#64bdd9; float:left; }
a:hover.pr_join_a{ background:#41a8c8;}
.pr_join_span{color: #fff; display:block; padding:0 5px; padding-top:2px; height:20px; margin-right:5px; float:left; text-align:center; background: #CCC;}
.pr_setting{ display:block; background:url(../images/leftside.png) -1px 0 no-repeat; width:11px; height:11px; margin-top:3px; float:left; }
.pr_copy{ display:block; background:url(../images/leftside.png) -1px -23px no-repeat; width:11px; height:11px; margin-top:3px; float:left; }
.pr_close{ display:block; background:url(../images/leftside.png) -1px -49px no-repeat; width:11px; height:11px; margin-top:3px; float:left; }
.pr_add{display:block; background:url(../images/leftside.png) 0px -71px no-repeat; width:11px; height:11px; margin-top:3px; float:left; }
.pr_arrow{display:block; background:url(../images/leftside.png) 0px -90px no-repeat; width:11px; height:11px; margin-top:3px; float:left; }
.pr_info_name{ color:#3e4040; font-size:14px; line-height:1.5;}
.pr_info_name:hover{ color:#3ca5c6;}
.pr_info_score{ font-size:14px; color:#3e4040; }
.pr_info_score a{ color:#ff7143;}
.pr_info_score a:hover{ color:#64bdd9;}
.img_private{ background:url(../images/new_project/img_project.png) 0 0 no-repeat; width:33px; height:16px; color:#fff; font-size:12px; padding-left:7px; }
.info_foot_num{ color:#3ca5c6; }
.pr_info_foot{ color:#7f7f7f; margin-top:5px; }
.info_foot_num:hover{ color:#2390b2;}
.info_box{background:#fff; padding:10px;width:220px; }
.info_box ul li{ font-size:12px; color: #3e4040; line-height:1.7;}
/*左侧导航*/
.subNavBox{width:240px; background:#fff;margin:10px 10px 0 0;}
.subNav{border-bottom:solid 1px #e5e3da;cursor:pointer;font-weight:bold;font-size:14px;color:#3ca5c6; height:26px;padding-left:10px;background-color:#fff; padding-top:2px;}
a.subNav_jiantou{background:url(../images/jiantou1.jpg) no-repeat;background-position:95% 50%; background-color:#fff;}
a:hover.subNav_jiantou:hover{color:#0781b4; }
.currentDd{color:#0781b4; }
.currentDt{background-color:#fff; }
.navContent{display: none;border-bottom:solid 1px #e5e3da; }
.navContent li a{display:block;width:240px;heigh:28px;text-align:center;font-size:12px;line-height:28px;color:#333}
.navContent li a:hover{color:#fff;background-color:#b3e0ee}
a.subnav_num{ font-weight:normal; color:#ff7143; font-size:12px;}
a.subnav_green{ background:#28be6c; color:#fff; font-size:12px; font-weight:normal;height:18px; padding:0px 5px; padding-top:2px; display:block; margin-top:2px; margin-bottom:5px; float:right; margin-right:5px;}
a:hover.subnav_green{ background:#14ad5a;}
/*简介*/
.project_intro{ width:220px; padding:10px; background:#fff; margin-top:10px; padding-top:5px; color:#6d6d6d; line-height:1.9;}
.course_description{max-height: 112px;overflow:hidden; word-break: break-all;word-wrap: break-word;}
.course_description_none{max-height: none;}
.lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;}
.lg-foot:hover{ color:#787b7e; border:1px solid #d4d4d4;}
/****标签(和资源库的tag样式一致)***/
.project_Label{ width:220px; padding:10px; background:#fff; margin-top:10px; padding-top:5px; margin-bottom:10px;}
a.yellowBtn{ display:inline-block;color:#0d90c3; height:22px;}
.submit{height:21px;border:0; cursor:pointer; background:url(../images/btn.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; }
.isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;}
.re_tag{ width: auto; padding:0 5px; padding-top:2px; height:20px; border:1px solid #f8df8c; background:#fffce6; margin-right:5px; }
.re_tag a{ color:#0d90c3;}
.tag_h{ }
.tag_h span,.tag_h a{ margin-bottom:5px;}

View File

@ -1,72 +1,17 @@
@charset "utf-8";
/* CSS Document */
body{ font-size:12px; font-family:"微软雅黑","宋体"; line-height:1.9; background:#eaebec; font-style:normal;}
div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span,ol{ margin:0; padding:0;}
div,img,tr,td,table{ border:0;}
table,tr,td{border:0;cellspacing:0; cellpadding:0;}
ol,ul,li{ list-style-type:none}
.cl{ clear:both; overflow:hidden; }
a{ text-decoration:none; cursor:pointer;}
.ml10{ margin-left:10px;}
.ml20{ margin-left:20px;}
.mr10{ margin-right:10px;}
.mb5{ margin-bottom:5px;}
.mb10{ margin-bottom:10px;}
.fl{ float: left;}
.fr{ float:right;}
.project_h4{ font-size:14px; color:#3b3b3b;} .project_h4{ font-size:14px; color:#3b3b3b;}
.project_content{ width:940px; margin:10px auto;} .project_content{ width:940px; margin:10px auto;}
.project_left{ float:left;} .project_left{ float:left;}
.project_right{ width:670px; float:left;background:#fff; padding:10px;} .project_right{ width:670px; float:left;background:#fff; padding:10px;}
/*项目信息*/
.project_info{ background:#fff; padding:10px;width:222px; padding-right:8px;}
.pr_info_id{ width:137px; color:#5a5a5a; font-size:14px;}
.pr_info_join{}
.pr_info_join a{ color:#fff; display:block; padding:0 5px; margin-right:10px; float:left; height:22px; background:#64bdd9; text-align:center; }
.pr_info_join a:hover{ background:#41a8c8;}
a.pr_info_name{ color:#3e4040; font-size:14px; line-height:1.5;}
a:hover.pr_info_name{ color:#3ca5c6;}
.pr_info_score{ font-size:14px; color:#3e4040; }
.pr_info_score a{ color:#ff7143;}
.pr_info_score a:hover{ color:#64bdd9;}
.img_private{ background:url(../images/img_project.png) 0 0 no-repeat; width:32px; height:16px; color:#fff; font-size:12px; padding-left:7px; }
a.info_foot_num{ font-weight: bold; color:#3ca5c6; }
.pr_info_foot{ color:#7f7f7f; margin-top:5px; }
a:hover.info_foot_num{ color:#2390b2;}
/*左侧导航*/
.subNavBox{width:240px; background:#fff;margin:10px 10px 0 0;}
.subNav{border-bottom:solid 1px #e5e3da;cursor:pointer;font-weight:bold;font-size:14px;color:#3ca5c6;line-height:28px;padding-left:10px;background-color:#fff;}
.subNav_jiantou{background:url(../images/jiantou1.jpg) no-repeat;background-position:95% 50%; background-color:#fff;}
.subNav_jiantou:hover{color:#0781b4; }
.currentDd{color:#0781b4; }
.currentDt{background-color:#fff; }
.navContent{display: none;border-bottom:solid 1px #e5e3da; }
.navContent li a{display:block;width:240px;heigh:28px;text-align:center;font-size:12px;line-height:28px;color:#333}
.navContent li a:hover{color:#fff;background-color:#b3e0ee}
.subnav_num{ font-weight:normal; color:#ff7143; font-size:12px;}
a.subnav_green{ background:#28be6c; color:#fff; font-size:12px; font-weight:normal;height:20px; padding:0px 5px; text-align:center; margin-top:5px; margin-left:82px;}
a.ml95{ margin-left:97px;}
a.ml105{ margin-left:120px;}
a:hover.subnav_green{ background:#14ad5a;}
/*简介*/ /*简介*/
.project_intro{ width:220px; padding:10px; background:#fff; margin-top:10px; padding-top:5px; color:#6d6d6d;} .project_intro{ width:220px; padding:10px; background:#fff; margin-top:10px; padding-top:5px; color:#6d6d6d;}
.lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;} a.lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;}
.lg-foot:hover{ color:#787b7e;} a:hover.lg-foot{ color:#787b7e;}
/****标签(和资源库的tag样式一致)***/
.project_Label{ width:220px; padding:10px; background:#fff; margin-top:10px; padding-top:5px;}
a.yellowBtn{ display:inline-block;color:#0d90c3; height:22px;}
.submit{height:21px;border:0; cursor:pointer; background:url(../images/btn.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; }
.isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;}
.re_tag{ width: auto; padding:0 5px; height:22px; border:1px solid #f8df8c; background:#fffce6; margin-right:5px; }
.re_tag a{ color:#0d90c3;}
.tag_h span,.tag_h a{ margin-bottom:5px;}
/*右侧内容--动态*/ /*右侧内容--动态*/
.project_r_h{ width:670px; height:40px; background:#eaeaea;} .project_r_h{ width:670px; height:40px; background:#eaeaea; margin-bottom:10px;}
.project_h2{ background:#64bdd9; color:#fff; height:37px; width:90px; text-align:center; font-weight:normal; padding-top:3px; font-size:16px;} .project_h2{ background:#64bdd9; color:#fff; height:33px; width:90px; text-align:center; font-weight:normal; padding-top:7px; font-size:16px;}
.project_r_box{ border:1px solid #e2e1e1; width:670px; margin-top:10px;} .project_r_box{ border:1px solid #e2e1e1; width:670px; margin-top:10px;}
.project_h3 { color:#646464; font-size:14px; padding:0 10px; border-bottom:1px solid #e2e1e1;} .project_h3 { color:#646464; font-size:14px; padding:0 10px; border-bottom:1px solid #e2e1e1;}
a.more{ float:right; font-size:12px; font-weight:normal; color:#a9a9a9; margin-top:3px;} a.more{ float:right; font-size:12px; font-weight:normal; color:#a9a9a9; margin-top:3px;}
@ -77,78 +22,95 @@ a:hover.more{ color:#64bdd9;}
.img_talk{ background:url(../images/img_project.png) 0 -62px no-repeat;} .img_talk{ background:url(../images/img_project.png) 0 -62px no-repeat;}
.img_ziyuan{ background:url(../images/img_project.png) 0 -115px no-repeat;} .img_ziyuan{ background:url(../images/img_project.png) 0 -115px no-repeat;}
.img_edition{ background:url(../images/img_project.png) 0 -167px no-repeat;} .img_edition{ background:url(../images/img_project.png) 0 -167px no-repeat;}
.project_name{ color:#058c42;} a.project_name{ color:#058c42;}
.project_name:hover{ color:#016f33;} a:hover.project_name{ color:#016f33;}
.project_txt{ color:#0781b4; width:445px; display:block; float:left; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} a.project_txt{ color:#0781b4; width:445px; display:block; float:left; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
.project_txt02{ color:#0781b4; width:618px; display:block; float:left; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} a.project_txt02{ color:#0781b4; width:618px; display:block; float:left; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
.project_txt:hover{ color:#066e9a;} a:hover.project_txt{ color:#066e9a;}
.noline{ border-bottom:none;} .noline{ border-bottom:none;}
/*弹框*/ /*弹框*/
.floatbox{ width:420px; border:3px solid #15bccf; background:#fff; padding:5px;} .floatbox{ width:420px; border:3px solid #15bccf; background:#fff; padding:5px;}
.box_close{ display:block; float:right; width:16px; height:16px; background:url(../images/img_floatbox.png) 0 0 no-repeat;} a.box_close{ display:block; float:right; width:16px; height:16px; background:url(../images/img_floatbox.png) 0 0 no-repeat;}
.box_close:hover{background:url(../images/img_floatbox.png) -22px 0 no-repeat;} a:hover.box_close{background:url(../images/img_floatbox.png) -22px 0 no-repeat;}
/*邮件邀请*/ /*邮件邀请*/
.box_main{ width:345px; margin:0 auto;} .box_main{ width:345px; margin:0 auto;}
.box_main02{ width:390px; margin:15px auto;}
.box_h3{ color:#15bccf; text-align:center; font-size:16px;} .box_h3{ color:#15bccf; text-align:center; font-size:16px;}
.box_p{ color:#404040; margin-bottom:5px;} .box_p{ color:#404040; margin-bottom:5px;}
.fb_item{ color:#919191; border:1px solid #919191; height:28px; margin-bottom:10px; padding-left:5px; width:290px;} .fb_item{ color:#919191; border:1px solid #919191; height:28px; margin-bottom:10px; padding-left:5px; width:290px;}
.icon_addm{ background:url(../images/img_floatbox.png) 0 -33px no-repeat; width:16px; height:16px; display:block; margin:5px 0 0 5px;} a.icon_addm{ background:url(../images/img_floatbox.png) 0 -33px no-repeat; width:16px; height:16px; display:block; margin:5px 0 0 5px;}
.icon_addm:hover{background:url(../images/img_floatbox.png) 0 -61px no-repeat; } a:hover.icon_addm{background:url(../images/img_floatbox.png) 0 -61px no-repeat; }
.icon_removem{ background:url(../images/img_floatbox.png) -22px -33px no-repeat;width:16px; height:16px; display:block; margin:5px 0 0 5px} a.icon_removem{ background:url(../images/img_floatbox.png) -22px -33px no-repeat;width:16px; height:16px; display:block; margin:5px 0 0 5px}
.icon_removem:hover{background:url(../images/img_floatbox.png) -22px -61px no-repeat;} a:hover.icon_removem{background:url(../images/img_floatbox.png) -22px -61px no-repeat;}
.btn_free{ background:#ff5722; display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;} a.btn_free{ background:#ff5722; display:block; text-align:center; color:#fff; padding:3px 0; width:80px; margin-bottom:10px;}
.btn_free:hover{ background:#d63502;} a:hover.btn_free{ background:#d63502;}
/*成员邀请*/ /*成员邀请*/
.invi_search{ width:230px; margin:0 auto;} .invi_search{ margin-left:50px;}
.invi_search_input{ border:1px solid #15bccf; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;} .invi_search_input{ border:1px solid #15bccf; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
.invi_search_btn{ background:#15bccf; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #15bccf; padding-top:2px; cursor:pointer;} a.invi_search_btn{ background:#15bccf; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #15bccf; padding-top:2px; cursor:pointer;}
.invi_search_btn:hover{ background:#0da1b2; border:1px solid #0da1b2;} a:hover.invi_search_btn{ background:#0da1b2; border:1px solid #0da1b2;}
.rolebox{ margin:10px 0;}
/*问题跟踪*/ /*问题跟踪*/
.problem_top{ margin:10px 0 ;} .problem_top{ margin:10px 0 ;}
.problem_search_input{ border:1px solid #64bdd9; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;} .problem_search_input{ border:1px solid #64bdd9; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
.problem_search_btn{ background:#64bdd9; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #64bdd9; padding-top:2px; cursor:pointer;} a.problem_search_btn{ background:#64bdd9; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #64bdd9; padding-top:2px; cursor:pointer;}
.problem_search_btn:hover{ background:#3da1c1; border:1px solid #3da1c1;} a:hover.problem_search_btn{ background:#3da1c1; border:1px solid #3da1c1;}
.problem_new_btn{ margin-left:10px; border:1px solid #ff7143; color:#ff7143; width:60px; height:22px; font-size:12px; text-align:center; padding-top:2px;} a.problem_new_btn{ margin-left:10px; border:1px solid #ff7143; color:#ff7143; padding:1px 3px; font-size:12px; text-align:center; padding-top:2px;}
.problem_new_btn:hover{ background:#ff7143; color:#fff;} a:hover.problem_new_btn{ background:#ff7143; color:#fff;}
.problem_p{ color:#535252; margin-top:5px;} .problem_p{ color:#535252; margin-top:5px;}
.problem_p span{ color:#ff3e00;} .problem_p span{ color:#ff3e00;}
.problem_pic{ display:block; width:42px; height:42px; padding:3px; border:1px solid #e3e3e3; margin-top:5px;} a.problem_pic{ display:block; width:42px; height:42px; padding:3px; border:1px solid #e3e3e3; margin-top:5px;}
.problem_pic:hover{border:1px solid #64bdd9;} a:hover.problem_pic{border:1px solid #64bdd9;}
.problem_txt{ width:610px; margin-left:10px; color:#777777;} .problem_txt{ width:610px; margin-left:10px; color:#777777;}
.problem_name{ color:#ff5722;} a.problem_name{ color:#ff5722;}
.problem_name:hover{ color:#d33503;} a:hover.problem_name{ color:#d33503;}
.problem_tit{ color:#0781b4; width:430px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} a.problem_tit{ color:#0781b4; width:430px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
.problem_tit:hover{ color:#09658c; } a:hover.problem_tit{ color:#09658c; }
.problem_main{ border-bottom:1px dashed #d4d4d4; padding-bottom:10px; margin-bottom:10px;} .problem_main{ border-bottom:1px dashed #d4d4d4; padding-bottom:10px; margin-bottom:10px;}
/****翻页***/ /****翻页***/
.wlist{} ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px; }
.wlist a{ float:right; border:1px solid #64bdd9; padding:0 5px; margin-left:3px; color:#64bdd9;} ul.wlist li{float: left;}
.wlist a:hover{border:1px solid #64bdd9; background-color:#64bdd9; color:#fff; text-decoration:none;} ul.wlist li a{ border:1px solid #15bccf; padding: 1px 4px 1px 4px; margin-left:3px;}
.wlist_select a { background-color:#48aac9; color:#fff;} ul.wlist li a:hover{ background:#15bccf; color:#fff; text-decoration:none;}
/*.wlist_select { background-color:#64bdd9; color:#fff; padding: 1px 5px 0px 5px; margin-left:3px;margin-top: -2px; border:1px solid #64bdd9;}*/
.wlist_select a{background-color: #64bdd9;cursor: default;}
/****讨论区***/ /****讨论区***/
.talk_top{ margin:10px 0; font-size:14px; color:#4c4c4c;} .talk_top{ margin:10px 0; font-size:14px; color:#4c4c4c;}
.talk_top span{ color:#ff7143;} .talk_top span{ color:#ff7143;}
.talk_txt{ width:460px; margin-left:10px; color:#676868;} .talk_txt{ width:460px; margin-left:10px; color:#676868;}
.talk_up{ color:#f63c00;} .talk_up{ color:#f63c00;}
.talk_pic{width:32px; height:32px; padding:2px;} a.talk_pic{ display:block; width:32px; height:32px; padding:3px; border:1px solid #e3e3e3;}
.talk_btn{ background:#64bdd9; width:50px; height:22px; color:#fff; text-align:center; margin-top:12px; padding-top:2px;} a:hover.talk_pic{border:1px solid #64bdd9;}
.talk_btn:hover{ background:#2a9dc1;} a.talk_btn{ background:#64bdd9; width:50px; height:20px; color:#fff; text-align:center; margin-top:12px; padding-top:3px;}
a:hover.talk_btn{ background:#2a9dc1;}
/****讨论区内页***/ /****讨论区内页***/
.mt0{ margin-top:0px;} .mt0{ margin-top:0px;}
.talk_info{ color:#7d7d7d; margin-left:50px; margin-top:10px;} .talk_info{ color:#7d7d7d; margin-left:60px; margin-top:10px;}
.talk_edit{ color:#426e9a; margin-right:5px;} a.talk_edit{ color:#426e9a; margin-right:5px;}
.talk_edit:hover{ color:#ff5722;} a:hover.talk_edit{ color:#ff5722;}
.talk_reply { background:#eeeeee; padding:10px; margin-bottom:10px;} .talk_reply { background:#eeeeee; padding:10px; margin-bottom:10px;}
.talk_text{ border:1px solid #64bdd9; width:600px; color:#7d7d7d; padding:5px; margin:10px 0 10px 50px;} .talkpage_text{ border:1px solid #64bdd9; width:600px; color:#7d7d7d; padding:5px; margin:10px 0 10px 50px; background:#fff;}
/*.ping_dispic a{ display:block; height:46px; width:46px; border:1px solid #CCC; padding:1px; float:left;}*/
/*.ping_dispic a:hover{border:1px solid #15bccf;}*/
/****新建讨论***/
.talk_new{ color:#4c4c4c;}
.talk_input{ border:1px solid #64bdd9; height:16px; width:585px; background:#fff; margin-bottom:10px; padding:5px;}
.talk_text{ border:1px solid #64bdd9; height:100px;width:585px; background:#fff; margin-left:5px; padding:5px; margin-bottom:10px;}
.talk_new ul li{ }
.sb{width:70px; height:26px; color:#606060; cursor:pointer;}
a.blue_btn{ background:#64bdd9; display:block; font-size:14px;color:#fff; font-weight:normal; text-align:center; margin-left:10px; margin-bottom:10px; padding:2px 10px;}
a:hover.blue_btn{ background:#329cbd;}
a.grey_btn{ background:#d9d9d9; color:#656565;font-size:14px; font-weight:normal; text-align:center; margin-left:10px; margin-bottom:10px; padding:2px 10px;}
a:hover.grey_btn{ background:#717171; color:#fff;}
/****资源库***/ /****资源库***/
.f_l{ float:left;}
.f_r{ float:right;}
.resource a{ text-align:center;} .resource a{ text-align:center;}
.b_lblue{ background:#64bdd9;} .b_lblue{ background:#64bdd9;}
.b_dblue{ background:#55a1b9; cursor:pointer;} .b_dblue{ background:#55a1b9; cursor:pointer;}
.f_b{ font-weight: bold;} .f_b{ font-weight: bold;}
.c_blue{ color:#64bdd9;} .c_blue{ color:#64bdd9;}
a.c_dblue{ color: #3ca5c6;}
a:hover.c_dblue{ color: #0781b4;}
.c_grey{ color:#999999;} .c_grey{ color:#999999;}
.c_grey02{ color:#666666;} .c_grey02{ color:#666666;}
.f_14{ font-size:14px;} .f_14{ font-size:14px;}
@ -166,17 +128,118 @@ a:hover.re_fabu{background:#55a1b9;}
.re_con{ margin:5px; width:665px;} .re_con{ margin:5px; width:665px;}
.re_con_top{color:#494949; } .re_con_top{color:#494949; }
.re_con_top span{ color:#999999; font-weight:bold;} .re_con_top span{ color:#999999; font-weight:bold;}
a.re_select{ display:block; width:88px; height:22px; border:1px solid #ff9900; color:#ff9900; margin-left:10px;} a.re_select{ display:block; padding:2px 10px; border:1px solid #ff9900; color:#ff9900; margin-left:10px;}
a:hover.re_select{ background:#ff9900; color:#fff; text-decoration:none;} a:hover.re_select{ background:#ff9900; color:#fff; text-decoration:none;}
.re_open{display:block; width:46px; height:22px; border:1px solid #64bdd9; color:#64bdd9; margin-left:10px;} a.re_open{display:block; padding:2px 10px; border:1px solid #64bdd9; color:#64bdd9; margin-left:10px;}
a:hover.re_open{ background:#64bdd9; color:#fff; text-decoration:none;} a:hover.re_open{ background:#64bdd9; color:#fff; text-decoration:none;}
a.re_de{ color:#6883b6; margin-left:15px;} a.re_de{ color:#6883b6; margin-left:15px;}
.re_con_box{ border-bottom:1px dashed #dadada; padding-bottom:10px; margin-bottom:10px;} .re_con_box{ border-bottom:1px dashed #dadada; padding-bottom:10px; margin-bottom:10px;}
/****资源库***/
.setting{ background:url(../images/setting.jpg) 0 0 no-repeat; width:670px; height:443px;}
.upload_con { }
.upload_con h2{ display:block; background:#eaeaea; font-size:14px; color:#343333; height:31px; width: auto; margin-top:25px; padding-left:20px; padding-top:5px;}
.upload_box{ width:430px; height:80px;}
a.upload_btn02{ display:block; float:left; margin-top:15px; width:80px; height:30px; text-align: center; color:#fff; font-size:14px; background:#15bccf; margin-right:15px;}
a:hover.upload_btn02{ background:#55a1b9;}
a.upload_btn_grey{background:#a3a3a3;}
a:hover.upload_btn_grey{background:#8a8a8a;}
.upload_btn{width:80px; height:26px;}
.upload_check{ margin-top:4px;}
a.link_file{ background:url(../images/courses/pic_file.png) 0 2px no-repeat; padding-left:20px; color:#64bdd9; }
a:hover.link_file{ background:url(../images/courses/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;}
.r_txt_tit{width:510px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color:#15bccf; float:left; color:#09658c; font-size:14px;}
/* 新建问题 */
.newpro_box{ color:#6d6d6d;}
.newpro_box02{ color:#6d6d6d; margin-left:30px; margin-bottom:10px; }
.newpro_box ul li{ }
.newpro_box input{ height:26px; float:left; margin-bottom:10px;}
.newpro_box textarea{ height:150px; float:left; margin-bottom:10px;}
.newpro_box select{ height:26px; float:left; margin-bottom:10px;}
.label{ width:80px; text-align:right; font-size:14px; display:block; float:left;}
.label02{ width:110px; text-align:right; font-size:14px; display:block; float:left;}
.collapsible{ border-left:none;border-right:none;border-bottom:none; border-top:1px solid #e4e4e4; padding-left:30px; padding-top:10px; }
/* 弹框 新样式还没设计出来,暂时用的课程那边的样式 */
.alert .close{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-502px;background:url(images/close.png) no-repeat;cursor:pointer;}
.alert .C{width:476px;height:296px;position:absolute;left:5px;top:5px; }
.ping_con{ margin:5px; border-bottom:1px dashed #CCC; padding-bottom:5px;}
.ping_con ul{ height:30px;}
.ping_con ul li{ float:left; color:#656767; font-weight:bold;}
.ping_con h2{ font-size:14px; color:#444443; margin-bottom:10px; float:left;}
.ping_con p{ color:#777777; font-size:12px; border-bottom:1px dashed #CCC; padding-bottom:5px;}
.ping_con p span a{ color:#777777;}
.ping_star{ width:160px; color:#333; font-weight:bold; margin-bottom:5px;}
.ping_star span a{ float:right; width:20px; height:20px; background:url(images/star.png) -2px 0 no-repeat; margin-right:3px;}
.ping_star span a:hover{background:url(images/star.png) -24px 0 no-repeat;}
.ping_con textarea{ width:455px; height:76px; border:1px solid #15bccf; margin-bottom:5px; color:#666; font-size:12px;}
a.ping_sub{ float:right; height:22px; width:60px; background:#15bccf; color:#fff; text-align:center;}
a:hover.ping_sub{ background:#14a8b9;}
.recall{ border-top:1px solid #CCC; padding:5px 0;}
.recall_head{ float:left;}
.recall_head a{ display:block; width:30px; height:30px; border:1px solid #CCC; padding:1px;}
.recall_head a:hover{border:1px solid #15bccf;}
.recall_con{ float:left;color:#777777; width:520px; margin-left:10px;word-break: break-all;word-wrap: break-word; }
.recall_con a{ color:#15bccf; }
.ping_list{ margin-top:15px;}
.ping_ttl{height:18px;}
.ping_ctt{height:auto;padding:6px;clear:both;}
.ping_tb_{ border-bottom:3px solid #e4e4e4; text-align:center;}
.ping_tb_ ul{height:24px;}
.ping_tb_ li{float:left;height: 24px;width: auto; padding:0 10px;cursor:pointer;}
.ping_normaltab { color:#15bccf ; border-bottom:3px solid #e4e4e4;}
.ping_hovertab { color:#656767; font-weight:bold; border-bottom:3px solid #15bccf; }
.ping_dis{display:block; }
.ping_undis{display:none;}
.ping_C{border-bottom:1px dashed #CCC; padding:10px 0 0px;}
.ping_dispic a{ display:block; height:46px; width:46px; border:1px solid #CCC; padding:1px; float:left;}
.ping_dispic a:hover{border:1px solid #15bccf;}
.ping_discon{ float:left; width:610px; margin-left:10px; }
/*.ping_distop span{ float:left;}*/
.ping_distop p{ color:#5f5f5f;word-break: break-all;word-wrap: break-word;}
.ping_disfoot a{ float:right; color: #6883b6; margin-left:5px; margin-bottom:5px;}
/*.ping_distop span a{ float:right; width:20px; height:20px; background:url(images/star.png) -24px 0 no-repeat; margin-right:3px;}*/
/*上传资源弹出框样式*/
.popbox_polls{width:300px;height:100px;position:fixed !important;z-index:100;left:50%;top:50%;margin:-100px 0 0 -150px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; overflow:auto;}
.upload_con h2{ display:block; background:#eaeaea; font-size:14px; color:#343333; height:31px; width: auto; margin-top:25px; padding-left:20px; padding-top:5px;}
.upload_box{ width:430px; margin:15px auto;}
a:hover.link_file{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;}
.r_txt_tit{width:500px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color:#15bccf; float:left; color:#09658c; font-size:14px;}
blockquote {background: #eeeeee;padding: 10px;margin-bottom: 10px;}
.respond-form{display: none;margin: auto;clear: both;}
.reply_btn{ cursor:pointer; -moz-border-radius:3px; -webkit-border-radius:3px; border:1px solid #ccc; color:#999; border-radius:3px; padding:2px 10px; margin-bottom:10px;display: block;margin-left: 470px;}
.reply_btn:hover{ background:#999; color:#fff; }
#attachments_fields input.description {margin-left: 4px;width: 100px;}
#attachments_fields span.ispublic-label {display: inline-block;width: 30px;margin-left: 10px;}
a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%;width: 1px;display: inline-block;padding-left: 16px;}
#attachments_fields input.filename {border: 0;height: 1.8em;width: 150px;color: #555;background-color: inherit;background: url(../images/attachment.png) no-repeat 1px 50%;padding-left: 18px;padding-top: 2px;}
span.add_attachment {font-size: 80%;line-height: 2.5em;}
#attachments_fields span {display: block;white-space: nowrap;}
.file_selector{position: relative;opacity: 0;filter: alpha(opacity:0);}
#attachments_fields .ajax-waiting input.filename {background:url(../images/hourglass.png) no-repeat 0px 50%;}
#attachments_fields .ajax-loading input.filename {background:url(../images/loading.gif) no-repeat 0px 50%;}
.reply_btn{ cursor:pointer; -moz-border-radius:3px; -webkit-border-radius:3px; border:1px solid #ccc; color:#999; border-radius:3px; padding:2px 10px; margin-bottom:10px;display: block;margin-left: 470px;}
.reply_btn:hover{ background:#999; color:#fff; }
#attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; }
.ui-widget {
font-family: Verdana, sans-serif;
font-size: 1.1em;
}
.ui-widget-content {
border: 1px solid #ddd;
color: #333;
}
.ui-progressbar-value{margin:-1px;height:100%}
.ui-widget-header{border:1px solid #628db6;background:#759fcf url(jquery/images/ui-bg_gloss-wave_35_759fcf_500x100.png) 50% 50% repeat-x;color:#fff;font-weight:bold}
.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}
.link_file{ background:url(../images/pic_file.png) 0 7px no-repeat !important; padding-left:20px !important; color:#64bdd9 !important; }
a:hover.link_file_board{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;}
a.link_file_board{ background:url(../images/pic_file.png) 0 3px no-repeat !important; padding-left:20px !important; color:#64bdd9 !important; }
#course_member_pagination_links{height: auto;float: left;}
#course_member_pagination_links li{margin-bottom: 5px;}