diff --git a/Gemfile b/Gemfile
index a04059bf..1d827679 100644
--- a/Gemfile
+++ b/Gemfile
@@ -21,6 +21,18 @@ group :development do
gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler'
end
+# Gems used only for assets and not required
+# in production environments by default.
+group :assets do
+ gem 'sass-rails', '~> 3.2.3'
+ gem 'coffee-rails', '~> 3.2.1'
+
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
+ # gem 'therubyracer', :platforms => :ruby
+
+ gem 'uglifier', '>= 1.0.3'
+end
+
# Optional gem for LDAP authentication
group :ldap do
gem "net-ldap", "~> 0.3.1"
diff --git a/Gemfile.lock b/Gemfile.lock
index 25cc9f48..6680070a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -53,7 +53,16 @@ GEM
arel (3.0.2)
builder (3.0.0)
coderay (1.0.9)
+ coffee-rails (3.2.2)
+ coffee-script (>= 2.2.0)
+ railties (~> 3.2.0)
+ coffee-script (2.2.0)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.6.1)
erubis (2.7.0)
+ execjs (1.4.0)
+ multi_json (~> 1.0)
fastercsv (1.5.0)
hike (1.2.3)
i18n (0.6.1)
@@ -99,6 +108,11 @@ GEM
rdoc (3.12.2)
json (~> 1.4)
ruby-openid (2.1.8)
+ sass (3.2.7)
+ sass-rails (3.2.6)
+ railties (~> 3.2.0)
+ sass (>= 3.1.10)
+ tilt (~> 1.3)
sprockets (2.2.2)
hike (~> 1.2)
multi_json (~> 1.0)
@@ -110,6 +124,9 @@ GEM
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.37)
+ uglifier (1.0.3)
+ execjs (>= 0.3.0)
+ multi_json (>= 1.0.2)
PLATFORMS
x86-mingw32
@@ -121,6 +138,7 @@ DEPENDENCIES
better_errors!
builder (= 3.0.0)
coderay (~> 1.0.6)
+ coffee-rails (~> 3.2.1)
fastercsv (~> 1.5.0)
i18n (~> 0.6.0)
jquery-rails (~> 2.0.2)
@@ -130,4 +148,6 @@ DEPENDENCIES
rack-openid
rails (= 3.2.13)
ruby-openid (~> 2.1.4)
+ sass-rails (~> 3.2.3)
seems_rateable!
+ uglifier (>= 1.0.3)
diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb
index e7490f5b..b51a1143 100644
--- a/app/controllers/contests_controller.rb
+++ b/app/controllers/contests_controller.rb
@@ -5,7 +5,8 @@ class ContestsController < ApplicationController
menu_item :project, :only => :show_project
menu_item :application, :only => :show_softapplication
menu_item :attendingcontest, :only => :show_attendingcontest
- before_filter :find_contest, :only => [:show_contest, :show_project, :show_softapplication, :show_attendingcontest, :set_reward_project, :set_reward_softapplication, :create,:destroy,:more,:back,:add,:add_softapplication,:new,:show_results, :set_reward,
+ menu_item :contestnotification, :only => :show_notification
+ before_filter :find_contest, :only => [:show_contest, :show_project, :show_softapplication, :show_attendingcontest, :show_notification, :set_reward_project, :set_reward_softapplication, :create,:destroy,:more,:back,:add,:add_softapplication,:new,:show_results, :set_reward,
:show_contest_project, :show_contest_user, :join_in_contest, :unjoin_in_contest, :new_join,:show_participator, :settings]
# added by fq
@@ -355,6 +356,17 @@ class ContestsController < ApplicationController
end
###end
+
+def show_notification
+ @contest = Contest.find_by_id(params[:id])
+ respond_to do |format|
+ format.html {
+ render :layout => 'base_newcontest'
+ }
+ format.api
+ end
+end
+
def set_reward_project
@c_p = nil
diff --git a/app/controllers/open_source_projects_controller.rb b/app/controllers/open_source_projects_controller.rb
index 1ca7ddce..ee3af10c 100644
--- a/app/controllers/open_source_projects_controller.rb
+++ b/app/controllers/open_source_projects_controller.rb
@@ -1,8 +1,8 @@
class OpenSourceProjectsController < ApplicationController
-
+
before_filter :find_osp, :only => [:master_apply, :accept_master_apply, :refuse_master_apply]
before_filter :require_master, :only => [:master_apply, :accept_master_apply, :refuse_master_apply]
-
+
helper :sort
include SortHelper
helper :apply_project_masters
@@ -12,6 +12,7 @@ class OpenSourceProjectsController < ApplicationController
# GET /open_source_projects
# GET /open_source_projects.json
def index
+
@app_dir = params[:app_dir]
@language = params[:language]
@created_at = params[:created_at]
@@ -22,8 +23,10 @@ class OpenSourceProjectsController < ApplicationController
@os_project_count = @open_source_projects.count
@os_project_pages = Paginator.new @os_project_count, per_page_option, params['page']
-
+
@open_source_projects = @open_source_projects.offset(@os_project_pages.offset).limit(@os_project_pages.per_page)
+
+ @bugs = BugToOsp.order('created_at desc').limit(8)
# @open_source_projects = OpenSourceProject.all
@@ -32,11 +35,11 @@ class OpenSourceProjectsController < ApplicationController
format.json { render json: @open_source_projects }
end
end
-
+
def master_apply
@apply = @open_source_project.apply_tips
@applicants = @open_source_project.applicants
-
+
respond_to do |format|
format.html {
render :layout => "base_opensource_p"
@@ -49,7 +52,7 @@ class OpenSourceProjectsController < ApplicationController
# GET /open_source_projects/1.json
def show
@open_source_project = OpenSourceProject.find(params[:id])
-
+
sort_init 'updated_at', 'desc'
sort_update 'created_at' => "#{RelativeMemo.table_name}.created_at",
'replies' => "#{RelativeMemo.table_name}.replies_count",
@@ -63,9 +66,9 @@ class OpenSourceProjectsController < ApplicationController
includes(:last_reply).
limit(@topic_pages.per_page).
offset(@topic_pages.offset).
- order(sort_clause).
+ order(sort_clause).
all
-
+
@bugs = @open_source_project.bugs.limit(6)
respond_to do |format|
@@ -75,26 +78,36 @@ class OpenSourceProjectsController < ApplicationController
format.json { render json: @open_source_project }
end
end
-
-
-def search
+
+ def allbug
+ @bugs = BugToOsp.visible
+ @bug_count = @bugs.count
+ @bug_pages = Paginator.new @bug_count, per_page_option, params['page']
+ @bugs = @bugs.includes(:bug).reorder("#{RelativeMemo.table_name}.created_at DESC").limit(@bug_pages.per_page).offset(@bug_pages.offset).all
+
+ respond_to do |format|
+ format.html
+ format.json { render json: @open_source_project }
+ end
end
+ def search
-# added by yiang 暴力添加,请绕道
-def showmemo
- @open_source_project = OpenSourceProject.find(params[:id])
+ end
- sort_init 'updated_at', 'desc'
- sort_update 'created_at' => "#{RelativeMemo.table_name}.created_at",
+ def showbug
+ @open_source_project = OpenSourceProject.find(params[:id])
+
+ sort_init 'updated_at', 'desc'
+ sort_update 'created_at' => "#{RelativeMemo.table_name}.created_at",
'replies' => "#{RelativeMemo.table_name}.replies_count",
'updated_at' => "COALESCE (last_replies_relative_memos.created_at, #{RelativeMemo.table_name}.created_at)"
- @memo = RelativeMemo.new(:open_source_project => @open_source_project)
- @topic_count = @open_source_project.topics.count
- @topic_pages = Paginator.new @topic_count, per_page_option, params['page']
- @memos = @open_source_project.topics.
+ @memo = RelativeMemo.new(:open_source_project => @open_source_project)
+ @topic_count = @open_source_project.bugs.count
+ @topic_pages = Paginator.new @topic_count, per_page_option, params['page']
+ @memos = @open_source_project.bugs.
reorder("#{RelativeMemo.table_name}.sticky DESC").
includes(:last_reply).
limit(@topic_pages.per_page).
@@ -102,13 +115,42 @@ def showmemo
order(sort_clause).
all
- respond_to do |format|
- format.html {
- render :layout => "base_opensource_p"
- }
- format.json { render json: @open_source_project }
+ respond_to do |format|
+ format.html {
+ render :layout => "base_opensource_p"
+ }
+ format.json { render json: @open_source_project }
+ end
end
-end
+
+ # added by yiang 暴力添加,请绕道
+ def showmemo
+ @open_source_project = OpenSourceProject.find(params[:id])
+
+ sort_init 'updated_at', 'desc'
+ sort_update 'created_at' => "#{RelativeMemo.table_name}.created_at",
+ 'replies' => "#{RelativeMemo.table_name}.replies_count",
+ 'updated_at' => "COALESCE (last_replies_relative_memos.created_at, #{RelativeMemo.table_name}.created_at)"
+
+ @memo = RelativeMemo.new(:open_source_project => @open_source_project)
+ @topic_count = @open_source_project.topics.count
+ @topic_pages = Paginator.new @topic_count, per_page_option, params['page']
+ @memos = @open_source_project.topics.
+ reorder("#{RelativeMemo.table_name}.sticky DESC").
+ includes(:last_reply).
+ limit(@topic_pages.per_page).
+ offset(@topic_pages.offset).
+ order(sort_clause).
+ all
+
+ respond_to do |format|
+ format.html {
+ render :layout => "base_opensource_p"
+ }
+ format.json { render json: @open_source_project }
+ end
+ end
+
# GET /open_source_projects/new
# GET /open_source_projects/new.json
def new
@@ -168,52 +210,51 @@ end
format.json { head :no_content }
end
end
-
+
def remove_condition
@app_dir = params[:app_dir]
@language = params[:language]
@created_at = params[:created_at]
redirect_to open_source_projects_path(:app_dir => @app_dir, :language => @language, :created_at => @created_at, :name => params[:name])
end
-
+
def search
# per_page_option = 10
-#
+ #
# @open_source_projects = OpenSourceProject.filter(@app_dir, @language, @created_at)
# @open_source_projects = @open_source_projects.like(params[:name]) if params[:name].present?
-#
+ #
# @os_project_count = @open_source_projects.count
# @os_project_pages = Paginator.new @os_project_count, per_page_option, params['page']
-#
+ #
# @open_source_projects = @open_source_projects.offset(@os_project_pages.offset).limit(@os_project_pages.per_page)
redirect_to open_source_projects_path(:name => params[:name])
end
-
+
def refuse_master_apply
@apply = ApplyProjectMaster.where("user_id = ? and apply_id = ? and apply_type = 'OpenSourceProject'", params[:user_id], @open_source_project.id)
@apply.first.destory
-
+
redirect_to master_apply_open_source_project_path
end
-
+
def accept_master_apply
@apply = ApplyProjectMaster.where("user_id = ? and apply_id = ? and apply_type = 'OpenSourceProject'", params[:user_id], @open_source_project.id)
if @apply.count == 1
- @apply.first.update_attributes(:status => 2)
+ @apply.first.update_attributes(:status => 2)
end
-
+
redirect_to master_apply_open_source_project_path
end
-
-
+
private
-
+
def require_master
render_403 unless @open_source_project.admin?(User.current)
end
-
+
def find_osp
@open_source_project = OpenSourceProject.find(params[:id])
render_404 unless @open_source_project.present?
diff --git a/app/controllers/softapplications_controller.rb b/app/controllers/softapplications_controller.rb
index 31675ca5..b8d81b10 100644
--- a/app/controllers/softapplications_controller.rb
+++ b/app/controllers/softapplications_controller.rb
@@ -47,7 +47,7 @@ class SoftapplicationsController < ApplicationController
def show
@softapplication = Softapplication.find(params[:id])
- @project = Project.find_by_identifier(@softapplication.deposit_project)
+ @project = @softapplication.project
# 打分统计
stars_reates = @softapplication.
rates(:quality)
@@ -142,13 +142,16 @@ class SoftapplicationsController < ApplicationController
def create
@softapplication = Softapplication.new(params[:softapplication])
@softapplication.user = User.current
- @softapplication.deposit_project = params[:project]
+ #@softapplication.deposit_project = params[:project]
+ @softapplication.project = Project.find_by_id(params[:project])
@softapplication.save_attachments(params[:attachments])
respond_to do |format|
if @softapplication.save
ContestingSoftapplication.create(:contest_id => params[:contest_id], :softapplication_id => @softapplication.id)
+ #ProjectingSoftapplication.create_softapplication_projecting(:project_id => params[:project_id], :softapplication_id => @softapplication.id)
+ #ProjectingSoftapplication.create_softapplication_projecting(@project.id, softapplication.id)
format.html { redirect_to show_attendingcontest_contest_path(:id => params[:contest_id]), notice: l(:notice_attendingcontest_work_successfully_created) }
# format.json { render json: @softapplication, status: :created, location: @softapplication }
else
@@ -170,7 +173,8 @@ class SoftapplicationsController < ApplicationController
# @softapplication = Softapplication.find(params[:id])
@softapplication.attachments.map{|attach| attach.destroy }
@softapplication.save_attachments(params[:attachments])
- @softapplication.deposit_project = params[:project]
+ #@softapplication.deposit_project = params[:project]
+ @softapplication.project = Project.find_by_id(params[:project])
respond_to do |format|
if @softapplication.update_attributes(params[:softapplication])
format.html { redirect_to @softapplication, notice: l(:notice_softapplication_was_successfully_updated) }
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 7dc4b555..7bfe9512 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -750,7 +750,7 @@ module ApplicationHelper
tmp = Hash.new
tmp={"" => ""}
option.each do |project|
- tmp[project.name] = project.identifier
+ tmp[project.name] = project.id
end
tmp
end
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 23351d91..5e7f7c18 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -59,12 +59,11 @@ module IssuesHelper
def issue_heading(issue)
#h("#{issue.tracker} ##{issue.id}")
- #h("#{issue.tracker} #{issue.source_from}")
+ # h("#{issue.tracker} #{issue.source_from}")
s = ''
- s << ">>"
- s << link_to(@issue.project.name+l(:issue_list), project_issues_path(@issue.project))
- s << " >"
- s << @issue.source_from
+ s << link_to(@issue.project.name, project_issues_path(@issue.project))
+ s << " > #"
+ s << @issue.project_index
s.html_safe
end
diff --git a/app/helpers/open_source_projects_helper.rb b/app/helpers/open_source_projects_helper.rb
index f1c1cd35..dfc7cc8d 100644
--- a/app/helpers/open_source_projects_helper.rb
+++ b/app/helpers/open_source_projects_helper.rb
@@ -46,4 +46,12 @@ module OpenSourceProjectsHelper
end
description
end
+
+ def show_description_of_bug(bug)
+ description = bug.description
+ if description.nil? || description == ''
+ description = bug.open_source_project.name + l(:label_bug)
+ end
+ description
+ end
end
diff --git a/app/models/bug_to_osp.rb b/app/models/bug_to_osp.rb
index 5471bd3f..9cd1d735 100644
--- a/app/models/bug_to_osp.rb
+++ b/app/models/bug_to_osp.rb
@@ -5,4 +5,8 @@ class BugToOsp < ActiveRecord::Base
validates_presence_of :osp_id, :relative_memo_id
+ scope :visible, lambda {|*args|
+ nil
+ }
+
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index d2332350..7e899eaf 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -1156,7 +1156,11 @@ class Issue < ActiveRecord::Base
# back string obj which is belong to project.
def source_from
"" << self.project.name.to_s <<
- "#" << (self.project.issues.index(self).to_i + 1).to_s
+ "#" << project_index
+ end
+
+ def project_index
+ (self.project.issues.index(self).to_i + 1).to_s
end
private
diff --git a/app/models/relative_memo.rb b/app/models/relative_memo.rb
index 073d1ca1..f087fce2 100644
--- a/app/models/relative_memo.rb
+++ b/app/models/relative_memo.rb
@@ -70,6 +70,11 @@ class RelativeMemo < ActiveRecord::Base
def cannot_reply_to_locked_topic
errors.add :base, l(:label_memo_locked) if root.locked? && self != root
end
+
+ def short_content(length = 25)
+ str = "^(.{,#{length}})[^\n\r]*.*$"
+ content.gsub(Regexp.new(str), '\1...').strip if content
+ end
# def update_memos_forum
# if forum_id_changed?
diff --git a/app/models/softapplication.rb b/app/models/softapplication.rb
index 5e1e1bd5..f7eed43f 100644
--- a/app/models/softapplication.rb
+++ b/app/models/softapplication.rb
@@ -6,10 +6,11 @@ class Softapplication < ActiveRecord::Base
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
has_many :contesting_softapplications, :dependent => :destroy
- has_many :projecting_softapplications, :dependent => :destroy
+ #has_many :projecting_softapplications, :dependent => :destroy
belongs_to :user
belongs_to :project
has_many :contests, :through => :contesting_softapplications
+ belongs_to :project
def add_jour(user, notes, reference_user_id = 0, options = {})
if options.count == 0
diff --git a/app/views/contests/_list_softapplications.html.erb b/app/views/contests/_list_softapplications.html.erb
index 9b99b675..89e8a317 100644
--- a/app/views/contests/_list_softapplications.html.erb
+++ b/app/views/contests/_list_softapplications.html.erb
@@ -4,7 +4,7 @@
<% if memos.any? %>
@@ -18,12 +18,12 @@
<% if topic.url.nil? || topic.url == '' %>
<%= link_to h(topic.subject), open_source_project_relative_memo_path(open_source_project, topic) %>
<% else %>
- <%= link_to h(topic.subject), topic.url %>
+ <%= link_to h(topic.subject), topic.url, :target => '_blank' %>
<% end %>
- <%= link_to (topic.replies_count), open_source_project_relative_memo_path(open_source_project, topic) %>
+ <%= link_to (topic.replies_count), topic.url, :target => '_blank' %>
回帖
@@ -33,7 +33,7 @@
- <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(open_source_project, topic) %>
+ <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), topic.url, :target => '_blank' %>
关注
@@ -43,7 +43,7 @@
- <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(open_source_project, topic) %>
+ <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), topic.url, :target => '_blank' %>
浏览
@@ -51,17 +51,17 @@
-
+
- <%= user_url_and_time topic.username, topic.userhomeurl, topic.created_at %>
+ <%= user_url_and_time topic.username, topic.userhomeurl, topic.created_at %>
- 帖子来源:<%=link_to 'OSChina', topic.url %>
+ 帖子来源:<%=link_to 'OSChina', topic.url %>
- <%= no_use_link(topic, User.current) %>
+ <%= no_use_link(topic, User.current) %>
diff --git a/app/views/open_source_projects/_show_topics.html.erb b/app/views/open_source_projects/_show_topics.html.erb
index 3ba46394..ac7c5b4d 100644
--- a/app/views/open_source_projects/_show_topics.html.erb
+++ b/app/views/open_source_projects/_show_topics.html.erb
@@ -5,12 +5,13 @@
-
+
<%= javascript_include_tag "ichart.1.2.min" %>
<%= stylesheet_link_tag "sec-analysis.css" %>
<%= stylesheet_link_tag "buglist-ichart.css" %>
<%= stylesheet_link_tag "buglist.css" %>
+
@@ -20,33 +21,66 @@
-
项目安全态势 <%= link_to "更多 >>", :controller => "open_source_projects",:action => "showmemo", :id => @open_source_project.id %>
+
项目安全态势 <%= link_to "更多 >>", :controller => "open_source_projects",:action => "showbug", :id => @open_source_project.id %>
+
+<% if @open_source_project.id ==42 then %>
+
+
+
+
+
+
聚焦:
+
栈溢出
+
远程权限
+
框架安全
+
+
+
+<% elsif @open_source_project.id ==70 then %>
+
+
+
+
+
+
聚焦:
+
Kernel安全
+
函数漏洞
+
ping_init_sock()
+
+
+<% elsif @open_source_project.id ==17 then %>
+
+
+
+
+
+
聚焦:
+
Heartblood
+
致命漏洞
+
+
+<% elsif @open_source_project.id ==55 then %>
+
+
+
+
+
+
聚焦:
+
DDos攻击
+
信息泄露
+
+
+<%end if %>
+
+
+
+
<% @bugs.each do |bug| %>
- >[<%= show_description(bug, open_source_project) %>] <%= link_to bug.subject, bug.url %>
+ >[<%= show_description(bug, open_source_project) %>] <%= link_to bug.subject, bug.url, :target => '_blank' %>
<% end %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -61,8 +95,6 @@
// t.push(Math.floor(Math.random()*(30+((i%12)*5)))+10);
}
-
-
var data = [
{
name :'',
@@ -127,7 +159,7 @@
parseText:function(tip,name,value,text,i){
return name+"漏洞数:"+value;
}
- } ,
+ }
},
tipMocker:function(tips,i){
@@ -143,18 +175,7 @@
labels[index]+" "+//日期
((i%12)==0?"1 月":((i%12+1))+"月")+ //时间
"
"+tips.join(" ");
- },
-
- // legend : {
- // enable : true,
- // row:1,//设置在一行上显示,与column配合使用
- // column : 'max',
- // valign:'top',
- // sign:'bar',
- // background_color:null,//设置透明背景
- // offsetx:-80,//设置x轴偏移,满足位置需要
- // border : true
- // },
+ },
crosshair:{
enable:true, //十字交叉线
line_color:'#62bce9'
@@ -194,8 +215,7 @@
start_scale:0,
scale_space:50,
end_scale:70,
- scale_color:'#9f9f9f',
- // label : {color:'#ffffff',fontsize:11},
+ scale_color:'#9f9f9f'
},{
position:'bottom',
@@ -203,35 +223,10 @@
}]
}
});
- //开始画图
- /**
-*自定义组件,画平均线。
-*/
-// line.plugin(new iChart.Custom({
-// drawFn:function(){
-// /**
-// *计算平均值的高度(坐标Y值)
-// *计算高度还不会! 会划线了!
-// */
-// // var avg = line.total/5,
-// // coo = line.getCoordinate(),
-// // x = coo.get('originx'),
-// // W = coo.width,
-// // S = coo.getScale('left'),
-// // H = coo.height,
-// // h = (avg - S.start) * H / S.distance,
-// // y = line.y + H - h;
-// line.target.line(28,97,400,97,2,'#b32c0d')
-// .textAlign('start')
-// .textBaseline('middle')
-// .textFont('600 12px Verdana');
-// }
-// }));
line.draw();
});
- //]]>
@@ -282,10 +277,7 @@
// t.push(Math.floor(Math.random()*(30+((i%12)*5)))+10);
}
-
-
-
- var data = [
+ var data = [
{
name : '',
value:flow,
@@ -297,16 +289,9 @@
//创建x轴标签文本
var date = new Date()
-
var labels = [];
- /* labels.push(date.getFullYear()-2);
- labels.push(date.getFullYear()-1);
- labels.push(date.getFullYear());
- labels.push(date.getFullYear()+1);*/
labels=["2012","","","","","","","","","","","","2013","","","","","","","","","","","","2014","","","",""];
-
-
var line = new iChart.LineBasic2D({
render : 'canvasDiv2',
data: data,
@@ -352,7 +337,7 @@
parseText:function(tip,name,value,text,i){
return name+"帖子数:"+value+"万";
}
- } ,
+ }
},
tipMocker:function(tips,i){
@@ -378,10 +363,9 @@
label:false, //是否显示数值
// hollow_inside:false,
smooth : true,//平滑曲线
- point_size:2, // 焦点大小
+ point_size:2 // 焦点大小
// point_hollow : true,
-
-
+
},
coordinate:{
width:225, // 图表大小
@@ -404,7 +388,7 @@
start_scale:0,
scale_space:50,
end_scale:70,
- scale_color:'#9f9f9f',
+ scale_color:'#9f9f9f'
// label : {color:'#ffffff',fontsize:11},
},{
@@ -435,11 +419,11 @@
- <%= link_to h(topic.subject), topic.url %>
+ <%= link_to h(topic.subject), topic.url, :target => '_blank' %>
- <%= link_to (topic.replies_count), open_source_project_relative_memo_path(open_source_project, topic) %>
+ <%= link_to (topic.replies_count), topic.url, :target => '_blank' %>
回帖
@@ -449,7 +433,7 @@
- <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(open_source_project, topic) %>
+ <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), topic.url, :target => '_blank' %>
关注
@@ -459,7 +443,7 @@
- <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(open_source_project, topic) %>
+ <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), topic.url, :target => '_blank' %>
浏览
@@ -467,17 +451,17 @@
-
+
-
+
- 帖子来源:<%=link_to 'OSChina', topic.url %>
+ 帖子来源:<%=link_to 'OSChina', topic.url %>
- <%= no_use_link(topic, User.current) %>
+ <%= no_use_link(topic, User.current) %>
diff --git a/app/views/open_source_projects/allbug.html.erb b/app/views/open_source_projects/allbug.html.erb
new file mode 100644
index 00000000..d5c0c2e5
--- /dev/null
+++ b/app/views/open_source_projects/allbug.html.erb
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+ 共有 <%= link_to @bug_count %> 个安全贴子
+
+
+ <% if @bugs.any? %>
+ <% @bugs.each do |bug| %>
+ <% topic = bug.bug %>
+
+
+ <%= link_to image_tag(url_to_avatar(topic.author), :class => "avatar"), user_path(topic.author) if topic.author%>
+ <%= image_tag('../images/avatars/User/0', :class => "avatar") unless topic.author%>
+
+
+
+
+ <% if topic.url.nil? || topic.url == '' %>
+ <%= link_to h(topic.subject), open_source_project_relative_memo_path(bug.open_source_project, topic) %>
+ <% else %>
+ <%= link_to h(topic.subject), topic.url, :target => '_blank' %>
+ <% end %>
+
+
+
+ <%= link_to (topic.replies_count), topic.url, :target => '_blank' %>
+
+
+ 回帖
+
+
+
+
+
+
+ <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), topic.url, :target => '_blank' %>
+
+
+ 关注
+
+
+
+
+
+
+ <%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), topic.url, :target => '_blank' %>
+
+
+ 浏览
+
+
+
+
+ <%= topic.short_content(100) %>
+
+
+ <%= user_url_and_time topic.username, topic.userhomeurl, topic.created_at %>
+
+
+
+
+ 帖子来源:<%=link_to topic.topic_resource, topic.url, :target => '_blank' %>
+
+
+
+
+
+
+
+
+
+
+ <% end %>
+
+ <% else %>
+
+ <%= l(:label_no_data) %>
+
+ <% end %>
+
+
+<%#= render :partial => 'open_source_projects/show_memo', :locals => {:memos => @memos, :open_source_project => @open_source_project} %>
+
\ No newline at end of file
diff --git a/app/views/open_source_projects/index.html.erb b/app/views/open_source_projects/index.html.erb
index e51ef4fc..99e34333 100644
--- a/app/views/open_source_projects/index.html.erb
+++ b/app/views/open_source_projects/index.html.erb
@@ -48,7 +48,7 @@
background-position: -266px 3px;
}
.navigation .icon-search, .navigation .nav-pill-cancle, .navigation .nav-switch-icon, .navigation .nav-topbar .topbar-search .topbar-submit, .navigation .nav-topbar-arror {
- background: url();
+ /*background: url()*/
}
.nav-switch-icon {
width: 15px;
@@ -129,8 +129,6 @@ li {
.nav-search-con{
padding-top: 7px;
}
-
-
<%= javascript_include_tag "ichart.1.2.min" %>
<%= stylesheet_link_tag "buglist-div-use.css" %>
@@ -146,29 +144,13 @@ li {
-
+
软件安全态势 <%= link_to '更多 >>', allbug_open_source_projects_path %>
-
@@ -236,7 +218,7 @@ li {
parseText:function(tip,name,value,text,i){
return name+"漏洞数:"+value;
}
- } ,
+ }
},
tipMocker:function(tips,i){
var index;
@@ -272,7 +254,7 @@ li {
label:false, //是否显示数值
// hollow_inside:false,
smooth : true,//平滑曲线
- point_size:2, // 焦点大小
+ point_size:2 // 焦点大小
// point_hollow : true,
@@ -298,7 +280,7 @@ li {
start_scale:0,
scale_space:50,
end_scale:70,
- scale_color:'#9f9f9f',
+ scale_color:'#9f9f9f'
// label : {color:'#ffffff',fontsize:11},
},{
@@ -417,7 +399,7 @@ line.target.line(28,97,400,97,2,'#b32c0d')
diff --git a/app/views/open_source_projects/show.html.erb b/app/views/open_source_projects/show.html.erb
index d1751dec..ec9d521d 100644
--- a/app/views/open_source_projects/show.html.erb
+++ b/app/views/open_source_projects/show.html.erb
@@ -32,7 +32,7 @@
<% #= link_to '发布帖子', new_forum_memo_path(@forum), :class => 'icon icon-add' %>
- <%= link_to l(:label_memo_new_from_forum), new_open_source_project_relative_memo_path(@open_source_project), :class => 'icon icon-add',
+ <%#= link_to l(:label_memo_new_from_forum), new_open_source_project_relative_memo_path(@open_source_project), :class => 'icon icon-add',
:onclick => 'showAndScrollTo("add-memo", "memo_subject"); return false;' if User.current.logged? %>
diff --git a/app/views/open_source_projects/showbug.html.erb b/app/views/open_source_projects/showbug.html.erb
new file mode 100644
index 00000000..679e06f8
--- /dev/null
+++ b/app/views/open_source_projects/showbug.html.erb
@@ -0,0 +1,49 @@
+
+
+
<%=l(:label_memo_new)%>
+ <% if User.current.logged? %>
+ <%= labelled_form_for(@memo, :url => open_source_project_relative_memos_path(@open_source_project), :html => {:multipart => true} ) do |f| %>
+ <% if @memo.errors.any? %>
+
+
<%= pluralize(@memo.errors.count, "error") %> prohibited this memo from being saved:
+
+
+ <% @memo.errors.full_messages.each do |msg| %>
+ <%= msg %>
+ <% end %>
+
+
+ <% end %>
+
+
<%= f.text_field :subject, :required => true%>
+
<%= f.text_area :content, :required => true, :id => 'editor02' %>
+
+
+
+ <%#= l(:label_attachment_plural) %>
+ <%#= render :partial => 'attachments/form', :locals => {:container => @memo} %>
+
+ <%= f.submit :value => l(:label_memo_create) %>
+ <%= link_to l(:button_cancel), "#", :onclick => '$("#add-memo").hide(); return false;' %>
+
+ <% end %>
+<% end %>
+
+
+
+ <%#= link_to(
+ image_tag('edit.png')+l(:label_forum_edit),
+ {:action => 'edit', :id => @forum},
+ :method => 'get',
+ :title => l(:button_edit)
+ ) if @forum.editable_by?(User.current) %>
+ <%#= link_to(
+ image_tag('delete.png')+'删除讨论区',
+ {:action => 'destroy', :id => @forum},
+ :method => :delete,
+ :data => {:confirm => l(:text_are_you_sure)},
+ :title => l(:button_delete)
+ ) if @forum.destroyable_by?(User.current) %>
+
+<%= render :partial => 'open_source_projects/show_bug', :locals => {:memos => @memos, :open_source_project => @open_source_project} %>
+
\ No newline at end of file
diff --git a/app/views/softapplications/_form.html.erb b/app/views/softapplications/_form.html.erb
index 4703af9b..fd946cfc 100644
--- a/app/views/softapplications/_form.html.erb
+++ b/app/views/softapplications/_form.html.erb
@@ -65,7 +65,7 @@
- 上传作品软件包和作品截图
+ <%=l(:label_upload_softworkpacket_photo)%>
<%= render_flash_messages %>
<%= render :partial => 'attachments/form' %>
diff --git a/app/views/softapplications/index.html.erb b/app/views/softapplications/index.html.erb
index 841a8a20..5b355f65 100644
--- a/app/views/softapplications/index.html.erb
+++ b/app/views/softapplications/index.html.erb
@@ -16,13 +16,13 @@
<%= softapplication.description.truncate(95, omission: '...') %>
<%contest = softapplication.contests.first%>
-
所属竞赛:<%= contest ? link_to(contest.name.truncate(14, omission: '...'), show_attendingcontest_contest_path(contest), title: contest.name.to_s ) : '尚未加入竞赛'%>
-
所属类别:<%= softapplication.app_type_name.truncate(10, omission: '...') %>
-
系统支持:<%= softapplication.android_min_version_available %>
+
<%=l(:label_attendingcontestwork_belongs_contest)%>:<%= contest ? link_to(contest.name.truncate(14, omission: '...'), show_attendingcontest_contest_path(contest), title: contest.name.to_s ) : '尚未加入竞赛'%>
+
<%=l(:label_attendingcontestwork_belongs_type)%>:<%= softapplication.app_type_name.truncate(10, omission: '...') %>
+
<%=l(:label_attendingcontestwork_adaptive_system)%>:<%= softapplication.android_min_version_available %>
- 开发人员:<%= softapplication.application_developers %>
- 发布时间:<%=format_time softapplication.created_at %>
+ <%=l(:label_attendingcontestwork_developers)%>:<%= softapplication.application_developers %>
+ <%=l(:label_attendingcontestwork_release_time)%>:<%=format_time softapplication.created_at %>
diff --git a/app/views/softapplications/show.html.erb b/app/views/softapplications/show.html.erb
index 8b9b3260..e41ecb84 100644
--- a/app/views/softapplications/show.html.erb
+++ b/app/views/softapplications/show.html.erb
@@ -16,38 +16,35 @@
- 所属类别:<%= @softapplication.app_type_name %>
+ <%=l(:label_attendingcontestwork_belongs_type)%>:<%= @softapplication.app_type_name %>
<% contest = @softapplication.contests.first %>
- 所属竞赛:<%= contest ? link_to(contest.name, show_attendingcontest_contest_path(contest)) : '尚未加入竞赛' %>
+ <%=l(:label_attendingcontestwork_belongs_contest)%>:<%= contest ? link_to(contest.name, show_attendingcontest_contest_path(contest)) : '尚未加入竞赛' %>
- 发布人员:<%= @softapplication.user.name %>
- 系统支持:<%= @softapplication.android_min_version_available %>
+ <%=l(:label_attendingcontestwork_release_person)%>:<%= @softapplication.user.name %>
+ <%=l(:label_attendingcontestwork_adaptive_system)%>:<%= @softapplication.android_min_version_available %>
- 作品下载:
+ <%=l(:label_attendingcontestwork_download)%>:
<% options = {:author => true, :deletable => @softapplication.user.eql?(User.current)} %><%= render :partial => 'attachments/app_link', :locals => {:attachments => @app_items, :options => options} %>
- 开发人员:<%= @softapplication.application_developers %>
+ <%=l(:label_attendingcontestwork_developers)%>:<%= @softapplication.application_developers %>
- 平均评分: <%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %>
- 发布时间:<%=format_time @softapplication.created_at %>
+ <%=l(:label_attendingcontestwork_average_scores)%>: <%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %>
+ <%=l(:label_attendingcontestwork_release_time)%>:<%=format_time @softapplication.created_at %>
- <% if (@softapplication.deposit_project != "nil" && @softapplication.deposit_project != "") %>
- <%#= textilizable ("托管项目: " + @project.name) %>
- 托管项目:<%= link_to "#@project", project_path(@project.id) %>
- <% end %>
+ <% if @project %>
+ <%=l(:label_attendingcontestwork_deposit_project)%>:<%= link_to "#@project", project_path(@project) %>
+ <% end %>
-
-
@@ -56,7 +53,7 @@
- 作品简介:
+ <%=l(:label_work_description)%>:
<%= @softapplication.description %>
@@ -64,11 +61,11 @@
-
作品得分:
+
<%=l(:label_work_scores)%>:
-
得分比例
+
<%=l(:label_work_scores_proportion)%>
<% 100.step(20, -20) do |star| %>
@@ -83,14 +80,12 @@
-
最终得分
-
<%= @softapplication.average(:quality).try(:avg).try(:round, 2).to_i.to_s %>
- 分
-
+
<%=l(:label_final_scores)%>
+
<%= @softapplication.average(:quality).try(:avg).try(:round, 2).to_i.to_s %>分
<%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %>
-
打分总人数
+
<%=l(:label_rating_person_amount)%>
<%= @softapplication.raters(:quality).count %>
@@ -100,7 +95,7 @@
- 作品截图:
+ <%=l(:label_work_photo)%>:
@@ -119,10 +114,10 @@
-
作品评论:
+
<%=l(:label_work_comment)%>:
<% if (User.current.logged? and User.current.id != @softapplication.user_id) %>
-
评分: <%= rating_for @softapplication, dimension: :quality, class: 'rateable div_inline' %>
- (您可以重新打分,打分结果以最后一次打分为主!)
+
<%=l(:label_work_rating)%>: <%= rating_for @softapplication, dimension: :quality, class: 'rateable div_inline' %>
+ (<%=l(:label_attendingcontestwork_sorting_intimation)%>)
<% end %>
diff --git a/app/views/welcome/contest.html.erb b/app/views/welcome/contest.html.erb
index d8d8a2d8..e6c3ab1f 100644
--- a/app/views/welcome/contest.html.erb
+++ b/app/views/welcome/contest.html.erb
@@ -187,7 +187,7 @@
<% find_new_forum_topics(11).each do |topic|%>
-
+
<%= link_to '['+topic.forum.name + ']',forum_path(topic.forum),:class => 'memo_Bar_title' %><%= link_to topic.subject.truncate(30, omission: '...'), topic.event_url, :class => "gray" , :style => "font-size: 10pt !important;" %>
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index d5964c01..95a610e7 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -1728,6 +1728,8 @@ zh:
label_first_reward: 一等奖
label_second_reward: 二等奖
label_third_reward: 三等奖
+ label_fourth_reward: 四等奖
+ label_fifth_reward: 五等奖
label_excellence_reward: 优秀奖
label_comfort_reward: 入围奖
label_course_settings: 课程设置
@@ -1884,8 +1886,14 @@ zh:
label_work_name: 作品名称
label_softapplication_description: 应用简介
label_work_description: 作品简介
+ label_work_scores: 作品得分
+ label_work_rating: 评分
+ label_work_tishi: 您可以重新打分,打分结果以最后一次打分为主!
+ label_work_scores_proportion: 得分比例
label_softapplication_type: 应用分类
label_work_type: 作品分类
+ label_work_photo: 作品截图
+ label_work_comment: 作品评论
label_softapplication_version_available: 适配版本
label_running_platform: 运行平台
label_softapplication_developer: 上传人员
@@ -1900,6 +1908,8 @@ zh:
label_button_ok: 确定
label_tags_contest: 竞赛标签
label_tags_contest: 竞赛名称
+ label_final_scores: 最终得分
+ label_rating_person_amount: 打分总人数
label_tags_contest_description: 竞赛描述
label_release_add_contest_succeed: 该应用发布并添加成功.
label_add_contest_succeed_fail: 添加失败,该应用已参赛.
@@ -1910,6 +1920,7 @@ zh:
label_softapplication_list: 应用列表
label_contest_work_list: 参赛作品列表
label_attending_contest: 我要参赛
+ label_contest_notification: 竞赛通知
label_coursefile_sharingarea: 课程资源共享区
label_sort_by_activity: 按动态数排序
@@ -1924,10 +1935,40 @@ zh:
label_contest_settings: 配置竞赛
label_contest_delete: 删除竞赛
label_noawards_current: 暂未评奖
+
+ label_softapplication: 应用软件
+ label_attending_contest: 参加竞赛
+ label_new_attendingcontest_work: 新建参赛作品
+ label_workname_lengthlimit: 25个汉字以内
+ label_workdescription_lengthlimit: 125个汉字以内
+ label_please_input_password: 请输入竞赛密码
+ label_please_select_project: 请选择项目
+ label_upload_softworkpacket_photo: 上传作品软件包和作品截图
+ label_reward: 评奖
+ label_please_select_contestingsoftapplication: 请选择参赛应用
+ label_attendingcontest_time: 参赛时间
+ label_attendingcontest_spoksman: 参赛代表
+ label_wellmeaning_intimation_contentone: 温馨提示:如果您准备参加竞赛,请点击下面的"新建参赛作品"!
+ label_wellmeaning_intimation_contenttwo: 若您已完成开发,且只希望发布您的作品,“托管项目”一项可以不选;
+ label_wellmeaning_intimation_contentthree: 若您希望托管竞赛数据和代码以及保留开发和提交代码的轨迹,请从“托管项目”中选择一项您已创建好的项目作为该参赛作品的托管项目,若您还没有创建项目,请点击右边的“创建项目”,然后回到本页再选择。
notice_account_updated: 帐号更新成功
notice_attendingcontest_work_successfully_created: 恭喜您,参赛作品创建成功!
notice_softapplication_was_successfully_updated: 恭喜您,参赛作品更新成功!
+
+ label_attendingcontestwork_belongs_contest: 所属竞赛
+ label_attendingcontestwork_belongs_type: 所属类别
+ label_attendingcontestwork_release_person: 发布人员
+ label_attendingcontestwork_adaptive_system: 系统支持
+ label_attendingcontestwork_download: 作品下载
+ label_attendingcontestwork_developers: 开发人员
+ label_attendingcontestwork_average_scores: 平均评分
+ label_attendingcontestwork_release_time: 发布时间
+ label_attendingcontestwork_deposit_project: 托管项目
+ label_attendingcontestwork_sorting_intimation: 您可以重新打分,打分结果以最后一次打分为主!
+
+ #end
+
# ajax异步验证
modal_valid_passing: 可以使用
label_bug: 漏洞
diff --git a/config/routes.rb b/config/routes.rb
index 05041ac9..69bbf663 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -18,11 +18,10 @@
RedmineApp::Application.routes.draw do
resources :homework_users
-
resources :no_uses
delete 'no_uses', :to => 'no_uses#delete'
- resources :apply_project_masters
+ resources :apply_project_masters
delete 'apply_project_masters', :to => 'apply_project_masters#delete'
resources :homework_attach do
@@ -36,17 +35,19 @@ RedmineApp::Application.routes.draw do
collection do
match 'search', via: [:get, :post]
match 'remove_condition', via: [:get, :post]
+ match 'allbug', via: [:get, :post]
end
resources :relative_memos
member do
match 'master_apply', via: [:get, :post]
match 'accept_master_apply', via: [:get, :post]
match 'refuse_master_apply', via: [:get, :post]
+ match 'showmemo', via: [:get, :post]
+ match 'showbug', via: [:get, :post]
end
end
mount SeemsRateable::Engine => '/rateable', :as => :rateable
-
namespace :zipdown do
match 'assort'
end
@@ -56,11 +57,11 @@ RedmineApp::Application.routes.draw do
end
##new added by linchun #以发布应用的形式参与竞赛
resources :softapplications do
-
+
collection do
match 'new_message', via: :get
end
- member do
+ member do
match 'create_message' , via: :post
end
end
@@ -82,6 +83,7 @@ RedmineApp::Application.routes.draw do
match 'show_project' , via: :get
match 'show_softapplication' , via: :get
match 'show_attendingcontest' , via: :get
+ match 'show_notification' , via: :get
match 'show_participator' , via: :get
match 'set_reward_project' , via: [:get, :post]
match 'set_reward_softapplication' , via: [:get, :post]
@@ -89,9 +91,9 @@ RedmineApp::Application.routes.draw do
match 'add_softapplication' , via: [:get, :post]
match 'create' , via: :post
match 'settings' , via: [:get, :post]
- end
- end
-
+ end
+ end
+
resources :stores do
collection do
match 'search', via: [:get, :post]
@@ -324,7 +326,7 @@ RedmineApp::Application.routes.draw do
resources :files, :only => [:index, :new, :create] do
collection do
match "getattachtype" , via: [:get, :post]
- #match 'getattachtype/:attachtype', :to => 'files#getattachtype', via: [:get, :post]
+ #match 'getattachtype/:attachtype', :to => 'files#getattachtype', via: [:get, :post]
end
end
@@ -483,8 +485,8 @@ RedmineApp::Application.routes.draw do
collection do
match "updateType" , via: [:get, :post]
match "renderTag" , via: [:get, :post]
- end
- end
+ end
+ end
resources :groups do
member do
@@ -624,24 +626,27 @@ RedmineApp::Application.routes.draw do
match 'calls/:id', :controller => 'bids', :action => 'show', :as => 'respond'
match 'contest', :controller => 'bids', :action => 'contests', :as => 'contest' #modified @20140403
-
########################
##added by wen##########
#######confusing########
+ get 'welcome/search', to: 'welcome#search'
+ get 'school/index', to: 'school#index'
+ get 'course/:school_id', to: 'welcome#course'
+ get 'course/:school_id', to: 'welcome#course'
post 'school/get_options/:province', :to => 'school#get_options'
get 'school/get_options/:province', :to => 'school#get_options'
post 'school/get_province', :to => 'school#get_province'
get 'school/get_province', :to => 'school#get_province'
-
+
post 'school/get_schoollist/:province', :to => 'school#get_schoollist'
get 'school/get_schoollist/:province', :to => 'school#get_schoollist'
-
+
post 'school/search_school/', :to => 'school#search_school'
get 'school/search_school/', :to => 'school#search_school'
-
+
post 'school/upload', :to => 'school#upload'
-
+
######added by nie
match 'tags/show_projects_tags',:to => 'tags#show_projects_tags'
########### added by liuping
@@ -666,5 +671,4 @@ RedmineApp::Application.routes.draw do
end
end
end
- get ':controller(/:action(/:id))'
end
diff --git a/db/migrate/20140526031949_create_projecting_softapplications.rb b/db/migrate/20140526031949_create_projecting_softapplications.rb
new file mode 100644
index 00000000..cc739e8b
--- /dev/null
+++ b/db/migrate/20140526031949_create_projecting_softapplications.rb
@@ -0,0 +1,7 @@
+class CreateProjectingSoftapplications < ActiveRecord::Migration
+ def up
+ end
+
+ def down
+ end
+end
diff --git a/db/migrate/20140526104509_add_project_to_softapplication.rb b/db/migrate/20140526104509_add_project_to_softapplication.rb
new file mode 100644
index 00000000..f7b6690c
--- /dev/null
+++ b/db/migrate/20140526104509_add_project_to_softapplication.rb
@@ -0,0 +1,5 @@
+class AddProjectToSoftapplication < ActiveRecord::Migration
+ def change
+ add_column :softapplications, :project_id, :integer
+ end
+end
diff --git a/db/schema.rb.orig b/db/schema.rb.orig
deleted file mode 100644
index 190ac845..00000000
--- a/db/schema.rb.orig
+++ /dev/null
@@ -1,1074 +0,0 @@
-# encoding: UTF-8
-# This file is auto-generated from the current state of the database. Instead
-# of editing this file, please use the migrations feature of Active Record to
-# incrementally modify your database, and then regenerate this schema definition.
-#
-# Note that this schema.rb definition is the authoritative source for your
-# database schema. If you need to create the application database on another
-# system, you should be using db:schema:load, not running all the migrations
-# from scratch. The latter is a flawed and unsustainable approach (the more migrations
-# you'll amass, the slower it'll run and the greater likelihood for issues).
-#
-# It's strongly recommended to check this file into your version control system.
-
-<<<<<<< HEAD
-ActiveRecord::Schema.define(:version => 20140522025721) do
-=======
-ActiveRecord::Schema.define(:version => 20140519074133) do
->>>>>>> 2f709c92ba93d46c81adc49fac0d77584018a3fe
-
- create_table "activities", :force => true do |t|
- t.integer "act_id", :null => false
- t.string "act_type", :null => false
- t.integer "user_id", :null => false
- end
-
- add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type"
- add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
- add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
-
- create_table "andoidcontests", :force => true do |t|
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "apply_project_masters", :force => true do |t|
- t.integer "user_id"
- t.string "apply_type"
- t.integer "apply_id"
- t.integer "status"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "attachments", :force => true do |t|
- t.integer "container_id"
- t.string "container_type", :limit => 30
- t.string "filename", :default => "", :null => false
- t.string "disk_filename", :default => "", :null => false
- t.integer "filesize", :default => 0, :null => false
- t.string "content_type", :default => ""
- t.string "digest", :limit => 40, :default => "", :null => false
- t.integer "downloads", :default => 0, :null => false
- t.integer "author_id", :default => 0, :null => false
- t.datetime "created_on"
- t.string "description"
- t.string "disk_directory"
- t.integer "attachtype", :default => 1
- end
-
- add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"
- add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type"
- add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on"
-
- create_table "attachmentstypes", :force => true do |t|
- t.integer "typeId", :null => false
- t.string "typeName", :limit => 50
- end
-
- create_table "auth_sources", :force => true do |t|
- t.string "type", :limit => 30, :default => "", :null => false
- t.string "name", :limit => 60, :default => "", :null => false
- t.string "host", :limit => 60
- t.integer "port"
- t.string "account"
- t.string "account_password", :default => ""
- t.string "base_dn"
- t.string "attr_login", :limit => 30
- t.string "attr_firstname", :limit => 30
- t.string "attr_lastname", :limit => 30
- t.string "attr_mail", :limit => 30
- t.boolean "onthefly_register", :default => false, :null => false
- t.boolean "tls", :default => false, :null => false
- t.string "filter"
- t.integer "timeout"
- end
-
- add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type"
-
- create_table "biding_projects", :force => true do |t|
- t.integer "project_id"
- t.integer "bid_id"
- t.integer "user_id"
- t.string "description"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "reward"
- end
-
- create_table "bids", :force => true do |t|
- t.string "name"
- t.string "budget", :null => false
- t.integer "author_id"
- t.date "deadline"
- t.string "description"
- t.datetime "created_on", :null => false
- t.datetime "updated_on", :null => false
- t.integer "commit"
- t.integer "reward_type"
- t.integer "homework_type"
- t.integer "parent_id"
- t.string "password"
- end
-
- create_table "boards", :force => true do |t|
- t.integer "project_id", :null => false
- t.string "name", :default => "", :null => false
- t.string "description"
- t.integer "position", :default => 1
- t.integer "topics_count", :default => 0, :null => false
- t.integer "messages_count", :default => 0, :null => false
- t.integer "last_message_id"
- t.integer "parent_id"
- end
-
- add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
- add_index "boards", ["project_id"], :name => "boards_project_id"
-
- create_table "bug_to_osps", :force => true do |t|
- t.integer "osp_id"
- t.integer "relative_memo_id"
- t.string "description"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "changes", :force => true do |t|
- t.integer "changeset_id", :null => false
- t.string "action", :limit => 1, :default => "", :null => false
- t.text "path", :null => false
- t.text "from_path"
- t.string "from_revision"
- t.string "revision"
- t.string "branch"
- end
-
- add_index "changes", ["changeset_id"], :name => "changesets_changeset_id"
-
- create_table "changeset_parents", :id => false, :force => true do |t|
- t.integer "changeset_id", :null => false
- t.integer "parent_id", :null => false
- end
-
- add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids"
- add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids"
-
- create_table "changesets", :force => true do |t|
- t.integer "repository_id", :null => false
- t.string "revision", :null => false
- t.string "committer"
- t.datetime "committed_on", :null => false
- t.text "comments"
- t.date "commit_date"
- t.string "scmid"
- t.integer "user_id"
- end
-
- add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
- add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true
- add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid"
- add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id"
- add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id"
-
- create_table "changesets_issues", :id => false, :force => true do |t|
- t.integer "changeset_id", :null => false
- t.integer "issue_id", :null => false
- end
-
- add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true
-
- create_table "comments", :force => true do |t|
- t.string "commented_type", :limit => 30, :default => "", :null => false
- t.integer "commented_id", :default => 0, :null => false
- t.integer "author_id", :default => 0, :null => false
- t.text "comments"
- t.datetime "created_on", :null => false
- t.datetime "updated_on", :null => false
- end
-
- add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
- add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
-
- create_table "contesting_projects", :force => true do |t|
- t.integer "project_id"
- t.string "contest_id"
- t.integer "user_id"
- t.string "description"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "reward"
- end
-
- create_table "contesting_softapplications", :force => true do |t|
- t.integer "softapplication_id"
- t.integer "contest_id"
- t.integer "user_id"
- t.string "description"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "reward"
- end
-
- create_table "contests", :force => true do |t|
- t.string "name"
- t.string "budget", :default => ""
- t.integer "author_id"
- t.date "deadline"
- t.string "description"
- t.integer "commit"
- t.string "password"
- t.datetime "created_on", :null => false
- t.datetime "updated_on", :null => false
- end
-
- create_table "courses", :force => true do |t|
- t.integer "tea_id"
- t.string "name"
- t.integer "state"
- t.string "code"
- t.integer "time"
- t.string "extra"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "location"
- t.string "term"
- t.string "string"
- t.string "password"
- t.string "setup_time"
- t.string "endup_time"
- t.string "class_period"
- t.integer "school_id"
- end
-
- create_table "custom_fields", :force => true do |t|
- t.string "type", :limit => 30, :default => "", :null => false
- t.string "name", :limit => 30, :default => "", :null => false
- t.string "field_format", :limit => 30, :default => "", :null => false
- t.text "possible_values"
- t.string "regexp", :default => ""
- t.integer "min_length", :default => 0, :null => false
- t.integer "max_length", :default => 0, :null => false
- t.boolean "is_required", :default => false, :null => false
- t.boolean "is_for_all", :default => false, :null => false
- t.boolean "is_filter", :default => false, :null => false
- t.integer "position", :default => 1
- t.boolean "searchable", :default => false
- t.text "default_value"
- t.boolean "editable", :default => true
- t.boolean "visible", :default => true, :null => false
- t.boolean "multiple", :default => false
- end
-
- add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type"
-
- create_table "custom_fields_projects", :id => false, :force => true do |t|
- t.integer "custom_field_id", :default => 0, :null => false
- t.integer "project_id", :default => 0, :null => false
- end
-
- add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true
-
- create_table "custom_fields_trackers", :id => false, :force => true do |t|
- t.integer "custom_field_id", :default => 0, :null => false
- t.integer "tracker_id", :default => 0, :null => false
- end
-
- add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true
-
- create_table "custom_values", :force => true do |t|
- t.string "customized_type", :limit => 30, :default => "", :null => false
- t.integer "customized_id", :default => 0, :null => false
- t.integer "custom_field_id", :default => 0, :null => false
- t.text "value"
- end
-
- add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id"
- add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized"
-
- create_table "documents", :force => true do |t|
- t.integer "project_id", :default => 0, :null => false
- t.integer "category_id", :default => 0, :null => false
- t.string "title", :limit => 60, :default => "", :null => false
- t.text "description"
- t.datetime "created_on"
- end
-
- add_index "documents", ["category_id"], :name => "index_documents_on_category_id"
- add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
- add_index "documents", ["project_id"], :name => "documents_project_id"
-
- create_table "enabled_modules", :force => true do |t|
- t.integer "project_id"
- t.string "name", :null => false
- end
-
- add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id"
-
- create_table "enumerations", :force => true do |t|
- t.string "name", :limit => 30, :default => "", :null => false
- t.integer "position", :default => 1
- t.boolean "is_default", :default => false, :null => false
- t.string "type"
- t.boolean "active", :default => true, :null => false
- t.integer "project_id"
- t.integer "parent_id"
- t.string "position_name", :limit => 30
- end
-
- add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
- add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
-
- create_table "forums", :force => true do |t|
- t.string "name", :null => false
- t.string "description", :default => ""
- t.integer "topic_count", :default => 0
- t.integer "memo_count", :default => 0
- t.integer "last_memo_id", :default => 0
- t.integer "creator_id", :null => false
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "groups_users", :id => false, :force => true do |t|
- t.integer "group_id", :null => false
- t.integer "user_id", :null => false
- end
-
- add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true
-
- create_table "homework_attaches", :force => true do |t|
- t.integer "bid_id"
- t.integer "user_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "reward"
- t.string "name"
- t.string "description"
- t.integer "state"
- end
-
- create_table "homework_for_courses", :force => true do |t|
- t.integer "project_id"
- t.integer "bid_id"
- end
-
- create_table "homework_users", :force => true do |t|
- t.string "homework_attach_id"
- t.string "user_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "issue_categories", :force => true do |t|
- t.integer "project_id", :default => 0, :null => false
- t.string "name", :limit => 30, :default => "", :null => false
- t.integer "assigned_to_id"
- end
-
- add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id"
- add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
-
- create_table "issue_relations", :force => true do |t|
- t.integer "issue_from_id", :null => false
- t.integer "issue_to_id", :null => false
- t.string "relation_type", :default => "", :null => false
- t.integer "delay"
- end
-
- add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true
- add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id"
- add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id"
-
- create_table "issue_statuses", :force => true do |t|
- t.string "name", :limit => 30, :default => "", :null => false
- t.boolean "is_closed", :default => false, :null => false
- t.boolean "is_default", :default => false, :null => false
- t.integer "position", :default => 1
- t.integer "default_done_ratio"
- end
-
- add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed"
- add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default"
- add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position"
-
- create_table "issues", :force => true do |t|
- t.integer "tracker_id", :null => false
- t.integer "project_id", :null => false
- t.string "subject", :default => "", :null => false
- t.text "description"
- t.date "due_date"
- t.integer "category_id"
- t.integer "status_id", :null => false
- t.integer "assigned_to_id"
- t.integer "priority_id", :null => false
- t.integer "fixed_version_id"
- t.integer "author_id", :null => false
- t.integer "lock_version", :default => 0, :null => false
- t.datetime "created_on"
- t.datetime "updated_on"
- t.date "start_date"
- t.integer "done_ratio", :default => 0, :null => false
- t.float "estimated_hours"
- t.integer "parent_id"
- t.integer "root_id"
- t.integer "lft"
- t.integer "rgt"
- t.boolean "is_private", :default => false, :null => false
- t.datetime "closed_on"
- end
-
- add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id"
- add_index "issues", ["author_id"], :name => "index_issues_on_author_id"
- add_index "issues", ["category_id"], :name => "index_issues_on_category_id"
- add_index "issues", ["created_on"], :name => "index_issues_on_created_on"
- add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id"
- add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id"
- add_index "issues", ["project_id"], :name => "issues_project_id"
- add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt"
- add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
- add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
-
- create_table "join_in_competitions", :force => true do |t|
- t.integer "user_id"
- t.integer "competition_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "join_in_contests", :force => true do |t|
- t.integer "user_id"
- t.integer "bid_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "journal_details", :force => true do |t|
- t.integer "journal_id", :default => 0, :null => false
- t.string "property", :limit => 30, :default => "", :null => false
- t.string "prop_key", :limit => 30, :default => "", :null => false
- t.text "old_value"
- t.text "value"
- end
-
- add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
-
- create_table "journal_replies", :id => false, :force => true do |t|
- t.integer "journal_id"
- t.integer "user_id"
- t.integer "reply_id"
- end
-
- add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id"
- add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id"
- add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id"
-
- create_table "journals", :force => true do |t|
- t.integer "journalized_id", :default => 0, :null => false
- t.string "journalized_type", :limit => 30, :default => "", :null => false
- t.integer "user_id", :default => 0, :null => false
- t.text "notes"
- t.datetime "created_on", :null => false
- t.boolean "private_notes", :default => false, :null => false
- end
-
- add_index "journals", ["created_on"], :name => "index_journals_on_created_on"
- add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
- add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id"
- add_index "journals", ["user_id"], :name => "index_journals_on_user_id"
-
- create_table "journals_for_messages", :force => true do |t|
- t.integer "jour_id"
- t.string "jour_type"
- t.integer "user_id"
- t.text "notes"
- t.integer "status"
- t.integer "reply_id"
- t.datetime "created_on", :null => false
- t.datetime "updated_on", :null => false
- t.string "m_parent_id"
- t.boolean "is_readed"
- t.integer "m_reply_count"
- t.integer "m_reply_id"
- end
-
- create_table "member_roles", :force => true do |t|
- t.integer "member_id", :null => false
- t.integer "role_id", :null => false
- t.integer "inherited_from"
- end
-
- add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id"
- add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id"
-
- create_table "members", :force => true do |t|
- t.integer "user_id", :default => 0, :null => false
- t.integer "project_id", :default => 0, :null => false
- t.datetime "created_on"
- t.boolean "mail_notification", :default => false, :null => false
- end
-
- add_index "members", ["project_id"], :name => "index_members_on_project_id"
- add_index "members", ["user_id", "project_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
- add_index "members", ["user_id"], :name => "index_members_on_user_id"
-
- create_table "memos", :force => true do |t|
- t.integer "forum_id", :null => false
- t.integer "parent_id"
- t.string "subject", :null => false
- t.text "content", :null => false
- t.integer "author_id", :null => false
- t.integer "replies_count", :default => 0
- t.integer "last_reply_id"
- t.boolean "lock", :default => false
- t.boolean "sticky", :default => false
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.integer "viewed_count", :default => 0
- end
-
- create_table "messages", :force => true do |t|
- t.integer "board_id", :null => false
- t.integer "parent_id"
- t.string "subject", :default => "", :null => false
- t.text "content"
- t.integer "author_id"
- t.integer "replies_count", :default => 0, :null => false
- t.integer "last_reply_id"
- t.datetime "created_on", :null => false
- t.datetime "updated_on", :null => false
- t.boolean "locked", :default => false
- t.integer "sticky", :default => 0
- end
-
- add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
- add_index "messages", ["board_id"], :name => "messages_board_id"
- add_index "messages", ["created_on"], :name => "index_messages_on_created_on"
- add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
- add_index "messages", ["parent_id"], :name => "messages_parent_id"
-
- create_table "news", :force => true do |t|
- t.integer "project_id"
- t.string "title", :limit => 60, :default => "", :null => false
- t.string "summary", :default => ""
- t.text "description"
- t.integer "author_id", :default => 0, :null => false
- t.datetime "created_on"
- t.integer "comments_count", :default => 0, :null => false
- end
-
- add_index "news", ["author_id"], :name => "index_news_on_author_id"
- add_index "news", ["created_on"], :name => "index_news_on_created_on"
- add_index "news", ["project_id"], :name => "news_project_id"
-
- create_table "no_uses", :force => true do |t|
- t.integer "user_id", :null => false
- t.string "no_use_type"
- t.integer "no_use_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "open_id_authentication_associations", :force => true do |t|
- t.integer "issued"
- t.integer "lifetime"
- t.string "handle"
- t.string "assoc_type"
- t.binary "server_url"
- t.binary "secret"
- end
-
- create_table "open_id_authentication_nonces", :force => true do |t|
- t.integer "timestamp", :null => false
- t.string "server_url"
- t.string "salt", :null => false
- end
-
- create_table "open_source_projects", :force => true do |t|
- t.string "name"
- t.text "description"
- t.integer "commit_count", :default => 0
- t.integer "code_line", :default => 0
- t.integer "users_count", :default => 0
- t.date "last_commit_time"
- t.string "url"
- t.date "date_collected"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "praise_tread_caches", :force => true do |t|
- t.integer "object_id", :null => false
- t.string "object_type"
- t.integer "praise_num"
- t.integer "tread_num"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "praise_treads", :force => true do |t|
- t.integer "user_id", :null => false
- t.integer "praise_tread_object_id"
- t.string "praise_tread_object_type"
- t.integer "praise_or_tread"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "project_infos", :force => true do |t|
- t.integer "project_id"
- t.integer "user_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "project_statuses", :force => true do |t|
- t.integer "changesets_count"
- t.integer "watchers_count"
- t.integer "project_id"
- t.integer "project_type"
- t.float "grade", :default => 0.0
- t.integer "course_ac_para", :default => 0
- end
-
- add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade"
-
- create_table "projecting_softapplictions", :force => true do |t|
- t.integer "user_id"
- t.integer "softapplication_id"
- t.integer "project_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "projects", :force => true do |t|
- t.string "name", :default => "", :null => false
- t.text "description"
- t.string "homepage", :default => ""
- t.boolean "is_public", :default => true, :null => false
- t.integer "parent_id"
- t.datetime "created_on"
- t.datetime "updated_on"
- t.string "identifier"
- t.integer "status", :default => 1, :null => false
- t.integer "lft"
- t.integer "rgt"
- t.boolean "inherit_members", :default => false, :null => false
- t.integer "project_type"
- t.boolean "hidden_repo", :default => false, :null => false
- t.integer "user_id"
-<<<<<<< HEAD
- t.integer "attachmenttype", :default => 1
-=======
->>>>>>> 2f709c92ba93d46c81adc49fac0d77584018a3fe
- end
-
- add_index "projects", ["lft"], :name => "index_projects_on_lft"
- add_index "projects", ["rgt"], :name => "index_projects_on_rgt"
-
- create_table "projects_trackers", :id => false, :force => true do |t|
- t.integer "project_id", :default => 0, :null => false
- t.integer "tracker_id", :default => 0, :null => false
- end
-
- 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"
-
- create_table "queries", :force => true do |t|
- t.integer "project_id"
- t.string "name", :default => "", :null => false
- t.text "filters"
- t.integer "user_id", :default => 0, :null => false
- t.boolean "is_public", :default => false, :null => false
- t.text "column_names"
- t.text "sort_criteria"
- t.string "group_by"
- t.string "type"
- end
-
- add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
- add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
-
- create_table "relative_memo_to_open_source_projects", :force => true do |t|
- t.integer "osp_id"
- t.integer "relative_memo_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "relative_memos", :force => true do |t|
- t.integer "osp_id", :null => false
- t.integer "parent_id"
- t.string "subject", :null => false
- t.text "content", :null => false
- t.integer "author_id"
- t.integer "replies_count", :default => 0
- t.integer "last_reply_id"
- t.boolean "lock", :default => false
- t.boolean "sticky", :default => false
- t.boolean "is_quote", :default => false
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.integer "viewed_count_crawl", :default => 0
- t.integer "viewed_count_local", :default => 0
- t.string "url"
- t.string "username"
- t.string "userhomeurl"
- t.date "date_collected"
- t.string "topic_resource"
- end
-
- create_table "repositories", :force => true do |t|
- t.integer "project_id", :default => 0, :null => false
- t.string "url", :default => "", :null => false
- t.string "login", :limit => 60, :default => ""
- t.string "password", :default => ""
- t.string "root_url", :default => ""
- t.string "type"
- t.string "path_encoding", :limit => 64
- t.string "log_encoding", :limit => 64
- t.text "extra_info"
- t.string "identifier"
- t.boolean "is_default", :default => false
- end
-
- add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
-
- create_table "roles", :force => true do |t|
- t.string "name", :limit => 30, :default => "", :null => false
- t.integer "position", :default => 1
- t.boolean "assignable", :default => true
- t.integer "builtin", :default => 0, :null => false
- t.text "permissions"
- t.string "issues_visibility", :limit => 30, :default => "default", :null => false
- end
-
- create_table "schools", :force => true do |t|
- t.string "name"
- t.string "province"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "logo_link"
- end
-
- create_table "seems_rateable_cached_ratings", :force => true do |t|
- t.integer "cacheable_id", :limit => 8
- t.string "cacheable_type"
- t.float "avg", :null => false
- t.integer "cnt", :null => false
- t.string "dimension"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "seems_rateable_rates", :force => true do |t|
- t.integer "rater_id", :limit => 8
- t.integer "rateable_id"
- t.string "rateable_type"
- t.float "stars", :null => false
- t.string "dimension"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "settings", :force => true do |t|
- t.string "name", :default => "", :null => false
- t.text "value"
- t.datetime "updated_on"
- end
-
- add_index "settings", ["name"], :name => "index_settings_on_name"
-
- create_table "shares", :force => true do |t|
- t.date "created_on"
- t.string "url"
- t.string "title"
- t.integer "share_type"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.integer "project_id"
- t.integer "user_id"
- t.string "description"
- end
-
- create_table "softapplications", :force => true do |t|
- t.string "name"
- t.string "description"
- t.integer "app_type_id"
- t.string "app_type_name"
- t.string "android_min_version_available"
- t.integer "user_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.integer "contest_id"
- t.integer "softapplication_id"
- t.integer "is_public"
- t.string "application_developers"
- t.string "deposit_project_url"
- t.string "deposit_project"
- end
-
- create_table "students_for_courses", :force => true do |t|
- t.integer "student_id"
- t.integer "course_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "taggings", :force => true do |t|
- t.integer "tag_id"
- t.integer "taggable_id"
- t.string "taggable_type"
- t.integer "tagger_id"
- t.string "tagger_type"
- t.string "context", :limit => 128
- t.datetime "created_at"
- end
-
- add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
- add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
-
- create_table "tags", :force => true do |t|
- t.string "name"
- end
-
- create_table "teachers", :force => true do |t|
- t.string "tea_name"
- t.string "location"
- t.integer "couurse_time"
- t.integer "course_code"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "extra"
- end
-
- create_table "time_entries", :force => true do |t|
- t.integer "project_id", :null => false
- t.integer "user_id", :null => false
- t.integer "issue_id"
- t.float "hours", :null => false
- t.string "comments"
- t.integer "activity_id", :null => false
- t.date "spent_on", :null => false
- t.integer "tyear", :null => false
- t.integer "tmonth", :null => false
- t.integer "tweek", :null => false
- t.datetime "created_on", :null => false
- t.datetime "updated_on", :null => false
- end
-
- add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id"
- add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on"
- add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id"
- add_index "time_entries", ["project_id"], :name => "time_entries_project_id"
- add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id"
-
- create_table "tokens", :force => true do |t|
- t.integer "user_id", :default => 0, :null => false
- t.string "action", :limit => 30, :default => "", :null => false
- t.string "value", :limit => 40, :default => "", :null => false
- t.datetime "created_on", :null => false
- end
-
- add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id"
- add_index "tokens", ["value"], :name => "tokens_value", :unique => true
-
- create_table "trackers", :force => true do |t|
- t.string "name", :limit => 30, :default => "", :null => false
- t.boolean "is_in_chlog", :default => false, :null => false
- t.integer "position", :default => 1
- t.boolean "is_in_roadmap", :default => true, :null => false
- t.integer "fields_bits", :default => 0
- end
-
- create_table "user_extensions", :force => true do |t|
- t.integer "user_id", :null => false
- t.date "birthday"
- t.string "brief_introduction"
- t.integer "gender"
- t.string "location"
- t.string "occupation"
- t.integer "work_experience"
- t.integer "zip_code"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "technical_title"
- t.integer "identity"
- t.string "student_id"
- t.string "teacher_realname"
- t.string "student_realname"
- t.string "location_city"
- t.integer "school_id"
- end
-
- create_table "user_grades", :force => true do |t|
- t.integer "user_id", :null => false
- t.integer "project_id", :null => false
- t.float "grade", :default => 0.0
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade"
- add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id"
- add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id"
-
-<<<<<<< HEAD
- create_table "user_levels", :force => true do |t|
- t.integer "user_id"
- t.integer "level"
- end
-
-=======
->>>>>>> 2f709c92ba93d46c81adc49fac0d77584018a3fe
- create_table "user_preferences", :force => true do |t|
- t.integer "user_id", :default => 0, :null => false
- t.text "others"
- t.boolean "hide_mail", :default => false
- t.string "time_zone"
- end
-
- add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
-
- create_table "user_scores", :force => true do |t|
- t.integer "user_id"
- t.integer "collaboration"
- t.integer "influence"
- t.integer "skill"
- t.integer "activity"
- end
-
- create_table "user_statuses", :force => true do |t|
- t.integer "changesets_count"
- t.integer "watchers_count"
- t.integer "user_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.float "grade", :default => 0.0
- end
-
- add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count"
- add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
- add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
-
- create_table "users", :force => true do |t|
- t.string "login", :default => "", :null => false
- t.string "hashed_password", :limit => 40, :default => "", :null => false
- t.string "firstname", :limit => 30, :default => "", :null => false
- t.string "lastname", :default => "", :null => false
- t.string "mail", :limit => 60, :default => "", :null => false
- t.boolean "admin", :default => false, :null => false
- t.integer "status", :default => 1, :null => false
- t.datetime "last_login_on"
- t.string "language", :limit => 5, :default => ""
- t.integer "auth_source_id"
- t.datetime "created_on"
- t.datetime "updated_on"
- t.string "type"
- t.string "identity_url"
- t.string "mail_notification", :default => "", :null => false
- t.string "salt", :limit => 64
- end
-
- add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
- add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
- add_index "users", ["type"], :name => "index_users_on_type"
-
- create_table "versions", :force => true do |t|
- t.integer "project_id", :default => 0, :null => false
- t.string "name", :default => "", :null => false
- t.string "description", :default => ""
- t.date "effective_date"
- t.datetime "created_on"
- t.datetime "updated_on"
- t.string "wiki_page_title"
- t.string "status", :default => "open"
- t.string "sharing", :default => "none", :null => false
- end
-
- add_index "versions", ["project_id"], :name => "versions_project_id"
- add_index "versions", ["sharing"], :name => "index_versions_on_sharing"
-
- create_table "watchers", :force => true do |t|
- t.string "watchable_type", :default => "", :null => false
- t.integer "watchable_id", :default => 0, :null => false
- t.integer "user_id"
- end
-
- add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type"
- add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id"
- add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type"
-
- create_table "wiki_content_versions", :force => true do |t|
- t.integer "wiki_content_id", :null => false
- t.integer "page_id", :null => false
- t.integer "author_id"
- t.binary "data", :limit => 2147483647
- t.string "compression", :limit => 6, :default => ""
- t.string "comments", :default => ""
- t.datetime "updated_on", :null => false
- t.integer "version", :null => false
- end
-
- add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on"
- add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid"
-
- create_table "wiki_contents", :force => true do |t|
- t.integer "page_id", :null => false
- t.integer "author_id"
- t.text "text", :limit => 2147483647
- t.string "comments", :default => ""
- t.datetime "updated_on", :null => false
- t.integer "version", :null => false
- end
-
- add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id"
- add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id"
-
- create_table "wiki_pages", :force => true do |t|
- t.integer "wiki_id", :null => false
- t.string "title", :null => false
- t.datetime "created_on", :null => false
- t.boolean "protected", :default => false, :null => false
- t.integer "parent_id"
- end
-
- add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id"
- add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title"
- add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id"
-
- create_table "wiki_redirects", :force => true do |t|
- t.integer "wiki_id", :null => false
- t.string "title"
- t.string "redirects_to"
- t.datetime "created_on", :null => false
- end
-
- add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title"
- add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id"
-
- create_table "wikis", :force => true do |t|
- t.integer "project_id", :null => false
- t.string "start_page", :null => false
- t.integer "status", :default => 1, :null => false
- end
-
- add_index "wikis", ["project_id"], :name => "wikis_project_id"
-
- create_table "workflows", :force => true do |t|
- t.integer "tracker_id", :default => 0, :null => false
- t.integer "old_status_id", :default => 0, :null => false
- t.integer "new_status_id", :default => 0, :null => false
- t.integer "role_id", :default => 0, :null => false
- t.boolean "assignee", :default => false, :null => false
- t.boolean "author", :default => false, :null => false
- t.string "type", :limit => 30
- t.string "field_name", :limit => 30
- t.string "rule", :limit => 30
- end
-
- add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id"
- add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id"
- add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status"
- add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id"
-
-end
diff --git a/lib/redmine.rb b/lib/redmine.rb
index f5386029..1d795df1 100644
--- a/lib/redmine.rb
+++ b/lib/redmine.rb
@@ -292,6 +292,7 @@ Redmine::MenuManager.map :contest_menu do |menu|
#menu.push :project, :show_project_contest_path, :caption => :label_contest_project
#menu.push :application, :show_softapplication_contest_path, :caption => :label_contest_application
menu.push :attendingcontest, {:controller => 'contests', :action => 'show_attendingcontest'}, :caption => :label_attending_contest
+ menu.push :contestnotification, {:controller => 'contests', :action => 'show_notification'}, :caption => :label_contest_notification
# menu.push :attendingcontest, :show_attendingcontest_contest_path, :caption => :label_attendin,g_contest
# menu.push :result, { :controller => 'bids', :action => 'show_results' },
# :caption => :label_bidding_results,:if => Proc.new{ |p| User.current.id == p }
diff --git a/public/stylesheets/buglist-div-use.css b/public/stylesheets/buglist-div-use.css
index e84fb88c..de0c7c4a 100644
--- a/public/stylesheets/buglist-div-use.css
+++ b/public/stylesheets/buglist-div-use.css
@@ -4,6 +4,7 @@
margin: 0px 0 0 0;
width: 970px;
+
}
.header2{
float: left;
@@ -15,6 +16,7 @@
width: 100%;
right: 50%;
background-color: #000000
+
}
.col1{
position: relative;
@@ -28,14 +30,36 @@
position: relative;
overflow: hidden;
float: left;
- width: 470px;
+ width: 440px;
left: 3%;
+
}
a:hover, a:active {
color: #c61a1a;
text-decoration: underline;
+
}
+#tag {
+ background: url("../images/issue_tag.png") no-repeat scroll right -19px rgba(0, 0, 0, 0);
+ border-radius: 3px;
+ color: #3A587D !important;
+ cursor: pointer;
+ display: inline-block;
+ font-size: 13px;
+ margin: 3px;
+ padding: 1px 4px 2px;
+ text-decoration: none;
+}
+#buglist
+{
+ overflow: hidden;
+overflow-x: hidden;
+overflow-y: hidden;
+white-space: nowrap;
+text-overflow: ellipsis;
+-o-text-overflow: ellipsis;
+}
diff --git a/public/stylesheets/buglist.css b/public/stylesheets/buglist.css
index a9be290a..4bc9267f 100644
--- a/public/stylesheets/buglist.css
+++ b/public/stylesheets/buglist.css
@@ -3,6 +3,7 @@
.li_list {
clear:both;
padding:0 0 0 0px;
+
}
@@ -13,6 +14,7 @@ padding:0 7px 0 0;
ol.linenums {
margin:0 0 0 20px;
+
}
ol.linenums li {
@@ -31,6 +33,7 @@ padding:0;
background-color:#105DB5;
color:#FFF;
text-decoration:none;
+
}
.li_list li,.na_list li {
@@ -38,6 +41,12 @@ clear:both;
height:18px;
list-style-type:square;
padding:2px;
+overflow: hidden;
+overflow-x: hidden;
+overflow-y: hidden;
+white-space: nowrap;
+text-overflow: ellipsis;
+-o-text-overflow: ellipsis;
}
@@ -53,3 +62,11 @@ font-size:18px;
div.pages .break,.created a {
color:#999;
}
+
+.tag_fouse {
+ font-family: "Microsoft YaHei";
+ font-size: 15px;
+ font-weight: bold;
+ padding-bottom: 3px;
+ padding-top: 3px;
+}
\ No newline at end of file