diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/assets/stylesheets/admin/layout.scss | 10 | ||||
| -rw-r--r-- | app/assets/stylesheets/main/records.scss | 4 | ||||
| -rw-r--r-- | app/controllers/admin/links_controller.rb | 52 | ||||
| -rw-r--r-- | app/models/link.rb | 15 | ||||
| -rw-r--r-- | app/views/admin/links/_form.html.haml | 26 | ||||
| -rw-r--r-- | app/views/admin/links/edit.html.haml | 3 | ||||
| -rw-r--r-- | app/views/admin/links/index.html.haml | 14 | ||||
| -rw-r--r-- | app/views/admin/links/new.html.haml | 3 | ||||
| -rw-r--r-- | app/views/layouts/admin.html.haml | 4 |
9 files changed, 131 insertions, 0 deletions
| diff --git a/app/assets/stylesheets/admin/layout.scss b/app/assets/stylesheets/admin/layout.scss index 220dcd5..b2c561b 100644 --- a/app/assets/stylesheets/admin/layout.scss +++ b/app/assets/stylesheets/admin/layout.scss | |||
| @@ -111,6 +111,16 @@ body { | |||
| 111 | } | 111 | } |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | .url-field { | ||
| 115 | label { | ||
| 116 | display: none; | ||
| 117 | } | ||
| 118 | |||
| 119 | input { | ||
| 120 | width: 100%; | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 114 | .slug-field { | 124 | .slug-field { |
| 115 | display: flex; | 125 | display: flex; |
| 116 | font-size: 0.75em; | 126 | font-size: 0.75em; |
| diff --git a/app/assets/stylesheets/main/records.scss b/app/assets/stylesheets/main/records.scss index 47fdfa3..a8b7754 100644 --- a/app/assets/stylesheets/main/records.scss +++ b/app/assets/stylesheets/main/records.scss | |||
| @@ -57,6 +57,10 @@ | |||
| 57 | &.entry-type-stream, &.entry-type-update { | 57 | &.entry-type-stream, &.entry-type-update { |
| 58 | background-color: #98FB98; | 58 | background-color: #98FB98; |
| 59 | } | 59 | } |
| 60 | |||
| 61 | &.entry-type-link { | ||
| 62 | background-color: #FFCC99; | ||
| 63 | } | ||
| 60 | } | 64 | } |
| 61 | 65 | ||
| 62 | &.entry-tag { | 66 | &.entry-tag { |
| diff --git a/app/controllers/admin/links_controller.rb b/app/controllers/admin/links_controller.rb new file mode 100644 index 0000000..bda0d49 --- /dev/null +++ b/app/controllers/admin/links_controller.rb | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | class Admin::LinksController < Admin::AdminController | ||
| 2 | before_action :set_section | ||
| 3 | |||
| 4 | def index | ||
| 5 | @links = Link.order(created_at: :desc) | ||
| 6 | end | ||
| 7 | |||
| 8 | def new | ||
| 9 | @link = Link.new | ||
| 10 | end | ||
| 11 | |||
| 12 | def create | ||
| 13 | @link = Link.new(link_params) | ||
| 14 | |||
| 15 | if @link.save | ||
| 16 | flash.notice = "Link created successfully!" | ||
| 17 | |||
| 18 | render :edit | ||
| 19 | else | ||
| 20 | flash.alert = "Error creating link." | ||
| 21 | |||
| 22 | render :new | ||
| 23 | end | ||
| 24 | end | ||
| 25 | |||
| 26 | def edit | ||
| 27 | @link = Link.find(params[:id]) | ||
| 28 | end | ||
| 29 | |||
| 30 | def update | ||
| 31 | @link = Link.find(params[:id]) | ||
| 32 | |||
| 33 | if @link.update_attributes(link_params) | ||
| 34 | flash.notice = "Link updated successfully!" | ||
| 35 | else | ||
| 36 | flash.alert = "Error updating link." | ||
| 37 | end | ||
| 38 | |||
| 39 | render :edit | ||
| 40 | end | ||
| 41 | |||
| 42 | private | ||
| 43 | |||
| 44 | def link_params | ||
| 45 | params.require(:link).permit(:title, :url, :tag_list, records_attributes: [:description, :_destroy]) | ||
| 46 | end | ||
| 47 | |||
| 48 | def set_section | ||
| 49 | @section = "links" | ||
| 50 | end | ||
| 51 | |||
| 52 | end | ||
| diff --git a/app/models/link.rb b/app/models/link.rb new file mode 100644 index 0000000..81ffa2b --- /dev/null +++ b/app/models/link.rb | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | class Link < ApplicationRecord | ||
| 2 | include Recordable | ||
| 3 | |||
| 4 | acts_as_taggable | ||
| 5 | |||
| 6 | validates :title, :url, presence: true | ||
| 7 | |||
| 8 | def path | ||
| 9 | url | ||
| 10 | end | ||
| 11 | |||
| 12 | def taggable | ||
| 13 | self | ||
| 14 | end | ||
| 15 | end | ||
| diff --git a/app/views/admin/links/_form.html.haml b/app/views/admin/links/_form.html.haml new file mode 100644 index 0000000..c624a3d --- /dev/null +++ b/app/views/admin/links/_form.html.haml | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | %fieldset#content | ||
| 2 | .title-field | ||
| 3 | = f.label :title | ||
| 4 | = f.text_field :title, placeholder: "Title" | ||
| 5 | .url-field | ||
| 6 | = f.label :url | ||
| 7 | = f.text_field :url, placeholder: "URL" | ||
| 8 | %fieldset#details | ||
| 9 | - if f.object.errors.any? | ||
| 10 | #errors.details-module | ||
| 11 | %h3 Error! | ||
| 12 | %ul | ||
| 13 | - f.object.errors.full_messages.each do |error| | ||
| 14 | %li= error | ||
| 15 | .details-module | ||
| 16 | .tags-field | ||
| 17 | = f.label :tag_list, "Tags" | ||
| 18 | = f.text_field :tag_list, type: :tags, value: f.object.tag_list.join(",") | ||
| 19 | .details-module | ||
| 20 | = f.fields_for :records, Record.new do |builder| | ||
| 21 | .should-create-record-field | ||
| 22 | = builder.check_box :_destroy, {checked: false}, "0", "1" | ||
| 23 | = builder.label :_destroy, "Create record?" | ||
| 24 | .record-description-field | ||
| 25 | = builder.text_area :description, placeholder: "record text" | ||
| 26 | .details-module= f.submit | ||
| diff --git a/app/views/admin/links/edit.html.haml b/app/views/admin/links/edit.html.haml new file mode 100644 index 0000000..1c6c529 --- /dev/null +++ b/app/views/admin/links/edit.html.haml | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | - title "Editing #{@link.title}" | ||
| 2 | = form_for @link, url: admin_link_url(@link), html: { id: "entry-form" } do |f| | ||
| 3 | = render partial: "form", locals: { f: f } | ||
| diff --git a/app/views/admin/links/index.html.haml b/app/views/admin/links/index.html.haml new file mode 100644 index 0000000..e66d9b7 --- /dev/null +++ b/app/views/admin/links/index.html.haml | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | - title "Links" | ||
| 2 | %table#entries | ||
| 3 | %tr | ||
| 4 | %th Title | ||
| 5 | %th Date created | ||
| 6 | %th | ||
| 7 | - @links.each do |link| | ||
| 8 | %tr{ class: cycle("even", "odd") } | ||
| 9 | %td= link.title | ||
| 10 | %td= link.created_at.strftime("%B %d, %Y, %l:%M%P") | ||
| 11 | %td | ||
| 12 | %ul.admin-actions | ||
| 13 | %li= link_to "Edit", edit_admin_link_url(link) | ||
| 14 | %li= link_to "Show", link.url | ||
| diff --git a/app/views/admin/links/new.html.haml b/app/views/admin/links/new.html.haml new file mode 100644 index 0000000..accdfd9 --- /dev/null +++ b/app/views/admin/links/new.html.haml | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | - title "New link" | ||
| 2 | = form_for @link, url: admin_links_url, html: { id: "entry-form" } do |f| | ||
| 3 | = render partial: "form", locals: { f: f } | ||
| diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index bc07335..4bfe60a 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml | |||
| @@ -29,5 +29,9 @@ | |||
| 29 | = link_to "Streams", admin_streams_url, class: "major-link" | 29 | = link_to "Streams", admin_streams_url, class: "major-link" |
| 30 | %ul.minors | 30 | %ul.minors |
| 31 | %li.minor= link_to "New stream", new_admin_stream_url | 31 | %li.minor= link_to "New stream", new_admin_stream_url |
| 32 | %li{major_sidebar_attrs("links")} | ||
| 33 | = link_to "Links", admin_links_url, class: "major-link" | ||
| 34 | %ul.minors | ||
| 35 | %li.minor= link_to "New link", new_admin_link_url | ||
| 32 | #main | 36 | #main |
| 33 | = yield | 37 | = yield |
