class PagePartsController < ApplicationController before_action :get_key def new @part = PagePart.new @part.sub_parts.build @part_number = params[:part] @page_id = params[:page_id] @modules = ModuleApp.all end def edit page = Page.find(params[:page_id]) @part = page.page_parts.where(:part_id => params[:id]).first @part.sub_parts.build @page_id = params[:page_id] @modules = ModuleApp.all end def getwidgets module_name = params[:module] @select_number = params[:number_of_select] @widget_types = [] Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name.downcase.pluralize}/*").each do |w| 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) @widget_methods = app.get_registration.get_widget_methods render :layout => false end def info page = Page.find(params[:page_id]) 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} end data << {"name" => partid, "subparts" => subpart} end render :json => {"parts" => data}.to_json end def create @part = PagePart.new(part_params) @part.save! redirect_to pages_edit_view_path(:id => params[:page_part][:page_id]) end def update @part = PagePart.find(params[:page_part][:page_part_id]) @part.update_attributes(part_params) redirect_to pages_edit_view_path(:id => params[:page_part][:page_id]) end private def part_params params.require(:page_part).permit(:part_id, :page_id, sub_parts_attributes: [:module, :widget_type,:widget_method, :id]) end end