98 lines
2.4 KiB
Ruby
98 lines
2.4 KiB
Ruby
class DesktopAppstoreController< ApplicationController
|
|
|
|
def appstore
|
|
render "desktop/appstore", :layout => false
|
|
end
|
|
|
|
def widgets
|
|
render "desktop/appstore/widgets", :layout => false
|
|
end
|
|
|
|
def getuserwidgets
|
|
@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
|
|
render :json=>@widgets.to_json
|
|
end
|
|
|
|
def widgets_settings
|
|
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
|
|
|
|
render :json=>@msg.to_json
|
|
end
|
|
|
|
end
|
|
|