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

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

@ -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,7 +37,6 @@
<% 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>
@ -45,7 +44,7 @@
<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>
@ -54,34 +53,26 @@
<% 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">置顶</span> <span class="talk_up fl c_red">置顶</span>
<% end %> <% end %>
<br/>
<p>由<%= link_to topic.author, user_path(topic.author), :class =>"problem_name c_orange" %>添加于<%= format_time topic.created_on %></p>
</div> </div>
<div class="problem_line"> <%=link_to (l(:label_reply) + topic.replies_count.to_s), board_message_path(@board, topic),:class => "talk_btn fr c_white" %>
<span>由<%= link_to topic.author, user_path(topic.author), :class =>"problem_name" %></span>
<span>添加于<%= format_time topic.created_on %></span>
</div>
</div>
<span class="talk_btn fr">回复<%= link_to (topic.replies_count), board_message_path(@board, topic), :style =>"color:#fff;" %></span>
<div class="cl"></div> <div class="cl"></div>
</div><!--讨论主类容 end--> </div><!--讨论主类容 end-->
<% end %> <% end %>
<% else %>
<p class="nodata"><%= l(:label_no_data) %></p>
<% end %>
<ul class="wlist"> <ul class="wlist">
<%= pagination_links_full @topic_pages, @topic_count, :per_page_links => false, :remote => false, :flag => true %> <%= pagination_links_full @topic_pages, @topic_count, :per_page_links => false, :remote => false, :flag => true %>
</ul> </ul>
<% else %>
<p class="nodata"><%= l(:label_no_data) %></p>
<% end %>
<!--讨论主类容 end--> <!--讨论主类容 end-->
<div class="cl"></div>
</div>
<% 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,69 +1,28 @@
<div class="autoscroll">
<ul>
<% issue_list(issues) do |issue, level| -%> <% 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">
<!--< id="issue-<%#= issue.id %>" class="hascontextmenu-1 <%#= issue.css_classes %> <%#= level > 0 ? "idnt idnt-#{level}" : nil %>" >-->
<% column_content = ( query.inline_columns.map {|column| "#{column_content_new(column, issue)}"}) %> <% column_content = ( query.inline_columns.map {|column| "#{column_content_new(column, issue)}"}) %>
<% if issue.tracker_id == 1 %>
<%= image_tag("/images/task.png", :class => "img-tag-issues") %>
<% end %>
<% if issue.tracker_id == 2 %>
<%= image_tag("/images/feature.png", :class => "img-tag-issues") %>
<% end %>
<% if issue.tracker_id == 3 %>
<%= image_tag("/images/support.png", :class => "img-tag-issues") %>
<% end %>
<% if issue.tracker_id == 4 %>
<%= image_tag("/images/issues.png", :class => "img-tag-issues") %>
<% end %>
<ul class="issue_list">
<% unless issue.author.nil? || issue.author.name == "Anonymous" %> <% unless issue.author.nil? || issue.author.name == "Anonymous" %>
<ul class="list-group-item-meta" style="word-break: break-all;word-wrap: break-word;width: 100%;"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(issue.author), :width => "42", :height => "42") %></a>
<!-- 在这里添加赞和踩--> <div class="problem_txt fl">
<span id="praise_tread" style="float: right"> <%= link_to issue.author.name, user_path(issue.author), :class => "problem_name c_orange fl" %>
<%= render :partial => "/praise_tread/praise_tread",:locals => <span class="fl"><%= l(:label_post_on_issue) %><%= "#{raw column_content[2]}" %></span>
{:obj => issue,:show_flag => true,:user_id =>User.current.id,:horizontal => false}%> <%=link_to column_content[4], issue_path(issue.id), :class => "problem_tit fl" %><br />
</span> <p><%= textilizable issue, :description %></p><br/>
<span> <p>
<%= 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? %> <% unless issue.assigned_to_id.nil? %>
<span> <%= l(:field_assigned_to) %>
<%= l(:field_assigned_to)%>&nbsp; <%=link_to issue.assigned_to(@user), user_path(issue.assigned_to(@user)), :class => "problem_name c_orange f1" %>
</span>
<%= raw column_content[5] %>&nbsp;
<% end %> <% end %>
<%= l(:label_updated_time_on, format_date(issue.updated_on)).html_safe %> <%= l(:label_updated_time_on, format_date(issue.updated_on)).html_safe %>
<div class="find-comment-class"> </p>
<span>
<%= link_to l(:label_find_all_comments), issue_path(issue.id) %>
</span>
<%= l(:label_comments_count, :count => issue.journals.all.count) %>
</div> </div>
</ul> <% end %>
<% end -%> <div class="cl"></div>
</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,89 +10,58 @@
<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;
}
}
// 项目描述超过展开 <!--TopBar begin-->
$(function(){ <div id="TopBar">
$(".subNav").click(function(){ <div class="topbar_info02 fl">
$(this).toggleClass("currentDd").siblings(".subNav").removeClass("currentDd") <h2>
$(this).toggleClass("currentDt").siblings(".subNav").removeClass("currentDt") <a href="http://<%= Setting.host_name %>" target="_blank" class="c_blue">
<%= l(:label_projects_community) %>
</a>
</h2>
<p>
<%= l(:label_user_location) %> :
<%= link_to l(:field_homepage), home_path %>
>
<a href="http://<%= Setting.host_name %>">
<%=l(:label_project_hosting_platform) %>
</a>
>
<%= link_to @project.name, nil %>
</p>
</div>
<div class="search fl">
// 修改数字控制速度, slideUp(500)控制卷起速度 <%= form_tag(projects_search_path, :method => :get, :id => "project_search_form", :class => "search_form") do %>
$(this).next(".navContent").slideToggle(500).siblings(".navContent").slideUp(500); <%= 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" >
}) <%= l(:label_search)%>
</a>
function show_more_msg()
{$("#course_description").toggleClass("course_description_none");}
</script>
<%= form_tag(projects_search_path, :method => :get, :id => "project_search_form") do %>
<%= text_field_tag 'name', params[:name], :size => 20, :onkeyup => "regexName();", :style => "float:left" %>
<%= hidden_field_tag 'project_type', params[:project_type] %>
<%#= submit_tag l(:label_search), :class => "enterprise", :name => nil %>
<a href="#" onclick="submitSerch();" class="ButtonColor m3p10" style="float:left;padding-top: 3px; margin: 0px;padding-bottom:0px;" > <%= l(:label_search)%> </a>
<br /> <br />
<span id="project_name_span" style="float: left"></span> <span id="project_name_span" style="float: left"></span>
<% end %> <% end %>
</div></td>
</tr>
<tr>
<td>
<p class="top-content-list">
<%= link_to l(:label_home),home_path %> >
<%= link_to @project, project_path(@project) %>
</p></td>
</tr>
</table>
</div> </div>
<!-- 左边侧栏内容 --> </div><!--TopBar end-->
<div id="sidebar"> <div id="content">
<div class="project_left"> <div id="LSide" class="fl">
<div class="project_info"> <div class="project_info">
<div class="pr_info_logo fl mr10 mb5"> <div class="pr_info_logo fl mr10 mb5">
<%= image_tag(url_to_avatar(@project), :style => 'width:61px; height:61px;') %> <%= image_tag(url_to_avatar(@project), :width => "60", :height => "60") %>
</div> </div>
<div class="pr_info_id fl mb5"> <div class="pr_info_id fl mb5 f14">
<%= l(:label_project_id)%><%= @project.id %> <%= l(:label_project_id)%><%= @project.id %>
</div> </div>
<!--关注、申请加入/退出项目--> <!--关注、申请加入/退出项目-->
@ -101,96 +70,99 @@
</div> </div>
<!-- 项目得分 --> <!-- 项目得分 -->
<div class="cl"></div> <div class="cl"></div>
<div class="pr_info_name f1"> <div>
<%= link_to @project.name, project_path(@project), :style => "color:#3E4040"%> <a class="pr_info_name fl c_dark fb" href="javascript:void(0)" target="_blank">
<% if !@project.is_public? %> <%= l(:label_project_name) %><%= @project.name %></a>
<% if @project.is_public? %>
<span class="img_private"><%= l(:label_public)%></span>
<% else %>
<span class="img_private"><%= l(:label_private)%></span> <span class="img_private"><%= l(:label_private)%></span>
<% end %> <% end %>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="pr_info_score"> <div>
<% if @project.project_type == 0 %> <% if @project.project_type == 0 %>
<%= l(:label_project_score)%> : <span class="fb f14 "><%= l(:label_project_score)%> :</span>
<%= link_to(format("%.2f" ,project_scores(@project) ).to_i, {:controller => 'projects', <%= link_to(format("%.2f" ,project_scores(@project) ).to_i, {:controller => 'projects',
:action => 'show_projects_score', :action => 'show_projects_score',
:remote => true, :remote => true,
:id => @project.id }, :id => @project.id
:style => "color: #EC6300;") %> }, :class => "c_orange f14" ) %>
<% end %> <% end %>
</div> </div>
<!--参数-->
<div class="pr_info_foot"> <div class="pr_info_foot">
<%= l(:label_member) %><span class="info_foot_num" > <%= l(:label_member) %><%= link_to "#{@project.members.count}", project_member_path(@project), :class => 'info_foot_num c_blue' %>
<%= link_to "#{@project.members.count}", project_member_path(@project), :style => "color:#3CA5C6;font-weight:bold" %></span> <span>|&nbsp;</span>
<span>| </span> <%= l(:label_user_watcher) %><%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :class => 'info_foot_num c_blue' %>
<%= l(:label_user_watcher) %><span class="info_foot_num"> <span>|&nbsp;</span>
<%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :style => "color:#3CA5C6;font-weight:bold" %></span> <%= l(:project_module_attachments) %>
<span>| </span>
<%= l(:project_module_attachments) %><span class="info_foot_num" >
<% 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"> <div class="subNavBox">
<% if User.current.member_of?(@project) %> <% if User.current.member_of?(@project) %>
<div class="subNav currentDd currentDt subNav_jiantou"><%= l(:label_invite)%></div> <div class="subNav currentDd currentDt subNav_jiantou"><%= l(:label_invite)%></div>
<ul class="navContent " style="display:block; padding-left: 0px; margin-top:0px;"> <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_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> <li><%= link_to l(:label_invite_trustie_user), :controller=>"projects", :action=>"invite_members", :id => @project %></li>
</ul> </ul>
<% end %> <% end %><!--end-->
<!--menu -->
<div class="subNav"> <div class="subNav">
<%= link_to l(:label_activity), {:controller => 'projects', :action => 'show', :id => @project.id}, :style => "color:#3CA5C6" %> <%= 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 %> <% unless ForgeActivity.where("project_id = ?", @project.id).count == 0 %>
<span class="subnav_num">(<%= ForgeActivity.where("project_id = ?", @project.id).count %>)</span> <a class="subnav_num">(<%= ForgeActivity.where("project_id = ?", @project.id).count %>)</a>
<% end %> <% end %>
</div> </div>
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %> <% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>
<div class="subNav"> <div class="subNav">
<%= link_to l(:label_issue_tracking), project_issues_path(@project), :style => "color:#3CA5C6" %> <%= link_to l(:label_issue_tracking), project_issues_path(@project), :class => "f14 c_blue02" %>
<% unless @project.issues.count == 0 %> <% unless @project.issues.count == 0 %>
<span class="subnav_num">(<%= @project.issues.count %>)</span><span> <a class="subnav_num">(<%= @project.issues.count %>)</a><span>
<% end %> <% end %>
<% if User.current.member_of?(@project) %> <% 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> <%= link_to "+"+l(:label_release_issue), new_project_issue_path(@project) , :class => "subnav_green" %></span>
<% end %> <% end %>
</div> </div>
<% end %> <% end %>
<% unless @project.enabled_modules.where("name = 'boards'").empty? %> <% unless @project.enabled_modules.where("name = 'boards'").empty? %>
<div class="subNav"> <div class="subNav">
<%= link_to l(:project_module_boards), project_boards_path(@project), :style => "color:#3CA5C6" %> <%= link_to l(:project_module_boards), project_boards_path(@project), :class => "f14 c_blue02" %>
<% unless @project.boards.first.topics.count == 0 %> <% unless @project.boards.first.topics.count == 0 %>
<span class="subnav_num">(<%= @project.boards.first.topics.count %>)</span> <a class="subnav_num">(<%= @project.boards.first.topics.count %>)</a>
<% end %> <% end %>
<% if User.current.member_of?(@project) %> <% 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;" %> <%= link_to "+"+l(:project_module_boards_post), project_boards_path(@project, :flag => true), :layout => 'base_projects', :class => "subnav_green ml105" %>
<% end %> <% end %>
</div> </div>
<% end%> <% end%>
<% unless @project.enabled_modules.where("name = 'files'").empty? %> <% unless @project.enabled_modules.where("name = 'files'").empty? %>
<div class="subNav"> <div class="subNav">
<%= link_to l(:project_module_files), project_files_path(@project), :style => "color:#3CA5C6" %> <%= link_to l(:project_module_files), project_files_path(@project), :class => "f14 c_blue02" %>
<% unless attaments_num == 0 %> <% unless attaments_num == 0 %>
<span class="subnav_num">(<%= attaments_num %>)</span> <a class="subnav_num">(<%= attaments_num %>)</a>
<% end %> <% end %>
<% if User.current.member_of?(@project) %> <% 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;" %> <%= link_to "+"+l(:label_upload_files), project_files_path(@project,:flag => true), :class => "subnav_green ml95" %>
<% end %> <% end %>
</div> </div>
<% end%> <% end%>
<% unless @project.enabled_modules.where("name = 'repository'").empty? || @project.repositories.count == 0 %> <% unless @project.enabled_modules.where("name = 'repository'").empty? || @project.repositories.count == 0 %>
<div class="subNav"> <div class="subNav">
<%= link_to l(:project_module_repository), {:controller => 'repositories', :action => 'show', :id => @project.id}, :style => "color:#3CA5C6" %> <%= link_to l(:project_module_repository), {:controller => 'repositories', :action => 'show', :id => @project.id}, :class => "f14 c_blue02" %>
<span class="subnav_num">(<%= @project.repositories.count %>)</span> <a class="subnav_num">(<%= @project.repositories.count %>)</a>
<%# if User.current.member_of?(@project) %> <%# 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;" %> <%#= 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 %> <%# end %>
</div> </div>
<% end %> <% end %><!--meny end -->
<!-- more -->
<div class="subNav subNav_jiantou"><%= l(:label_project_more) %></div> <div class="subNav subNav_jiantou"><%= l(:label_project_more) %></div>
<ul class="navContent" style="padding-left: 0px"> <ul class="navContent">
<%= render 'projects/tools_expand' %> <%= render 'projects/tools_expand' %>
</ul> </ul>
</div><!--项目侧导航 end--> </div><!--项目侧导航 end-->
@ -204,36 +176,33 @@
</div> </div>
<!-- tag模块 --> <!-- tag模块 -->
<div class="project_Label"> <div class="project_Label">
<h4 class="project_h4"><%= l(:label_tag)%>:</h4> <h4 class="mb5"><%= l(:label_tag)%>:</h4>
<div class="tag_h"> <div class="tag_h">
<div class="user_tags">
<div id="tags"> <div id="tags">
<%= render :partial => 'tags/project_tag', :locals => {:obj => @project,:object_flag => "2"}%> <%= render :partial => 'tags/project_tag', :locals => {:obj => @project,:object_flag => "2"}%>
</div> </div>
</div> </div>
</div>
<div class="cl"></div> <div class="cl"></div>
</div><!--项目标签 end--> </div><!--项目标签 end-->
</div> </div>
</div> </div>
<div id="content">
<div id="RSide" class="fl">
<%= render_flash_messages %> <%= render_flash_messages %>
<%= yield %> <%= yield %>
<%= call_hook :view_layouts_base_content %> <%= call_hook :view_layouts_base_content %>
<div style="clear:both;"></div> <div style="clear:both;"></div>
</div> </div>
<%= render :partial => 'layouts/base_footer'%> <div style="clear:both;"></div>
</div> <div class="cl"></div>
<%= render :partial => 'layouts/new_footer'%>
<div class="cl"></div>
</div><!--Container end-->
<div id="ajax-indicator" style="display:none;"> <div id="ajax-indicator" style="display:none;">
<span><%= l(:label_loading) %></span> <span><%= l(:label_loading) %></span>
</div> </div>
<div id="ajax-modal" style="display:none;"></div> <div id="ajax-modal" style="display:none;"></div>
</div>
</div>
<%= call_hook :view_layouts_base_body_bottom %> <%= 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">
.lz {
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"> <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="problem_main">
<span id="praise_tread" style="float: right"> <div class="ping_dispic">
<%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @topic,:show_flag => true,:user_id =>User.current.id,:horizontal => true}%> <%=link_to image_tag(url_to_avatar(@topic.author), :width => "46", :height => "46"), user_path(@topic.author) %>
</span> </div>
<div class="contextual"> <div class="talk_txt fl">
<%= watcher_link(@topic, User.current) %> <p class="problem_tit fl fb" >
<%= link_to( <%= link_to @topic.subject, project_boards_path(@topic.project),title: @topic.subject.to_s %></p>
l(:button_quote), <br/>
{:action => 'quote', :id => @topic}, <p>由<%= link_to_user_header @topic.author,false,:class=> 'problem_name c_orange' %> 添加于<%= format_time(@topic.created_on) %></p>
:remote => true, </div>
:method => 'get', <!-- <a class="talk_edit fr">删除</a><a class="talk_edit fr">编辑</a><a class="talk_edit fr">置顶</a> -->
:class => 'icon icon-comment', <%#= watcher_link(@topic, User.current) %>
:remote => true) if !@topic.locked? && authorize_for('messages', 'reply') %>
<%= link_to( <%= link_to(
l(:button_edit), l(:button_edit),
{:action => 'edit', :id => @topic}, {:action => 'edit', :id => @topic},
:class => 'icon icon-edit' :class => 'talk_edit fr'
) if @message.editable_by?(User.current) %> ) if @message.editable_by?(User.current) %>
<%= link_to( <%= link_to(
l(:button_delete), l(:button_delete),
{:action => 'destroy', :id => @topic}, {:action => 'destroy', :id => @topic},
:method => :post, :method => :post,
:data => {:confirm => l(:text_are_you_sure)}, :data => {:confirm => l(:text_are_you_sure)},
:class => 'icon icon-del' :class => 'talk_edit fr'
) if @message.destroyable_by?(User.current) %> ) if @message.destroyable_by?(User.current) %>
</div> <div class="cl"></div>
<div class="talk_info mb10"><%= textilizable(@topic, :content) %></div>
<div class="lz-left"> <div class="talk_info mb10"><%= link_to_attachment_project @topic, :author => false %></div>
<div class=""> <!-- <a href="#" class=" link_file ml60">附件爱覅俄方if.zip(27.5kB)</a>-->
<%= link_to image_tag(url_to_avatar(@topic.author), :class => "avatar"), user_path(@topic.author) %> <div class="cl"></div>
</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? %> <% if User.current.logged? %>
<%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %> <%= toggle_link l(:button_reply), "reply", :focus => 'message_content',:class => 'talk_edit fr' %>
<% else %> <% else %>
<%= link_to l(:button_reply), signin_path %> <%= link_to l(:button_reply), signin_path,:class => 'talk_edit fr' %>
<% end %> <% end %>
</div> <%= link_to(
</div> l(:button_quote),
</div> {:action => 'quote', :id => @topic},
<br /> :remote => true,
</div> :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_attachments message, :author => false %>
</div>
<div class="ping_disfoot">
<%= link_to( <%= link_to(
"引用", l(:button_quote),
{:action => 'quote', :id => message}, {:action => 'quote', :id => message},
:remote => true, :remote => true,
:method => 'get', :method => 'get',
:title => l(:button_quote)) if !@topic.locked? && authorize_for('messages', 'reply') %> :title => l(:button_quote)) if !@topic.locked? && authorize_for('messages', 'reply') %>
<%= link_to( <%= link_to(
#image_tag('edit.png'), #image_tag('edit.png'),
"编辑", l(:button_edit),
{:action => 'edit', :id => message}, {:action => 'edit', :id => message},
:title => l(:button_edit) :title => l(:button_edit)
) if message.editable_by?(User.current) %> ) if message.course_editable_by?(User.current) %>
<%= link_to( <%= link_to(
#image_tag('delete.png'), #image_tag('delete.png'),
"删除", l(:button_delete),
{:action => 'destroy', :id => message}, {:action => 'destroy', :id => message},
:method => :post, :method => :post,
:data => {:confirm => l(:text_are_you_sure)}, :data => {:confirm => l(:text_are_you_sure)},
:title => l(:button_delete) :title => l(:button_delete)
) if message.destroyable_by?(User.current) %> ) if message.course_destroyable_by?(User.current) %>
</div> </div>
</td> <div class="cl"></div>
</tr>
<tr>
<td class="comments">
<div class="wiki" style="width: 100%;word-break: break-all;word-wrap: break-word;">
<%= textilizable message,:content,:attachments => message.attachments %>
</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> </div>
<div class="cl"></div>
</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_notice)
label_tips = l(:label_course_news)
else
btn_tips = l(:label_news_new) btn_tips = l(:label_news_new)
label_tips = l(:label_news) 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),
:class => 'icon icon-add',
:onclick => 'showAndScrollTo("add-news", "news_title"); return false;') %>
<% end %>
<% if @project && User.current.allowed_to?(:manage_news, @project) %>
<div id="add-news" class="add_frame" style="display:none;">
<%= labelled_form_for @news, :url => project_news_index_path(@project),
: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'} %>
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-news").hide()', :class => 'ButtonColor m3p10' %>
<% end if @project %>
<div id="preview" class="wiki"></div>
</div> </div>
<div class="talk_top">
<p class="fl"><%= l(:label_total_news) %><span><%= @news_count %></span><%= l(:label_project_new_list) %></p>
<% if @project && User.current.allowed_to?(:manage_news, @project) %>
<%= link_to(btn_tips, new_project_news_path(@project),
:class => 'problem_new_btn fl c_dorange') %>
<div class="cl"></div>
<% end %> <% end %>
<div class="cl"></div>
</div>
<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>
<%= pagination_links_full @news_pages %>
</ul> </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 %>
<div class="project_r_h">
<h2 class="project_h2"><%= l(:label_news) %></h2>
</div>
<div class="hwork_new">
<%= error_messages_for @news %>
<p class="talk_top pl15" >
<%= l(:label_news_new)%>
</p>
<ul>
<%= labelled_form_for @news, :url => project_news_index_path(@project), <%= labelled_form_for @news, :url => project_news_index_path(@project),
:html => {:id => 'news-form', :multipart => true} do |f| %> :html => {:id => 'news-form', :multipart => true} do |f| %>
<%= render :partial => 'news/form', :locals => {:f => f} %> <%= render :partial => 'news/project_form', :locals => {:f => f, :is_new => true} %>
<%= submit_tag l(:button_create), :class => "whiteButton m3p10 h30" %>
<%#= preview_link preview_news_path(:project_id => @project), 'news-form', target='preview', {:class => 'whiteButton m3p10'} %> <% end if @project %>
<% end %> </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>
/* $(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? %> <% unless @events_pages.empty? %>
<% @events_pages.each do |e| -%> <% @events_pages.each do |e| -%>
<!--创建-->
<% if e.forge_act_type == "ProjectCreateInfo"%> <% if e.forge_act_type == "ProjectCreateInfo"%>
<div class="font_description"> <div class="problem_main">
<table width="660"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<tr> <div class="problem_txt fl mt5">
<td> <%= link_to e.user, user_path(e.user), :class => "problem_name c_orange fl" %><span class="fl"> <%= l(:label_project_new) %> </span>
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <%= link_to e.project.name, :class => "problem_tit fl fb" %></a><br />
</td> <p class="mt5"><br /> <%= l :label_create_time %> <%= format_time(e.project.created_on) %></p>
<td colspan="2"> </div>
<table width="580"> <div class="cl"></div>
<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 %> <% end %>
<% next if e.forge_act_type.safe_constantize.nil? <% next if e.forge_act_type.safe_constantize.nil?
act = e.forge_act; act = e.forge_act;
next if act.nil? %> next if act.nil? %>
<!--缺陷动态-->
<% if e.forge_act_type == "Issue" %> <% 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="problem_main">
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(act.author), :width => "42", :height => "42") %></a>
<%= image_tag(url_to_avatar(act.author), :class => "avatar") %> <div class="problem_txt fl mt5">
</div> <a class="problem_name fl ">
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<div class="activity-content" style="padding:5px 5px 5px 70px;"> <%= link_to act.author, user_path(act.author), :class => "problem_name c_orange fl" %><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_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}"), <%= link_to format_activity_title("#{act.source_from}##{act.project_issues_index} (#{act.status}): #{act.tracker.name} #{act.subject}"),
{:controller => 'issues', {:controller => 'issues',
:action => 'show', :action => 'show',
:id => act.id} %> :id => act.id},
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;"> :class => "problem_tit fl fb " %>
<%= 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;"> </a><br />
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong> <p class="mt5"><%= textAreailizable act,:description %><br />
<span class="activity-title font_lighter"> <%= l :label_activity_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %>
<%= link_to(h(e.user), user_path(e.user_id)) %> </p>
<%= l(:label_new_activity) %> </div>
</span> <div class="cl"></div>
<%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.id)) %> </div>
<!--jou留言-->
<% elsif e.forge_act_type == "Journal" %>
<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}"), <%= 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}"} %> {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"}, :class => "problem_tit fl fb" %>
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;"> </a><br />
<%= textAreailizable act,:notes %> <p class="mt5"><%= textAreailizable act,:notes %><br />
</div> <%= l :label_activity_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
<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>
</div> </div>
<div class="cl"></div>
</div> </div>
<!--message -->
<% elsif e.forge_act_type == "Message" %> <% elsif e.forge_act_type == "Message" %>
<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="problem_main">
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <div class="problem_txt fl mt5">
</div> <a class="problem_name fl ">
<div class="activity-content" style="padding:5px 5px 5px 70px;"> <%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong> <%= 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="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}"), <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"),
{:controller => 'messages', {:controller => 'messages',
:action => 'show', :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}"}) %> :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;"> :class => "problem_tit fl fb " %>
<%= textAreailizable act,:content %> <br />
</div> <p class="mt5"><%= textAreailizable act,:content %><br />
<div class="activity_status" style="position:relative; padding-top: 3px;"> <%= l :label_create_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
<span class="font_lighter"> <%= l :label_activity_time %>
&nbsp; <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></span>
</div>
</div> </div>
<div class="cl"></div>
</div> </div>
<!--new 新闻-->
<% elsif e.forge_act_type == "News" %> <% elsif e.forge_act_type == "News" %>
<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="problem_main">
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <div class="problem_txt fl mt5">
</div> <a class="problem_name fl ">
<div class="activity-content" style="padding:5px 5px 5px 70px;"> <%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong> <%= 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="activity-title font_lighter"> <a class="problem_tit fl fb">
<%= link_to(h(e.user), user_path(e.user_id)) %>
<%= l(:label_new_activity) %>
</span>
<% unless act.nil? %> <% unless act.nil? %>
<%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %> <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id}, :class => "problem_tit fl fb " %>
<% end %> <% end %>
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;"> </a><br />
<%= textAreailizable act,:description %> <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>
<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>
<div class="cl"></div>
</div> </div>
<!--Document-->
<% elsif e.forge_act_type == "Document" %> <% 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="problem_main">
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <div class="problem_txt fl mt5">
</div> <a class="problem_name fl ">
<div class="activity-content" style="padding:5px 5px 5px 70px;"> <%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong> <%= 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="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>
<%= link_to format_activity_title("#{l(:label_document)}: #{act.title}"), {:controller => 'documents', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %><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>
<div class="cl"></div>
</div> </div>
</div> <!--Attachment -->
<% elsif e.forge_act_type == "Attachment" %> <% elsif e.forge_act_type == "Attachment" %>
<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="problem_main">
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;"> <a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> <div class="problem_txt fl mt5">
</div> <a class="problem_name fl ">
<div class="activity-content" style="padding:5px 5px 5px 70px;"> <%= h(e.project) if @project.nil? || @project.id != e.project_id %>
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project_id %></strong> <%= 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="activity-title font_lighter"> <%= link_to format_activity_title("#{l(:label_attachment)}: #{act.filename}"), {:controller => 'attachments', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %></a><br />
<%= link_to(h(e.user), user_path(e.user_id)) %> <p class="mt5"><%= textAreailizable act,:description %><br />
<%= l(:label_new_activity) %> <%= l :label_create_time %> <%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
</span>
<%= link_to format_activity_title("#{l(:label_attachment)}: #{act.filename}"), {:controller => 'attachments', :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>
</div> </div>
<div class="cl"></div>
</div> </div>
<% end %> <% 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?%>
<span> <%= toggle_link (l(:label_add_tag)), 'put-tag-form', {:focus => 'tags_name'} %> </span> <a href="javascript:void(0)" class="yellowBtn f_l" onclick="$('#add_tag01').slideToggle();"><%= l(:label_add_tag)%></a>
<% end %> <span id="add_tag01" style="display:none; vertical-align: middle;" class="ml10 f_l">
<%= form_for "tag_for_save",:remote=>true,:url=>save_tag_path,:update => "tags_show",:complete => '$("#put-tag-form").slideUp();' do |f| %>
<div id="put-tag-form" style="display: none;text-align: center"> <%= 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" %>
<%= 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_id,:value=> obj.id,:style=>"display:none"%>
<%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%> <%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%>
<td style="margin-left: 5px" vertical-valign="middle" > <input type="button" class="submit f_l" onclick="$('#tags_name').parent().submit();" />
<a href="#" onclick='$("#tags_name").parent().submit();' type="button" class="submit f_l"></a>
</td>
<tr>
</table>
<% end %> <% end %>
</div> </span>
</div> <% end%>

View File

@ -31,10 +31,10 @@
<!-- 用来显示三大对象的主页中的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 %>

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,6 +266,7 @@ 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的数量

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

@ -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

@ -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;}