diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2018-07-07 16:23:04 -0400 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2018-07-07 16:23:04 -0400 |
commit | 42d9db526d3aef2e08848d6bc587feaf3700db42 (patch) | |
tree | 29bfcb6653bb6419fa087f87de72b00b00e68fd6 /app | |
parent | dd231a335758873dcd9024db7618837094fcc0a5 (diff) | |
download | thoughts-42d9db526d3aef2e08848d6bc587feaf3700db42.tar.gz thoughts-42d9db526d3aef2e08848d6bc587feaf3700db42.tar.bz2 thoughts-42d9db526d3aef2e08848d6bc587feaf3700db42.zip |
Added tags
Blogs and streams can now be tagged. Records now show the appropriate tags for an entry. Updates work oddly, because their records show the stream's tags, since updates do not have tags themselves. refs #2
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/admin/records.coffee | 2 | ||||
-rw-r--r-- | app/assets/javascripts/application.js | 1 | ||||
-rw-r--r-- | app/assets/stylesheets/admin.css.scss | 1 | ||||
-rw-r--r-- | app/assets/stylesheets/admin/layout.scss | 8 | ||||
-rw-r--r-- | app/assets/stylesheets/main/records.scss | 2 | ||||
-rw-r--r-- | app/controllers/admin/blogs_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/admin/streams_controller.rb | 2 | ||||
-rw-r--r-- | app/models/blog.rb | 6 | ||||
-rw-r--r-- | app/models/stream.rb | 6 | ||||
-rw-r--r-- | app/models/update.rb | 4 | ||||
-rw-r--r-- | app/views/admin/blogs/_form.html.haml | 4 | ||||
-rw-r--r-- | app/views/admin/streams/_form.html.haml | 4 | ||||
-rw-r--r-- | app/views/records/_record.html.haml | 7 | ||||
-rw-r--r-- | app/views/records/index.html.haml | 8 |
14 files changed, 48 insertions, 9 deletions
diff --git a/app/assets/javascripts/admin/records.coffee b/app/assets/javascripts/admin/records.coffee index 3a1ed51..7a11ce1 100644 --- a/app/assets/javascripts/admin/records.coffee +++ b/app/assets/javascripts/admin/records.coffee | |||
@@ -23,3 +23,5 @@ $(document).on "turbolinks:load", -> | |||
23 | create_record_toggle($(this).prop("checked")) | 23 | create_record_toggle($(this).prop("checked")) |
24 | $(".published-field input[type=checkbox]").change -> | 24 | $(".published-field input[type=checkbox]").change -> |
25 | published_field_toggle($(this).prop("checked")) | 25 | published_field_toggle($(this).prop("checked")) |
26 | $("input[type=tags]").each -> | ||
27 | tagsInput(this) | ||
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index f902906..a81b3b2 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js | |||
@@ -14,4 +14,5 @@ | |||
14 | //= require jquery_ujs | 14 | //= require jquery_ujs |
15 | //= require turbolinks | 15 | //= require turbolinks |
16 | //= require ckeditor/init | 16 | //= require ckeditor/init |
17 | //= require tags-input | ||
17 | //= require_tree ./admin | 18 | //= require_tree ./admin |
diff --git a/app/assets/stylesheets/admin.css.scss b/app/assets/stylesheets/admin.css.scss index 5235c4b..95d1ed0 100644 --- a/app/assets/stylesheets/admin.css.scss +++ b/app/assets/stylesheets/admin.css.scss | |||
@@ -1,4 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | *= require normalize-rails | 2 | *= require normalize-rails |
3 | *= require tags-input | ||
3 | *= require_tree ./admin | 4 | *= require_tree ./admin |
4 | */ | 5 | */ |
diff --git a/app/assets/stylesheets/admin/layout.scss b/app/assets/stylesheets/admin/layout.scss index b825c25..220dcd5 100644 --- a/app/assets/stylesheets/admin/layout.scss +++ b/app/assets/stylesheets/admin/layout.scss | |||
@@ -196,6 +196,14 @@ body { | |||
196 | } | 196 | } |
197 | } | 197 | } |
198 | 198 | ||
199 | .tags-field { | ||
200 | label { | ||
201 | font-size: .75em; | ||
202 | display: block; | ||
203 | margin-bottom: 0.5em; | ||
204 | } | ||
205 | } | ||
206 | |||
199 | .record-description-field { | 207 | .record-description-field { |
200 | display: none; | 208 | display: none; |
201 | margin-top: 1em; | 209 | margin-top: 1em; |
diff --git a/app/assets/stylesheets/main/records.scss b/app/assets/stylesheets/main/records.scss index f57dded..350fb16 100644 --- a/app/assets/stylesheets/main/records.scss +++ b/app/assets/stylesheets/main/records.scss | |||
@@ -31,6 +31,7 @@ | |||
31 | .tags { | 31 | .tags { |
32 | margin: .25em; | 32 | margin: .25em; |
33 | display: flex; | 33 | display: flex; |
34 | flex-wrap: wrap; | ||
34 | padding-left: 0; | 35 | padding-left: 0; |
35 | 36 | ||
36 | li { | 37 | li { |
@@ -58,6 +59,7 @@ | |||
58 | } | 59 | } |
59 | } | 60 | } |
60 | 61 | ||
62 | &.entry-tag { | ||
61 | & + li { | 63 | & + li { |
62 | margin-left: 1em; | 64 | margin-left: 1em; |
63 | } | 65 | } |
diff --git a/app/controllers/admin/blogs_controller.rb b/app/controllers/admin/blogs_controller.rb index 1035c12..e79dd81 100644 --- a/app/controllers/admin/blogs_controller.rb +++ b/app/controllers/admin/blogs_controller.rb | |||
@@ -56,7 +56,7 @@ class Admin::BlogsController < Admin::AdminController | |||
56 | private | 56 | private |
57 | 57 | ||
58 | def blog_params | 58 | def blog_params |
59 | params.require(:blog).permit(:title, :body, :slug, :published, records_attributes: [:description, :_destroy]) | 59 | params.require(:blog).permit(:title, :body, :slug, :published, :tag_list, records_attributes: [:description, :_destroy]) |
60 | end | 60 | end |
61 | 61 | ||
62 | def set_section | 62 | def set_section |
diff --git a/app/controllers/admin/streams_controller.rb b/app/controllers/admin/streams_controller.rb index 86dec06..252ebfa 100644 --- a/app/controllers/admin/streams_controller.rb +++ b/app/controllers/admin/streams_controller.rb | |||
@@ -42,7 +42,7 @@ class Admin::StreamsController < Admin::AdminController | |||
42 | private | 42 | private |
43 | 43 | ||
44 | def stream_params | 44 | def stream_params |
45 | params.require(:stream).permit(:title, :body, :slug, records_attributes: [:description, :_destroy]) | 45 | params.require(:stream).permit(:title, :body, :slug, :tag_list, records_attributes: [:description, :_destroy]) |
46 | end | 46 | end |
47 | 47 | ||
48 | def set_section | 48 | def set_section |
diff --git a/app/models/blog.rb b/app/models/blog.rb index 5742879..18f63f1 100644 --- a/app/models/blog.rb +++ b/app/models/blog.rb | |||
@@ -1,6 +1,8 @@ | |||
1 | class Blog < ApplicationRecord | 1 | class Blog < ApplicationRecord |
2 | include Recordable | 2 | include Recordable |
3 | 3 | ||
4 | acts_as_taggable | ||
5 | |||
4 | validates :title, presence: true | 6 | validates :title, presence: true |
5 | validates :body, presence: true, if: :published | 7 | validates :body, presence: true, if: :published |
6 | validates :slug, presence: true, format: /\A[-a-z0-9]+\z/, if: :published | 8 | validates :slug, presence: true, format: /\A[-a-z0-9]+\z/, if: :published |
@@ -12,6 +14,10 @@ class Blog < ApplicationRecord | |||
12 | "/says/#{slug}" | 14 | "/says/#{slug}" |
13 | end | 15 | end |
14 | 16 | ||
17 | def taggable | ||
18 | self | ||
19 | end | ||
20 | |||
15 | private | 21 | private |
16 | def set_draft_title | 22 | def set_draft_title |
17 | if self.title.blank? and not self.published | 23 | if self.title.blank? and not self.published |
diff --git a/app/models/stream.rb b/app/models/stream.rb index 1398b75..0773143 100644 --- a/app/models/stream.rb +++ b/app/models/stream.rb | |||
@@ -1,6 +1,8 @@ | |||
1 | class Stream < ApplicationRecord | 1 | class Stream < ApplicationRecord |
2 | include Recordable | 2 | include Recordable |
3 | 3 | ||
4 | acts_as_taggable | ||
5 | |||
4 | has_many :updates | 6 | has_many :updates |
5 | 7 | ||
6 | validates :title, presence: true | 8 | validates :title, presence: true |
@@ -9,4 +11,8 @@ class Stream < ApplicationRecord | |||
9 | def path | 11 | def path |
10 | "/thinks/#{slug}" | 12 | "/thinks/#{slug}" |
11 | end | 13 | end |
14 | |||
15 | def taggable | ||
16 | self | ||
17 | end | ||
12 | end | 18 | end |
diff --git a/app/models/update.rb b/app/models/update.rb index 73c4911..01907d8 100644 --- a/app/models/update.rb +++ b/app/models/update.rb | |||
@@ -8,4 +8,8 @@ class Update < ApplicationRecord | |||
8 | def path | 8 | def path |
9 | "/thinks/#{stream.slug}\#update-#{id}" | 9 | "/thinks/#{stream.slug}\#update-#{id}" |
10 | end | 10 | end |
11 | |||
12 | def taggable | ||
13 | stream | ||
14 | end | ||
11 | end | 15 | end |
diff --git a/app/views/admin/blogs/_form.html.haml b/app/views/admin/blogs/_form.html.haml index 12f7a82..36925af 100644 --- a/app/views/admin/blogs/_form.html.haml +++ b/app/views/admin/blogs/_form.html.haml | |||
@@ -22,6 +22,10 @@ | |||
22 | - else | 22 | - else |
23 | = link_to "Preview post", admin_blog_url(f.object), target: "entry-preview" | 23 | = link_to "Preview post", admin_blog_url(f.object), target: "entry-preview" |
24 | .details-module | 24 | .details-module |
25 | .tags-field | ||
26 | = f.label :tag_list, "Tags" | ||
27 | = f.text_field :tag_list, type: :tags, value: f.object.tag_list.join(",") | ||
28 | .details-module | ||
25 | .published-field | 29 | .published-field |
26 | = f.check_box :published | 30 | = f.check_box :published |
27 | = f.label :published | 31 | = f.label :published |
diff --git a/app/views/admin/streams/_form.html.haml b/app/views/admin/streams/_form.html.haml index ce457cb..e04a3fb 100644 --- a/app/views/admin/streams/_form.html.haml +++ b/app/views/admin/streams/_form.html.haml | |||
@@ -16,6 +16,10 @@ | |||
16 | - f.object.errors.full_messages.each do |error| | 16 | - f.object.errors.full_messages.each do |error| |
17 | %li= error | 17 | %li= error |
18 | .details-module | 18 | .details-module |
19 | .tags-field | ||
20 | = f.label :tag_list, "Tags" | ||
21 | = f.text_field :tag_list, type: :tags, value: f.object.tag_list.join(",") | ||
22 | .details-module | ||
19 | = f.fields_for :records, Record.new do |builder| | 23 | = f.fields_for :records, Record.new do |builder| |
20 | .should-create-record-field | 24 | .should-create-record-field |
21 | = builder.check_box :_destroy, {checked: false}, "0", "1" | 25 | = builder.check_box :_destroy, {checked: false}, "0", "1" |
diff --git a/app/views/records/_record.html.haml b/app/views/records/_record.html.haml new file mode 100644 index 0000000..80a365c --- /dev/null +++ b/app/views/records/_record.html.haml | |||
@@ -0,0 +1,7 @@ | |||
1 | %li | ||
2 | %span.description= link_to record.description, record.recordable.path | ||
3 | %ul.tags | ||
4 | %li.record-date= record.created_at.strftime("%m.%d.%y") | ||
5 | %li.entry-type{ class: "entry-type-#{record.recordable_type.downcase}" }= record.recordable_type | ||
6 | - record.recordable.taggable.tag_list.each do |tag| | ||
7 | %li.entry-tag= tag | ||
diff --git a/app/views/records/index.html.haml b/app/views/records/index.html.haml index 200321e..4ceed2c 100644 --- a/app/views/records/index.html.haml +++ b/app/views/records/index.html.haml | |||
@@ -1,7 +1 @@ | |||
1 | %ul#records | %ul#records= render @records | |
2 | - @records.each do |record| | ||
3 | %li | ||
4 | %span.description= link_to record.description, record.recordable.path | ||
5 | %ul.tags | ||
6 | %li.record-date= record.created_at.strftime("%m.%d.%y") | ||
7 | %li.entry-type{ class: "entry-type-#{record.recordable_type.downcase}" }= record.recordable_type | ||