Class: Virgo::Admin::PostsController
Instance Method Summary
collapse
#authorize_admin_user, #search, #set_is_admin_view
#render_content, #with_format
#action?, #admin?, #admin_access?, #admin_view?, #alerts, #base_errors, #category_timestamp, #column_timestamp, #compact_html, #controller?, #decode_html_entities, #expanded_post_url, #is_admin_view?, #page_url, #post_time_format, #post_timestamp, #production?, #redis_timestamp_key_for, #site, #site_key, #superuser?, #tabbed_param, #word_count
Instance Method Details
#author_dropdown ⇒ Object
74
75
76
77
78
79
80
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 74
def author_dropdown
@post = Post.find_by(id: params[:post_id])
render json: {
html: render_content(partial: "author_dropdown")
}
end
|
#create ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 54
def create
@post = Post.new(post_params.merge(created_by: current_user))
authorize! :manage, @post
if @post.save
flash[:notice] = "#{model_name} successfully created. You can edit it below."
redirect_to edit_admin_post_path(@post)
else
render 'new'
end
end
|
#delete_featured_image ⇒ Object
125
126
127
128
129
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 125
def delete_featured_image
@post.update!(featured_image_id: nil)
head :ok
end
|
#delete_thumbnail_image ⇒ Object
131
132
133
134
135
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 131
def delete_thumbnail_image
@post.update!(thumbnail_image_id: nil)
head :ok
end
|
#destroy ⇒ Object
102
103
104
105
106
107
108
109
110
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 102
def destroy
authorize! :destroy, @post
@post.destroy
flash[:notice] = "Post successfully deleted"
redirect_to admin_posts_path
end
|
#edit ⇒ Object
70
71
72
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 70
def edit
@post.attempt_edit_lock(current_user)
end
|
#editing ⇒ Object
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 112
def editing
if request.post?
result = @post.attempt_edit_lock(current_user)
render json: {
edit_lock_succeeded: result,
post_is_mid_edit: @post.is_mid_edit?,
editor_is_self: (@post.editing_user == current_user),
editor_byline: @post.editing_user.pretty_name
}
end
end
|
#find ⇒ Object
34
35
36
37
38
39
40
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 34
def find
@posts = Post.search_by_similarity(params[:term])
render json: {
posts: @posts
}
end
|
#index ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 9
def index
if params[:sort].blank?
flash.keep
redirect_to admin_posts_path(filters: filter_params, sort: '-publish_at') and return
end
@posts = Post.with_relations
.search(filter_params)
.order(sort_order)
.page(params[:page])
end
|
#new ⇒ Object
42
43
44
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 42
def new
@post = Post.new(post_params.merge(author: current_user))
end
|
#options ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 21
def options
@posts = Post.search_by_headline(params[:term])
data = @posts.map { |post|
{value: post.id, label: truncate(post.headline, length: 100)}
}
render json: {
posts: data
}
end
|
Use with care (and perhaps only expose to admins): In certain circumstances, such as when chasing breaking news, we need to make immediate changes.
140
141
142
143
144
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 140
def publish_immediately
@post.update!(publish_at: Time.now, live: true)
Rails.cache.clear
end
|
#revision_detail ⇒ Object
46
47
48
49
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 46
def revision_detail
@version = PaperTrail::Version.find(params[:version_id])
@post = @version.item
end
|
#revisions ⇒ Object
51
52
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 51
def revisions
end
|
#show ⇒ Object
67
68
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 67
def show
end
|
#update ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'app/controllers/virgo/admin/posts_controller.rb', line 82
def update
@post.attributes = post_params
authorize! :manage, @post
if Rails.application.config.post_locking_enabled
if @post.is_mid_edit? && @post.editing_user && @post.editing_user != current_user
flash.now[:warning] = "Could not save changes because post is currently being edited by #{@post.editing_user.pretty_name}"
render and return
end
end
if @post.save
flash[:notice] = "Post saved"
redirect_to edit_admin_post_path(@post)
else
render 'new'
end
end
|