about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--app/assets/stylesheets/admin/layout.scss10
-rw-r--r--app/assets/stylesheets/main/records.scss4
-rw-r--r--app/controllers/admin/links_controller.rb52
-rw-r--r--app/models/link.rb15
-rw-r--r--app/views/admin/links/_form.html.haml26
-rw-r--r--app/views/admin/links/edit.html.haml3
-rw-r--r--app/views/admin/links/index.html.haml14
-rw-r--r--app/views/admin/links/new.html.haml3
-rw-r--r--app/views/layouts/admin.html.haml4
-rw-r--r--config/routes.rb2
-rw-r--r--db/migrate/20180811215146_create_links.rb10
-rw-r--r--db/schema.rb9
12 files changed, 151 insertions, 1 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 @@
1class 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
52end
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 @@
1class 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
15end
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
diff --git a/config/routes.rb b/config/routes.rb index 2d0a4ec..512c319 100644 --- a/config/routes.rb +++ b/config/routes.rb
@@ -11,6 +11,8 @@ Rails.application.routes.draw do
11 resources :streams, except: [:show] do 11 resources :streams, except: [:show] do
12 resources :updates, except: [:index, :show] 12 resources :updates, except: [:index, :show]
13 end 13 end
14
15 resources :links, except: [:show]
14 end 16 end
15 17
16 mount Ckeditor::Engine => '/ckeditor' 18 mount Ckeditor::Engine => '/ckeditor'
diff --git a/db/migrate/20180811215146_create_links.rb b/db/migrate/20180811215146_create_links.rb new file mode 100644 index 0000000..0e0ca29 --- /dev/null +++ b/db/migrate/20180811215146_create_links.rb
@@ -0,0 +1,10 @@
1class CreateLinks < ActiveRecord::Migration[5.1]
2 def change
3 create_table :links do |t|
4 t.string :title, null: false
5 t.string :url, null: false
6
7 t.timestamps
8 end
9 end
10end
diff --git a/db/schema.rb b/db/schema.rb index 192c9c1..58891d3 100644 --- a/db/schema.rb +++ b/db/schema.rb
@@ -10,7 +10,7 @@
10# 10#
11# It's strongly recommended that you check this file into your version control system. 11# It's strongly recommended that you check this file into your version control system.
12 12
13ActiveRecord::Schema.define(version: 20180707142420) do 13ActiveRecord::Schema.define(version: 20180811215146) do
14 14
15 create_table "blogs", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" do |t| 15 create_table "blogs", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" do |t|
16 t.string "title" 16 t.string "title"
@@ -35,6 +35,13 @@ ActiveRecord::Schema.define(version: 20180707142420) do
35 t.index ["type"], name: "index_ckeditor_assets_on_type" 35 t.index ["type"], name: "index_ckeditor_assets_on_type"
36 end 36 end
37 37
38 create_table "links", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci" do |t|
39 t.string "title", null: false
40 t.string "url", null: false
41 t.datetime "created_at", null: false
42 t.datetime "updated_at", null: false
43 end
44
38 create_table "pokeviewer_abilities", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" do |t| 45 create_table "pokeviewer_abilities", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" do |t|
39 t.string "name", null: false 46 t.string "name", null: false
40 t.string "description", null: false 47 t.string "description", null: false