Merge branch 'szzh' into develop
This commit is contained in:
commit
8467a5dfc1
|
@ -22,3 +22,4 @@
|
|||
.DS_Store
|
||||
public/api_doc/
|
||||
/.metadata
|
||||
vendor/cache
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
20
Gemfile
20
Gemfile
|
@ -1,4 +1,4 @@
|
|||
source 'http://rubygems.org'
|
||||
source 'http://ruby.taobao.org'
|
||||
#source 'http://ruby.sdutlinux.org/'
|
||||
|
||||
unless RUBY_PLATFORM =~ /w32/
|
||||
|
@ -10,11 +10,11 @@ end
|
|||
|
||||
gem 'grape', '~> 0.9.0'
|
||||
gem 'grape-entity'
|
||||
gem 'seems_rateable', path: 'lib/seems_rateable'
|
||||
gem 'seems_rateable', '~> 1.0.13'
|
||||
gem "rails", "3.2.13"
|
||||
gem "jquery-rails", "~> 2.0.2"
|
||||
gem "i18n", "~> 0.6.0"
|
||||
gem "coderay", "~> 1.0.6"
|
||||
gem 'coderay', '~> 1.1.0'
|
||||
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
|
||||
gem "builder", "3.0.0"
|
||||
gem 'acts-as-taggable-on', '2.4.1'
|
||||
|
@ -23,14 +23,20 @@ gem 'ruby-ole'
|
|||
#gem 'email_verifier', path: 'lib/email_verifier'
|
||||
gem 'rufus-scheduler'
|
||||
#gem 'dalli', path: 'lib/dalli-2.7.2'
|
||||
gem 'rails_kindeditor'
|
||||
group :development do
|
||||
gem 'grape-swagger'
|
||||
#gem 'grape-swagger-ui', git: 'https://github.com/guange2015/grape-swagger-ui.git'
|
||||
#gem 'puma'
|
||||
gem 'puma' if RbConfig::CONFIG['host_os'] =~ /linux/
|
||||
gem 'pry-rails'
|
||||
gem 'pry-byebug'
|
||||
gem 'better_errors', path: 'lib/better_errors'
|
||||
gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler'
|
||||
if RUBY_VERSION >= '2.0.0'
|
||||
gem 'pry-byebug'
|
||||
else
|
||||
gem 'pry-debugger'
|
||||
end
|
||||
gem 'pry-stack_explorer'
|
||||
gem 'better_errors', '~> 1.1.0'
|
||||
gem 'rack-mini-profiler', '~> 0.9.3'
|
||||
end
|
||||
|
||||
group :test do
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
module Mobile
|
||||
module Apis
|
||||
class Comments < Grape::API
|
||||
include ApplicationHelper
|
||||
resource :comments do
|
||||
desc '课程通知评论'
|
||||
params do
|
||||
|
@ -82,8 +83,8 @@ module Mobile
|
|||
memo: {:subject => params[:subject],:content => '该贴来自手机App意见反馈'},
|
||||
}
|
||||
cs = CommentService.new
|
||||
memo = cs.create_feedback cs_params, current_user
|
||||
raise "commit failed #{memo.errors.full_messages}" if memo.new_record?
|
||||
memo,message = cs.create_feedback cs_params, current_user
|
||||
raise message if memo.new_record?
|
||||
present :status, 0
|
||||
end
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ module Mobile
|
|||
desc "用户搜索"
|
||||
params do
|
||||
requires :name, type: String, desc: '用户名关键字'
|
||||
requires :search_by, type: String,desc: '搜索依据:0 昵称,1 用户名,2 邮箱'
|
||||
requires :search_by, type: String,desc: '搜索依据:0 昵称,1 用户名,2 邮箱,3 昵称和姓名'
|
||||
end
|
||||
get 'search/search_user' do
|
||||
us = UsersService.new
|
||||
|
|
|
@ -15,6 +15,8 @@ module Mobile
|
|||
course_dynamic_expose :type
|
||||
course_dynamic_expose :count
|
||||
course_dynamic_expose :course_name
|
||||
course_dynamic_expose :course_term
|
||||
course_dynamic_expose :course_time
|
||||
course_dynamic_expose :course_id
|
||||
course_dynamic_expose :course_img_url
|
||||
course_dynamic_expose :message
|
||||
|
|
|
@ -873,13 +873,15 @@ class CoursesController < ApplicationController
|
|||
"show_course_news" => true,
|
||||
"show_course_messages" => true,
|
||||
"show_bids" => true,
|
||||
"show_course_journals_for_messages" => true
|
||||
"show_course_journals_for_messages" => true,
|
||||
"show_homeworks" => true
|
||||
}
|
||||
@date_to ||= Date.today + 1
|
||||
#
|
||||
@date_from = (@date_to - @days) > @course.created_at.to_date ? (@date_to - @days) : @course.created_at.to_date
|
||||
#@date_from = @date_to - @days-1.years
|
||||
@author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
|
||||
@author ||= @course.teacher
|
||||
# 决定显示所用用户或单个用户活动
|
||||
@activity = Redmine::Activity::Fetcher.new(User.current, :course => @course,
|
||||
:with_subprojects => false,
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
class DiscussDemosController < ApplicationController
|
||||
def index
|
||||
|
||||
@discuss_demo_list = DiscussDemo.where("body is not null").order("created_at desc").page(params[:page] || 1).per(10)
|
||||
end
|
||||
|
||||
def new
|
||||
@discuss_demo = DiscussDemo.create
|
||||
@discuss_demo.save!
|
||||
@discuss_demo
|
||||
end
|
||||
|
||||
def create
|
||||
|
||||
end
|
||||
|
||||
def update
|
||||
@discuss_demo = DiscussDemo.find(params[:id])
|
||||
@discuss_demo.update_attributes(:title => params[:discuss_demo][:title],:body => params[:discuss_demo][:body])
|
||||
redirect_to :controller=> 'discuss_demos',:action => 'show',:id => params[:id]
|
||||
end
|
||||
|
||||
def delete
|
||||
|
||||
end
|
||||
|
||||
def destroy
|
||||
asset = Kindeditor::Asset.find_by_owner_id(params[:id])
|
||||
filepath = File.join(Rails.root,"public","files","uploads",
|
||||
asset[:created_at].to_s.gsub("+0800","").to_datetime.strftime("%Y%m").to_s,
|
||||
asset[:asset].to_s)
|
||||
File.delete(filepath) if File.exist?filepath
|
||||
DiscussDemo.destroy(params[:id])
|
||||
redirect_to :controller=> 'discuss_demos',:action => 'index'
|
||||
end
|
||||
|
||||
def show
|
||||
@discuss_demo = DiscussDemo.find(params[:id])
|
||||
end
|
||||
end
|
|
@ -91,6 +91,7 @@ class DocumentsController < ApplicationController
|
|||
|
||||
def update
|
||||
@document.safe_attributes = params[:document]
|
||||
@document.save_attachments(params[:attachments])
|
||||
if request.put? and @document.save
|
||||
flash[:notice] = l(:notice_successful_update)
|
||||
redirect_to document_url(@document)
|
||||
|
|
|
@ -20,7 +20,7 @@ class ForumsController < ApplicationController
|
|||
#@memo.author_id = User.current.id
|
||||
#@forum = @memo.forum
|
||||
cs = CommentService.new
|
||||
@memo = cs.create_feedback params,User.current
|
||||
@memo,message = cs.create_feedback params,User.current
|
||||
respond_to do |format|
|
||||
if !@memo.new_record?
|
||||
format.html { redirect_to forum_path(@memo.forum) }
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
class GitCallbackController < ApplicationController
|
||||
|
||||
def post_update
|
||||
@repository = Repository.find_by_root_url(params[:root_url])
|
||||
@repository.fetch_changesets
|
||||
render :text => 'success'
|
||||
end
|
||||
|
||||
end
|
|
@ -58,7 +58,7 @@ class IssuesController < ApplicationController
|
|||
|
||||
def index
|
||||
retrieve_query
|
||||
sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria)
|
||||
sort_init(@query.sort_criteria.empty? ? [['updated_on', 'desc']] : @query.sort_criteria)
|
||||
sort_update(@query.sortable_columns)
|
||||
@query.sort_criteria = sort_criteria.to_a
|
||||
|
||||
|
@ -162,7 +162,7 @@ class IssuesController < ApplicationController
|
|||
respond_to do |format|
|
||||
format.html {
|
||||
render_attachment_warning_if_needed(@issue)
|
||||
flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("#{@issue.source_from}", issue_path(@issue), :title => @issue.subject))
|
||||
flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("#{@issue.subject}", issue_path(@issue), :title => @issue.subject))
|
||||
#flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("##{@issue.id}", issue_path(@issue), :title => @issue.subject))
|
||||
if params[:continue]
|
||||
attrs = {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?}
|
||||
|
@ -381,7 +381,7 @@ class IssuesController < ApplicationController
|
|||
def retrieve_previous_and_next_issue_ids
|
||||
retrieve_query_from_session
|
||||
if @query
|
||||
sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria)
|
||||
sort_init(@query.sort_criteria.empty? ? [['updated_on', 'desc']] : @query.sort_criteria)
|
||||
sort_update(@query.sortable_columns, 'issues_index_sort')
|
||||
limit = 500
|
||||
issue_ids = @query.issue_ids(:order => sort_clause, :limit => (limit + 1), :include => [:assigned_to, :tracker, :priority, :category, :fixed_version])
|
||||
|
|
|
@ -109,7 +109,7 @@ class MembersController < ApplicationController
|
|||
end
|
||||
if params[:flag]
|
||||
unless members.present? && members.all? {|m| m.valid? }
|
||||
flash[:error] = members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ')
|
||||
flash[:error] = members.empty? ? l(:label_user_role_null) :members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ')
|
||||
else
|
||||
flash[:notice] = l(:label_invite_success)
|
||||
end
|
||||
|
|
|
@ -340,6 +340,7 @@ class ProjectsController < ApplicationController
|
|||
@is_zhuce =false
|
||||
flash[:notice] = l(:notice_email_sent, :value => email)
|
||||
else
|
||||
flash[:error] = l(:notice_registed_success, :value => email)
|
||||
@is_zhuce = true
|
||||
end
|
||||
respond_to do |format|
|
||||
|
|
|
@ -92,6 +92,22 @@ class RepositoriesController < ApplicationController
|
|||
render :action => 'show', :layout => 'base_projects'
|
||||
end
|
||||
|
||||
|
||||
HOOK_TEMPLATE = %Q{#!/bin/sh
|
||||
exec sh -c '
|
||||
function update()
|
||||
{
|
||||
CMD_PATH=`dirname $0`;
|
||||
cd $CMD_PATH;
|
||||
PY_PATH=$PWD/../../git_refresh_changes.py;
|
||||
[[ -s "$PY_PATH" ]] && $(which python) $PY_PATH $PWD;
|
||||
cd -;
|
||||
}
|
||||
git update-server-info
|
||||
update
|
||||
'
|
||||
}
|
||||
|
||||
def create
|
||||
if params[:repository_scm].to_s == 'Gitlab'
|
||||
# add by nwb
|
||||
|
@ -127,7 +143,6 @@ class RepositoriesController < ApplicationController
|
|||
if attrs[:attrs_extra].keys.any?
|
||||
@repository.merge_extra_info(attrs[:attrs_extra])
|
||||
end
|
||||
#by xianbo
|
||||
|
||||
@repository.project = @project
|
||||
if request.post? && @repository.save
|
||||
|
@ -145,12 +160,11 @@ class RepositoriesController < ApplicationController
|
|||
"</Limit> \n ' >> "+
|
||||
@root_path+"htdocs/"+ @repository_name+"/.htaccess"
|
||||
system "cd "+@project_path+" ;git update-server-info"
|
||||
# if(create_repo_file&&create_passwd&&create_group&&init_repository&&add_privilege&&init_server_info)
|
||||
# else
|
||||
# logger.info "An error occured when authenticating "+"create passwd"+@creat_passwd+"create_group"+
|
||||
# crate_group+"create repository file "+create_repo_file+"init repository"+init_repostory+
|
||||
# "aad privilege to rpository"+add_privilege+"init server infos"+init_server_info
|
||||
# end
|
||||
|
||||
File.open(@project_path+"/hooks/post-update", "w+") do |f|
|
||||
f.write(HOOK_TEMPLATE)
|
||||
end
|
||||
|
||||
@repository.update_attributes(:login => User.current.login.to_s)
|
||||
end
|
||||
redirect_to settings_project_url(@project, :tab => 'repositories')
|
||||
|
@ -160,6 +174,8 @@ class RepositoriesController < ApplicationController
|
|||
render :action => 'new', :layout =>'base_projects'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -445,15 +445,15 @@ class UsersController < ApplicationController
|
|||
else
|
||||
activity = Activity.where(where_condition).where('user_id = ?', @user.id).order('id desc')
|
||||
end
|
||||
activity = activity.reject { |e|
|
||||
e.act.nil? ||
|
||||
(!User.current.admin? && !e.act.nil?
|
||||
(((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 = activity.reject { |e|
|
||||
# e.act.nil? ||
|
||||
# (!User.current.admin? && !e.act.nil?
|
||||
# (((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)
|
||||
|
|
|
@ -20,7 +20,7 @@ class WelcomeController < ApplicationController
|
|||
include WelcomeHelper
|
||||
helper :project_score
|
||||
caches_action :robots
|
||||
before_filter :find_first_page, :only => [:index]
|
||||
#before_filter :find_first_page, :only => [:index]
|
||||
# before_filter :fake, :only => [:index, :course]
|
||||
before_filter :entry_select, :only => [:index]
|
||||
|
||||
|
|
|
@ -60,4 +60,8 @@ module ApiHelper
|
|||
end
|
||||
[count,is_teacher]
|
||||
end
|
||||
|
||||
def get_user_language user
|
||||
(user.language.nil? || user.language == "") ? 'zh':user.language
|
||||
end
|
||||
end
|
|
@ -1994,4 +1994,10 @@ module ApplicationHelper
|
|||
end
|
||||
technical_title
|
||||
end
|
||||
|
||||
|
||||
def ie8?
|
||||
request.env["HTTP_USER_AGENT"] =~ /MSIE 8.0/
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -355,7 +355,7 @@ module CoursesHelper
|
|||
# 课程time+term简写(2014.春/2014.秋)国际化输出
|
||||
def get_course_term course
|
||||
strterm = course.try(:term).to_s
|
||||
if !(User.current.language == 'zh')
|
||||
if !(User.current.language == 'zh'||User.current.language == '')
|
||||
strterm == '春季学期' ? strterm = 'spring term' : strterm = 'autumn term'
|
||||
str = ( course.try(:time).to_s << '.' << strterm )
|
||||
str[0..-6]
|
||||
|
@ -369,7 +369,7 @@ module CoursesHelper
|
|||
# 课程term(春季学期/秋季学期)国际化输出
|
||||
def get_course_term_locales course
|
||||
str = course.try(:term).to_s
|
||||
if !(User.current.language == 'zh')
|
||||
if !(User.current.language == 'zh'||User.current.language == '')
|
||||
str == '春季学期' ? str = ' ' + 'spring term' : str = ' ' + 'autumn term'
|
||||
end
|
||||
return str
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
module DiscussDemosHelper
|
||||
end
|
|
@ -43,7 +43,7 @@ module WatchersHelper
|
|||
)
|
||||
method = watched ? 'delete' : 'post'
|
||||
|
||||
link_to text, url, :remote => true, :method => method, :class => css
|
||||
link_to text, url, :remote => true, :method => method, :style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 22px; line-height: 21px;padding-top:1px; background: none repeat scroll 0% 0% #64BDD9; TES"
|
||||
end
|
||||
|
||||
############## added by linchun
|
||||
|
@ -278,11 +278,11 @@ module WatchersHelper
|
|||
)
|
||||
method = applied ? 'delete' : 'post'
|
||||
|
||||
link_to text, url, :remote => true, :method => method ,:class=>css
|
||||
link_to text, url, :remote => true, :method => method ,:style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 21px; line-height: 22px;padding-top:1px; background: none repeat scroll 0% 0% #64BDD9; TES"
|
||||
end
|
||||
|
||||
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), :style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 22px; line-height: 22px; background: none repeat scroll 0% 0% #64BDD9; TES" )
|
||||
:remote => true, :confirm => l(:lable_sure_exit_project), :style => "color: #fff; display:block; padding: 0px 5px; margin-right: 10px; height: 21px; line-height: 22px; background: none repeat scroll 0% 0% #64BDD9; TES;padding-top:1px;" )
|
||||
end
|
||||
end
|
||||
|
|
|
@ -61,14 +61,21 @@ class Bid < ActiveRecord::Base
|
|||
end
|
||||
}
|
||||
|
||||
scope :course_visible, lambda {|*args|
|
||||
includes(:courses).where(Course.allowed_to_condition(args.shift || User.current, :view_homeworks, *args))
|
||||
}
|
||||
|
||||
acts_as_watchable
|
||||
acts_as_taggable
|
||||
|
||||
acts_as_event :title => Proc.new {|o| "#{l(:label_requirement)} ##{o.id}: #{o.name}" },
|
||||
acts_as_event :title => Proc.new {|o| "#{l(:label_course_homework)} ##{o.id}: #{o.name}" },
|
||||
:description => :description,
|
||||
:author => :author,
|
||||
:url => Proc.new {|o| {:controller => 'bids', :action => 'show', :id => o.id}}
|
||||
|
||||
acts_as_activity_provider :type => 'homeworks',
|
||||
:author_key => :author_id
|
||||
|
||||
acts_as_activity_provider :find_options => {:include => [:projects, :author]},
|
||||
:author_key => :author_id
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
class DiscussDemo < ActiveRecord::Base
|
||||
attr_accessible :title, :body
|
||||
has_many_kindeditor_assets :assets, :dependent => :destroy
|
||||
end
|
|
@ -0,0 +1,15 @@
|
|||
class Kindeditor::Asset < ActiveRecord::Base
|
||||
self.table_name = 'kindeditor_assets'
|
||||
mount_uploader :asset, Kindeditor::AssetUploader
|
||||
validates_presence_of :asset
|
||||
before_save :update_asset_attributes
|
||||
attr_accessible :asset
|
||||
|
||||
private
|
||||
def update_asset_attributes
|
||||
if asset.present? && asset_changed?
|
||||
self.file_size = asset.file.size
|
||||
self.file_type = asset.file.content_type
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class Kindeditor::File < Kindeditor::Asset
|
||||
mount_uploader :asset, Kindeditor::FileUploader
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class Kindeditor::Flash < Kindeditor::Asset
|
||||
mount_uploader :asset, Kindeditor::FlashUploader
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class Kindeditor::Image < Kindeditor::Asset
|
||||
mount_uploader :asset, Kindeditor::ImageUploader
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class Kindeditor::Media < Kindeditor::Asset
|
||||
mount_uploader :asset, Kindeditor::MediaUploader
|
||||
end
|
|
@ -214,6 +214,8 @@ class User < Principal
|
|||
where(" LOWER(login) LIKE '#{pattern}' ")
|
||||
elsif type == "1"
|
||||
where(" LOWER(concat(lastname, firstname)) LIKE '#{pattern}' ")
|
||||
elsif type == "3"
|
||||
where(" LOWER(concat(lastname, firstname,login)) LIKE '#{pattern}' ")
|
||||
else
|
||||
where(" LOWER(mail) LIKE '#{pattern}' ")
|
||||
end
|
||||
|
@ -776,7 +778,7 @@ class User < Principal
|
|||
(block_given? ? yield(role, self) : true)
|
||||
}
|
||||
#添加课程相关的权限判断
|
||||
elsif context && context.is_a?(Course)
|
||||
elsif context && context.is_a?(Course)
|
||||
return false unless context.allows_to?(action)
|
||||
# Admin users are authorized for anything else
|
||||
return true if admin?
|
||||
|
|
|
@ -32,40 +32,42 @@ class UserExtensions < ActiveRecord::Base
|
|||
def get_brief_introduction
|
||||
return self.brief_introduction
|
||||
end
|
||||
|
||||
|
||||
|
||||
# added by meng
|
||||
def show_identity
|
||||
if self.identity == 0
|
||||
if User.current.language == 'zh'
|
||||
user_identity = '教师'
|
||||
else
|
||||
user_identity = 'Teacher'
|
||||
end
|
||||
elsif self.identity == 1
|
||||
if User.current.language == 'zh'
|
||||
user_identity = '学生'
|
||||
else
|
||||
user_identity = 'Student'
|
||||
end
|
||||
elsif self.identity == 2
|
||||
if User.current.language == 'zh'
|
||||
user_identity = '企业'
|
||||
else
|
||||
user_identity = 'Enterprise'
|
||||
end
|
||||
elsif self.identity == 3
|
||||
if User.current.language == 'zh'
|
||||
user_identity = '开发者'
|
||||
else
|
||||
user_identity = 'Developer'
|
||||
if User.current.language == 'zh'||User.current.language == ''
|
||||
case self.identity
|
||||
when 0
|
||||
user_identity = l(:label_account_identity_teacher)
|
||||
when 1
|
||||
user_identity = l(:label_account_identity_student)
|
||||
when 2
|
||||
user_identity = l(:label_account_identity_enterprise)
|
||||
when 3
|
||||
user_identity = l(:label_account_identity_developer)
|
||||
else
|
||||
user_identity = ''
|
||||
end
|
||||
else
|
||||
user_identity = ''
|
||||
case self.identity
|
||||
when 0
|
||||
user_identity = l(:label_account_identity_teacher)
|
||||
when 1
|
||||
user_identity = l(:label_account_identity_student)
|
||||
when 2
|
||||
user_identity = l(:label_account_identity_enterprise)
|
||||
when 3
|
||||
user_identity = l(:label_account_identity_developer)
|
||||
else
|
||||
user_identity = ''
|
||||
end
|
||||
end
|
||||
return user_identity
|
||||
end
|
||||
# end
|
||||
|
||||
# end
|
||||
|
||||
|
||||
def self.introduction(user, message)
|
||||
unless user.user_extensions.nil?
|
||||
info = user.user_extensions
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class CommentService
|
||||
include ApiHelper
|
||||
include Redmine::I18n
|
||||
#评论
|
||||
def news_comments params,current_user
|
||||
@news = News.find(params[:id])
|
||||
|
@ -84,7 +86,8 @@ class CommentService
|
|||
@memo.forum_id = "1"
|
||||
@memo.author_id = current_user.id
|
||||
@memo.save
|
||||
@memo
|
||||
message = "#{l(:label_commit_failed,:locale => get_user_language(current_user))}: #{@memo.errors.full_messages}" if @memo.new_record?
|
||||
[@memo,message]
|
||||
end
|
||||
|
||||
#课程留言列表
|
||||
|
|
|
@ -38,7 +38,7 @@ class CoursesService
|
|||
if name.blank?
|
||||
raise 'sumbit empty'
|
||||
end
|
||||
@courses = courses_all.visible
|
||||
@courses = courses_all.visible(current_user)
|
||||
if params[:name].present?
|
||||
@courses_all = @courses.like(params[:name])
|
||||
else
|
||||
|
@ -346,7 +346,7 @@ class CoursesService
|
|||
membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user))
|
||||
end
|
||||
if membership.nil? || membership.count == 0
|
||||
raise l(:label_no_courses,:locale => current_user.language.nil? ? 'zh':current_user.language)
|
||||
raise l(:label_no_courses,:locale => get_user_language(current_user))
|
||||
end
|
||||
membership.sort! {|older, newer| newer.created_on <=> older.created_on }
|
||||
result = []
|
||||
|
@ -355,19 +355,19 @@ class CoursesService
|
|||
latest_course_dynamics = []
|
||||
latest_news = course.news.order("created_on desc").first
|
||||
unless latest_news.nil?
|
||||
latest_course_dynamics << {:type => 1,:time => latest_news.created_on,:message => l(:label_recently_updated_notification,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
||||
latest_course_dynamics << {:type => 1,:time => latest_news.created_on,:message => l(:label_recently_updated_notification,:locale => get_user_language(current_user))}
|
||||
end
|
||||
latest_message = course.journals_for_messages.order("created_on desc").first
|
||||
unless latest_message.nil?
|
||||
latest_course_dynamics << {:type => 2,:time => latest_message.created_on,:message => l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
||||
latest_course_dynamics << {:type => 2,:time => latest_message.created_on,:message => l(:label_recently_updated_message,:locale => get_user_language(current_user))}
|
||||
end
|
||||
latest_attachment = course.attachments.order("created_on desc").first
|
||||
unless latest_attachment.nil?
|
||||
latest_course_dynamics << {:type => 3,:time => latest_attachment.created_on,:message => l(:label_recently_updated_courseware,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
||||
latest_course_dynamics << {:type => 3,:time => latest_attachment.created_on,:message => l(:label_recently_updated_courseware,:locale => get_user_language(current_user))}
|
||||
end
|
||||
latest_bid = course.homeworks.order('updated_on DESC').first
|
||||
unless latest_bid.nil?
|
||||
latest_course_dynamics << {:type => 4,:time => latest_bid.updated_on,:message => l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
||||
latest_course_dynamics << {:type => 4,:time => latest_bid.updated_on,:message => l(:label_recently_updated_homework,:locale => get_user_language(current_user))}
|
||||
end
|
||||
#每个作业中的最新留言
|
||||
messages = []
|
||||
|
@ -382,7 +382,7 @@ class CoursesService
|
|||
end
|
||||
latest_bid_message = messages.first
|
||||
unless latest_bid_message.nil?
|
||||
latest_course_dynamics << {:type => 4,:time => latest_bid_message.created_on,:message => l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
||||
latest_course_dynamics << {:type => 4,:time => latest_bid_message.created_on,:message => l(:label_recently_updated_message,:locale => get_user_language(current_user))}
|
||||
end
|
||||
#每个作业中学生最后提交的作业
|
||||
homeworks = []
|
||||
|
@ -397,12 +397,12 @@ class CoursesService
|
|||
end
|
||||
latest_homework_attach = homeworks.first
|
||||
unless latest_homework_attach.nil?
|
||||
latest_course_dynamics << {:type => 4,:time => latest_homework_attach.updated_at,:message => l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
||||
latest_course_dynamics << {:type => 4,:time => latest_homework_attach.updated_at,:message => l(:label_recently_updated_homework,:locale => get_user_language(current_user))}
|
||||
end
|
||||
latest_course_dynamics.sort!{|order,newer| newer[:time] <=> order[:time]}
|
||||
latest_course_dynamic = latest_course_dynamics.first
|
||||
unless latest_course_dynamic.nil?
|
||||
result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => latest_course_dynamic[:type],:update_time => latest_course_dynamic[:time],:message => latest_course_dynamic[:message],:count => nil}
|
||||
result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:course_time => course.time,:course_term => course.term,:type => latest_course_dynamic[:type],:update_time => latest_course_dynamic[:time],:message => latest_course_dynamic[:message],:count => nil}
|
||||
end
|
||||
end
|
||||
result.sort!{|order,newer| newer[:update_time] <=> order[:update_time]}
|
||||
|
|
|
@ -193,7 +193,6 @@ class UsersService
|
|||
@current_user.save
|
||||
#raise @current_user.errors.full_message
|
||||
#return @current_user
|
||||
|
||||
else
|
||||
raise 'wrong password'
|
||||
end
|
||||
|
|
|
@ -1,5 +1,22 @@
|
|||
<span id="attachments_fields" xmlns="http://www.w3.org/1999/html">
|
||||
<% if defined?(container) && container && container.saved_attachments %>
|
||||
<% container.attachments.each_with_index do |attachment, i| %>
|
||||
<span id="attachments_p<%= i %>" class="attachment">
|
||||
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
|
||||
<%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 254, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
|
||||
<span class="ispublic-label"><%= l(:field_is_public)%>:</span>
|
||||
<%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false,:class => 'is_public')%>
|
||||
<%= if attachment.id.nil?
|
||||
#待补充代码
|
||||
else
|
||||
link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload')
|
||||
end
|
||||
%>
|
||||
<%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
|
||||
|
||||
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% container.saved_attachments.each_with_index do |attachment, i| %>
|
||||
<span id="attachments_p<%= i %>" class="attachment">
|
||||
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
|
||||
|
@ -31,13 +48,13 @@
|
|||
<span class="add_attachment" style="font-weight:normal;">
|
||||
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
|
||||
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
|
||||
<%= button_tag "浏览", :type=>"button", :onclick=>"_file.click()",:onmouseover => 'this.focus()' %>
|
||||
<%= button_tag l(:button_browse), :type=>"button", :onclick=>"_file.click()",:onmouseover => 'this.focus()', :style => ie8? ? 'display:none' : '' %>
|
||||
<%= file_field_tag 'attachments[dummy][file]',
|
||||
:id => '_file',
|
||||
:class => 'file_selector',
|
||||
:multiple => true,
|
||||
:onchange => 'addInputFiles(this);',
|
||||
:style => 'display:none',
|
||||
:style => ie8? ? '' : 'display:none',
|
||||
:data => {
|
||||
:max_file_size => Setting.attachment_max_size.to_i.kilobytes,
|
||||
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
<span class="add_attachment">
|
||||
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
|
||||
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
|
||||
<%= button_tag "浏览", :type=>"button", :onclick=>"_file.click()" %>
|
||||
<%= button_tag l(:button_browse), :type=>"button", :onclick=>"_file.click()" %>
|
||||
<%= file_field_tag 'attachments[dummy][file]',
|
||||
:id => '_file',
|
||||
:class => 'file_selector',
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$('#attachments_<%= j params[:attachment_id] %>').remove();
|
||||
var count=$('#attachments_fields>span').length;
|
||||
if(count<=0){
|
||||
$("#upload_file_count").text("未上传文件");
|
||||
$("#upload_file_count").text(<%= l(:label_no_file_uploaded)%>);
|
||||
$(".remove_all").remove();
|
||||
}else{
|
||||
$("#upload_file_count").html("已上传"+"<span id=\"count\">"+count+"</span>"+"个文件");
|
||||
|
|
|
@ -24,10 +24,6 @@
|
|||
</div>
|
||||
|
||||
<!--display the board-->
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= h @board.name %></h2>
|
||||
</div>
|
||||
|
||||
<% if !User.current.logged? %>
|
||||
<div style="font-size: 14px;margin:20px;">
|
||||
<% if @project.project_type == 1 %>
|
||||
|
@ -39,62 +35,52 @@
|
|||
<hr/>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="borad-setitle">
|
||||
<span class="borad-topic-count">
|
||||
共有
|
||||
<%= link_to @topic_count,:controller => 'boards',:action => 'index' %>
|
||||
个贴子
|
||||
</span>
|
||||
<% 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),
|
||||
:class => 'icon icon-add',
|
||||
:onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' if User.current.logged? %>
|
||||
</span>
|
||||
<% end %>
|
||||
</div>
|
||||
<div style="width: 100%;word-break: break-all;word-wrap: break-word;">
|
||||
<% if @topics.any? %>
|
||||
<% @topics.each do |topic| %>
|
||||
<table class="content-text-list">
|
||||
<tr>
|
||||
<td colspan="2" valign="top" width="50">
|
||||
<%= link_to image_tag(url_to_avatar(topic.author), :class => "avatar"), user_path(topic.author) %>
|
||||
</td>
|
||||
<td>
|
||||
<table width="640px" border="0">
|
||||
<tr>
|
||||
<td valign="top" width="500px" class=" <%= topic.sticky? ? 'sticky' : '' %>
|
||||
<%= topic.locked? ? 'locked' : '' %>">
|
||||
<%= link_to h(topic.subject.truncate(40,ommision:'...')), board_message_path(@board, topic),title:topic.subject.to_s %>
|
||||
</td>
|
||||
<td align="right" rowspan="3">
|
||||
<table class="borad-count">
|
||||
<tr>
|
||||
<td align="center" class="borad-count-digit"><%= link_to (topic.replies_count), board_message_path(@board, topic) %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">回答</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" colspan="2">
|
||||
<span class="font_lighter"><%= authoring topic.created_on, topic.author %><br/></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<% end %>
|
||||
<div class="pagination">
|
||||
<%= pagination_links_full @topic_pages, @topic_count %>
|
||||
</div>
|
||||
|
||||
<!-- 内容显示部分 -->
|
||||
<div class="project_right">
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= h @board.name %></h2>
|
||||
</div>
|
||||
<div class="talk_top">
|
||||
<div class="fl">项目讨论区共有<span><%= @topic_count %></span>个帖子 </div>
|
||||
<% 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),
|
||||
:class => 'problem_new_btn fl',
|
||||
:onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' if User.current.logged? %></span>
|
||||
<% end %>
|
||||
<div class="cl"></div>
|
||||
</div>
|
||||
<!-- 帖子内容显示 -->
|
||||
<% if @topics.any? %>
|
||||
<% @topics.each do |topic| %>
|
||||
<div class="problem_main">
|
||||
<a>
|
||||
<%= link_to image_tag(url_to_avatar(topic.author), :class => "problem_pic talk_pic fl"), user_path(topic.author) %>
|
||||
</a>
|
||||
<div class="talk_txt fl">
|
||||
<div>
|
||||
<span><%= link_to h(topic.subject), board_message_path(@board, topic), title:topic.subject.to_s, :class =>"problem_tit fl" %></span>
|
||||
<% if topic.sticky? %>
|
||||
<span class="talk_up">置顶</span>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="problem_line">
|
||||
<span>由<%= link_to topic.author, user_path(topic.author), :class =>"problem_name" %></span>
|
||||
<span>添加于<%= format_time topic.created_on %></span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="talk_btn fr">回复<%= link_to (topic.replies_count), board_message_path(@board, topic), :style =>"color:#fff;" %></span>
|
||||
<div class="cl"></div>
|
||||
</div><!--讨论主类容 end-->
|
||||
<% end %>
|
||||
<ul class="wlist">
|
||||
<%= pagination_links_full @topic_pages, @topic_count, :per_page_links => false, :remote => false, :flag => true %>
|
||||
</ul>
|
||||
<% else %>
|
||||
<p class="nodata"><%= l(:label_no_data) %></p>
|
||||
<% end %>
|
||||
<!--讨论主类容 end-->
|
||||
<div class="cl"></div>
|
||||
</div>
|
||||
|
||||
<% other_formats_links do |f| %>
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<h1 style="">文章列表</h1>
|
||||
<div>
|
||||
<table border="1px solid !important" >
|
||||
<% @discuss_demo_list.each do |e| %>
|
||||
|
||||
<tr align="left" height="20">
|
||||
<td width="30%" ><%= truncate(e.title,:length => 50) %></td>
|
||||
<td align="center" width="60%">
|
||||
<%= truncate(e.body,:length => 50) %>
|
||||
</td>
|
||||
<td style=" margin-right: 1" width="10%">
|
||||
<%= link_to '查看文章',{:controller => 'discuss_demos',:action => 'show',:id=>e.id} %>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<%= link_to '删除文章',discuss_demo_path(e.id), :method => :delete,:confirm => l(:text_are_you_sure) %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr height="20"></tr>
|
||||
<tr height="20"></tr>
|
||||
<% end %>
|
||||
</table>
|
||||
<% paginate @discuss_demo_list %>
|
||||
<%= link_to '新建文章',new_discuss_demo_path %>
|
||||
</div>
|
|
@ -0,0 +1,7 @@
|
|||
<%= javascript_include_tag src='/assets/kindeditor/kindeditor' %>
|
||||
<h1>新建文章</h1>
|
||||
<%= form_for @discuss_demo,:url => {:controller => 'discuss_demos',:action => "show",:id =>@discuss_demo.id, :method => :put} do |f| %>
|
||||
<%= f.text_field :title %>
|
||||
<%= f.kindeditor :body ,:owner_id => @discuss_demo.id%>
|
||||
<%= f.submit :value=> '提交' %>
|
||||
<% end %>
|
|
@ -0,0 +1,3 @@
|
|||
<h1><%= @discuss_demo.title %></h1>
|
||||
<%= textAreailizable @discuss_demo.body %>
|
||||
<%=link_to "返回首页",discuss_demos_path %>
|
|
@ -11,8 +11,8 @@
|
|||
|
||||
<%= wikitoolbar_for 'document_description' %>
|
||||
|
||||
<% if @document.new_record? %>
|
||||
|
||||
<div class="box tabular">
|
||||
<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form', :locals => {:container => @document} %></p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<h3><%=l(:label_document)%></h3>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%=l(:label_document_plural)%></h2>
|
||||
</div>
|
||||
|
||||
<%= labelled_form_for @document do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
|
|
|
@ -22,13 +22,13 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
<button name="button" class="f_l ml10" onclick="_file.click()" onmouseover="this.focus()" type="button" style="width:20%; height:26%;"><%= l(:label_browse)%></button>
|
||||
<button name="button" class="f_l ml10" onclick="_file.click()" onmouseover="this.focus()" type="button" style="<%= ie8? ? 'display:none' : '' %>; width:20%; height:26%;"><%= l(:label_browse)%></button>
|
||||
<%= file_field_tag 'attachments[dummy][file]',
|
||||
:id => '_file',
|
||||
:class => 'file_selector',
|
||||
:multiple => true,
|
||||
:onchange => 'addInputFiles(this);',
|
||||
:style => 'display:none',
|
||||
:style => ie8? ? '': 'display:none',
|
||||
:data => {
|
||||
:max_file_size => Setting.attachment_max_size.to_i.kilobytes,
|
||||
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
<table>
|
||||
<tr>
|
||||
<% if versions.any? %>
|
||||
<td><p><%= l(:field_version) %></p></td>
|
||||
<td><p style="padding-left: 50px;"><%= l(:field_version) %></p></td>
|
||||
<td>
|
||||
<%= select_tag "version_id", content_tag('option', '') +
|
||||
options_from_collection_for_select(versions, "id", "name"), {style: 'width:100px'} %>
|
||||
options_from_collection_for_select(versions, "id", "name"), {style: 'width:230px'} %>
|
||||
</td>
|
||||
<% if attachmenttypes.any? %>
|
||||
<td><%= l(:attachment_type) %></label></td>
|
||||
|
@ -31,14 +31,10 @@
|
|||
<% end %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<p style="padding-left: 54px;"> <%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form', locals: {project: project} %></p>
|
||||
</p>
|
||||
|
||||
<p><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form', locals: {project: project} %></p>
|
||||
</div>
|
||||
<%= submit_tag l(:button_add) %>
|
||||
<% end %>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<% attachmenttypes = @project.attachmenttypes %>
|
||||
<% sufixtypes = @project.contenttypes %>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2">资源共享区</h2>
|
||||
<h2 class="project_h2"><%= l(:lable_file_sharingarea) %></h2>
|
||||
</div>
|
||||
|
||||
<div class="content-title-top">
|
||||
|
@ -16,12 +16,12 @@
|
|||
</div>
|
||||
<div id="relation_file_div" class="relation_file_div hidden">
|
||||
<fieldset>
|
||||
<legend>搜索</legend>
|
||||
<legend><%= l(:label_search)%></legend>
|
||||
<%= form_tag(
|
||||
attachments_autocomplete_path(:format => 'js'),
|
||||
:remote => true,
|
||||
:method => :post) do %>
|
||||
<%= label_tag(:attach_search, "按关键字搜索:") %>
|
||||
<%= label_tag(:attach_search, l(:label_search_by_keyword)) %>
|
||||
<%= text_field_tag(:attach_search) %>
|
||||
<%#= submit_tag("Search") %>
|
||||
<% end -%>
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
<tr>
|
||||
<%= sort_header_tag('filename', :caption => l(:field_filename), :scope => "col", :id => "vzebra-adventure",:class => "tableth") %>
|
||||
<%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc', :scope => "col", :id => "vzebra-children",:class => "tableth") %>
|
||||
<%= sort_header_tag('attach_type', :caption => l(:attachment_browse), :default_order => 'desc', :scope => "col", :id => "vzebra-attachmenttype",:class => "tableth") %>
|
||||
<%= content_tag('th', l(:attachment_sufix_browse), id: 'vzebra-contenttype', class: 'tableth', style: 'color: black')%>
|
||||
<%= sort_header_tag('attach_type', :caption => l(:field_filecontenttype), :default_order => 'desc', :scope => "col", :id => "vzebra-attachmenttype",:class => "tableth") %>
|
||||
<%= content_tag('th', l(:field_filetype), id: 'vzebra-contenttype', class: 'tableth', style: 'color: black')%>
|
||||
<%= sort_header_tag('field_file_dense', :caption => l(:field_file_dense), :default_order => 'desc', :scope => "col", :id => "vzebra-field_file_dense",:class => "tableth") %>
|
||||
<%= sort_header_tag('downloads', :caption => l(:field_downloads), :default_order => 'desc', :scope => "col", :id => "vzebra-action",:class => "tableth") %>
|
||||
<%= sort_header_tag('operation', :caption => "", :scope => "col", :id => "vzebra-children",:class => "tableth") %>
|
||||
|
@ -73,7 +73,7 @@
|
|||
<div class="tags_gradint"></div>
|
||||
</div>
|
||||
<div class="read-more hidden">
|
||||
<a href="javascript:void(0);" onclick="readmore(this);"> 更多 </a>
|
||||
<a href="javascript:void(0);" onclick="readmore(this);"> <%= l(:button_more)%> </a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
<tr>
|
||||
<%= sort_header_tag('filename', :caption => l(:field_filename), :scope => "col", :id => "vzebra-adventure" ,:class => "tableth") %>
|
||||
<%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc', :scope => "col", :id => "vzebra-children",:class => "tableth") %>
|
||||
<%= sort_header_tag('attach_type', :caption => l(:attachment_browse), :default_order => 'desc', :scope => "col", :id => "vzebra-attachmenttype",:class => "tableth") %>
|
||||
<%= content_tag('th', l(:attachment_sufix_browse), id: 'vzebra-contenttype', class: 'tableth', style: 'color: black')%>
|
||||
<%= sort_header_tag('attach_type', :caption => l(:field_filecontenttype), :default_order => 'desc', :scope => "col", :id => "vzebra-attachmenttype",:class => "tableth") %>
|
||||
<%= content_tag('th', l(:field_filetype), id: 'vzebra-contenttype', class: 'tableth', style: 'color: black')%>
|
||||
<%= sort_header_tag('field_file_dense', :caption => l(:field_file_dense), :default_order => 'desc', :scope => "col", :id => "vzebra-field_file_dense",:class => "tableth") %>
|
||||
<%= sort_header_tag('downloads', :caption => l(:field_downloads), :default_order => 'desc', :scope => "col", :id => "vzebra-action",:class => "tableth") %>
|
||||
<%= sort_header_tag('operation', :caption => "", :scope => "col", :id => "vzebra-children",:class => "tableth") %>
|
||||
|
@ -76,7 +76,7 @@
|
|||
<div class="tags_gradint"></div>
|
||||
</div>
|
||||
<div class="read-more hidden">
|
||||
<a href="javascript:void(0);" onclick="readmore(this);"> 更多 </a>
|
||||
<a href="javascript:void(0);" onclick="readmore(this);"> <%= l(:button_more)%> </a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
<div class="upload_box">
|
||||
<%= error_messages_for 'attachment' %>
|
||||
<div id="network_issue" style="color: red; display: none;"><%= l(:label_file_upload_error_messages)%></div>
|
||||
<%= form_tag(course_files_path(course), :multipart => true,:remote => true,:method => :post,:name=>"upload_form") do %>
|
||||
|
||||
<%= form_tag(course_files_path(course), :multipart => true,:remote => !ie8?,:name=>"upload_form") do %>
|
||||
<!-- <label style="margin-top:3px;"><#%= l(:label_file_upload)%></label> -->
|
||||
<%= render :partial => 'attachement_list',:locals => {:course => course} %>
|
||||
<div class="cl"></div>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
<% end %>
|
||||
|
||||
<%= watcher_link(@issue, User.current) %>
|
||||
|
||||
<%= link_to l(:button_copy), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy' if User.current.allowed_to?(:add_issues, @project) %>
|
||||
<%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'icon icon-del' if User.current.allowed_to?(:delete_issues, @project) %>
|
||||
</div>
|
||||
|
|
|
@ -1,139 +0,0 @@
|
|||
<div class="project_r_h">
|
||||
<h2 class="project_h2">问题跟踪</h2>
|
||||
</div>
|
||||
<div class="problem_top">
|
||||
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>
|
||||
<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 +1,139 @@
|
|||
<%= render :partial => 'issues/newissue_index' %>
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2">问题跟踪</h2>
|
||||
</div>
|
||||
<div class="problem_top">
|
||||
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>
|
||||
<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 +0,0 @@
|
|||
$('#content').html('<%= escape_javascript(render :partial => 'issues/newissue_index') %>');
|
|
@ -1,181 +1,181 @@
|
|||
<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}" %>
|
||||
|
||||
<%= render :partial => 'action_menu' %>
|
||||
|
||||
<h3>
|
||||
<%= issue_heading(@issue) %>
|
||||
</h3>
|
||||
|
||||
<style type="text/css"></style>
|
||||
|
||||
<div class="<%= @issue.css_classes %> details">
|
||||
<% if @prev_issue_id || @next_issue_id %>
|
||||
<div class="next-prev-links contextual">
|
||||
<%= link_to_if @prev_issue_id,
|
||||
"\xc2\xab #{l(:label_previous)}",
|
||||
(@prev_issue_id ? issue_path(Issue.find_by_id(@prev_issue_id)) : nil),
|
||||
:title => "##{@prev_issue_id}" %> |
|
||||
<% if @issue_position && @issue_count %>
|
||||
<span class="position"><%= l(:label_item_position, :position => @issue_position, :count => @issue_count) %></span> |
|
||||
<% end %>
|
||||
<%= link_to_if @next_issue_id,
|
||||
"#{l(:label_next)} \xc2\xbb",
|
||||
(@next_issue_id ? issue_path(Issue.find_by_id(@next_issue_id)) : nil),
|
||||
:title => "##{@next_issue_id}" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<!-- <%#= avatar(@issue.author, :size => "50") %> -->
|
||||
|
||||
<div class="subject" style="word-wrap: break-word;">
|
||||
<%= render_issue_subject_with_tree(@issue) %>
|
||||
</div>
|
||||
|
||||
<!-- 顶和踩 在这里添加 -->
|
||||
<span id="praise_tread" style="float: right">
|
||||
<%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @issue,:show_flag => true,:user_id =>User.current.id,:horizontal => false}%>
|
||||
</span>
|
||||
|
||||
<p class="author">
|
||||
<%= authoring @issue.created_on, @issue.author %>.
|
||||
<% if @issue.created_on != @issue.updated_on %>
|
||||
<%= l(:label_updated_time, time_tag(@issue.updated_on)).html_safe %>.
|
||||
<% end %>
|
||||
</p>
|
||||
<!-- added by william -for tag -->
|
||||
<div id="tags">
|
||||
<%= render :partial => 'tags/tag', :locals => {:obj => @issue,:object_flag => "3" }%>
|
||||
</div>
|
||||
<table class="attributes">
|
||||
<%= issue_fields_rows do |rows|
|
||||
rows.left l(:field_status), h(@issue.status.name), :class => 'status'
|
||||
rows.left l(:field_priority), h(@issue.priority.name), :class => 'priority'
|
||||
|
||||
unless @issue.disabled_core_fields.include?('assigned_to_id')
|
||||
#modified by nie
|
||||
#modified by huang
|
||||
rows.left l(:field_assigned_to), (image_tag url_to_avatar(@issue.assigned_to(@user)), :class => 'avatar').to_s.html_safe + (@issue.assigned_to ? link_to_user(@issue.assigned_to) : "-"), :class => 'assigned-to'
|
||||
end
|
||||
# end huang
|
||||
unless @issue.disabled_core_fields.include?('category_id')
|
||||
rows.left l(:field_category), h(@issue.category ? @issue.category.name : "-"), :class => 'category'
|
||||
end
|
||||
unless @issue.disabled_core_fields.include?('fixed_version_id')
|
||||
rows.left l(:field_fixed_version), (@issue.fixed_version ? link_to_version(@issue.fixed_version) : "-"), :class => 'fixed-version'
|
||||
end
|
||||
|
||||
unless @issue.disabled_core_fields.include?('start_date')
|
||||
rows.right l(:field_start_date), format_date(@issue.start_date), :class => 'start-date'
|
||||
end
|
||||
unless @issue.disabled_core_fields.include?('due_date')
|
||||
rows.right l(:field_due_date), format_date(@issue.due_date), :class => 'due-date'
|
||||
end
|
||||
unless @issue.disabled_core_fields.include?('done_ratio')
|
||||
rows.right l(:field_done_ratio), progress_bar(@issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%"), :class => 'progress'
|
||||
end
|
||||
unless @issue.disabled_core_fields.include?('estimated_hours')
|
||||
unless @issue.estimated_hours.nil?
|
||||
rows.right l(:field_estimated_hours), l_hours(@issue.estimated_hours), :class => 'estimated-hours'
|
||||
end
|
||||
end
|
||||
if User.current.allowed_to?(:view_time_entries, @project)
|
||||
rows.right l(:label_spent_time), (@issue.total_spent_hours > 0 ? link_to(l_hours(@issue.total_spent_hours), project_issue_time_entries_path(@project, @issue)) : "-"), :class => 'spent-time'
|
||||
end
|
||||
end %>
|
||||
<%= render_custom_fields_rows(@issue) %>
|
||||
<%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
|
||||
</table>
|
||||
woca
|
||||
<% if @issue.description? || @issue.attachments.any? -%>
|
||||
<hr />
|
||||
<% if @issue.description? %>
|
||||
<div class="description">
|
||||
<div class="contextual">
|
||||
<%= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %>
|
||||
</div>
|
||||
|
||||
<p><strong><%=l(:field_description)%></strong></p>
|
||||
<div class="wiki">
|
||||
<%= textilizable @issue, :description, :attachments => @issue.attachments %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= link_to_attachments @issue, :thumbnails => true %>
|
||||
<% end -%>
|
||||
|
||||
<%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
|
||||
|
||||
<% if false # !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
|
||||
<hr />
|
||||
|
||||
<div id="issue_tree">
|
||||
<div class="contextual">
|
||||
<%= link_to_new_subtask(@issue) if User.current.allowed_to?(:manage_subtasks, @project) %>
|
||||
</div>
|
||||
|
||||
<p><strong><%=l(:label_subtask_plural)%></strong></p>
|
||||
<%= render_descendants_tree(@issue) unless @issue.leaf? %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %>
|
||||
<hr />
|
||||
<div id="relations">
|
||||
<%= render :partial => 'relations' %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
|
||||
<% if @changesets.present? %>
|
||||
<div id="issue-changesets">
|
||||
<h3><%=l(:label_associated_revisions)%></h3>
|
||||
<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if @journals.present? %>
|
||||
<div id="history">
|
||||
<h3><%=l(:label_history)%></h3>
|
||||
<%= render :partial => 'history', :locals => { :issue => @issue, :journals => @journals } %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
<%= render :partial => 'action_menu' %>
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
<% if @issue.editable? %>
|
||||
<div id="update">
|
||||
<h3><%= l(:button_update) %></h3>
|
||||
<%= render :partial => 'edit' %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% other_formats_links do |f| %>
|
||||
<%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
|
||||
<%= f.link_to 'PDF' %>
|
||||
<% end %>
|
||||
|
||||
|
||||
<% content_for :sidebar do %>
|
||||
<%= render :partial => 'issues/sidebar' %>
|
||||
|
||||
<% if User.current.allowed_to?(:add_issue_watchers, @project) ||
|
||||
(@issue.watchers.present? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
|
||||
<div id="watchers">
|
||||
<%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% content_for :header_tags do %>
|
||||
<%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
|
||||
<% end %>
|
||||
|
||||
<%= context_menu issues_context_menu_path %>
|
||||
<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}" %>
|
||||
|
||||
<%= render :partial => 'action_menu' %>
|
||||
|
||||
<h3>
|
||||
<%= issue_heading(@issue) %>
|
||||
</h3>
|
||||
|
||||
<style type="text/css"></style>
|
||||
|
||||
<div class="<%= @issue.css_classes %> details">
|
||||
<% if @prev_issue_id || @next_issue_id %>
|
||||
<div class="next-prev-links contextual">
|
||||
<%= link_to_if @prev_issue_id,
|
||||
"\xc2\xab #{l(:label_previous)}",
|
||||
(@prev_issue_id ? issue_path(Issue.find_by_id(@prev_issue_id)) : nil),
|
||||
:title => "##{@prev_issue_id}" %> |
|
||||
<% if @issue_position && @issue_count %>
|
||||
<span class="position"><%= l(:label_item_position, :position => @issue_position, :count => @issue_count) %></span> |
|
||||
<% end %>
|
||||
<%= link_to_if @next_issue_id,
|
||||
"#{l(:label_next)} \xc2\xbb",
|
||||
(@next_issue_id ? issue_path(Issue.find_by_id(@next_issue_id)) : nil),
|
||||
:title => "##{@next_issue_id}" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<!-- <%#= avatar(@issue.author, :size => "50") %> -->
|
||||
|
||||
<div class="subject" style="word-wrap: break-word;">
|
||||
<%= render_issue_subject_with_tree(@issue) %>
|
||||
</div>
|
||||
|
||||
<!-- 顶和踩 在这里添加 -->
|
||||
<span id="praise_tread" style="float: right">
|
||||
<%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @issue,:show_flag => true,:user_id =>User.current.id,:horizontal => false}%>
|
||||
</span>
|
||||
|
||||
<p class="author">
|
||||
<%= authoring @issue.created_on, @issue.author %>.
|
||||
<% if @issue.created_on != @issue.updated_on %>
|
||||
<%= l(:label_updated_time, time_tag(@issue.updated_on)).html_safe %>.
|
||||
<% end %>
|
||||
</p>
|
||||
<!-- added by william -for tag -->
|
||||
<div id="tags">
|
||||
<%= render :partial => 'tags/tag', :locals => {:obj => @issue,:object_flag => "3" }%>
|
||||
</div>
|
||||
<table class="attributes">
|
||||
<%= issue_fields_rows do |rows|
|
||||
rows.left l(:field_status), h(@issue.status.name), :class => 'status'
|
||||
rows.left l(:field_priority), h(@issue.priority.name), :class => 'priority'
|
||||
|
||||
unless @issue.disabled_core_fields.include?('assigned_to_id')
|
||||
#modified by nie
|
||||
#modified by huang
|
||||
rows.left l(:field_assigned_to), (image_tag url_to_avatar(@issue.assigned_to(@user)), :class => 'avatar').to_s.html_safe + (@issue.assigned_to ? link_to_user(@issue.assigned_to) : "-"), :class => 'assigned-to'
|
||||
end
|
||||
# end huang
|
||||
unless @issue.disabled_core_fields.include?('category_id')
|
||||
rows.left l(:field_category), h(@issue.category ? @issue.category.name : "-"), :class => 'category'
|
||||
end
|
||||
unless @issue.disabled_core_fields.include?('fixed_version_id')
|
||||
rows.left l(:field_fixed_version), (@issue.fixed_version ? link_to_version(@issue.fixed_version) : "-"), :class => 'fixed-version'
|
||||
end
|
||||
|
||||
unless @issue.disabled_core_fields.include?('start_date')
|
||||
rows.right l(:field_start_date), format_date(@issue.start_date), :class => 'start-date'
|
||||
end
|
||||
unless @issue.disabled_core_fields.include?('due_date')
|
||||
rows.right l(:field_due_date), format_date(@issue.due_date), :class => 'due-date'
|
||||
end
|
||||
unless @issue.disabled_core_fields.include?('done_ratio')
|
||||
rows.right l(:field_done_ratio), progress_bar(@issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%"), :class => 'progress'
|
||||
end
|
||||
unless @issue.disabled_core_fields.include?('estimated_hours')
|
||||
unless @issue.estimated_hours.nil?
|
||||
rows.right l(:field_estimated_hours), l_hours(@issue.estimated_hours), :class => 'estimated-hours'
|
||||
end
|
||||
end
|
||||
if User.current.allowed_to?(:view_time_entries, @project)
|
||||
rows.right l(:label_spent_time), (@issue.total_spent_hours > 0 ? link_to(l_hours(@issue.total_spent_hours), project_issue_time_entries_path(@project, @issue)) : "-"), :class => 'spent-time'
|
||||
end
|
||||
end %>
|
||||
<%= render_custom_fields_rows(@issue) %>
|
||||
<%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
|
||||
</table>
|
||||
|
||||
<% if @issue.description? || @issue.attachments.any? -%>
|
||||
<hr />
|
||||
<% if @issue.description? %>
|
||||
<div class="description">
|
||||
<div class="contextual">
|
||||
<%= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %>
|
||||
</div>
|
||||
|
||||
<p><strong><%=l(:field_description)%></strong></p>
|
||||
<div class="wiki">
|
||||
<%= textilizable @issue, :description, :attachments => @issue.attachments %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= link_to_attachments @issue, :thumbnails => true %>
|
||||
<% end -%>
|
||||
|
||||
<%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
|
||||
|
||||
<% if false # !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
|
||||
<hr />
|
||||
|
||||
<div id="issue_tree">
|
||||
<div class="contextual">
|
||||
<%= link_to_new_subtask(@issue) if User.current.allowed_to?(:manage_subtasks, @project) %>
|
||||
</div>
|
||||
|
||||
<p><strong><%=l(:label_subtask_plural)%></strong></p>
|
||||
<%= render_descendants_tree(@issue) unless @issue.leaf? %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %>
|
||||
<hr />
|
||||
<div id="relations">
|
||||
<%= render :partial => 'relations' %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
|
||||
<% if @changesets.present? %>
|
||||
<div id="issue-changesets">
|
||||
<h3><%=l(:label_associated_revisions)%></h3>
|
||||
<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if @journals.present? %>
|
||||
<div id="history">
|
||||
<h3><%=l(:label_history)%></h3>
|
||||
<%= render :partial => 'history', :locals => { :issue => @issue, :journals => @journals } %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
<%= render :partial => 'action_menu' %>
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
<% if @issue.editable? %>
|
||||
<div id="update">
|
||||
<h3><%= l(:button_update) %></h3>
|
||||
<%= render :partial => 'edit' %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% other_formats_links do |f| %>
|
||||
<%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
|
||||
<%= f.link_to 'PDF' %>
|
||||
<% end %>
|
||||
|
||||
|
||||
<% content_for :sidebar do %>
|
||||
<%= render :partial => 'issues/sidebar' %>
|
||||
|
||||
<% if User.current.allowed_to?(:add_issue_watchers, @project) ||
|
||||
(@issue.watchers.present? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
|
||||
<div id="watchers">
|
||||
<%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% content_for :header_tags do %>
|
||||
<%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
|
||||
<% end %>
|
||||
|
||||
<%= context_menu issues_context_menu_path %>
|
||||
|
|
|
@ -194,7 +194,7 @@
|
|||
</strong>
|
||||
<% if show_more_fans?(@bid) %>
|
||||
<span style="display:inline-block; font-size: 12px; float:right; margin-bottom: -4px;">
|
||||
<%= link_to l(:label_more), :controller => 'bids', :action => 'show_bid_user'%>
|
||||
<%= link_to l(:button_more), :controller => 'bids', :action => 'show_bid_user'%>
|
||||
</span>
|
||||
<% end %>
|
||||
</div>
|
||||
|
@ -217,7 +217,7 @@
|
|||
</strong>
|
||||
<% if show_more_bid_project?(@bid) %>
|
||||
<span style="display:inline-block; font-size: 12px; float:right; margin-bottom: -4px;">
|
||||
<%= link_to l(:label_more), :controller => 'bids', :action => 'show_project'%>
|
||||
<%= link_to l(:button_more), :controller => 'bids', :action => 'show_project'%>
|
||||
</span>
|
||||
<% end %>
|
||||
</div>
|
||||
|
@ -244,7 +244,7 @@
|
|||
</strong>
|
||||
<% if show_more_participate?(@bid) %>
|
||||
<span style="font-size: 12px; display: inline; float: right;" >
|
||||
<%= link_to l(:label_more), :controller => "bids", :action => "show_participator"%>
|
||||
<%= link_to l(:button_more), :controller => "bids", :action => "show_participator"%>
|
||||
</span>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -215,7 +215,7 @@
|
|||
<%= l(:label_x_followers, :count => @contest.watcher_users.count) %>
|
||||
</strong>
|
||||
<% if show_more_fans?(@contest) %>
|
||||
<span style="display:inline-block; font-size: 12px; float:right; margin-bottom: -4px;"><%= link_to l(:label_more), show_contest_user_contest_path(@contest) %></span>
|
||||
<span style="display:inline-block; font-size: 12px; float:right; margin-bottom: -4px;"><%= link_to l(:button_more), show_contest_user_contest_path(@contest) %></span>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="left_wf">
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
<%= image_tag(url_to_avatar(@project), :style => 'width:61px; height:61px;') %>
|
||||
</div>
|
||||
<div class="pr_info_id fl mb5">
|
||||
ID:<%= @project.id %>
|
||||
<%= l(:label_project_id)%><%= @project.id %>
|
||||
</div>
|
||||
<!--关注、申请加入/退出项目-->
|
||||
<div id="join_exit_project_div">
|
||||
|
@ -126,7 +126,9 @@
|
|||
<%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :style => "color:#3CA5C6;font-weight:bold" %></span>)
|
||||
<span>| </span>
|
||||
<%= l(:project_module_attachments) %>(<span class="info_foot_num" >
|
||||
<%= link_to "#{@project.attachments.count}", project_files_path(@project), :style => "color:#3CA5C6;font-weight:bold" %></a>)</div>
|
||||
<% attaments_num = @project.attachments.count+Attachment.where(["`container_type` = 'Version' and `container_id` in (?)",@project.versions.map{ |v| v.id}]).all.count %>
|
||||
<%= link_to "#{attaments_num}", project_files_path(@project), :style => "color:#3CA5C6;font-weight:bold" %></span>)
|
||||
</div>
|
||||
<div class="cl"></div>
|
||||
</div><!--项目信息 end-->
|
||||
|
||||
|
@ -168,9 +170,9 @@
|
|||
<% end%>
|
||||
<% unless @project.enabled_modules.where("name = 'files'").empty? %>
|
||||
<div class="subNav">
|
||||
<%= link_to l(:label_course_file), project_files_path(@project), :style => "color:#3CA5C6" %>
|
||||
<% unless @project.attachments.count == 0 %>
|
||||
<span class="subnav_num">(<%= @project.attachments.count %>)</span>
|
||||
<%= link_to l(:project_module_files), project_files_path(@project), :style => "color:#3CA5C6" %>
|
||||
<% unless attaments_num == 0 %>
|
||||
<span class="subnav_num">(<%= attaments_num %>)</span>
|
||||
<% end %>
|
||||
<% if User.current.member_of?(@project) %>
|
||||
<%= link_to "+"+l(:label_upload_files), project_files_path(@project,:flag => true),:style => "font-size:12px;color:#fff; padding:1px 3px 3px 3px;height:16px;margin-top:4px;background:#28be6c;float:right;line-height:20px;" %>
|
||||
|
@ -187,7 +189,7 @@
|
|||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="subNav subNav_jiantou"><%= l(:label_more) %></div>
|
||||
<div class="subNav subNav_jiantou"><%= l(:label_project_more) %></div>
|
||||
<ul class="navContent" style="padding-left: 0px">
|
||||
<%= render 'projects/tools_expand' %>
|
||||
</ul>
|
||||
|
|
|
@ -258,10 +258,10 @@
|
|||
<% else %>
|
||||
<tr>
|
||||
<td style=" float: right" width="70px" >
|
||||
<%= l(:label_identity)%>:
|
||||
<span style="float: right"><%= l(:label_identity)%>:</span>
|
||||
</td>
|
||||
<td class="font_lighter_sidebar" style="padding-left: 0px" width="170px">
|
||||
<%= l(:label_account_student) %>
|
||||
<%= l(:label_account_identity_student) %>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
@ -269,10 +269,10 @@
|
|||
<% elsif @user.user_extensions.identity == 3 %>
|
||||
<tr>
|
||||
<td style=" float: right" width="70px" >
|
||||
<%= l(:label_identity)%>:
|
||||
<span style="float: right"><%= l(:label_identity)%>:</span>
|
||||
</td>
|
||||
<td class="font_lighter_sidebar" style="padding-left: 0px" width="170px">
|
||||
<%= l(:label_account_developer) %>
|
||||
<%= l(:label_account_identity_developer) %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
@ -295,7 +295,7 @@
|
|||
</strong>
|
||||
<% if show_more_watchers?(@user) %>
|
||||
<div style="font-size: 11px; display: inline; float: right; margin-top: 5px; margin-right: 20px" >
|
||||
<%= link_to l(:label_more), :controller => "users", :action => "user_watchlist"%>
|
||||
<%= link_to l(:button_more), :controller => "users", :action => "user_watchlist"%>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
@ -319,7 +319,7 @@
|
|||
</strong>
|
||||
<% if show_more_fans?(@user) %>
|
||||
<div style="font-size: 11px; display: inline; float: right; margin-top: 5px; margin-right: 20px" >
|
||||
<%= link_to l(:label_more), :controller => "users", :action => "user_fanslist"%>
|
||||
<%= link_to l(:button_more), :controller => "users", :action => "user_fanslist"%>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -41,7 +41,8 @@ a:hover.mail_reply{ background:#06a9bc; text-decoration:none;}
|
|||
<div class="container" style="margin:0; padding:0; border:0;">
|
||||
<div class="mail" style="width:600px; margin:20px; height:auto; color:#4b4b4b; font-size:14px; margin:0; padding:0; border:0;">
|
||||
<div class="mail_head" style="margin:0; padding:0; border:0;">
|
||||
<p><%= l(:mail_issue_greetings)%></p>
|
||||
|
||||
|
||||
</div><!--mail_head end-->
|
||||
<%= yield %>
|
||||
</div>
|
||||
|
|
|
@ -57,6 +57,9 @@
|
|||
</style>
|
||||
|
||||
<div class="lz">
|
||||
<div class="project_r_h">
|
||||
<h2 class="project_h2"><%= h @board.name %></h2>
|
||||
</div>
|
||||
<!-- 在这里添加赞和踩-->
|
||||
<span id="praise_tread" style="float: right">
|
||||
<%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @topic,:show_flag => true,:user_id =>User.current.id,:horizontal => true}%>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<%= error_messages_for @news %>
|
||||
.<%= error_messages_for @news %>
|
||||
<div class="add_frame_header" >
|
||||
<%= @project ? l(:label_news_new) : l(:bale_news_notice) %>
|
||||
</div>
|
||||
|
|
|
@ -72,9 +72,9 @@
|
|||
:html => { :id => 'news-form', :multipart => true, :method => :put } do |f| %>
|
||||
<%= render :partial => 'form', :locals => { :f => f } %>
|
||||
<%#= submit_tag l(:button_save) %>
|
||||
<%= link_to l(:button_save), "#", :onclick => 'submitNews();',:onmouseover => 'this.focus()',:class => 'whiteButton m3p10' %>
|
||||
<%= link_to l(:button_save), "#", :onclick => 'submitNews();',:onmouseover => 'this.focus()',:class => 'ButtonColor m3p10' %>
|
||||
<%#= preview_link preview_news_path(:project_id => @project, :id => @news), 'news-form',target='preview',{:class => 'whiteButton m3p10'} %>
|
||||
<%= link_to l(:button_cancel), "#", :onclick => '$("#edit-news").hide(); return false;',:class => 'whiteButton m3p10' %>
|
||||
<%= link_to l(:button_cancel), "#", :onclick => '$("#edit-news").hide(); return false;',:class => 'ButtonColor m3p10'%>
|
||||
<% end %>
|
||||
<div id="preview" class="wiki"></div>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="well">
|
||||
<% next if member.new_record? %>
|
||||
<% unless member.created_on.nil? %>
|
||||
<%= content_tag "p", "#{format_date(member.created_on)}#{l(:label_member_since)}", :class => "float_right member_since" %>
|
||||
<%= content_tag "p", (User.current.language == ""|| User.current.language == "zh")?("#{format_date(member.created_on)}"+" "+"#{l(:label_member_since)}"):("#{l(:label_member_since)}"+" "+"#{format_date(member.created_on)}"), :class => "float_right member_since" %>
|
||||
<% end %>
|
||||
<%= member.user.nil? ? '' : (image_tag(url_to_avatar(member.user), :class => 'avatar')) %>
|
||||
<%= content_tag "div", link_to(member.user.name, user_path(member.user)), :class => "nomargin avatar_name" %>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
</li>
|
||||
<li>
|
||||
<% unless @project.enabled_modules.where("name = 'dts'").empty? %>
|
||||
<%= link_to l(:label_module_share) ,share_show_path(@project) %>
|
||||
<%= link_to l(:project_module_dts) ,share_show_path(@project) %>
|
||||
<% end %>
|
||||
</li>
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
</div>
|
||||
<div class="cl"></div>
|
||||
<div class="box_main">
|
||||
<div style="padding-left: 20px;">
|
||||
<h3 class="box_h3"><%= l(:label_invite_new_user)%></h3>
|
||||
<p class="box_p">
|
||||
<%= l(:label_invite_email_tips)%>
|
||||
|
@ -62,5 +63,6 @@
|
|||
</a>
|
||||
<%#= submit_tag '免费发送', :style => "display:block; width:80px; text-align:center; color:#fff; height:26px; padding-top:3px; margin-bottom:10px;" %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -17,7 +17,7 @@
|
|||
<tr>
|
||||
<td colspan="2" width="580px" ><p class="font_description">
|
||||
<% unless user.memberships.empty? %>
|
||||
<%= l(:label_contribute_to, :project_count => "#{user.memberships.count}") %>
|
||||
<%= l(:label_contribute_to, :count => user.memberships.count) %>
|
||||
<% for member in user.memberships %>
|
||||
<%= link_to_project(member.project) %><%= (user.memberships.last == member) ? '' : ',' %>
|
||||
<% end %>
|
||||
|
@ -25,7 +25,7 @@
|
|||
</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="200" align="right" class="font_lighter"><%= l(:label_user_joinin) %><%= format_date(user.created_on) %>
|
||||
<td width="200" align="right" class="font_lighter"><%= l(:label_user_joinin) %> <%= format_date(user.created_on) %>
|
||||
</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
|
|
|
@ -1,32 +1,30 @@
|
|||
<div id="tags_show">
|
||||
<div id="tags_show" style="float: left;">
|
||||
<%= render :partial => "tags/tag_name",:locals => {:obj => obj,:non_list_all => false ,:object_flag => object_flag} %>
|
||||
</div>
|
||||
<div style="float: left;">
|
||||
<% if User.current.logged? %>
|
||||
<span> <%= toggle_link (l(:label_add_tag)), '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| %>
|
||||
<table>
|
||||
:update => "tags_show",
|
||||
:complete => '$("#put-tag-form").slideUp();' do |f| %>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<%= f.text_field :name ,:id => "tags_name",:size=>"20",
|
||||
:require=>true,
|
||||
:maxlength => Setting.tags_max_length,
|
||||
:minlength=>Setting.tags_min_length %>
|
||||
:require=>true,
|
||||
:maxlength => Setting.tags_max_length,
|
||||
:minlength=>Setting.tags_min_length %>
|
||||
</td>
|
||||
|
||||
<%= f.text_field :object_id,:value=> obj.id,:style=>"display:none"%>
|
||||
|
||||
|
||||
<%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%>
|
||||
|
||||
<td style="margin-left: 5px">
|
||||
<td style="margin-left: 5px" vertical-valign="middle" >
|
||||
<a href="#" onclick='$("#tags_name").parent().submit();' type="button" class="submit f_l"></a>
|
||||
</td>
|
||||
<tr>
|
||||
</table>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -24,19 +24,19 @@
|
|||
|
||||
<%= file.description %>
|
||||
<div class="c9 gray-color">
|
||||
<%= l('label_attachment_category')%>
|
||||
<%= l('attachment.category')%>
|
||||
<%=result_come_from file%>
|
||||
</div>
|
||||
<span class="gray blue-color">
|
||||
<%= l('label_attachment_download_num')%>
|
||||
<%= l('attachment.download_num')%>
|
||||
<%= file.downloads%>|
|
||||
<%= l('label_attachment_size')%>
|
||||
<%= l('attachment.size')%>
|
||||
<%= number_to_human_size(file.filesize) %>|
|
||||
<%= l('label_attachment_sharer')%>
|
||||
<%= l('attachment.sharer')%>
|
||||
<a class="gray" >
|
||||
<%= link_to file.author, user_path(file.author), target: "_blank" unless file.author.blank? %>
|
||||
</a>|
|
||||
<%= l('label_attachment_upload_time')%>
|
||||
<%= l('attachment.upload_time')%>
|
||||
<%= format_time(file.created_on) %>
|
||||
</span>
|
||||
<div style="display: none"></div>
|
||||
|
|
|
@ -31,7 +31,12 @@
|
|||
<!-- 用来显示三大对象的主页中的tag 故是全部显示 -->
|
||||
<% if @tags.size > 0 %>
|
||||
<% @tags.each do |tag| %>
|
||||
<div id="tag">
|
||||
<!--项目暂时单独出来,后面重构-->
|
||||
<% if object_flag == '2' %>
|
||||
<span class="re_tag f_l">
|
||||
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %></span>
|
||||
<% else %>
|
||||
<div id="tag">
|
||||
<span class="tag_show">
|
||||
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %>
|
||||
<!-- 对用户主页 是本人 ,对项目,需求,问题是管理员 -->
|
||||
|
@ -43,13 +48,6 @@
|
|||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '2' %>
|
||||
<% if (ProjectInfo.find_by_project_id(obj.id)).try(:user_id) == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '3' %>
|
||||
<% if (ProjectInfo.find_by_project_id(obj.project_id)).try(:user_id) == User.current.id %>
|
||||
<span class='del'>
|
||||
|
@ -101,6 +99,7 @@
|
|||
<% end %>
|
||||
</span>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
|
@ -16,8 +16,8 @@
|
|||
<div class="menu">
|
||||
<%= link_to "#{l(:label_course_new)}", new_course_path, class: 'icon icon-add' if @user == User.current %>
|
||||
<ul>
|
||||
<li mode='doing' class="on"><%= l(:label_course_doing)%></li>
|
||||
<li mode='end'><%= l(:label_course_done)%></li>
|
||||
<li mode='doing' class="on"><%= l('user.courses.doing')%></li>
|
||||
<li mode='end'><%= l('user.courses.done')%></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</span>
|
||||
<% end %>
|
||||
<%= link_to( project.name, project_path(project.id), :class => "d-g-blue d-p-project-name",:title => "#{project.name}" )%>
|
||||
(<%= link_to l(:label_project_member_amount, :count=>projectCount(project)), project_member_path(project) ,:course =>'0' %>)
|
||||
(<%= link_to l(:label_project_member_amount, :count => projectCount(project)), project_member_path(project) ,:course =>'0' %>)
|
||||
</div>
|
||||
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
|
||||
<span class='font_lighter' title ='<%= project.short_description%>'> <%=project.description.truncate(90, omission: '...')%> </span>
|
||||
|
|
|
@ -115,7 +115,7 @@
|
|||
<div class="forum-topic" style="height: 25px; width: 98%; margin-left: 2px;">
|
||||
<h3 style="color: rgb(21, 188, 207);"><strong> <%= l(:lable_bar_active)%> </strong> <%= link_to l(:label_my_question) , newbie_send_path, {:class => 'orangeButton idea_btn', :style => "color: #EEEEEE" }%>
|
||||
<%= link_to l(:label_my_feedback) , suggestion_send_path, {:class => 'orangeButton idea_btn', :style => "color: #EEEEEE" }%> </h3>
|
||||
<span style="margin-top: -30px;float: right; display: block;"> <%= link_to l(:label_more), forums_path %> </span>
|
||||
<span style="margin-top: -30px;float: right; display: block;"> <%= link_to l(:button_more), forums_path %> </span>
|
||||
</div>
|
||||
<div class="welcome-box-list-new memo_activity">
|
||||
<% topics = find_new_forum_topics(12) %>
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
RailsKindeditor.setup do |config|
|
||||
|
||||
# Specify the subfolders in public directory.
|
||||
# You can customize it , eg: config.upload_dir = 'this/is/my/folder'
|
||||
config.upload_dir = 'files/uploads'
|
||||
|
||||
# Allowed file types for upload.
|
||||
config.upload_image_ext = %w[gif jpg jpeg png bmp]
|
||||
config.upload_flash_ext = %w[swf flv]
|
||||
config.upload_media_ext = %w[swf flv mp3 wav wma wmv mid avi mpg asf rm rmvb]
|
||||
config.upload_file_ext = %w[doc docx xls xlsx ppt htm html txt zip rar gz bz2]
|
||||
|
||||
# Porcess upload image size
|
||||
# eg: 1600x1600 => 800x800
|
||||
# 1600x800 => 800x400
|
||||
# 400x400 => 400x400 # No Change
|
||||
# config.image_resize_to_limit = [800, 800]
|
||||
|
||||
end
|
|
@ -138,10 +138,7 @@ en:
|
|||
circular_dependency: "This relation would create a circular dependency"
|
||||
cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks"
|
||||
|
||||
attachment_all: "All"
|
||||
attachment_browse: "Attachment Content Browse"
|
||||
attachment_sufix_browse: "Attachment Type Browse"
|
||||
attachment_type: "Attachment Type"
|
||||
|
||||
general_text_No: 'No'
|
||||
general_text_Yes: 'Yes'
|
||||
general_text_no: 'no'
|
||||
|
@ -166,7 +163,6 @@ en:
|
|||
label_requirement: Calls
|
||||
label_forum: Forum
|
||||
label_contest: Contest
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -189,7 +185,7 @@ en:
|
|||
|
||||
text_are_you_sure: Are you sure? #js 提示
|
||||
|
||||
|
||||
label_no_data: No data to display
|
||||
# 项目、课程、用户公用
|
||||
label_settings: Settings
|
||||
label_information_plural: Information
|
||||
|
@ -206,11 +202,12 @@ en:
|
|||
button_cancel: Cancel
|
||||
label_submit: Submit
|
||||
button_project_tags_add: Add
|
||||
label_more: "More>>"
|
||||
button_download: Download
|
||||
button_more: "More»"
|
||||
button_delete: Delete
|
||||
|
||||
|
||||
button_unfollow: Unfollow
|
||||
button_follow: Follow
|
||||
button_browse: Browse
|
||||
|
||||
|
||||
#
|
||||
|
|
|
@ -147,10 +147,7 @@ zh:
|
|||
cant_link_an_issue_with_a_descendant: "问题不能关联到它的子任务"
|
||||
groupname_repeat: "该班名已存在"
|
||||
|
||||
attachment_all: "全部"
|
||||
attachment_sufix_browse: "文件类型"
|
||||
attachment_browse: "内容类型"
|
||||
attachment_type: '分类'
|
||||
|
||||
general_text_No: '否'
|
||||
general_text_Yes: '是'
|
||||
general_text_no: '否'
|
||||
|
@ -190,7 +187,10 @@ zh:
|
|||
|
||||
|
||||
text_are_you_sure: 您确定要删除吗? #js 提示
|
||||
|
||||
|
||||
|
||||
|
||||
label_no_data: 没有任何数据可供显示
|
||||
# 项目、课程、用户公用
|
||||
label_settings: 配置
|
||||
label_information_plural: 信息
|
||||
|
@ -207,10 +207,14 @@ zh:
|
|||
button_cancel: 取消
|
||||
label_submit: 提交
|
||||
button_project_tags_add: 增加
|
||||
label_more: "更多>>"
|
||||
button_download: 下载
|
||||
button_more: 更多
|
||||
button_more: "更多»"
|
||||
button_delete: 删除
|
||||
button_unfollow: 取消关注
|
||||
button_follow: 关注
|
||||
button_watch: 跟踪
|
||||
button_unwatch: 取消跟踪
|
||||
button_browse: 浏览
|
||||
|
||||
|
||||
#
|
||||
|
|
|
@ -2,3 +2,13 @@ en:
|
|||
# Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
|
||||
direction: ltr
|
||||
|
||||
#
|
||||
# 竞赛托管平台
|
||||
#
|
||||
# 主页
|
||||
#
|
||||
label_current_hot_contest: Latest Hot Competition
|
||||
label_current_attendingcontest_work: Latest Competition Work
|
||||
label_issue_feedback_activities: Question&Feedback
|
||||
label_more_information: More...
|
||||
label_release_time: Release-time
|
|
@ -3,4 +3,15 @@
|
|||
# by tsechingho (http://github.com/tsechingho)
|
||||
zh:
|
||||
# Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
|
||||
direction: ltr
|
||||
direction: ltr
|
||||
|
||||
#
|
||||
# 竞赛托管平台
|
||||
#
|
||||
# 主页
|
||||
#
|
||||
label_current_hot_contest: 最新热门竞赛
|
||||
label_current_attendingcontest_work: 最新参赛作品
|
||||
label_issue_feedback_activities: 问题和反馈动态
|
||||
label_more_information: 更多>>
|
||||
label_release_time: 发布时间
|
||||
|
|
|
@ -71,10 +71,9 @@ en:
|
|||
|
||||
field_summary: Summary
|
||||
field_job_category: Job category # added by bai
|
||||
field_filename: File
|
||||
field_file_dense: File Dense
|
||||
field_filesize: Size
|
||||
field_downloads: Downloads
|
||||
|
||||
|
||||
|
||||
field_author: Author
|
||||
field_created_on: Created
|
||||
field_closed_on: Closed
|
||||
|
@ -108,7 +107,6 @@ en:
|
|||
field_last_login_on: Last connection
|
||||
|
||||
field_effective_date: Date
|
||||
field_version: Version
|
||||
field_type: Type
|
||||
field_host: Host
|
||||
field_port: Port
|
||||
|
@ -329,10 +327,7 @@ en:
|
|||
permission_notificationcomment_contestnotifications: Add the notice of contest comments
|
||||
permission_upload_attachments: Uploading resource
|
||||
|
||||
project_module_issue_tracking: Issue tracking
|
||||
project_module_time_tracking: Time tracking
|
||||
project_module_files: Files
|
||||
project_module_boards: Forums
|
||||
|
||||
# edit by meng
|
||||
lable_hot_course: Hot Courses
|
||||
label_course_join_student: Join a course
|
||||
|
@ -343,8 +338,7 @@ en:
|
|||
label_create_new_projects: Create a project
|
||||
label_work_scores_people: The total number of users given scores
|
||||
label_project_grade: Score
|
||||
label_user_for_project_grade: Score
|
||||
label_relation_files: Select an existing resource
|
||||
|
||||
# Personal signature tips
|
||||
|
||||
|
||||
|
@ -481,13 +475,11 @@ en:
|
|||
label_text: Long text
|
||||
label_attribute: Attribute
|
||||
label_attribute_plural: Attributes
|
||||
label_no_data: No data to display
|
||||
label_change_status: Change status
|
||||
label_history: History
|
||||
label_attachment: Files
|
||||
label_attachment_new: New file
|
||||
label_attachment_delete: Delete file
|
||||
label_attachment_plural: Files
|
||||
|
||||
label_file_added: File added
|
||||
label_report: Report
|
||||
label_report_plural: Reports
|
||||
|
@ -617,12 +609,10 @@ en:
|
|||
label_latest_revision_plural: Latest revisions
|
||||
label_view_revisions: View revisions
|
||||
label_view_all_revisions: View all revisions
|
||||
label_max_size: Maximum size
|
||||
label_sort_highest: Move to top
|
||||
label_sort_higher: Move up
|
||||
label_sort_lower: Move down
|
||||
label_sort_lowest: Move to bottom
|
||||
label_roadmap: Roadmap
|
||||
label_roadmap_due_in: "Due in %{value}"
|
||||
label_roadmap_overdue: "%{value} late"
|
||||
label_roadmap_no_issues: No issues for this version
|
||||
|
@ -727,7 +717,6 @@ en:
|
|||
label_plugins: Plugins
|
||||
label_ldap_authentication: LDAP authentication
|
||||
label_downloads_abbr: D/L
|
||||
label_optional_description: Optional description
|
||||
label_add_another_file: Add another file
|
||||
label_preferences: Preferences
|
||||
label_chronological_order: In chronological order
|
||||
|
@ -797,7 +786,7 @@ en:
|
|||
label_cross_project_hierarchy: With project hierarchy
|
||||
label_cross_project_system: With all projects
|
||||
label_gantt_progress_line: Progress line
|
||||
label_files_filter: Files Filter:
|
||||
|
||||
|
||||
button_check_all: Check all
|
||||
button_uncheck_all: Uncheck all
|
||||
|
@ -896,7 +885,7 @@ en:
|
|||
text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?'
|
||||
text_issues_destroy_descendants_confirmation: "This will also delete %{count} subtask(s)."
|
||||
text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?'
|
||||
text_select_project_modules: 'Select modules to enable for this project:'
|
||||
|
||||
text_default_administrator_account_changed: Default administrator account changed
|
||||
text_file_repository_writable: Attachments directory writable
|
||||
text_plugin_assets_writable: Plugin assets directory writable
|
||||
|
@ -936,9 +925,7 @@ en:
|
|||
text_turning_multiple_off: "If you disable multiple values, multiple values will be removed in order to preserve only one value per item."
|
||||
text_applied_project: "User %{id} Apply Join Project %{project}"
|
||||
|
||||
default_role_manager: Manager
|
||||
default_role_developer: Developer
|
||||
default_role_reporter: Reporter
|
||||
|
||||
default_tracker_bug: Bug
|
||||
default_tracker_feature: Feature
|
||||
default_tracker_support: Support
|
||||
|
@ -1022,8 +1009,7 @@ en:
|
|||
#end by huang
|
||||
|
||||
#added by liuping
|
||||
button_unfollow: Unfollow
|
||||
button_follow: Follow
|
||||
|
||||
label_delete_confirm: Confirm delete?
|
||||
|
||||
label_exit_project: Exit Project
|
||||
|
@ -1037,7 +1023,7 @@ en:
|
|||
label_leave_message: Message content
|
||||
label_message: message board
|
||||
field_add: Add before %{time}
|
||||
button_more: More
|
||||
|
||||
|
||||
label_bidding_project: projects
|
||||
button_bidding: I will participate in it
|
||||
|
@ -1070,11 +1056,6 @@ en:
|
|||
zero: Follower
|
||||
one: Follower
|
||||
other: Followers
|
||||
#end
|
||||
label_member_since: joined
|
||||
label_contribute_to: Participates %{project_count} projects:
|
||||
#modify by men
|
||||
|
||||
#end
|
||||
label_total_commit: Totally %{total_commit} commits # modified by bai
|
||||
#modify by men
|
||||
|
@ -1087,7 +1068,7 @@ en:
|
|||
label_type_as: Type as
|
||||
label_status_as: Status as
|
||||
label_priority_as: Priority as
|
||||
label_member_list: Member list
|
||||
|
||||
label_author_name: Posted by %{author_name}
|
||||
label_comments_count: (%{count} comments)
|
||||
label_post_on: posts on
|
||||
|
@ -1443,13 +1424,7 @@ en:
|
|||
label_your_course: your course
|
||||
label_have_message: have a new message
|
||||
lable_not_receive_mail: Click here don't receive email form site!
|
||||
#added by linchun as competition#
|
||||
|
||||
label_current_hot_contest: Latest Hot Competition
|
||||
label_current_attendingcontest_work: Latest Competition Work
|
||||
label_issue_feedback_activities: Question&Feedback
|
||||
label_more_information: More...
|
||||
label_release_time: Release-time
|
||||
|
||||
label_weixin: WeiXin
|
||||
|
||||
|
@ -1584,7 +1559,6 @@ en:
|
|||
label_trustie_team: The Trustie development team
|
||||
label_memos_max_length: The content of the post up to 65535 characters in length
|
||||
label_forums_max_length: Post Bar describing the maximum length of 65535 characters
|
||||
label_unknow_type: Unknow type
|
||||
|
||||
review_assignments: Review assignments
|
||||
label_my_school: My school
|
||||
|
@ -1609,3 +1583,5 @@ en:
|
|||
label_recently_updated_message: Recently updated the message
|
||||
label_recently_updated_courseware: Recently updated the courseware
|
||||
label_no_courses: You do not participate in any course, please search the curriculum, course, or create a course!
|
||||
label_commit_failed: commit failed
|
||||
#api end
|
||||
|
|
|
@ -19,7 +19,9 @@ en:
|
|||
#
|
||||
lable_hot_projects: Hot Projects
|
||||
label_private: private
|
||||
label_project_member_amount: "%{count} members"
|
||||
label_project_member_amount:
|
||||
one: "%{count} member"
|
||||
other: "%{count} members"
|
||||
label_project_score_tips: "Considering all activities of the project, project's score reflects the activity level of project"
|
||||
label_project_score: Score
|
||||
|
||||
|
@ -29,7 +31,7 @@ en:
|
|||
#
|
||||
# 左边栏
|
||||
#
|
||||
label_id: "ID:"
|
||||
label_project_id: "Projcet ID:"
|
||||
|
||||
label_apply_project: Apply to Join
|
||||
label_exit_project: Exit
|
||||
|
@ -48,24 +50,116 @@ en:
|
|||
|
||||
project_module_boards: Forums
|
||||
project_module_boards_post: New Post
|
||||
# 与课程公用资源库
|
||||
project_module_files: Resources
|
||||
label_upload_files: New File
|
||||
project_module_repository: Repository
|
||||
project_module_create_repository: New Repository
|
||||
|
||||
|
||||
label_project_more: More
|
||||
project_module_news: News
|
||||
project_module_wiki: Wiki
|
||||
project_module_code_review: Code Review
|
||||
project_module_calendar: Calendar
|
||||
project_module_gantt: Gantt
|
||||
project_module_documents: Documents
|
||||
label_project_tool_response: Response
|
||||
label_module_share: DTS Test Tool
|
||||
label_roadmap: Roadmap
|
||||
label_project_tool_response: Feedback
|
||||
project_module_dts: DTS Test Tool
|
||||
|
||||
label_project_overview: "Profile:"
|
||||
label_expend_information: More Information
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 项目成员
|
||||
#
|
||||
label_member_list: Members
|
||||
|
||||
label_member_since: "joined at"
|
||||
label_user_for_project_grade: Score
|
||||
|
||||
default_role_manager: Manager
|
||||
default_role_developer: Developer
|
||||
default_role_reporter: Reporter
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 关注者列表
|
||||
#
|
||||
label_followers: Followers
|
||||
label_contribute_to:
|
||||
one: "Participates %{count} project—"
|
||||
other: "Participates %{count} projects—"
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 资源库
|
||||
#
|
||||
lable_file_sharingarea: Resources
|
||||
|
||||
# 资源库(附件)公用
|
||||
label_relation_files: Select an existing resource
|
||||
label_search_by_keyword: "Search by keywords"
|
||||
label_files_filter: "Files Filter:"
|
||||
|
||||
attachment_all: "All"
|
||||
attachment_browse: "Attachment Content Browse"
|
||||
attachment_sufix_browse: "Attachment Type Browse"
|
||||
label_unknow_type: Unknow type
|
||||
|
||||
field_filename: File
|
||||
field_filesize: Size
|
||||
field_filecontenttype: Content
|
||||
field_filetype: File Typ
|
||||
field_downloads: Downloads
|
||||
field_file_dense: Dense
|
||||
|
||||
# 资源库(附件)公用 > 上传文件
|
||||
label_attachment_new: New file
|
||||
field_version: Version
|
||||
attachment_type: "Attachment Type"
|
||||
|
||||
label_attachment_plural: Files
|
||||
label_no_file_uploaded: No file uploaded
|
||||
label_max_size: Maximum size
|
||||
|
||||
label_optional_description: Description
|
||||
label_file_count: "%{count} files were uploaded successfully"
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 问题跟踪
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 项目讨论区
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 资源库
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 版本库
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
|
@ -77,6 +171,12 @@ en:
|
|||
label_repository_plural: Repositories
|
||||
enumeration_activities: Activities
|
||||
|
||||
text_select_project_modules: "Select modules to enable for this project:"
|
||||
project_module_issue_tracking: Issue tracking
|
||||
project_module_time_tracking: Time tracking
|
||||
project_module_course: 课程
|
||||
project_module_boards: Forums
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
|
@ -100,7 +200,7 @@ en:
|
|||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 新建项目
|
||||
# 新建项目/项目配置 >信息
|
||||
#
|
||||
label_project_new_description: "A project can be used to do anything that requires distributed collaboration."
|
||||
field_name: Name
|
||||
|
@ -155,6 +255,10 @@ en:
|
|||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 项目得分
|
||||
#
|
||||
label_approve: Approve
|
||||
label_refusal: Refusal
|
|
@ -22,7 +22,9 @@ zh:
|
|||
#
|
||||
lable_hot_projects: 热门项目
|
||||
label_private: 私有
|
||||
label_project_member_amount: "%{count}人"
|
||||
label_project_member_amount:
|
||||
one: "%{count}人"
|
||||
other: "%{count}人"
|
||||
label_project_score_tips: 项目得分,综合考虑了项目的各项活动,反映了该项目的活跃程度
|
||||
label_project_score: 项目评分
|
||||
|
||||
|
@ -32,13 +34,14 @@ zh:
|
|||
#
|
||||
# 左边栏
|
||||
#
|
||||
label_id: "ID:"
|
||||
label_project_id: "项目ID:"
|
||||
|
||||
label_apply_project: 申请加入
|
||||
label_exit_project: 退出项目
|
||||
label_apply_project_waiting: 已处理申请,请等待管理员审核
|
||||
label_unapply_project: 取消申请
|
||||
|
||||
lable_sure_exit_project: 是否确认退出该项目
|
||||
|
||||
label_member: 成员
|
||||
project_module_attachments: 资源
|
||||
|
||||
|
@ -49,22 +52,119 @@ zh:
|
|||
|
||||
project_module_boards: 讨论区
|
||||
project_module_boards_post: 发帖
|
||||
# 与课程公用资源库
|
||||
project_module_files: 资源库
|
||||
project_module_repository: 版本库
|
||||
project_module_create_repository: 创建版本库
|
||||
|
||||
label_project_more: 更多
|
||||
project_module_news: 新闻
|
||||
project_module_wiki: Wiki
|
||||
project_module_code_review: 代码审查
|
||||
project_module_calendar: 日历
|
||||
project_module_gantt: 甘特图
|
||||
project_module_documents: 文档
|
||||
label_roadmap: 里程碑 #版本路线图
|
||||
project_module_dts: DTS测试工具
|
||||
label_project_tool_response: 用户反馈
|
||||
label_module_share: DTS测试工具
|
||||
|
||||
label_project_overview: "项目简介:"
|
||||
label_expend_information: 展开更多信息
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 项目成员
|
||||
#
|
||||
label_member_list: 成员列表
|
||||
|
||||
label_member_since: "加入"
|
||||
label_user_for_project_grade: 个人得分
|
||||
|
||||
default_role_manager: 管理人员
|
||||
default_role_developer: 开发人员
|
||||
default_role_reporter: 报告人员
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 关注者列表
|
||||
#
|
||||
label_followers: 关注
|
||||
label_contribute_to:
|
||||
one: "参与了 %{count}个项目:"
|
||||
other: "参与了 %{count}个项目:"
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 资源库
|
||||
#
|
||||
lable_file_sharingarea: 资源共享区
|
||||
|
||||
label_upload_files: 上传文件
|
||||
|
||||
|
||||
# 资源库(附件)公用 > 关联资源
|
||||
label_relation_files: 关联已有资源
|
||||
label_search_by_keyword: "按关键字搜索:"
|
||||
label_files_filter: "资源过滤:"
|
||||
|
||||
field_filename: 文件
|
||||
field_filesize: 大小
|
||||
field_filecontenttype: 内容分类
|
||||
field_filetype: 文件格式
|
||||
field_file_dense: 是否公开
|
||||
field_downloads: 下载次数
|
||||
|
||||
attachment_sufix_browse: "文件类型"
|
||||
attachment_browse: "内容类型"
|
||||
attachment_all: "全部"
|
||||
label_unknow_type: 未知类型
|
||||
|
||||
# 资源库(附件)公用 > 上传文件
|
||||
label_attachment_new: 新建文件
|
||||
field_version: 版本
|
||||
attachment_type: "分类"
|
||||
|
||||
label_attachment_plural: 文件
|
||||
label_no_file_uploaded: 未上传文件
|
||||
label_max_size: 最大文件大小
|
||||
|
||||
label_optional_description: 可选的描述
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 问题跟踪
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 项目讨论区
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 资源库
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
# 版本库
|
||||
#
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
|
@ -79,8 +179,12 @@ zh:
|
|||
|
||||
|
||||
text_select_project_modules: '请选择此项目可以使用的模块:'
|
||||
|
||||
|
||||
project_module_issue_tracking: 问题跟踪
|
||||
project_moule_boards_show: 项目论坛
|
||||
project_module_time_tracking: 时间跟踪
|
||||
project_module_course: 课程
|
||||
|
||||
|
||||
#
|
||||
# 项目托管平台
|
||||
#
|
||||
|
@ -91,6 +195,7 @@ zh:
|
|||
label_invite_email_tips: 输入好友邮箱地址,Trustie会自动为该邮箱注册用户!
|
||||
notice_registed_success: 您输入的邮箱为空或者该邮箱已被注册!
|
||||
label_email_format_error: 您所填写的电子邮件格式不正确
|
||||
label_user_role_null: 用户和角色不能留空!
|
||||
label_send_email: 免费发送
|
||||
label_input_email: 请输入邮箱地址
|
||||
|
||||
|
|
|
@ -77,8 +77,6 @@ en:
|
|||
label_technical_title: Title
|
||||
|
||||
label_bidding_user_studentcode: Student ID
|
||||
label_account_developer: Developer
|
||||
label_account_student: Student
|
||||
|
||||
|
||||
#
|
||||
|
@ -112,7 +110,7 @@ en:
|
|||
label_layouts_feedback: "a message "
|
||||
label_of_feedback: from
|
||||
|
||||
label_goto: Go to>>
|
||||
label_goto: "Go to»"
|
||||
|
||||
label_activity_project: "Project:"
|
||||
label_active_call: call
|
||||
|
@ -180,12 +178,12 @@ en:
|
|||
#
|
||||
label_responses: Messages
|
||||
label_user_response: Feedback
|
||||
label_leave_a_message: Leave him/her a message
|
||||
label_leave_a_message: "Leave him/her a message"
|
||||
button_leave_meassge: Submit
|
||||
button_clear_meassge: Reset
|
||||
|
||||
label_user_login_new: Login
|
||||
label_user_login_tips: You haven't logged in, please login first to leave a message!
|
||||
label_user_login_tips: "You haven't logged in, please login first to leave a message!"
|
||||
|
||||
label_bid_respond_delete: Delete
|
||||
label_bid_respond_quote: Respond
|
||||
|
|
|
@ -36,6 +36,7 @@ zh:
|
|||
label_user_edit: "修改资料"
|
||||
|
||||
label_user_score: 个人综合得分
|
||||
# 用户身份在/my的修改资料下
|
||||
label_user_score_of_collaboration: 协同得分
|
||||
label_user_score_of_influence: 影响力得分
|
||||
label_user_score_of_skill: 技术得分
|
||||
|
@ -87,10 +88,9 @@ zh:
|
|||
label_technicl_title_associate_professor: 副教授
|
||||
label_technicl_title_lecturer: 讲师
|
||||
label_technicl_title_teaching_assistant: 助教
|
||||
|
||||
|
||||
# 用户身份(学生、开发者)标签在/my的修改资料下
|
||||
label_bidding_user_studentcode: 学号
|
||||
label_account_developer: 开发者
|
||||
label_account_student: 学生
|
||||
|
||||
label_no_current_fans: 该用户暂无粉丝
|
||||
label_no_current_watchers: 该用户暂未关注其他用户
|
||||
|
@ -115,7 +115,7 @@ zh:
|
|||
label_of_feedback: 的
|
||||
label_layouts_feedback: 留言
|
||||
|
||||
label_goto: 前往>>
|
||||
label_goto: "前往»"
|
||||
|
||||
label_activity_project: "项目:"
|
||||
label_active_call: 需求
|
||||
|
|
|
@ -99,10 +99,9 @@ zh:
|
|||
lastname_empty: 姓氏不能为空
|
||||
enterprise_empty: 企业名不能为空
|
||||
field_lastname_eg: '(例:张三丰,请填写[张])'
|
||||
field_filename: 文件
|
||||
field_file_dense: 是否公开
|
||||
field_filesize: 大小
|
||||
field_downloads: 下载次数
|
||||
|
||||
|
||||
|
||||
field_author: 作者
|
||||
field_created_on: 创建于
|
||||
field_updated_on: 更新于
|
||||
|
@ -130,13 +129,12 @@ zh:
|
|||
field_priority: 优先级
|
||||
field_fixed_version: 目标版本
|
||||
field_user: 用户
|
||||
field_principal: 用户/用户组
|
||||
field_principal: 用户
|
||||
field_role: 角色
|
||||
field_homepage: 主页
|
||||
field_time: 课时
|
||||
field_class_period: 学时
|
||||
field_code: 学分
|
||||
field_is_public: 公开
|
||||
field_open_student: 学生列表公开
|
||||
field_parent: 上级项目
|
||||
field_is_in_roadmap: 在路线图中显示
|
||||
|
@ -145,7 +143,6 @@ zh:
|
|||
field_last_login_on: 最后登录
|
||||
field_language: 语言
|
||||
field_effective_date: 日期
|
||||
field_version: 版本
|
||||
field_type: 类型
|
||||
field_host: 主机
|
||||
field_port: 端口
|
||||
|
@ -350,17 +347,9 @@ zh:
|
|||
permission_contest_attachments_download: 竞赛附件下载
|
||||
permission_upload_attachments: 资源上传
|
||||
|
||||
project_module_issue_tracking: 问题跟踪
|
||||
project_moule_boards_show: 项目论坛
|
||||
project_module_time_tracking: 时间跟踪
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
project_module_course: 课程
|
||||
|
||||
|
||||
label_user: 用户
|
||||
label_user_plural: 用户列表
|
||||
|
||||
|
@ -474,8 +463,6 @@ zh:
|
|||
label_new_contest: 竞赛
|
||||
label_requirement_focus: 关注需求
|
||||
label_developer: 用户
|
||||
label_account_developer: 开发者
|
||||
label_account_student: 学生
|
||||
label_enterprise_into: 进入企业
|
||||
label_college_into: 进入高校
|
||||
label_investor: 投资人:
|
||||
|
@ -517,7 +504,7 @@ zh:
|
|||
label_summer: 夏季学期
|
||||
label_autumn: 秋季学期
|
||||
label_winter: 冬季学期
|
||||
label_followers: 关注
|
||||
|
||||
|
||||
label_teacher_list: 教师列表
|
||||
label_student_list: 学生列表
|
||||
|
@ -566,15 +553,15 @@ zh:
|
|||
label_text: 文本
|
||||
label_attribute: 属性
|
||||
label_attribute_plural: 属性
|
||||
label_no_data: 没有任何数据可供显示
|
||||
|
||||
label_change_status: 变更状态
|
||||
label_history: 历史记录
|
||||
label_attachment: 文件
|
||||
label_attachment_new: 新建文件
|
||||
|
||||
label_file_upload: 上传资料
|
||||
label_course_file_upload: 上传了课件
|
||||
label_attachment_delete: 删除文件
|
||||
label_attachment_plural: 文件
|
||||
|
||||
label_file_added: 文件已添加
|
||||
label_report: 报表
|
||||
label_report_plural: 报表
|
||||
|
@ -700,13 +687,11 @@ zh:
|
|||
label_latest_revision_plural: 最近的修订版本
|
||||
label_view_revisions: 查看修订
|
||||
label_view_all_revisions: 查看所有修订
|
||||
label_no_file_uploaded: 未上传文件
|
||||
label_max_size: 最大文件大小
|
||||
|
||||
label_sort_highest: 置顶
|
||||
label_sort_higher: 上移
|
||||
label_sort_lower: 下移
|
||||
label_sort_lowest: 置底
|
||||
label_roadmap: 里程碑 #版本路线图
|
||||
label_roadmap_due_in: "截止日期到 %{value}"
|
||||
label_roadmap_overdue: "%{value} 延期"
|
||||
label_roadmap_no_issues: 该版本没有问题
|
||||
|
@ -855,7 +840,7 @@ zh:
|
|||
label_plugins: 插件
|
||||
label_ldap_authentication: LDAP 认证
|
||||
label_downloads_abbr: D/L
|
||||
label_optional_description: 可选的描述
|
||||
|
||||
label_add_another_file: 添加其它文件
|
||||
label_preferences: 首选项
|
||||
label_chronological_order: 按时间顺序
|
||||
|
@ -923,8 +908,6 @@ zh:
|
|||
button_sort: 排序
|
||||
button_log_time: 登记工时
|
||||
button_rollback: 恢复到这个版本
|
||||
button_watch: 跟踪
|
||||
button_unwatch: 取消跟踪
|
||||
button_reply: 回复
|
||||
button_archive: 存档
|
||||
button_unarchive: 取消存档
|
||||
|
@ -1011,9 +994,6 @@ zh:
|
|||
text_applied_project: "用户 %{id} 申请加入项目 %{project}"
|
||||
text_issue_expire: "分配给您的任务%{issue}即将到期"
|
||||
|
||||
default_role_manager: 管理人员
|
||||
default_role_developer: 开发人员
|
||||
default_role_reporter: 报告人员
|
||||
default_tracker_bug: 错误
|
||||
default_tracker_feature: 功能
|
||||
default_tracker_support: 支持
|
||||
|
@ -1107,7 +1087,7 @@ zh:
|
|||
description_all_columns: 所有列
|
||||
button_export: 导出
|
||||
label_export_options: "%{export_format} 导出选项"
|
||||
error_attachment_too_big: 该文件无法上传。超过文件大小限制 (%{max_size})
|
||||
|
||||
error_pic_type: "仅支持如下图片格式:"
|
||||
notice_failed_to_save_time_entries: "无法保存下列所选取的 %{total} 个项目中的 %{count} 工时: %{ids}。"
|
||||
label_x_issues:
|
||||
|
@ -1236,11 +1216,6 @@ zh:
|
|||
zero: 个关注者
|
||||
one: 个关注者
|
||||
other: 个关注者
|
||||
#end
|
||||
label_member_since: 加入
|
||||
label_contribute_to: 参与了 %{project_count} 个项目:
|
||||
#modify by men
|
||||
|
||||
#end
|
||||
label_total_commit: 共%{total_commit}次提交
|
||||
label_question_number: 第%{question_number}题:
|
||||
|
@ -1257,7 +1232,7 @@ zh:
|
|||
label_type_as: 类型为
|
||||
label_status_as: 状态为
|
||||
label_priority_as: 优先级为
|
||||
label_member_list: 成员列表
|
||||
|
||||
label_author_name: 由%{author_name}发表了
|
||||
|
||||
label_post_on: 发表了
|
||||
|
@ -1271,12 +1246,8 @@ zh:
|
|||
|
||||
|
||||
#added by liuping
|
||||
button_unfollow: 取消关注
|
||||
button_follow: 关注
|
||||
label_followers: 关注
|
||||
|
||||
label_delete_confirm: 确认删除?
|
||||
label_more_tags: 更多
|
||||
label_tags_bid: 需求名称
|
||||
label_tags_course_name: 课程名称
|
||||
label_tags_bid_description: 需求描述
|
||||
|
@ -1613,8 +1584,6 @@ zh:
|
|||
label_code_submit_number: 代码提交次数
|
||||
label_topic_number: 讨论区发言数量
|
||||
|
||||
label_files_filter: 资源过滤:
|
||||
|
||||
|
||||
|
||||
label_join_contest: 加入竞赛
|
||||
|
@ -1741,7 +1710,6 @@ zh:
|
|||
|
||||
label_project_grade: 项目得分
|
||||
label_user_grade: 个人得分
|
||||
label_user_for_project_grade: 个人得分
|
||||
label_system_grade: 系统评分
|
||||
|
||||
label_ta: 助教
|
||||
|
@ -1807,7 +1775,6 @@ zh:
|
|||
you_are_master: 您是该项目的版主
|
||||
|
||||
#add by linchun (竞赛相关)
|
||||
label_upload_files: 上传文件
|
||||
label_upload_softwarepackage: 上传软件包
|
||||
label_upload_cuttingphoto: 上传截图
|
||||
label_contests_reward_method: 奖励方式
|
||||
|
@ -1888,7 +1855,6 @@ zh:
|
|||
one: 个动态
|
||||
other: 个动态
|
||||
|
||||
label_relation_files: 关联已有资源
|
||||
label_contest_settings: 配置竞赛
|
||||
label_contest_delete: 删除竞赛
|
||||
label_noawards_current: 暂未评奖
|
||||
|
@ -1945,12 +1911,6 @@ zh:
|
|||
lable_not_receive_mail: 点此设置接收本站邮件偏好!
|
||||
label_contest_notification: 竞赛通知
|
||||
|
||||
#english site translation
|
||||
label_current_hot_contest: 最新热门竞赛
|
||||
label_current_attendingcontest_work: 最新参赛作品
|
||||
label_issue_feedback_activities: 问题和反馈动态
|
||||
label_more_information: 更多>>
|
||||
label_release_time: 发布时间
|
||||
|
||||
label_weixin: 微信扫码
|
||||
|
||||
|
@ -1985,7 +1945,6 @@ zh:
|
|||
|
||||
lable_hot_course: 活跃课程
|
||||
lable_student_list_visable: 学生列表是否公开
|
||||
lable_sure_exit_project: 是否确认退出该项目
|
||||
|
||||
lable_input_class_vilidate: 学时只能为整数
|
||||
lable_school_list: 学校列表
|
||||
|
@ -1993,7 +1952,6 @@ zh:
|
|||
lable_teacher_evaluation: 作业综评
|
||||
lable_course_teacher: 主讲老师
|
||||
lable_course_end: 课程学期已结束
|
||||
lable_file_sharingarea: 资源共享区
|
||||
label_no_contest_news_description: 竞赛描述不能为空
|
||||
label_contest_news_condition: 竞赛描述超过5000个汉字
|
||||
label_no_contest_news_title: 竞赛标题不能为空
|
||||
|
@ -2061,13 +2019,6 @@ zh:
|
|||
label_enterprise_nil: 该模块为最新上线模块,目前还没有创建企业项目!
|
||||
label_enterprises: 组织
|
||||
|
||||
label_tags_opensource: 开源项目
|
||||
label_attachment_category: 所属分类
|
||||
label_attachment_download_num: 下载
|
||||
label_attachment_size: 大小
|
||||
label_attachment_sharer: 共享者
|
||||
label_attachment_upload_time: 上传时间
|
||||
|
||||
|
||||
#api
|
||||
label_recently_updated_notification: 最近更新了通知
|
||||
|
@ -2075,9 +2026,12 @@ zh:
|
|||
label_recently_updated_message: 最近更新了留言
|
||||
label_recently_updated_courseware: 最近更新了课件
|
||||
label_no_courses: 您没有参与任何课程,请搜索课程、加入课程,或者创建课程吧!
|
||||
label_commit_failed: 提交失败
|
||||
#api end
|
||||
|
||||
label_end_time: 截止时间
|
||||
label_send_email: 确定发送
|
||||
label_input_email: 请输入邮箱地址
|
||||
project_module_files: 资源库
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
|
||||
RedmineApp::Application.routes.draw do
|
||||
|
||||
resources :discuss_demos
|
||||
#match '/discuss_demos/new',:to => 'discuss_demo#create',:via =>[:post]
|
||||
#match '/discuss_demo/show',:to => 'discuss_demo#show'
|
||||
mount Mobile::API => '/api'
|
||||
|
||||
resources :homework_users
|
||||
|
@ -860,6 +863,11 @@ RedmineApp::Application.routes.draw do
|
|||
match 'system_log/clear'
|
||||
##ended by lizanle
|
||||
|
||||
resources :git_callback do
|
||||
collection do
|
||||
post 'post_update'
|
||||
end
|
||||
end
|
||||
|
||||
Dir.glob File.expand_path("plugins/*", Rails.root) do |plugin_dir|
|
||||
file = File.join(plugin_dir, "config/routes.rb")
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
class CreateDiscussDemos < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :discuss_demos do |t|
|
||||
t.string :title
|
||||
t.text :body
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,17 @@
|
|||
class CreateKindeditorAssets < ActiveRecord::Migration
|
||||
def self.up
|
||||
create_table :kindeditor_assets do |t|
|
||||
t.string :asset
|
||||
t.integer :file_size
|
||||
t.string :file_type
|
||||
t.integer :owner_id
|
||||
t.string :asset_type # list by kindeditor: image, file, media, flash
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
|
||||
def self.down
|
||||
drop_table :kindeditor_assets
|
||||
end
|
||||
end
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20150311013036) do
|
||||
ActiveRecord::Schema.define(:version => 20150305081132) do
|
||||
|
||||
create_table "activities", :force => true do |t|
|
||||
t.integer "act_id", :null => false
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,4 +0,0 @@
|
|||
language: ruby
|
||||
rvm:
|
||||
- 2.1.0
|
||||
- 2.0.0
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue