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
|
||||
# GET /forums
|
||||
# GET /forums.json
|
||||
layout "base_admin"
|
||||
def index
|
||||
@forums = Forum.all
|
||||
|
||||
|
@ -41,6 +42,7 @@ class ForumsController < ApplicationController
|
|||
# POST /forums.json
|
||||
def create
|
||||
@forum = Forum.new(params[:forum])
|
||||
@forum.creator_id = User.current.id
|
||||
|
||||
respond_to do |format|
|
||||
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
|
||||
# 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
|
||||
|
|
|
@ -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? %>
|
||||
<div id="error_explanation">
|
||||
<h2><%= pluralize(@forum.errors.count, "error") %> prohibited this forum from being saved:</h2>
|
||||
|
@ -10,8 +11,9 @@
|
|||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="actions">
|
||||
<p><%= f.text_field :name, :required => true %></p>
|
||||
<p><%= f.text_field :description, :required => true, :size => 80 %></p>
|
||||
<%= f.submit %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
<table>
|
||||
<tr>
|
||||
<th>name</th>
|
||||
<th>description</th>
|
||||
<th>creator</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
|
@ -9,6 +12,9 @@
|
|||
|
||||
<% @forums.each do |forum| %>
|
||||
<tr>
|
||||
<td><%= forum.name %></td>
|
||||
<td><%= forum.description %></td>
|
||||
<td><%= forum.creator.show_name %></td>
|
||||
<td><%= link_to 'Show', forum %></td>
|
||||
<td><%= link_to 'Edit', edit_forum_path(forum) %></td>
|
||||
<td><%= link_to 'Destroy', forum, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<p id="notice"><%= notice %></p>
|
||||
|
||||
<p><%= %></p>
|
||||
<p><%= %></p>
|
||||
|
||||
<%= link_to 'Edit', edit_forum_path(@forum) %> |
|
||||
<%= link_to 'Back', forums_path %>
|
||||
|
|
|
@ -17,27 +17,7 @@
|
|||
|
||||
RedmineApp::Application.routes.draw do
|
||||
resources :forums do
|
||||
|
||||
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
|
||||
|
||||
resources :memos
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
class CreateForums < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :forums do |t|
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
def change
|
||||
create_table :forums do |t|
|
||||
t.column "name", :string, :default => nil, :null => false
|
||||
t.column "description", :string, :default => '', :null => true
|
||||
t.column "topic_count", :integer, :default => 0
|
||||
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
|
||||
|
|
|
@ -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.
|
||||
|
||||
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|
|
||||
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", ["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
|
||||
|
@ -283,9 +302,9 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
|||
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 "issue_from_id", :null => false
|
||||
t.integer "issue_to_id", :null => false
|
||||
t.string "relation_type", :null => false
|
||||
t.integer "delay"
|
||||
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"], :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|
|
||||
t.integer "board_id", :null => false
|
||||
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", ["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|
|
||||
t.integer "project_id"
|
||||
t.string "title", :limit => 60, :default => "", :null => false
|
||||
|
@ -493,11 +542,22 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
|||
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
|
||||
t.integer "gitlab_group_id", :limit => 8
|
||||
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"
|
||||
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|
|
||||
t.string "name", :default => "", :null => false
|
||||
|
@ -516,9 +576,6 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
|||
t.boolean "hidden_repo", :default => false, :null => false
|
||||
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
|
||||
|
@ -543,17 +600,18 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
|||
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
|
||||
|
||||
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.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.string "path_encoding", :limit => 64
|
||||
t.string "log_encoding", :limit => 64
|
||||
t.text "extra_info"
|
||||
t.string "identifier"
|
||||
t.boolean "is_default", :default => false
|
||||
t.boolean "is_default", :default => false
|
||||
t.string "git_project_id"
|
||||
end
|
||||
|
||||
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
|
||||
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"
|
||||
|
@ -597,13 +635,20 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
|||
|
||||
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.string "share_type"
|
||||
t.string "url"
|
||||
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 "students", :force => true do |t|
|
||||
t.string "name"
|
||||
t.datetime "created_at", :null => false
|
||||
t.datetime "updated_at", :null => false
|
||||
end
|
||||
|
||||
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|
|
||||
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.string "value", :limit => 40
|
||||
t.datetime "created_on", :null => false
|
||||
end
|
||||
|
||||
|
@ -696,6 +741,7 @@ ActiveRecord::Schema.define(:version => 20131113124237) do
|
|||
t.string "teacher_realname"
|
||||
t.string "student_realname"
|
||||
t.string "location_city"
|
||||
t.string "git_token"
|
||||
end
|
||||
|
||||
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", ["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|
|
||||
t.string "login", :default => "", :null => false
|
||||
t.string "hashed_password", :limit => 40, :default => "", :null => false
|
||||
|
|
Loading…
Reference in New Issue