orbit4-5/app/controllers/page_parts_controller.rb

72 lines
2.0 KiB
Ruby

class PagePartsController < ApplicationController
before_action :get_key
def new
@part = PagePart.new
@part.sub_parts.build
@modules = []
@part_number = params[:part]
@page_id = params[:page_id]
Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/*").each do |m|
@modules << m.gsub("#{Rails.root}/app/templates/#{@key}/modules/","")
end
end
def edit
page = Page.find(params[:page_id])
@part = page.page_parts.where(:part_id => params[:id]).first
@part.sub_parts.build
@modules = []
@page_id = params[:page_id]
Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/*").each do |m|
@modules << m.gsub("#{Rails.root}/app/templates/#{@key}/modules/","")
end
end
def getwidgets
module_name = params[:module]
@select_number = params[:number_of_select]
@widgets = []
Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name}/*").each do |w|
w = File.basename(w, ".*")
w = File.basename(w, ".*")
@widgets << w.gsub("_","") if w != "index" && w != "show"
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}
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, :id])
end
end