orbit-basic/lib/desktopapp/desktop_app_appstore.rb

96 lines
2.6 KiB
Ruby
Raw Permalink Normal View History

2012-06-26 08:59:29 +00:00
class Desktopapp::DesktopAppAppstore < Sinatra::Base
get '/desktop_appstore/appstore' do
erb :appstore
end
get '/desktop_appstore/widgets' do
erb :'appstore/widgets'
end
get '/desktop_appstore/getuserwidgets' do
# @widgets = current_user.desktop.desktop_widgets
# @groups = Array.new
# @sections = current_user.desktop.sections
# @sections.each do |section|
# @groups << section.groups
# end
# @widgets.each do |widget|
# @count = 0;
# @sectionids = Array.new
# @groups.each do |group|
# group.each do |grp|
# @widge = 0
# @gid = widget.id.to_s
# @widge = grp.tiles.where(:data_content.all => [@gid]).count
# @count = @count + @widge
# if @widge > 0
# @sectionids << grp.section_id
# end
# end
# end
# if @count > 0
# widget.status = "Installed"
# widget.section = @sectionids
# else
# widget.status = "Downloaded"
# end
# end
# @widgets.to_json
current_user.to_json
end
get '/desktop_appstore/widgets_settings' do
what = params["what"]
@widgetid = params["widget"]
@sectionid = params["section"]
@msg = Array.new
case what
when "remove"
@section = Section.find(@sectionid)
@groups = @section.groups
@groups.each do |group|
@tile = group.tiles.where(:data_content.all => [@widgetid])
if @tile.count > 0
@thistile = @tile
end
end
@t = Tile.find(@thistile.first.id)
@t.delete
@msg << {"success"=>true}
when "add"
@widget = current_user.desktop.desktop_widgets.find(@widgetid)
@section = Section.find(@sectionid)
@groups = @section.groups
@totalwidgets = 0
@groups.each do |group|
@tile = group.tiles.where(:data_content.all => [@widgetid]).count
if @tile > 0
@msg << {"success"=>false,"error"=>"Duplicate widget"}
else
no_of_widgets = group.tiles.where(:data_category.all => ["widget"]).count
@totalwidgets = @totalwidgets + no_of_widgets
end
end
if @totalwidgets >= 12
@msg << {"success"=>false,"error"=>"Section full"}
else
wshape = @widget.shape
wdata_content = @widgetid
wdata_category = "widget"
wname = @widget.name
if @groups.first.tiles.where(:data_category.all => ["widget"]).count >= 6
groupid = @groups.last.id
else
groupid = @groups.first.id
end
Tile.create(data_category: wdata_category,data_content: wdata_content, group_id: groupid, position: 10, title: wname, shape: wshape)
@msg << {"success"=>true}
end
end
@msg.to_json
end
end