crowdblog 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/MIT-LICENSE +1 -1
- data/app/assets/javascripts/crowdblog/models/post.js.coffee +28 -0
- data/app/assets/javascripts/crowdblog/views/post_view.js.coffee +80 -45
- data/app/controllers/crowdblog/admin/posts_controller.rb +0 -2
- data/app/controllers/crowdblog/admin/transitions_controller.rb +21 -0
- data/app/controllers/crowdblog/application_controller.rb +1 -1
- data/app/models/crowdblog/post.rb +28 -4
- data/app/models/crowdblog/user.rb +13 -19
- data/app/presenters/crowdblog/post_presenter.rb +13 -0
- data/app/views/crowdblog/admin/posts/_post.html.slim +8 -2
- data/app/views/crowdblog/admin/posts/index.html.slim +9 -5
- data/app/views/crowdblog/application/_navbar.html.slim +0 -1
- data/app/views/layouts/crowdblog/admin/base.html.slim +1 -0
- data/config/routes.rb +5 -0
- data/crowdblog.gemspec +0 -4
- data/db/migrate/20121016063750_create_crowdblog_users.rb +8 -0
- data/lib/crowdblog.rb +8 -0
- data/lib/crowdblog/rspec/crowdblog_shared_examples.rb +25 -10
- data/lib/crowdblog/version.rb +1 -1
- data/spec/dummy/db/schema.rb +6 -1
- data/spec/{integration → features}/crowdblog_spec.rb +0 -0
- metadata +10 -10
- data/.rbenv-version +0 -1
- data/app/assets/javascripts/crowdblog/models/post.js.coffee.erb +0 -8
- data/app/controllers/crowdblog/admin/authors_controller.rb +0 -11
- data/app/views/crowdblog/admin/authors/index.html.slim +0 -18
data/.gitignore
CHANGED
data/MIT-LICENSE
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
class Crowdblog.Models.Post extends Backbone.Model
|
2
|
+
paramRoot: 'post'
|
3
|
+
|
4
|
+
url: ->
|
5
|
+
Crowdblog.adminPostsPath + '/' + @id
|
6
|
+
|
7
|
+
publish: ->
|
8
|
+
@performTransition 'publish', =>
|
9
|
+
@trigger 'post-published'
|
10
|
+
|
11
|
+
finish: ->
|
12
|
+
@performTransition 'finish', =>
|
13
|
+
@trigger 'post-finished'
|
14
|
+
|
15
|
+
review: ->
|
16
|
+
@performTransition 'review', =>
|
17
|
+
@trigger 'post-reviewed'
|
18
|
+
|
19
|
+
draft: ->
|
20
|
+
@performTransition 'draft', =>
|
21
|
+
@trigger 'post-drafted'
|
22
|
+
|
23
|
+
performTransition: (transition, success)->
|
24
|
+
$.ajax
|
25
|
+
type: 'POST'
|
26
|
+
url: "/admin/posts/#{@id}/#{transition}"
|
27
|
+
dataType: 'json'
|
28
|
+
success: success
|
@@ -1,52 +1,87 @@
|
|
1
1
|
class Crowdblog.Views.PostView extends Backbone.View
|
2
2
|
events:
|
3
|
-
'click
|
4
|
-
'click
|
3
|
+
'click .publish': 'publish'
|
4
|
+
'click .finish' : 'finish'
|
5
|
+
'click .review' : 'review'
|
6
|
+
'click .draft' : 'draft'
|
5
7
|
|
6
8
|
initialize: ->
|
7
|
-
@model
|
8
|
-
|
9
|
+
@model = new Crowdblog.Models.Post
|
10
|
+
@model.id = @postId()
|
11
|
+
@publishIndicator = @$el.find '.publish-status'
|
12
|
+
@observePost()
|
13
|
+
@model.trigger "post-#{@initialState()}"
|
9
14
|
|
10
|
-
|
11
|
-
@model.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
if @postIsPublished()
|
16
|
-
@model.save 'transition', 'draft', { success: @paintPostRow }
|
17
|
-
else
|
18
|
-
@model.save 'transition', 'publish', { success: @paintPostRow }
|
15
|
+
observePost: ->
|
16
|
+
@model.on 'post-published', @markPublished, @
|
17
|
+
@model.on 'post-finished', @markFinished, @
|
18
|
+
@model.on 'post-reviewed', @markReviewed, @
|
19
|
+
@model.on 'post-drafted', @markDrafted, @
|
19
20
|
|
20
21
|
postId: ->
|
21
|
-
@$el.
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
@
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
22
|
+
@$el.data 'post-id'
|
23
|
+
|
24
|
+
initialState: ->
|
25
|
+
@$el.data 'state'
|
26
|
+
|
27
|
+
publish: (e)->
|
28
|
+
@model.publish()
|
29
|
+
|
30
|
+
finish: (e)->
|
31
|
+
@model.finish()
|
32
|
+
|
33
|
+
review: (e)->
|
34
|
+
@model.review()
|
35
|
+
|
36
|
+
draft: (e) ->
|
37
|
+
@model.draft()
|
38
|
+
|
39
|
+
markPublished: ->
|
40
|
+
publish_button = @$el.find '.publish-btn'
|
41
|
+
review_button = @$el.find '.states .review'
|
42
|
+
publish_button.addClass 'btn-success'
|
43
|
+
publish_button.removeClass 'btn-danger'
|
44
|
+
publish_button.addClass 'draft'
|
45
|
+
publish_button.removeClass 'publish'
|
46
|
+
@setAsActive review_button
|
47
|
+
@setPublishIndicator 'published'
|
48
|
+
|
49
|
+
markFinished: ->
|
50
|
+
button = @$el.find '.states .finish'
|
51
|
+
@setAsActive button
|
52
|
+
@setPublishIndicator 'not_published'
|
53
|
+
|
54
|
+
markReviewed: ->
|
55
|
+
button = @$el.find '.states .review'
|
56
|
+
@setAsActive button
|
57
|
+
@setPublishIndicator 'reviewed'
|
58
|
+
|
59
|
+
markDrafted: ->
|
60
|
+
publish_button = @$el.find '.publish-btn'
|
61
|
+
button = @$el.find '.states .draft'
|
62
|
+
publish_button.addClass 'btn-danger'
|
63
|
+
publish_button.removeClass 'btn-success'
|
64
|
+
publish_button.addClass 'publish'
|
65
|
+
publish_button.removeClass 'draft'
|
66
|
+
@setAsActive button
|
67
|
+
@setPublishIndicator 'not_published'
|
68
|
+
|
69
|
+
setAsActive: (button)->
|
70
|
+
last_active = @$el.find '.states button'
|
71
|
+
last_active.removeClass 'active'
|
72
|
+
last_active.removeClass 'btn-primary'
|
73
|
+
button.addClass 'active btn-primary'
|
74
|
+
|
75
|
+
setPublishIndicator: (status)->
|
76
|
+
@publishIndicator.removeClass 'btn-warning btn-success btn-danger'
|
77
|
+
switch status
|
78
|
+
when 'reviewed'
|
79
|
+
@publishIndicator.addClass 'btn-warning'
|
80
|
+
@publishIndicator.html 'Reviewed'
|
81
|
+
when 'published'
|
82
|
+
@publishIndicator.addClass 'btn-success'
|
83
|
+
@publishIndicator.html 'Published'
|
84
|
+
else
|
85
|
+
@publishIndicator.addClass 'btn-danger'
|
86
|
+
@publishIndicator.html 'Not Published'
|
87
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Crowdblog
|
2
|
+
module Admin
|
3
|
+
class TransitionsController < Crowdblog::Admin::BaseController
|
4
|
+
respond_to :json
|
5
|
+
before_filter :load_post, only: [:create]
|
6
|
+
|
7
|
+
def create
|
8
|
+
namespace = '_as_publisher' if current_user.is_publisher?
|
9
|
+
@post.send "#{params[:transition]}#{namespace}"
|
10
|
+
respond_with @post, location: admin_post_url(@post)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def load_post
|
16
|
+
post = Post.scoped_for(current_user).find(params[:id])
|
17
|
+
@post = PostPresenter.new(post, current_user)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Crowdblog
|
2
|
-
class ApplicationController <
|
2
|
+
class ApplicationController < ::ApplicationController
|
3
3
|
def method_missing(method_name)
|
4
4
|
if method_name == :current_user
|
5
5
|
Rails.logger.warn("current_user in Crowdblog::ApplicationController should be overriden")
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Crowdblog
|
2
2
|
class Post < ActiveRecord::Base
|
3
|
-
belongs_to :author, class_name
|
4
|
-
belongs_to :publisher, class_name
|
3
|
+
belongs_to :author, :class_name => Crowdblog.author_user_class_name
|
4
|
+
belongs_to :publisher, :class_name => Crowdblog.publisher_user_class_name
|
5
5
|
has_many :assets
|
6
6
|
|
7
7
|
delegate :name, to: :author, prefix: true, allow_nil: true
|
@@ -17,10 +17,26 @@ module Crowdblog
|
|
17
17
|
|
18
18
|
state_machine initial: :drafted do
|
19
19
|
state :drafted
|
20
|
+
state :finished
|
21
|
+
state :reviewed
|
22
|
+
state :published
|
23
|
+
|
24
|
+
event :finish do
|
25
|
+
transition drafted: :finished
|
26
|
+
end
|
27
|
+
|
28
|
+
event :draft do
|
29
|
+
transition finished: :drafted
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
state_machine :publisher, attribute: :state, initial: :drafted, namespace: :as_publisher do
|
34
|
+
state :drafted
|
35
|
+
state :finished
|
36
|
+
state :reviewed
|
20
37
|
state :published
|
21
38
|
|
22
39
|
before_transition on: :publish do |post, transition|
|
23
|
-
#post.update_attribute(:published_at, Time.now)
|
24
40
|
post.published_at ||= Time.now
|
25
41
|
end
|
26
42
|
|
@@ -32,8 +48,16 @@ module Crowdblog
|
|
32
48
|
transition published: :drafted
|
33
49
|
end
|
34
50
|
|
51
|
+
event :finish do
|
52
|
+
transition drafted: :finished
|
53
|
+
end
|
54
|
+
|
55
|
+
event :review do
|
56
|
+
transition finished: :reviewed
|
57
|
+
end
|
58
|
+
|
35
59
|
event :publish do
|
36
|
-
transition
|
60
|
+
transition all => :published
|
37
61
|
end
|
38
62
|
end
|
39
63
|
|
@@ -1,30 +1,24 @@
|
|
1
1
|
module Crowdblog
|
2
|
-
class User
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
class User < ActiveRecord::Base
|
3
|
+
has_many :authored_posts, inverse_of: :author,
|
4
|
+
foreign_key: 'author_id', class_name: 'Post'
|
5
|
+
has_many :published_posts, inverse_of: :author,
|
6
|
+
foreign_key: 'author_id', class_name: 'Post',
|
7
|
+
conditions: ['state = ?', 'published'], order: 'published_at DESC'
|
8
|
+
has_one :last_post, class_name: 'Post',
|
9
|
+
foreign_key: :author_id, conditions: ['state = ?', 'published'],
|
10
|
+
order: 'published_at DESC, created_at DESC, id DESC'
|
6
11
|
|
7
12
|
def is_publisher?
|
8
13
|
true
|
9
14
|
end
|
10
15
|
|
11
|
-
def
|
12
|
-
|
16
|
+
def last_post_at
|
17
|
+
last_post.try(:published_at)
|
13
18
|
end
|
14
19
|
|
15
|
-
def
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
def destroyed?
|
20
|
-
false
|
21
|
-
end
|
22
|
-
|
23
|
-
def new_record?
|
24
|
-
true
|
25
|
-
end
|
26
|
-
|
27
|
-
def save(*)
|
20
|
+
def last_published_at
|
21
|
+
published_posts.first ? published_posts.first.published_at : nil
|
28
22
|
end
|
29
23
|
end
|
30
24
|
end
|
@@ -4,9 +4,15 @@
|
|
4
4
|
td.span2.published-at = post.published_at.try(:to_s, :crowdblog_short)
|
5
5
|
td.span1
|
6
6
|
- if current_user.is_publisher?
|
7
|
-
= link_to 'Publish', '#', :class => "btn btn-small publish #{(post.published? ? '
|
7
|
+
= link_to 'Publish', '#', :class => "btn btn-small publish-btn btn-danger #{(post.published? ? 'draft' : 'publish')}"
|
8
8
|
td.span1
|
9
|
-
|
9
|
+
.btn-group.states
|
10
|
+
button.btn.btn-small.draft Drafted
|
11
|
+
button.btn.btn-small.finish Finished
|
12
|
+
- if !current_user.is_publisher?
|
13
|
+
button.btn.btn-small.disabled.publish-status
|
14
|
+
- if current_user.is_publisher?
|
15
|
+
button.btn.btn-small.review Reviewed
|
10
16
|
td.span1
|
11
17
|
= link_to 'Delete', crowdblog.admin_post_path(post), :method => :delete, :confirm => 'Are you sure?', :class => "btn btn-small"
|
12
18
|
td.span1
|
@@ -17,8 +17,12 @@
|
|
17
17
|
table.table.table-striped= render :partial => 'post', :collection => @posts
|
18
18
|
|
19
19
|
- content_for :scripts do
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
javascript:
|
21
|
+
$(function() {
|
22
|
+
return $('tr.post').each(function(index, el) {
|
23
|
+
Crowdblog.adminPostsPath = '#{crowdblog.admin_posts_path}';
|
24
|
+
return new Crowdblog.Views.PostView({
|
25
|
+
el: el
|
26
|
+
});
|
27
|
+
});
|
28
|
+
});
|
@@ -7,6 +7,7 @@ html
|
|
7
7
|
= javascript_include_tag "//code.jquery.com/jquery.min.js"
|
8
8
|
= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.1/underscore-min.js"
|
9
9
|
= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"
|
10
|
+
= javascript_include_tag "//netdna.bootstrapcdn.com/twitter-bootstrap/2.1.1/js/bootstrap.min.js"
|
10
11
|
= javascript_include_tag :crowdblog
|
11
12
|
meta name="viewport" content="width=device-width, initial-scale=1.0"
|
12
13
|
= csrf_meta_tags
|
data/config/routes.rb
CHANGED
@@ -9,6 +9,11 @@ Crowdblog::Engine.routes.draw do
|
|
9
9
|
:as => 'posts_by_state',
|
10
10
|
:via => :get
|
11
11
|
|
12
|
+
match 'posts/:id/:transition', :to => 'transitions#create',
|
13
|
+
:constraints => { :transition => /(draft|finish|review|publish)/ },
|
14
|
+
:as => 'post_transitions',
|
15
|
+
:via => :post
|
16
|
+
|
12
17
|
resources :posts do
|
13
18
|
resources :assets
|
14
19
|
end
|
data/crowdblog.gemspec
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
$:.push File.expand_path('../lib', __FILE__)
|
2
2
|
|
3
|
-
# Maintain your gem's version:
|
4
3
|
require 'crowdblog/version'
|
5
4
|
|
6
|
-
# Describe your gem and declare its dependencies:
|
7
5
|
Gem::Specification.new do |s|
|
8
6
|
s.name = 'crowdblog'
|
9
7
|
s.version = Crowdblog::VERSION
|
@@ -20,8 +18,6 @@ Gem::Specification.new do |s|
|
|
20
18
|
|
21
19
|
s.add_dependency 'rails', '~> 3.2'
|
22
20
|
|
23
|
-
# Added in the Gemfile, so they can be accessed in the dummy app
|
24
|
-
# leave the dependencies here so our engine require those gems when added on base apps
|
25
21
|
s.add_dependency 'carrierwave'
|
26
22
|
s.add_dependency 'gravtastic'
|
27
23
|
s.add_dependency 'jquery-rails'
|
data/lib/crowdblog.rb
CHANGED
@@ -9,3 +9,11 @@ require "state_machine"
|
|
9
9
|
require "strong_parameters"
|
10
10
|
|
11
11
|
require "generators/crowdblog/views_generator"
|
12
|
+
|
13
|
+
module Crowdblog
|
14
|
+
@@author_user_class_name = 'User'
|
15
|
+
@@publisher_user_class_name = 'User'
|
16
|
+
|
17
|
+
mattr_accessor :author_user_class_name
|
18
|
+
mattr_accessor :publisher_user_class_name
|
19
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
shared_examples_for "a crowdblog", :type => :
|
1
|
+
shared_examples_for "a crowdblog", :type => :feature do
|
2
2
|
|
3
3
|
let(:post) do
|
4
4
|
Crowdblog::Post.create :title => 'A post title', :body => 'A post body'
|
@@ -7,7 +7,7 @@ shared_examples_for "a crowdblog", :type => :integration do
|
|
7
7
|
describe "Home" do
|
8
8
|
it "shows published posts" do
|
9
9
|
post.save!
|
10
|
-
post.
|
10
|
+
post.publish_as_publisher
|
11
11
|
|
12
12
|
visit crowdblog.root_path
|
13
13
|
|
@@ -69,13 +69,14 @@ shared_examples_for "a crowdblog", :type => :integration do
|
|
69
69
|
button = find_link 'Publish'
|
70
70
|
button.click
|
71
71
|
|
72
|
-
page.should have_css '
|
72
|
+
page.should have_css '.publish-btn.btn-success'
|
73
|
+
page.should have_css '.review.active'
|
73
74
|
post.reload.state.should eq 'published'
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
78
|
it "draftes a post", :js => true do
|
78
|
-
post.
|
79
|
+
post.publish_as_publisher!
|
79
80
|
|
80
81
|
visit crowdblog.admin_posts_path
|
81
82
|
|
@@ -83,23 +84,37 @@ shared_examples_for "a crowdblog", :type => :integration do
|
|
83
84
|
button = find_link 'Publish'
|
84
85
|
button.click
|
85
86
|
|
86
|
-
page.should have_css '
|
87
|
+
page.should have_css '.publish-btn.btn-danger'
|
88
|
+
page.should have_css '.draft.active'
|
87
89
|
post.reload.state.should eq 'drafted'
|
88
90
|
end
|
89
91
|
end
|
90
92
|
|
91
|
-
it "marks the post
|
93
|
+
it "marks the post as reviewed", :js => true do
|
94
|
+
post.finish!
|
92
95
|
visit crowdblog.admin_posts_path
|
93
96
|
|
94
97
|
within "#post_#{post.id}" do
|
95
|
-
button =
|
98
|
+
button = find_button 'Reviewed'
|
96
99
|
button.click
|
97
100
|
|
98
|
-
page.should have_css '
|
99
|
-
post.reload.
|
101
|
+
page.should have_css '.review.active'
|
102
|
+
post.reload.state.should eq 'reviewed'
|
100
103
|
end
|
101
104
|
end
|
102
|
-
|
105
|
+
|
106
|
+
it "marks the post as finished", :js => true do
|
107
|
+
visit crowdblog.admin_posts_path
|
108
|
+
|
109
|
+
within "#post_#{post.id}" do
|
110
|
+
button = find_button 'Finished'
|
111
|
+
button.click
|
112
|
+
|
113
|
+
page.should have_css '.finish.active'
|
114
|
+
post.reload.state.should eq 'finished'
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
103
118
|
end
|
104
119
|
end
|
105
120
|
end
|
data/lib/crowdblog/version.rb
CHANGED
data/spec/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:version =>
|
14
|
+
ActiveRecord::Schema.define(:version => 20121016063750) do
|
15
15
|
|
16
16
|
create_table "crowdblog_assets", :force => true do |t|
|
17
17
|
t.integer "post_id"
|
@@ -34,4 +34,9 @@ ActiveRecord::Schema.define(:version => 20120219071614) do
|
|
34
34
|
t.datetime "updated_at", :null => false
|
35
35
|
end
|
36
36
|
|
37
|
+
create_table "crowdblog_users", :force => true do |t|
|
38
|
+
t.string "email"
|
39
|
+
t.string "name"
|
40
|
+
end
|
41
|
+
|
37
42
|
end
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crowdblog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2013-01-24 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rails
|
@@ -316,7 +316,6 @@ extra_rdoc_files: []
|
|
316
316
|
files:
|
317
317
|
- .autotest
|
318
318
|
- .gitignore
|
319
|
-
- .rbenv-version
|
320
319
|
- .rspec
|
321
320
|
- .rvmrc
|
322
321
|
- .simplecov
|
@@ -327,7 +326,7 @@ files:
|
|
327
326
|
- Rakefile
|
328
327
|
- app/assets/images/crowdblog/.gitkeep
|
329
328
|
- app/assets/javascripts/crowdblog.js
|
330
|
-
- app/assets/javascripts/crowdblog/models/post.js.coffee
|
329
|
+
- app/assets/javascripts/crowdblog/models/post.js.coffee
|
331
330
|
- app/assets/javascripts/crowdblog/views/attachment_view.js.coffee
|
332
331
|
- app/assets/javascripts/crowdblog/views/post_form_view.js.coffee
|
333
332
|
- app/assets/javascripts/crowdblog/views/post_view.js.coffee
|
@@ -335,18 +334,18 @@ files:
|
|
335
334
|
- app/assets/stylesheets/crowdblog.css
|
336
335
|
- app/assets/stylesheets/crowdblog/posts.css.scss
|
337
336
|
- app/controllers/crowdblog/admin/assets_controller.rb
|
338
|
-
- app/controllers/crowdblog/admin/authors_controller.rb
|
339
337
|
- app/controllers/crowdblog/admin/base_controller.rb
|
340
338
|
- app/controllers/crowdblog/admin/posts_controller.rb
|
339
|
+
- app/controllers/crowdblog/admin/transitions_controller.rb
|
341
340
|
- app/controllers/crowdblog/application_controller.rb
|
342
341
|
- app/controllers/crowdblog/posts_controller.rb
|
343
342
|
- app/helpers/crowdblog/application_helper.rb
|
344
343
|
- app/models/crowdblog/asset.rb
|
345
344
|
- app/models/crowdblog/post.rb
|
346
345
|
- app/models/crowdblog/user.rb
|
346
|
+
- app/presenters/crowdblog/post_presenter.rb
|
347
347
|
- app/sweepers/post_sweeper.rb
|
348
348
|
- app/uploaders/attachment_uploader.rb
|
349
|
-
- app/views/crowdblog/admin/authors/index.html.slim
|
350
349
|
- app/views/crowdblog/admin/posts/_form.html.slim
|
351
350
|
- app/views/crowdblog/admin/posts/_post.html.slim
|
352
351
|
- app/views/crowdblog/admin/posts/edit.html.slim
|
@@ -368,6 +367,7 @@ files:
|
|
368
367
|
- crowdblog.gemspec
|
369
368
|
- db/migrate/20120217213920_create_crowdblog_posts.rb
|
370
369
|
- db/migrate/20120219071614_create_crowdblog_assets.rb
|
370
|
+
- db/migrate/20121016063750_create_crowdblog_users.rb
|
371
371
|
- lib/crowdblog.rb
|
372
372
|
- lib/crowdblog/devise/failure_app.rb
|
373
373
|
- lib/crowdblog/engine.rb
|
@@ -418,9 +418,9 @@ files:
|
|
418
418
|
- spec/dummy/public/500.html
|
419
419
|
- spec/dummy/public/favicon.ico
|
420
420
|
- spec/dummy/script/rails
|
421
|
+
- spec/features/crowdblog_spec.rb
|
421
422
|
- spec/generators/crowdblog/views_generator_spec.rb
|
422
423
|
- spec/helpers/application_helper_spec.rb
|
423
|
-
- spec/integration/crowdblog_spec.rb
|
424
424
|
- spec/models/post_spec.rb
|
425
425
|
- spec/spec_helper.rb
|
426
426
|
- vendor/assets/javascripts/backbone_rails_sync.js
|
@@ -442,7 +442,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
442
442
|
version: '0'
|
443
443
|
segments:
|
444
444
|
- 0
|
445
|
-
hash:
|
445
|
+
hash: 4143603944779799739
|
446
446
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
447
447
|
none: false
|
448
448
|
requirements:
|
@@ -451,7 +451,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
451
451
|
version: '0'
|
452
452
|
segments:
|
453
453
|
- 0
|
454
|
-
hash:
|
454
|
+
hash: 4143603944779799739
|
455
455
|
requirements: []
|
456
456
|
rubyforge_project:
|
457
457
|
rubygems_version: 1.8.23
|
@@ -498,8 +498,8 @@ test_files:
|
|
498
498
|
- spec/dummy/public/500.html
|
499
499
|
- spec/dummy/public/favicon.ico
|
500
500
|
- spec/dummy/script/rails
|
501
|
+
- spec/features/crowdblog_spec.rb
|
501
502
|
- spec/generators/crowdblog/views_generator_spec.rb
|
502
503
|
- spec/helpers/application_helper_spec.rb
|
503
|
-
- spec/integration/crowdblog_spec.rb
|
504
504
|
- spec/models/post_spec.rb
|
505
505
|
- spec/spec_helper.rb
|
data/.rbenv-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.9.3-p194
|
@@ -1,18 +0,0 @@
|
|
1
|
-
h1 Authors
|
2
|
-
|
3
|
-
table.table.table-striped
|
4
|
-
thead
|
5
|
-
tr
|
6
|
-
th
|
7
|
-
th Name
|
8
|
-
th Email
|
9
|
-
th Posts
|
10
|
-
th Last Post
|
11
|
-
tbody
|
12
|
-
- @authors.each do |author|
|
13
|
-
tr
|
14
|
-
th= image_tag author.gravatar_url
|
15
|
-
td= author.name
|
16
|
-
td= author.email
|
17
|
-
td= author.published_posts.size
|
18
|
-
td= author.last_published_at
|