class Admin::PagesController < Admin::ItemsController helper Admin::PagePartsHelper include Admin::FrontendWidgetInterface def show @item = Page.find(params[:id]) @no_orbit_bar = true @edit = true render :text => parse_page_content(@item), :layout => 'page_layout' end def new @item = Page.new(params[:page]) @item.parent = Item.find(params[:parent_id]) rescue nil get_variables_for_new render layout: false end def edit @item = Page.find(params[:id]) get_variables_for_edit render layout: false end def reload_themes design = Design.find(params[:design_id]) @themes = design.themes respond_to do |format| format.js {} end end def reload_frontend_pages @item = Page.find(params[:id]) rescue Page.new @selected={ :design => nil, :theme=> nil, :module_app=>(ModuleApp.find(params[:module_app_id]) rescue nil), :app_frontend_url=> @item.app_frontend_url || 'default_widget', #@module_apps.first :category=>nil, #fetch by method: get_categories_and_tags :tag=>nil, #fetch by method: get_categories_and_tags :page_frontend_data_count=>nil, :frontend_style => nil } @app_frontend_urls = @selected[:module_app] ? select_array_for_app_frontend_urls(@selected[:module_app].app_pages) : nil get_categories_and_tags get_frontend_data_count get_frontend_styles respond_to do |format| format.js {} end end def reload_front_end_setting @item = Page.find(params[:id]) rescue Page.new @categories = nil @tags = nil @page_frontend_data_counts = nil @selected={ # :design => @item.design || @designs.first, # :theme=> @item.theme, :module_app=>ModuleApp.find(params[:module_app_id]), :app_frontend_url=> params[:frontend] , :category=>nil, #fetch by method: get_categories_and_tags :tag=>nil, #fetch by method: get_categories_and_tags :page_frontend_data_count=>nil, :frontend_style => nil } @app_frontend_urls = @selected[:module_app].nil? ? nil : @selected[:module_app].app_pages.each{|name,data| [I18n.t(data["i18n"]),name]} @frontend_styles = @selected[:module_app].app_pages[params["frontend"]]["style"] rescue nil end def reload_widget_field @index = params[:field_seri].to_i @item = Page.find(params[:id]) rescue Page.new @selected = { :module_app=> (ModuleApp.find(params[:module_app_id]) || @item.module_app ), :default_widget_field=>params[:widget_field_value] } # @choosen_field = params[:widget_field_value] # @module_app = @item.module_app # @module_app = ModuleApp.find params[:module_app_id] if @module_app.nil? end def create clean_tags_and_category_params @item = Page.new(params[:page]) if @item.module_app && @item.module_app.key == 'page_content' @item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id ) end if @item.save flash.now[:notice] = t('create.success.page') respond_to do |format| format.js { render 'admin/items/reload_items' } end else flash.now[:error] = t('create.error.page') @designs = Design.all.entries @design = Design.find(params[:page][:design]) || Design.first @themes = @design.themes @module_apps = ModuleApp.for_frontend_select @selected={ :design => params[:page][:design], :theme=> (Theme.find(params[:page][:theme_id]) rescue nil), :module_app=> (ModuleApp.find(params[:page][:module_app_id]) rescue nil) ,#@module_apps.first :app_frontend_url=> params[:page][:app_frontend_url], #@module_apps.first :category=>params[:page][:category], :tag=>params[:page][:tag], :page_frontend_data_count=>params[:page][:page_frontend_data_count], :frontend_style => params[:page][:frontend_style] } @app_frontend_urls = @item.module_app ? select_array_for_app_frontend_urls(@item.module_app.app_pages) : nil get_categories_and_tags get_frontend_data_count render :action => "new" end end def update clean_tags_and_category_params @item = Page.find(params[:id]) if @item.module_app && @item.module_app.key == 'page_content' && @item.page_contexts.blank? @item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id ) end unless @item.update_attributes(params[:page]) @error = error_messages_for(@item) end end def get_display_style end def get_page_setting_json begin page = Page.find(params[:id]) design = {main: page.design_id.to_s, sub: page.theme_id.to_s} m = {} m["main"] = page.module_app_id.to_s m["sub"] = page.app_frontend_url m["category"] = page.category.present? ? [0, page.category.map{|c| c.to_s}] : [1] m["tags"] = page.tag.present? ? [0, page.tag.map{|c| c.to_s}] : [1] m["public"] = page.is_published ? 1 : 0 m["link"] = @site_valid_locales.inject([]) do |link, locale| link << [locale, (page.enabled_for && page.enabled_for.include?(locale)) ? 1 : 0, (page.menu_enabled_for && page.menu_enabled_for[locale]) ? 1 :0] end m["count"] = page.frontend_data_count render json: JSON.pretty_generate({design: design, module: m}) rescue render :json => {error: ''}, status: 422 end end protected def get_frontend_styles has_old_value = @selected[:module_app].app_pages[@selected[:app_frontend_url]] @frontend_styles = has_old_value ? has_old_value["style"] : (@selected[:module_app].app_pages.first[1]["style"] rescue nil) end def get_variables_for_new @designs = Design.all.entries @themes = Design.first.themes @module_apps = ModuleApp.for_frontend_select @app_frontend_urls = nil @categories = nil @tags = nil @page_frontend_data_counts = nil @frontend_styles = nil @selected={ :design => @designs.first, :theme=> @themes.first, :module_app=>nil,#@module_apps.first :app_frontend_url=> nil, #@module_apps.first :category=>nil, :tag=>nil, :page_frontend_data_count=>nil, :frontend_style => nil } end def get_variables_for_edit @designs = Design.all.entries @themes = @item.design ? @item.design.themes : @designs.first.themes @module_apps = ModuleApp.for_frontend_select @categories = nil @tags = nil @page_frontend_data_counts = nil @frontend_styles = nil @selected={ :design => @item.design || @designs.first, :theme=> @item.theme, :module_app=>@item.module_app,#@module_apps.first :app_frontend_url=> @item.app_frontend_url, #@module_apps.first :category=>nil, #fetch by method: get_categories_and_tags :tag=>nil, #fetch by method: get_categories_and_tags :page_frontend_data_count=>nil, :frontend_style => nil } @app_frontend_urls = @item.module_app ? select_array_for_app_frontend_urls(@item.module_app.app_pages) : nil get_categories_and_tags get_frontend_data_count end end