288 lines
7.8 KiB
Ruby
288 lines
7.8 KiB
Ruby
class DesktopController< ApplicationController
|
|
layout 'desktop'
|
|
before_filter :authenticate_user!
|
|
|
|
#to load pages...
|
|
|
|
def index
|
|
@desktop = current_user.desktop
|
|
@currentusername = current_user.name
|
|
@title = "Desktop - " + @currentusername
|
|
@section = @desktop.sections.first
|
|
end
|
|
|
|
def compatibility
|
|
render :layout => "compatibility"
|
|
end
|
|
|
|
def desktop
|
|
render :layout => false
|
|
end
|
|
|
|
def app_manager
|
|
render :layout => false
|
|
end
|
|
|
|
def allsections
|
|
render :layout => false
|
|
end
|
|
|
|
def settings
|
|
render :layout => false
|
|
end
|
|
|
|
def themes
|
|
@themes = DesktopTheme.all
|
|
# raise @themes.inspect
|
|
render "desktop/settings/themes", :layout => false
|
|
end
|
|
|
|
def sections
|
|
render "desktop/settings/sections", :layout => false
|
|
end
|
|
|
|
def connections
|
|
render "desktop/settings/connections", :layout => false
|
|
end
|
|
|
|
|
|
#ajax data load....
|
|
|
|
def save_desktop_settings
|
|
@desktop = Desktop.find(params["desktopid"])
|
|
@savewhat = params["save"]
|
|
case @savewhat
|
|
when "theme"
|
|
@desktop.update_attributes(:theme => params["theme"])
|
|
@desktop.update_attributes(:wallpaper => nil)
|
|
when "desktopnames"
|
|
@sections = @desktop.sections
|
|
x = 0;
|
|
@sections.each do |section|
|
|
@desktopnewnames = params["desktopnms"]
|
|
section.update_attributes(:name => @desktopnewnames[x] )
|
|
x = x+1
|
|
end
|
|
when "appnewsection"
|
|
@section = Section.find(params["newsectionid"])
|
|
@groups = @section.groups
|
|
@app = Tile.find(params["appid"])
|
|
@groups.each do |group|
|
|
@tiles = group.tiles.where(:data_category.all => ["app"])
|
|
if @tiles.length < 12
|
|
@app.update_attributes(:group_id => group.id)
|
|
break
|
|
end
|
|
end
|
|
when "customtheme"
|
|
@desktop.update_attributes(:theme => "custom")
|
|
@desktop.update_attributes(:customtheme => params['theme'])
|
|
when "wallpaper"
|
|
@desktop.update_attributes(:wallpaper => params["wallpapernm"])
|
|
end
|
|
a = Array.new
|
|
a << {"success"=>"true"}
|
|
render :json=>a.to_json
|
|
end
|
|
|
|
def get_desktop_settings
|
|
@desktop = Desktop.find(params["desktopid"])
|
|
@getwhat = params["get"]
|
|
case @getwhat
|
|
when "desktop"
|
|
render :json => @desktop.to_json
|
|
when "sectionnames"
|
|
secnames = Array.new
|
|
@sections = @desktop.sections
|
|
@sections.each do |section|
|
|
secnames << section.name
|
|
end
|
|
render :json => secnames.to_json
|
|
when "theme"
|
|
@theme = @desktop.theme
|
|
render :json => @theme.to_json
|
|
end
|
|
end
|
|
|
|
def getgroups
|
|
@section = Section.find(params["sectionid"])
|
|
@groups = @section.groups
|
|
|
|
gr = Array.new
|
|
@groups.each do |group|
|
|
a = Array.new
|
|
t = group.tiles
|
|
t.each do |tile|
|
|
data_content = ""
|
|
jsfile = []
|
|
cssfile = ""
|
|
shape = "w1 h1"
|
|
link = ""
|
|
fullsize = false
|
|
if tile.data_category == "widget"
|
|
widge = DesktopWidget.find(tile.desktop_widget_id.to_s)
|
|
# data_content = widge.widget_layout.file
|
|
data_content = "/desktop/widget_layout?id="+tile.desktop_widget_id.to_s
|
|
jsfile = widge.javascripts.collect{|js| js.file.as_json[:file]}
|
|
cssfile = widge.css_default.file.as_json[:file]
|
|
shape = widge.shape
|
|
title = widge.name
|
|
# binding.pry
|
|
fullsize = widge.fullsize
|
|
else
|
|
data_content = tile.data_content
|
|
title = tile.title
|
|
case data_content
|
|
when "envocab"
|
|
link = "http://www.english-vocabulary.eu/"
|
|
when "wikibooks"
|
|
link = "http://www.wikibooks.org"
|
|
end
|
|
end
|
|
gr << {"id"=>tile.id,"data_category"=>tile.data_category,"data_content"=>data_content,"js"=>jsfile,"css"=>cssfile,"shape"=>shape,"position"=>tile.position,"row"=>tile.row,"column"=>tile.column, "title"=>title,"fullsize"=>fullsize,"link"=>link}
|
|
|
|
|
|
end
|
|
# gr << a
|
|
end
|
|
render :json =>gr.to_json
|
|
end
|
|
|
|
def widget_layout
|
|
widget = DesktopWidget.find(params[:id])
|
|
# link = '<link href="'+widget.css_default.file.to_s+'" media="screen" rel="stylesheet" type="text/css" />'
|
|
content = widget.widget_layout.body
|
|
dhtml = content
|
|
render :text => dhtml.html_safe
|
|
end
|
|
|
|
def getsectionlist
|
|
@desktop = Desktop.find(params["desktopid"])
|
|
@sections = @desktop.sections
|
|
render :json => @sections.to_json
|
|
end
|
|
|
|
def temp_func
|
|
@section = Section.find(params["sectionid"])
|
|
@groups = @section.groups
|
|
|
|
@groups.each do |group|
|
|
a = 1;
|
|
@tiles = group.tiles
|
|
@tiles.each do |tile|
|
|
tile.update_attributes({:data_category => "widget",:data_content => "temp", :position => a})
|
|
a = a+1;
|
|
end
|
|
end
|
|
b = Array.new
|
|
b << {"success"=>"true"}
|
|
render :json=>b.to_json
|
|
end
|
|
|
|
def getapplist
|
|
@desktop = Desktop.find(params["desktopid"])
|
|
@sections = @desktop.sections
|
|
a = Array.new
|
|
@sections.each do |section|
|
|
@groups = section.groups
|
|
@groups.each do |group|
|
|
@tiles = group.tiles.where(:data_category.all => ["app"])
|
|
a << @tiles
|
|
end
|
|
end
|
|
render :json=>a.to_json
|
|
end
|
|
|
|
def getapplistforManager
|
|
@dwss = DesktopWidget.all
|
|
@tiles = Array.new
|
|
desktop = Desktop.find(params['desktopid'])
|
|
sections = desktop.sections
|
|
sections.each do |section|
|
|
groups = section.groups
|
|
groups.each do |group|
|
|
@tiles += group.tiles
|
|
end
|
|
end
|
|
@validtiles = Array.new
|
|
@allWidgets = Array.new
|
|
@dwss.each do |dw|
|
|
@id = dw.id
|
|
@validtiles = @tiles.select{|t| t.desktop_widget_id == @id}
|
|
@sections = Array.new
|
|
@validtiles.each do |vt|
|
|
grp = Group.find(vt.group_id)
|
|
sec = Section.find(grp.section_id);
|
|
@sections << {"id"=>sec.id,"name"=>sec.name}
|
|
end
|
|
@allWidgets << {"id"=>dw.id, "data_category"=> "widget","title" => dw.name, "version" => dw.version, "author"=>dw.author, "last_update"=>dw.updated_at, "icon"=>dw.images.where(:name=>dw.icon).first.file.url, "sections" => @sections}
|
|
end
|
|
render :json=>@allWidgets.to_json
|
|
end
|
|
|
|
def newpositions
|
|
@newpositions = params[:newpositions]
|
|
|
|
@newpositions.each do |t|
|
|
@this_tile = t.last
|
|
@tile = Tile.find(@this_tile['id'])
|
|
@tile.update_attributes({:row => @this_tile['row'],:column => @this_tile['col']})
|
|
end
|
|
# @newpositions = params["newpos"]
|
|
# @section = Section.find(params["sectionid"])
|
|
# @groupids = params["groupids"]
|
|
# @groups = @section.groups
|
|
# z = 0
|
|
# @newpositions.each do |grp|
|
|
# x = 1
|
|
# grp.each do |tileid|
|
|
# if x != 1
|
|
# y = 1
|
|
# tileid.each do |id|
|
|
# @tile = Tile.find(id)
|
|
# @tile.update_attributes({:position => y})
|
|
# if @tile.group_id != @groupids[z]
|
|
# @tile.update_attributes({:group_id => @groupids[z]})
|
|
# end
|
|
# y = y + 1
|
|
# end
|
|
# z = z + 1
|
|
# end
|
|
# x = x + 1
|
|
# end
|
|
# end
|
|
b = Array.new
|
|
b << {"success"=>"true"}
|
|
render :json=>b.to_json
|
|
end
|
|
|
|
def forgmail
|
|
|
|
feed = Net::HTTP.get_response(URI.parse("https://mail.google.com/mail/feed/atom")).body
|
|
render :xml=>feed
|
|
end
|
|
|
|
def appactivation
|
|
@group = Section.find(params[:section_id]).groups.first
|
|
@widget = DesktopWidget.find(params[:widget_id])
|
|
status = params[:status]
|
|
|
|
case status
|
|
when "true"
|
|
tile = Tile.new(data_category: "widget", position: 8, desktop_widget_id: @widget.id)
|
|
@group.tiles+=[tile]
|
|
@group.save
|
|
when "false"
|
|
tile = @group.tiles.where("desktop_widget_id"=>@widget.id).first
|
|
if tile != nil
|
|
tile.destroy
|
|
end
|
|
end
|
|
|
|
b = Array.new
|
|
b = {"success"=>"true"}
|
|
render :json=>b.to_json
|
|
end
|
|
|
|
end
|