Merge branch 'develop' into dai_ao

This commit is contained in:
huang 2016-11-25 09:11:36 +08:00
commit 89e9a309e3
19 changed files with 171 additions and 72 deletions

View File

@ -739,7 +739,7 @@ class ProjectsController < ApplicationController
rescue Exception => e rescue Exception => e
puts e puts e
end end
# 删除Trustie班额本库记录 # 删除Trustie本库记录
repoisitory = Repository.where(:project_id => @project.id, :type => GITLABTYPE).first repoisitory = Repository.where(:project_id => @project.id, :type => GITLABTYPE).first
repoisitory.delete repoisitory.delete
@project.update_column(:gpid, nil) @project.update_column(:gpid, nil)
@ -799,6 +799,31 @@ class ProjectsController < ApplicationController
@project = nil @project = nil
end end
REP_TYPE = "Repository::Gitlab"
# Delete @project's repository
def destroy_repository
if is_project_manager?(User.current.id, @project.id)
@gitlab_repository = Repository.where(:project_id => @project, :type => REP_TYPE).first
@is_true = params[:is_true]
if @is_true
begin
g = Gitlab.client
@gitlab_repository.destroy
@gitlab_repository = nil
@project.update_attribute(:gpid, nil)
scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first
@repository = Repository.factory(scm)
@repository.is_default = @project.repository.nil?
g.delete_project(@project.gpid)
rescue Exception => e
puts e
end
end
else
return render_403
end
end
def show_projects_score def show_projects_score
respond_to do |format| respond_to do |format|
format.html { render :layout => "base_projects"} format.html { render :layout => "base_projects"}

View File

@ -91,10 +91,11 @@ class PullRequestsController < ApplicationController
# 如果分支有改动 # 如果分支有改动
if compare_pull_request(source_branch, target_project_id, target_branch) if compare_pull_request(source_branch, target_project_id, target_branch)
# 如果传送了目标项目ID即向fork源项目发送请求 # 如果传送了目标项目ID即向fork源项目发送请求
if params[:forked_project_id] && params[:source_project] == "forked_project_name" # if params[:forked_project_id] && params[:source_project] == "forked_project_name"
if params[:target_project_id]
target_project_id = params[:forked_project_id].to_i target_project_id = params[:forked_project_id].to_i
request = @g.create_merge_request(@project.gpid, title, User.current.gid, :description => description, :source_branch => source_branch, :target_branch => target_branch, :target_project_id => target_project_id) request = @g.create_merge_request(@project.gpid, title, User.current.gid, :description => description, :source_branch => source_branch, :target_branch => target_branch, :target_project_id => target_project_id)
@fork_project_name = Project.find(@project.forked_from_project_id).try(:name) @fork_project_name = Project.find(target_project_id).try(:name)
@fork_pr_message = true if @fork_project_name @fork_pr_message = true if @fork_project_name
else else
request = @g.create_merge_request(@project.gpid, title, User.current.gid, :description => description, :source_branch => source_branch, :target_branch => target_branch) request = @g.create_merge_request(@project.gpid, title, User.current.gid, :description => description, :source_branch => source_branch, :target_branch => target_branch)

View File

@ -302,6 +302,16 @@ module ProjectsHelper
type << option2 type << option2
end end
# 判断用户是否为项目管理员
def is_project_manager?(user_id, project_id)
@result = false
mem = Member.where("user_id = ? and project_id = ?",user_id, project_id)
unless mem.blank?
@result = mem.first.roles.to_s.include?("Manager") ? true : false
end
return @result
end
# 用来判断用户是否是项目的管理员 # 用来判断用户是否是项目的管理员
# added by william # added by william
def is_manager?(user_id,project_id) def is_manager?(user_id,project_id)

View File

@ -333,6 +333,7 @@ module WatchersHelper
return '' unless user && user.logged? return '' unless user && user.logged?
objects = Array.wrap(objects) objects = Array.wrap(objects)
watched = objects.any? {|object| object.watched_by?(user)} watched = objects.any? {|object| object.watched_by?(user)}
watched = true if user.id == @project.user_id
@watch_flag = objects.first.instance_of?(Project) @watch_flag = objects.first.instance_of?(Project)
id = watcher_css(objects) id = watcher_css(objects)
text = @watch_flag ? text = @watch_flag ?
@ -340,8 +341,13 @@ module WatchersHelper
url = watch_path(:object_type => objects.first.class.to_s.underscore, url = watch_path(:object_type => objects.first.class.to_s.underscore,
: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'
if user.id != @project.user_id
link_to text, url, :remote => true, :method => method, link_to text, url, :remote => true, :method => method,
:class => "pro_new_topbtn_left fl" ,:id => id :class => "pro_new_topbtn_left fl" ,:id => id
else
link_to "关注", "javascript:void(0)", :remote => true, :method => method,
:class => "pro_new_grey_topbtn_left fl" , :id => id
end
end end
def store_project_link project_id, user_id def store_project_link project_id, user_id

View File

@ -3,7 +3,8 @@
<!--关注项目--> <!--关注项目-->
<li class="mr5 fl"> <li class="mr5 fl">
<%= watcher_link_for_project(@project, User.current) %> <%= watcher_link_for_project(@project, User.current) %>
<%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id},:id=>"fans_num", :class => 'pro_new_topbtn fl' %> <%= link_to "#{@project.watcher_users.count}", {:controller => "projects", :action => "watcherlist",
:id => @project.id}, :id => "fans_num", :class => 'pro_new_topbtn fl', :title => "关注成员列表" %>
</li> </li>
<!--加入项目--> <!--加入项目-->
<li class="mr5 fl"> <li class="mr5 fl">
@ -12,15 +13,21 @@
<% else %> <% else %>
<a style="cursor: default" class="pro_new_topbtn_left fl">等待审批</a> <a style="cursor: default" class="pro_new_topbtn_left fl">等待审批</a>
<% end %> <% end %>
<%= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员" %> <%= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员列表" %>
</li> </li>
<% end %> <% end %>
<% else %> <% else %>
<!--项目创建者不能退出项目--> <!--项目创建者不能退出项目-->
<% if User.current.id != @project.user_id %> <% if User.current.login? %>
<li class="mr5 fl">
<%= watcher_link_for_project(@project, User.current) %>
<%= link_to "#{@project.watcher_users.count}", {:controller => "projects", :action => "watcherlist",
:id => @project.id}, :id => "fans_num", :class => 'pro_new_topbtn fl', :title => "关注成员列表" %>
</li>
<li class="mr5 fl"> <li class="mr5 fl">
<a class="pro_new_topbtn_left fl "> 已加入</a> <a class="pro_new_topbtn_left fl "> 已加入</a>
<a href="<%= project_member_path(@project) %>" class=" pro_new_topbtn fl"><%= Member.where(:project_id => @project.id).count %></a> <!-- <a href="<%= project_member_path(@project) %>" class=" pro_new_topbtn fl"><%= Member.where(:project_id => @project.id).count %></a>-->
<%= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员列表" %>
</li> </li>
<%#= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员" %> <%#= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员" %>
<% end %> <% end %>
@ -35,8 +42,17 @@
<!-- <a href="<%#= {:controller => 'repositories', :action => 'forked'} %>" class="pro_new_topbtn_left fl" target="_blank">Fork</a>--> <!-- <a href="<%#= {:controller => 'repositories', :action => 'forked'} %>" class="pro_new_topbtn_left fl" target="_blank">Fork</a>-->
<%= link_to "<span class='vl_fork'></span>".html_safe+"Fork", forked_pop_project_path(@project), <%= link_to "<span class='vl_fork'></span>".html_safe+"Fork", forked_pop_project_path(@project),
:class=>"pro_new_topbtn_left fl", :remote => true %> :class=>"pro_new_topbtn_left fl", :remote => true %>
<a href="<%= member_forked_project_path(@project) %>" class=" pro_new_topbtn fl"><%= @project.forked_count.to_i %></a> <a href="<%= member_forked_project_path(@project) %>" class=" pro_new_topbtn fl" title="fork成员列表"><%= @project.forked_count.to_i %></a>
</li> </li>
<% else%>
<li class="mr5 fl">
<%#= link_to "<span class='vl_fork '></span>".html_safe+"Fork","#",
:class=>"pro_new_grey_topbtn_left fl"%>
<a href="javascript:void(0)" class="pro_new_grey_topbtn_left fl" >
<span class='vl_fork'>Fork</span>
</a>
<a href="<%= member_forked_project_path(@project) %>" class=" pro_new_topbtn fl" title="fork成员列表"><%= @project.forked_count.to_i %></a>
<% end %> <% end %>

View File

@ -1,30 +1,31 @@
<div class="st_list2" style="width:970px;"> <div class="st_list2" style="width:970px;">
<div class="st_box">
<a href="#" class="fr fb mb5" >加入时间</a>
<div class="cl"></div><!--st_box_top end-->
<ul class="clear pro_new_users_box">
<% members.each do |member| %> <% members.each do |member| %>
<div class="st_boxlist"> <li class="clear">
<a href="javascript:" class="st_img"> <%= link_to image_tag(url_to_avatar(member.user), :width => "50", :height => "50"), user_path(member.user), :alt => "用户头像", :class => "pro_new_users fl mr5" %>
<%= member.user.nil? ? '' : (image_tag(url_to_avatar(member.user), :width => 32, :height => 32)) %> <div class="fl mt5 clear">
</a> <%= link_to member.user.try(:show_name), user_path(member.user), :class => "pro_new_users mt5 fl" %>
<span class="fr ml10 c_grey"><%= l(:label_user_for_project_grade) %><span class="c_orange"><%= format("%.2f" ,read_user_project_scores(member.user,@project)).to_i %></span></span> <!--<span class="ml5 mr5 mt5 fl"> / </span>
<%#= link_to project.name, user_path(member.user), :class => "pro_new_users mt5 fl" %>-->
<span class="fl ml10 c_grey"><%= l(:label_username)%></span> <br/>
<%= link_to(member.user.name, user_path(member.user),:class => "ml10 c_blue02") %><%= rolesToLanguage(member.roles.sort.collect(&:to_s)).join(', ') %><br/> <span class=" c_grey mt3 fl"><%= h time_tag(member.created_on) %></span>
<span class="fr c_grey"><%= format_date(member.created_on)%></span>
</div> </div>
<div class="cl"></div> </li>
<% end %> <% end %>
</ul>
<ul class="wlist"> </div>
<%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%>
<div style="text-align:center;">
<div class="pages" style="width:auto; display:inline-block;">
<ul id="homework_pository_ref_pages">
<%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true, :is_new => true %>
</ul> </ul>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
</div> </div>
<div class="cl"></div>

View File

@ -0,0 +1,22 @@
<div style="width:460px;">
<div class="sy_popup_top">
<h3 class="fl">提示</h3>
<a href="javascript:void(0);" class="sy_icons_close fr" onclick="hideModal()"></a>
<div class="cl"></div>
</div>
<div class="sy_popup_con" style="width:380px;">
<ul class="sy_popup_add" >
<li class="center mb5" style="line-height:20px">
删除操作会彻底删除版本库及源码,一旦删除不能恢复</br>
你确定删除吗?
</li>
<li class="mt10">
<label class="mr27">&nbsp;</label>
<a href="javascript:void(0);" class="sy_btn_grey fl " onclick="hideModal()">取&nbsp;&nbsp;消</a>
<!-- <a href="<%#= {:controller => 'repositories', :action => 'forked'} %>" class="sy_btn_blue fl ml20" onclick="hideModal();">确&nbsp;&nbsp;定</a>-->
<%= link_to "确 定", destroy_repository_project_path(@project, :is_true => true), :remote => true, :class => "sy_btn_blue fl ml20", :onclick => "hideModal();" %>
<div class="cl"></div>
</li>
</ul>
</div>
</div>

View File

@ -0,0 +1,6 @@
<% if @is_true %>
$("#pro_st_tbc_06").html('<%= escape_javascript( render :partial => 'projects/settings/new_repositories') %>');
<% else %>
var htmlvalue = "<%= escape_javascript(render :partial => 'projects/reposistory_destory_pop') %>";
pop_box_new(htmlvalue,460,316);
<% end %>

View File

@ -1,11 +1,12 @@
<div class="container-big mb10"> <div class="pro_new_info mb10">
<div class="project_r_h" style="width:970px;"> <div class="project_r_h">
<h2 class="project_h2 fl"><%= @subPage_title %></h2> <h2 class="clear"><%= @subPage_title %>
<% if is_project_manager?(User.current, @project) %> <% if is_project_manager?(User.current, @project) %>
<span class="fr f14 fontGrey2" style="height: 40px; line-height: 40px; margin-right: 15px;"> <span class="fr f14 fontGrey2" style="height: 40px; line-height: 40px; margin-right: 15px;">
<%=link_to "成员管理", :controller => 'projects', :action => 'settings', :id => @project.id, :tab => 'members' %> <%=link_to "成员管理", {:controller => 'projects', :action => 'settings'}, :id => @project.id, :tab => 'members', :class => "sy_cblue", :style => "font-weight: normal;" %>
</span> </span>
<% end %> <% end %>
</h2>
</div> </div>
<div class="member_content"> <div class="member_content">
<%= error_messages_for 'member' %> <%= error_messages_for 'member' %>

View File

@ -9,7 +9,7 @@
<span class="ml5 mr5 mt5 fl"> / </span> <span class="ml5 mr5 mt5 fl"> / </span>
<%= link_to project.name, project_path(project), :class => "pro_new_users mt5 fl" %> <%= link_to project.name, project_path(project), :class => "pro_new_users mt5 fl" %>
<br/> <br/>
<span class=" c_grey mt3"><%=h time_tag(project.created_on) %></span> <span class=" c_grey mt3"><%=h time_tag(project.created_on) %></span>
</div> </div>
</li> </li>
<% end %> <% end %>

View File

@ -35,14 +35,22 @@
<tr> <tr>
<th class="w130 pl10 pr10 hidden fl">版本库名</th> <th class="w130 pl10 pr10 hidden fl">版本库名</th>
<th class="w90 pr10 hidden fl">管理系统</th> <th class="w90 pr10 hidden fl">管理系统</th>
<th class="w536 hidden fl">库路径</th> <th class="w490 hidden fl">库路径</th>
<th class="w46 hidden fl">&nbsp;</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<th class="w130 pl10 pr10 hidden fl"><%= @gitlab_repository.identifier %></th> <th class="w130 pl10 pr10 hidden fl"><%= @gitlab_repository.identifier %></th>
<th class="w90 pr10 hidden fl">Git</th> <th class="w90 pr10 hidden fl">Git</th>
<th class="w536 hidden fl"><%=h @repos_url %></th> <th class="w490 hidden fl"><%=h @repos_url %></th>
<th class="w46 hidden fl">
<% if is_project_manager?(User.current.id, @project.id) %>
<%= link_to "删除", destroy_repository_project_path(@project), :class => "c_blue", :remote => true %>
<% else %>
<%= "删除" %>
<% end %>
</th>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -1,7 +1,7 @@
<!--新版项目头部结束--> <!--新版项目头部结束-->
<div class="pro_new_info mb10 break_word" style="padding-bottom: 5px" > <div class="ke-block pro_new_info mb10 break_word" style="padding-bottom: 5px" >
<div id="project_invite_code"><%= render :partial => 'projects/invite_code' %></div> <div id="project_invite_code"><%= render :partial => 'projects/invite_code' %></div>
<div id="project_description_code" > <div id="project_description_code" style="padding: 0 15px 10px 15px;">
<% if @project.description.blank? %> <% if @project.description.blank? %>
<p class="break_word" style="padding-top:5px"><%= @project.name %></p> <p class="break_word" style="padding-top:5px"><%= @project.name %></p>
<% else %> <% else %>

View File

@ -1,28 +1,17 @@
<div class="container-big mb10"> <div class="pro_new_info mb10">
<div class="project_r_h" style="width:970px;"> <h2 class="clear">成员<span class="fr pro_new_font mr15" > 本页面展示关注了 <%= link_to @project.owner.try(:show_name), user_path(@project.owner) %>/<%= link_to @project.name, project_path(@project) %> 的用户</span></h2>
<h2 class="project_h2"><%= l(:label_user_watcher)%></h2> <ul class="clear pro_new_users_box">
<% @project.watcher_users.each do |user| %>
<li class="clear">
<%= link_to image_tag(url_to_avatar(user), :width => "50", :height => "50"), user_path(user), :alt => "用户头像", :class => "pro_new_users fl mr5" %>
<div class="fl mt5 clear">
<%= link_to user.try(:show_name), user_path(user), :class => "pro_new_users mt5 fl" %>
<!-- <span class="ml5 mr5 mt5 fl"> / </span>
<%#= link_to project.name, project_path(project), :class => "pro_new_users mt5 fl" %>-->
<br/>
<span class=" c_grey mt3 fl"><%=h time_tag(user.created_on) %></span>
</div> </div>
<div class="st_list2" style="width:970px;"> </li>
<div class="st_box">
<a href="#" class="fr fb mb5" >加入时间</a>
<div class="cl"></div><!--st_box_top end-->
<% for user in @project.watcher_users %>
<div class="st_boxlist">
<a href="javascript:" class="st_img">
<%= user.nil? ? '' : (image_tag(url_to_avatar(user), :width => 32, :height => 32)) %>
</a>
<span class="fl ml10 c_grey"><%= l(:label_username)%></span>
<%= link_to(user.name, user_path(user),:class => "ml10 c_blue02") %>
<span class="fr c_grey"><%= format_date(user.created_on) %></span>
</div>
<div class="cl"></div>
<% end %> <% end %>
</ul>
<div class="cl"></div>
</div>
</div>
<% html_title(l(:label_followers)) -%>
</div> </div>

View File

@ -226,7 +226,7 @@ zh:
button_download: 下载 button_download: 下载
button_more: "更多" button_more: "更多"
button_delete: 删除 button_delete: 删除
button_unfollow: 取消关注 button_unfollow: 关注
button_follow: 关注 button_follow: 关注
button_watch: 跟踪 button_watch: 跟踪
button_unwatch: 取消跟踪 button_unwatch: 取消跟踪

View File

@ -52,7 +52,7 @@ zh:
label_agree_join_project: 同意加入 label_agree_join_project: 同意加入
label_apply_project: "加入" label_apply_project: "加入"
label_button_following: "添加关注" label_button_following: "关注"
label_project_collect: 收藏 label_project_collect: 收藏
label_project_collect_cancel: 取消收藏 label_project_collect_cancel: 取消收藏
label_exit_project: 退出项目 label_exit_project: 退出项目

View File

@ -783,6 +783,7 @@ RedmineApp::Application.routes.draw do
get 'file', :action => 'file', :as => 'file' get 'file', :action => 'file', :as => 'file'
get 'statistics', :action => 'statistics', :as => 'statistics' get 'statistics', :action => 'statistics', :as => 'statistics'
get 'repository_tree_changes', :action => 'repository_tree_changes', :as => 'repository_tree_changes' get 'repository_tree_changes', :action => 'repository_tree_changes', :as => 'repository_tree_changes'
get 'destroy_repository', :action => 'destroy_repository', :as => 'destroy_repository'
get 'feedback', :action => 'feedback', :as => 'project_feedback' get 'feedback', :action => 'feedback', :as => 'project_feedback'
get 'watcherlist', :action=> 'watcherlist' get 'watcherlist', :action=> 'watcherlist'

View File

@ -42,7 +42,7 @@ module Trustie
gproject = g.create_project(repository.identifier, gproject = g.create_project(repository.identifier,
path: repository.identifier, path: repository.identifier,
description: project.description, description: false,
wiki_enabled: false, wiki_enabled: false,
wall_enabled: false, wall_enabled: false,
issues_enabled: false, issues_enabled: false,
@ -88,7 +88,7 @@ module Trustie
# can use password # can use password
gproject = self.g.create_project(path, gproject = self.g.create_project(path,
path: path, path: path,
description: project.description, description: false,
wiki_enabled: false, wiki_enabled: false,
wall_enabled: false, wall_enabled: false,
issues_enabled: false, issues_enabled: false,

View File

@ -233,6 +233,7 @@ h4{ font-size:14px;}/*color:#3b3b3b;*/
.w20{ width:20px;} .w20{ width:20px;}
.w40{width: 40px;} .w40{width: 40px;}
.w45{ width: 45px;} .w45{ width: 45px;}
.w46{ width: 46px;}
.w48{width:48px;} .w48{width:48px;}
.w50 {width:50px;} .w50 {width:50px;}
.w56 {width:56px;} .w56 {width:56px;}
@ -812,3 +813,14 @@ a:hover.btn_newpro_grey,a:active.btn_newpro_grey{ background: #eaeaea;}
.my_issues_form_filter select{ width:70px; height:30px; border:none; font-size:14px; border:none;border-right:none; color: #888; font-size: 12px; line-height: 30px; text-align:center} .my_issues_form_filter select{ width:70px; height:30px; border:none; font-size:14px; border:none;border-right:none; color: #888; font-size: 12px; line-height: 30px; text-align:center}
.my_issues_form_filter select.issues_filter_select_min{width:50px; } .my_issues_form_filter select.issues_filter_select_min{width:50px; }
.my_issues_form_filter select{appearance:none;-moz-appearance:none;-webkit-appearance:none;} .my_issues_form_filter select{appearance:none;-moz-appearance:none;-webkit-appearance:none;}
.ke-block pre{
font-size:9pt;
font-family:Courier New,Arial;
border:1px solid #ddd;
border-left:5px solid #6CE26C;
background:#f6f6f6;
padding:5px;
}
.ke-block ol li{list-style-type: decimal;margin-left: 40px;}
.ke-block ul li{list-style-type: disc;margin-left: 40px;}

View File

@ -867,6 +867,7 @@ a.pro_new_project_name{ width: 250px; overflow: hidden;white-space: nowrap;text-
a.pro_new_topbtn{ padding: 3px 7px; font-size: 12px; line-height: 20px; color: #333;vertical-align: middle;background-color: #fff; border: 1px solid #ddd; border-left: 0; border-top-right-radius: 3px; border-bottom-right-radius: 3px; color: #333;} a.pro_new_topbtn{ padding: 3px 7px; font-size: 12px; line-height: 20px; color: #333;vertical-align: middle;background-color: #fff; border: 1px solid #ddd; border-left: 0; border-top-right-radius: 3px; border-bottom-right-radius: 3px; color: #333;}
a.pro_new_topbtn_left { padding: 3px 10px; font-size: 12px;line-height: 20px; background-image: linear-gradient(#fcfcfc, #eee); border: 1px solid #d5d5d5;border-radius: 3px;border-top-right-radius: 0;border-bottom-right-radius: 0; color: #333; } a.pro_new_topbtn_left { padding: 3px 10px; font-size: 12px;line-height: 20px; background-image: linear-gradient(#fcfcfc, #eee); border: 1px solid #d5d5d5;border-radius: 3px;border-top-right-radius: 0;border-bottom-right-radius: 0; color: #333; }
a:hover.pro_new_topbtn_left{background-image: linear-gradient(#ededed, #dddddd);} a:hover.pro_new_topbtn_left{background-image: linear-gradient(#ededed, #dddddd);}
a.pro_new_grey_topbtn_left{padding: 3px 10px; font-size: 12px;line-height: 20px; background: #fff; border: 1px solid #d5d5d5;border-radius: 3px;border-top-right-radius: 0;border-bottom-right-radius: 0; color: #888888; }
.pro_new_topnav ul{border-bottom: 3px solid #fff; height: 30px; line-height: 30px;} .pro_new_topnav ul{border-bottom: 3px solid #fff; height: 30px; line-height: 30px;}
.pro_new_topnav ul li{ float: left;padding:0 15px; height: 30px; line-height: 30px;text-align: center; } .pro_new_topnav ul li{ float: left;padding:0 15px; height: 30px; line-height: 30px;text-align: center; }
.pro_new_topnav_active{border-bottom: 3px solid #3b94d6; } .pro_new_topnav_active{border-bottom: 3px solid #3b94d6; }
@ -888,7 +889,7 @@ a:hover.btn_newpro_grey,a:active.btn_newpro_grey{ background: #eaeaea;}
/*项目简介*/ /*项目简介*/
.pro_new_info{ border:1px solid #ddd; background-color:#fff; width: 998px;} .pro_new_info{ border:1px solid #ddd; background-color:#fff; width: 998px;}
.pro_new_info h2{ background: #fff; font-size: 14px; color: #333; height: 40px; line-height: 40px; padding-left: 15px; border-bottom:1px solid #e5e5e5;} .pro_new_info h2{ background: #fff; font-size: 14px; color: #333; height: 40px; line-height: 40px; padding-left: 15px; border-bottom:1px solid #e5e5e5;}
.pro_new_info p{ padding-bottom:2px; padding-left: 15px; color: #666; padding-right: 5px} /*.pro_new_info p{ padding-bottom:2px; padding-left: 15px; color: #666; padding-right: 5px}*/
.pro_new_info_weight{ font-size: 16px; font-weight: bold;} .pro_new_info_weight{ font-size: 16px; font-weight: bold;}
/* 新版项目配置*/ /* 新版项目配置*/
.pro_new_setting_leftnav{ width: 162px; border:1px solid #ddd; background-color:#fff; padding:3px; padding-bottom: 0;} .pro_new_setting_leftnav{ width: 162px; border:1px solid #ddd; background-color:#fff; padding:3px; padding-bottom: 0;}
@ -1028,7 +1029,7 @@ textarea.muban_textarea{ width: 98.5%;border:1px solid #ddd; background:#fff; co
.pro_new_users_box{ margin:0 10px;} .pro_new_users_box{ margin:0 10px;}
.pro_new_users_box li{ width:25%; float: left; margin:10px 0;} .pro_new_users_box li{ width:25%; float: left; margin:10px 0;}
.pro_new_users{ } .pro_new_users{ }
a.pro_new_users { max-width:80px; overflow:hidden;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; word-break:break-all; display: inline-block; font-weight: bold; color: #666;} a.pro_new_users { max-width:130px; overflow:hidden;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; word-break:break-all; display: inline-block; font-weight: bold; color: #666;}
a:hover.pro_new_users {color: #3b94d6} a:hover.pro_new_users {color: #3b94d6}
.pro_new_users img{ width:40px;height:40px; border: 3px solid #fff;-webkit-border-radius:50px;-moz-border-radius:50px;-o-border-radius:50px;border-radius:50px;} .pro_new_users img{ width:40px;height:40px; border: 3px solid #fff;-webkit-border-radius:50px;-moz-border-radius:50px;-o-border-radius:50px;border-radius:50px;}
.pro_new_users img:hover{border: 3px solid #e6e6e6;} .pro_new_users img:hover{border: 3px solid #e6e6e6;}