From 39fceedf56be0a7078c43ab726117cf043e8e0f3 Mon Sep 17 00:00:00 2001 From: jomo Date: Fri, 21 Nov 2014 00:39:38 +0100 Subject: [PATCH] add basic support for labels --- app/assets/stylesheets/style.css.scss | 9 ++++++ app/models/forum.rb | 1 + app/models/forumthread.rb | 1 + app/models/label.rb | 11 +++++++ app/views/forumthreads/show.html.erb | 2 +- app/views/labels/_label.html.erb | 3 ++ db/migrate/20141120202853_add_labels.rb | 15 +++++++++ db/schema.rb | 42 ++++++++++++++++--------- 8 files changed, 68 insertions(+), 16 deletions(-) create mode 100644 app/models/label.rb create mode 100644 app/views/labels/_label.html.erb create mode 100644 db/migrate/20141120202853_add_labels.rb diff --git a/app/assets/stylesheets/style.css.scss b/app/assets/stylesheets/style.css.scss index 542396c..312f599 100644 --- a/app/assets/stylesheets/style.css.scss +++ b/app/assets/stylesheets/style.css.scss @@ -984,4 +984,13 @@ nav.pagination { color: #000; display: inline-block; padding: 2px 5px; +} + +.label { + background: #d40; + padding: 0.1em 0.2em; + border-radius: 0.2em; + color: #b20; + border: 1px solid #B20; + text-shadow: -1px -1px #e50, 1px 1px #a10; } \ No newline at end of file diff --git a/app/models/forum.rb b/app/models/forum.rb index 4d8b750..48a19b7 100644 --- a/app/models/forum.rb +++ b/app/models/forum.rb @@ -3,6 +3,7 @@ class Forum < ActiveRecord::Base has_many :forumthreads belongs_to :role_read, class_name: "Role", foreign_key: "role_read_id" belongs_to :role_write, class_name: "Role", foreign_key: "role_write_id" + has_and_belongs_to_many :labels def to_s name diff --git a/app/models/forumthread.rb b/app/models/forumthread.rb index 0d7a5d4..b6db0b3 100644 --- a/app/models/forumthread.rb +++ b/app/models/forumthread.rb @@ -6,6 +6,7 @@ class Forumthread < ActiveRecord::Base belongs_to :forum belongs_to :user_author, class_name: "User", foreign_key: "user_author_id" belongs_to :user_editor, class_name: "User", foreign_key: "user_editor_id" + belongs_to :label has_many :threadreplies validates_presence_of :title, :author, :forum diff --git a/app/models/label.rb b/app/models/label.rb new file mode 100644 index 0000000..0bcc7b9 --- /dev/null +++ b/app/models/label.rb @@ -0,0 +1,11 @@ +class Label < ActiveRecord::Base + validates_presence_of :name + belongs_to :role + has_and_belongs_to_many :forums + has_many :forumthreads + + def to_s + name.upcase + end + +end \ No newline at end of file diff --git a/app/views/forumthreads/show.html.erb b/app/views/forumthreads/show.html.erb index 16fa7dc..10cfeb6 100644 --- a/app/views/forumthreads/show.html.erb +++ b/app/views/forumthreads/show.html.erb @@ -1,5 +1,5 @@ <%= link_to @thread.forum.group, forumgroup_path(@thread.forum.group) %> → <%= link_to @thread.forum, @thread.forum %> → <%=truncate(@thread.title, length: 60, omission: " …") %> -

<%= title @thread.title %>

+

<%= render partial: "labels/label", locals: {label: @thread.label} %><%= title @thread.title %>

diff --git a/app/views/labels/_label.html.erb b/app/views/labels/_label.html.erb new file mode 100644 index 0000000..ee3e602 --- /dev/null +++ b/app/views/labels/_label.html.erb @@ -0,0 +1,3 @@ +<% if label %> + <%= label %> +<% end %> \ No newline at end of file diff --git a/db/migrate/20141120202853_add_labels.rb b/db/migrate/20141120202853_add_labels.rb new file mode 100644 index 0000000..5ea97de --- /dev/null +++ b/db/migrate/20141120202853_add_labels.rb @@ -0,0 +1,15 @@ +class AddLabels < ActiveRecord::Migration + def change + create_table :labels do |t| + t.string :name + t.references :role + end + + add_column :forumthreads, :label_id, :integer + + create_table :forums_labels, id: false do |t| + t.references :forum + t.references :label + end + end +end \ No newline at end of file diff --git a/db/schema.rb b/db/schema.rb index caaa7d9..e0ce7e0 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,15 +11,15 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20140617183755) do +ActiveRecord::Schema.define(version: 20141120202853) do create_table "blogposts", force: true do |t| t.string "title" t.text "content" t.integer "user_author_id" t.integer "user_editor_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end create_table "comments", force: true do |t| @@ -27,8 +27,8 @@ ActiveRecord::Schema.define(version: 20140617183755) do t.integer "user_author_id" t.integer "user_editor_id" t.integer "blogpost_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end create_table "forumgroups", force: true do |t| @@ -46,6 +46,11 @@ ActiveRecord::Schema.define(version: 20140617183755) do t.integer "forumgroup_id" end + create_table "forums_labels", id: false, force: true do |t| + t.integer "forum_id" + t.integer "label_id" + end + create_table "forumthreads", force: true do |t| t.string "title" t.text "content" @@ -54,8 +59,9 @@ ActiveRecord::Schema.define(version: 20140617183755) do t.integer "user_author_id" t.integer "user_editor_id" t.integer "forum_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "label_id" end create_table "info", force: true do |t| @@ -63,9 +69,15 @@ ActiveRecord::Schema.define(version: 20140617183755) do t.text "content" end - create_table "register_tokens", primary_key: "uuid", force: true do |t| - t.string "token", limit: 6, null: false - t.string "email", null: false + create_table "labels", force: true do |t| + t.string "name" + t.integer "role_id" + end + + create_table "register_tokens", force: true do |t| + t.string "uuid", limit: 32, null: false + t.string "token", limit: 6, null: false + t.string "email", null: false end create_table "roles", force: true do |t| @@ -76,8 +88,8 @@ ActiveRecord::Schema.define(version: 20140617183755) do create_table "sessions", force: true do |t| t.string "session_id", null: false t.text "data" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree @@ -88,8 +100,8 @@ ActiveRecord::Schema.define(version: 20140617183755) do t.integer "user_author_id" t.integer "user_editor_id" t.integer "forumthread_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end create_table "users", force: true do |t| @@ -109,7 +121,7 @@ ActiveRecord::Schema.define(version: 20140617183755) do t.string "email_token" t.boolean "confirmed", default: false t.datetime "last_seen" - t.integer "role_id", default: 3, null: false + t.integer "role_id", null: false t.datetime "created_at" t.datetime "updated_at" t.boolean "mail_own_thread_reply", default: true