-
-
参加竞赛:
-
<%= link_to '新建参赛作品', "javascript:void(0);", onclick: "$('#put-project-form').toggle();" %>
+<% if User.current.logged? %>
+
+
+ 参加竞赛:
+ <%= link_to '新建参赛作品', "javascript:void(0);", onclick: "$('#put-project-form').toggle();" %>
+
+
+
-
-
-
+<% else %>
+
+ <%= l(:label_user_login_attending_contest) %>
+ <%= link_to l(:label_user_login_new), signin_path %>
+
+<% end %>
-<% end %>
+
diff --git a/app/views/layouts/_base_footer.html.erb.orig b/app/views/layouts/_base_footer.html.erb.orig
deleted file mode 100644
index c2e9c1f3d..000000000
--- a/app/views/layouts/_base_footer.html.erb.orig
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-<<<<<<< HEAD
-
-
- <%= debug(params) if Rails.env.development? %>
-
-
-
diff --git a/app/views/open_source_projects/_show_memo.html.erb b/app/views/open_source_projects/_show_memo.html.erb
index 8c1cbc819..63de42132 100644
--- a/app/views/open_source_projects/_show_memo.html.erb
+++ b/app/views/open_source_projects/_show_memo.html.erb
@@ -14,7 +14,12 @@
- <%= link_to h(topic.subject), open_source_project_relative_memo_path(open_source_project, topic) %> |
+
+ <% 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 %>
+ <% end %> |
@@ -48,11 +53,11 @@
|
-
+
帖子来源:<%=link_to 'OSChina', topic.url %>
|
diff --git a/app/views/open_source_projects/_show_topics.html.erb b/app/views/open_source_projects/_show_topics.html.erb
index c6df07c8e..3ba463944 100644
--- a/app/views/open_source_projects/_show_topics.html.erb
+++ b/app/views/open_source_projects/_show_topics.html.erb
@@ -24,25 +24,29 @@
@@ -52,23 +56,32 @@
-
+
全球热帖
<%= link_to "更多>>", :controller => "open_source_projects",:action => "showmemo", :id => @open_source_project.id %>
@@ -366,7 +435,7 @@
- <%= link_to h(topic.subject), open_source_project_relative_memo_path(open_source_project, topic) %> |
+ <%= link_to h(topic.subject), topic.url %> |
diff --git a/app/views/open_source_projects/index.html.erb b/app/views/open_source_projects/index.html.erb
index d958165ed..e51ef4fc1 100644
--- a/app/views/open_source_projects/index.html.erb
+++ b/app/views/open_source_projects/index.html.erb
@@ -148,7 +148,7 @@ li {
-
\ No newline at end of file
diff --git a/app/views/softapplications/show.html.erb b/app/views/softapplications/show.html.erb
index 36167880c..8b9b3260d 100644
--- a/app/views/softapplications/show.html.erb
+++ b/app/views/softapplications/show.html.erb
@@ -1,6 +1,6 @@
<%= render :partial => 'layouts/base_softapplication_top_content' %>
- <%= notice %>
+
@@ -32,22 +32,25 @@
- 开发人员:<%= @softapplication.application_developers %> |
-
-
- 平均评分: <%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %> |
- 发布时间:<%= format_time @softapplication.created_at %> |
-
-
-
- <% unless @softapplication.deposit_project_url.nil? %>
- <%= textilizable ("托管项目网址: " + @softapplication.deposit_project_url) %>
- <% end %>
- |
-
-
- |
-
+ 开发人员:<%= @softapplication.application_developers %> |
+
+
+ 平均评分: <%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %> |
+ 发布时间:<%=format_time @softapplication.created_at %> |
+
+
+
+ <% if (@softapplication.deposit_project != "nil" && @softapplication.deposit_project != "") %>
+ <%#= textilizable ("托管项目: " + @project.name) %>
+ 托管项目:<%= link_to "#@project", project_path(@project.id) %>
+ <% end %>
+ |
+
+
+
+
+ |
+
@@ -117,8 +120,10 @@
作品评论:
- 评分: <%= rating_for @softapplication, dimension: :quality, class: 'rateable div_inline' %>
- (您可以重新打分,打分结果以最后一次打分为主!)
+ <% if (User.current.logged? and User.current.id != @softapplication.user_id) %>
+ 评分: <%= rating_for @softapplication, dimension: :quality, class: 'rateable div_inline' %>
+ (您可以重新打分,打分结果以最后一次打分为主!)
+ <% end %>
diff --git a/app/views/welcome/contest.html.erb b/app/views/welcome/contest.html.erb
index 3e0fecceb..d8d8a2d8a 100644
--- a/app/views/welcome/contest.html.erb
+++ b/app/views/welcome/contest.html.erb
@@ -189,7 +189,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/app/views/welcome/course.html.erb b/app/views/welcome/course.html.erb
index 5e02730c0..88fd3bf4d 100644
--- a/app/views/welcome/course.html.erb
+++ b/app/views/welcome/course.html.erb
@@ -234,7 +234,7 @@
<% find_new_forum_topics(10).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/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb
index fcdce62e8..6702f520c 100644
--- a/app/views/welcome/index.html.erb
+++ b/app/views/welcome/index.html.erb
@@ -112,7 +112,7 @@
<% find_new_forum_topics(7).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,title: topic.subject %>
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index b03e3bc31..96b37e768 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -561,6 +561,8 @@ zh:
label_user_login_tips: 您还没有登录,请登录后留言
label_user_login_course_board: 您还没有登录,请登录后参与课程讨论
label_user_login_project_board: 您还没有登录,请登录后参与项目讨论
+ label_user_login_attending_contest: 您还没有登录,请登录后参赛
+ label_user_login_score_and_comment: 您还没有登录,请登录后对作品进行打分评价
#end
#by huang # modified by bai
label_college: 高校进入
@@ -1871,7 +1873,7 @@ zh:
label_upload_softapplication_photo: 上传产品截图
label_upload_softapplication_packets_mustpacketed: 作品相关代码及相关说明文件必须打包后以压缩包的形式上传,便于上传和下载 ;
label_upload_softapplication_photo_condition: 作品截图需上传0~4张;格式为gif/jpg/png, 每张小于5M
- label_updated_caution: 注意:若参赛作品,则之前上传的软件包和截图都将被删除,请重新上传!
+ label_updated_caution: 注意:若编辑参赛作品,则之前上传的软件包和截图都将被删除,请重新上传!
label_softapplication_name: 应用名称
label_work_name: 作品名称
label_softapplication_description: 应用简介
@@ -1883,7 +1885,9 @@ zh:
label_softapplication_developer: 上传人员
label_softapplication_developers: 开发人员
label_work_deposit_project_url: 托管项目网址
+ label_work_deposit_project: 托管项目
label_softapplication_name_condition: 25个汉字以内(50个字符)
+ label_softapplication_description_condition: 125个汉字以内
label_user_login_softapplication_board: 您还没有登录,请登录后参与应用评价。
label_contest_description_no: 暂无描述。
label_no_contest_softapplication: 暂无参赛应用
@@ -1895,6 +1899,7 @@ zh:
label_add_contest_succeed_fail: 添加失败,该应用已参赛.
label_no_ftapplication: 暂无应用
label_edit_softapplication: 修改应用
+ label_edit_work: 修改作品
label_contest_delete: 删除竞赛
label_softapplication_list: 应用列表
label_contest_work_list: 参赛作品列表
@@ -1914,6 +1919,10 @@ zh:
label_contest_delete: 删除竞赛
label_noawards_current: 暂未评奖
+ notice_account_updated: 帐号更新成功
+ notice_attendingcontest_work_successfully_created: 恭喜您,参赛作品创建成功!
+ notice_softapplication_was_successfully_updated: 恭喜您,参赛作品更新成功!
# ajax异步验证
modal_valid_passing: 可以使用
+ label_bug: 漏洞
\ No newline at end of file
diff --git a/db/migrate/20140519020211_add_user_id_to_projects.rb b/db/migrate/20140519020211_add_user_id_to_projects.rb
new file mode 100644
index 000000000..912c637bc
--- /dev/null
+++ b/db/migrate/20140519020211_add_user_id_to_projects.rb
@@ -0,0 +1,5 @@
+class AddUserIdToProjects < ActiveRecord::Migration
+ def change
+ add_column :projects, :user_id, :integer
+ end
+end
diff --git a/db/migrate/20140519030825_create_projecting_softapplictions.rb b/db/migrate/20140519030825_create_projecting_softapplictions.rb
new file mode 100644
index 000000000..9379ed5c9
--- /dev/null
+++ b/db/migrate/20140519030825_create_projecting_softapplictions.rb
@@ -0,0 +1,14 @@
+class CreateProjectingSoftapplictions < ActiveRecord::Migration
+ def up
+ create_table :projecting_softapplictions do |t|
+ t.integer :user_id
+ t.integer :softapplication_id
+ t.integer :project_id
+ t.timestamps
+ end
+
+ def down
+ drop_table :projecting_softapplictions
+ end
+ end
+end
diff --git a/db/migrate/20140519074133_add_deposit_project_to_softapplications.rb b/db/migrate/20140519074133_add_deposit_project_to_softapplications.rb
new file mode 100644
index 000000000..0b2bf65e1
--- /dev/null
+++ b/db/migrate/20140519074133_add_deposit_project_to_softapplications.rb
@@ -0,0 +1,5 @@
+class AddDepositProjectToSoftapplications < ActiveRecord::Migration
+ def change
+ add_column :softapplications, :deposit_project, :string
+ end
+end
diff --git a/db/migrate/20140522025137_add_topic_resource_to_relative_memo.rb b/db/migrate/20140522025137_add_topic_resource_to_relative_memo.rb
new file mode 100644
index 000000000..67081d482
--- /dev/null
+++ b/db/migrate/20140522025137_add_topic_resource_to_relative_memo.rb
@@ -0,0 +1,5 @@
+class AddTopicResourceToRelativeMemo < ActiveRecord::Migration
+ def change
+ add_column :relative_memos, :topic_resource, :string
+ end
+end
diff --git a/db/migrate/20140522025721_create_bug_to_osps.rb b/db/migrate/20140522025721_create_bug_to_osps.rb
new file mode 100644
index 000000000..3a562fa14
--- /dev/null
+++ b/db/migrate/20140522025721_create_bug_to_osps.rb
@@ -0,0 +1,10 @@
+class CreateBugToOsps < ActiveRecord::Migration
+ def change
+ create_table :bug_to_osps do |t|
+ t.integer :osp_id
+ t.integer :relative_memo_id
+ t.string :description
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 51246fb0b..f6c83ac65 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -121,6 +121,14 @@ ActiveRecord::Schema.define(:version => 20140519074133) do
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
@@ -699,6 +707,7 @@ ActiveRecord::Schema.define(:version => 20140519074133) do
t.string "username"
t.string "userhomeurl"
t.date "date_collected"
+ t.string "topic_resource"
end
create_table "repositories", :force => true do |t|
@@ -787,6 +796,7 @@ ActiveRecord::Schema.define(:version => 20140519074133) do
t.integer "softapplication_id"
t.integer "is_public"
t.string "application_developers"
+ t.string "deposit_project_url"
t.string "deposit_project"
end
diff --git a/db/schema.rb.orig b/db/schema.rb.orig
new file mode 100644
index 000000000..190ac8457
--- /dev/null
+++ b/db/schema.rb.orig
@@ -0,0 +1,1074 @@
+# 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/public/stylesheets/buglist.css b/public/stylesheets/buglist.css
index ed9c0d24a..a9be290ad 100644
--- a/public/stylesheets/buglist.css
+++ b/public/stylesheets/buglist.css
@@ -1,582 +1,15 @@
@charset utf-8;
-
-a {
-cursor:pointer;
-}
-
-a:link {
-color:#105DB5;
-text-decoration:none;
-}
-
-h3 {
-font-size:16px;
-}
-
-button {
-border:1px solid #ccc;
-border-radius:4px;
-font-size:14px;
-font-weight:700;
-margin:5px 0;
-padding:5px 18px 6px;
-}
-
-pre {
-white-space:0;
-word-wrap:break-word;
-}
-
-/*#main {
-text-align:left;
-width:870px;
-background:#FFF;
-margin:auto;
-}
-
-#content {
-background:#FFF;
-width:94%;
-float:left;
-padding-top:45px;
-margin:5px 25px;
-}*/
-
-
-
-
.li_list {
clear:both;
padding:0 0 0 0px;
}
-.li_more {
-text-align:right;
-clear:both;
-margin:5px 0;
-padding:0 0 1px;
-}
.li_time {
padding:0 7px 0 0;
}
-div.pages {
-color:#AAA;
-font-size:13px;
-text-align:right;
-margin:10px 0;
-}
-
-div.pages a,.thispage,.break {
-margin:2px;
-padding:0 4px;
-}
-
-div.pages .prev {
-margin-right:5px;
-}
-
-div.pages .next {
-margin-left:5px;
-}
-
-div.pages .thispage {
-background:none repeat scroll 0 0 #4D5256;
-color:#FFF;
-}
-
-
-
-.clearfix:after {
-clear:both;
-content:" ";
-display:block;
-height:0;
-line-height:0;
-visibility:hidden;
-}
-
-.searchform .searchinput {
-background:none repeat scroll 0 0 #FFF;
-border:medium none;
-float:left;
-font-family:Arial,sans-serif;
-font-size:13px;
-width:72px;
-margin:0;
-padding:0;
-}
-
-.searchform .searchinput:focus {
-width:196px;
-}
-
-
-
-
-
-
-
-.article_title {
-font-weight:700;
-border-bottom:1px solid #CCC;
-margin-bottom:5px;
-padding:5px 0 10px;
-}
-
-.vuln {
-font-weight:700;
-border-bottom:medium none!important;
-padding:3px 0;
-}
-
-.article {
-padding:5px 0 5px 12px;
-}
-
-.at_hr {
-font-weight:700;
-border-left:7px solid #778087;
-border-bottom:medium none!important;
-margin:9px 0;
-padding:5px;
-}
-
-.article_exp {
-padding:0 0 0 20px;
-}
-
-.sh_reference {
-padding:0 0 0 15px;
-}
-
-.sh_reference blockquote {
-padding:5px 18px;
-}
-
-.Statement {
-color:red;
-}
-
-.cell {
-border-bottom:1px dashed #E0E0E0;
-line-height:18px;
-list-style:none;
-padding:9px 0 9px 15px;
-}
-
-.fade {
-color:#999;
-font-size:14px;
-font-weight:700;
-vertical-align:middle;
-}
-
-.created {
-color:#999;
-display:block;
-font-size:11px;
-}
-
-.ntitle {
-font-size:22px;
-font-weight:700;
-border-bottom:1px dashed #ECECEC;
-padding:5px 15px;
-}
-
-.nutime {
-color:#999;
-font-size:12px;
-padding:5px 15px;
-}
-
-.notags {
-font-size:11px;
-text-align:right;
-margin-top:-24px;
-padding:5px 15px;
-}
-
-.notags a {
-background:none repeat scroll 0 0 #778087;
-border-radius:10px;
-color:#FFF;
-margin-bottom:5px;
-padding:2px 10px;
-}
-
-.notags a:hover {
-background:none repeat scroll 0 0 #4D5256;
-color:white;
-text-decoration:none;
-}
-
-.node_dir_list {
-width:570px;
-float:left;
-overflow:hidden;
-border-right:1px dashed #E2E2E2;
-}
-
-.node_dir_side {
-float:right;
-width:220px;
-overflow:hidden;
-margin:0;
-padding:0 15px 0 10px;
-}
-
-.node_list ul {
-clear:both;
-padding:0 30px;
-}
-
-.node_list li {
-clear:both;
-height:38px;
-list-style-type:square;
-font-size:15px;
-padding:3px;
-}
-
-
-
-.return_te {
-text-align:right;
-font-size:12px;
-vertical-align:bottom;
-margin-bottom:-15px;
-padding-right:15px;
-}
-
-.editor {
-width:600px;
-overflow:hidden;
-font-size:12px;
-}
-
-.editor .tools {
-height:20px;
-line-height:20px;
-padding:0;
-}
-
-.editor .tools a {
-margin-right:15px;
-text-decoration:none;
-overflow:hidden;
-}
-
-.editor .Container {
-display:none;
-position:absolute;
-float:left;
-z-index:1000;
-width:330px;
-height:95px;
-border:1px solid #BBB;
-background:#FFF;
-overflow:hidden;
-cursor:default;
-padding:5px 0 10px 10px;
-}
-
-.editor .imgIframe {
-border:0;
-width:100%;
-height:22px;
-margin:0;
-padding:0;
-}
-
-.editor .Button {
-text-align:center;
-margin:0;
-padding:5px 0;
-}
-
-.editor #attinfoDiv {
-padding-top:5px;
-color:#000;
-}
-
-.Button input {
-margin-right:5px;
-font-size:12px;
-}
-
-.editor input {
-margin-right:5px;
-font-size:11px;
-}
-
-.na_list {
-clear:both;
-padding:15px 0 0 62px;
-}
-
-.return_Nadir {
-font-weight:700;
-font-size:20px;
-padding:0 0 15px;
-}
-
-.return_Nav {
-padding-left:10px;
-align:left;
-font-weight:700;
-font-size:15px;
-}
-
-.return_Nav a {
-padding:0 .5px;
-}
-
-.applists {
-width:100%;
-list-style-type:none;
-float:left;
-border-top:1px dashed #E0E0E0;
-padding:40px 0 10px;
-}
-
-.applists ul {
-list-style-type:none;
-width:98%;
-list-style-position:outside;
-float:left;
-margin:5px 5px 10px 25px;
-padding:0;
-}
-
-.applists ul li {
-width:25%;
-display:inline;
-float:left;
-line-height:24px;
-margin:0;
-}
-
-.return_top {
-text-align:right;
-font-size:10px;
-vertical-align:bottom;
-margin-top:-15px;
-padding-right:30px;
-}
-
-.return_top a {
-color:#999;
-text-decoration:none;
-}
-
-.return_en {
-vertical-align:top;
-align:left;
-font-weight:900;
-font-size:22px;
-color:#666;
-}
-
-.maintinfo {
-width:820px;
-background-color:#E9EEF2;
-border-radius:5px;
-float:left;
-font-size:14px;
-height:90px;
-line-height:1.6;
-position:relative;
-color:#666;
-border-style:none none inset;
-margin:10px 0 15px;
-}
-
-.maintinfo strong {
-float:left;
-font-size:20px;
-height:64px;
-padding-top:28px;
-text-align:center;
-width:230px;
-}
-
-.maintinfo div {
-padding:22px 0 18px;
-}
-
-.maintinfo b {
-font-size:13px;
-font-weight:400;
-margin-right:15px;
-}
-
-.maintinfo em {
-font-size:12px;
-margin-right:15px;
-}
-
-.maintinfo span {
-float:right;
-margin-top:-15px;
-font-size:10px;
-padding-right:9px;
-}
-
-.maintinfo .blogo {
-background:url(http://mit00.02753.com/sebug_flat_0da.png) no-repeat scroll 0 0 transparent;
-display:block;
-height:19px;
-text-indent:-5000px;
-width:52px;
-float:right;
-margin:-35px -58px 0 0;
-}
-
-.aside {
-float:right;
-font-size:11px;
-width:280px;
-}
-
-.aside .group {
-border-bottom:1px dashed #ECECEC;
-clear:both;
-margin-bottom:10px;
-padding-bottom:10px;
-}
-
-.aside .group li {
-float:left;
-height:22px;
-margin-right:1%;
-overflow:hidden;
-white-space:nowrap;
-width:32.299999%;
-}
-
-.indexarticle {
-float:left;
-padding-right:5px;
-width:530px;
-}
-
-.bug_index_list ul {
-list-style:none;
-margin-bottom:20px;
-}
-
-.bug_index_list li {
-padding-left:10px;
-position:relative;
-line-height:26px;
-}
-
-.indexarticle .topitems {
-clear:both;
-margin-bottom:20px;
-font-size:11px;
-padding:10px 0 0 10px;
-}
-
-.indexarticle .topitems li {
-float:left;
-height:22px;
-margin-right:1%;
-overflow:hidden;
-white-space:nowrap;
-width:23%;
-}
-
-.indexseach {
-text-align:center;
-margin:auto;
-padding:110px 0;
-}
-
-.lsbb {
-background:#eee;
-border:1px solid #999;
-border-top-color:#ccc;
-border-left-color:#ccc;
-height:30px;
-width:120px;
-}
-
-.lsb {
-font:14px arial;
-background-position:bottom;
-border:none;
-color:#000;
-cursor:pointer;
-height:30px;
-vertical-align:top;
-background:#f1f1f1;
-margin:0;
-}
-
-.lsb:active {
-background:#ccc;
-}
-
-.tsf-p {
-width:480px;
-margin:0 auto;
-}
-
-.lst-td {
-border-bottom:1px solid #999;
-padding-right:16px;
-}
-
-.lst {
--moz-box-sizing:content-box;
-background:#fff;
-border:1px solid #ccc;
-border-bottom:none;
-color:#4D5256;
-font:20px arial;
-float:left;
-height:26px;
-vertical-align:middle;
-width:100%;
-padding:2px 10px 2px 6px;
-}
-
-.com {
-color:#800;
-}
-
-.lit {
-color:#066;
-}
-
-.pun,.opn,.clo {
-color:#440;
-}
-
-.fun {
-color:#red;
-}
-
-.str,.atv {
-color:#080;
-}
-
-.kwd,.tag {
-color:#008;
-}
-
-.pln {
-color:#000;
-}
-
-.prettyprint {
-padding:10px 0 10px 20px;
-}
ol.linenums {
margin:0 0 0 20px;
@@ -588,104 +21,18 @@ line-height:15px;
padding:0 5px;
}
-.prettyprint-dark {
-background-color:#1d1f21;
-border:0;
-padding:10px;
-}
-
-.prettyprint-dark.linenums li {
-color:#444;
-}
-
-.prettyprint-dark.linenums li:hover {
-background-color:#282a2e;
-}
-
-.prettyprint-dark.kwd,.prettyprint-dark.tag {
-color:#006;
-font-weight:700;
-}
-
-.prettyprint-dark.str,.prettyprint-dark.atv {
-color:#060;
-}
-
-#slider1 {
-width:805px;
-height:285px;
-position:relative;
-overflow:hidden;
-}
-
-#slider1Content {
-width:805px;
-position:absolute;
-top:0;
-margin-left:0;
-}
-
-.slider1Image {
-float:center;
-position:relative;
-display:none;
-}
-
-.slider1Image span {
-position:absolute;
-font:10px/15px Arial,sans-serif;
-width:805px;
-background-color:#E9EEF2;
-filter:alpha(opacity=70);
--moz-opacity:.7;
--khtml-opacity:.7;
-opacity:.7;
-color:#000;
-display:none;
-padding:10px 13px;
-}
-
-.top {
-top:0;
-left:0;
-}
-
-.slider1Image span strong {
-font-size:14px;
-}
-
-.chart_p {
-font-size:11px;
-line-height:18px;
-}
-
-#isad {
-float:right;
-background:url(http://mit00.02753.com/www/img/icon_ad.png) no-repeat scroll 0 0 transparent;
-font-size:11px;
-padding-left:20px;
-line-height:11px;
-}
*,div.pages .next a,div.pages .prev a {
margin:0;
padding:0;
}
-a:hover,.created a:hover {
+.li_list a:hover,.created a:hover {
background-color:#105DB5;
color:#FFF;
text-decoration:none;
}
-h1,h2 {
-font-size:18px;
-}
-
-.fixed,.clear {
-clear:both;
-}
-
.li_list li,.na_list li {
clear:both;
height:18px;
@@ -693,14 +40,16 @@ list-style-type:square;
padding:2px;
}
-div.pages .break,.created a {
-color:#999;
+
+.fixed,.clear {
+clear:both;
}
-.tomore,.at_sebug {
-padding:5px 0;
+
+h1,h2 {
+font-size:18px;
}
-.typ,.atn,.dec,.var,.prettyprint-dark.typ,.prettyprint-dark .atn,.prettyprint-dark .dec,.prettyprint-dark.var {
-color:#606;
-}
\ No newline at end of file
+div.pages .break,.created a {
+color:#999;
+}
diff --git a/public/stylesheets/welcome.css b/public/stylesheets/welcome.css
index 5ee72add5..4636ca5af 100644
--- a/public/stylesheets/welcome.css
+++ b/public/stylesheets/welcome.css
@@ -399,7 +399,7 @@ a.attachments_list_color {
/************************** 贴吧动态 开始 *****************************/
/*贴吧活动*/
.memo_activity{
-
+ max-width: 100%;
}
/*帖子li*/
.memo_activity .message-brief-intro{
@@ -418,6 +418,7 @@ a.attachments_list_color {
padding-left: 20px;
background: url('../images/list-icon.png') no-repeat scroll left center;
font-size: 10pt;
+ max-width: 100%
}
/*帖子标题前吧名*/
.memo_activity .memo_Bar_title{
diff --git a/public/themes/redpenny-master/stylesheets/application.css b/public/themes/redpenny-master/stylesheets/application.css
index c1aa1ff81..a94ee45ba 100644
--- a/public/themes/redpenny-master/stylesheets/application.css
+++ b/public/themes/redpenny-master/stylesheets/application.css
@@ -1867,6 +1867,23 @@ a.reference {
color: #ACAEB1;
width: 100%;
}
+
+.grayline2{
+ border: #039EA0 1px solid;
+ /*border: rgb(3,158,160) 1px solid;*/
+ font-size: 12px;
+ color: #ACAEB1;
+ width: 72.4%;
+}
+
+.grayline3{
+ border: #039EA0 1px solid;
+ /*border: rgb(3,158,160) 1px solid;*/
+ font-size: 12px;
+ color: #ACAEB1;
+ width: 48.4%;
+}
+
div.tableline{
height: 1px;
background-color: #ACAEB1;
diff --git a/test/fixtures/bug_to_osps.yml b/test/fixtures/bug_to_osps.yml
new file mode 100644
index 000000000..c63aac0b6
--- /dev/null
+++ b/test/fixtures/bug_to_osps.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
+
+# This model initially had no columns defined. If you add columns to the
+# model remove the '{}' from the fixture names and add the columns immediately
+# below each fixture, per the syntax in the comments below
+#
+one: {}
+# column: value
+#
+two: {}
+# column: value
diff --git a/test/unit/bug_to_osp_test.rb b/test/unit/bug_to_osp_test.rb
new file mode 100644
index 000000000..5e466f081
--- /dev/null
+++ b/test/unit/bug_to_osp_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class BugToOspTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
| |