blogg 0.0.3 → 0.1.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.
Files changed (54) hide show
  1. checksums.yaml +5 -13
  2. data/app/assets/images/blogg/fallback/about-bg.jpg +0 -0
  3. data/app/assets/images/blogg/fallback/contact-bg.jpg +0 -0
  4. data/app/assets/images/blogg/fallback/default-image-header.jpg +0 -0
  5. data/app/assets/images/blogg/fallback/post-bg.jpg +0 -0
  6. data/app/assets/images/blogg/fallback/post-sample-image.jpg +0 -0
  7. data/app/assets/javascripts/blogg/application.js +2 -13
  8. data/app/assets/javascripts/blogg/bootstrap.js +2363 -0
  9. data/app/assets/javascripts/blogg/scripts.js.coffee +23 -0
  10. data/app/assets/stylesheets/blogg/application.sass +3 -0
  11. data/app/assets/stylesheets/blogg/bootstrap.css +6760 -0
  12. data/app/assets/stylesheets/blogg/style.sass +345 -0
  13. data/app/controllers/blogg/application_controller.rb +12 -0
  14. data/app/controllers/blogg/posts_controller.rb +21 -75
  15. data/app/helpers/blogg/application_helper.rb +29 -0
  16. data/app/models/blogg/post.rb +42 -1
  17. data/app/models/user_ability.rb +37 -0
  18. data/app/uploaders/blogg/image_uploader.rb +26 -0
  19. data/app/views/blogg/posts/_form.html.haml +46 -0
  20. data/app/views/blogg/posts/edit.html.haml +6 -0
  21. data/app/views/blogg/posts/index.html.haml +30 -0
  22. data/app/views/blogg/posts/new.html.haml +6 -0
  23. data/app/views/blogg/posts/show.html.haml +38 -0
  24. data/app/views/blogg/shared/_disqus_thread.html.haml +17 -0
  25. data/app/views/blogg/shared/_flash_messages.html.haml +5 -0
  26. data/app/views/blogg/shared/_footer.html.haml +6 -0
  27. data/app/views/blogg/shared/_header.html.haml +11 -0
  28. data/app/views/blogg/shared/_nav.html.haml +15 -0
  29. data/app/views/blogg/shared/_posted_by.html.haml +1 -0
  30. data/app/views/blogg/shared/_social.html.haml +7 -0
  31. data/app/views/layouts/blogg/application.haml +34 -0
  32. data/config/blogg/initializers/meta_tags.rb +6 -0
  33. data/config/locales/blogg.en.yml +21 -0
  34. data/config/locales/blogg.ru.yml +21 -0
  35. data/config/locales/blogg.uk.yml +21 -0
  36. data/db/migrate/20151127175927_add_author_id_to_blogg_posts.rb +5 -0
  37. data/db/migrate/20151128104131_add_subtitle_to_blogg_posts.rb +5 -0
  38. data/db/migrate/20151130232512_add_image_to_blogg_posts.rb +5 -0
  39. data/db/migrate/20151204181631_add_slug_to_blogg_post.rb +6 -0
  40. data/db/migrate/20151206194451_add_static_to_blogg_posts.rb +5 -0
  41. data/lib/blogg/engine.rb +1 -0
  42. data/lib/blogg/version.rb +1 -1
  43. data/lib/blogg.rb +40 -0
  44. metadata +229 -24
  45. data/app/assets/javascripts/blogg/posts.js +0 -2
  46. data/app/assets/stylesheets/blogg/application.css +0 -13
  47. data/app/assets/stylesheets/blogg/posts.css +0 -4
  48. data/app/assets/stylesheets/scaffold.css +0 -56
  49. data/app/views/blogg/posts/_form.html.erb +0 -25
  50. data/app/views/blogg/posts/edit.html.erb +0 -6
  51. data/app/views/blogg/posts/index.html.erb +0 -25
  52. data/app/views/blogg/posts/new.html.erb +0 -5
  53. data/app/views/blogg/posts/show.html.erb +0 -15
  54. data/app/views/layouts/blogg/application.html.erb +0 -14
@@ -0,0 +1,345 @@
1
+ /*!
2
+ * Clean Blog v1.0.0 (http://startbootstrap.com)
3
+ * Copyright 2014 Start Bootstrap
4
+ * Licensed under Apache 2.0 (https://github.com/IronSummitMedia/startbootstrap/blob/gh-pages/LICENSE)
5
+
6
+ body
7
+ font-family: 'Lora', 'Times New Roman', serif
8
+ font-size: 20px
9
+ color: #404040
10
+
11
+ p
12
+ line-height: 1.5
13
+ margin: 30px 0
14
+ a
15
+ text-decoration: underline
16
+
17
+ h1, h2, h3, h4, h5, h6
18
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif
19
+ font-weight: 800
20
+
21
+ a
22
+ color: #404040
23
+ &:hover, &:focus
24
+ color: #0085a1
25
+ img
26
+ &:hover, &:focus
27
+ cursor: zoom-in
28
+
29
+ blockquote
30
+ color: #808080
31
+ font-style: italic
32
+ p
33
+ margin-top: 0
34
+
35
+ hr.small
36
+ max-width: 100px
37
+ margin: 15px auto
38
+ border-width: 4px
39
+ border-color: white
40
+
41
+ .post-actions >
42
+ a
43
+ text-decoration: none
44
+
45
+ form
46
+ .form-group
47
+ .help-block
48
+ font-size: medium
49
+ a
50
+ text-decoration: none
51
+
52
+
53
+ .navbar-custom
54
+ position: absolute
55
+ top: 0
56
+ left: 0
57
+ width: 100%
58
+ z-index: 3
59
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif
60
+ .navbar-brand
61
+ font-weight: 800
62
+ .nav li a
63
+ text-transform: uppercase
64
+ font-size: 12px
65
+ font-weight: 800
66
+ letter-spacing: 1px
67
+
68
+ @media only screen and (min-width: 768px)
69
+ .navbar-custom
70
+ background: transparent
71
+ border-bottom: 1px solid transparent
72
+ .navbar-brand
73
+ color: white
74
+ padding: 20px
75
+ &:hover, &:focus
76
+ color: rgba(255, 255, 255, 0.8)
77
+ .nav li a
78
+ color: white
79
+ padding: 20px
80
+ &:hover, &:focus
81
+ color: rgba(255, 255, 255, 0.8)
82
+
83
+ @media only screen and (min-width: 1170px)
84
+ .navbar-custom
85
+ -webkit-transition: background-color 0.3s
86
+ -moz-transition: background-color 0.3s
87
+ transition: background-color 0.3s
88
+ /* Force Hardware Acceleration in WebKit
89
+ -webkit-transform: translate3d(0, 0, 0)
90
+ -moz-transform: translate3d(0, 0, 0)
91
+ -ms-transform: translate3d(0, 0, 0)
92
+ -o-transform: translate3d(0, 0, 0)
93
+ transform: translate3d(0, 0, 0)
94
+ -webkit-backface-visibility: hidden
95
+ backface-visibility: hidden
96
+ &.is-fixed
97
+ /* when the user scrolls down, we hide the header right above the viewport
98
+ position: fixed
99
+ top: -61px
100
+ background-color: rgba(255, 255, 255, 0.9)
101
+ border-bottom: 1px solid #f2f2f2
102
+ -webkit-transition: -webkit-transform 0.3s
103
+ -moz-transition: -moz-transform 0.3s
104
+ transition: transform 0.3s
105
+ .navbar-brand
106
+ color: #404040
107
+ &:hover, &:focus
108
+ color: #0085a1
109
+ .nav li a
110
+ color: #404040
111
+ &:hover, &:focus
112
+ color: #0085a1
113
+ &.is-visible
114
+ /* if the user changes the scrolling direction, we show the header
115
+ -webkit-transform: translate3d(0, 100%, 0)
116
+ -moz-transform: translate3d(0, 100%, 0)
117
+ -ms-transform: translate3d(0, 100%, 0)
118
+ -o-transform: translate3d(0, 100%, 0)
119
+ transform: translate3d(0, 100%, 0)
120
+
121
+ .intro-header
122
+ background-color: #808080
123
+ background: no-repeat center center
124
+ background-attachment: scroll
125
+ -webkit-background-size: cover
126
+ -moz-background-size: cover
127
+ background-size: cover
128
+ -o-background-size: cover
129
+ margin-bottom: 50px
130
+ .site-heading, .post-heading, .page-heading
131
+ padding: 100px 0 50px
132
+ color: white
133
+ .site-heading, .page-heading
134
+ text-align: center
135
+ .site-heading h1, .page-heading h1
136
+ margin-top: 0
137
+ font-size: 50px
138
+ .site-heading .subheading, .page-heading .subheading
139
+ font-size: 24px
140
+ line-height: 1.1
141
+ display: block
142
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif
143
+ font-weight: 300
144
+ margin: 10px 0 0
145
+ .post-heading
146
+ h1
147
+ font-size: 35px
148
+ .subheading, .meta
149
+ line-height: 1.1
150
+ display: block
151
+ .subheading
152
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif
153
+ font-size: 24px
154
+ margin: 10px 0 30px
155
+ font-weight: 600
156
+ .meta
157
+ font-family: 'Lora', 'Times New Roman', serif
158
+ font-style: italic
159
+ font-weight: 300
160
+ font-size: 20px
161
+ a
162
+ color: white
163
+
164
+ @media only screen and (min-width: 768px)
165
+ .intro-header
166
+ .site-heading, .post-heading, .page-heading
167
+ padding: 150px 0
168
+
169
+ @media only screen and (min-width: 768px)
170
+ .intro-header
171
+ .site-heading h1, .page-heading h1
172
+ font-size: 80px
173
+
174
+ @media only screen and (min-width: 768px)
175
+ .intro-header .post-heading
176
+ h1
177
+ font-size: 55px
178
+ .subheading
179
+ font-size: 30px
180
+
181
+ .post-preview >
182
+ a
183
+ color: #404040
184
+ &:hover, &:focus
185
+ text-decoration: none
186
+ color: #0085a1
187
+ >
188
+ .post-title
189
+ font-size: 30px
190
+ margin-top: 30px
191
+ margin-bottom: 10px
192
+ .post-subtitle
193
+ margin: 0
194
+ font-weight: 300
195
+ margin-bottom: 10px
196
+ .post-meta
197
+ color: #808080
198
+ font-size: 18px
199
+ font-style: italic
200
+ margin-top: 0
201
+ a
202
+ text-decoration: none
203
+ color: #808080
204
+ &:hover, &:focus
205
+ color: #0085a1
206
+ text-decoration: underline
207
+
208
+ @media only screen and (min-width: 768px)
209
+ .post-preview > a > .post-title
210
+ font-size: 36px
211
+
212
+ .section-heading
213
+ font-size: 36px
214
+ margin-top: 60px
215
+ font-weight: 700
216
+
217
+ .caption
218
+ text-align: center
219
+ font-size: 14px
220
+ padding: 10px
221
+ font-style: italic
222
+ margin: 0
223
+ display: block
224
+ border-bottom-right-radius: 5px
225
+ border-bottom-left-radius: 5px
226
+
227
+ footer
228
+ padding: 50px 0 65px
229
+ .list-inline
230
+ margin: 0
231
+ padding: 0
232
+ .copyright
233
+ font-size: 14px
234
+ text-align: center
235
+ margin-bottom: 0
236
+
237
+ .floating-label-form-group
238
+ font-size: 14px
239
+ position: relative
240
+ margin-bottom: 0
241
+ padding-bottom: 0.5em
242
+ border-bottom: 1px solid #eeeeee
243
+ input, textarea
244
+ z-index: 1
245
+ position: relative
246
+ padding-right: 0
247
+ padding-left: 0
248
+ border: none
249
+ border-radius: 0
250
+ font-size: 1.5em
251
+ background: none
252
+ box-shadow: none !important
253
+ resize: none
254
+ label
255
+ display: block
256
+ z-index: 0
257
+ position: relative
258
+ top: 2em
259
+ margin: 0
260
+ font-size: 0.85em
261
+ line-height: 1.764705882em
262
+ vertical-align: middle
263
+ vertical-align: baseline
264
+ opacity: 0
265
+ -webkit-transition: top 0.3s ease,opacity 0.3s ease
266
+ -moz-transition: top 0.3s ease,opacity 0.3s ease
267
+ -ms-transition: top 0.3s ease,opacity 0.3s ease
268
+ transition: top 0.3s ease,opacity 0.3s ease
269
+ &:not(:first-child)
270
+ padding-left: 14px
271
+ border-left: 1px solid #eeeeee
272
+
273
+ .floating-label-form-group-with-value label
274
+ top: 0
275
+ opacity: 1
276
+
277
+ .floating-label-form-group-with-focus label
278
+ color: #0085a1
279
+
280
+ form .row:first-child .floating-label-form-group
281
+ border-top: 1px solid #eeeeee
282
+
283
+ .btn
284
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif
285
+ text-transform: uppercase
286
+ font-size: 14px
287
+ font-weight: 800
288
+ letter-spacing: 1px
289
+ border-radius: 0
290
+ padding: 15px 25px
291
+
292
+ .btn-lg
293
+ font-size: 16px
294
+ padding: 25px 35px
295
+
296
+ .btn-default
297
+ &:hover, &:focus
298
+ background-color: #0085a1
299
+ border: 1px solid #0085a1
300
+ color: white
301
+
302
+ .pager
303
+ margin: 20px 0 0
304
+ text-align: inherit
305
+ li >
306
+ a, span
307
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif
308
+ text-transform: uppercase
309
+ font-size: 14px
310
+ font-weight: 800
311
+ letter-spacing: 1px
312
+ padding: 15px 25px
313
+ background-color: white
314
+ border-radius: 0
315
+ a
316
+ &:hover, &:focus
317
+ color: white
318
+ background-color: #0085a1
319
+ border: 1px solid #0085a1
320
+ .disabled >
321
+ a
322
+ color: #808080
323
+ background-color: #404040
324
+ cursor: not-allowed
325
+ &:hover, &:focus
326
+ color: #808080
327
+ background-color: #404040
328
+ cursor: not-allowed
329
+ span
330
+ color: #808080
331
+ background-color: #404040
332
+ cursor: not-allowed
333
+
334
+ \::-moz-selection, ::selection
335
+ color: white
336
+ text-shadow: none
337
+ background: #0085a1
338
+
339
+ img
340
+ &::selection, &::-moz-selection
341
+ color: white
342
+ background: transparent
343
+
344
+ body
345
+ webkit-tap-highlight-color: #0085a1
@@ -1,4 +1,16 @@
1
1
  module Blogg
2
2
  class ApplicationController < ActionController::Base
3
+
4
+ rescue_from CanCan::AccessDenied do |exception|
5
+ respond_to do |format|
6
+ format.html { redirect_to root_url, :alert => exception.message }
7
+ end
8
+ end
9
+
10
+ # layout Blogg.layout
11
+
12
+ def current_ability
13
+ @current_ability ||= UserAbility.new(current_user)
14
+ end
3
15
  end
4
16
  end
@@ -2,86 +2,32 @@ require_dependency "blogg/application_controller"
2
2
 
3
3
  module Blogg
4
4
  class PostsController < ApplicationController
5
- # GET /posts
6
- # GET /posts.json
7
- def index
8
- @posts = Post.all
9
-
10
- respond_to do |format|
11
- format.html # index.html.erb
12
- format.json { render json: @posts }
13
- end
14
- end
15
-
16
- # GET /posts/1
17
- # GET /posts/1.json
18
- def show
19
- @post = Post.find(params[:id])
20
-
21
- respond_to do |format|
22
- format.html # show.html.erb
23
- format.json { render json: @post }
24
- end
25
- end
26
-
27
- # GET /posts/new
28
- # GET /posts/new.json
29
- def new
30
- @post = Post.new
31
-
32
- respond_to do |format|
33
- format.html # new.html.erb
34
- format.json { render json: @post }
35
- end
5
+
6
+ respond_to :html
7
+ inherit_resources
8
+
9
+ load_and_authorize_resource
10
+ skip_authorize_resource :only => [:index, :show]
11
+
12
+ def destroy
13
+ destroy!(:notice => "Blog post was successfully deleted.")
36
14
  end
37
-
38
- # GET /posts/1/edit
39
- def edit
40
- @post = Post.find(params[:id])
15
+
16
+ def update
17
+ update!(:notice => "Blog post was successfully updated.")
41
18
  end
42
-
43
- # POST /posts
44
- # POST /posts.json
19
+
45
20
  def create
46
21
  @post = Post.new(params[:post])
47
-
48
- respond_to do |format|
49
- if @post.save
50
- format.html { redirect_to @post, notice: 'Post was successfully created.' }
51
- format.json { render json: @post, status: :created, location: @post }
52
- else
53
- format.html { render action: "new" }
54
- format.json { render json: @post.errors, status: :unprocessable_entity }
55
- end
56
- end
57
- end
58
-
59
- # PUT /posts/1
60
- # PUT /posts/1.json
61
- def update
62
- @post = Post.find(params[:id])
63
-
64
- respond_to do |format|
65
- if @post.update_attributes(params[:post])
66
- format.html { redirect_to @post, notice: 'Post was successfully updated.' }
67
- format.json { head :no_content }
68
- else
69
- format.html { render action: "edit" }
70
- format.json { render json: @post.errors, status: :unprocessable_entity }
71
- end
72
- end
22
+ @post.author = current_user
23
+ create!(:notice => "Blog post was successfully created.")
73
24
  end
74
-
75
- # DELETE /posts/1
76
- # DELETE /posts/1.json
77
- def destroy
78
- @post = Post.find(params[:id])
79
- @post.destroy
80
-
81
- respond_to do |format|
82
- format.html { redirect_to posts_url }
83
- format.json { head :no_content }
84
- end
25
+
26
+ protected
27
+
28
+ def collection
29
+ end_of_association_chain.articles
85
30
  end
31
+
86
32
  end
87
33
  end
@@ -1,4 +1,33 @@
1
+ require 'redcarpet'
2
+ require 'rouge'
3
+ require 'rouge/plugins/redcarpet'
4
+
1
5
  module Blogg
2
6
  module ApplicationHelper
7
+
8
+ class HTML < Redcarpet::Render::HTML
9
+ include Rouge::Plugins::Redcarpet
10
+ def rouge_formatter(opts={})
11
+ opts ={
12
+ line_numbers: true,
13
+ wrap: true,
14
+ }
15
+ Rouge::Formatters::HTML.new(opts)
16
+ end
17
+ end
18
+
19
+ def markdown(text)
20
+ renderer = HTML.new(hard_wrap: true, filter_html: true)
21
+ options = {
22
+ autolink: true,
23
+ no_intra_emphasis: true,
24
+ fenced_code_blocks: true,
25
+ lax_html_blocks: true,
26
+ strikethrough: true,
27
+ superscript: true
28
+ }
29
+ Redcarpet::Markdown.new(renderer, options).render(text).html_safe
30
+ end
31
+
3
32
  end
4
33
  end
@@ -1,5 +1,46 @@
1
+ require "babosa"
2
+
1
3
  module Blogg
2
4
  class Post < ActiveRecord::Base
3
- attr_accessible :text, :title
5
+
6
+ # Use FriendlyId for pretty urls
7
+ extend FriendlyId
8
+ friendly_id :title, use: :slugged
9
+
10
+ attr_accessible :text, :title, :subtitle, :image, :image_cache, :remove_image, :static
11
+ belongs_to :author, :class_name => Blogg.user_class
12
+ validates_presence_of :text, :title, :subtitle, :author
13
+
14
+ scope :static, where(static: true)
15
+ scope :articles, where(static: false)
16
+
17
+ mount_uploader :image, Blogg::ImageUploader
18
+
19
+ # Override FriendlyId method to transliterate slug with Babosa gem
20
+ def normalize_friendly_id(value)
21
+ case I18n.locale
22
+ when :ru, :uk
23
+ value.to_s.to_slug.normalize(transliterations: :russian).to_s
24
+ else
25
+ value.to_s.to_slug.normalize.to_s
26
+ end
27
+ end
28
+
29
+ def is_static?
30
+ static
31
+ end
32
+
33
+ def is_article?
34
+ !static
35
+ end
36
+
37
+ def next
38
+ self.class.articles.where("id > ?", id).first
39
+ end
40
+
41
+ def prev
42
+ self.class.articles.where("id < ?", id).last
43
+ end
44
+
4
45
  end
5
46
  end
@@ -0,0 +1,37 @@
1
+ class UserAbility
2
+ include CanCan::Ability
3
+
4
+ def initialize(user)
5
+
6
+ user ||= User.new
7
+
8
+ unless user.new_record?
9
+ can :manage, Blogg::Post#, :author_id => user.id
10
+ else
11
+ can :read, Blogg::Post
12
+ end
13
+
14
+ # Define abilities for the passed in user here. For example:
15
+ #
16
+ # user ||= User.new # guest user (not logged in)
17
+ # if user.admin?
18
+ # can :manage, :all
19
+ # else
20
+ # can :read, :all
21
+ # end
22
+ #
23
+ # The first argument to `can` is the action you are giving the user permission to do.
24
+ # If you pass :manage it will apply to every action. Other common actions here are
25
+ # :read, :create, :update and :destroy.
26
+ #
27
+ # The second argument is the resource the user can perform the action on. If you pass
28
+ # :all it will apply to every resource. Otherwise pass a Ruby class of the resource.
29
+ #
30
+ # The third argument is an optional hash of conditions to further filter the objects.
31
+ # For example, here the user can only update published articles.
32
+ #
33
+ # can :update, Article, :published => true
34
+ #
35
+ # See the wiki for details: https://github.com/ryanb/cancan/wiki/Defining-Abilities
36
+ end
37
+ end
@@ -0,0 +1,26 @@
1
+ class Blogg::ImageUploader < CarrierWave::Uploader::Base
2
+
3
+ include CarrierWave::MiniMagick
4
+
5
+ include Sprockets::Helpers::RailsHelper
6
+ include Sprockets::Helpers::IsolatedHelper
7
+
8
+ CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
9
+
10
+ storage :file
11
+
12
+ def store_dir
13
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
14
+ end
15
+
16
+ def extension_white_list
17
+ %w(jpg jpeg png)
18
+ end
19
+
20
+ def default_url
21
+ ActionController::Base.helpers.asset_path("blogg/fallback/" + [version_name, "default-image-header.jpg"].compact.join('_'))
22
+ end
23
+
24
+ process :resize_to_fit => [1000, 600]
25
+
26
+ end
@@ -0,0 +1,46 @@
1
+ = form_for resource do |f|
2
+ - if resource.errors.any?
3
+ #error_explanation
4
+ %h2
5
+ = pluralize(@post.errors.count, "error")
6
+ prohibited this post from being saved:
7
+ %ul
8
+ - @post.errors.full_messages.each do |msg|
9
+ %li= msg
10
+ .form-group
11
+ = f.label :title
12
+ = f.text_field :title, class: 'form-control'
13
+ .form-group
14
+ = f.label :subtitle
15
+ = f.text_field :subtitle, class: 'form-control'
16
+ .form-group
17
+ = f.label :text
18
+ = f.text_area :text, class: 'form-control'
19
+ %p.help-block.text-right
20
+ = link_to 'https://daringfireball.net/projects/markdown/basics', target: '_blank' do
21
+ Markdown is supported
22
+ %i.fa.fa-info-circle
23
+ .form-group
24
+ = f.label :image
25
+ .row
26
+ .col-md-6
27
+ %br
28
+ = f.file_field :image
29
+ = f.hidden_field :image_cache
30
+ .col-md-6
31
+ - if @post.image?
32
+ = image_tag(@post.image_url, class: 'img-responsive')
33
+ .checkbox
34
+ %label
35
+ = f.check_box :remove_image
36
+ Remove existing image
37
+ .form-group
38
+ .checkbox
39
+ %label
40
+ = f.check_box :static
41
+ Static page
42
+ %hr
43
+
44
+ = f.submit 'Save changes', class: 'btn btn-success'
45
+ .pull-right
46
+ = link_to 'Cancel', resource, class: 'btn btn-warning'
@@ -0,0 +1,6 @@
1
+ = render 'blogg/shared/header', post: resource
2
+ .container
3
+ .row
4
+ .col-lg-8.col-lg-offset-2.col-md-10.col-md-offset-1
5
+ %h1 Editing post
6
+ = render 'form'
@@ -0,0 +1,30 @@
1
+ = render 'blogg/shared/header', post: nil
2
+ .container
3
+ .row
4
+ .col-lg-8.col-lg-offset-2.col-md-10.col-md-offset-1
5
+ = render 'blogg/shared/flash_messages'
6
+ - collection.each do |post|
7
+ .post-preview
8
+ = link_to post do
9
+ %h2.post-title
10
+ = post.title
11
+ %h3.post-subtitle
12
+ = post.subtitle
13
+ %p.post-meta
14
+ = render 'blogg/shared/posted_by', post: post
15
+ - if Blogg.disqus
16
+ |
17
+ %i.fa.fa-comments-o.fa-fw.text-small
18
+ = link_to 'Comments', post_url(post, anchor: "disqus_thread"), "data-disqus-identifier": "post_#{post.created_at.to_i}"
19
+ - if can? :manage, post
20
+ %p.post-meta
21
+ %i.fa.fa-edit
22
+ = link_to t('blogg.posts.actions.edit'), edit_post_path(post)
23
+ %i.fa.fa-trash-o
24
+ = link_to t('blogg.posts.actions.delete'), post, method: :delete, data: { confirm: 'Are you sure?' }
25
+ %i.fa.fa-file-o
26
+ = link_to t('blogg.posts.actions.new'), new_post_path
27
+ %hr/
28
+ -# %ul.pager
29
+ -# %li.next
30
+ -# %a{:href => "#"} Older Posts →
@@ -0,0 +1,6 @@
1
+ = render 'blogg/shared/header', post: nil
2
+ .container
3
+ .row
4
+ .col-lg-8.col-lg-offset-2.col-md-10.col-md-offset-1
5
+ %h1 New post
6
+ = render 'form'