2014-04-01 07:10:21 +00:00
|
|
|
class PagePartsController < ApplicationController
|
|
|
|
before_action :get_key
|
|
|
|
def new
|
2014-05-29 10:32:27 +00:00
|
|
|
@part = part_model.new
|
2014-04-01 07:10:21 +00:00
|
|
|
@part.sub_parts.build
|
|
|
|
@part_number = params[:part]
|
|
|
|
@page_id = params[:page_id]
|
2014-05-22 11:19:25 +00:00
|
|
|
@modules = ModuleApp.widget_enabled
|
2014-06-26 11:14:46 +00:00
|
|
|
@modules = @modules.concat(OrbitWidget.all)
|
2014-05-22 11:19:25 +00:00
|
|
|
@no_orbit_bar = @no_side_bar = true
|
|
|
|
@select_number = 0
|
|
|
|
@html_class = "page-parts"
|
2014-04-30 10:57:09 +00:00
|
|
|
render :layout => "structure"
|
2014-04-01 07:10:21 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def edit
|
|
|
|
page = Page.find(params[:page_id])
|
2014-05-29 10:32:27 +00:00
|
|
|
parts = $mobile.blank? ? page.page_parts : page.mobile_page_parts
|
|
|
|
@part = parts.where(:part_id => params[:id]).first
|
2014-04-01 07:10:21 +00:00
|
|
|
@part.sub_parts.build
|
|
|
|
@page_id = params[:page_id]
|
2014-05-22 11:19:25 +00:00
|
|
|
@part_number = params[:id]
|
|
|
|
@select_number = @part.sub_parts.count
|
|
|
|
@modules = ModuleApp.widget_enabled
|
2014-06-26 11:14:46 +00:00
|
|
|
@modules = @modules.concat(OrbitWidget.all)
|
2014-04-30 10:57:09 +00:00
|
|
|
@no_orbit_bar = @no_side_bar = true
|
2014-05-22 11:19:25 +00:00
|
|
|
@html_class = "page-parts"
|
2014-04-30 10:57:09 +00:00
|
|
|
render :layout => "structure"
|
2014-04-01 07:10:21 +00:00
|
|
|
end
|
|
|
|
|
2014-05-22 11:19:25 +00:00
|
|
|
def edit_sub_part
|
2014-05-29 10:32:27 +00:00
|
|
|
@part = part_model.find(params[:part_id])
|
2014-05-22 11:19:25 +00:00
|
|
|
@subpart = SubPart.find(params[:sub_part_id])
|
|
|
|
@select_number = @part.sub_parts.index(@subpart)
|
|
|
|
@kind = @subpart.kind
|
|
|
|
@modules = ModuleApp.widget_enabled
|
2014-06-26 11:14:46 +00:00
|
|
|
@modules = @modules.concat(OrbitWidget.all)
|
2014-05-22 11:19:25 +00:00
|
|
|
if @kind == "module_widget"
|
|
|
|
module_name = @subpart.module
|
2014-07-25 12:05:06 +00:00
|
|
|
@widget_types = get_widget_files(module_name)
|
|
|
|
|
2014-06-26 11:14:46 +00:00
|
|
|
app = ModuleApp.find_by_key(module_name) rescue nil
|
|
|
|
app = OrbitWidget.find_by_key(module_name) if app.nil?
|
2014-12-09 13:25:51 +00:00
|
|
|
@categories = app.categories.enabled rescue []
|
2014-07-11 13:12:08 +00:00
|
|
|
@tags = app.tags rescue []
|
2014-08-05 10:22:36 +00:00
|
|
|
@widget_methods = app.widget_methods
|
|
|
|
@widget_settings = app.widget_settings
|
2014-05-22 11:19:25 +00:00
|
|
|
@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
|
2014-06-04 08:22:48 +00:00
|
|
|
elsif @widget_settings.nil?
|
|
|
|
@widget_settings = {}
|
|
|
|
@widget_settings['override_category_with'] = nil
|
2014-05-22 11:19:25 +00:00
|
|
|
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"
|
2014-06-04 07:25:04 +00:00
|
|
|
page_part = subpart.page_part
|
2014-05-22 11:19:25 +00:00
|
|
|
subpart.destroy
|
2014-06-04 07:25:04 +00:00
|
|
|
if page_part.sub_parts.count == 0
|
|
|
|
page_part.destroy
|
|
|
|
end
|
2014-05-22 11:19:25 +00:00
|
|
|
else
|
2014-06-04 08:22:48 +00:00
|
|
|
if final_params['categories'].nil?
|
|
|
|
final_params['categories'] = []
|
|
|
|
end
|
2014-07-11 13:12:08 +00:00
|
|
|
if final_params['tags'].nil?
|
|
|
|
final_params['tags'] = []
|
|
|
|
end
|
2014-05-22 11:19:25 +00:00
|
|
|
subpart.update_attributes(final_params)
|
|
|
|
end
|
|
|
|
render :json => {"success"=>true}.to_json
|
|
|
|
end
|
|
|
|
|
2014-04-01 07:10:21 +00:00
|
|
|
def getwidgets
|
|
|
|
module_name = params[:module]
|
2014-05-29 10:32:27 +00:00
|
|
|
part = part_model.where(:part_id => params[:part_id], :page_id => params[:page_id]).first
|
2014-05-22 11:19:25 +00:00
|
|
|
@select_number = part.sub_parts.count rescue 0
|
2014-07-25 12:05:06 +00:00
|
|
|
@widget_types = get_widget_files(module_name)
|
|
|
|
|
2014-06-26 11:14:46 +00:00
|
|
|
module_name = module_name.downcase.singularize
|
|
|
|
app = ModuleApp.find_by_key(module_name) rescue nil
|
|
|
|
app = OrbitWidget.find_by_key(module_name) if app.nil?
|
2014-12-09 13:25:51 +00:00
|
|
|
@categories = app.categories.enabled rescue []
|
2014-07-11 13:12:08 +00:00
|
|
|
@tags = app.tags rescue []
|
2014-08-05 10:22:36 +00:00
|
|
|
@widget_methods = app.widget_methods
|
|
|
|
@widget_settings = app.widget_settings
|
2014-05-22 11:19:25 +00:00
|
|
|
@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
|
2014-06-04 08:22:48 +00:00
|
|
|
elsif @widget_settings.nil?
|
|
|
|
@widget_settings = {}
|
|
|
|
@widget_settings['override_category_with'] = nil
|
2014-05-22 11:19:25 +00:00
|
|
|
end
|
2014-04-01 07:10:21 +00:00
|
|
|
render :layout => false
|
|
|
|
end
|
|
|
|
|
|
|
|
def info
|
|
|
|
page = Page.find(params[:page_id])
|
2014-05-29 10:32:27 +00:00
|
|
|
parts = OrbitHelper.is_mobile_view ? page.mobile_page_parts : page.page_parts
|
2014-04-01 07:10:21 +00:00
|
|
|
data = []
|
|
|
|
parts.each do |part|
|
|
|
|
partid = "data-pp=" + part.part_id.to_s
|
2014-06-04 08:22:48 +00:00
|
|
|
subparts = part.sub_parts.desc(:created_at)
|
2014-04-01 07:10:21 +00:00
|
|
|
subpart = []
|
|
|
|
subparts.each do |p|
|
2014-05-22 11:19:25 +00:00
|
|
|
subpart << {"module" => p.module, "widget" => p.widget_type, "id" => p.id.to_s, "kind" => p.kind}
|
2014-04-01 07:10:21 +00:00
|
|
|
end
|
2014-05-22 11:19:25 +00:00
|
|
|
data << {"name" => partid, "subparts" => subpart, "id" => part.id.to_s}
|
2014-04-01 07:10:21 +00:00
|
|
|
end
|
|
|
|
render :json => {"parts" => data}.to_json
|
|
|
|
end
|
|
|
|
|
|
|
|
def create
|
2014-05-29 10:32:27 +00:00
|
|
|
@part = part_model.new(part_params)
|
2014-04-01 07:10:21 +00:00
|
|
|
@part.save!
|
2014-05-22 11:19:25 +00:00
|
|
|
render :json => {"success"=>true}.to_json
|
|
|
|
|
2014-04-01 07:10:21 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def update
|
2014-05-29 10:32:27 +00:00
|
|
|
@part = part_model.find(params[:part_id])
|
2014-04-01 07:10:21 +00:00
|
|
|
@part.update_attributes(part_params)
|
2014-05-22 11:19:25 +00:00
|
|
|
render :json => {"success"=>true}.to_json
|
2014-04-01 07:10:21 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
2014-07-25 12:05:06 +00:00
|
|
|
def get_widget_files(module_name)
|
|
|
|
temp = []
|
|
|
|
f = File.join("#{Rails.root}/app/templates/#{@key}/modules/#{module_name.downcase}/info.json")
|
|
|
|
if File.exists?f
|
|
|
|
info = File.read(f)
|
|
|
|
hash = JSON.parse(info) rescue {}
|
|
|
|
widgets = hash["widgets"] || []
|
|
|
|
widgets.each do |w|
|
|
|
|
w["thumbnail"] = "/assets/#{module_name.downcase}/thumbs/#{w["thumbnail"]}"
|
|
|
|
temp << w
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if temp.empty?
|
|
|
|
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, ".*")
|
|
|
|
temp << w.gsub("_","") if w[0,1] == "_"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if temp.empty?
|
|
|
|
f = File.join("#{Rails.root}/app/templates/#{@key}/widgets/#{module_name.downcase}/info.json")
|
|
|
|
if File.exists?f
|
|
|
|
info = File.read(f)
|
|
|
|
hash = JSON.parse(info) rescue {}
|
|
|
|
widgets = hash["widgets"] || []
|
|
|
|
widgets.each do |w|
|
|
|
|
w["thumbnail"] = "/assets/#{module_name.downcase}/thumbs/#{w["thumbnail"]}"
|
|
|
|
temp << w
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if temp.empty?
|
|
|
|
Dir.glob("#{Rails.root}/app/templates/#{@key}/widgets/#{module_name.downcase}/*").each do |w|
|
|
|
|
next if File.ftype(w).eql?("directory")
|
|
|
|
w = File.basename(w, ".*")
|
|
|
|
w = File.basename(w, ".*")
|
|
|
|
temp << w.gsub("_","") if w[0,1] == "_"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
temp
|
|
|
|
end
|
|
|
|
|
2014-04-01 07:10:21 +00:00
|
|
|
def part_params
|
2014-05-22 11:19:25 +00:00
|
|
|
params.require(:page_part).permit!
|
2014-04-01 07:10:21 +00:00
|
|
|
end
|
|
|
|
|
2014-05-29 10:32:27 +00:00
|
|
|
def part_model
|
|
|
|
$mobile.blank? ? "page_part".classify.constantize : "mobile_page_part".classify.constantize
|
|
|
|
end
|
|
|
|
|
2014-04-01 07:10:21 +00:00
|
|
|
end
|