198 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| class Admin::PagesController < Admin::ItemsController
 | |
|   helper Admin::PagePartsHelper
 | |
|   include Admin::FrontendWidgetInterface
 | |
| 
 | |
|   def show
 | |
|     @item = Page.find(params[:id])
 | |
|     @no_orbit_bar = true
 | |
|     render 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
 | |
|     if @item.update_attributes(params[:page])
 | |
|       flash[:notice] = t('update.success.page')
 | |
|       respond_to do |format|
 | |
|         format.js { render 'admin/items/reload_items' }
 | |
|       end
 | |
|     else
 | |
|       get_variables_for_edit
 | |
|       render :action => "edit"
 | |
|     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
 |