Merge branch 'szzh' into develop
|
@ -21,3 +21,4 @@
|
|||
.rbenv-gemsets
|
||||
.DS_Store
|
||||
public/api_doc/
|
||||
/.metadata
|
||||
|
|
2
Gemfile
|
@ -22,7 +22,7 @@ gem 'spreadsheet'
|
|||
gem 'ruby-ole'
|
||||
#gem 'email_verifier', path: 'lib/email_verifier'
|
||||
gem 'rufus-scheduler'
|
||||
gem 'dalli', path: 'lib/dalli-2.7.2'
|
||||
#gem 'dalli', path: 'lib/dalli-2.7.2'
|
||||
group :development do
|
||||
gem 'grape-swagger'
|
||||
gem 'grape-swagger-ui', git: 'https://github.com/guange2015/grape-swagger-ui.git'
|
||||
|
|
|
@ -329,4 +329,11 @@ class AdminController < ApplicationController
|
|||
format.html
|
||||
end
|
||||
end
|
||||
#移动端版本管理
|
||||
def mobile_version
|
||||
@versions = PhoneAppVersion.reorder('created_at desc')
|
||||
@new_version = PhoneAppVersion.new
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -57,6 +57,7 @@ class BoardsController < ApplicationController
|
|||
|
||||
def show
|
||||
respond_to do |format|
|
||||
format.js
|
||||
format.html {
|
||||
sort_init 'updated_on', 'desc'
|
||||
sort_update 'created_on' => "#{Message.table_name}.created_on",
|
||||
|
|
|
@ -61,6 +61,10 @@ class DocumentsController < ApplicationController
|
|||
if @project.project_type ==1
|
||||
render :action => 'show', :layout => 'base_courses'
|
||||
end
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.api
|
||||
end
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
|
@ -148,7 +148,11 @@ class FilesController < ApplicationController
|
|||
|
||||
show_attachments @containers
|
||||
|
||||
render :layout => !request.xhr?
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.js
|
||||
end
|
||||
elsif params[:course_id]
|
||||
@isproject = false
|
||||
|
||||
|
|
|
@ -90,6 +90,7 @@ class IssuesController < ApplicationController
|
|||
|
||||
|
||||
respond_to do |format|
|
||||
format.js
|
||||
format.html { render :template => 'issues/index', :layout => @project_base_tag }#by young
|
||||
format.api {
|
||||
Issue.load_visible_relations(@issues) if include_in_api_response?('relations')
|
||||
|
@ -103,6 +104,7 @@ class IssuesController < ApplicationController
|
|||
format.html { render(:template => 'issues/index', :layout => @project_base_tag) }#by young
|
||||
format.any(:atom, :csv, :pdf) { render(:nothing => true) }
|
||||
format.api { render_validation_errors(@query) }
|
||||
format.js
|
||||
end
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
|
@ -154,7 +156,7 @@ class IssuesController < ApplicationController
|
|||
call_hook(:controller_issues_new_before_save, { :params => params, :issue => @issue })
|
||||
@issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads]))
|
||||
# 给该issue在它所在的项目中所有的issues中所在的位置给一个序号
|
||||
@issue.project_issues_index = @issue.project.issues.last.project_issues_index + 1
|
||||
@issue.project_issues_index = @issue.project.issues.last.nil? ? 1 : @issue.project.issues.last.project_issues_index + 1
|
||||
if @issue.save
|
||||
call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue})
|
||||
respond_to do |format|
|
||||
|
|
|
@ -249,7 +249,7 @@ class ProjectsController < ApplicationController
|
|||
# Author lizanle
|
||||
# Description 项目动态展示方法,删除了不必要的代码
|
||||
def show
|
||||
=begin
|
||||
|
||||
# 试图跳转到请求的按钮
|
||||
if params[:login]
|
||||
login = params[:login]
|
||||
|
@ -265,7 +265,7 @@ class ProjectsController < ApplicationController
|
|||
if params[:jump] && redirect_to_project_menu_item(@project, params[:jump])
|
||||
return
|
||||
end
|
||||
|
||||
=begin
|
||||
cond = @project.project_condition(Setting.display_subprojects_issues?)
|
||||
has = {
|
||||
"show_issues" => true ,
|
||||
|
@ -307,7 +307,6 @@ class ProjectsController < ApplicationController
|
|||
# @events = @activity.events(@date_from, @date_to, :is_public => 1)
|
||||
end
|
||||
|
||||
|
||||
=begin
|
||||
@events_pages = Paginator.new events.count, 10, params['page']
|
||||
# 总的数据中取出某一页
|
||||
|
@ -315,11 +314,13 @@ class ProjectsController < ApplicationController
|
|||
# 按天分组
|
||||
@events_by_day = events.group_by {|event| User.current.time_to_date(event.event_datetime)}
|
||||
=end
|
||||
|
||||
boards = @project.boards.includes(:last_message => :author).all
|
||||
@topic_count = @project.boards.count
|
||||
# 根据对应的请求,返回对应的数据
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.api
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -331,6 +332,25 @@ class ProjectsController < ApplicationController
|
|||
@wiki ||= @project.wiki
|
||||
end
|
||||
|
||||
def send_mail_to_member
|
||||
unless params[:mail].nil?
|
||||
email = params[:mail]
|
||||
Mailer.send_invite_in_project(email, @project, User.current).deliver
|
||||
end
|
||||
end
|
||||
#发送邮件邀请新用户
|
||||
def invite_members_by_mail
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
# 邀请Trustie注册用户
|
||||
def invite_members
|
||||
@member ||= @project.members.new
|
||||
end
|
||||
|
||||
def edit
|
||||
end
|
||||
|
||||
|
|
|
@ -444,14 +444,22 @@ class UsersController < ApplicationController
|
|||
else
|
||||
activity = Activity.where(where_condition).where('user_id = ?', @user.id).order('id desc')
|
||||
end
|
||||
activity = activity.reject { |e|
|
||||
!User.current.admin? &&
|
||||
(((e.act_type == "Issue") && !e.act.project.visible?(User.current)) ||
|
||||
(e.act_type == "Bid" && !e.act.courses.first.nil? && e.act.courses.first.is_public == 0 && !User.current.member_of_course?(e.act.courses.first)) ||
|
||||
(e.act_type == "Journal" && e.act.respond_to?("Project") && !e.act.project.visible?(User.current)) ||
|
||||
(e.act_type == "News" && ((!e.act.project.nil? && !e.act.project.visible?(User.current)) || (!e.act.course.nil? && e.act.course.is_public == 0 && !User.current.member_of_course?(e.act.course)))) ||
|
||||
(e.act_type == "Message" && !e.act.board.nil? && ((!e.act.board.project.nil? && !e.act.board.project.visible?(User.current)) || (!e.act.board.course.nil? && e.act.board.course.is_public == 0 && !User.current.member_of_course?(e.act.board.course)))))
|
||||
}
|
||||
@activity_count = activity.count
|
||||
@activity_pages = Paginator.new @activity_count, pre_count, params['page']
|
||||
@activity = activity.slice(@activity_pages.offset,@activity_pages.per_page )
|
||||
@activity = @activity.reject { |e|
|
||||
((e.act_type=="Issue") && ( !e.act.visible?(User.current))) ||
|
||||
((e.act_type == "Journal") && (!e.act.project.visible?(User.current))) ||
|
||||
((e.act_type == "Bid") && ((!User.current.member_of_course?(e.act.courses.first) || !User.current.admin?)))
|
||||
}
|
||||
@activity = activity.slice(@activity_pages.offset,@activity_pages.per_page)
|
||||
# @activity = @activity.reject { |e|
|
||||
# ((e.act_type=="Issue") && ( !e.act.visible?(User.current))) ||
|
||||
# ((e.act_type == "Journal") && (!e.act.project.visible?(User.current))) ||
|
||||
# ((e.act_type == "Bid") && ((!User.current.member_of_course?(e.act.courses.first) || !User.current.admin?)))
|
||||
# }
|
||||
@state = 0
|
||||
end
|
||||
|
||||
|
|
|
@ -1841,7 +1841,7 @@ module ApplicationHelper
|
|||
# course_all_course_link = link_to l(:label_course_all), {:controller => 'courses', :action => 'index'}
|
||||
course_teacher_all_link = link_to l(:label_teacher_all), {:controller => 'users', :action => 'index', :role => 'teacher', :host => Setting.course_domain}
|
||||
# courses_link = link_to l(:label_course_practice), {:controller => 'courses', :action => 'index'}
|
||||
users_link = link_to l(:label_software_user), {:controller => 'users', :action => 'index', :host => Setting.user_domain}
|
||||
#users_link = link_to l(:label_software_user), {:controller => 'users', :action => 'index', :host => Setting.user_domain}
|
||||
# contest_link = link_to l(:label_contest_innovate), {:controller => 'contests', :action => 'index'}
|
||||
bids_link = link_to l(:label_requirement_enterprise), {:controller => 'bids', :action => 'index'}
|
||||
forum_link = link_to l(:label_forum_all), {:controller => "forums", :action => "index"}
|
||||
|
@ -1860,7 +1860,7 @@ module ApplicationHelper
|
|||
|
||||
nav_list.push(courses_link) if @nav_dispaly_course_label && @show_course == 1
|
||||
# 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(bids_link) if @nav_dispaly_bid_label
|
||||
nav_list.push(forum_link) if @nav_dispaly_forum_label
|
||||
|
|
|
@ -283,6 +283,6 @@ module WatchersHelper
|
|||
|
||||
def exit_project_link(project)
|
||||
link_to(l(:label_exit_project),exit_cur_project_path(project.id),
|
||||
:remote => true, :confirm => l(:lable_sure_exit_project) )
|
||||
:remote => true, :confirm => l(:lable_sure_exit_project), :style => "color: #fff; display:block; padding: 0px 5px;margin-right:10px;height:22px;background:none repeat scroll 0% 0% #64BDD9;TES" )
|
||||
end
|
||||
end
|
||||
|
|
|
@ -31,10 +31,11 @@ class Mailer < ActionMailer::Base
|
|||
# 发送邀请未注册用户加入项目邮件
|
||||
# 功能: 在加入项目的同时自动注册用户
|
||||
def send_invite_in_project(email, project, invitor)
|
||||
@email = email
|
||||
@subject = "#{invitor.name} #{l(:label_invite_project)} #{project.name} "
|
||||
password = newpass(6)
|
||||
@password = newpass(6)
|
||||
@project_url = url_for(:controller => 'projects', :action => 'show', :id => project.id,
|
||||
:password => password, :login => email)
|
||||
:password => @password, :login => email)
|
||||
mail :to => email, :subject => @subject
|
||||
end
|
||||
|
||||
|
|
|
@ -164,8 +164,11 @@ class Message < ActiveRecord::Base
|
|||
# Author lizanle
|
||||
# Description
|
||||
def act_as_forge_activity
|
||||
self.forge_acts << ForgeActivity.new(:user_id => self.author_id,
|
||||
:project_id => self.board.project.id)
|
||||
# 如果project为空,那么就是课程相关的消息
|
||||
if !self.board.project.nil?
|
||||
self.forge_acts << ForgeActivity.new(:user_id => self.author_id,
|
||||
:project_id => self.board.project.id)
|
||||
end
|
||||
end
|
||||
|
||||
#更新用户分数 -by zjc
|
||||
|
|
|
@ -98,8 +98,11 @@ class News < ActiveRecord::Base
|
|||
# Author lizanle
|
||||
# Description 公用表中也要记录
|
||||
def act_as_forge_activity
|
||||
self.forge_acts << ForgeActivity.new(:user_id => self.author_id,
|
||||
:project_id => self.project.id)
|
||||
# 如果是project为空,那么是课程相关的,不需要保存
|
||||
if !self.project.nil?
|
||||
self.forge_acts << ForgeActivity.new(:user_id => self.author_id,
|
||||
:project_id => self.project.id)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
class PhoneAppVersion < ActiveRecord::Base
|
||||
attr_accessible :description, :version
|
||||
end
|
|
@ -33,7 +33,4 @@
|
|||
<%= submit_tag l(:button_save), :class => "small", :name => nil %>
|
||||
<% end %>
|
||||
<div>
|
||||
|
||||
|
||||
|
||||
</div>
|
|
@ -0,0 +1,56 @@
|
|||
<h3><%= l(:label_mobile_version) %></h3>
|
||||
<a href="javascript:void(0)" onclick="$('#new_version').slideToggle(400); ">发布新版本</a>
|
||||
<div>
|
||||
<form id="new_version" style="display: none">
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<br/>
|
||||
<div>当前版本:</div>
|
||||
<table class="list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%=l(:label_version_number)%></th>
|
||||
<th><%=l(:label_version_description)%></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% if @versions.count > 0 %>
|
||||
<tr class="<%= cycle("odd", "even") %>">
|
||||
<td><%= @versions.first.version %></td>
|
||||
<td align="center" style="width: 70%">
|
||||
<%= @versions.first.description %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
|
||||
<div>历史版本:</div>
|
||||
<table class="list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%=l(:label_version_number)%></th>
|
||||
<th><%=l(:label_version_description)%></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% if @versions.count > 0 %>
|
||||
<% for version in @versions %>
|
||||
<tr class="<%= cycle("odd", "even") %>">
|
||||
<td><%= version.version %></td>
|
||||
<td align="center" style="width: 70%">
|
||||
<%= version.description %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- <div class="pagination"><#%= pagination_links_full @role_pages %></div> -->
|
||||
|
||||
<% html_title(l(:label_mobile_version)) -%>
|
|
@ -9,11 +9,8 @@
|
|||
</script>
|
||||
<div id="add-message" class="add_frame" style="display:none;">
|
||||
<% if User.current.logged? %>
|
||||
<h3>
|
||||
<%= link_to h(@board.name), project_board_path(@project, @board) %> » <%= l(:label_message_new) %>
|
||||
</h3>
|
||||
<div class="add_frame_header">
|
||||
<%= l(:label_message_new) %>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= l(:label_message_new) %></h2>
|
||||
</div>
|
||||
<%= form_for @message, :url => new_board_message_path(@board), :html => {:multipart => true, :id => 'message-form'} do |f| %>
|
||||
<%= render :partial => 'messages/form', :locals => {:f => f} %>
|
||||
|
@ -27,8 +24,8 @@
|
|||
</div>
|
||||
|
||||
<!--display the board-->
|
||||
<div class="borad-title">
|
||||
<%= h @board.name %>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= h @board.name %></h2>
|
||||
</div>
|
||||
|
||||
<% if !User.current.logged? %>
|
||||
|
@ -48,7 +45,7 @@
|
|||
<%= link_to @topic_count,:controller => 'boards',:action => 'index' %>
|
||||
个贴子
|
||||
</span>
|
||||
<% if @project.enabled_modules.where("name = 'boards'").count > 0 %>
|
||||
<% 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),
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<h3><%= @query.new_record? ? l(:label_calendar) : h(@query.name) %></h3>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= @query.new_record? ? l(:label_calendar) : h(@query.name) %></h2>
|
||||
</div>
|
||||
|
||||
<%= form_tag({:controller => 'calendars', :action => 'show', :project_id => @project},
|
||||
:method => :get, :id => 'query_form') do %>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%=l(:label_document_plural)%></h2>
|
||||
</div>
|
||||
<div class="contextual">
|
||||
<!--Moved by young-->
|
||||
<%= l(:label_documents_sort) %>
|
||||
|
@ -8,24 +11,22 @@
|
|||
|
|
||||
<!--Ended by young-->
|
||||
<%= link_to l(:label_document_new), new_project_document_path(@project), :class => 'icon icon-add',
|
||||
:onclick => 'showAndScrollTo("add-document", "document_title"); return false;' if User.current.allowed_to?(:add_documents, @project) %>
|
||||
:onclick => 'showAndScrollTo("add-document", "document_title"); return false;' if User.current.allowed_to?(:add_documents, @project) %>
|
||||
</div>
|
||||
|
||||
<div id="add-document" style="display:none;">
|
||||
<h3>
|
||||
<%=l(:label_document_new)%>
|
||||
</h3>
|
||||
<%= labelled_form_for @document, :url => project_documents_path(@project), :html => {:multipart => true} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<p>
|
||||
<%= submit_tag l(:button_create) %>
|
||||
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-document").hide(); return false;' %>
|
||||
</p>
|
||||
<% end %>
|
||||
<h3>
|
||||
<%=l(:label_document_new)%>
|
||||
</h3>
|
||||
<%= labelled_form_for @document, :url => project_documents_path(@project), :html => {:multipart => true} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<p>
|
||||
<%= submit_tag l(:button_create) %>
|
||||
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-document").hide(); return false;' %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<h3><%=l(:label_document_plural)%></h3>
|
||||
|
||||
<% if @grouped.empty? %>
|
||||
<p class="nodata">
|
||||
<%= l(:label_no_data) %>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%=h @document.title %></h2>
|
||||
</div>
|
||||
<div class="frame-wiki">
|
||||
|
||||
<div class="contextual">
|
||||
|
@ -9,7 +12,6 @@
|
|||
<% end %>
|
||||
</div>
|
||||
|
||||
<h2 style="word-wrap: break-word; word-break: normal;"><%=h @document.title %></h2>
|
||||
|
||||
<p><em><%#=h @document.category.name %><br />
|
||||
<%= format_date @document.created_on %></em></p>
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
|
||||
<% attachmenttypes = @project.attachmenttypes %>
|
||||
<% sufixtypes = @project.contenttypes %>
|
||||
|
||||
<span class="borad-title">
|
||||
<%= (@project.project_type == 1) ? t(:label_user_course) : t(:label_project) %>
|
||||
资源共享区
|
||||
</span>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2">资源共享区</h2>
|
||||
</div>
|
||||
|
||||
<div class="content-title-top">
|
||||
<%#= link_to(l(:label_attachment_new), 'javascript:void(0);', :onclick=>"$('#file_buttons').slideToggle();", :class => 'icon icon-add') if User.current.allowed_to?(:manage_files, @project) %>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<!-- <h3> --><!-- %=l(:label_attachment_plural)%></h3 -->
|
||||
<div id="resource_list">
|
||||
<% if @isproject %>
|
||||
<%= render :partial => 'project_file', locals: {project: @project} %>
|
||||
<% else %>
|
||||
<%= render :partial => 'course_file', locals: {course: @course} %>
|
||||
<% end %>
|
||||
<% if @isproject %>
|
||||
<%= render :partial => 'project_file', locals: {project: @project} %>
|
||||
<% else %>
|
||||
<%= render :partial => 'course_file', locals: {course: @course} %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<h3><%=l(:label_attachment_new)%></h3>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%=l(:label_attachment_new)%></h2>
|
||||
</div>
|
||||
|
||||
<%= error_messages_for 'attachment' %>
|
||||
<%= form_tag(project_files_path(@project), :multipart => true, :class => "tabular") do %>
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<% @gantt.view = self %>
|
||||
<h3><%= @query.new_record? ? l(:label_gantt) : h(@query.name) %></h3>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><% @gantt.view = self %>
|
||||
<%= @query.new_record? ? l(:label_gantt) : h(@query.name) %></h2>
|
||||
</div>
|
||||
|
||||
<%= form_tag({:controller => 'gantts', :action => 'show',
|
||||
:project_id => @project, :month => params[:month],
|
||||
|
|
|
@ -0,0 +1,139 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">问题跟踪</h2>
|
||||
</div>
|
||||
<div class="problem_top">
|
||||
<% if @project.enabled_modules.where("name = 'issue_tracking'").count > 0 %>
|
||||
<span>
|
||||
<% if User.current.member_of?(@project) %>
|
||||
<%= link_to l(:label_issue_new), {:controller => 'issues', :action => 'new', :copy_from => nil}, :param => :project_id, :caption => :label_issue_new,
|
||||
:html => {:accesskey => Redmine::AccessKeys.key_for(:new_issue)}, :class => 'icon icon-add' %>
|
||||
<% end %>
|
||||
<%= link_to l(:label_query), '#', :class => 'icon icon-help',
|
||||
:onclick => '$("#custom_query").slideToggle(400); ' if true || User.current.logged? %>
|
||||
</span>
|
||||
<% end %>
|
||||
<span class="problem_p fr">问题总数:<span><%= @project.issues.count %></span> 未解决:<span><%= @project.issues.where('status_id in (1,2,4,6)').count %></span></span>
|
||||
</div>
|
||||
<div class="contextual">
|
||||
<% if !@query.new_record? && @query.editable_by?(User.current) %>
|
||||
<%= link_to l(:button_edit), edit_query_path(@query), :class => 'icon icon-edit' %>
|
||||
<%= delete_link query_path(@query) %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% html_title(@query.new_record? ? l(:label_issue_plural) : @query.name) %>
|
||||
<div style="clear:right; ">
|
||||
<%= form_tag({:controller => 'issues', :action => 'index', :project_id => @project}, :method => :get, :id => 'query_form', :class => 'query_form') do %>
|
||||
<%= hidden_field_tag 'set_filter', '1' %>
|
||||
|
||||
<div id="custom_query" class="custom_query" style="display: <%= !params[:utf8].blank? ? 'block' : 'none' %>;">
|
||||
<span>---<%= l :label_query_new %>---</span>
|
||||
|
||||
<div id="query_form_content" class="hide-when-print">
|
||||
<fieldset id="filters" class="collapsible <%= @query.new_record? ? "" : "collapsed" %>">
|
||||
<legend onclick="toggleFieldset(this);">
|
||||
<%= l(:label_issue_query_condition) %>
|
||||
</legend>
|
||||
<div style="<%= @query.new_record? ? "" : "display: none;" %>">
|
||||
<%= render :partial => 'queries/filters', :locals => {:query => @query} %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<!--
|
||||
<fieldset class="collapsible collapsed">
|
||||
<legend onclick="toggleFieldset(this);">
|
||||
<%= l(:label_options) %>
|
||||
</legend>
|
||||
<div style="display: none;">
|
||||
<table>
|
||||
<tr>
|
||||
<td><%= l(:field_column_names) %></td>
|
||||
<td><%= render_query_columns_selection(@query) %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for='group_by'><%= l(:field_group_by) %></label></td>
|
||||
<td><%= select_tag('group_by', options_for_select([[]] + @query.groupable_columns.collect { |c| [c.caption, c.name.to_s] }, @query.group_by)) %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%= l(:button_show) %></td>
|
||||
<td><%= available_block_columns_tags(@query) %></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</fieldset>
|
||||
-->
|
||||
<div class="buttons hide-when-print">
|
||||
<%= link_to_function l(:label_issue_query), 'submit_query_form("query_form")', :class => 'icon icon-checked' %>
|
||||
<%= link_to l(:label_issue_cancel_query), {:set_filter => 1, :project_id => @project}, :class => 'icon icon-reload' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%= error_messages_for 'query' %>
|
||||
|
||||
<% if @query.valid? %>
|
||||
<% if @issues.empty? %>
|
||||
<p class="nodata">
|
||||
<%= l(:label_no_data) %>
|
||||
</p>
|
||||
<% else %>
|
||||
<%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %>
|
||||
<div class="pagination">
|
||||
<ul><%= pagination_links_full @issue_pages, @issue_count %></ul>
|
||||
</div>
|
||||
<% end %>
|
||||
<div style="float: right; padding-top: 30px">
|
||||
<% other_formats_links do |f| %>
|
||||
<%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %>
|
||||
<%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
|
||||
<%= f.link_to 'PDF', :url => params %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="csv-export-options" style="display:none;">
|
||||
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
|
||||
<%= form_tag(params.merge({:format => 'csv', :page => nil}), :method => :get, :id => 'csv-export-form') do %>
|
||||
<p>
|
||||
<label>
|
||||
<%= radio_button_tag 'columns', 'all' %>
|
||||
<%= l(:description_all_columns) %>
|
||||
</label>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label>
|
||||
<%= check_box_tag 'description', '1', @query.has_column?(:description) %>
|
||||
<%= l(:field_description) %>
|
||||
</label>
|
||||
</p>
|
||||
|
||||
<p class="buttons">
|
||||
<%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);" %>
|
||||
<%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button' %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
|
||||
<%= call_hook(:view_issues_index_bottom, {:issues => @issues, :project => @project, :query => @query}) %>
|
||||
|
||||
<% content_for :sidebar do %>
|
||||
<%= render :partial => 'issues/sidebar' %>
|
||||
<% end %>
|
||||
|
||||
<% content_for :header_tags do %>
|
||||
<%= auto_discovery_link_tag(:atom,
|
||||
{:query_id => @query, :format => 'atom',
|
||||
:page => nil, :key => User.current.rss_key},
|
||||
:title => l(:label_issue_plural)) %>
|
||||
<%= auto_discovery_link_tag(:atom,
|
||||
{:controller => 'journals', :action => 'index',
|
||||
:query_id => @query, :format => 'atom',
|
||||
:page => nil, :key => User.current.rss_key},
|
||||
:title => l(:label_changes_details)) %>
|
||||
<% end %>
|
||||
|
||||
<%= context_menu issues_context_menu_path %>
|
|
@ -1,135 +1 @@
|
|||
<div class="content-title-top">
|
||||
<% if @project.enabled_modules.where("name = 'issue_tracking'").count > 0 %>
|
||||
<div>
|
||||
<%= link_to l(:label_issue_new), {:controller => 'issues', :action => 'new', :copy_from => nil}, :param => :project_id, :caption => :label_issue_new,
|
||||
:html => {:accesskey => Redmine::AccessKeys.key_for(:new_issue)}, :class => 'icon icon-add' %>
|
||||
|
||||
<%= link_to l(:label_query), '#', :class => 'icon icon-help',
|
||||
:onclick => '$("#custom_query").slideToggle(400); ' if true || User.current.logged? %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="contextual">
|
||||
<% if !@query.new_record? && @query.editable_by?(User.current) %>
|
||||
<%= link_to l(:button_edit), edit_query_path(@query), :class => 'icon icon-edit' %>
|
||||
<%= delete_link query_path(@query) %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% html_title(@query.new_record? ? l(:label_issue_plural) : @query.name) %>
|
||||
<div style="clear:right; ">
|
||||
<%= form_tag({:controller => 'issues', :action => 'index', :project_id => @project}, :method => :get, :id => 'query_form', :class => 'query_form') do %>
|
||||
<%= hidden_field_tag 'set_filter', '1' %>
|
||||
|
||||
<div id="custom_query" class="custom_query" style="display: <%= !params[:utf8].blank? ? 'block' : 'none' %>;">
|
||||
<span>---<%= l :label_query_new %>---</span>
|
||||
|
||||
<div id="query_form_content" class="hide-when-print">
|
||||
<fieldset id="filters" class="collapsible <%= @query.new_record? ? "" : "collapsed" %>">
|
||||
<legend onclick="toggleFieldset(this);">
|
||||
<%= l(:label_issue_query_condition) %>
|
||||
</legend>
|
||||
<div style="<%= @query.new_record? ? "" : "display: none;" %>">
|
||||
<%= render :partial => 'queries/filters', :locals => {:query => @query} %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<!--
|
||||
<fieldset class="collapsible collapsed">
|
||||
<legend onclick="toggleFieldset(this);">
|
||||
<%= l(:label_options) %>
|
||||
</legend>
|
||||
<div style="display: none;">
|
||||
<table>
|
||||
<tr>
|
||||
<td><%= l(:field_column_names) %></td>
|
||||
<td><%= render_query_columns_selection(@query) %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for='group_by'><%= l(:field_group_by) %></label></td>
|
||||
<td><%= select_tag('group_by', options_for_select([[]] + @query.groupable_columns.collect { |c| [c.caption, c.name.to_s] }, @query.group_by)) %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%= l(:button_show) %></td>
|
||||
<td><%= available_block_columns_tags(@query) %></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</fieldset>
|
||||
-->
|
||||
<div class="buttons hide-when-print">
|
||||
<%= link_to_function l(:label_issue_query), 'submit_query_form("query_form")', :class => 'icon icon-checked' %>
|
||||
<%= link_to l(:label_issue_cancel_query), {:set_filter => 1, :project_id => @project}, :class => 'icon icon-reload' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%= error_messages_for 'query' %>
|
||||
|
||||
<% if @query.valid? %>
|
||||
<% if @issues.empty? %>
|
||||
<p class="nodata">
|
||||
<%= l(:label_no_data) %>
|
||||
</p>
|
||||
<% else %>
|
||||
<%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %>
|
||||
<div class="pagination">
|
||||
<ul><%= pagination_links_full @issue_pages, @issue_count %></ul>
|
||||
</div>
|
||||
<% end %>
|
||||
<div style="float: right; padding-top: 30px">
|
||||
<% other_formats_links do |f| %>
|
||||
<%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %>
|
||||
<%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
|
||||
<%= f.link_to 'PDF', :url => params %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="csv-export-options" style="display:none;">
|
||||
<h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
|
||||
<%= form_tag(params.merge({:format => 'csv', :page => nil}), :method => :get, :id => 'csv-export-form') do %>
|
||||
<p>
|
||||
<label>
|
||||
<%= radio_button_tag 'columns', 'all' %>
|
||||
<%= l(:description_all_columns) %>
|
||||
</label>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label>
|
||||
<%= check_box_tag 'description', '1', @query.has_column?(:description) %>
|
||||
<%= l(:field_description) %>
|
||||
</label>
|
||||
</p>
|
||||
|
||||
<p class="buttons">
|
||||
<%= submit_tag l(:button_export), :name => nil, :onclick => "hideModal(this);" %>
|
||||
<%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button' %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
|
||||
<%= call_hook(:view_issues_index_bottom, {:issues => @issues, :project => @project, :query => @query}) %>
|
||||
|
||||
<% content_for :sidebar do %>
|
||||
<%= render :partial => 'issues/sidebar' %>
|
||||
<% end %>
|
||||
|
||||
<% content_for :header_tags do %>
|
||||
<%= auto_discovery_link_tag(:atom,
|
||||
{:query_id => @query, :format => 'atom',
|
||||
:page => nil, :key => User.current.rss_key},
|
||||
:title => l(:label_issue_plural)) %>
|
||||
<%= auto_discovery_link_tag(:atom,
|
||||
{:controller => 'journals', :action => 'index',
|
||||
:query_id => @query, :format => 'atom',
|
||||
:page => nil, :key => User.current.rss_key},
|
||||
:title => l(:label_changes_details)) %>
|
||||
<% end %>
|
||||
|
||||
<%= context_menu issues_context_menu_path %>
|
||||
<%= render :partial => 'issues/newissue_index' %>
|
|
@ -0,0 +1 @@
|
|||
$('#content').html('<%= escape_javascript(render :partial => 'issues/newissue_index') %>');
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">问题跟踪</h2>
|
||||
</div>
|
||||
<%= call_hook(:view_issues_new_top, {:issue => @issue}) %>
|
||||
|
||||
<%= labelled_form_for @issue, :url => project_issues_path(@project),
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= l(:label_issue_plural) %></h2>
|
||||
</div>
|
||||
<%# html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
|
||||
<% html_title "#{@issue.tracker.name} #{@issue.source_from}'#'#{@issue.project_index}: #{@issue.subject}" %>
|
||||
|
||||
|
|
|
@ -1,32 +1,30 @@
|
|||
<style type="text/css">
|
||||
#scrollsidebar{ font-size:12px; font-family:"微软雅黑","宋体"; line-height:1.9; background:#fff; font-style:normal;}
|
||||
#scrollsidebar{ font-size:12px; font-family:"微软雅黑","宋体"; line-height:1.9; background:#F6F7F8; font-style:normal;}
|
||||
#scrollsidebar div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span,ol{ }
|
||||
#scrollsidebar div,img,tr,td,table{ border:0;}
|
||||
#scrollsidebar ol,ul,li{ list-style-type:none}
|
||||
#scrollsidebar .cl{ clear:both; overflow:hidden; }
|
||||
#scrollsidebar a{ text-decoration:none;}
|
||||
|
||||
html{ overflow-x:hidden;}
|
||||
.custom_service p img {display: inline; margin-top:-5px; vertical-align:middle;}
|
||||
.scrollsidebar{position:absolute; z-index:999; top:150px;background:none !important;}
|
||||
.side_content{width:154px; height:auto; overflow:hidden; float:left; }
|
||||
.side_content .side_list {width:154px;overflow:hidden;}
|
||||
.show_btn{ width:0; height:112px; overflow:hidden; margin-top:50px; float:left; cursor:pointer;}
|
||||
.show_btn span { display:none;}
|
||||
.close_btn{width:24px;height:24px;cursor:pointer;}
|
||||
.side_title,.side_bottom,.close_btn,.show_btn {background:url(/images/sidebar_bg.png) no-repeat;}
|
||||
.side_title {height:46px;}
|
||||
.side_bottom { height:8px;}
|
||||
.side_center {font-family:Verdana, Geneva, sans-serif; padding:5px 12px; font-size:12px;}
|
||||
.close_btn { float:right; display:block; width:21px; height:16px; margin:16px 10px 0 0; _margin:16px 5px 0 0;}
|
||||
.close_btn span { display:none;}
|
||||
.side_center .custom_service p { text-align:center; padding:6px 0; margin:0; vertical-align:middle;}
|
||||
.msgserver { margin:10px 0 4px 4px;}
|
||||
.msgserver a { background:url(/images/sidebar_bg.png) no-repeat -119px -115px; padding-left:22px;}
|
||||
.opnionText{ width:120px; height:180px; border-color:#cecece; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; color:#999; padding:3px;}
|
||||
a.opnionButton{ display:block; font-weight: bold; margin:-25px auto 0; text-align:center;}
|
||||
a:hover.opnionButton{ text-decoration:underline;}
|
||||
|
||||
html{ overflow-x:hidden;}
|
||||
.scrollsidebar{ position:absolute;top:1px; right:1px; background:none; }
|
||||
.side_content{width:154px; height:auto; overflow:hidden; float:left; }
|
||||
.side_content .side_list {width:154px;overflow:hidden;}
|
||||
.show_btn{ width:0; height:112px; overflow:hidden; float:left; cursor:pointer;}
|
||||
.show_btn span { display:none;}
|
||||
.close_btn{width:24px;height:24px;cursor:pointer;}
|
||||
.side_title,.side_bottom,.close_btn,.show_btn {background:url(/images/sidebar_bg.png) no-repeat; }
|
||||
.side_title {height:35px;}
|
||||
.side_bottom { height:8px;}
|
||||
.side_center {font-family:Verdana, Geneva, sans-serif; padding:0px 12px; font-size:12px;}
|
||||
.close_btn { float:right; display:block; width:21px; height:16px; margin:9px 10px 0 0; _margin:16px 5px 0 0;}
|
||||
.close_btn span { display:none;}
|
||||
.side_center .custom_service p { text-align:center; padding:6px 0; margin:0; vertical-align:middle;}
|
||||
.msgserver { margin:2px 0px 0px 4px; padding-top: 0px}
|
||||
.msgserver a { background:url(/images/sidebar_bg.png) no-repeat -119px -115px; padding-left:22px;}
|
||||
.opnionText{ width:122px; height:180px; border-color: #DFDFDF; background:#fff; color:#999; padding:3px; font-size:12px;}
|
||||
.opnionButton{ display:block; background:#15bccf; width:130px; height:23px; margin-top:5px; text-align:center; padding-top:3px;}
|
||||
.opnionButton:hover{background: #0fa9bb; }
|
||||
|
||||
/* blue skin as the default skin */
|
||||
.side_title {background-position:-195px 0;}
|
||||
|
@ -87,21 +85,6 @@ a:hover.opnionButton{ text-decoration:underline;}
|
|||
show_btn.css('width', 25);
|
||||
|
||||
}
|
||||
//???????
|
||||
if(options.skin) thisBox.addClass('side_'+options.skin);
|
||||
|
||||
|
||||
//????scroll???
|
||||
$(window).bind("scroll",function(){
|
||||
var offsetTop = defaultTop + $(window).scrollTop() + "px";
|
||||
thisBox.animate({
|
||||
top: offsetTop
|
||||
},
|
||||
{
|
||||
duration: options.durationTime,
|
||||
queue: false //???????????????????
|
||||
});
|
||||
});
|
||||
//close???
|
||||
closeBtn.bind("click",function(){
|
||||
sideContent.animate({width: '0px'},"fast");
|
||||
|
@ -186,14 +169,12 @@ function cookieget(n)
|
|||
<%= f.text_area :subject, :class => "opnionText",:placeholder => "有什么想说的,尽管来咆哮吧~~"%>
|
||||
<%= f.hidden_field :content, :required => true ,:value=>'该贴来自用户反馈!'%>
|
||||
<%#= f.submit :value => l(:label_memo_create), :class => "opnionButton", :id => "button1" %>
|
||||
<a href="javascript:void(0);" class="opnionButton" style=" color:#fd6e2a;" id="" onclick="f_submit();">提 交</a>
|
||||
<a href="javascript:void(0);" class="opnionButton" style=" color:#fff;" id="" onclick="f_submit();">提 交</a>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="msgserver">
|
||||
<p>
|
||||
<a href="http://user.trustie.net/users/12/user_newfeedback" style="color: #15BCCF;"><%= l(:label_technical_support) %>黄井泉</a></br>
|
||||
<a href="http://user.trustie.net/users/12/user_newfeedback" style="color: #15BCCF;"><%= l(:label_technical_support) %>黄井泉</a>
|
||||
<a href="http://user.trustie.net/users/34/user_newfeedback" style="color: #15BCCF;"><%= l(:label_technical_support) %>白 羽</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="side_bottom"></div>
|
||||
|
|
|
@ -1,22 +1,16 @@
|
|||
<div style="margin-left: 20px;">
|
||||
|
||||
<div class="pr_info_join fl">
|
||||
<!--关注项目-->
|
||||
<% if ( !(User.current.member_of? @project) && User.current.login?) %> <!--added by linchun-->
|
||||
<span class="icon-fav icon"></span><%= watcher_link(@project, User.current) %>
|
||||
<span><%= watcher_link(@project, User.current) %></span>
|
||||
<% end %>
|
||||
</div>
|
||||
<!--添加项目申请-->
|
||||
<div style="margin-left: 20px;">
|
||||
<!--加入项目 -->
|
||||
<% if ( !(User.current.member_of? @project) && User.current.login?) %>
|
||||
<span class="icon-fav icon"></span>
|
||||
<%= applied_link(@project, User.current) %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!--添加退出项目-->
|
||||
<div style="margin-left: 20px;">
|
||||
<!--退出项目-->
|
||||
<% if ((User.current.member_of? @project) &&
|
||||
User.current.login? &&
|
||||
Member.where(:user_id => User.current.id, :project_id=>@project.id).first.roles.first.to_s != "Manager") %>
|
||||
User.current.login? &&
|
||||
Member.where(:user_id => User.current.id, :project_id=>@project.id).first.roles.first.to_s != "Manager") %>
|
||||
<%= exit_project_link(@project) %>
|
||||
<% end %>
|
||||
</div>
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
<% @nav_dispaly_project_label = 1
|
||||
@nav_dispaly_forum_label = 1 %>
|
||||
@nav_dispaly_forum_label = 1 %>
|
||||
<%#@nav_dispaly_project_label = 1 %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
@ -25,170 +24,174 @@
|
|||
<div id="wrapper">
|
||||
<div id="wrapper2">
|
||||
<div id="wrapper3">
|
||||
<%=render :partial => 'layouts/base_header'%>
|
||||
<%= 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;">
|
||||
软件项目托管社区
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 430px; color: #15bccf">
|
||||
<strong><%= l(:label_user_location) %> : </strong>
|
||||
</td>
|
||||
<td class="info_font" style="width: 240px;" rowspan="2"><a href="http://<%= Setting.host_name%>" style="color: #15bccf;"> 软件项目托管社区 </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;
|
||||
}
|
||||
}
|
||||
<div class="top-content-search">
|
||||
<script type="text/javascript">
|
||||
function regexName()
|
||||
{
|
||||
var name = $.trim($("#name").val());
|
||||
if(name.length == 0)
|
||||
{
|
||||
$("#project_name_span").text("<%= l(:label_search_conditions_not_null) %>
|
||||
");
|
||||
$("#project_name_span").css('color','#ff0000');
|
||||
$("#project_name_span").focus();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#project_name_span").text("");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function submitSerch()
|
||||
{
|
||||
if(regexName()){$("#project_search_form").submit();}
|
||||
}
|
||||
</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 />
|
||||
<span id="project_name_span" style="float: left"></span>
|
||||
<% end %>
|
||||
</div>
|
||||
</td>
|
||||
function submitSerch()
|
||||
{
|
||||
if(regexName()){$("#project_search_form").submit();}
|
||||
}
|
||||
</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 />
|
||||
<span id="project_name_span" style="float: left"></span>
|
||||
<% 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>
|
||||
<p class="top-content-list">
|
||||
<%= link_to l(:label_home),home_path %> >
|
||||
<%= link_to @project, project_path(@project) %>
|
||||
</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!-- 左边侧栏内容 -->
|
||||
<div id="sidebar">
|
||||
<div class="spaceleft">
|
||||
<div class="inf_user_image">
|
||||
<% @project = Project.find_by_id(@project.id)%>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<%= image_tag(url_to_avatar(@project), :class => 'avatar2') %>
|
||||
</td>
|
||||
<td>
|
||||
<% project_score = format("%.2f" ,project_scores(@project)).to_i%>
|
||||
<div class="info-course">
|
||||
<%= link_to @project.name, project_path(@project)%>
|
||||
</div>
|
||||
<div>
|
||||
<% if @project.project_type == 0 && project_score != 0 %>
|
||||
<%= l(:label_project_grade)%> :
|
||||
<%= link_to(project_score, {:controller => 'projects',
|
||||
:action => 'show_projects_score',
|
||||
:remote => true,
|
||||
:id => @project.id}, :style => "color: #EC6300;")%>
|
||||
<% end %>
|
||||
<!-- end -->
|
||||
</div>
|
||||
<div id="join_exit_project_div">
|
||||
<%= render 'layouts/join_exit_project' %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$(".subNav").click(function() {
|
||||
$(this).toggleClass("currentDd").siblings(".subNav").removeClass("currentDd")
|
||||
$(this).toggleClass("currentDt").siblings(".subNav").removeClass("currentDt")
|
||||
|
||||
<div class="user_fans">
|
||||
<table width="240" border="0">
|
||||
<tr align="center" width="80px">
|
||||
<% files_count = @project.attachments.count %>
|
||||
<% @project.versions.each do |version| %>
|
||||
<% files_count += version.attachments.count %>
|
||||
<% end %>
|
||||
<td class="font_index">
|
||||
<%=link_to "#{@project.members.count}", project_member_path(@project) %>
|
||||
</td>
|
||||
<td class="font_index">
|
||||
<%=link_to @project.watcher_users.count, :controller=>"projects", :action=>"watcherlist", :id => @project %>
|
||||
</td>
|
||||
<!-- 项目sidebar栏显示问题数目为项目总问题数排除已关闭和已解决的项目问题数,即排除3(已解决),5(已关闭)的 项目问题数 !-->
|
||||
<td class="font_index">
|
||||
<%=link_to "#{@project.issues.where('status_id in (1,2,4,6)').count}/#{@project.issues.count}", project_issues_path(@project) %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="font_aram">
|
||||
<td align="center" width="70px">
|
||||
<%= l(:label_member) %>
|
||||
</td>
|
||||
<td align="center" width="100px">
|
||||
<%= l(:label_user_watchered) %>
|
||||
</td>
|
||||
<td align="center" width="70px">
|
||||
<%= l(:label_project_issues) %>
|
||||
</td>
|
||||
<!-- <td align="center" width="58px"><%#= l(:label_attachment) %></td> -->
|
||||
</tr>
|
||||
</table>
|
||||
<div class="user_underline"></div>
|
||||
</div>
|
||||
<div class="inf_user_context">
|
||||
<div class="font_title_left">
|
||||
<%= l(:label_project_overview) %>
|
||||
// 修改数字控制速度, slideUp(500)控制卷起速度
|
||||
$(this).next(".navContent").slideToggle(500).siblings(".navContent").slideUp(500);
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<div class="project_left">
|
||||
<div class="project_info">
|
||||
<div class="pr_info_logo fl mr10 mb5">
|
||||
<%= image_tag(url_to_avatar(@project), :style => 'width:61px; height:61px;') %>
|
||||
</div>
|
||||
<div style="padding-bottom: 8px">
|
||||
<div class="font_lighter_sidebar" style="word-break:break-all;word-wrap: break-word;">
|
||||
<%= textilizable @project.description %>
|
||||
</div>
|
||||
<div class="created_on_project">
|
||||
<strong style="color: #15bccf">
|
||||
<%= l(:label_create_time) %>:
|
||||
</strong>
|
||||
<%= format_time(@project.created_on) %>
|
||||
</div>
|
||||
<div class="pr_info_id fl mb5">
|
||||
ID:<%= @project.id %>
|
||||
</div>
|
||||
<div class="user_underline"></div>
|
||||
</div>
|
||||
<!--tags-->
|
||||
<div class="user_fans">
|
||||
<!-- added by william -for tag -->
|
||||
<div class="user_tags">
|
||||
<div id="tags">
|
||||
<%= render :partial => 'tags/tag', :locals => {:obj => @project,:object_flag => "2"}%>
|
||||
</div>
|
||||
<!--关注、申请加入/退出项目-->
|
||||
<div id="join_exit_project_div">
|
||||
<%= render 'layouts/join_exit_project' %>
|
||||
</div>
|
||||
<!-- 项目得分 -->
|
||||
<div class="cl"></div>
|
||||
<div class="pr_info_name><%= link_to @project.name, project_path(@project) %>
|
||||
<% if !@project.is_public? %>
|
||||
<span class="img_private ">私有</span>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="cl"></div>
|
||||
<div class="pr_info_score">
|
||||
<% if @project.project_type == 0 %>
|
||||
<%= l(:label_project_grade)%> :
|
||||
<%= link_to(format("%.2f" ,project_scores(@project) ).to_i, {:controller => 'projects',
|
||||
:action => 'show_projects_score',
|
||||
:remote => true,
|
||||
:id => @project.id },
|
||||
:style => "color: #EC6300;")%>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="pr_info_foot">
|
||||
<%= l(:label_member) %>(<a class="info_foot_num" href="#" target="_blank"><%= link_to "#{@project.members.count}", project_member_path(@project) %></a>)
|
||||
<span>| </span><%= l(:label_user_watchered) %>(<a class="info_foot_num" href="#" target="_blank"><%= link_to @project.watcher_users.count, :controller=>"projects", :action=>"watcherlist", :id => @project %></a>)
|
||||
<span>| </span><%= l(:project_module_attachments) %>(<a class="info_foot_num" href="#" target="_blank"><%= link_to "#{@project.attachments.count}", project_files_path(@project) %></a>)</div>
|
||||
<div class="cl"></div>
|
||||
</div><!--项目信息 end-->
|
||||
|
||||
<div class="subNavBox">
|
||||
<% if User.current.member_of?(@project) %>
|
||||
<div class="subNav currentDd currentDt subNav_jiantou">邀请</div>
|
||||
<ul class="navContent " style="display:block; padding-left: 0px; margin-top:0px;">
|
||||
<li><%= link_to "发送邮件邀请新用户", :controller=>"projects", :action=>"invite_members_by_mail", :id => @project %></li>
|
||||
<li><%= link_to "邀请Trustie注册用户", :controller=>"projects", :action=>"invite_members", :id => @project %></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<div class="subNav">
|
||||
<%= link_to "动态", {:controller => 'projects', :action => 'show', :id => @project.id}, :style => "color:#3CA5C6" %>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<%= link_to "问题跟踪", project_issues_path(@project), :style => "color:#3CA5C6" %><span class="subnav_num">(<%= @project.issues.count %>)</span>
|
||||
<span>
|
||||
<% if User.current.logged? && User.current.member_of?(@project) %>
|
||||
<%= link_to "+发布问题", new_project_issue_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;" %></span>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<%= link_to "讨论区", project_boards_path(@project), :style => "color:#3CA5C6" %>
|
||||
<span class="subnav_num">(<%= @project.boards.first.topics.count %>)</span>
|
||||
<% if User.current.logged? && User.current.member_of?(@project) %>
|
||||
<%= link_to "+发贴", new_board_message_path(@project.boards.first), :layout => 'base_projects',:style => "font-size:12px;color:#fff; padding:1px 3px 3px 3px;height:18px;margin-top:4px;background:#28be6c;float:right;line-height:20px;" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<%= link_to "资源库", project_files_path(@project), :style => "color:#3CA5C6" %><span class="subnav_num">(<%= @project.attachments.count %>)</span>
|
||||
<% if User.current.logged? && User.current.member_of?(@project) %>
|
||||
<%= link_to "+上传资源", new_project_file_path(@project),:style => "font-size:12px;color:#fff; padding:1px 3px 3px 3px;height:18px;margin-top:3px;background:#28be6c;float:right;line-height:20px;" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<%= link_to "版本库", {:controller => 'repositories', :action => 'show', :id => @project.id}, :style => "color:#3CA5C6" %>
|
||||
<span class="subnav_num">(<%= @project.repositories.count %>)</span>
|
||||
<% if User.current.logged? && User.current.member_of?(@project) %>
|
||||
<%= link_to "+创建版本库", new_project_repository_path(@project),:style => "font-size:12px;color:#fff; padding:1px 3px 3px 3px;height:18px;margin-top:3px;background:#28be6c;float:right;line-height:20px;" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="subNav subNav_jiantou">更多</div>
|
||||
<ul class="navContent" style="padding-left: 0px">
|
||||
<%= render 'projects/tools_expand' %>
|
||||
</ul>
|
||||
</div><!--项目侧导航 end-->
|
||||
<div class="cl"></div>
|
||||
<div class="project_intro">
|
||||
<h4 class="project_h4">项目简介:</h4><%= @project.description %>
|
||||
<div class="lg-foot">
|
||||
展开更多信息 <span class="g-arr-down"><img src="/images/new_project/jiantou.jpg" width="12" height="6" /></span>
|
||||
</div>
|
||||
</div><!--项目简介 end-->
|
||||
<div class="project_Label">
|
||||
<h4 class="project_h4">标签:</h4>
|
||||
<div class="tag_h" >
|
||||
<div class="user_tags">
|
||||
<div id="tags">
|
||||
<%= render :partial => 'tags/project_tag', :locals => {:obj => @project,:object_flag => "2"}%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cl"></div>
|
||||
</div><!--项目标签 end-->
|
||||
</div>
|
||||
<!--tool-->
|
||||
<div class="user_underline"></div>
|
||||
<div class="tool">
|
||||
<%= render 'projects/tools_expand' %>
|
||||
</div>
|
||||
<div class="user_underline"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div class="tabs_new">
|
||||
<%= render_main_menu(@project) %>
|
||||
</div>
|
||||
|
||||
<%= render_flash_messages %>
|
||||
<%= yield %>
|
||||
<%= call_hook :view_layouts_base_content %>
|
||||
|
|
|
@ -6,6 +6,10 @@
|
|||
<span style="float: left; width: 526px">
|
||||
<p><%= @subject %> </p>
|
||||
<p> <%= link_to @project_url, @project_url%></p>
|
||||
<p>点击链接后,将自动为您注册账号</p>
|
||||
<p>您的账号为:<%= @email %></p>
|
||||
<p>密码为: <%= @password %></p>
|
||||
|
||||
</span>
|
||||
</li>
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= l(:label_news) %></h2>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function regexTitle()
|
||||
{
|
||||
|
@ -66,15 +69,11 @@
|
|||
label_tips = l(:label_news)
|
||||
end
|
||||
%>
|
||||
|
||||
<span style="font-size: 16px; border-bottom:1px solid #f0f0f0; margin-right: 15px;">
|
||||
<%= label_tips %>
|
||||
</span>
|
||||
<% if @project.enabled_modules.where("name = 'news'").count > 0 %>
|
||||
<%= link_to(btn_tips,
|
||||
new_project_news_path(@project),
|
||||
:class => 'icon icon-add',
|
||||
:onclick => 'showAndScrollTo("add-news", "news_title"); return false;') %>
|
||||
<% if @project.enabled_modules.where("name = 'news'").count > 0 && User.current.member_of?(@project) %>
|
||||
<%= link_to(btn_tips,
|
||||
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;">
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= l(:label_news) %></h2>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function regexTitle()
|
||||
{
|
||||
|
|
|
@ -4,9 +4,14 @@
|
|||
<input type="text" maxlength="100" name="polls_name" id="polls_title" value="<%= @poll.polls_name %>" class="input_title" placeholder="问卷标题"/>
|
||||
</div>
|
||||
<div class="ur_title_editor_prefix">
|
||||
<textarea name="polls_description" maxlength="300" id="polls_description" class="textarea_editor"><%= @poll.polls_description%></textarea>
|
||||
<div contenteditable="true" id="polls_description_div" class="ur_textbox" style="min-height: 150px;width: 100%;background-color: #ffffff" onkeyup="edit_head();">
|
||||
<%= @poll.polls_description.nil? ? "" : @poll.polls_description.html_safe%>
|
||||
</div>
|
||||
<textarea name="polls_description" maxlength="300" id="polls_description" class="textarea_editor" style="display: none">
|
||||
<%= @poll.polls_description%>
|
||||
</textarea>
|
||||
</div>
|
||||
<div class="ur_editor_footer">
|
||||
<div class="ur_editor_footer" style="padding-top: 10px;">
|
||||
<a class="btn_submit" data-button="ok" onclick="pollsSubmit($(this));">
|
||||
<%= l(:label_button_ok)%>
|
||||
</a>
|
||||
|
|
|
@ -7,6 +7,11 @@
|
|||
<%#= javascript_include_tag "polls" %>
|
||||
|
||||
<script type="text/javascript">
|
||||
//编辑问卷描述之后
|
||||
function edit_head(){
|
||||
$("#polls_description").val($("#polls_description_div").html());
|
||||
}
|
||||
|
||||
function add_MC(){
|
||||
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_MC') %>");
|
||||
$("#poll_questions_title").focus();
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
<h1 class="ur_page_title" id="polls_name_h">
|
||||
<%= poll.polls_name%>
|
||||
</h1>
|
||||
<p class="ur_prefix_content" id="polls_description_p">
|
||||
<%= @poll.polls_description%>
|
||||
</p>
|
||||
<%= @poll.polls_description.nil? ? "" : @poll.polls_description.html_safe%>
|
||||
<div class="cl"></div>
|
||||
</div><!--头部显示 end-->
|
|
@ -1,6 +1,6 @@
|
|||
$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>");
|
||||
$('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_memo_create_succ)}) %>");
|
||||
showModal('ajax-modal', '180px');
|
||||
showModal('ajax-modal', '250px');
|
||||
$('#ajax-modal').css('height','111px');
|
||||
$('#ajax-modal').siblings().remove();
|
||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>");
|
||||
$('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_poll_republish_success)}) %>");
|
||||
showModal('ajax-modal', '180px');
|
||||
showModal('ajax-modal', '250px');
|
||||
$('#ajax-modal').css('height','80px');
|
||||
$('#ajax-modal').siblings().remove();
|
||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<%= @poll.polls_name%>
|
||||
</h1>
|
||||
<p class="ur_prefix_content">
|
||||
<%= @poll.polls_description %>
|
||||
<%= @poll.polls_description.html_safe %>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
$("#polls_title").val("<%= @poll.polls_name%>");
|
||||
$("#polls_description").val("<%= @poll.polls_description %>");
|
||||
$("#polls_name_h").html("<%= @poll.polls_name %>");
|
||||
$("#polls_description_p").html("<%= @poll.polls_description %>");
|
||||
$("#polls_head_show").html("<%= escape_javascript(render :partial => 'show_head', :locals => {:poll => @poll}) %>");
|
||||
$("#polls_head_edit").html("<%= escape_javascript(render :partial => 'edit_head', :locals => {:poll => @poll}) %>");
|
||||
$("#polls_head_edit").hide();
|
||||
$("#polls_head_show").show();
|
|
@ -0,0 +1,18 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">邀请加入</h2>
|
||||
</div>
|
||||
<div class="floatbox" style="margin:120px;">
|
||||
<div ><a href="#" class="box_close"></a></div>
|
||||
<div class="cl"></div>
|
||||
<div class="box_main">
|
||||
<h3 class="box_h3">发送邮件邀请新用户</h3>
|
||||
<p class="box_p">输入好友邮箱地址,Trustie帮您免费发送!</p>
|
||||
<p style="padding-lef:20px;"><%= form_tag('send_mail_to_member', :controller => 'projects',:action => 'send_mail_to_member', method: 'get',:remote=>true) do %></p>
|
||||
<%= text_field_tag 'mail', '邮箱', :class => "fb_item fl" %>
|
||||
<div class="cl"></div>
|
||||
<%= submit_tag '免费发送', :style=> "display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;" %>
|
||||
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
</div>
|
|
@ -0,0 +1,107 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">动态</h2>
|
||||
</div>
|
||||
<% if @events_by_day.size >0 %>
|
||||
<div class="content-title-top-avtive">
|
||||
<p class="subtitle">
|
||||
<% # 暂时隐藏时间的显示%>
|
||||
<%#= l(:label_date_from_to, :start => format_date(@date_to - @days), :end => format_date(@date_to-1)) %>
|
||||
</p>
|
||||
|
||||
<% @events_by_day.keys.sort.reverse.each do |day| %>
|
||||
<% sort_activity_events(@events_by_day[day]).each do |e, in_group| -%>
|
||||
<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.event_author), :class => "avatar") %>
|
||||
</div>
|
||||
<div class="activity-content" style="padding:5px 5px 5px 70px;margin-top:10px;">
|
||||
<strong> <%= h(e.project) if @project.nil? || @project.id != e.project.id %></strong>
|
||||
<span class="activity-title font_lighter">
|
||||
<% if @canShowRealName %>
|
||||
<%= link_to_user(e.event_author) if e.respond_to?(:event_author) %>
|
||||
(<%= link_to_user(e.event_author, @canShowRealName) if e.respond_to?(:event_author) %>)
|
||||
<% else %>
|
||||
<%= link_to_user(e.event_author) if e.respond_to?(:event_author) %>
|
||||
<% end %>
|
||||
<%= l(:label_new_activity) %>
|
||||
</span>
|
||||
<%= link_to "#{eventToLanguageCourse(e.event_type, @project)}: "<< format_activity_title(e.event_title), (e.event_type.eql?("attachment")&&e.container.kind_of?(Project)) ? project_files_path(e.container) : e.event_url %>
|
||||
|
||||
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;">
|
||||
<%= textAreailizable e,:event_description %>
|
||||
<%#= h(truncate(strip_tags(e.event_description).gsub(/ /, ' '), length: 30, omission: '...')) %>
|
||||
</div>
|
||||
<div class="activity_status" style="position:relative; padding-top: 3px;">
|
||||
<span class="font_lighter"> <%= l :label_activity_time %>
|
||||
: <%= format_activity_day(day) %> <%= format_time(e.event_datetime, false) %></span>
|
||||
<% if e.event_type == "issue" %>
|
||||
<div class="" style="display:inline-block;position:absolute; right:2%;">
|
||||
<span> <%= link_to l(:label_find_all_comments), issue_path(e) %> </span><span class="font_lighter"><%= l(:label_comments_count, :count => e.journals.count) %></span>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
<% end -%>
|
||||
<% if (@events_pages.page == @events_pages.last_page) %>
|
||||
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;">
|
||||
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;">
|
||||
<%= image_tag(url_to_avatar(@user), :class => "avatar") %>
|
||||
</div>
|
||||
<div class="activity-content" style="padding:5px 5px 5px 70px;">
|
||||
<span class="activity-title font_lighter">
|
||||
<% if @canShowRealName %>
|
||||
(<%= link_to_user(@user, @canShowRealName) %>
|
||||
)
|
||||
<% else %>
|
||||
<%= link_to_user(@user) %>
|
||||
<% end %>
|
||||
<%#= l(:label_new_activity) %>
|
||||
</span>
|
||||
<%= l(:label_user_create_project) %> <%= link_to @project.name %>
|
||||
<strong> !</strong>
|
||||
<div class="activity_description info-break" style="font-size: 13px;">
|
||||
</div>
|
||||
<div class="activity_status" style="position:relative; padding-top: 3px;">
|
||||
<span class="font_lighter"><%= l :label_activity_time %>: <%= format_time(@project.created_on) %></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;">
|
||||
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;">
|
||||
<%= image_tag(url_to_avatar(@user), :class => "avatar") %>
|
||||
</div>
|
||||
<div class="activity-content" style="padding:5px 5px 5px 70px;">
|
||||
<span class="activity-title font_lighter">
|
||||
<% if @canShowRealName %>
|
||||
(<%= link_to_user(@user, @canShowRealName) %>
|
||||
)
|
||||
<% else %>
|
||||
<%= link_to_user(@user) %>
|
||||
<% end %>
|
||||
<%#= l(:label_new_activity) %>
|
||||
</span>
|
||||
<%= l(:label_user_create_project) %> <%= link_to @project.name %>
|
||||
<strong> !</strong>
|
||||
<div class="activity_description info-break" style="font-size: 13px;">
|
||||
</div>
|
||||
<div class="activity_status" style="position:relative; padding-top: 3px;">
|
||||
<span class="font_lighter"><%= l :label_activity_time %>: <%= format_time(@project.created_on) %></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
<div class="pagination">
|
||||
<ul>
|
||||
<%= pagination_links_full @events_pages %>
|
||||
</ul>
|
||||
</div>
|
||||
<% html_title(l(:label_overview)) -%>
|
||||
|
|
@ -1,39 +1,30 @@
|
|||
<div class="font_title_left">
|
||||
<%= l(:label_project_tool)%>
|
||||
</div>
|
||||
<li>
|
||||
<% if User.current.admin? || User.current.allowed_to?({:controller => 'projects', :action => 'settings'}, @project) %>
|
||||
<%= link_to l(:label_settings), settings_project_path(@project) %>
|
||||
<% end %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to l(:field_user_active_news), project_news_index_path(@project) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to l(:project_module_wiki), project_wiki_path(@project) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to l(:project_module_code_review), {controller: 'code_review', action: 'index', id: @project.id} %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to l(:project_module_calendar),project_calendar_path(@project) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to l(:project_module_gantt) ,project_gantt_path(@project) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to l(:project_module_documents), project_documents_path(@project) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to l(:label_project_tool_response) ,project_feedback_path(@project)%>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to l(:label_module_share) ,share_show_path(@project) %>
|
||||
</li>
|
||||
|
||||
<div class="tools ">
|
||||
<ul><h3>项目交流</h3>
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:label_project_tool_response) ,project_feedback_path(@project)%></li>
|
||||
<% if @project.enabled_modules.where("name = 'files'").count > 0 %>
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:project_module_files) ,project_files_path(@project) %></li>
|
||||
<% end %>
|
||||
<% if @project.enabled_modules.where("name = 'wiki'").count > 0 %>
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:project_module_wiki), project_wiki_path(@project) %></li>
|
||||
<% end %>
|
||||
<% if @project.enabled_modules.where("name = 'code_review'").count > 0 %>
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:project_module_code_review), {controller: 'code_review', action: 'index', id: @project.id} %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<ul><h3>进度跟踪</h3>
|
||||
<% if @project.enabled_modules.where("name = 'calendar'").count > 0 %>
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:project_module_calendar),project_calendar_path(@project) %></li>
|
||||
<% end %>
|
||||
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:label_roadmap) ,project_roadmap_path(@project) %></li>
|
||||
<% if @project.enabled_modules.where("name = 'gantt'").count > 0 %>
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:project_module_gantt) ,project_gantt_path(@project) %></li>
|
||||
<% end %>
|
||||
|
||||
</ul>
|
||||
<ul><h3>其他工具</h3>
|
||||
<% if @project.enabled_modules.where(" name = 'dts'").count > 0 %>
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:label_module_share) ,share_show_path(@project) %></li>
|
||||
<% end %>
|
||||
<% if @project.enabled_modules.where(" name = 'documents'").count > 0 %>
|
||||
<li style="background: url('http://<%= Setting.host_name %>/images/sidebar/tool_tag_alpha.png') no-repeat scroll 10px 30% transparent;"><%= link_to l(:project_module_documents), project_documents_path(@project) %></li>
|
||||
<% end %>
|
||||
<li></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">用户反馈</h2>
|
||||
</div>
|
||||
<% reply_allow = JournalsForMessage.create_by_user? User.current %>
|
||||
<%= stylesheet_link_tag 'css', :media => 'all' %>
|
||||
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">邀请加入</h2>
|
||||
</div>
|
||||
<%= error_messages_for 'member' %>
|
||||
<%
|
||||
roles = Role.givable.all
|
||||
if @project.project_type == Project::ProjectType_course
|
||||
roles = roles[3..5]
|
||||
else
|
||||
roles = roles[0..2]
|
||||
end
|
||||
members = @project.member_principals.includes(:roles, :principal).all.sort
|
||||
%>
|
||||
|
||||
<div style="margin-left: 30px" >
|
||||
<div class="floatbox" style="margin:100px;">
|
||||
<div ><a href="#" class="box_close"></a></div>
|
||||
<div class="cl"></div>
|
||||
<div class="box_main">
|
||||
<h3 class="box_h3">邀请Trustie注册用户</h3>
|
||||
<% if roles.any? %>
|
||||
<%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %>
|
||||
|
||||
<div class="invi_search">
|
||||
<%= label_tag "principal_search", l(:label_principal_search) %>
|
||||
<%= text_field_tag 'principal_search', nil %>
|
||||
<%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %>
|
||||
|
||||
<div id="principals_for_new_member">
|
||||
<%= render_principals_for_new_members(@project) %>
|
||||
</div>
|
||||
<p style="padding-top: 5px">
|
||||
<%= l(:label_role_plural) %>:
|
||||
<% roles.each do |role| %>
|
||||
<label>
|
||||
<%= check_box_tag 'membership[role_ids][]', role.id %>
|
||||
<%= h role %>
|
||||
</label>
|
||||
<% end %>
|
||||
</p>
|
||||
<p>
|
||||
<%= submit_tag l(:label_invite_members), :id => 'member-add-submit', :style => 'display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;' %>
|
||||
</p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
var collection=$("#principals_for_new_member").children("#principals").children("label");
|
||||
collection.css("text-overflow","ellipsis");
|
||||
collection.css("white-space","nowrap");
|
||||
collection.css("width","200px");
|
||||
collection.css("overflow","hidden");
|
||||
for(i=0;i<collection.length;i++){ //增加悬浮显示
|
||||
var label=collection[i];
|
||||
var text=$(label).text();
|
||||
$(label).attr("title",text);
|
||||
}
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1 @@
|
|||
<%= render :partial => "invite_members_by_mail"%>
|
|
@ -0,0 +1,10 @@
|
|||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'invite_members_by_mail') %>');
|
||||
showModal('ajax-modal', '513px');
|
||||
$('#ajax-modal').css('height','569px');
|
||||
$('#ajax-modal').siblings().remove();
|
||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;padding-left: 513px;'>" +
|
||||
"<a href='#' onclick='hidden_homework_atert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||
$('#ajax-modal').parent().removeClass("alert_praise");
|
||||
$('#ajax-modal').parent().css("top","").css("left","");
|
||||
$('#ajax-modal').parent().addClass("alert_box");
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
|
||||
<div class="member_header">
|
||||
<p>
|
||||
<%= @subPage_title %>
|
||||
</p>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= @subPage_title %></h2>
|
||||
</div>
|
||||
<div class="member_content">
|
||||
<%= error_messages_for 'member' %>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@nav_dispaly_forum_label = 1 %>
|
||||
|
||||
<%= labelled_form_for @project do |f| %>
|
||||
<h3><%=l(:label_project_new)%></h3>
|
||||
<div class="project_new"><%=l(:label_project_new)%><span class="description"> <%=raw l(:label_project_new_description)%></span>
|
||||
<div class="box tabular" >
|
||||
<p style="font-weight: bold; color: rgb(237,137,36)">
|
||||
<%=raw l(:label_project_new_description)%>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<h3><%=l(:label_settings)%></h3>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%=l(:label_settings)%></h2>
|
||||
</div>
|
||||
<% if @project.project_type == 1 %>
|
||||
<%= render_tabs course_settings_tabs %>
|
||||
<% else %>
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<!-- <h3>测试结果</h3> -->
|
||||
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2">DTS测试</h2>
|
||||
</div>
|
||||
<p id="stcloud" style="padding-bottom: 5px">
|
||||
<a href="http://www.trustie.net/webdts/" style="float:right" target="_blank"><strong>进入测试平台</strong></a>
|
||||
</p>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= l(:label_activity) %></h2>
|
||||
</div>
|
||||
<%= javascript_include_tag "jquery.infinitescroll.js" %>
|
||||
<script>
|
||||
/* $(document).ready(function (){ //别忘了加这句,除非你没学Jquery
|
||||
|
@ -18,9 +21,10 @@
|
|||
<div class="scroll">
|
||||
<% unless @events_pages.empty? %>
|
||||
<% @events_pages.each do |e| -%>
|
||||
<% act = e.forge_act %>
|
||||
<% act = e.forge_act;
|
||||
next if act.nil? %>
|
||||
<% if e.forge_act_type == "Issue" %>
|
||||
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;width: 100%;word-wrap: break-word;word-break: break-all;">
|
||||
<div class="activity-item underline-evreycontent" style="font-size: 14px;line-height:1.5em;width: 100%;word-wrap: break-word;word-break: break-all;margin-top: 10px;">
|
||||
<div class="activity-avatar" style="float: left; margin:3px; height: 100%;">
|
||||
<%= image_tag(url_to_avatar(act.author), :class => "avatar") %>
|
||||
</div>
|
||||
|
@ -106,7 +110,9 @@
|
|||
<%= link_to(h(e.user), user_path(e.user_id)) %>
|
||||
<%= l(:label_new_activity) %>
|
||||
</span>
|
||||
<%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %>
|
||||
<% unless act.nil? %>
|
||||
<%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %>
|
||||
<% end %>
|
||||
<div class="activity_description info-break" style="font-size: 13px;width: 100%;word-break: break-all;word-wrap: break-word;">
|
||||
<%= textAreailizable act,:description %>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<!--add by huang-->
|
||||
<h3><%= l(:label_user_watcher)%></h3>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= l(:label_user_watcher)%></h2>
|
||||
</div>
|
||||
<div class="inf_user_image">
|
||||
<% for user in @project.watcher_users %> <!-- @project.watcher_users.count -->
|
||||
<ul class="list_watch">
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<h3><%= l(:label_repository_new) %></h3>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= l(:label_repository_new_repos) %></h2>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//var re=new RegExp(strRegex);
|
||||
function createVersion(){
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<%= call_hook(:view_repositories_show_contextual, { :repository => @repository, :project => @project }) %>
|
||||
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2">版本库</h2>
|
||||
</div>
|
||||
<div class="contextual" style="padding-right: 10px;">
|
||||
<%= render :partial => 'navigation' %>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
<div id="tags_show">
|
||||
<%= render :partial => "tags/tag_name",:locals => {:obj => obj,:non_list_all => false ,:object_flag => object_flag} %>
|
||||
</div>
|
||||
<% if User.current.logged? %>
|
||||
<span> <%= toggle_link ("+ 添加标签"), 'put-tag-form', {:focus => 'tags_name'} %> </span>
|
||||
<% end %>
|
||||
<div id="put-tag-form" style="display: none;text-align: center">
|
||||
<%= form_for "tag_for_save",:remote=>true,:url=>tag_path,
|
||||
:update => "tags_show",
|
||||
:complete => '$("#put-tag-form").slideUp();' do |f| %>
|
||||
<%= f.text_field :name ,:id => "tags_name",:size=>"20",
|
||||
:require=>true,
|
||||
:maxlength => Setting.tags_max_length,
|
||||
:minlength=>Setting.tags_min_length %>
|
||||
<%= f.text_field :object_id,:value=> obj.id,:style=>"display:none"%>
|
||||
<%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%>
|
||||
<a href="#" onclick='$("#tags_name").parent().submit();' type="button" class="submit f_l" style="margin-top: 10px;"></a>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
@ -94,9 +94,13 @@
|
|||
<% @organization_projects.map do |project| %>
|
||||
<%= render :partial => 'hot_projects_list', :locals => {:project => project} %>
|
||||
<% end %>
|
||||
<div id="errorExplanation">
|
||||
<%= l(:label_part_enterprise_tips) %>
|
||||
</div>
|
||||
<li>
|
||||
<h1></h1>
|
||||
<div id="errorExplanation">
|
||||
<%= l(:label_part_enterprise_tips) %>
|
||||
</div>
|
||||
<h1></h1>
|
||||
</li>
|
||||
<% @part_projects.map do |project| %>
|
||||
<%= render :partial => 'hot_projects_list', :locals => {:project => project} %>
|
||||
<% end %>
|
||||
|
|
|
@ -1,39 +1,42 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">Wiki</h2>
|
||||
</div>
|
||||
<div class="contextual">
|
||||
<% if @editable %>
|
||||
<% if @content.current_version? %>
|
||||
<%= link_to_if_authorized(l(:button_edit), {:action => 'edit', :id => @page.title}, :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %>
|
||||
<%= watcher_link(@page, User.current) %>
|
||||
<%#= link_to_if_authorized(l(:button_lock), {:action => 'protect', :id => @page.title, :protected => 1}, :method => :post, :class => 'icon icon-lock') if !@page.protected? %>
|
||||
<%#= link_to_if_authorized(l(:button_unlock), {:action => 'protect', :id => @page.title, :protected => 0}, :method => :post, :class => 'icon icon-unlock') if @page.protected? %>
|
||||
<%#= link_to_if_authorized(l(:button_rename), {:action => 'rename', :id => @page.title}, :class => 'icon icon-move') %>
|
||||
<%= link_to_if_authorized(l(:button_delete), {:action => 'destroy', :id => @page.title}, :method => :delete, :data => {:confirm => l(:text_are_you_sure)}, :class => 'icon icon-del') %>
|
||||
<% else %>
|
||||
<%= link_to_if_authorized(l(:button_rollback), {:action => 'edit', :id => @page.title, :version => @content.version }, :class => 'icon icon-cancel') %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= link_to_if_authorized(l(:label_history), {:action => 'history', :id => @page.title}, :class => 'icon icon-history') %>
|
||||
<% if @editable %>
|
||||
<% if @content.current_version? %>
|
||||
<%= link_to_if_authorized(l(:button_edit), {:action => 'edit', :id => @page.title}, :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %>
|
||||
<%= watcher_link(@page, User.current) %>
|
||||
<%#= link_to_if_authorized(l(:button_lock), {:action => 'protect', :id => @page.title, :protected => 1}, :method => :post, :class => 'icon icon-lock') if !@page.protected? %>
|
||||
<%#= link_to_if_authorized(l(:button_unlock), {:action => 'protect', :id => @page.title, :protected => 0}, :method => :post, :class => 'icon icon-unlock') if @page.protected? %>
|
||||
<%#= link_to_if_authorized(l(:button_rename), {:action => 'rename', :id => @page.title}, :class => 'icon icon-move') %>
|
||||
<%= link_to_if_authorized(l(:button_delete), {:action => 'destroy', :id => @page.title}, :method => :delete, :data => {:confirm => l(:text_are_you_sure)}, :class => 'icon icon-del') %>
|
||||
<% else %>
|
||||
<%= link_to_if_authorized(l(:button_rollback), {:action => 'edit', :id => @page.title, :version => @content.version }, :class => 'icon icon-cancel') %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= link_to_if_authorized(l(:label_history), {:action => 'history', :id => @page.title}, :class => 'icon icon-history') %>
|
||||
</div>
|
||||
<%= wiki_page_breadcrumb(@page) %>
|
||||
<% unless @content.current_version? %>
|
||||
<p>
|
||||
<%= link_to(("\xc2\xab " + l(:label_previous)),
|
||||
:action => 'show', :id => @page.title, :project_id => @page.project,
|
||||
:version => @content.previous.version) + " - " if @content.previous %>
|
||||
<%= "#{l(:label_version)} #{@content.version}/#{@page.content.version}" %>
|
||||
<%= '('.html_safe + link_to(l(:label_diff), :controller => 'wiki', :action => 'diff',
|
||||
:id => @page.title, :project_id => @page.project,
|
||||
:version => @content.version) + ')'.html_safe if @content.previous %> -
|
||||
<%= link_to((l(:label_next) + " \xc2\xbb"), :action => 'show',
|
||||
:id => @page.title, :project_id => @page.project,
|
||||
:version => @content.next.version) + " - " if @content.next %>
|
||||
<%= link_to(l(:label_current_version), :action => 'show', :id => @page.title, :project_id => @page.project, :version => nil) %>
|
||||
<br />
|
||||
<em>
|
||||
<%= @content.author ? link_to_user(@content.author) : l(:label_user_anonymous)%>,
|
||||
<%= format_time(@content.updated_on) %>
|
||||
</em>
|
||||
<br />
|
||||
<%=h @content.comments %>
|
||||
<%= link_to(("\xc2\xab " + l(:label_previous)),
|
||||
:action => 'show', :id => @page.title, :project_id => @page.project,
|
||||
:version => @content.previous.version) + " - " if @content.previous %>
|
||||
<%= "#{l(:label_version)} #{@content.version}/#{@page.content.version}" %>
|
||||
<%= '('.html_safe + link_to(l(:label_diff), :controller => 'wiki', :action => 'diff',
|
||||
:id => @page.title, :project_id => @page.project,
|
||||
:version => @content.version) + ')'.html_safe if @content.previous %> -
|
||||
<%= link_to((l(:label_next) + " \xc2\xbb"), :action => 'show',
|
||||
:id => @page.title, :project_id => @page.project,
|
||||
:version => @content.next.version) + " - " if @content.next %>
|
||||
<%= link_to(l(:label_current_version), :action => 'show', :id => @page.title, :project_id => @page.project, :version => nil) %>
|
||||
<br />
|
||||
<em>
|
||||
<%= @content.author ? link_to_user(@content.author) : l(:label_user_anonymous)%>,
|
||||
<%= format_time(@content.updated_on) %>
|
||||
</em>
|
||||
<br />
|
||||
<%=h @content.comments %>
|
||||
</p>
|
||||
<hr />
|
||||
<% end %>
|
||||
|
@ -41,31 +44,31 @@
|
|||
<%= link_to_attachments @page %>
|
||||
<% if @editable && authorize_for('wiki', 'add_attachment') %>
|
||||
<div id="wiki_add_attachment">
|
||||
<p>
|
||||
<%= link_to l(:label_attachment_new), {}, :onclick => "$('#add_attachment_form').show(); return false;",
|
||||
:id => 'attach_files_link' %></p>
|
||||
<p>
|
||||
<%= link_to l(:label_attachment_new), {}, :onclick => "$('#add_attachment_form').show(); return false;",
|
||||
:id => 'attach_files_link' %></p>
|
||||
<%= form_tag({:controller => 'wiki', :action => 'add_attachment',
|
||||
:project_id => @project, :id => @page.title},
|
||||
:multipart => true, :id => "add_attachment_form",
|
||||
:style => "display:none;") do %>
|
||||
<div class="box">
|
||||
<p>
|
||||
<%= render :partial => 'attachments/form' %>
|
||||
</p>
|
||||
</div>
|
||||
<%= submit_tag l(:button_add) %>
|
||||
<%= link_to l(:button_cancel), {}, :onclick => "$('#add_attachment_form').hide(); return false;" %>
|
||||
:project_id => @project, :id => @page.title},
|
||||
:multipart => true, :id => "add_attachment_form",
|
||||
:style => "display:none;") do %>
|
||||
<div class="box">
|
||||
<p>
|
||||
<%= render :partial => 'attachments/form' %>
|
||||
</p>
|
||||
</div>
|
||||
<%= submit_tag l(:button_add) %>
|
||||
<%= link_to l(:button_cancel), {}, :onclick => "$('#add_attachment_form').hide(); return false;" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% other_formats_links do |f| %>
|
||||
<%= f.link_to 'PDF', :url => {:id => @page.title, :version => params[:version]} %>
|
||||
<%= f.link_to 'HTML', :url => {:id => @page.title, :version => params[:version]} %>
|
||||
<%= f.link_to 'TXT', :url => {:id => @page.title, :version => params[:version]} %>
|
||||
<%= f.link_to 'PDF', :url => {:id => @page.title, :version => params[:version]} %>
|
||||
<%= f.link_to 'HTML', :url => {:id => @page.title, :version => params[:version]} %>
|
||||
<%= f.link_to 'TXT', :url => {:id => @page.title, :version => params[:version]} %>
|
||||
<% end if User.current.allowed_to?(:export_wiki_pages, @project) %>
|
||||
<% content_for :sidebar do %>
|
||||
<%= render :partial => 'sidebar' %>
|
||||
<%= render :partial => 'sidebar' %>
|
||||
<% end %>
|
||||
<% html_title @page.pretty_title %>
|
||||
|
||||
|
|
|
@ -47,11 +47,12 @@
|
|||
</div>
|
||||
|
||||
<% if User.current.logged? %>
|
||||
<% if @user.safe_attribute? 'user_message' %>
|
||||
<%= f.text_area 'user_message', :rows => 3, :cols => 65,
|
||||
:placeholder => "#{l(:label_leave_a_message)}",
|
||||
:style => "resize: none; width: 98%",
|
||||
:class => 'noline',:maxlength => 250%>
|
||||
|
||||
:class => 'noline'%>
|
||||
<% end %>
|
||||
<%= f.text_field :reference_user_id, :style=>"display:none"%>
|
||||
<%= submit_tag l(:button_leave_meassge), :name => nil , :class => "enterprise" , :style => "display: block; float: right; margin-right: 1%; margin-top: 1px;"%>
|
||||
<% else %>
|
||||
|
|
|
@ -23,10 +23,10 @@
|
|||
Kaminari.configure do |config|
|
||||
# config.default_per_page = 25
|
||||
# config.max_per_page = nil
|
||||
# config.window = 4
|
||||
config.window = 2
|
||||
# config.outer_window = 3
|
||||
# config.left = 0
|
||||
# config.right = 0
|
||||
# config.left = 2
|
||||
# config.right = 2
|
||||
# config.page_method_name = :page
|
||||
# config.param_name = :page
|
||||
end
|
||||
|
|
|
@ -522,6 +522,7 @@ zh:
|
|||
project_module_news: 新闻
|
||||
project_module_documents: 文档
|
||||
project_module_files: 作品下载
|
||||
project_module_attachments: 资源
|
||||
project_module_wiki: Wiki
|
||||
project_module_repository: 版本库
|
||||
project_module_boards: 讨论区
|
||||
|
@ -554,6 +555,8 @@ zh:
|
|||
label_organizer_name: 主办单位名称
|
||||
label_web_footer_description: 页脚内容
|
||||
label_cooperation_compnay: 合作单位
|
||||
label_version_number: 版本号
|
||||
label_version_description: 版本描述
|
||||
label_web_footer_cooperation_compnay: 网站页脚合作单位
|
||||
label_new_company: 添加合作单位
|
||||
label_edit_company: 编辑合作单位
|
||||
|
@ -1079,6 +1082,7 @@ zh:
|
|||
label_project_copy_notifications: 复制项目时发送邮件通知
|
||||
label_principal_search: "搜索用户或组:"
|
||||
label_user_search: "搜索用户:"
|
||||
label_mobile_version: "移动端版本管理"
|
||||
|
||||
button_check_all: 全选
|
||||
button_uncheck_all: 清除
|
||||
|
@ -1924,6 +1928,7 @@ zh:
|
|||
label_bids_task_list: 作业列表
|
||||
label_join_course: 加入
|
||||
label_invite_project: 邀请您加入项目
|
||||
label_invite_members: 邀请用户
|
||||
label_exit_course: 退出
|
||||
label_exit_group: 退出当前分班
|
||||
label_new_join: 加入
|
||||
|
@ -2355,7 +2360,7 @@ zh:
|
|||
|
||||
|
||||
# 项目托管平台 >新建项目
|
||||
label_project_new_description: '项目可以是软件开发项目,也可以是协作研究项目。'
|
||||
label_project_new_description: '(项目为您和您的团队提供一个面向分布式协作的专有空间,可以设置为公开或私有。)'
|
||||
field_name: 名称
|
||||
field_description: 描述
|
||||
field_identifier: 标识
|
||||
|
|
|
@ -368,6 +368,9 @@ RedmineApp::Application.routes.draw do
|
|||
|
||||
get 'feedback', :action => 'feedback', :as => 'project_feedback'
|
||||
get 'watcherlist', :action=> 'watcherlist'
|
||||
get 'invite_members', :action=> 'invite_members'
|
||||
get 'invite_members_by_mail', :action=> 'invite_members_by_mail'
|
||||
get 'send_mail_to_member', :action => 'send_mail_to_member'
|
||||
match 'user_watcherlist', :to => 'projects#watcherlist', :via => :get, :as => "watcherlist" #add by huang
|
||||
get 'homework', :action => 'homework', :as => 'homework'
|
||||
get 'new_homework', :action => 'new_homework', :as => 'new_homework'
|
||||
|
@ -641,6 +644,7 @@ RedmineApp::Application.routes.draw do
|
|||
match 'admin/contest_page_made', as: :contest_page_made
|
||||
match 'admin/web_footer_made', as: :web_footer_made
|
||||
match 'admin/enterprise_page_made', as: :enterprise_page_made
|
||||
match 'admin/mobile_version', as: :mobile_version
|
||||
match 'admin/search', :via => [:get, :post]
|
||||
match 'admin/plugins', :via => :get
|
||||
match 'admin/info', :via => :get
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
class CreatePhoneAppVersions < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :phone_app_versions do |t|
|
||||
t.string :version
|
||||
t.text :description
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20150305011359) do
|
||||
ActiveRecord::Schema.define(:version => 20150305081132) do
|
||||
|
||||
create_table "activities", :force => true do |t|
|
||||
t.integer "act_id", :null => false
|
||||
|
@ -822,6 +822,13 @@ ActiveRecord::Schema.define(:version => 20150305011359) do
|
|||
t.datetime "updated_at", :null => false
|
||||
end
|
||||
|
||||
create_table "phone_app_versions", :force => true do |t|
|
||||
t.string "version"
|
||||
t.text "description"
|
||||
t.datetime "created_at", :null => false
|
||||
t.datetime "updated_at", :null => false
|
||||
end
|
||||
|
||||
create_table "poll_answers", :force => true do |t|
|
||||
t.integer "poll_question_id"
|
||||
t.text "answer_text"
|
||||
|
|
|
@ -24,10 +24,6 @@ module Redmine
|
|||
|
||||
module ClassMethods
|
||||
def acts_as_activity_provider(options = {})
|
||||
# Time 2015-01-31 13:54:34
|
||||
# Author lizanle
|
||||
# Description mod.included_modules -> array
|
||||
# 返回mod包含的 modules数组
|
||||
unless self.included_modules.include?(Redmine::Acts::ActivityProvider::InstanceMethods)
|
||||
cattr_accessor :activity_provider_options
|
||||
send :include, Redmine::Acts::ActivityProvider::InstanceMethods
|
||||
|
|
|
@ -364,6 +364,7 @@ Redmine::MenuManager.map :admin_menu do |menu|
|
|||
menu.push :projects, {:controller => 'admin', :action => 'projects'}, :caption => :label_project_plural
|
||||
menu.push :users, {:controller => 'admin', :action => 'users'}, :caption => :label_user_plural
|
||||
menu.push :first_page_made, {:controller => 'admin',:action => 'first_page_made'},:caption => :label_first_page_made
|
||||
menu.push :mobile_version, {:controller => 'admin',:action => 'mobile_version'},:caption => :label_mobile_version
|
||||
menu.push :groups, {:controller => 'groups'}, :caption => :label_group_plural
|
||||
menu.push :roles, {:controller => 'roles'}, :caption => :label_role_and_permissions
|
||||
menu.push :trackers, {:controller => 'trackers'}, :caption => :label_tracker_plural
|
||||
|
|
|
@ -119,7 +119,7 @@ module Redmine
|
|||
#else
|
||||
# e += [cur_obj]
|
||||
#end
|
||||
if cur_obj.project != nil && cur_obj.project.project_status != nil && cur_obj.project.is_public == true
|
||||
if cur_obj.project.respond_to?("Project") && cur_obj.project != nil && cur_obj.project.project_status != nil && cur_obj.project.is_public == true
|
||||
e += [cur_obj]
|
||||
#else
|
||||
# e += [cur_obj]
|
||||
|
|
|
@ -20,7 +20,9 @@ module Redmine
|
|||
notifications << Notifiable.new('message_posted')
|
||||
notifications << Notifiable.new('wiki_content_added')
|
||||
notifications << Notifiable.new('wiki_content_updated')
|
||||
notifications << Notifiable.new('forum_message_added')
|
||||
notifications << Notifiable.new('forum_add')
|
||||
notifications << Notifiable.new('forum_message_added', 'forum_add')
|
||||
notifications
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -77,7 +77,7 @@ module Redmine #:nodoc:
|
|||
# Adds plugin locales if any
|
||||
# YAML translation files should be found under <plugin>/config/locales/
|
||||
::I18n.load_path += Dir.glob(File.join(p.directory, 'config', 'locales', '*.yml'))
|
||||
::I18n.load_path += Dir.glob(File.join(Rails.root, 'config', 'locales', '**', '*.yml'))
|
||||
|
||||
# Prepends the app/views directory of the plugin to the view path
|
||||
view_path = File.join(p.directory, 'app', 'views')
|
||||
if File.directory?(view_path)
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">代码审查</h2>
|
||||
</div>
|
||||
<%
|
||||
# Code Review plugin for Redmine
|
||||
# Copyright (C) 2009-2012 Haruyuki Iida
|
||||
|
@ -24,9 +27,6 @@ function change_option(flag) {
|
|||
}
|
||||
</script>
|
||||
<div id="code_review_list">
|
||||
<h2>
|
||||
<%=h l(:code_reviews) %>
|
||||
</h2>
|
||||
|
||||
<% if @all_review_count > 0 %>
|
||||
<p>
|
||||
|
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 958 B |
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 169 KiB |
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.5 KiB |
|
@ -7,7 +7,125 @@ h2, .wiki h1 {font-size: 20px;}
|
|||
h3, .wiki h2 {font-size: 15px; padding-left: 5px}
|
||||
h4, .wiki h3 {font-size: 13px;}
|
||||
h4 {border-bottom: 1px dotted #bbb;}
|
||||
/*huang*/
|
||||
|
||||
/*20150203项目界面优化样式 By: huangjignquan*/
|
||||
.project_new{font-size: 15px; padding: 5px;}
|
||||
.project_new .description{font-size: 12px; color: #ff7450; margin-bottom: 2px;}
|
||||
|
||||
/*20150205新的项目界面 By: huangjingquan*/
|
||||
ol,ul,li{ list-style-type:none}
|
||||
.cl{ clear:both; overflow:hidden; }
|
||||
a{ text-decoration:none; }
|
||||
.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_content{ width:940px; margin:10px auto;}
|
||||
.project_left{ float:left;}
|
||||
.project_right{ width:670px; float:left;background:#fff; padding:10px;}
|
||||
/*项目信息*/
|
||||
.project_info{ background:#fff; padding:10px 8px 0px 10px; width:222px;}
|
||||
.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;}
|
||||
.pr_info_name{ color:#3e4040; font-size:14px; line-height:1.5;}
|
||||
.pr_info_name a: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: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; font-size:12px }
|
||||
a:hover.info_foot_num{ color:#2390b2;}
|
||||
|
||||
/*左侧导航*/
|
||||
.subNavBox{width:222px; 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; float: right;}
|
||||
a.ml105{ margin-left:120px;}
|
||||
a:hover.subnav_green{ background:#14ad5a;}
|
||||
|
||||
/*简介*/
|
||||
.project_intro{ width:220px; padding:10px; background:#fff; padding-top:5px; color:#6d6d6d;}
|
||||
.lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;}
|
||||
.lg-foot:hover{ color:#787b7e;}
|
||||
/*右侧内容--动态*/
|
||||
|
||||
.project_r_h{ height:40px; background:#eaeaea; margin-bottom: 5px;}
|
||||
.project_h2{ background:#64bdd9; color:#fff; height:30px; width:90px; text-align:center; font-weight:normal; padding-top:3px; font-size:16px; padding-top:9px;}
|
||||
.project_r_box{ border:1px solid #e2e1e1; width:670px; margin-top:10px;}
|
||||
.project_h3 { color:#646464; font-size:14px; padding:0 10px; border-bottom:1px solid #e2e1e1;}
|
||||
a.more{ float:right; font-size:12px; font-weight:normal; color:#a9a9a9; margin-top:3px;}
|
||||
a:hover.more{ color:#64bdd9;}
|
||||
.project_box_ul{ padding:0 10px;}
|
||||
.project_box_list{ padding:10px 0; border-bottom:1px dashed #e2e1e1; padding-left:30px; color:#6f6c6c;}
|
||||
.img_problem{ background:url(../images/img_project.png) 0 -20px 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_edition{ background:url(../images/img_project.png) 0 -167px no-repeat;}
|
||||
.project_name{ color:#058c42;}
|
||||
.project_name:hover{ color:#016f33;}
|
||||
.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;}
|
||||
.project_txt:hover{ color:#066e9a;}
|
||||
.noline{ border-bottom:none;}
|
||||
|
||||
/*弹框*/
|
||||
.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;}
|
||||
.box_close:hover{background:url(../images/img_floatbox.png) -22px 0 no-repeat;}
|
||||
/*邮件邀请*/
|
||||
.box_main{ width:345px; margin:0 auto;padding-left:40px;}
|
||||
.box_h3{ color:#15bccf; text-align:center; font-size:16px;}
|
||||
.box_p{ color:#404040; margin-bottom:5px;}
|
||||
.fb_item{ color:#919191; border:1px solid #919191; height:28px; margin-bottom:10px; padding-left:5px; width:290px;}
|
||||
.icon_addm{ background:url(../images/img_floatbox.png) 0 -33px no-repeat; width:16px; height:16px; display:block; margin:5px 0 0 5px;}
|
||||
.icon_addm:hover{background:url(../images/img_floatbox.png) 0 -61px no-repeat; }
|
||||
.icon_removem{ background:url(../images/img_floatbox.png) -22px -33px no-repeat;width:16px; height:16px; display:block; margin:5px 0 0 5px}
|
||||
.icon_removem:hover{background:url(../images/img_floatbox.png) -22px -61px no-repeat;}
|
||||
.btn_free{ background:#ff5722; display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;}
|
||||
.btn_free:hover{ background:#d63502;}
|
||||
/*成员邀请*/
|
||||
.invi_search{ width:295px; margin:0 auto;}
|
||||
.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;}
|
||||
.invi_search_btn:hover{ background:#0da1b2; border:1px solid #0da1b2;}
|
||||
/*问题跟踪*/
|
||||
.problem_top{ margin:10px 0 ;}
|
||||
.problem_search_input{ border:1px solid #64bdd9; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
|
||||
.problem_search_btn{ background:#64bdd9; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #64bdd9; padding-top:2px; cursor:pointer;}
|
||||
.problem_search_btn:hover{ background:#3da1c1; border:1px solid #3da1c1;}
|
||||
.problem_new_btn{ margin-left:10px; border:1px solid #ff7143; color:#ff7143; width:60px; height:22px; text-align:center; padding-top:2px;}
|
||||
.problem_new_btn:hover{ background:#ff7143; color:#fff;}
|
||||
.problem_p{ color:#535252; margin-right: 8px;}
|
||||
.problem_p span{ color:#ff3e00;}
|
||||
.problem_pic{ display:block; width:42px; height:42px; padding:3px; border:1px solid #e3e3e3;}
|
||||
|
||||
|
||||
/****标签(和资源库的tag样式一致)***/
|
||||
.project_Label{ width:220px; padding:10px; background:#fff; margin-top:0px; padding-top:5px;}
|
||||
a.yellowBtn{ display:inline-block;color:#0d90c3; height:22px;}
|
||||
.submit{height:21px;border:0; cursor:pointer; background:url(../images/btn.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; }
|
||||
.isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;}
|
||||
.re_tag{ width: auto; padding:0 5px; height:22px; border:1px solid #f8df8c; background:#fffce6; margin-right:10px; }
|
||||
.re_tag a{ color:#0d90c3;}
|
||||
.tag_h span,.tag_h a{ margin-bottom:0px;}
|
||||
/*企业版样式*/
|
||||
.content_syqy{ width:940px; height:400px; border:1px;}
|
||||
.content_syqy .list{ font-size:14px; font-weight:normal; margin-left:10px; font-weight:bold; padding-top:10px}
|
||||
|
@ -51,7 +169,7 @@ a.syqy_wenzi{ padding-bottom:10px; border:1px solid red;}
|
|||
width: 940px;
|
||||
line-height: 1.2em;
|
||||
padding-top: 6px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
}
|
||||
|
||||
div.position-f{
|
||||
|
@ -850,10 +968,7 @@ ul.user_course_sort li{list-style-type:none;
|
|||
}
|
||||
|
||||
.user_tags{
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
padding:0px;
|
||||
}
|
||||
|
||||
.tool{
|
||||
|
@ -1690,7 +1805,7 @@ div.issue table.attributes td {width:28%;}
|
|||
#issue_tree td.checkbox, #relations td.checkbox {display:none;}
|
||||
#relations td.buttons {padding:0;}
|
||||
|
||||
fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
|
||||
fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; margin-top: 5px; }
|
||||
fieldset.collapsible>legend { padding-left: 16px; background:url(../images/arrow_collapsed.png) no-repeat 0% 40%; cursor:pointer; }
|
||||
fieldset.collapsible.collapsed>legend { background-image: url(../images/arrow_expanded.png); }
|
||||
|
||||
|
|
|
@ -0,0 +1,182 @@
|
|||
@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_content{ width:940px; margin:10px auto;}
|
||||
.project_left{ float:left;}
|
||||
.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;}
|
||||
.lg-foot{ border:1px solid #e8eef2; color: #929598; text-align:center; width:220px; height:23px; cursor:pointer;}
|
||||
.lg-foot:hover{ color:#787b7e;}
|
||||
/****标签(和资源库的tag样式一致)***/
|
||||
.project_Label{ width:220px; padding: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_h2{ background:#64bdd9; color:#fff; height:37px; width:90px; text-align:center; font-weight:normal; padding-top:3px; font-size:16px;}
|
||||
.project_r_box{ border:1px solid #e2e1e1; width:670px; margin-top:10px;}
|
||||
.project_h3 { color:#646464; font-size:14px; padding:0 10px; border-bottom:1px solid #e2e1e1;}
|
||||
a.more{ float:right; font-size:12px; font-weight:normal; color:#a9a9a9; margin-top:3px;}
|
||||
a:hover.more{ color:#64bdd9;}
|
||||
.project_box_ul{ padding:0 10px;}
|
||||
.project_box_list{ padding:10px 0; border-bottom:1px dashed #e2e1e1; padding-left:30px; color:#6f6c6c;}
|
||||
.img_problem{ background:url(../images/img_project.png) 0 -20px 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_edition{ background:url(../images/img_project.png) 0 -167px no-repeat;}
|
||||
.project_name{ color:#058c42;}
|
||||
.project_name:hover{ color:#016f33;}
|
||||
.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;}
|
||||
.project_txt:hover{ color:#066e9a;}
|
||||
.noline{ border-bottom:none;}
|
||||
|
||||
/*弹框*/
|
||||
.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;}
|
||||
.box_close:hover{background:url(../images/img_floatbox.png) -22px 0 no-repeat;}
|
||||
/*邮件邀请*/
|
||||
.box_main{ width:345px; margin:0 auto;}
|
||||
.box_h3{ color:#15bccf; text-align:center; font-size:16px;}
|
||||
.box_p{ color:#404040; margin-bottom:5px;}
|
||||
.fb_item{ color:#919191; border:1px solid #919191; height:28px; margin-bottom:10px; padding-left:5px; width:290px;}
|
||||
.icon_addm{ background:url(../images/img_floatbox.png) 0 -33px no-repeat; width:16px; height:16px; display:block; margin:5px 0 0 5px;}
|
||||
.icon_addm:hover{background:url(../images/img_floatbox.png) 0 -61px no-repeat; }
|
||||
.icon_removem{ background:url(../images/img_floatbox.png) -22px -33px no-repeat;width:16px; height:16px; display:block; margin:5px 0 0 5px}
|
||||
.icon_removem:hover{background:url(../images/img_floatbox.png) -22px -61px no-repeat;}
|
||||
.btn_free{ background:#ff5722; display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;}
|
||||
.btn_free:hover{ background:#d63502;}
|
||||
/*成员邀请*/
|
||||
.invi_search{ width:230px; margin:0 auto;}
|
||||
.invi_search_input{ border:1px solid #15bccf; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
|
||||
.invi_search_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;}
|
||||
/*问题跟踪*/
|
||||
.problem_top{ margin:10px 0 ;}
|
||||
.problem_search_input{ border:1px solid #64bdd9; width:180px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
|
||||
.problem_search_btn{ background:#64bdd9; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #64bdd9; padding-top:2px; cursor:pointer;}
|
||||
.problem_search_btn:hover{ background:#3da1c1; border:1px solid #3da1c1;}
|
||||
.problem_new_btn{ margin-left:10px; border:1px solid #ff7143; color:#ff7143; width:60px; height:22px; font-size:12px; text-align:center; padding-top:2px;}
|
||||
.problem_new_btn:hover{ background:#ff7143; color:#fff;}
|
||||
.problem_p{ color:#535252; margin-top:5px;}
|
||||
.problem_p span{ color:#ff3e00;}
|
||||
.problem_pic{ display:block; width:42px; height:42px; padding:3px; border:1px solid #e3e3e3; margin-top:5px;}
|
||||
.problem_pic:hover{border:1px solid #64bdd9;}
|
||||
.problem_txt{ width:610px; margin-left:10px; color:#777777;}
|
||||
.problem_name{ color:#ff5722;}
|
||||
.problem_name:hover{ color:#d33503;}
|
||||
.problem_tit{ color:#0781b4; width:430px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
|
||||
.problem_tit:hover{ color:#09658c; }
|
||||
.problem_main{ border-bottom:1px dashed #d4d4d4; padding-bottom:10px; margin-bottom:10px;}
|
||||
/****翻页***/
|
||||
.wlist{}
|
||||
.wlist a{ float:right; border:1px solid #64bdd9; padding:0 5px; margin-left:3px; color:#64bdd9;}
|
||||
.wlist a:hover{border:1px solid #64bdd9; background-color:#64bdd9; color:#fff; text-decoration:none;}
|
||||
.wlist_select a { background-color:#48aac9; color:#fff;}
|
||||
/****讨论区***/
|
||||
.talk_top{ margin:10px 0; font-size:14px; color:#4c4c4c;}
|
||||
.talk_top span{ color:#ff7143;}
|
||||
.talk_txt{ width:460px; margin-left:10px; color:#676868;}
|
||||
.talk_up{ color:#f63c00;}
|
||||
.talk_pic{width:32px; height:32px; padding:2px;}
|
||||
.talk_btn{ background:#64bdd9; width:50px; height:22px; color:#fff; text-align:center; margin-top:12px; padding-top:2px;}
|
||||
.talk_btn:hover{ background:#2a9dc1;}
|
||||
/****讨论区内页***/
|
||||
.mt0{ margin-top:0px;}
|
||||
.talk_info{ color:#7d7d7d; margin-left:50px; margin-top:10px;}
|
||||
.talk_edit{ color:#426e9a; margin-right:5px;}
|
||||
.talk_edit:hover{ color:#ff5722;}
|
||||
.talk_reply { background:#eeeeee; padding:10px; margin-bottom:10px;}
|
||||
.talk_text{ border:1px solid #64bdd9; width:600px; color:#7d7d7d; padding:5px; margin:10px 0 10px 50px;}
|
||||
/****资源库***/
|
||||
.f_l{ float:left;}
|
||||
.f_r{ float:right;}
|
||||
.resource a{ text-align:center;}
|
||||
.b_lblue{ background:#64bdd9;}
|
||||
.b_dblue{ background:#55a1b9; cursor:pointer;}
|
||||
.f_b{ font-weight: bold;}
|
||||
.c_blue{ color:#64bdd9;}
|
||||
.c_grey{ color:#999999;}
|
||||
.c_grey02{ color:#666666;}
|
||||
.f_14{ font-size:14px;}
|
||||
.c_dblue{ color:#3e6d8e;}
|
||||
.w90{width:90px;}
|
||||
.ml10{margin-left:10px;}
|
||||
.resource{ width:670px;}
|
||||
.re_top{width:660px; height:40px; background:#eaeaea; padding:5px;}
|
||||
.re_top input{ float:left;}
|
||||
.re_search{ margin-top:7px; margin-left:5px;}
|
||||
.re_schbox{ width:240px; height:24px; border:1px solid #64bdd9; color:#666666;}
|
||||
.re_schbtn{ width:60px; height:26px; color:#fff; margin-right:5px; border:none; margin-left:0px; }
|
||||
a.re_fabu { display:block; width:90px; height:35px; font-size:14px; color:#fff; text-align:center; padding-top:5px; }
|
||||
a:hover.re_fabu{background:#55a1b9;}
|
||||
.re_con{ margin:5px; width:665px;}
|
||||
.re_con_top{color:#494949; }
|
||||
.re_con_top span{ color:#999999; font-weight:bold;}
|
||||
a.re_select{ display:block; width:88px; height:22px; border:1px solid #ff9900; color:#ff9900; margin-left:10px;}
|
||||
a:hover.re_select{ background:#ff9900; color:#fff; text-decoration:none;}
|
||||
.re_open{display:block; width:46px; height:22px; border:1px solid #64bdd9; color:#64bdd9; margin-left:10px;}
|
||||
a:hover.re_open{ background:#64bdd9; color:#fff; text-decoration:none;}
|
||||
a.re_de{ color:#6883b6; margin-left:15px;}
|
||||
.re_con_box{ border-bottom:1px dashed #dadada; padding-bottom:10px; margin-bottom:10px;}
|
||||
/****资源库***/
|
||||
.setting{ background:url(../images/setting.jpg) 0 0 no-repeat; width:670px; height:443px;}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe PhoneAppVersion do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|