notee 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/MIT-LICENSE +20 -0
- data/Rakefile +44 -4
- data/app/assets/javascripts/application.js +14 -0
- data/app/assets/javascripts/notee/application.js +47366 -0
- data/app/assets/stylesheets/notee/application.css +15 -0
- data/app/assets/stylesheets/notee/images.css +4 -0
- data/app/assets/stylesheets/notee/posts.css +4 -0
- data/app/assets/stylesheets/notee/preview.scss +214 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/controllers/notee/application_controller.rb +24 -0
- data/app/controllers/notee/categories_controller.rb +55 -0
- data/app/controllers/notee/images_controller.rb +48 -0
- data/app/controllers/notee/posts_controller.rb +75 -0
- data/app/controllers/notee/tokens_controller.rb +30 -0
- data/app/helpers/notee/application_helper.rb +4 -0
- data/app/helpers/notee/categories_helper.rb +4 -0
- data/app/helpers/notee/images_helper.rb +4 -0
- data/app/helpers/notee/posts_helper.rb +4 -0
- data/app/models/notee/category.rb +4 -0
- data/app/models/notee/image.rb +24 -0
- data/app/models/notee/post.rb +4 -0
- data/app/models/notee/token.rb +18 -0
- data/app/views/layouts/notee/application.html.erb +14 -0
- data/app/views/notee/posts/notee.html.erb +1 -0
- data/app/views/notee/tokens/new.html.erb +5 -0
- data/config/routes.rb +12 -0
- data/db/migrate/20160605141437_create_notee_posts.rb +29 -0
- data/db/migrate/20160605141510_create_notee_categories.rb +15 -0
- data/db/migrate/20160605141547_create_notee_images.rb +14 -0
- data/db/migrate/20160608102012_create_notee_tokens.rb +12 -0
- data/lib/notee.rb +4 -2
- data/lib/notee/configuration.rb +28 -0
- data/lib/notee/engine.rb +13 -0
- data/lib/notee/version.rb +1 -1
- data/lib/tasks/notee_tasks.rake +71 -0
- data/test/controllers/notee/categories_controller_test.rb +52 -0
- data/test/controllers/notee/images_controller_test.rb +52 -0
- data/test/controllers/notee/posts_controller_test.rb +52 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +26 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +41 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +42 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config/secrets.yml +23 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/schema.rb +16 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +3259 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/notee/categories.yml +13 -0
- data/test/fixtures/notee/images.yml +7 -0
- data/test/fixtures/notee/posts.yml +23 -0
- data/test/fixtures/notee/tokens.yml +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/models/notee/category_test.rb +9 -0
- data/test/models/notee/image_test.rb +9 -0
- data/test/models/notee/post_test.rb +9 -0
- data/test/models/notee/token_test.rb +9 -0
- data/test/notee_test.rb +7 -0
- data/test/test_helper.rb +20 -0
- metadata +195 -33
- data/.gitignore +0 -10
- data/.idea/.name +0 -1
- data/.idea/misc.xml +0 -14
- data/.idea/modules.xml +0 -8
- data/.idea/notee.iml +0 -17
- data/.idea/vcs.xml +0 -6
- data/.idea/workspace.xml +0 -335
- data/.rspec +0 -2
- data/.travis.yml +0 -4
- data/CODE_OF_CONDUCT.md +0 -13
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -21
- data/README.md +0 -41
- data/bin/console +0 -14
- data/bin/setup +0 -7
- data/lib/generators/notee/install/install_generator.rb +0 -17
- data/notee.gemspec +0 -28
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
|
3
|
+
* listed below.
|
|
4
|
+
*
|
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
|
6
|
+
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
|
7
|
+
*
|
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any styles
|
|
10
|
+
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
|
11
|
+
* file per style scope.
|
|
12
|
+
*
|
|
13
|
+
*= require_tree .
|
|
14
|
+
*= require_self
|
|
15
|
+
*/
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Place all the styles related to the matching controller here.
|
|
3
|
+
They will automatically be included in application.css.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#preview{
|
|
7
|
+
img{
|
|
8
|
+
width: 100%;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/*
|
|
14
|
+
|
|
15
|
+
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
|
|
16
|
+
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
.hljs {
|
|
20
|
+
display: block;
|
|
21
|
+
overflow-x: auto;
|
|
22
|
+
padding: 0.5em;
|
|
23
|
+
color: #333;
|
|
24
|
+
background: #f8f8f8;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.hljs-comment,
|
|
28
|
+
.hljs-quote {
|
|
29
|
+
color: #998;
|
|
30
|
+
font-style: italic;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.hljs-keyword,
|
|
34
|
+
.hljs-selector-tag,
|
|
35
|
+
.hljs-subst {
|
|
36
|
+
color: #333;
|
|
37
|
+
font-weight: bold;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.hljs-number,
|
|
41
|
+
.hljs-literal,
|
|
42
|
+
.hljs-variable,
|
|
43
|
+
.hljs-template-variable,
|
|
44
|
+
.hljs-tag .hljs-attr {
|
|
45
|
+
color: #008080;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.hljs-string,
|
|
49
|
+
.hljs-doctag {
|
|
50
|
+
color: #d14;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.hljs-title,
|
|
54
|
+
.hljs-section,
|
|
55
|
+
.hljs-selector-id {
|
|
56
|
+
color: #900;
|
|
57
|
+
font-weight: bold;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.hljs-subst {
|
|
61
|
+
font-weight: normal;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.hljs-type,
|
|
65
|
+
.hljs-class .hljs-title {
|
|
66
|
+
color: #458;
|
|
67
|
+
font-weight: bold;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.hljs-tag,
|
|
71
|
+
.hljs-name,
|
|
72
|
+
.hljs-attribute {
|
|
73
|
+
color: #000080;
|
|
74
|
+
font-weight: normal;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.hljs-regexp,
|
|
78
|
+
.hljs-link {
|
|
79
|
+
color: #009926;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.hljs-symbol,
|
|
83
|
+
.hljs-bullet {
|
|
84
|
+
color: #990073;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.hljs-built_in,
|
|
88
|
+
.hljs-builtin-name {
|
|
89
|
+
color: #0086b3;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.hljs-meta {
|
|
93
|
+
color: #999;
|
|
94
|
+
font-weight: bold;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.hljs-deletion {
|
|
98
|
+
background: #fdd;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.hljs-addition {
|
|
102
|
+
background: #dfd;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.hljs-emphasis {
|
|
106
|
+
font-style: italic;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.hljs-strong {
|
|
110
|
+
font-weight: bold;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/*
|
|
114
|
+
|
|
115
|
+
vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid)
|
|
116
|
+
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
/*background color*/
|
|
120
|
+
.hljs {
|
|
121
|
+
display: block;
|
|
122
|
+
overflow-x: auto;
|
|
123
|
+
padding: 0.5em;
|
|
124
|
+
background: #1d1f21;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/*selection color*/
|
|
128
|
+
.hljs::selection,
|
|
129
|
+
.hljs span::selection {
|
|
130
|
+
background: #373b41;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.hljs::-moz-selection,
|
|
134
|
+
.hljs span::-moz-selection {
|
|
135
|
+
background: #373b41;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/*foreground color*/
|
|
139
|
+
.hljs {
|
|
140
|
+
color: #c5c8c6;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/*color: fg_yellow*/
|
|
144
|
+
.hljs-title,
|
|
145
|
+
.hljs-name {
|
|
146
|
+
color: #f0c674;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/*color: fg_comment*/
|
|
150
|
+
.hljs-comment,
|
|
151
|
+
.hljs-meta,
|
|
152
|
+
.hljs-meta .hljs-keyword {
|
|
153
|
+
color: #707880;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/*color: fg_red*/
|
|
157
|
+
.hljs-number,
|
|
158
|
+
.hljs-symbol,
|
|
159
|
+
.hljs-literal,
|
|
160
|
+
.hljs-deletion,
|
|
161
|
+
.hljs-link {
|
|
162
|
+
color: #cc6666
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/*color: fg_green*/
|
|
166
|
+
.hljs-string,
|
|
167
|
+
.hljs-doctag,
|
|
168
|
+
.hljs-addition,
|
|
169
|
+
.hljs-regexp,
|
|
170
|
+
.hljs-selector-attr,
|
|
171
|
+
.hljs-selector-pseudo {
|
|
172
|
+
color: #b5bd68;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/*color: fg_purple*/
|
|
176
|
+
.hljs-attribute,
|
|
177
|
+
.hljs-code,
|
|
178
|
+
.hljs-selector-id {
|
|
179
|
+
color: #b294bb;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/*color: fg_blue*/
|
|
183
|
+
.hljs-keyword,
|
|
184
|
+
.hljs-selector-tag,
|
|
185
|
+
.hljs-bullet,
|
|
186
|
+
.hljs-tag {
|
|
187
|
+
color: #81a2be;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/*color: fg_aqua*/
|
|
191
|
+
.hljs-subst,
|
|
192
|
+
.hljs-variable,
|
|
193
|
+
.hljs-template-tag,
|
|
194
|
+
.hljs-template-variable {
|
|
195
|
+
color: #8abeb7;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/*color: fg_orange*/
|
|
199
|
+
.hljs-type,
|
|
200
|
+
.hljs-built_in,
|
|
201
|
+
.hljs-builtin-name,
|
|
202
|
+
.hljs-quote,
|
|
203
|
+
.hljs-section,
|
|
204
|
+
.hljs-selector-class {
|
|
205
|
+
color: #de935f;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.hljs-emphasis {
|
|
209
|
+
font-style: italic;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.hljs-strong {
|
|
213
|
+
font-weight: bold;
|
|
214
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
body { background-color: #fff; color: #333; }
|
|
2
|
+
|
|
3
|
+
body, p, ol, ul, td {
|
|
4
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
|
5
|
+
font-size: 13px;
|
|
6
|
+
line-height: 18px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
pre {
|
|
10
|
+
background-color: #eee;
|
|
11
|
+
padding: 10px;
|
|
12
|
+
font-size: 11px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
a { color: #000; }
|
|
16
|
+
a:visited { color: #666; }
|
|
17
|
+
a:hover { color: #fff; background-color:#000; }
|
|
18
|
+
|
|
19
|
+
div.field, div.actions {
|
|
20
|
+
margin-bottom: 10px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#notice {
|
|
24
|
+
color: green;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.field_with_errors {
|
|
28
|
+
padding: 2px;
|
|
29
|
+
background-color: red;
|
|
30
|
+
display: table;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
#error_explanation {
|
|
34
|
+
width: 450px;
|
|
35
|
+
border: 2px solid red;
|
|
36
|
+
padding: 7px;
|
|
37
|
+
padding-bottom: 0;
|
|
38
|
+
margin-bottom: 20px;
|
|
39
|
+
background-color: #f0f0f0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
#error_explanation h2 {
|
|
43
|
+
text-align: left;
|
|
44
|
+
font-weight: bold;
|
|
45
|
+
padding: 5px 5px 5px 15px;
|
|
46
|
+
font-size: 12px;
|
|
47
|
+
margin: -7px;
|
|
48
|
+
margin-bottom: 0px;
|
|
49
|
+
background-color: #c00;
|
|
50
|
+
color: #fff;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
#error_explanation ul li {
|
|
54
|
+
font-size: 12px;
|
|
55
|
+
list-style: square;
|
|
56
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Notee
|
|
2
|
+
class ApplicationController < ActionController::Base
|
|
3
|
+
|
|
4
|
+
before_filter :set_access_token
|
|
5
|
+
before_filter :restrict_access_json
|
|
6
|
+
|
|
7
|
+
private
|
|
8
|
+
def set_access_token
|
|
9
|
+
p "TODO: add access_token to http header"
|
|
10
|
+
# request['Authorization: Token token'] = session[:access_token] if session[:access_token].present?
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def restrict_access_json
|
|
14
|
+
# authenticate_or_request_with_http_token do |token, options|
|
|
15
|
+
# Token.exists?(access_token: token)
|
|
16
|
+
# end
|
|
17
|
+
|
|
18
|
+
unless Token.exists?(access_token: session[:access_token])
|
|
19
|
+
raise
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
|
|
2
|
+
require_dependency "notee/application_controller"
|
|
3
|
+
|
|
4
|
+
module Notee
|
|
5
|
+
class CategoriesController < ApplicationController
|
|
6
|
+
before_action :set_category, only: [:update, :destroy]
|
|
7
|
+
|
|
8
|
+
def index
|
|
9
|
+
@categories = Category.all
|
|
10
|
+
render json: { status: 'success', categories: @categories}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def create
|
|
14
|
+
@category = Category.new(category_params)
|
|
15
|
+
respond_to do |format|
|
|
16
|
+
if @category.save
|
|
17
|
+
format.json { render json: @category, status: 200 }
|
|
18
|
+
else
|
|
19
|
+
format.json { render json: @category.errors, status: :unprocessable_entity }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def update
|
|
25
|
+
respond_to do |format|
|
|
26
|
+
if @category.update(category_params)
|
|
27
|
+
format.json { render json: @category, status: 200 }
|
|
28
|
+
else
|
|
29
|
+
format.json { render json: @category.errors, status: :unprocessable_entity }
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def destroy
|
|
35
|
+
respond_to do |format|
|
|
36
|
+
if @category.destroy
|
|
37
|
+
format.json { render json: @category, status: 200 }
|
|
38
|
+
else
|
|
39
|
+
format.json { render json: @category.errors, status: :internal_server_error }
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
def category_params
|
|
47
|
+
params.require(:category).permit(:name, :content, :slug, :status, :category_id, :thumbnail_id, :published_at, :seo_keyword, :seo_description)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def set_category
|
|
51
|
+
@category = Category.find_by(id: params[:id])
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
|
|
2
|
+
require_dependency "notee/application_controller"
|
|
3
|
+
|
|
4
|
+
module Notee
|
|
5
|
+
class ImagesController < ApplicationController
|
|
6
|
+
|
|
7
|
+
def index
|
|
8
|
+
@images = Image.all
|
|
9
|
+
render json: { status: 'success', images: @images}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def create
|
|
13
|
+
|
|
14
|
+
@image = Image.new
|
|
15
|
+
@image.file = params[:image]
|
|
16
|
+
|
|
17
|
+
respond_to do |format|
|
|
18
|
+
if @image.save
|
|
19
|
+
format.json { render json: @image, status: 200 }
|
|
20
|
+
else
|
|
21
|
+
format.json { render json: @image.errors, status: :unprocessable_entity }
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def destroy
|
|
27
|
+
return unless @del_img = Image.find_by(content: params[:name])
|
|
28
|
+
|
|
29
|
+
Image.transaction do
|
|
30
|
+
image_dir = Rails.root.to_s + "/public/notee/"
|
|
31
|
+
File.delete(image_dir + @del_img.content)
|
|
32
|
+
respond_to do |format|
|
|
33
|
+
if @del_img.destroy
|
|
34
|
+
format.json { render json: @del_img, status: 200 }
|
|
35
|
+
else
|
|
36
|
+
format.json { render json: @del_img.errors, status: :internal_server_error }
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
def image_params
|
|
45
|
+
params.require(:image).permit(:title, :content, :slug, :status, :image_id, :thumbnail_id, :published_at, :seo_keyword, :seo_description)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require_dependency "notee/application_controller"
|
|
2
|
+
|
|
3
|
+
module Notee
|
|
4
|
+
class PostsController < ApplicationController
|
|
5
|
+
|
|
6
|
+
before_action :set_post, only: [:show, :update, :destroy]
|
|
7
|
+
skip_before_filter :restrict_access_json, only: [:notee]
|
|
8
|
+
before_filter :restrict_access, only: [:notee]
|
|
9
|
+
|
|
10
|
+
def notee
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# GET /posts
|
|
14
|
+
def index
|
|
15
|
+
@posts = Post.all
|
|
16
|
+
render json: { status: 'success', posts: @posts}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# GET /posts/1
|
|
20
|
+
def show
|
|
21
|
+
render json: { status: 'success', post: @post}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# POST /posts
|
|
25
|
+
def create
|
|
26
|
+
@post = Post.new(post_params)
|
|
27
|
+
respond_to do |format|
|
|
28
|
+
if @post.save
|
|
29
|
+
format.json { render json: @post, status: 200 }
|
|
30
|
+
else
|
|
31
|
+
format.json { render json: @post.errors, status: :unprocessable_entity }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# PATCH/PUT /posts/1
|
|
37
|
+
def update
|
|
38
|
+
respond_to do |format|
|
|
39
|
+
if @post.update(post_params)
|
|
40
|
+
format.json { render json: @post, status: 200 }
|
|
41
|
+
else
|
|
42
|
+
format.json { render json: @post.errors, status: :unprocessable_entity }
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# DELETE /posts/1
|
|
48
|
+
def destroy
|
|
49
|
+
@post.destroy
|
|
50
|
+
render json: { status: 'success'}
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def set_post
|
|
56
|
+
@post = Post.find_by(id: params[:id])
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Only allow a trusted parameter "white list" through.
|
|
60
|
+
def post_params
|
|
61
|
+
params.require(:post).permit(:title, :content, :slug, :status, :category_id, :thumbnail_id, :published_at, :seo_keyword, :seo_description)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def restrict_access
|
|
65
|
+
# authenticate_or_request_with_http_token do |token, options|
|
|
66
|
+
# Token.exists?(access_token: token)
|
|
67
|
+
# end
|
|
68
|
+
|
|
69
|
+
unless Token.exists?(access_token: session[:access_token])
|
|
70
|
+
redirect_to new_token_path and return
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|