256 lines
9.5 KiB
Ruby
256 lines
9.5 KiB
Ruby
# encoding: utf-8
|
|
require 'rubyXL'
|
|
class Admin::PatchfilesController < OrbitAdminController
|
|
include Admin::PatchfilesHelper
|
|
include AdminAuthorize rescue nil
|
|
before_action :getfont , :create_first_field
|
|
#before_action :load_access_levels
|
|
layout "structure"
|
|
def initialize
|
|
super
|
|
@app_title = "patchfile"
|
|
end
|
|
def repair_module
|
|
ModuleApp.all.map{|v| v}.group_by{|v| [v.key,v.title]}.select{|k,v| Array(v).length>1}.each do |k,vs|
|
|
array_vs = Array(vs)
|
|
cats = array_vs.collect{|v| v.categories}.flatten.uniq
|
|
tags = array_vs.collect{|v| v.tags}.flatten.uniq
|
|
auths = array_vs.collect{|v| v.authorizations}.flatten.uniq
|
|
array_vs.reverse.each_with_index do |v,i|
|
|
if i == 0
|
|
tags = tags.collect do |tag|
|
|
tag.module_app_ids = [v.id]
|
|
tag.save!
|
|
tag
|
|
end
|
|
cats = cats.collect do |cat|
|
|
cat.module_app_id = v.id
|
|
cat.save!
|
|
cat
|
|
end
|
|
auths = auths.collect do |auth|
|
|
auth.module_app_id = v.id
|
|
auth.save!
|
|
auth
|
|
end
|
|
else
|
|
v.tag_ids = []
|
|
v.categories = nil
|
|
v.authorizations = nil
|
|
v.destroy
|
|
end
|
|
end
|
|
end
|
|
keys = OrbitWidget.all.map{|w| w.key}.uniq
|
|
keep_ids = []
|
|
keys.each do |key|
|
|
keep_ids << OrbitWidget.where(:key=>key).desc(:id).first.id
|
|
end
|
|
orbit_widgets = OrbitWidget.all.to_a
|
|
orbit_widgets.each{|w| w.destroy if(!keep_ids.include? w.id)}
|
|
home_page = Page.where(:url=>'/').asc(:id).first
|
|
check_urls = ['/sitemap','/termofuse']
|
|
check_urls.each do |check_url|
|
|
check_url_ids = Page.where(:url=>check_url,:parent_page_id=>home_page.id).desc(:id).to_a
|
|
check_url_ids[1..-1].each{|uniq_page| uniq_page.destroy}
|
|
end
|
|
render :plain => 'repair finish'
|
|
end
|
|
def index
|
|
#@tags = @module_app.tags
|
|
#@categories = @module_app.categories.enabled
|
|
#@filter_fields = filter_fields(@categories, @tags)
|
|
#@table_fields = [:status, :category, :title, :start_date, :end_date, :last_modified]
|
|
if request.xhr?
|
|
render :partial => "index"
|
|
end
|
|
end
|
|
def edit
|
|
params["filefield"]["file_show"].each do |name,status|
|
|
@file_to_show.file_show[name][:status] = status.to_i
|
|
end
|
|
params["filefield"]["sub_file_fields"].each do |name,files|
|
|
files.each do |index,file_and_status|
|
|
file_and_status.each do |file_name,status|
|
|
@file_to_show["file_show"][name]["files"][file_name]["status"] = status.to_i
|
|
end
|
|
end
|
|
end
|
|
if params["filefield"]["refresh_btn"] == "true"
|
|
@last_message = @file_to_show.last_message
|
|
@active_file_arr = @file_to_show.file_show.values.map{|hash| hash.values.first}.map{|hash| hash.keys.zip(hash.values.map{|hash| hash[:status]}).to_h}.select{|hash| hash.values.include?(1)}.flat_map{|hash| hash.values.map.with_index{|status,i| (status != 1) ? nil : i}.select{|index| !index.nil?}.map{|index| hash.keys[index]}}
|
|
@file_to_show.destroy
|
|
@file_to_show = Filefield.new()
|
|
@file_to_show.last_message = @last_message
|
|
@active_file_arr.each{|active_file| @file_to_show.file_show.keys.each{|file_group| (@file_to_show.file_show[file_group][:files].keys.include?(active_file)) ? (@file_to_show.file_show[file_group][:files][active_file][:status] = 1) : nil }}
|
|
@file_to_show.save
|
|
end
|
|
if params["filefield"]["recovery_btn"] == "true"
|
|
@file_to_show.recovery = "true"
|
|
else
|
|
@file_to_show.recovery = "false"
|
|
end
|
|
@file_to_show.num = 0
|
|
@file_to_show.update
|
|
@file_to_show = Filefield.where("title"=>@app_title).first
|
|
redirect_to admin_patchfiles_path and return
|
|
end
|
|
def showckeditor
|
|
end
|
|
def editckeditor
|
|
end
|
|
def editfontfile
|
|
end
|
|
def update
|
|
if params[:id] == "editfontfile"
|
|
@field_name
|
|
params["fontfile"]["font_file"] = "" if params["fontfile"]["font_file"].nil? == true
|
|
params["fontfile"].each do |update_key,update_value|
|
|
if update_key != "font_file"
|
|
@font_settings["old_"+update_key] = @font_settings[update_key] rescue nil
|
|
@font_settings[update_key] = update_value
|
|
else
|
|
@file = params["fontfile"]["font_file"] if params["fontfile"]["font_file"] != ""
|
|
@file_path = Rails.root.to_s + '/app/assets/fonts'
|
|
|
|
if !@file.nil?
|
|
@file_name = File.basename(@file.original_filename)
|
|
@file_content = @file.read
|
|
@file_content.force_encoding('UTF-8')
|
|
File.open("#{@file_path}/#{@file_name}","w+") do |f|
|
|
f.write(@file_content)
|
|
end
|
|
else
|
|
@file_name = @font_settings.font_file_name
|
|
end
|
|
@field_name = {"font_file_name" => @file_name,"font_dir" => @file_path}
|
|
@field_name.each do |name,value|
|
|
@font_settings["old_" + name.to_s] = @font_settings[name.to_s]
|
|
@font_settings[name.to_s] = value.to_s
|
|
end
|
|
end
|
|
end
|
|
@font_settings.update
|
|
end
|
|
redirect_to admin_patchfiles_showckeditor_path
|
|
end
|
|
def newfont
|
|
if params["patchfilefield"]["initial_btn"] == "true"
|
|
#render :html => @field.id and return
|
|
@field_to_copy = Patchfilefield.where("title"=>(@app_title + "_back")).take_while{true}.last
|
|
@field_to_copy.attributes.each do |copy_field,value|
|
|
if copy_field != "_id" || copy_field != "title"
|
|
@field[copy_field] = value
|
|
end
|
|
end
|
|
@field.update
|
|
@field = Patchfilefield.where("title"=>@app_title).first
|
|
@field.update
|
|
@field = Patchfilefield.where("title"=>@app_title).first
|
|
@font_arr = []
|
|
@field.font_array.each do |font,istrue|
|
|
@font_arr.push font
|
|
end
|
|
@font_arr.each do |font,istrue|
|
|
if (@field_to_copy.font_array.keys.include? font) == false
|
|
@field.font_array.delete(font)
|
|
@field.delete_font = font
|
|
@field.update
|
|
@field = Patchfilefield.where("title"=>@app_title).first
|
|
end
|
|
end
|
|
redirect_to admin_patchfiles_editckeditor_path and return
|
|
elsif params["patchfilefield"]["delete_btn"] == "true"
|
|
params["patchfilefield"]["font_array"] = {} if params["patchfilefield"]["font_array"].nil? == true
|
|
params["patchfilefield"]["font_array"].each do |font,istrue|
|
|
if istrue =="1"
|
|
@field.font_array.delete(font)
|
|
@field.delete_font = font
|
|
@field.update
|
|
@field = Patchfilefield.where("title"=>@app_title).first
|
|
end
|
|
end
|
|
redirect_to admin_patchfiles_editckeditor_path and return
|
|
else
|
|
params["patchfilefield"]["new_add_font"] = params["patchfilefield"]["new_add_font"].gsub('\"','').gsub("\'",'').gsub(";",'').gsub('\\','')
|
|
@field.new_add_font = params["patchfilefield"]["new_add_font"] rescue (redirect_to admin_patchfiles_showckeditor_path and return)
|
|
@key_arr = @field.font_array.keys
|
|
params["patchfilefield"]["font_array"] = {} if params["patchfilefield"]["font_array"].nil? == true
|
|
params["patchfilefield"]["font_array"].each do |font,istrue|
|
|
if istrue =="0"
|
|
@field.font_array[font] = false
|
|
elsif istrue =="1"
|
|
@field.font_array[font] = true
|
|
end
|
|
end
|
|
@field.update
|
|
redirect_to admin_patchfiles_showckeditor_path and return
|
|
end
|
|
end
|
|
def getfont
|
|
@font_array = []
|
|
@ckeditor_path = ENV['PWD'] + '/app/assets/javascripts/ckeditor'
|
|
custom_fonts_file = "#{@ckeditor_path}/custom_fonts.txt"
|
|
@font_str = ""
|
|
if File.exist?(custom_fonts_file)
|
|
@font_str = File.read(custom_fonts_file).strip rescue ""
|
|
else
|
|
@filedata = File.read(@ckeditor_path+"/config.js.erb") rescue return
|
|
@font_str = @filedata.scan(/(config.font_names\s*=\s*(\"([^"]*)\"|\'([^']*)\'))/m).map{|a| (a[3] rescue nil)}.compact[-1]
|
|
end
|
|
@font_array = @font_str.split("\;")
|
|
@font_array.map!{|i| i.strip}
|
|
@font_array.delete("")
|
|
@font_array
|
|
end
|
|
def create_first_field
|
|
@app_title = "patchfile"
|
|
if Patchfilefield.where("title"=>(@app_title + "_back")).take_while{true}.count == 0
|
|
@field = Patchfilefield.new()
|
|
@field.title = @app_title +"_back"
|
|
@field.save
|
|
end
|
|
@field
|
|
if Patchfilefield.where("title"=>@app_title).take_while{true}.count == 0
|
|
@field = Patchfilefield.new()
|
|
@field.title=@app_title
|
|
@field.save
|
|
@field = Patchfilefield.where("title"=>@app_title).first
|
|
else
|
|
@field = Patchfilefield.where("title"=>@app_title).first
|
|
end
|
|
if params[:font] != nil
|
|
if Fontfile.where("title"=>params[:font]).first.nil? == true
|
|
@font_settings = Fontfile.new
|
|
@font_settings.title = params[:font]
|
|
@font_settings.save
|
|
end
|
|
@font_settings = Fontfile.where("title"=>params[:font]).first
|
|
end
|
|
if Filefield.where("title"=>@app_title).take_while{true}.count == 0
|
|
@file_to_show = Filefield.new()
|
|
@file_to_show.title=@app_title
|
|
@file_to_show.save
|
|
@file_to_show = Filefield.where("title"=>@app_title).first
|
|
else
|
|
@default_field = Filefield.new()
|
|
@file_to_show = Filefield.where("title"=>@app_title).first
|
|
@default_field.file_show.each do |name,property|
|
|
if @file_to_show.file_show[name] == nil
|
|
@file_to_show.file_show[name] = property
|
|
@file_to_show.save
|
|
@file_to_show = Filefield.where("title"=>@app_title).first
|
|
end
|
|
end
|
|
@default_field.file_show.each do |name,property|
|
|
property[:files].each do |file_name,sub_property|
|
|
if @file_to_show.file_show[name][:files][file_name] == nil
|
|
@file_to_show.file_show[name][:files][file_name] = sub_property
|
|
@file_to_show.save
|
|
@file_to_show = Filefield.where("title"=>@app_title).first
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end |