Class: CamaleonCms::Admin::PostsController
- Inherits:
-
CamaleonCms::AdminController
- Object
- CamaleonCms::AdminController
- CamaleonCms::Admin::PostsController
- Defined in:
- app/controllers/camaleon_cms/admin/posts_controller.rb
Direct Known Subclasses
Instance Method Summary collapse
-
#ajax ⇒ Object
ajax options.
- #create ⇒ Object
- #destroy ⇒ Object
- #edit ⇒ Object
- #index ⇒ Object
- #new ⇒ Object
- #restore ⇒ Object
- #show ⇒ Object
- #trash ⇒ Object
- #update ⇒ Object
Instance Method Details
#ajax ⇒ Object
ajax options
169 170 171 172 173 174 175 176 177 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 169 def ajax json = {error: 'Not Found'} case params[:method] when 'exist_slug' slug = current_site.get_valid_post_slug(params[:slug].to_s, params[:post_id]) json = {slug: slug, index: 1} end render json: json end |
#create ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 72 def create :create_post, @post_type post_data = get_post_data(true) CamaleonCms::Post.drafts.find(post_data[:draft_id]).destroy rescue nil @post = @post_type.posts.new(post_data) r = {post: @post, post_type: @post_type}; hooks_run("create_post", r) @post = r[:post] if @post.save @post.(params[:meta]) @post.set_field_values(params[:field_options]) @post.(params[:options]) flash[:notice] = t('camaleon_cms.admin.post.message.created', post_type: @post_type.decorate.the_title) r = {post: @post, post_type: @post_type}; hooks_run("created_post", r) redirect_to action: :edit, id: @post.id else # render 'form' new end end |
#destroy ⇒ Object
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 152 def destroy :destroy, @post r = {post: @post, post_type: @post_type, flag: true} hooks_run("destroy_post", r) if r[:flag] if @post.destroy hooks_run("destroyed_post", {post: @post, post_type: @post_type}) flash[:notice] = t('camaleon_cms.admin.post.message.deleted', post_type: @post_type.decorate.the_title) return redirect_to action: :index, s: params[:s] else flash[:error] = @post.errors..join(', ') end end redirect_to(request.referer || url_for(action: :index, s: params[:s])) end |
#edit ⇒ Object
92 93 94 95 96 97 98 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 92 def edit I18n.t("camaleon_cms.admin.button.edit") :update, @post @post_form_extra_settings = [] r = {post: @post, post_type: @post_type, extra_settings: @post_form_extra_settings, render: "form"}; hooks_run("edit_post", r) render r[:render] end |
#index ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 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 53 54 55 56 57 58 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 8 def index :posts, @post_type per_page = current_site.admin_per_page posts_all = @post_type.posts.eager_load(:parent, :post_type) if params[:taxonomy].present? && params[:taxonomy_id].present? if params[:taxonomy] == "category" cat_owner = current_site.full_categories.find(params[:taxonomy_id]).decorate posts_all = cat_owner.posts t("camaleon_cms.admin.post_type.category"), @post_type.the_admin_url("category") cat_owner.the_title, cat_owner.the_edit_url end if params[:taxonomy] == "post_tag" tag_owner = current_site..find(params[:taxonomy_id]).decorate posts_all = tag_owner.posts t("camaleon_cms.admin.post_type.tags"), @post_type.the_admin_url("tag") tag_owner.the_title, tag_owner.the_edit_url end end if params[:q].present? params[:q] = (params[:q] || '').downcase posts_all = posts_all.where( "LOWER(#{CamaleonCms::Post.table_name}.title) LIKE ? OR LOWER(#{CamaleonCms::Post.table_name}.slug LIKE ?)", "%#{params[:q]}%", "%#{params[:q]}%" ) end posts_all = posts_all.where(user_id: cama_current_user) if cannot?(:edit_other, @post_type) # filter only own contents @posts = posts_all params[:s] = 'published' unless params[:s].present? @lists_tab = params[:s] case params[:s] when "published", "pending", "trash" @posts = @posts.send(params[:s]) when "draft" @posts = @posts.drafts when "all" @posts = @posts.no_trash end @btns = {published: "#{t('camaleon_cms.admin.post_type.published')} (#{posts_all.published.size})", all: "#{t('camaleon_cms.admin.post_type.all')} (#{posts_all.no_trash.size})", pending: "#{t('camaleon_cms.admin.post_type.pending')} (#{posts_all.pending.size})", draft: "#{t('camaleon_cms.admin.post_type.draft')} (#{posts_all.drafts.size})", trash: "#{t('camaleon_cms.admin.post_type.trash')} (#{posts_all.trash.size})"} per_page = 9999999 if @post_type.manage_hierarchy? r = {posts: @posts, post_type: @post_type, btns: @btns, all_posts: posts_all, render: 'index', per_page: per_page } hooks_run("list_post", r) "#{@btns[params[:s].to_sym]}" if params[:s].present? @posts = r[:posts].paginate(:page => params[:page], :per_page => r[:per_page]) render r[:render] end |
#new ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 63 def new I18n.t("camaleon_cms.admin.button.new") :create_post, @post_type @post_form_extra_settings = [] @post ||= @post_type.posts.new r = {post: @post, post_type: @post_type, extra_settings: @post_form_extra_settings, render: "form"}; hooks_run("new_post", r) render r[:render] end |
#restore ⇒ Object
142 143 144 145 146 147 148 149 150 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 142 def restore @post = @post_type.posts.find(params[:post_id]) :update, @post @post.update_column('status', @post.[:status_default] || 'pending') @post.update_extra_data hooks_run("restored_post", {post: @post, post_type: @post_type}) flash[:notice] = t('camaleon_cms.admin.post.message.restore', post_type: @post_type.decorate.the_title) redirect_to action: :index, s: params[:s] end |
#show ⇒ Object
60 61 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 60 def show end |
#trash ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 130 def trash @post = @post_type.posts.find(params[:post_id]) :destroy, @post @post.set_option('status_default', @post.status) # @post.children.destroy_all unless @post.draft? TODO: why delete children? @post.update_column('status', 'trash') @post.update_extra_data hooks_run("trashed_post", {post: @post, post_type: @post_type}) flash[:notice] = t('camaleon_cms.admin.post.message.trash', post_type: @post_type.decorate.the_title) redirect_to action: :index, s: params[:s] end |
#update ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'app/controllers/camaleon_cms/admin/posts_controller.rb', line 100 def update post_data = get_post_data delete_drafts = false if @post.draft_child? && @post.parent.present? # This is a draft (as a child of the original post) original_parent = @post.parent.parent post_data[:post_parent] = original_parent.present? ? original_parent.id : nil @post = @post.parent delete_drafts = true elsif @post.draft? # This is a normal draft (post whose status was set to 'draft') @post.status = 'published' if post_data[:status].blank? end :update, @post r = {post: @post, post_type: @post_type}; hooks_run("update_post", r) @post = r[:post] if @post.update(post_data) # delete drafts only on successful update operation @post.drafts.destroy_all if delete_drafts @post.(params[:meta]) @post.set_field_values(params[:field_options]) @post.(params[:options]) hooks_run("updated_post", {post: @post, post_type: @post_type}) flash[:notice] = t('camaleon_cms.admin.post.message.updated', post_type: @post_type.decorate.the_title) redirect_to action: :edit, id: @post.id else edit end end |