app/controllers/pwb/api/v1/page_controller.rb in pwb-1.3.0 vs app/controllers/pwb/api/v1/page_controller.rb in pwb-1.4.0

- old
+ new

@@ -1,34 +1,33 @@ require_dependency "pwb/application_controller" module Pwb class Api::V1::PageController < ApplicationApiController # protect_from_forgery with: :null_session - def get - # admin_setup = Pwb::CmsPageContainer.where(name: params[:page_name]).first || {} - # render json: admin_setup.as_json_for_admin["attributes"] + def show + if params[:page_name] == "website" + return render json: Website.unique_instance.as_json_for_page + end + page = Pwb::Page.find_by_slug(params[:page_name]) if page render json: page.as_json_for_admin else render json: {} end end - - - def set_photo - page = Page.find_by_slug params[:page_slug] - + def set_photo unless params["block_label"] return render_json_error 'Please provide block_label' end block_label = params["block_label"] unless params["page_part_key"] return render_json_error 'Please provide label' end page_part_key = params["page_part_key"] + page = Page.find_by_slug params[:page_slug] photo = page.create_fragment_photo page_part_key, block_label, params[:file] photo.reload render json: { image_url: photo.optimized_image_url @@ -42,68 +41,69 @@ render json: page.as_json_for_admin end def update_page_part_visibility page = Page.find_by_slug params[:page_slug] + unless page + return render_json_error 'Please provide valid page slug' + end if params["cmd"] == "setAsHidden" - page.set_fragment_visibility params[:page_part_key], false + page.set_fragment_visibility params[:page_part_key], false end if params["cmd"] == "setAsVisible" - page.set_fragment_visibility params[:page_part_key], true + page.set_fragment_visibility params[:page_part_key], true end # page.details["visiblePageParts"] = params[:visible_page_parts] # page.save! render json: page end def save_page_fragment - page = Page.find_by_slug params[:page_slug] + if params[:page_slug] == "website" + container = Website.unique_instance + else + container = Page.find_by_slug params[:page_slug] + end fragment_details = params[:fragment_details] - unless fragment_details["locale"] + unless fragment_details && fragment_details["locale"] return render_json_error 'Please provide locale' end + locale = fragment_details["locale"] unless fragment_details["page_part_key"] return render_json_error 'Please provide page_part_key' end page_part_key = fragment_details["page_part_key"] + page_part_manager = Pwb::PagePartManager.new page_part_key, container - # updated_details = page.set_fragment_details page_part_key, locale, fragment_details - # fragment_html = render_to_string :partial => "pwb/fragments/#{page_part_key}", :locals => { page_part: params[:fragment_details][:blocks]} + result_to_return = page_part_manager.update_page_part_content locale, fragment_details - # save the block contents (in associated page_part model) - updated_details = page.set_page_part_block_contents page_part_key, locale, fragment_details - # retrieve the contents saved above and use to rebuild html for that page_part - # (and save it in associated page_content model) - fragment_html = page.rebuild_page_content page_part_key, locale - # # Check if an image url has been set # fragment_details.each do |fragment_detail| # update_all_images = true # end # page.save! # rescue StandardError => error # return render_json_error error.message # end - return render json: { - blocks: updated_details, - html: fragment_html + render json: { + blocks: result_to_return[:json_fragment_block], + html: result_to_return[:fragment_html] } end private def page_fragment_params - params.require(:fragment_details).permit(:label, :locale, blocks: [:content, :identifier, :is_image]) + params.require(:fragment_details).permit(:label, :locale, blocks: %i[content identifier is_image]) end - def page_params - page_fields = ["sort_order_top_nav","visible"] + page_fields = ["sort_order_top_nav", "visible"] locales = I18n.available_locales locales.each do |locale| page_fields.push("link_title_#{locale}") page_fields.push("page_title_#{locale}") page_fields.push("raw_html_#{locale}")