class PagePartsController < ApplicationController before_action :get_key def new @part = part_model.new @part.sub_parts.build @part_number = params[:part] @page_id = params[:page_id] @modules = ModuleApp.widget_enabled @no_orbit_bar = @no_side_bar = true @select_number = 0 @html_class = "page-parts" render :layout => "structure" end def edit page = Page.find(params[:page_id]) parts = $mobile.blank? ? page.page_parts : page.mobile_page_parts @part = parts.where(:part_id => params[:id]).first @part.sub_parts.build @page_id = params[:page_id] @part_number = params[:id] @select_number = @part.sub_parts.count @modules = ModuleApp.widget_enabled @no_orbit_bar = @no_side_bar = true @html_class = "page-parts" render :layout => "structure" end def edit_sub_part @part = part_model.find(params[:part_id]) @subpart = SubPart.find(params[:sub_part_id]) @select_number = @part.sub_parts.index(@subpart) @kind = @subpart.kind @modules = ModuleApp.widget_enabled if @kind == "module_widget" @widget_types = [] module_name = @subpart.module Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name.downcase}/*").each do |w| next if File.ftype(w).eql?("directory") w = File.basename(w, ".*") w = File.basename(w, ".*") @widget_types << w.gsub("_","") if w != "index" && w != "show" end app = ModuleApp.find_by_key(module_name) @categories = app.categories @widget_methods = app.get_registration.get_widget_methods @widget_settings = app.get_registration.get_widget_settings @data_count = nil if !@widget_settings.blank? @data_count = @widget_settings["data_count"] rescue nil if !@widget_settings['override_category_with'].nil? @custom = @widget_settings['override_category_with'].classify.constantize.all @multiselect = @widget_settings['multiselect'] rescue true @display_field = @widget_settings['display_field'] end end end @no_orbit_bar = @no_side_bar = true @html_class = "page-parts" render :layout => "structure" end def update_sub_part subpart = SubPart.find(params[:id]) p = part_params["sub_parts_attributes"] keys = p.keys final_params = {} keys.each do |key| p["#{key}"].each do |k,value| final_params["#{k}"] = value end end if final_params["kind"] == "none" page_part = subpart.page_part subpart.destroy if page_part.sub_parts.count == 0 page_part.destroy end else subpart.update_attributes(final_params) end render :json => {"success"=>true}.to_json end def getwidgets module_name = params[:module] part = part_model.where(:part_id => params[:part_id], :page_id => params[:page_id]).first @select_number = part.sub_parts.count rescue 0 @widget_types = [] Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name.downcase}/*").each do |w| next if File.ftype(w).eql?("directory") w = File.basename(w, ".*") w = File.basename(w, ".*") @widget_types << w.gsub("_","") if w != "index" && w != "show" end module_name = module_name.downcase.singularize app = ModuleApp.find_by_key(module_name) @categories = app.categories @widget_methods = app.get_registration.get_widget_methods @widget_settings = app.get_registration.get_widget_settings @data_count = nil if !@widget_settings.blank? @data_count = @widget_settings["data_count"] rescue nil if !@widget_settings['override_category_with'].nil? @custom = @widget_settings['override_category_with'].classify.constantize.all @multiselect = @widget_settings['multiselect'] rescue true @display_field = @widget_settings['display_field'] end end render :layout => false end def info page = Page.find(params[:page_id]) parts = OrbitHelper.is_mobile_view ? page.mobile_page_parts : page.page_parts data = [] parts.each do |part| partid = "data-pp=" + part.part_id.to_s subparts = part.sub_parts subpart = [] subparts.each do |p| subpart << {"module" => p.module, "widget" => p.widget_type, "id" => p.id.to_s, "kind" => p.kind} end data << {"name" => partid, "subparts" => subpart, "id" => part.id.to_s} end render :json => {"parts" => data}.to_json end def create @part = part_model.new(part_params) @part.save! render :json => {"success"=>true}.to_json end def update @part = part_model.find(params[:part_id]) @part.update_attributes(part_params) render :json => {"success"=>true}.to_json end private def part_params params.require(:page_part).permit! end def part_model $mobile.blank? ? "page_part".classify.constantize : "mobile_page_part".classify.constantize end end