init forum. again.
This commit is contained in:
parent
c03f17e3b4
commit
48650a2a91
|
@ -0,0 +1,2 @@
|
||||||
|
// Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
// All this logic will automatically be available in application.js.
|
|
@ -0,0 +1,4 @@
|
||||||
|
/*
|
||||||
|
Place all the styles related to the matching controller here.
|
||||||
|
They will automatically be included in application.css.
|
||||||
|
*/
|
|
@ -1,6 +1,7 @@
|
||||||
class ForumsController < ApplicationController
|
class ForumsController < ApplicationController
|
||||||
# GET /forums
|
# GET /forums
|
||||||
# GET /forums.json
|
# GET /forums.json
|
||||||
|
layout "base_admin"
|
||||||
def index
|
def index
|
||||||
@forums = Forum.all
|
@forums = Forum.all
|
||||||
|
|
||||||
|
@ -41,6 +42,7 @@ class ForumsController < ApplicationController
|
||||||
# POST /forums.json
|
# POST /forums.json
|
||||||
def create
|
def create
|
||||||
@forum = Forum.new(params[:forum])
|
@forum = Forum.new(params[:forum])
|
||||||
|
@forum.creator_id = User.current.id
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @forum.save
|
if @forum.save
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
class MemosController < ApplicationController
|
||||||
|
end
|
|
@ -0,0 +1,2 @@
|
||||||
|
module MemosHelper
|
||||||
|
end
|
|
@ -1,3 +1,17 @@
|
||||||
class Forum < ActiveRecord::Base
|
class Forum < ActiveRecord::Base
|
||||||
# attr_accessible :title, :body
|
include Redmine::SafeAttributes
|
||||||
|
has_many :topics, :class_name => 'Memo', :conditions => "#{Memo.table_name}.parent_id IS NULL"
|
||||||
|
has_many :memos, :dependent => :destroy
|
||||||
|
belongs_to :creator, :class_name => "User", :foreign_key => 'creator_id'
|
||||||
|
safe_attributes 'name',
|
||||||
|
'description',
|
||||||
|
'topic_count',
|
||||||
|
'memo_count',
|
||||||
|
'last_memo_id',
|
||||||
|
'creator_id'
|
||||||
|
validates_presence_of :name, :creator_id
|
||||||
|
validates_length_of :name, maximum: 50
|
||||||
|
validates_length_of :description, maximum: 255
|
||||||
|
validates :name, :uniqueness => true
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
class Memo < ActiveRecord::Base
|
||||||
|
include Redmine::SafeAttributes
|
||||||
|
belongs_to :forums
|
||||||
|
belongs_to :author, :class_name => "User", :foreign_key => 'author_id'
|
||||||
|
safe_attributes "author_id",
|
||||||
|
"subject",
|
||||||
|
"content",
|
||||||
|
"forum_id",
|
||||||
|
"last_reply_id",
|
||||||
|
"lock",
|
||||||
|
"parent_id",
|
||||||
|
"replies_count",
|
||||||
|
"sticky"
|
||||||
|
validates_presence_of :author_id, :content, :forum_id, :subject
|
||||||
|
validates_length_of :subject, maximum: 50
|
||||||
|
validates_length_of :content, maximum: 2048
|
||||||
|
end
|
|
@ -1,4 +1,5 @@
|
||||||
<%= form_for(@forum) do |f| %>
|
<!-- %= form_for(@forum) do |f| % -->
|
||||||
|
<%= labelled_form_for(@forum) do |f| %>
|
||||||
<% if @forum.errors.any? %>
|
<% if @forum.errors.any? %>
|
||||||
<div id="error_explanation">
|
<div id="error_explanation">
|
||||||
<h2><%= pluralize(@forum.errors.count, "error") %> prohibited this forum from being saved:</h2>
|
<h2><%= pluralize(@forum.errors.count, "error") %> prohibited this forum from being saved:</h2>
|
||||||
|
@ -10,8 +11,9 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
|
<p><%= f.text_field :name, :required => true %></p>
|
||||||
|
<p><%= f.text_field :description, :required => true, :size => 80 %></p>
|
||||||
<%= f.submit %>
|
<%= f.submit %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th>name</th>
|
||||||
|
<th>description</th>
|
||||||
|
<th>creator</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
|
@ -9,6 +12,9 @@
|
||||||
|
|
||||||
<% @forums.each do |forum| %>
|
<% @forums.each do |forum| %>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td><%= forum.name %></td>
|
||||||
|
<td><%= forum.description %></td>
|
||||||
|
<td><%= forum.creator.show_name %></td>
|
||||||
<td><%= link_to 'Show', forum %></td>
|
<td><%= link_to 'Show', forum %></td>
|
||||||
<td><%= link_to 'Edit', edit_forum_path(forum) %></td>
|
<td><%= link_to 'Edit', edit_forum_path(forum) %></td>
|
||||||
<td><%= link_to 'Destroy', forum, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
<td><%= link_to 'Destroy', forum, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<p id="notice"><%= notice %></p>
|
<p id="notice"><%= notice %></p>
|
||||||
|
<p><%= %></p>
|
||||||
|
<p><%= %></p>
|
||||||
|
|
||||||
<%= link_to 'Edit', edit_forum_path(@forum) %> |
|
<%= link_to 'Edit', edit_forum_path(@forum) %> |
|
||||||
<%= link_to 'Back', forums_path %>
|
<%= link_to 'Back', forums_path %>
|
||||||
|
|
|
@ -17,27 +17,7 @@
|
||||||
|
|
||||||
RedmineApp::Application.routes.draw do
|
RedmineApp::Application.routes.draw do
|
||||||
resources :forums do
|
resources :forums do
|
||||||
|
resources :memos
|
||||||
member do
|
|
||||||
get 'settings(/:tab)', :action => 'settings', :as => 'settings'
|
|
||||||
post 'modules'
|
|
||||||
post 'archive'
|
|
||||||
post 'unarchive'
|
|
||||||
post 'close'
|
|
||||||
post 'reopen'
|
|
||||||
match 'copy', :via => [:get, :post]
|
|
||||||
end
|
|
||||||
|
|
||||||
shallow do
|
|
||||||
resources :memberships, :controller => 'members', :only => [:index, :show, :new, :create, :update, :destroy] do
|
|
||||||
collection do
|
|
||||||
get 'autocomplete'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
resources :boards
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
class CreateForums < ActiveRecord::Migration
|
class CreateForums < ActiveRecord::Migration
|
||||||
def change
|
def change
|
||||||
create_table :forums do |t|
|
create_table :forums do |t|
|
||||||
|
t.column "name", :string, :default => nil, :null => false
|
||||||
t.timestamps
|
t.column "description", :string, :default => '', :null => true
|
||||||
end
|
t.column "topic_count", :integer, :default => 0
|
||||||
end
|
t.column "memo_count", :integer, :default => 0
|
||||||
|
t.column "last_memo_id",:integer, :default => 0
|
||||||
|
t.column "creator_id", :integer, :null => false
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
class CreateMemos < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :memos do |t|
|
||||||
|
t.integer :forum_id, :null => false
|
||||||
|
t.integer :parent_id, null: true
|
||||||
|
t.string :subject, null: false
|
||||||
|
t.text :content, null: false
|
||||||
|
t.integer :author_id, null: false
|
||||||
|
t.integer :replies_count
|
||||||
|
t.integer :last_reply_id
|
||||||
|
t.boolean :lock, default: false
|
||||||
|
t.boolean :sticky, default: false
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
140
db/schema.rb
140
db/schema.rb
|
@ -11,7 +11,15 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20131113124237) do
|
ActiveRecord::Schema.define(:version => 20131122132942) do
|
||||||
|
|
||||||
|
create_table "a_user_watchers", :force => true do |t|
|
||||||
|
t.string "name"
|
||||||
|
t.text "description"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
t.integer "member_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "activities", :force => true do |t|
|
create_table "activities", :force => true do |t|
|
||||||
t.integer "act_id", :null => false
|
t.integer "act_id", :null => false
|
||||||
|
@ -253,6 +261,17 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
|
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
|
||||||
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
|
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
|
||||||
|
|
||||||
|
create_table "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|
|
create_table "groups_users", :id => false, :force => true do |t|
|
||||||
t.integer "group_id", :null => false
|
t.integer "group_id", :null => false
|
||||||
t.integer "user_id", :null => false
|
t.integer "user_id", :null => false
|
||||||
|
@ -283,9 +302,9 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
|
add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
|
||||||
|
|
||||||
create_table "issue_relations", :force => true do |t|
|
create_table "issue_relations", :force => true do |t|
|
||||||
t.integer "issue_from_id", :null => false
|
t.integer "issue_from_id", :null => false
|
||||||
t.integer "issue_to_id", :null => false
|
t.integer "issue_to_id", :null => false
|
||||||
t.string "relation_type", :default => "", :null => false
|
t.string "relation_type", :null => false
|
||||||
t.integer "delay"
|
t.integer "delay"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -414,6 +433,20 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
add_index "members", ["user_id", "project_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
|
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"
|
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"
|
||||||
|
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
|
||||||
|
end
|
||||||
|
|
||||||
create_table "messages", :force => true do |t|
|
create_table "messages", :force => true do |t|
|
||||||
t.integer "board_id", :null => false
|
t.integer "board_id", :null => false
|
||||||
t.integer "parent_id"
|
t.integer "parent_id"
|
||||||
|
@ -434,6 +467,22 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
|
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
|
||||||
add_index "messages", ["parent_id"], :name => "messages_parent_id"
|
add_index "messages", ["parent_id"], :name => "messages_parent_id"
|
||||||
|
|
||||||
|
create_table "messages_for_bids", :force => true do |t|
|
||||||
|
t.string "message"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.integer "bid_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "messages_for_users", :force => true do |t|
|
||||||
|
t.integer "messager_id"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.string "message"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "news", :force => true do |t|
|
create_table "news", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "title", :limit => 60, :default => "", :null => false
|
t.string "title", :limit => 60, :default => "", :null => false
|
||||||
|
@ -493,11 +542,22 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
t.integer "watchers_count"
|
t.integer "watchers_count"
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "project_type"
|
t.integer "project_type"
|
||||||
t.float "grade", :default => 0.0
|
t.integer "gitlab_group_id", :limit => 8
|
||||||
t.integer "course_ac_para", :default => 0
|
t.float "grade", :default => 0.0
|
||||||
|
t.integer "course_ac_para", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade"
|
add_index "project_statuses", ["changesets_count"], :name => "index_project_statuses_on_changesets_count"
|
||||||
|
add_index "project_statuses", ["watchers_count"], :name => "index_project_statuses_on_watchers_count"
|
||||||
|
|
||||||
|
create_table "project_tags", :force => true do |t|
|
||||||
|
t.integer "project_id"
|
||||||
|
t.integer "tag_id"
|
||||||
|
t.string "description"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
t.integer "user_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "projects", :force => true do |t|
|
create_table "projects", :force => true do |t|
|
||||||
t.string "name", :default => "", :null => false
|
t.string "name", :default => "", :null => false
|
||||||
|
@ -516,9 +576,6 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
t.boolean "hidden_repo", :default => false, :null => false
|
t.boolean "hidden_repo", :default => false, :null => false
|
||||||
end
|
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|
|
create_table "projects_trackers", :id => false, :force => true do |t|
|
||||||
t.integer "project_id", :default => 0, :null => false
|
t.integer "project_id", :default => 0, :null => false
|
||||||
t.integer "tracker_id", :default => 0, :null => false
|
t.integer "tracker_id", :default => 0, :null => false
|
||||||
|
@ -543,17 +600,18 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
|
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
|
||||||
|
|
||||||
create_table "repositories", :force => true do |t|
|
create_table "repositories", :force => true do |t|
|
||||||
t.integer "project_id", :default => 0, :null => false
|
t.integer "project_id", :default => 0, :null => false
|
||||||
t.string "url", :default => "", :null => false
|
t.string "url", :default => "", :null => false
|
||||||
t.string "login", :limit => 60, :default => ""
|
t.string "login", :limit => 60, :default => ""
|
||||||
t.string "password", :default => ""
|
t.string "password", :default => ""
|
||||||
t.string "root_url", :default => ""
|
t.string "root_url", :default => ""
|
||||||
t.string "type"
|
t.string "type"
|
||||||
t.string "path_encoding", :limit => 64
|
t.string "path_encoding", :limit => 64
|
||||||
t.string "log_encoding", :limit => 64
|
t.string "log_encoding", :limit => 64
|
||||||
t.text "extra_info"
|
t.text "extra_info"
|
||||||
t.string "identifier"
|
t.string "identifier"
|
||||||
t.boolean "is_default", :default => false
|
t.boolean "is_default", :default => false
|
||||||
|
t.string "git_project_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
|
add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
|
||||||
|
@ -567,26 +625,6 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
t.string "issues_visibility", :limit => 30, :default => "default", :null => false
|
t.string "issues_visibility", :limit => 30, :default => "default", :null => false
|
||||||
end
|
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|
|
create_table "settings", :force => true do |t|
|
||||||
t.string "name", :default => "", :null => false
|
t.string "name", :default => "", :null => false
|
||||||
t.text "value"
|
t.text "value"
|
||||||
|
@ -597,13 +635,20 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
|
|
||||||
create_table "shares", :force => true do |t|
|
create_table "shares", :force => true do |t|
|
||||||
t.date "created_on"
|
t.date "created_on"
|
||||||
t.string "url"
|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.integer "share_type"
|
t.string "share_type"
|
||||||
t.datetime "created_at", :null => false
|
t.string "url"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
t.string "description"
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "students", :force => true do |t|
|
||||||
|
t.string "name"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "students_for_courses", :force => true do |t|
|
create_table "students_for_courses", :force => true do |t|
|
||||||
|
@ -664,7 +709,7 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
create_table "tokens", :force => true do |t|
|
create_table "tokens", :force => true do |t|
|
||||||
t.integer "user_id", :default => 0, :null => false
|
t.integer "user_id", :default => 0, :null => false
|
||||||
t.string "action", :limit => 30, :default => "", :null => false
|
t.string "action", :limit => 30, :default => "", :null => false
|
||||||
t.string "value", :limit => 40, :default => "", :null => false
|
t.string "value", :limit => 40
|
||||||
t.datetime "created_on", :null => false
|
t.datetime "created_on", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -696,6 +741,7 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
t.string "teacher_realname"
|
t.string "teacher_realname"
|
||||||
t.string "student_realname"
|
t.string "student_realname"
|
||||||
t.string "location_city"
|
t.string "location_city"
|
||||||
|
t.string "git_token"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "user_grades", :force => true do |t|
|
create_table "user_grades", :force => true do |t|
|
||||||
|
@ -732,6 +778,14 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
||||||
add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
|
add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
|
||||||
add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
|
add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
|
||||||
|
|
||||||
|
create_table "user_tags", :force => true do |t|
|
||||||
|
t.integer "user_id"
|
||||||
|
t.integer "tag_id"
|
||||||
|
t.string "description"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "users", :force => true do |t|
|
create_table "users", :force => true do |t|
|
||||||
t.string "login", :default => "", :null => false
|
t.string "login", :default => "", :null => false
|
||||||
t.string "hashed_password", :limit => 40, :default => "", :null => false
|
t.string "hashed_password", :limit => 40, :default => "", :null => false
|
||||||
|
|
Loading…
Reference in New Issue