forked from saurabh/orbit4-5
142 lines
4.4 KiB
Ruby
142 lines
4.4 KiB
Ruby
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.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])
|
|
@part = page.page_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 = PagePart.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|
|
|
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"
|
|
subpart.destroy
|
|
else
|
|
subpart.update_attributes(final_params)
|
|
end
|
|
render :json => {"success"=>true}.to_json
|
|
end
|
|
|
|
def getwidgets
|
|
module_name = params[:module]
|
|
part = PagePart.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|
|
|
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 = 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 = PagePart.new(part_params)
|
|
@part.save!
|
|
render :json => {"success"=>true}.to_json
|
|
|
|
end
|
|
|
|
def update
|
|
@part = PagePart.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
|
|
|
|
end |