Merge branch 'develop' of https://git.trustie.net/jacknudt/trustieforge into develop
Conflicts: public/stylesheets/courses.css public/stylesheets/public.css
This commit is contained in:
commit
599cedaa18
|
@ -239,17 +239,18 @@ class AccountController < ApplicationController
|
||||||
|
|
||||||
end
|
end
|
||||||
def resendmail
|
def resendmail
|
||||||
status = 1
|
result = {:status=>1, :email=>""}
|
||||||
user = User.find(params[:user]) if params[:user]
|
user = User.find(params[:user]) if params[:user]
|
||||||
|
result[:email] = user.mail
|
||||||
token = Token.new(:user => user, :action => "register")
|
token = Token.new(:user => user, :action => "register")
|
||||||
if token.save
|
if token.save
|
||||||
# Mailer.run.register(token)
|
# Mailer.run.register(token)
|
||||||
Mailer.register(token).deliver
|
Mailer.register(token).deliver
|
||||||
else
|
else
|
||||||
yield if block_given?
|
yield if block_given?
|
||||||
status = 0
|
result[:status] = 0
|
||||||
end
|
end
|
||||||
render :json => status
|
render :json => result
|
||||||
end
|
end
|
||||||
|
|
||||||
def email_activation
|
def email_activation
|
||||||
|
|
|
@ -612,7 +612,7 @@ class AttachmentsController < ApplicationController
|
||||||
@attachment.container.board.course)
|
@attachment.container.board.course)
|
||||||
@course = @attachment.container.board.course
|
@course = @attachment.container.board.course
|
||||||
else
|
else
|
||||||
unless @attachment.container_type == 'Bid' || @attachment.container_type == 'Organization' || @attachment.container_type == 'HomeworkAttach' || @attachment.container_type == 'Memo' || @attachment.container_type == 'Softapplication' || @attachment.container_type == 'PhoneAppVersion' || @attachment.container_type == 'StudentWorksScore'|| @attachment.container_type == 'StudentWork'
|
unless @attachment.container_type == 'Syllabus' || @attachment.container_type == 'Bid' || @attachment.container_type == 'Organization' || @attachment.container_type == 'HomeworkAttach' || @attachment.container_type == 'Memo' || @attachment.container_type == 'Softapplication' || @attachment.container_type == 'PhoneAppVersion' || @attachment.container_type == 'StudentWorksScore'|| @attachment.container_type == 'StudentWork'
|
||||||
@project = @attachment.project
|
@project = @attachment.project
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -653,12 +653,12 @@ class ProjectsController < ApplicationController
|
||||||
def update
|
def update
|
||||||
@project.safe_attributes = params[:project]
|
@project.safe_attributes = params[:project]
|
||||||
@project.organization_id = params[:organization_id]
|
@project.organization_id = params[:organization_id]
|
||||||
params[:project][:is_public] ? @project.is_public = 1 : @project.is_public = 0
|
params[:project][:is_public] == "on" ? @project.is_public = 1 : @project.is_public = 0
|
||||||
params[:project][:hidden_repo] ? @project.hidden_repo = 1 : @project.hidden_repo = 0
|
params[:project][:hidden_repo] == "on" ? @project.hidden_repo = 1 : @project.hidden_repo = 0
|
||||||
# 更新公开私有时同步gitlab公开私有
|
# 更新公开私有时同步gitlab公开私有
|
||||||
if !@project.gpid.nil? && @project.is_public != (params[:project][:is_public] == "on" ? true : false)
|
if !@project.gpid.nil? && @project.is_public != (params[:project][:is_public] == "on" ? 1 : 0)
|
||||||
g = Gitlab.client
|
g = Gitlab.client
|
||||||
params[:project][:is_public] ? g.edit_project(@project.gpid, 20, params[:branch]) : g.edit_project(@project.gpid, 0, params[:branch])
|
params[:project][:is_public] == "on" ? g.edit_project(@project.gpid, 20, params[:branch]) : g.edit_project(@project.gpid, 0, params[:branch])
|
||||||
end
|
end
|
||||||
# end
|
# end
|
||||||
if validate_parent_id && @project.save
|
if validate_parent_id && @project.save
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
class QualityAnalysisController < ApplicationController
|
class QualityAnalysisController < ApplicationController
|
||||||
before_filter :find_project_by_project_id#, :except => [:getattachtype]
|
before_filter :find_project_by_project_id#, :except => [:getattachtype]
|
||||||
|
before_filter :find_quality_analysis, :only => [:edit, :update_jenkins_job]
|
||||||
before_filter :authorize
|
before_filter :authorize
|
||||||
before_filter :connect_jenkins, :only => [:create]
|
before_filter :connect_jenkins, :only => [:create, :edit, :update_jenkins_job, :index]
|
||||||
layout "base_projects"
|
layout "base_projects"
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
|
include QualityAnalysisHelper
|
||||||
require 'jenkins_api_client'
|
require 'jenkins_api_client'
|
||||||
require 'nokogiri'
|
require 'nokogiri'
|
||||||
require 'json'
|
require 'json'
|
||||||
|
@ -13,12 +15,14 @@ class QualityAnalysisController < ApplicationController
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# params 说明:{identifier:版本库名}
|
||||||
def create
|
def create
|
||||||
begin
|
begin
|
||||||
user_name = User.find(params[:user_id]).try(:login)
|
user_name = User.find(params[:user_id]).try(:login)
|
||||||
identifier = params[:identifier]
|
identifier = params[:identifier]
|
||||||
rep_id = params[:rep_id]
|
rep_id = params[:rep_id]
|
||||||
# REDO
|
|
||||||
|
# job_name and sonar_name 前者为job名字,后者为jenkins配置名
|
||||||
job_name = "#{user_name}-#{rep_id}"
|
job_name = "#{user_name}-#{rep_id}"
|
||||||
sonar_name = "#{user_name}:#{rep_id}"
|
sonar_name = "#{user_name}:#{rep_id}"
|
||||||
|
|
||||||
|
@ -38,25 +42,43 @@ class QualityAnalysisController < ApplicationController
|
||||||
sonar.sourceEncoding=utf-8"
|
sonar.sourceEncoding=utf-8"
|
||||||
git_url = @gitlab_address.to_s+"/"+@project.owner.to_s+"/"+ identifier + "."+"git"
|
git_url = @gitlab_address.to_s+"/"+@project.owner.to_s+"/"+ identifier + "."+"git"
|
||||||
|
|
||||||
# modify config.yml
|
# 替换配置文件
|
||||||
@doc = Nokogiri::XML(File.open(File.join(Rails.root, 'tmp', 'config.xml')))
|
@doc = Nokogiri::XML(File.open(File.join(Rails.root, 'tmp', 'config.xml')))
|
||||||
@doc.at_xpath("//hudson.plugins.git.UserRemoteConfig/url").content = git_url
|
@doc.at_xpath("//hudson.plugins.git.UserRemoteConfig/url").content = git_url
|
||||||
@doc.at_xpath("//hudson.plugins.git.BranchSpec/name").content = "*/#{branch}"
|
@doc.at_xpath("//hudson.plugins.git.BranchSpec/name").content = "*/#{branch}"
|
||||||
@doc.at_xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").content = properties # sonar-properties
|
@doc.at_xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").content = properties # sonar-properties
|
||||||
|
|
||||||
# return '200' if successed
|
# jenkins job创建
|
||||||
jenkins_job = @client.job.create("#{job_name}", @doc.to_xml)
|
jenkins_job = @client.job.create("#{job_name}", @doc.to_xml)
|
||||||
|
logger.info("Jenkins status of create ==> #{jenkins_job}")
|
||||||
|
|
||||||
# replace gitlab hook
|
# 将地址作为hook值添加到gitlab
|
||||||
@g.add_project_hook(@project.gpid, @jenkins_address + "/project/#{job_name}")
|
@g.add_project_hook(@project.gpid, @jenkins_address + "/project/#{job_name}")
|
||||||
# build job
|
# job创建完成后自动运行job,如果运行成功则返回‘200’
|
||||||
logger.error("Jenkins status of create ==> #{jenkins_job}")
|
|
||||||
# return '201' if build successed
|
|
||||||
code = @client.job.build("#{job_name}")
|
code = @client.job.build("#{job_name}")
|
||||||
logger.error("build result ==> #{code}")
|
logger.error("build result ==> #{code}")
|
||||||
d = @client.delete("#{job_name}") if jenkins_job == '200' && code != '201'
|
|
||||||
|
# 判断调用sonar分析是否成功
|
||||||
|
# 等待启动时间处理, 最长时间为30分钟
|
||||||
|
for i in 0..60 do
|
||||||
|
sleep(60)
|
||||||
|
@current_build_status = @client.job.get_current_build_status("#{job_name}")
|
||||||
|
if (@current_build_status != "not_run" || @current_build_status != "running")
|
||||||
|
break
|
||||||
|
if i == 60
|
||||||
|
@build_console_result = false
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@console_build = @client.job.get_console_output("#{job_name}", build_num = 0, start = 0, mode = 'text')
|
||||||
|
logger.info("@current_build_status is ==> #{@current_build_status}")
|
||||||
|
logger.info("@console_build is ==> #{@console_build}")
|
||||||
|
|
||||||
|
d = @client.job.delete("#{job_name}") if jenkins_job == '200' && code != '201'
|
||||||
logger.error("delete result ==> #{code}")
|
logger.error("delete result ==> #{code}")
|
||||||
if qa.blank? && code == '201'
|
if qa.blank? && @current_build_status == "success"
|
||||||
QualityAnalysis.create(:project_id => @project.id, :author_login => user_name, :rep_identifier => identifier,
|
QualityAnalysis.create(:project_id => @project.id, :author_login => user_name, :rep_identifier => identifier,
|
||||||
:sonar_version => version, :path => path, :branch => branch, :language => language, :sonar_name => "#{user_name}:#{rep_id}")
|
:sonar_version => version, :path => path, :branch => branch, :language => language, :sonar_name => "#{user_name}:#{rep_id}")
|
||||||
else
|
else
|
||||||
|
@ -66,10 +88,10 @@ class QualityAnalysisController < ApplicationController
|
||||||
rescue => e
|
rescue => e
|
||||||
puts e
|
puts e
|
||||||
end
|
end
|
||||||
# respond_to do |format|
|
respond_to do |format|
|
||||||
# #format.html{redirect_to project_quality_analysis_path(:project_id => @project.id, :resource_id => sonar_name, :branch => branch)}
|
format.html{redirect_to project_quality_analysis_path(:project_id => @project.id, :resource_id => sonar_name, :branch => branch, :current_build_status => @current_build_status, :job_name => job_name)}
|
||||||
# format.js
|
# format.js{redirect_to project_quality_analysis_path(:project_id => @project.id, :resource_id => sonar_name, :branch => branch)}
|
||||||
# end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# get language type
|
# get language type
|
||||||
|
@ -85,11 +107,68 @@ class QualityAnalysisController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@g = Gitlab.client
|
||||||
|
gitlab_branches = @g.branches(@project.gpid)
|
||||||
|
@branch_names = gitlab_branches.map{|b| b.name}
|
||||||
|
@gitlab_default_branch = @g.project(@project.gpid).default_branch
|
||||||
|
end
|
||||||
|
|
||||||
|
# 更新Jenkins job,主要包括相关配置文件参数的更新,Trustie平台数据的更新
|
||||||
|
def update_jenkins_job
|
||||||
|
begin
|
||||||
|
rep_id = Repository.where(:project_id => @project.id).first.try(:id)
|
||||||
|
logger.error("#############################===>666")
|
||||||
|
sonar_name = @quality_analysis.sonar_name
|
||||||
|
job_name = "#{@quality_analysis.author_login}-#{rep_id}"
|
||||||
|
version = @quality_analysis.sonar_version
|
||||||
|
path = params[:path].blank? ? "./" : params[:path]
|
||||||
|
language = swith_language_type(params[:language])
|
||||||
|
branch = params[:branch]
|
||||||
|
identifier = @quality_analysis.rep_identifier
|
||||||
|
properties = "sonar.projectKey=#{sonar_name}
|
||||||
|
sonar.projectName=#{sonar_name}
|
||||||
|
sonar.projectVersion=#{version}
|
||||||
|
sonar.sources=#{path}
|
||||||
|
sonar.language=#{language.downcase}
|
||||||
|
sonar.sourceEncoding=utf-8"
|
||||||
|
git_url = @gitlab_address.to_s+"/"+@project.owner.to_s+"/"+ identifier + "."+"git"
|
||||||
|
|
||||||
|
# modify config.yml
|
||||||
|
@doc = Nokogiri::XML(File.open(File.join(Rails.root, 'tmp', 'config.xml')))
|
||||||
|
@doc.at_xpath("//hudson.plugins.git.UserRemoteConfig/url").content = git_url
|
||||||
|
@doc.at_xpath("//hudson.plugins.git.BranchSpec/name").content = "*/#{branch}"
|
||||||
|
@doc.at_xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").content = properties # sonar-properties
|
||||||
|
|
||||||
|
# update成功则返回 ‘200’
|
||||||
|
jenkins_job = @client.job.update("#{job_name}", @doc.to_xml)
|
||||||
|
get_current_build_status = @client.job.get_current_build_status("Hjqreturn-1280")
|
||||||
|
logger.error("Failed to update job: ==> #{jenkins_job}") unless jenkins_job == '200'
|
||||||
|
|
||||||
|
# 数据更新到Trustie数据库
|
||||||
|
if jenkins_job == '200'
|
||||||
|
logger.info("quality_ananlysis will be updated: ==> #{jenkins_job}")
|
||||||
|
@quality_analysis.path = path
|
||||||
|
@quality_analysis.language = language
|
||||||
|
@quality_analysis.branch = branch
|
||||||
|
@quality_analysis.save
|
||||||
|
end
|
||||||
|
rescue Exception => e
|
||||||
|
logger.error("Update jenkins job: #{e}")
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.html{redirect_to project_quality_analysis_path(:project_id => @project.id)}
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# resource_id: login + @repository.id
|
# resource_id: login + @repository.id
|
||||||
def index
|
def index
|
||||||
begin
|
begin
|
||||||
|
@branch = params[:branch]
|
||||||
@resource_id = params[:resource_id]
|
@resource_id = params[:resource_id]
|
||||||
@sonar_address = Redmine::Configuration['sonar_address']
|
@sonar_address = Redmine::Configuration['sonar_address']
|
||||||
|
@jenkins_address = Redmine::Configuration['jenkins_address']
|
||||||
if params[:resource_id].nil?
|
if params[:resource_id].nil?
|
||||||
@name_flag = true
|
@name_flag = true
|
||||||
projects_date = open(@sonar_address + "/api/projects/index").read
|
projects_date = open(@sonar_address + "/api/projects/index").read
|
||||||
|
@ -97,6 +176,10 @@ class QualityAnalysisController < ApplicationController
|
||||||
@quality_analyses = QualityAnalysis.where(:project_id => @project.id).select{|qa| arr.include?(qa.sonar_name)}
|
@quality_analyses = QualityAnalysis.where(:project_id => @project.id).select{|qa| arr.include?(qa.sonar_name)}
|
||||||
|
|
||||||
else
|
else
|
||||||
|
if params[:current_build_status] == "failure"
|
||||||
|
job_name = params[:job_name]
|
||||||
|
@console_build = @client.job.get_console_output("#{job_name}", build_num = 0, start = 0, mode = 'text')["output"]
|
||||||
|
end
|
||||||
complexity_date = open(@sonar_address + "/api/resources/index?resource=#{@resource_id}&depth=0&metrics=sqale_rating,function_complexity,duplicated_lines_density,comment_lines_density,sqale_index,lines,file_line,files,functions,classes,directories").read
|
complexity_date = open(@sonar_address + "/api/resources/index?resource=#{@resource_id}&depth=0&metrics=sqale_rating,function_complexity,duplicated_lines_density,comment_lines_density,sqale_index,lines,file_line,files,functions,classes,directories").read
|
||||||
@complexity =JSON.parse(complexity_date).first
|
@complexity =JSON.parse(complexity_date).first
|
||||||
issue_date = open(@sonar_address + "/api/resources/index?resource=#{@resource_id}&depth=0&metrics=blocker_violations,critical_violations,major_violations,minor_violations,info_violations,violations").read
|
issue_date = open(@sonar_address + "/api/resources/index?resource=#{@resource_id}&depth=0&metrics=blocker_violations,critical_violations,major_violations,minor_violations,info_violations,violations").read
|
||||||
|
@ -115,6 +198,14 @@ class QualityAnalysisController < ApplicationController
|
||||||
render_404
|
render_404
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def find_quality_analysis
|
||||||
|
begin
|
||||||
|
@quality_analysis = QualityAnalysis.find(params[:id])
|
||||||
|
rescue
|
||||||
|
render_404
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Authorize the user for the requested action
|
# Authorize the user for the requested action
|
||||||
def authorize(ctrl = params[:controller], action = params[:action], global = false)
|
def authorize(ctrl = params[:controller], action = params[:action], global = false)
|
||||||
unless @project.archived? && @project.gpid.nil?
|
unless @project.archived? && @project.gpid.nil?
|
||||||
|
|
|
@ -360,11 +360,6 @@ update
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
# sonar_address = Redmine::Configuration['sonar_address']
|
|
||||||
# projects_date = open(sonar_address + "/api/projects/index").read
|
|
||||||
# arr = JSON.parse(projects_date).map {|m| m["nm"]}
|
|
||||||
# arr.map
|
|
||||||
|
|
||||||
## TODO: the below will move to filter, done.
|
## TODO: the below will move to filter, done.
|
||||||
if !User.current.member_of?(@project) && @project.hidden_repo
|
if !User.current.member_of?(@project) && @project.hidden_repo
|
||||||
render_403
|
render_403
|
||||||
|
@ -379,7 +374,7 @@ update
|
||||||
@changesets = g.commits(@project.gpid, :ref_name => @rev)
|
@changesets = g.commits(@project.gpid, :ref_name => @rev)
|
||||||
g_project = g.project(@project.gpid)
|
g_project = g.project(@project.gpid)
|
||||||
# 总的提交数
|
# 总的提交数
|
||||||
@changesets_all_count = @project.gpid.nil? ? 0 : g_project.commit_count
|
@changesets_all_count = @project.gpid.nil? ? 0 : commit_count(@project, @rev)
|
||||||
@g_default_branch = g_project.default_branch.nil? ? "master" : g_project.default_branch
|
@g_default_branch = g_project.default_branch.nil? ? "master" : g_project.default_branch
|
||||||
# 访问该页面的是会后则刷新
|
# 访问该页面的是会后则刷新
|
||||||
if @project.project_score.nil?
|
if @project.project_score.nil?
|
||||||
|
|
|
@ -803,22 +803,22 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
# 获取Gitlab版本库提交总数
|
# 获取Gitlab版本库提交总数
|
||||||
def commit_count(project)
|
def commit_count(project, branch)
|
||||||
g = Gitlab.client
|
g = Gitlab.client
|
||||||
#add by hx
|
#add by hx
|
||||||
if g.commits(project.gpid , :page=>200).count > 0
|
if g.commits(project.gpid, :ref_name => @rev , :page=>200).count > 0
|
||||||
count = 4020
|
count = 4020
|
||||||
elsif g.commits(project.gpid , :page=>25).count==0
|
elsif g.commits(project.gpid , :page=>25, :ref_name => branch).count==0
|
||||||
count = count_commits(project.gpid , 0 , 25)
|
count = count_commits(project.gpid , 0 , 25)
|
||||||
elsif g.commits(project.gpid , :page=>50).count ==0
|
elsif g.commits(project.gpid , :page=>50, :ref_name => branch).count ==0
|
||||||
count = count_commits(project.gpid , 25 , 50)+ 25 * 20
|
count = count_commits(project.gpid , 25 , 50)+ 25 * 20
|
||||||
elsif g.commits(project.gpid , :page=>75).count ==0
|
elsif g.commits(project.gpid , :page=>75, :ref_name => branch).count ==0
|
||||||
count = count_commits(project.gpid , 50 , 75)+ 50 * 20
|
count = count_commits(project.gpid , 50 , 75)+ 50 * 20
|
||||||
elsif g.commits(project.gpid , :page=>100).count== 0
|
elsif g.commits(project.gpid , :page=>100, :ref_name => branch).count== 0
|
||||||
count = count_commits(project.gpid , 75 , 100) + 75 * 20
|
count = count_commits(project.gpid , 75 , 100) + 75 * 20
|
||||||
elsif g.commits(project.gpid , :page=>125).count==0
|
elsif g.commits(project.gpid , :page=>125, :ref_name => branch).count==0
|
||||||
count = count_commits(project.gpid , 100 , 125) + 100 * 20
|
count = count_commits(project.gpid , 100 , 125) + 100 * 20
|
||||||
elsif g.commits(project.gpid , :page=>150).count==0
|
elsif g.commits(project.gpid , :page=>150, :ref_name => branch).count==0
|
||||||
count = count_commits(project.gpid , 125 , 150) + 125 * 20
|
count = count_commits(project.gpid , 125 , 150) + 125 * 20
|
||||||
else
|
else
|
||||||
count = count_commits(project.gpid , 150 ,200) + 150 * 20
|
count = count_commits(project.gpid , 150 ,200) + 150 * 20
|
||||||
|
@ -832,7 +832,7 @@ module ApplicationHelper
|
||||||
if $g.commits(project_id,:page => page).count == 0
|
if $g.commits(project_id,:page => page).count == 0
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
count = count + $g.commits(project_id,:page => page).count
|
count = count + $g.commits(project_id, :ref_name => @rev, :page => page).count
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return count
|
return count
|
||||||
|
|
|
@ -23,7 +23,7 @@ module OrganizationsHelper
|
||||||
when 'activity' then
|
when 'activity' then
|
||||||
return '动态'
|
return '动态'
|
||||||
when 'course' then
|
when 'course' then
|
||||||
return '课程'
|
return '班级'
|
||||||
when 'project' then
|
when 'project' then
|
||||||
return '项目'
|
return '项目'
|
||||||
end
|
end
|
||||||
|
|
|
@ -48,17 +48,17 @@ module SyllabusesHelper
|
||||||
option6 = []
|
option6 = []
|
||||||
|
|
||||||
option1 << "请选择"
|
option1 << "请选择"
|
||||||
option1 << 1
|
option1 << 0
|
||||||
option2 << "公共必修课"
|
option2 << "公共必修课"
|
||||||
option2 << 2
|
option2 << 1
|
||||||
option3 << "学科必修课"
|
option3 << "学科必修课"
|
||||||
option3 << 3
|
option3 << 2
|
||||||
option4 << "专业选修课"
|
option4 << "专业选修课"
|
||||||
option4 << 4
|
option4 << 3
|
||||||
option5 << "实践必修课"
|
option5 << "实践必修课"
|
||||||
option5 << 5
|
option5 << 4
|
||||||
option6 << "实践选修课"
|
option6 << "实践选修课"
|
||||||
option6 << 6
|
option6 << 5
|
||||||
|
|
||||||
type << option1
|
type << option1
|
||||||
type << option2
|
type << option2
|
||||||
|
|
|
@ -324,15 +324,15 @@ class CoursesService
|
||||||
define_error [
|
define_error [
|
||||||
0, '加入成功',
|
0, '加入成功',
|
||||||
1, '密码错误',
|
1, '密码错误',
|
||||||
2, '课程已过期 请联系课程管理员重启课程。',
|
2, '班级已过期 请联系班级管理员重启班级。',
|
||||||
3, '您已经加入了课程',
|
3, '您已经加入了班级',
|
||||||
4, '您加入的课程不存在',
|
4, '您加入的班级不存在',
|
||||||
5, '您还未登录',
|
5, '您还未登录',
|
||||||
6, '申请成功,请等待审核完毕',
|
6, '申请成功,请等待审核完毕',
|
||||||
7, '您已经发送过申请了,请耐心等待',
|
7, '您已经发送过申请了,请耐心等待',
|
||||||
8, '您已经是该课程的教师了',
|
8, '您已经是该班级的教师了',
|
||||||
9, '您已经是该课程的教辅了',
|
9, '您已经是该班级的教辅了',
|
||||||
10, '您已经是该课程的管理员了',
|
10, '您已经是该班级的管理员了',
|
||||||
'未知错误,请稍后再试'
|
'未知错误,请稍后再试'
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
|
@ -23,9 +23,15 @@
|
||||||
url,
|
url,
|
||||||
{user: id },
|
{user: id },
|
||||||
function (data) {
|
function (data) {
|
||||||
console.log("1111111111");
|
//邮箱@之前用a**b格式显示
|
||||||
console.log(data);
|
var mail = data.email;
|
||||||
$(".email_verify_btn").replaceWith("<p class='email_verify_p mt30 ml30'>激活邮件已发送至您的注册邮箱,请及时登录邮箱进行验证。</p>");
|
var pos = mail.indexOf("@");
|
||||||
|
var restr = mail.substring(1,pos-1);
|
||||||
|
if( mail.split("@")[0].length > 2 ){
|
||||||
|
mail = mail.replace(restr,"***");
|
||||||
|
}
|
||||||
|
|
||||||
|
$(".email_verify_btn").replaceWith("<p class='email_verify_p mt30 ml30'>激活邮件已发送至您的注册邮箱("+mail+"),请及时登录邮箱进行验证。</p>");
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -37,16 +43,16 @@
|
||||||
pop_up_box(htmlvalue,580,30,50);
|
pop_up_box(htmlvalue,580,30,50);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$.get(
|
|
||||||
url,
|
$.ajax({
|
||||||
{user:user,text:$(".email_prompt_mes").val() },
|
url: url,
|
||||||
function (data) {
|
data: {user: user, text: $(".email_prompt_mes").val() },
|
||||||
console.log("2222222");
|
type: "POST",
|
||||||
console.log(data);
|
success: function (data) {
|
||||||
var htmlvalue = "<div class='email_tancon'><h2 class='email_tan_title'>您的留言已发送</h2><p class='email_tan_p'>我们将尽快处理好,并通过邮件通知您。感谢您的反馈!</p></div>"
|
var htmlvalue = "<div class='email_tancon'><h2 class='email_tan_title'>您的留言已发送</h2><p class='email_tan_p'>我们将尽快处理好,并通过邮件通知您。感谢您的反馈!</p></div>"
|
||||||
pop_up_box(htmlvalue,580,30,50);
|
pop_up_box(htmlvalue, 580, 30, 45);
|
||||||
$(".email_prompt_mes").val("");
|
$(".email_prompt_mes").val("");
|
||||||
}
|
}
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -2,31 +2,31 @@
|
||||||
<% if defined?(container) && container && container.saved_attachments %>
|
<% if defined?(container) && container && container.saved_attachments %>
|
||||||
<% if isReply %>
|
<% if isReply %>
|
||||||
<% container.saved_attachments.each_with_index do |attachment, i| %>
|
<% container.saved_attachments.each_with_index do |attachment, i| %>
|
||||||
<span id="attachments_p<%= i %>" class="sub_btn">
|
<p id="attachments_<%= i+1 %>" class="sub_btn">
|
||||||
|
|
||||||
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'upload_filename readonly', :readonly=>'readonly')%>
|
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'upload_filename readonly', :readonly=>'readonly')%>
|
||||||
<%#= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
|
<%#= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
|
||||||
<!--<span class="ispublic-label"><%#= l(:field_is_public)%>:</span>-->
|
<!--<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_checkbox')%>
|
<%#= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
|
||||||
|
|
||||||
<%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
|
<%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "#{i+1}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload', :containerid => "2") %>
|
||||||
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
|
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
|
||||||
</span>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% container.attachments.each_with_index do |attachment, i| %>
|
<% container.attachments.each_with_index do |attachment, i| %>
|
||||||
<span id="attachments_p<%= i %>" class="attachment">
|
<p id="attachments_<%= i+1 %>" class="attachment">
|
||||||
|
|
||||||
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'upload_filename readonly', :readonly=>'readonly')%>
|
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'upload_filename readonly', :readonly=>'readonly')%>
|
||||||
<%#= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
|
<%#= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
|
||||||
<!--<span class="ispublic-label"><%#= l(:field_is_public)%>:</span>-->
|
<!--<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_checkbox')%>
|
<%#= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
|
||||||
|
|
||||||
<%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
|
<%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "#{i+1}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload', :containerid => "2") %>
|
||||||
<%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
|
<%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
|
||||||
|
|
||||||
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
|
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
|
||||||
</span>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -10,12 +10,12 @@ window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/co
|
||||||
<% elsif @state == 1 %>
|
<% elsif @state == 1 %>
|
||||||
alert("密码错误");
|
alert("密码错误");
|
||||||
<% elsif @state == 2 %>
|
<% elsif @state == 2 %>
|
||||||
alert("课程已过期\n请联系课程管理员重启课程。(在配置课程处)");
|
alert("班级已过期\n请联系班级管理员重启班级。(在配置班级处)");
|
||||||
<% elsif @state == 3 %>
|
<% elsif @state == 3 %>
|
||||||
alert("您已经加入了课程");
|
alert("您已经加入了班级");
|
||||||
window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>"
|
window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>"
|
||||||
<% elsif @state == 4 %>
|
<% elsif @state == 4 %>
|
||||||
alert("您加入的课程不存在");
|
alert("您加入的班级不存在");
|
||||||
<% elsif @state == 5 %>
|
<% elsif @state == 5 %>
|
||||||
alert("您还未登录");
|
alert("您还未登录");
|
||||||
<% elsif @state == 6 %>
|
<% elsif @state == 6 %>
|
||||||
|
@ -25,15 +25,15 @@ hidden_join_course_form();
|
||||||
alert("您已经发送过申请了,请耐心等待");
|
alert("您已经发送过申请了,请耐心等待");
|
||||||
hidden_join_course_form();
|
hidden_join_course_form();
|
||||||
<% elsif @state == 8%>
|
<% elsif @state == 8%>
|
||||||
alert("您已经是该课程的教师了");
|
alert("您已经是该班级的教师了");
|
||||||
hidden_join_course_form();
|
hidden_join_course_form();
|
||||||
window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>"
|
window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>"
|
||||||
<% elsif @state == 9%>
|
<% elsif @state == 9%>
|
||||||
alert("您已经是该课程的教辅了");
|
alert("您已经是该班级的教辅了");
|
||||||
hidden_join_course_form();
|
hidden_join_course_form();
|
||||||
window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>"
|
window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>"
|
||||||
<% elsif @state == 10%>
|
<% elsif @state == 10%>
|
||||||
alert("您已经是该课程的管理员了");
|
alert("您已经是该班级的管理员了");
|
||||||
hidden_join_course_form();
|
hidden_join_course_form();
|
||||||
window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>"
|
window.location.href= "<%= Setting.protocol%>://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>"
|
||||||
<% else %>
|
<% else %>
|
||||||
|
|
|
@ -9,9 +9,9 @@
|
||||||
}
|
}
|
||||||
<% else %>
|
<% else %>
|
||||||
<% if @course.is_public? %>
|
<% if @course.is_public? %>
|
||||||
$("#show_course_<%= @course.id %>").attr("title","公开课程:<%= @course.name %>(<%= @course.time.to_s+ @course.term %>)");
|
$("#show_course_<%= @course.id %>").attr("title","公开班级:<%= @course.name %>(<%= @course.time.to_s+ @course.term %>)");
|
||||||
<% else %>
|
<% else %>
|
||||||
$("#show_course_<%= @course.id %>").attr("title","私有课程:<%= @course.name %>(<%= @course.time.to_s+ @course.term %>)");
|
$("#show_course_<%= @course.id %>").attr("title","私有班级:<%= @course.name %>(<%= @course.time.to_s+ @course.term %>)");
|
||||||
<% end %>
|
<% end %>
|
||||||
$("#set_course_public_<%= @course.id %>").replaceWith('<%= escape_javascript(link_to @course.is_public == 0 ? "设为公开" : "设为私有", {:controller => "courses", :action => "private_or_public", :id => @course,:user_page => true},
|
$("#set_course_public_<%= @course.id %>").replaceWith('<%= escape_javascript(link_to @course.is_public == 0 ? "设为公开" : "设为私有", {:controller => "courses", :action => "private_or_public", :id => @course,:user_page => true},
|
||||||
:id => "set_course_public_#{@course.id.to_s}",:remote=>true,:confirm=>"您确定要设置为"+(@course.is_public == 0 ? "公开" : "私有")+"吗") %>');
|
:id => "set_course_public_#{@course.id.to_s}",:remote=>true,:confirm=>"您确定要设置为"+(@course.is_public == 0 ? "公开" : "私有")+"吗") %>');
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<li><label >创建教师:</label><span><%=syllabus.user.show_name %></span></li>
|
<li><label >创建教师:</label><span><%=syllabus.user.show_name %></span></li>
|
||||||
<% unless syllabus.syllabus_type.nil? || syllabus.syllabus_type == 0 %>
|
<% unless syllabus.syllabus_type.nil? || syllabus.syllabus_type == 0 || syllabus.syllabus_type == '' %>
|
||||||
<li><label>课程性质:</label><%=syllabus.syllabus_type_str %></li>
|
<li><label>课程性质:</label><%=syllabus.syllabus_type_str %></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% unless syllabus.credit.nil? || syllabus.credit == '' %>
|
<% unless syllabus.credit.nil? || syllabus.credit == '' %>
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
<li><label>先修课程:</label><%=syllabus.pre_course %></li>
|
<li><label>先修课程:</label><%=syllabus.pre_course %></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if syllabus.syllabus_type.nil? || syllabus.syllabus_type == '' %>
|
<% if syllabus.syllabus_type.nil? || syllabus.syllabus_type == 0 || syllabus.syllabus_type == '' %>
|
||||||
<li class="none none_attr"><label>课程性质:</label><span class="fontGrey3">空</span></li>
|
<li class="none none_attr"><label>课程性质:</label><span class="fontGrey3">空</span></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if syllabus.credit.nil? || syllabus.credit == '' %>
|
<% if syllabus.credit.nil? || syllabus.credit == '' %>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<li class="none none_attr"><label>先修课程:</label><span class="fontGrey3">空</span></li>
|
<li class="none none_attr"><label>先修课程:</label><span class="fontGrey3">空</span></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<% if User.current.logged? && (User.current == syllabus.user || User.current.admin?)&&(syllabus.syllabus_type.nil? || syllabus.syllabus_type == ''||syllabus.credit.nil? || syllabus.credit == ''||syllabus.hours.nil? || syllabus.hours == ''||syllabus.theory_hours.nil? || syllabus.theory_hours == ''||syllabus.practice_hours.nil? || syllabus.practice_hours == ''||syllabus.applicable_major.nil? || syllabus.applicable_major == ''||syllabus.pre_course.nil? || syllabus.pre_course == '')%>
|
<% if User.current.logged? && (User.current == syllabus.user || User.current.admin?)&&(syllabus.syllabus_type.nil? || syllabus.syllabus_type == 0 || syllabus.syllabus_type == ''||syllabus.credit.nil? || syllabus.credit == ''||syllabus.hours.nil? || syllabus.hours == ''||syllabus.theory_hours.nil? || syllabus.theory_hours == ''||syllabus.practice_hours.nil? || syllabus.practice_hours == ''||syllabus.applicable_major.nil? || syllabus.applicable_major == ''||syllabus.pre_course.nil? || syllabus.pre_course == '')%>
|
||||||
<span class="homepageLeftMenuMore"><a href="javascript:void(0);" data-init="0" onclick="toggle_all_syllabus_attr();" class="homepageLeftMenuMoreIcon" id="show_all_syllabus_attr"></a></span>
|
<span class="homepageLeftMenuMore"><a href="javascript:void(0);" data-init="0" onclick="toggle_all_syllabus_attr();" class="homepageLeftMenuMoreIcon" id="show_all_syllabus_attr"></a></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -24,12 +24,12 @@
|
||||||
<body>
|
<body>
|
||||||
<!--<div class="resourceSharePopup">-->
|
<!--<div class="resourceSharePopup">-->
|
||||||
<div>
|
<div>
|
||||||
<div class="relateText">请选择关联到组织的课程</div>
|
<div class="relateText">请选择关联到组织的班级</div>
|
||||||
<div class="c_red">您的私有课程不能被关联到组织</div>
|
<div class="c_red">您的私有班级不能被关联到组织</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="fl">
|
<div class="fl">
|
||||||
<%=form_tag url_for(:controller => 'organizations', :action => 'join_courses', :organization_id => organization_id),:method => 'post', :id => 'join_courses_form', :remote => true,:class=>"resourcesSearchBox" do %>
|
<%=form_tag url_for(:controller => 'organizations', :action => 'join_courses', :organization_id => organization_id),:method => 'post', :id => 'join_courses_form', :remote => true,:class=>"resourcesSearchBox" do %>
|
||||||
<input type="text" name="courses" placeholder="搜索您已加入的课程的名称" class="searchCourse" />
|
<input type="text" name="courses" placeholder="搜索您已加入的班级的名称" class="searchCourse" />
|
||||||
<div id="search_courses_result_list" class="mb8 maxHeight100" style="overflow:auto;"></div>
|
<div id="search_courses_result_list" class="mb8 maxHeight100" style="overflow:auto;"></div>
|
||||||
<div class="courseSendSubmit">
|
<div class="courseSendSubmit">
|
||||||
<a href="javascript:void(0);" onclick="org_join_courses(<%= organization_id %>);" class="sendSourceText">关联</a>
|
<a href="javascript:void(0);" onclick="org_join_courses(<%= organization_id %>);" class="sendSourceText">关联</a>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<% if is_default_field?(field) %>
|
<% if is_default_field?(field) %>
|
||||||
<% case field.name %>
|
<% case field.name %>
|
||||||
<% when 'course' %>
|
<% when 'course' %>
|
||||||
<h2 class="por_h2_index clear">课程动态</h2>
|
<h2 class="por_h2_index clear">班级动态</h2>
|
||||||
<% if @course_acts.blank? %>
|
<% if @course_acts.blank? %>
|
||||||
<p class="fontGrey2 f14 mt10 mb5">该模块暂时没有相关内容</p>
|
<p class="fontGrey2 f14 mt10 mb5">该模块暂时没有相关内容</p>
|
||||||
<% else %>
|
<% else %>
|
||||||
|
|
|
@ -63,9 +63,9 @@
|
||||||
<% when 'course' %>
|
<% when 'course' %>
|
||||||
<div style="display:<%= field.hide == 0 ? 'block':'none' %>;" id="org_subfield_<%= field.id %>">
|
<div style="display:<%= field.hide == 0 ? 'block':'none' %>;" id="org_subfield_<%= field.id %>">
|
||||||
<div class="homepageLeftMenuBlock">
|
<div class="homepageLeftMenuBlock">
|
||||||
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuCourses').slideToggle();">课程</a>
|
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuCourses').slideToggle();">班级</a>
|
||||||
<% if User.current.logged? and User.current.admin_of_org?(organization) %>
|
<% if User.current.logged? and User.current.admin_of_org?(organization) %>
|
||||||
<%=link_to "", join_course_menu_organization_path(organization),:remote => true, :method => "post", :class => "homepageMenuSetting fr", :title => "关联课程"%>
|
<%=link_to "", join_course_menu_organization_path(organization),:remote => true, :method => "post", :class => "homepageMenuSetting fr", :title => "关联班级"%>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="homepageLeftMenuCourses" id="homepageLeftMenuCourses" style="display:<%= organization.courses.count == 0 ?'none':'' %>">
|
<div class="homepageLeftMenuCourses" id="homepageLeftMenuCourses" style="display:<%= organization.courses.count == 0 ?'none':'' %>">
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
var last_name = $.trim($('#last_name').val());
|
var last_name = $.trim($('#last_name').val());
|
||||||
if(last_name.length > 30)
|
if(last_name.length > 30)
|
||||||
{
|
{
|
||||||
$("#valid_email").text("用户姓氏过长,最长为30个字符");
|
$("#valid_email").text("用户姓名过长,最长为30个字符");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
<%= javascript_include_tag 'highcharts','highcharts-more' %>
|
||||||
|
<div class="project_r_h">
|
||||||
|
<h2 class="project_h2" style="width:180px;">质量分析</h2>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<%=h @console_build %>
|
||||||
|
</div>
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<div class="f16 fb fontBlue mb10">代码质量分析</div>
|
||||||
|
<div>
|
||||||
|
<%= form_tag( url_for(:controller => 'quality_analysis', :action => 'update_jenkins_job', :project_id => @project.id), :id => 'quality_analyses_edit_form') do %>
|
||||||
|
<div class="ui form">
|
||||||
|
<div class="mb10" style="margin-right:13px;">
|
||||||
|
<textarea id="path_description" name="path" rows="8" style="height: 87px; resize:vertical;" class="analysis-option-box"><%= @quality_analysis.path %></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="mb10">
|
||||||
|
<div>
|
||||||
|
<%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @quality_analysis.branch), :value => 77, :id => 'branch', :class => "analysis-option-box" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb10">
|
||||||
|
<div>
|
||||||
|
<%= select_tag :language, options_for_select(["java","python","ruby","c++","c#","c"], "#{@quality_analysis.language}"), :id => 'branch', :class => "analysis-option-box" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="courseSendSubmit mr15"><a href="javascript:void(0);" class="sendSourceText" onclick="$('#quality_analyses_edit_form').submit();hideModal()">提交</a></div>
|
||||||
|
<div class="courseSendCancel"><a href="javascript:void(0);" class="sendSourceText" onclick="hideModal()">取消</a></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
|
@ -1,22 +1,33 @@
|
||||||
|
<script type="text/javascript">
|
||||||
|
// $("#ajax-indicator span").text("载入中...");
|
||||||
|
$("#ajax-indicator").show();
|
||||||
|
</script>
|
||||||
<div class="project_r_h">
|
<div class="project_r_h">
|
||||||
<h2 class="project_h2">分析结果</h2>
|
<h2 class="project_h2">分析结果</h2>
|
||||||
</div>
|
</div>
|
||||||
<ul class="analysis-result-list">
|
<ul class="analysis-result-list">
|
||||||
<li class="analysis-result-name fl fontBlue2" >名称</li>
|
<li class="analysis-result-name fl fontBlue2" >名称</li>
|
||||||
<li class="analysis-result-version fl fontBlue2" >版本</li>
|
<li class="analysis-result-version fl fontBlue2" >分支</li>
|
||||||
<li class="analysis-result-loc fl fontBlue2" >分支</li>
|
<li class="analysis-result-loc fl fontBlue2" >语言</li>
|
||||||
<li class="analysis-result-debt fl fontBlue2" >语言</li>
|
<li class="analysis-result-debt fl fontBlue2" >路径</li>
|
||||||
<li class="analysis-result-time fl fontBlue2" >路径</li>
|
<li class="analysis-result-time fl fontBlue2" >编辑</li>
|
||||||
|
<!--<li class="analysis-result-time fl fontBlue2" >bianji</li>-->
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</ul>
|
</ul>
|
||||||
<% if @quality_analyses.count >0 %>
|
<% if @quality_analyses.count >0 %>
|
||||||
<% @quality_analyses.each do |qa| %>
|
<% @quality_analyses.each do |qa| %>
|
||||||
<ul class="analysis-result-list">
|
<ul class="analysis-result-list">
|
||||||
<li title="Name" title="名称"><%=link_to "#{qa.author_login}:#{qa.rep_identifier}", project_quality_analysis_path(:resource_id => qa.sonar_name, :branch => (qa.branch.nil? ? "master" : qa.branch)), :class => "analysis-result-name fl fontBlue2" %></li>
|
<li title="Name" title="名称"><%=link_to "#{qa.author_login}:#{qa.rep_identifier}", project_quality_analysis_path(:resource_id => qa.sonar_name, :branch => (qa.branch.nil? ? "master" : qa.branch)), :class => "analysis-result-name fl fontBlue2" %></li>
|
||||||
<li class="analysis-result-version fl fontBlue2" title="版本">1.0</li>
|
<li class="analysis-result-version fl fontBlue2" title="分支名"><%= qa.branch %></li>
|
||||||
<li class="analysis-result-loc fl fontBlue2" title="分支名"><%= qa.branch %></li>
|
<li class="analysis-result-loc fl fontBlue2" title="语言"><%= qa.language %></li>
|
||||||
<li class="analysis-result-debt fl fontBlue2" title="语言"><%= qa.language %></li>
|
<li class="analysis-result-debt fl fontBlue2" title="时间"><%= qa.path %></li>
|
||||||
<li class="analysis-result-time fl fontBlue2" title="时间"><%= qa.path %></li>
|
<% if User.current.try(:login) == qa.author_login %>
|
||||||
|
<li class="analysis-result-time fl" title="编辑">
|
||||||
|
<%=link_to "编辑", edit_project_quality_analysi_path(qa, :project_id => @project.id), :remote => true, :class => "fontBlue2" %>
|
||||||
|
</li>
|
||||||
|
<% else %>
|
||||||
|
<li class="analysis-result-time fl" style="color: #888" title="编辑">编辑</li>
|
||||||
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</ul>
|
</ul>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<% if @complexity["msr"].count > 3 %>
|
<% if @complexity["msr"].count > 3 %>
|
||||||
<%= render :partial => "hightchars" %>
|
<%= render :partial => "hightchars" %>
|
||||||
<div class="analysis-block mt10 mb40 f14">
|
<div class="analysis-block mt10 mb40 f14">
|
||||||
<div class="flex">
|
<div class="flex mb10">
|
||||||
<div class="analysis-genral">
|
<div class="analysis-genral">
|
||||||
<p id="container_sqale_rating" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
<p id="container_sqale_rating" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
||||||
<p class="fontGrey3">质量等级</p>
|
<p class="fontGrey3">质量等级</p>
|
||||||
|
@ -43,25 +43,26 @@
|
||||||
<div class="analysis-tag-wrap f16"> <span class="analysis-tag fl mr15"></span> <span class="fb fl mr10">质量等级</span><span class="mr10 fontGrey2"><span class="c_red f18" style="margin-top:-5px; display:inline-block;"><%=@complexity["msr"][9].nil? ? 0 : score_sqale_rating(@complexity["msr"][9]["val"].to_i) %></span>/5分</span>
|
<div class="analysis-tag-wrap f16"> <span class="analysis-tag fl mr15"></span> <span class="fb fl mr10">质量等级</span><span class="mr10 fontGrey2"><span class="c_red f18" style="margin-top:-5px; display:inline-block;"><%=@complexity["msr"][9].nil? ? 0 : score_sqale_rating(@complexity["msr"][9]["val"].to_i) %></span>/5分</span>
|
||||||
<span class="fontGrey2">可定性评价为:<span class="c_red">质量<%=@complexity["msr"][9].nil? ? "很好" : sqale_rating_status(@complexity["msr"][9]["val"])[0] %></span></span></div>
|
<span class="fontGrey2">可定性评价为:<span class="c_red">质量<%=@complexity["msr"][9].nil? ? "很好" : sqale_rating_status(@complexity["msr"][9]["val"])[0] %></span></span></div>
|
||||||
<div class="analysis-block mt10 mb40 f14">
|
<div class="analysis-block mt10 mb40 f14">
|
||||||
<div><span class="fontGrey3 mr30">技术债务</span><span class="fontBlue2 w70 pInline"><%=@complexity["msr"][8].nil? ? 0 : @complexity["msr"][8]["frmt_val"] %></span>
|
<div><span class="fontGrey3 mr30">技术债务</span><span class="w70 pInline"><%=@complexity["msr"][8].nil? ? 0 : @complexity["msr"][8]["frmt_val"] %></span>
|
||||||
<span class="fontGrey2"><a target="_blank" href="<%= @sonar_address %>/drilldown/measures/<%= @resource_id %>?metric=sqale_index">查看详情</a></span></div>
|
<span class="fontGrey2"><a class="linkBlue2" target="_blank" href="<%= @sonar_address %>/drilldown/measures/<%= @resource_id %>?metric=sqale_index">查看详情</a></span></div>
|
||||||
<div><span class="fontGrey3 mr30 fl">质量问题</span>
|
<div><span class="fontGrey3 mr30 fl">质量问题</span>
|
||||||
<span class="fontBlue2 w70 pInline"><a class="fontBlue2 w70 pInline" target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false"><%=@sonar_issues["msr"][0].nil? ? 0 : @sonar_issues["msr"][0]["frmt_val"] %></a></span><span class="fontGrey2">问题分类如下:</span></div>
|
<span class="fontBlue2 w70 pInline"><a class="fontBlue2 w70 pInline" target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false"><%=@sonar_issues["msr"][0].nil? ? 0 : @sonar_issues["msr"][0]["frmt_val"] %></a></span><span class="fontGrey2"> 问题分类如下:</span></div>
|
||||||
<div class="ml90 mt15">
|
<div class="ml90 mt15">
|
||||||
<div class="mb10"><span class="analysis-block-icon mr5"></span><span class="fontGrey3 mr45">阻断</span>
|
<div class="mb10"><span class="analysis-block-icon mr5"></span><span class="fontGrey3 mr45">阻断</span>
|
||||||
<span class="fontBlue2 w70 pInline"><%= @sonar_issues["msr"][1].nil? ? 0 : @sonar_issues["msr"][1]["frmt_val"] %></span>
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=BLOCKER" class="fontBlue2 w70 pInline"><%= @sonar_issues["msr"][1].nil? ? 0 : @sonar_issues["msr"][1]["frmt_val"] %></a>
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][1].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][1]["frmt_val"].to_i, 1000) %>%;"></span></span></div>
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][1].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][1]["frmt_val"].to_i, 1000) %>%;"></span></span></div>
|
||||||
<div class="mb10"><span class="analysis-serious-icon mr5"></span><span class="fontGrey3 mr45">严重</span>
|
<div class="mb10"><span class="analysis-serious-icon mr5"></span><span class="fontGrey3 mr45">严重</span>
|
||||||
<span class="fontBlue2 w70 pInline"><%= @sonar_issues["msr"][2].nil? ? 0 : @sonar_issues["msr"][2]["frmt_val"] %></span>
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=CRITICAL" class="fontBlue2 w70 pInline"><%= @sonar_issues["msr"][2].nil? ? 0 : @sonar_issues["msr"][2]["frmt_val"] %></a>
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][2].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][2]["frmt_val"].to_i, 1000) %>%;"></span></span></div>
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][2].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][2]["frmt_val"].to_i, 1000) %>%;"></span></span></div>
|
||||||
<div class="mb10"><span class="analysis-main-icon mr5"></span><span class="fontGrey3 mr45">主要</span>
|
<div class="mb10"><span class="analysis-main-icon mr5"></span><span class="fontGrey3 mr45">主要</span>
|
||||||
<span class="fontBlue2 w70 pInline"><%= @sonar_issues["msr"][3].nil? ? 0 : @sonar_issues["msr"][3]["frmt_val"] %></span>
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=MAJOR" class="fontBlue2 w70 pInline"><%= @sonar_issues["msr"][3].nil? ? 0 : @sonar_issues["msr"][3]["frmt_val"] %></a>
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][3].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][3]["frmt_val"].to_i, 1000) %>%;"></span></span></div>
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][3].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][3]["frmt_val"].to_i, 1000) %>%;"></span></span></div>
|
||||||
<div class="mb10"><span class="analysis-secondary-icon mr5"></span><span class="fontGrey3 mr45">次要</span>
|
<div class="mb10"><span class="analysis-secondary-icon mr5"></span><span class="fontGrey3 mr45">次要</span>
|
||||||
<span class="fontBlue2 w70 pInline"><%=@sonar_issues["msr"][4].nil? ? 0 : @sonar_issues["msr"][4]["frmt_val"] %></span>
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=MINOR" class="fontBlue2 w70 pInline"><%=@sonar_issues["msr"][4].nil? ? 0 : @sonar_issues["msr"][4]["frmt_val"] %></a>
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][4].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][4]["frmt_val"].to_i, 1000) %>%;"></span></span></div>
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][4].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][4]["frmt_val"].to_i, 1000) %>%;"></span></span></div>
|
||||||
<div><span class="analysis-info-icon mr5"></span><span class="fontGrey3 mr45">信息</span>
|
<div><span class="analysis-info-icon mr5"></span><span class="fontGrey3 mr45">信息</span>
|
||||||
<span class="fontBlue2 w70 pInline"><%=@sonar_issues["msr"][5].nil? ? 0 : @sonar_issues["msr"][5]["frmt_val"] %></span><span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][5].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][5]["frmt_val"].to_i, 200) %>%;"></span></span></div>
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=INFO" class="fontBlue2 w70 pInline"><%=@sonar_issues["msr"][5].nil? ? 0 : @sonar_issues["msr"][5]["frmt_val"] %></a>
|
||||||
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@sonar_issues["msr"][5].nil? ? 0 : statistics_result_percentage(@sonar_issues["msr"][5]["frmt_val"].to_i, 200) %>%;"></span></span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="analysis-tag-wrap f16"> <span class="analysis-tag fl mr15"></span> <span class="fb fl mr10">代码规模</span><span class="fontGrey2">可定性评价为:<span class="c_red"><%=@complexity["msr"][0].nil? ? 0 : lines_scale(@complexity["msr"][0]["frmt_val"].to_i) %></span></span></div>
|
<div class="analysis-tag-wrap f16"> <span class="analysis-tag fl mr15"></span> <span class="fb fl mr10">代码规模</span><span class="fontGrey2">可定性评价为:<span class="c_red"><%=@complexity["msr"][0].nil? ? 0 : lines_scale(@complexity["msr"][0]["frmt_val"].to_i) %></span></span></div>
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<% if @current_build_status == "success" %>
|
||||||
|
<%= render :partial => "show", :locals => {:branch => params[:branch]} %>
|
||||||
|
<% else %>
|
||||||
|
<% if @build_console_result %>
|
||||||
|
运行结果超时
|
||||||
|
<% else %>
|
||||||
|
<%= render :partial => "console_output" %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,11 @@
|
||||||
|
$("#ajax-indicator").hide();
|
||||||
|
<% if @current_build_status == "success" %>
|
||||||
|
<%= escape_javascript( render :partial => 'quality_analysis/show', :locals => {:branch => branch}) %>
|
||||||
|
<% elsif @current_build_status == "failure" %>
|
||||||
|
<%=h @console_build.html_safe %>
|
||||||
|
<% elsif @current_build_status == "not_run" %>
|
||||||
|
alert('任务启动失败');
|
||||||
|
<% else %>
|
||||||
|
alert('你已经创建类一个同名job');
|
||||||
|
<% end %>
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
$('#ajax-modal').html('<%= escape_javascript( render :partial => 'quality_analysis/edit', :locals => {}) %>');
|
||||||
|
showModal('ajax-modal', '615px');
|
||||||
|
$('#ajax-modal').siblings().remove();
|
||||||
|
$('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal()' style='margin-left: 580px;'><img src='/images/bid/close.png' width='26px' height='26px' /></a>");
|
||||||
|
$('#ajax-modal').parent().css("top","20%").css("left","32%").css("border","3px solid #269ac9");
|
||||||
|
$('#ajax-modal').parent().addClass("popbox_polls");
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,14 @@
|
||||||
<% if @name_flag %>
|
<% if @name_flag %>
|
||||||
<%= render :partial => "result_list" %>
|
<%= render :partial => "result_list" %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= render "show" %>
|
<% if params[:current_build_status].nil? || params[:current_build_status] == "success" %>
|
||||||
|
<%= render :partial => "show", :locals => {:branch => @branch} %>
|
||||||
|
<% else %>
|
||||||
|
<% if params[:build_console_result] %>
|
||||||
|
运行结果超时
|
||||||
|
<% else %>
|
||||||
|
<%= render :partial => "console_output" %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="f16 fb fontBlue mb10">代码质量分析</div>
|
<div class="f16 fb fontBlue mb10">代码质量分析</div>
|
||||||
<div>
|
<div>
|
||||||
<%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id, :user_id => User.current.id, :identifier => @repository.identifier, :rep_id => @repository.id), :remote => true, :id => 'quality_analyses_form') do %>
|
<%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id, :user_id => User.current.id, :identifier => @repository.identifier, :rep_id => @repository.id), :id => 'quality_analyses_form') do %>
|
||||||
<div class="ui form">
|
<div class="ui form">
|
||||||
<div class="mb10" style="margin-right:13px;">
|
<div class="mb10" style="margin-right:13px;">
|
||||||
<textarea id="path_description" name="path" rows="8" placeholder="目录相对于根目录,不填写则扫描根目录,用半角逗号隔开。如:src/main/java,libs,res/script" style="height: 87px; resize:vertical;" class="analysis-option-box"></textarea>
|
<textarea id="path_description" name="path" rows="8" placeholder="目录相对于根目录,不填写则扫描根目录,用半角逗号隔开。如:src/main/java,libs,res/script" style="height: 87px; resize:vertical;" class="analysis-option-box"></textarea>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<%= select_tag :language, options_for_select(["java","python","ruby","c++","c#","c"]), :id => 'branch', :class => "analysis-option-box" %>
|
<%= select_tag :language, options_for_select(["java","python","ruby","c++","c#","c"]), :id => 'branch', :class => "analysis-option-box" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="courseSendSubmit mr15"><a href="javascript:void(0);" class="sendSourceText" onclick="$('#quality_analyses_form').submit();hideModal()">提交</a></div>
|
<div class="courseSendSubmit mr15"><a href="javascript:void(0);" class="sendSourceText" onclick="$('#ajax-indicator').text('正在分析中…………(大概需要30分钟,请耐心等待)').show();$('#quality_analyses_form').submit();hideModal()">提交</a></div>
|
||||||
<div class="courseSendCancel"><a href="javascript:void(0);" class="sendSourceText" onclick="hideModal()">取消</a></div>
|
<div class="courseSendCancel"><a href="javascript:void(0);" class="sendSourceText" onclick="hideModal()">取消</a></div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<a href="<%= @zip_path %>" class="btn_zipdown fr" onclick="">ZIP下载</a>
|
<a href="<%= @zip_path %>" class="btn_zipdown fr" onclick="">ZIP下载</a>
|
||||||
<%# if is_project_manager?(User.current, @project.id) && QualityAnalysis.where(:project_id => @project.id).first.nil? %>
|
<%# if is_project_manager?(User.current, @project.id) && QualityAnalysis.where(:project_id => @project.id).first.nil? %>
|
||||||
<%# if User.current.member_of?(@project) %>
|
<%# if User.current.member_of?(@project) %>
|
||||||
<% if quality_analysis(User.current.try(:login), @repository.id).nil? && User.current.member_of?(@project) %>
|
<% if quality_analysis(User.current.try(:login), @repository.id).nil? && User.current.member_of?(@project) && @project.is_public? %>
|
||||||
<%= link_to "质量分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :default_branch => @g_default_branch ), :remote => true, :class => "btn_zipdown fr" %>
|
<%= link_to "质量分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :default_branch => @g_default_branch ), :remote => true, :class => "btn_zipdown fr" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%# end %>
|
<%# end %>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<li>
|
<li>
|
||||||
<span class="item_list fl"></span>
|
<span class="item_list fl"></span>
|
||||||
<%= link_to course.name+"("+current_time_and_term_short(course)+")", course_path(course.id,:host=>Setting.host_course), :class => "list-title fl #{course_endTime_timeout?(course) ? 'c_dark_grey' : ''}",
|
<%= link_to course.name+"("+current_time_and_term_short(course)+")", course_path(course.id,:host=>Setting.host_course), :class => "list-title fl #{course_endTime_timeout?(course) ? 'c_dark_grey' : ''}",
|
||||||
:style => 'color:#000',:id => "show_course_#{course.id}", :target => '_blank', :title => (course.is_public? ? "公开课程:":"私有课程:")+course.name+"("+current_time_and_term(course)+")"%>
|
:style => 'color:#000',:id => "show_course_#{course.id}", :target => '_blank', :title => (course.is_public? ? "公开班级:":"私有班级:")+course.name+"("+current_time_and_term(course)+")"%>
|
||||||
<% teacher = User.where("id=?",course.tea_id).first%>
|
<% teacher = User.where("id=?",course.tea_id).first%>
|
||||||
<span class="fr grayTxt">
|
<span class="fr grayTxt">
|
||||||
<%='主讲老师:'+(teacher.try(:realname) != " " ? teacher.lastname + teacher.firstname : teacher.try(:login)) %>
|
<%='主讲老师:'+(teacher.try(:realname) != " " ? teacher.lastname + teacher.firstname : teacher.try(:login)) %>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<% if users_results.try(:size).to_i > 0 %>
|
<% if users_results.try(:size).to_i > 0 %>
|
||||||
<hr />
|
<hr />
|
||||||
<% users_results.each do |user| %>
|
<% users_results.each do |user| %>
|
||||||
<p class="font_description2">
|
<p class="font_description2" style="padding: 10px 5px">
|
||||||
<strong><%= l(:label_tags_user_name) %><%= link_to ("#{user.name}"),
|
<strong><%= l(:label_tags_user_name) %><%= link_to ("#{user.name}"),
|
||||||
:controller => "users",:action => "show",:id => user.id%></strong>
|
:controller => "users",:action => "show",:id => user.id%></strong>
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<% content_for :content do %>
|
<% content_for :content do %>
|
||||||
<div>
|
<div>
|
||||||
<h3><strong><%= l(:label_tags_search_result) %></strong></h3>
|
<h3><strong><%= l(:label_tags_search_result) %></strong></h3>
|
||||||
<div align="right">
|
<div class="mb5">
|
||||||
<%= l(:label_tags_numbers) %>:
|
<%= l(:label_tags_numbers) %>:
|
||||||
<%= l(:label_issue_plural) %>(<%= @issues_tags_num %>) |
|
<%= l(:label_issue_plural) %>(<%= @issues_tags_num %>) |
|
||||||
<%= l(:label_project_plural) %>(<%= @projects_tags_num %>) |
|
<%= l(:label_project_plural) %>(<%= @projects_tags_num %>) |
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<li>
|
<li>
|
||||||
<span class="item_list fl"></span>
|
<span class="item_list fl"></span>
|
||||||
<%= link_to course.name+"("+current_time_and_term_short(course)+")", course_path(course.id,:host=>Setting.host_course), :class => "list-title fl #{course_endTime_timeout?(course) ? 'c_dark_grey' : ''}",
|
<%= link_to course.name+"("+current_time_and_term_short(course)+")", course_path(course.id,:host=>Setting.host_course), :class => "list-title fl #{course_endTime_timeout?(course) ? 'c_dark_grey' : ''}",
|
||||||
:style => 'color:#000',:id => "show_course_#{course.id}", :target => '_blank', :title => (course.is_public? ? "公开课程:":"私有课程:")+course.name+"("+current_time_and_term(course)+")"%>
|
:style => 'color:#000',:id => "show_course_#{course.id}", :target => '_blank', :title => (course.is_public? ? "公开班级:":"私有班级:")+course.name+"("+current_time_and_term(course)+")"%>
|
||||||
<% teacher = User.where("id=?",course.tea_id).first%>
|
<% teacher = User.where("id=?",course.tea_id).first%>
|
||||||
<span class="fr grayTxt">
|
<span class="fr grayTxt">
|
||||||
<%='主讲老师:'+(teacher.try(:realname) != " " ? teacher.lastname + teacher.firstname : teacher.try(:login)) %>
|
<%='主讲老师:'+(teacher.try(:realname) != " " ? teacher.lastname + teacher.firstname : teacher.try(:login)) %>
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
<%=link_to '查看课程', syllabus_path(syllabus.id), :class => 'postOptionLink',:target =>'_blank', :title => '查看课程' %>
|
<%=link_to '查看课程', syllabus_path(syllabus.id), :class => 'postOptionLink',:target =>'_blank', :title => '查看课程' %>
|
||||||
</li>
|
</li>
|
||||||
<% if User.current == syllabus.user %>
|
<% if User.current == syllabus.user %>
|
||||||
<li><%=link_to '删除', delete_syllabus_syllabus_path(syllabus), :class => 'postOptionLink', :remote => 'true'%></li>
|
<li><%=link_to '删除课程', delete_syllabus_syllabus_path(syllabus), :class => 'postOptionLink', :remote => 'true'%></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -37,7 +37,7 @@ zh:
|
||||||
field_firstname: 名字或组织名
|
field_firstname: 名字或组织名
|
||||||
firstname_empty: 名字不能为空
|
firstname_empty: 名字不能为空
|
||||||
field_firstname_eg: '(例:张三丰,请填写[三丰])'
|
field_firstname_eg: '(例:张三丰,请填写[三丰])'
|
||||||
field_lastname: 姓氏
|
field_lastname: 姓名
|
||||||
lastname_empty: 姓氏不能为空
|
lastname_empty: 姓氏不能为空
|
||||||
enterprise_empty: 企业名不能为空
|
enterprise_empty: 企业名不能为空
|
||||||
field_lastname_eg: '(例:张三丰,请填写[张])'
|
field_lastname_eg: '(例:张三丰,请填写[张])'
|
||||||
|
|
|
@ -496,7 +496,7 @@ RedmineApp::Application.routes.draw do
|
||||||
match 'projects/:id/wiki/destroy', :to => 'wikis#destroy', :via => [:get, :post]
|
match 'projects/:id/wiki/destroy', :to => 'wikis#destroy', :via => [:get, :post]
|
||||||
|
|
||||||
#激活邮箱反馈问题
|
#激活邮箱反馈问题
|
||||||
match 'users/:id/leave_email_activation_message', :to => 'words#leave_email_activation_message', :via => :get, :as => "leave_email_activation_message"
|
match 'users/:id/leave_email_activation_message', :to => 'words#leave_email_activation_message', :via => :post, :as => "leave_email_activation_message"
|
||||||
|
|
||||||
# boards
|
# boards
|
||||||
match 'boards/:board_id/topics/new', :to => 'messages#new', :via => [:get, :post], :as => 'new_board_message'
|
match 'boards/:board_id/topics/new', :to => 'messages#new', :via => [:get, :post], :as => 'new_board_message'
|
||||||
|
@ -790,11 +790,13 @@ RedmineApp::Application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :quality_analysis, :only => [:index, :new, :create] do
|
resources :quality_analysis, :only => [:index, :create, :edit, :update] do
|
||||||
collection do
|
collection do
|
||||||
end
|
end
|
||||||
member do
|
member do
|
||||||
|
match 'update_jenkins_job'
|
||||||
|
match 'edit'
|
||||||
|
match 'create'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
# resources :files, :only => [:index, :new, :create] do
|
# resources :files, :only => [:index, :new, :create] do
|
||||||
|
|
441
db/schema.rb
441
db/schema.rb
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20160624032138) do
|
ActiveRecord::Schema.define(:version => 20160627090316) do
|
||||||
|
|
||||||
create_table "activities", :force => true do |t|
|
create_table "activities", :force => true do |t|
|
||||||
t.integer "act_id", :null => false
|
t.integer "act_id", :null => false
|
||||||
|
@ -52,28 +52,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
|
add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
|
||||||
add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
|
add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
|
||||||
|
|
||||||
create_table "application_settings", :force => true do |t|
|
|
||||||
t.integer "default_projects_limit"
|
|
||||||
t.boolean "signup_enabled"
|
|
||||||
t.boolean "signin_enabled"
|
|
||||||
t.boolean "gravatar_enabled"
|
|
||||||
t.text "sign_in_text"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.string "home_page_url"
|
|
||||||
t.integer "default_branch_protection", :default => 2
|
|
||||||
t.boolean "twitter_sharing_enabled", :default => true
|
|
||||||
t.text "restricted_visibility_levels"
|
|
||||||
t.boolean "version_check_enabled", :default => true
|
|
||||||
t.integer "max_attachment_size", :default => 10, :null => false
|
|
||||||
t.integer "default_project_visibility"
|
|
||||||
t.integer "default_snippet_visibility"
|
|
||||||
t.text "restricted_signup_domains"
|
|
||||||
t.boolean "user_oauth_applications", :default => true
|
|
||||||
t.string "after_sign_out_path"
|
|
||||||
t.integer "session_expire_delay", :default => 10080, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "applied_projects", :force => true do |t|
|
create_table "applied_projects", :force => true do |t|
|
||||||
t.integer "project_id", :null => false
|
t.integer "project_id", :null => false
|
||||||
t.integer "user_id", :null => false
|
t.integer "user_id", :null => false
|
||||||
|
@ -178,20 +156,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.string "typeName", :limit => 50
|
t.string "typeName", :limit => 50
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "audit_events", :force => true do |t|
|
|
||||||
t.integer "author_id", :null => false
|
|
||||||
t.string "type", :null => false
|
|
||||||
t.integer "entity_id", :null => false
|
|
||||||
t.string "entity_type", :null => false
|
|
||||||
t.text "details"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "audit_events", ["author_id"], :name => "index_audit_events_on_author_id"
|
|
||||||
add_index "audit_events", ["entity_id", "entity_type"], :name => "index_audit_events_on_entity_id_and_entity_type"
|
|
||||||
add_index "audit_events", ["type"], :name => "index_audit_events_on_type"
|
|
||||||
|
|
||||||
create_table "auth_sources", :force => true do |t|
|
create_table "auth_sources", :force => true do |t|
|
||||||
t.string "type", :limit => 30, :default => "", :null => false
|
t.string "type", :limit => 30, :default => "", :null => false
|
||||||
t.string "name", :limit => 60, :default => "", :null => false
|
t.string "name", :limit => 60, :default => "", :null => false
|
||||||
|
@ -289,17 +253,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
|
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
|
||||||
add_index "boards", ["project_id"], :name => "boards_project_id"
|
add_index "boards", ["project_id"], :name => "boards_project_id"
|
||||||
|
|
||||||
create_table "broadcast_messages", :force => true do |t|
|
|
||||||
t.text "message", :null => false
|
|
||||||
t.datetime "starts_at"
|
|
||||||
t.datetime "ends_at"
|
|
||||||
t.integer "alert_type"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.string "color"
|
|
||||||
t.string "font"
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "bug_to_osps", :force => true do |t|
|
create_table "bug_to_osps", :force => true do |t|
|
||||||
t.integer "osp_id"
|
t.integer "osp_id"
|
||||||
t.integer "relative_memo_id"
|
t.integer "relative_memo_id"
|
||||||
|
@ -598,8 +551,11 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.integer "is_copy", :default => 0
|
t.integer "is_copy", :default => 0
|
||||||
t.integer "visits", :default => 0
|
t.integer "visits", :default => 0
|
||||||
t.integer "syllabus_id"
|
t.integer "syllabus_id"
|
||||||
|
t.string "invite_code"
|
||||||
|
t.string "qrcode"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_index "courses", ["invite_code"], :name => "index_courses_on_invite_code", :unique => true
|
||||||
add_index "courses", ["syllabus_id"], :name => "index_courses_on_syllabus_id"
|
add_index "courses", ["syllabus_id"], :name => "index_courses_on_syllabus_id"
|
||||||
|
|
||||||
create_table "custom_fields", :force => true do |t|
|
create_table "custom_fields", :force => true do |t|
|
||||||
|
@ -663,15 +619,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
|
|
||||||
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
||||||
|
|
||||||
create_table "deploy_keys_projects", :force => true do |t|
|
|
||||||
t.integer "deploy_key_id", :null => false
|
|
||||||
t.integer "project_id", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "deploy_keys_projects", ["project_id"], :name => "index_deploy_keys_projects_on_project_id"
|
|
||||||
|
|
||||||
create_table "discuss_demos", :force => true do |t|
|
create_table "discuss_demos", :force => true do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.text "body"
|
t.text "body"
|
||||||
|
@ -721,16 +668,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "emails", :force => true do |t|
|
|
||||||
t.integer "user_id", :null => false
|
|
||||||
t.string "email", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "emails", ["email"], :name => "index_emails_on_email", :unique => true
|
|
||||||
add_index "emails", ["user_id"], :name => "index_emails_on_user_id"
|
|
||||||
|
|
||||||
create_table "enabled_modules", :force => true do |t|
|
create_table "enabled_modules", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
|
@ -753,25 +690,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
|
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
|
||||||
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
|
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
|
||||||
|
|
||||||
create_table "events", :force => true do |t|
|
|
||||||
t.string "target_type"
|
|
||||||
t.integer "target_id"
|
|
||||||
t.string "title"
|
|
||||||
t.text "data"
|
|
||||||
t.integer "project_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.integer "action"
|
|
||||||
t.integer "author_id"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "events", ["action"], :name => "index_events_on_action"
|
|
||||||
add_index "events", ["author_id"], :name => "index_events_on_author_id"
|
|
||||||
add_index "events", ["created_at"], :name => "index_events_on_created_at"
|
|
||||||
add_index "events", ["project_id"], :name => "index_events_on_project_id"
|
|
||||||
add_index "events", ["target_id"], :name => "index_events_on_target_id"
|
|
||||||
add_index "events", ["target_type"], :name => "index_events_on_target_type"
|
|
||||||
|
|
||||||
create_table "exercise_answers", :force => true do |t|
|
create_table "exercise_answers", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "exercise_question_id"
|
t.integer "exercise_question_id"
|
||||||
|
@ -874,15 +792,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type"
|
add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type"
|
||||||
add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at"
|
add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at"
|
||||||
|
|
||||||
create_table "forked_project_links", :force => true do |t|
|
|
||||||
t.integer "forked_to_project_id", :null => false
|
|
||||||
t.integer "forked_from_project_id", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "forked_project_links", ["forked_to_project_id"], :name => "index_forked_project_links_on_forked_to_project_id", :unique => true
|
|
||||||
|
|
||||||
create_table "forums", :force => true do |t|
|
create_table "forums", :force => true do |t|
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
@ -1012,17 +921,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "identities", :force => true do |t|
|
|
||||||
t.string "extern_uid"
|
|
||||||
t.string "provider"
|
|
||||||
t.integer "user_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "identities", ["created_at", "id"], :name => "index_identities_on_created_at_and_id"
|
|
||||||
add_index "identities", ["user_id"], :name => "index_identities_on_user_id"
|
|
||||||
|
|
||||||
create_table "invite_lists", :force => true do |t|
|
create_table "invite_lists", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
@ -1166,20 +1064,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.integer "private", :default => 0
|
t.integer "private", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "keys", :force => true do |t|
|
|
||||||
t.integer "user_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.text "key"
|
|
||||||
t.string "title"
|
|
||||||
t.string "type"
|
|
||||||
t.string "fingerprint"
|
|
||||||
t.boolean "public", :default => false, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "keys", ["created_at", "id"], :name => "index_keys_on_created_at_and_id"
|
|
||||||
add_index "keys", ["user_id"], :name => "index_keys_on_user_id"
|
|
||||||
|
|
||||||
create_table "kindeditor_assets", :force => true do |t|
|
create_table "kindeditor_assets", :force => true do |t|
|
||||||
t.string "asset"
|
t.string "asset"
|
||||||
t.integer "file_size"
|
t.integer "file_size"
|
||||||
|
@ -1191,27 +1075,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.integer "owner_type", :default => 0
|
t.integer "owner_type", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "label_links", :force => true do |t|
|
|
||||||
t.integer "label_id"
|
|
||||||
t.integer "target_id"
|
|
||||||
t.string "target_type"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "label_links", ["label_id"], :name => "index_label_links_on_label_id"
|
|
||||||
add_index "label_links", ["target_id", "target_type"], :name => "index_label_links_on_target_id_and_target_type"
|
|
||||||
|
|
||||||
create_table "labels", :force => true do |t|
|
|
||||||
t.string "title"
|
|
||||||
t.string "color"
|
|
||||||
t.integer "project_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "labels", ["project_id"], :name => "index_labels_on_project_id"
|
|
||||||
|
|
||||||
create_table "member_roles", :force => true do |t|
|
create_table "member_roles", :force => true do |t|
|
||||||
t.integer "member_id", :null => false
|
t.integer "member_id", :null => false
|
||||||
t.integer "role_id", :null => false
|
t.integer "role_id", :null => false
|
||||||
|
@ -1262,47 +1125,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.integer "viewed_count", :default => 0
|
t.integer "viewed_count", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "merge_request_diffs", :force => true do |t|
|
|
||||||
t.string "state"
|
|
||||||
t.text "st_commits", :limit => 2147483647
|
|
||||||
t.text "st_diffs", :limit => 2147483647
|
|
||||||
t.integer "merge_request_id", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "merge_request_diffs", ["merge_request_id"], :name => "index_merge_request_diffs_on_merge_request_id", :unique => true
|
|
||||||
|
|
||||||
create_table "merge_requests", :force => true do |t|
|
|
||||||
t.string "target_branch", :null => false
|
|
||||||
t.string "source_branch", :null => false
|
|
||||||
t.integer "source_project_id", :null => false
|
|
||||||
t.integer "author_id"
|
|
||||||
t.integer "assignee_id"
|
|
||||||
t.string "title"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.integer "milestone_id"
|
|
||||||
t.string "state"
|
|
||||||
t.string "merge_status"
|
|
||||||
t.integer "target_project_id", :null => false
|
|
||||||
t.integer "iid"
|
|
||||||
t.text "description"
|
|
||||||
t.integer "position", :default => 0
|
|
||||||
t.datetime "locked_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "merge_requests", ["assignee_id"], :name => "index_merge_requests_on_assignee_id"
|
|
||||||
add_index "merge_requests", ["author_id"], :name => "index_merge_requests_on_author_id"
|
|
||||||
add_index "merge_requests", ["created_at", "id"], :name => "index_merge_requests_on_created_at_and_id"
|
|
||||||
add_index "merge_requests", ["created_at"], :name => "index_merge_requests_on_created_at"
|
|
||||||
add_index "merge_requests", ["milestone_id"], :name => "index_merge_requests_on_milestone_id"
|
|
||||||
add_index "merge_requests", ["source_branch"], :name => "index_merge_requests_on_source_branch"
|
|
||||||
add_index "merge_requests", ["source_project_id"], :name => "index_merge_requests_on_source_project_id"
|
|
||||||
add_index "merge_requests", ["target_branch"], :name => "index_merge_requests_on_target_branch"
|
|
||||||
add_index "merge_requests", ["target_project_id", "iid"], :name => "index_merge_requests_on_target_project_id_and_iid", :unique => true
|
|
||||||
add_index "merge_requests", ["title"], :name => "index_merge_requests_on_title"
|
|
||||||
|
|
||||||
create_table "message_alls", :force => true do |t|
|
create_table "message_alls", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "message_id"
|
t.integer "message_id"
|
||||||
|
@ -1337,39 +1159,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
|
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
|
||||||
add_index "messages", ["parent_id"], :name => "messages_parent_id"
|
add_index "messages", ["parent_id"], :name => "messages_parent_id"
|
||||||
|
|
||||||
create_table "milestones", :force => true do |t|
|
|
||||||
t.string "title", :null => false
|
|
||||||
t.integer "project_id", :null => false
|
|
||||||
t.text "description"
|
|
||||||
t.date "due_date"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.string "state"
|
|
||||||
t.integer "iid"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "milestones", ["created_at", "id"], :name => "index_milestones_on_created_at_and_id"
|
|
||||||
add_index "milestones", ["due_date"], :name => "index_milestones_on_due_date"
|
|
||||||
add_index "milestones", ["project_id", "iid"], :name => "index_milestones_on_project_id_and_iid", :unique => true
|
|
||||||
add_index "milestones", ["project_id"], :name => "index_milestones_on_project_id"
|
|
||||||
|
|
||||||
create_table "namespaces", :force => true do |t|
|
|
||||||
t.string "name", :null => false
|
|
||||||
t.string "path", :null => false
|
|
||||||
t.integer "owner_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.string "type"
|
|
||||||
t.string "description", :default => "", :null => false
|
|
||||||
t.string "avatar"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "namespaces", ["created_at", "id"], :name => "index_namespaces_on_created_at_and_id"
|
|
||||||
add_index "namespaces", ["name"], :name => "index_namespaces_on_name", :unique => true
|
|
||||||
add_index "namespaces", ["owner_id"], :name => "index_namespaces_on_owner_id"
|
|
||||||
add_index "namespaces", ["path"], :name => "index_namespaces_on_path", :unique => true
|
|
||||||
add_index "namespaces", ["type"], :name => "index_namespaces_on_type"
|
|
||||||
|
|
||||||
create_table "news", :force => true do |t|
|
create_table "news", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "title", :limit => 60, :default => "", :null => false
|
t.string "title", :limit => 60, :default => "", :null => false
|
||||||
|
@ -1395,31 +1184,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "notes", :force => true do |t|
|
|
||||||
t.text "note"
|
|
||||||
t.string "noteable_type"
|
|
||||||
t.integer "author_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.integer "project_id"
|
|
||||||
t.string "attachment"
|
|
||||||
t.string "line_code"
|
|
||||||
t.string "commit_id"
|
|
||||||
t.integer "noteable_id"
|
|
||||||
t.boolean "system", :default => false, :null => false
|
|
||||||
t.text "st_diff", :limit => 2147483647
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "notes", ["author_id"], :name => "index_notes_on_author_id"
|
|
||||||
add_index "notes", ["commit_id"], :name => "index_notes_on_commit_id"
|
|
||||||
add_index "notes", ["created_at", "id"], :name => "index_notes_on_created_at_and_id"
|
|
||||||
add_index "notes", ["created_at"], :name => "index_notes_on_created_at"
|
|
||||||
add_index "notes", ["noteable_id", "noteable_type"], :name => "index_notes_on_noteable_id_and_noteable_type"
|
|
||||||
add_index "notes", ["noteable_type"], :name => "index_notes_on_noteable_type"
|
|
||||||
add_index "notes", ["project_id", "noteable_type"], :name => "index_notes_on_project_id_and_noteable_type"
|
|
||||||
add_index "notes", ["project_id"], :name => "index_notes_on_project_id"
|
|
||||||
add_index "notes", ["updated_at"], :name => "index_notes_on_updated_at"
|
|
||||||
|
|
||||||
create_table "notificationcomments", :force => true do |t|
|
create_table "notificationcomments", :force => true do |t|
|
||||||
t.string "notificationcommented_type"
|
t.string "notificationcommented_type"
|
||||||
t.integer "notificationcommented_id"
|
t.integer "notificationcommented_id"
|
||||||
|
@ -1429,49 +1193,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "oauth_access_grants", :force => true do |t|
|
|
||||||
t.integer "resource_owner_id", :null => false
|
|
||||||
t.integer "application_id", :null => false
|
|
||||||
t.string "token", :null => false
|
|
||||||
t.integer "expires_in", :null => false
|
|
||||||
t.text "redirect_uri", :null => false
|
|
||||||
t.datetime "created_at", :null => false
|
|
||||||
t.datetime "revoked_at"
|
|
||||||
t.string "scopes"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "oauth_access_grants", ["token"], :name => "index_oauth_access_grants_on_token", :unique => true
|
|
||||||
|
|
||||||
create_table "oauth_access_tokens", :force => true do |t|
|
|
||||||
t.integer "resource_owner_id"
|
|
||||||
t.integer "application_id"
|
|
||||||
t.string "token", :null => false
|
|
||||||
t.string "refresh_token"
|
|
||||||
t.integer "expires_in"
|
|
||||||
t.datetime "revoked_at"
|
|
||||||
t.datetime "created_at", :null => false
|
|
||||||
t.string "scopes"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "oauth_access_tokens", ["refresh_token"], :name => "index_oauth_access_tokens_on_refresh_token", :unique => true
|
|
||||||
add_index "oauth_access_tokens", ["resource_owner_id"], :name => "index_oauth_access_tokens_on_resource_owner_id"
|
|
||||||
add_index "oauth_access_tokens", ["token"], :name => "index_oauth_access_tokens_on_token", :unique => true
|
|
||||||
|
|
||||||
create_table "oauth_applications", :force => true do |t|
|
|
||||||
t.string "name", :null => false
|
|
||||||
t.string "uid", :null => false
|
|
||||||
t.string "secret", :null => false
|
|
||||||
t.text "redirect_uri", :null => false
|
|
||||||
t.string "scopes", :default => "", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.integer "owner_id"
|
|
||||||
t.string "owner_type"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "oauth_applications", ["owner_id", "owner_type"], :name => "index_oauth_applications_on_owner_id_and_owner_type"
|
|
||||||
add_index "oauth_applications", ["uid"], :name => "index_oauth_applications_on_uid", :unique => true
|
|
||||||
|
|
||||||
create_table "onclick_times", :force => true do |t|
|
create_table "onclick_times", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.datetime "onclick_time"
|
t.datetime "onclick_time"
|
||||||
|
@ -1629,23 +1350,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.integer "allow_teacher", :default => 0
|
t.integer "allow_teacher", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "permissions", :force => true do |t|
|
|
||||||
t.string "controller", :limit => 30, :default => "", :null => false
|
|
||||||
t.string "action", :limit => 30, :default => "", :null => false
|
|
||||||
t.string "description", :limit => 60, :default => "", :null => false
|
|
||||||
t.boolean "is_public", :default => false, :null => false
|
|
||||||
t.integer "sort", :default => 0, :null => false
|
|
||||||
t.boolean "mail_option", :default => false, :null => false
|
|
||||||
t.boolean "mail_enabled", :default => false, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "permissions_roles", :id => false, :force => true do |t|
|
|
||||||
t.integer "permission_id", :default => 0, :null => false
|
|
||||||
t.integer "role_id", :default => 0, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id"
|
|
||||||
|
|
||||||
create_table "phone_app_versions", :force => true do |t|
|
create_table "phone_app_versions", :force => true do |t|
|
||||||
t.string "version"
|
t.string "version"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
@ -1728,11 +1432,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "project_import_data", :force => true do |t|
|
|
||||||
t.integer "project_id"
|
|
||||||
t.text "data"
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "project_infos", :force => true do |t|
|
create_table "project_infos", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
@ -1823,32 +1522,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
|
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
|
||||||
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
|
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
|
||||||
|
|
||||||
<<<<<<< .mine
|
|
||||||
create_table "protected_branches", :force => true do |t|
|
|
||||||
t.integer "project_id", :null => false
|
|
||||||
t.string "name", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.boolean "developers_can_push", :default => false, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "protected_branches", ["project_id"], :name => "index_protected_branches_on_project_id"
|
|
||||||
|
|
||||||
create_table "quality_analyses", :force => true do |t|
|
|
||||||
t.integer "project_id"
|
|
||||||
t.string "author_login"
|
|
||||||
t.string "rep_identifier"
|
|
||||||
t.datetime "created_at", :null => false
|
|
||||||
t.datetime "updated_at", :null => false
|
|
||||||
t.float "version", :default => 0.0
|
|
||||||
t.integer "sonar_version", :default => 1
|
|
||||||
t.string "path"
|
|
||||||
t.string "branch"
|
|
||||||
t.string "language"
|
|
||||||
t.string "sonar_name"
|
|
||||||
end
|
|
||||||
|
|
||||||
=======
|
|
||||||
create_table "quality_analyses", :force => true do |t|
|
create_table "quality_analyses", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "author_login"
|
t.string "author_login"
|
||||||
|
@ -1859,21 +1532,9 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.string "path"
|
t.string "path"
|
||||||
t.string "branch"
|
t.string "branch"
|
||||||
t.string "language"
|
t.string "language"
|
||||||
|
t.string "sonar_name"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
>>>>>>> .theirs
|
|
||||||
create_table "queries", :force => true do |t|
|
create_table "queries", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "name", :default => "", :null => false
|
t.string "name", :default => "", :null => false
|
||||||
|
@ -2008,25 +1669,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.integer "is_teacher_score", :default => 0
|
t.integer "is_teacher_score", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "services", :force => true do |t|
|
|
||||||
t.string "type"
|
|
||||||
t.string "title"
|
|
||||||
t.integer "project_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.boolean "active", :default => false, :null => false
|
|
||||||
t.text "properties"
|
|
||||||
t.boolean "template", :default => false
|
|
||||||
t.boolean "push_events", :default => true
|
|
||||||
t.boolean "issues_events", :default => true
|
|
||||||
t.boolean "merge_requests_events", :default => true
|
|
||||||
t.boolean "tag_push_events", :default => true
|
|
||||||
t.boolean "note_events", :default => true, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "services", ["created_at", "id"], :name => "index_services_on_created_at_and_id"
|
|
||||||
add_index "services", ["project_id"], :name => "index_services_on_project_id"
|
|
||||||
|
|
||||||
create_table "settings", :force => true do |t|
|
create_table "settings", :force => true do |t|
|
||||||
t.string "name", :default => "", :null => false
|
t.string "name", :default => "", :null => false
|
||||||
t.text "value"
|
t.text "value"
|
||||||
|
@ -2065,26 +1707,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "snippets", :force => true do |t|
|
|
||||||
t.string "title"
|
|
||||||
t.text "content", :limit => 2147483647
|
|
||||||
t.integer "author_id", :null => false
|
|
||||||
t.integer "project_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.string "file_name"
|
|
||||||
t.datetime "expires_at"
|
|
||||||
t.string "type"
|
|
||||||
t.integer "visibility_level", :default => 0, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "snippets", ["author_id"], :name => "index_snippets_on_author_id"
|
|
||||||
add_index "snippets", ["created_at", "id"], :name => "index_snippets_on_created_at_and_id"
|
|
||||||
add_index "snippets", ["created_at"], :name => "index_snippets_on_created_at"
|
|
||||||
add_index "snippets", ["expires_at"], :name => "index_snippets_on_expires_at"
|
|
||||||
add_index "snippets", ["project_id"], :name => "index_snippets_on_project_id"
|
|
||||||
add_index "snippets", ["visibility_level"], :name => "index_snippets_on_visibility_level"
|
|
||||||
|
|
||||||
create_table "softapplications", :force => true do |t|
|
create_table "softapplications", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
@ -2223,33 +1845,12 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "subscriptions", :force => true do |t|
|
|
||||||
t.integer "user_id"
|
|
||||||
t.integer "subscribable_id"
|
|
||||||
t.string "subscribable_type"
|
|
||||||
t.boolean "subscribed"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "subscriptions", ["subscribable_id", "subscribable_type", "user_id"], :name => "subscriptions_user_id_and_ref_fields", :unique => true
|
|
||||||
|
|
||||||
create_table "syllabuses", :force => true do |t|
|
create_table "syllabuses", :force => true do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at", :null => false
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
t.string "eng_name"
|
|
||||||
t.integer "syllabus_type"
|
|
||||||
t.integer "credit"
|
|
||||||
t.integer "hours"
|
|
||||||
t.integer "theory_hours"
|
|
||||||
t.integer "practice_hours"
|
|
||||||
t.string "applicable_major"
|
|
||||||
t.string "pre_course"
|
|
||||||
t.integer "visits", :default => 0
|
|
||||||
t.integer "des_status", :default => 0
|
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "syllabuses", ["user_id"], :name => "index_syllabuses_on_user_id"
|
add_index "syllabuses", ["user_id"], :name => "index_syllabuses_on_user_id"
|
||||||
|
@ -2494,17 +2095,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
|
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
|
||||||
add_index "users", ["type"], :name => "index_users_on_type"
|
add_index "users", ["type"], :name => "index_users_on_type"
|
||||||
|
|
||||||
create_table "users_star_projects", :force => true do |t|
|
|
||||||
t.integer "project_id", :null => false
|
|
||||||
t.integer "user_id", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "users_star_projects", ["project_id"], :name => "index_users_star_projects_on_project_id"
|
|
||||||
add_index "users_star_projects", ["user_id", "project_id"], :name => "index_users_star_projects_on_user_id_and_project_id", :unique => true
|
|
||||||
add_index "users_star_projects", ["user_id"], :name => "index_users_star_projects_on_user_id"
|
|
||||||
|
|
||||||
create_table "versions", :force => true do |t|
|
create_table "versions", :force => true do |t|
|
||||||
t.integer "project_id", :default => 0, :null => false
|
t.integer "project_id", :default => 0, :null => false
|
||||||
t.string "name", :default => "", :null => false
|
t.string "name", :default => "", :null => false
|
||||||
|
@ -2556,23 +2146,6 @@ ActiveRecord::Schema.define(:version => 20160624032138) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "web_hooks", :force => true do |t|
|
|
||||||
t.string "url"
|
|
||||||
t.integer "project_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.string "type", :default => "ProjectHook"
|
|
||||||
t.integer "service_id"
|
|
||||||
t.boolean "push_events", :default => true, :null => false
|
|
||||||
t.boolean "issues_events", :default => false, :null => false
|
|
||||||
t.boolean "merge_requests_events", :default => false, :null => false
|
|
||||||
t.boolean "tag_push_events", :default => false
|
|
||||||
t.boolean "note_events", :default => false, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "web_hooks", ["created_at", "id"], :name => "index_web_hooks_on_created_at_and_id"
|
|
||||||
add_index "web_hooks", ["project_id"], :name => "index_web_hooks_on_project_id"
|
|
||||||
|
|
||||||
create_table "wechat_logs", :force => true do |t|
|
create_table "wechat_logs", :force => true do |t|
|
||||||
t.string "openid", :null => false
|
t.string "openid", :null => false
|
||||||
t.text "request_raw"
|
t.text "request_raw"
|
||||||
|
|
|
@ -152,7 +152,6 @@ a.postTypeGrey:hover {color:#269ac9;}
|
||||||
.homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;}
|
.homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;}
|
||||||
.homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;}
|
.homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;}
|
||||||
.homepagePostIntro a{color: #136ec2;}
|
.homepagePostIntro a{color: #136ec2;}
|
||||||
.homepagePostIntro p{line-height: 1;}
|
|
||||||
.homepagePostDeadline {font-size:12px; color:#888888; float:left; margin-top: 2px;}
|
.homepagePostDeadline {font-size:12px; color:#888888; float:left; margin-top: 2px;}
|
||||||
.homepagePostDate {font-size:12px; color:#888888;margin-bottom: 5px;}
|
.homepagePostDate {font-size:12px; color:#888888;margin-bottom: 5px;}
|
||||||
.homepagePostReply {width:710px; margin:0px auto; background-color:#f1f1f1; margin-top:10px;}
|
.homepagePostReply {width:710px; margin:0px auto; background-color:#f1f1f1; margin-top:10px;}
|
||||||
|
@ -1430,3 +1429,4 @@ a.pages-big{ width:50px;}
|
||||||
.W600{ width:600px;}
|
.W600{ width:600px;}
|
||||||
|
|
||||||
.syllabus_input {width: 290px; border: 1px solid #64bdd9; height: 30px;}
|
.syllabus_input {width: 290px; border: 1px solid #64bdd9; height: 30px;}
|
||||||
|
.syllabus_input option {max-width:260px;}
|
||||||
|
|
|
@ -683,7 +683,6 @@ a.postTypeGrey:hover {color:#269ac9;}
|
||||||
.homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;}
|
.homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;}
|
||||||
.homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;}
|
.homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;}
|
||||||
.homepagePostIntro a{color: #136ec2;}
|
.homepagePostIntro a{color: #136ec2;}
|
||||||
.homepagePostIntro p{line-height: 1;}
|
|
||||||
.homepagePostReplyBanner {width:718px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888; position: relative;}
|
.homepagePostReplyBanner {width:718px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888; position: relative;}
|
||||||
.borderBottomNone {border-bottom:none !important;}
|
.borderBottomNone {border-bottom:none !important;}
|
||||||
.homepagePostReplyBanner {width:718px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888;}
|
.homepagePostReplyBanner {width:718px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888;}
|
||||||
|
|
|
@ -969,7 +969,6 @@ a:hover.Reply_pic{border:1px solid #64bdd9;}
|
||||||
color: #484848;
|
color: #484848;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.homepagePostIntro p{line-height: 1;}
|
|
||||||
.homepagePostReply {
|
.homepagePostReply {
|
||||||
width: 710px;
|
width: 710px;
|
||||||
margin: 10px auto 0px;
|
margin: 10px auto 0px;
|
||||||
|
|
|
@ -633,7 +633,6 @@ a.postTypeGrey:hover {color:#269ac9;}
|
||||||
.homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;}
|
.homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;}
|
||||||
.homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;}
|
.homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;}
|
||||||
.homepagePostIntro a{color: #136ec2;}
|
.homepagePostIntro a{color: #136ec2;}
|
||||||
.homepagePostIntro p{line-height: 1;}
|
|
||||||
.homepagePostDeadline {font-size:12px; color:#888888; float:left; margin-top: 2px;}
|
.homepagePostDeadline {font-size:12px; color:#888888; float:left; margin-top: 2px;}
|
||||||
.homepagePostDate {font-size:12px; color:#888888;margin-bottom: 5px;}
|
.homepagePostDate {font-size:12px; color:#888888;margin-bottom: 5px;}
|
||||||
.homepagePostReplyBanner {width:708px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888; position: relative;}
|
.homepagePostReplyBanner {width:708px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888; position: relative;}
|
||||||
|
|
|
@ -138,7 +138,7 @@ a.sortupbtn{ background: url(../images/syllabus/icons_syllabus.png) 0 3px no-rep
|
||||||
a.sortdownbtn{ background: url(../images/syllabus/icons_syllabus.png) 0 -12px no-repeat; width:12px; height:17px; display:block;cursor:pointer; }
|
a.sortdownbtn{ background: url(../images/syllabus/icons_syllabus.png) 0 -12px no-repeat; width:12px; height:17px; display:block;cursor:pointer; }
|
||||||
a.sort_no{ background: url(../images/syllabus/icons_syllabus.png) -16px -12px no-repeat; width:12px; height:17px; display:block;cursor:pointer; }
|
a.sort_no{ background: url(../images/syllabus/icons_syllabus.png) -16px -12px no-repeat; width:12px; height:17px; display:block;cursor:pointer; }
|
||||||
.item_list{ display:block; width:5px; height:5px;-webkit-border-radius: 25px;border-radius:25px; background-color:#adadad; margin:10px 10px 0 0;}
|
.item_list{ display:block; width:5px; height:5px;-webkit-border-radius: 25px;border-radius:25px; background-color:#adadad; margin:10px 10px 0 0;}
|
||||||
a.list-title{ font-size:14px; font-weight: bold; color:#000;white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:block; width:708px;}
|
a.list-title{ font-size:14px; font-weight: bold; color:#000;white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:block;}
|
||||||
a:hover.list-title{ color:#269ac9;}
|
a:hover.list-title{ color:#269ac9;}
|
||||||
.c_red{ font-weight:normal; font-size:12px;}
|
.c_red{ font-weight:normal; font-size:12px;}
|
||||||
.list-file{ padding:10px 0; border-bottom:1px dashed #ddd;}
|
.list-file{ padding:10px 0; border-bottom:1px dashed #ddd;}
|
||||||
|
|
Loading…
Reference in New Issue