very important update for widgets management..
This commit is contained in:
parent
2083e0bf4f
commit
2c3637e9b4
|
@ -55,7 +55,7 @@ var orbitDesktop = function(dom){
|
||||||
$(document).ready(function(){o.loadWallpaper(customwallpaper);o.bindDesktopEvents();o.loadIconCache();o.initializeDesktop();});
|
$(document).ready(function(){o.loadWallpaper(customwallpaper);o.bindDesktopEvents();o.loadIconCache();o.initializeDesktop();});
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
this.changeTheme = function(theme){ // this function is used for changing theme
|
this.changeTheme = function(theme){ // this function is used for changing theme
|
||||||
o.theme = theme;
|
o.theme = theme;
|
||||||
$.getJSON("/"+o.themefolder+"/"+theme+"/settings/"+theme+".json",function(ts){
|
$.getJSON("/"+o.themefolder+"/"+theme+"/settings/"+theme+".json",function(ts){
|
||||||
|
@ -1098,24 +1098,116 @@ var orbitDesktop = function(dom){
|
||||||
}
|
}
|
||||||
var widgets = function(){
|
var widgets = function(){
|
||||||
var bindHandlers = function(){
|
var bindHandlers = function(){
|
||||||
|
$("#widget_list a").click(function(){
|
||||||
|
var sectionid = $(this).attr("for");
|
||||||
|
var widgetid = $(this).parent().parent().attr("for");
|
||||||
|
switch($(this).attr("href")){
|
||||||
|
case "addthis":
|
||||||
|
$this = $(this);
|
||||||
|
o.confirm({
|
||||||
|
message: "Are you sure you want to add this widget?",
|
||||||
|
buttons: ['Yes','No'],
|
||||||
|
highlighted: 1
|
||||||
|
},function(reply){
|
||||||
|
if(reply){
|
||||||
|
$.post("desktop_appstore/widgets_settings",{section:sectionid, widget:widgetid, what:"add"},function(result){
|
||||||
|
if(result[0].success){
|
||||||
|
$this.attr("href","removethis");
|
||||||
|
$targetDom = $this.parent().parent().find("div.status");
|
||||||
|
$parentDom = $this.parent();
|
||||||
|
if($targetDom.find("a").length == 0)
|
||||||
|
$targetDom.html("Status : Installed on");
|
||||||
|
$targetDom.append(" ").append($this);
|
||||||
|
if($parentDom.find("a").length == 0)
|
||||||
|
$parentDom.empty();
|
||||||
|
o.desktopData["home"]="";
|
||||||
|
o.notify("Widget added.","success",2);
|
||||||
|
}else{
|
||||||
|
o.notify(result[0].error,"imp",2);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case "removethis":
|
||||||
|
$this = $(this);
|
||||||
|
o.confirm({
|
||||||
|
message: "Are you sure you want to remove this widget?",
|
||||||
|
buttons: ['Yes','No'],
|
||||||
|
highlighted: 2
|
||||||
|
},function(reply){
|
||||||
|
if(reply){
|
||||||
|
$.post("desktop_appstore/widgets_settings",{section:sectionid, widget:widgetid, what:"remove"},function(result){
|
||||||
|
if(result[0].success){
|
||||||
|
$this.attr("href","addthis");
|
||||||
|
$targetDom = $this.parent().parent().find("div.not_status");
|
||||||
|
$parentDom = $this.parent();
|
||||||
|
if($targetDom.html()=="")
|
||||||
|
$targetDom.html("Install on");
|
||||||
|
$targetDom.append(" ").append($this);
|
||||||
|
if($parentDom.find("a").length == 0)
|
||||||
|
$parentDom.html("Status : Downloaded");
|
||||||
|
o.desktopData["home"]="";
|
||||||
|
o.notify("Widget removed.","success",2);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
})
|
||||||
}
|
}
|
||||||
$("div#apps_store div#panel_r").load("/desktop_appstore/widgets",function(){
|
$("div#apps_store div#panel_r").load("/desktop_appstore/widgets",function(){
|
||||||
$.getJSON("/desktop_appstore/getuserwidgets",function(userwidgets){
|
$.getJSON("/desktop_appstore/getuserwidgets",function(userwidgets){
|
||||||
var column = $('<div class="g_col list_t"><ul></ul></div>'),
|
var column = $('<div class="g_col list_t" style="width:350px;"><ul></ul></div>'),
|
||||||
counter = 1,
|
counter = 1,
|
||||||
li;
|
li;
|
||||||
$.each(userwidgets,function(i,widge){
|
$.each(userwidgets,function(i,widge){
|
||||||
li = $('<li class="list_t_item" for="'+widge._id+'"><div class="list_t_title">'+widge.name+'</div><div class="list_t_des">'+widge.shape+'</div></li>');
|
if(!widge.status)widge.status = "Downloaded";
|
||||||
|
var brick = widge.shape.split(' '),
|
||||||
|
bw = parseInt(brick[0].substr(1)),
|
||||||
|
bh = parseInt(brick[1].substr(1)),
|
||||||
|
shp = bw+" X "+bh;
|
||||||
|
li = $('<li class="list_t_item" for="'+widge._id+'"><div class="list_t_title">'+widge.name+'</div><div class="list_t_des">Author : '+widge.author+'</div><div class="list_t_des">Shape : '+shp+'</div><div class="list_t_des status">Status : '+widge.status+'</div><div class="list_t_des not_status"></div></li>');
|
||||||
|
var cur_section_names = new Array();
|
||||||
|
var section_names = new Array();
|
||||||
|
var section_links = new Array();
|
||||||
|
if(widge.section){
|
||||||
|
var s_name_list = "";
|
||||||
|
$.each(widge.section,function(x,sec){
|
||||||
|
$.each(o.sectionList,function(j,s){
|
||||||
|
if(s._id==sec){
|
||||||
|
cur_section_names.push(s.name);
|
||||||
|
s_name_list+= "<a href='removethis' for='"+s._id+"' style='text-decoration:underline;'>"+s.name +"</a> ";
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
var section_names = o.getArrayfromJson(o.sectionList,"name");
|
||||||
|
var section_links = o.getArrayfromJson(o.sectionList,"_id");
|
||||||
|
var s_name_list_not = "";
|
||||||
|
$.each(section_names,function(j,sec_name){
|
||||||
|
if($.inArray(sec_name,cur_section_names)==-1){
|
||||||
|
var sec_link = section_links[j];
|
||||||
|
s_name_list_not+= "<a href='addthis' for='"+sec_link+"' style='text-decoration:underline;'>"+sec_name+"</a> ";
|
||||||
|
}
|
||||||
|
})
|
||||||
|
li.find("div.status").html("Status : Installed on "+s_name_list);
|
||||||
|
if(s_name_list_not)
|
||||||
|
li.find("div.not_status").html("Install on "+s_name_list_not);
|
||||||
|
}else{
|
||||||
|
li.find("div.not_status").html("Install on "+o.sectionList[0].name+", "+o.sectionList[1].name+", "+o.sectionList[2].name+", "+o.sectionList[3].name);
|
||||||
|
}
|
||||||
|
//console.log(section_names);
|
||||||
column.find("ul").append(li);
|
column.find("ul").append(li);
|
||||||
if(counter%5==0){
|
if(counter%4==0){
|
||||||
$("#journal_p div#paper_list div.overview").append(column);
|
$("#apps_store div#widget_list").append(column);
|
||||||
column = $('<div class="g_col list_t"><ul></ul></div>');
|
column = $('<div class="g_col list_t" style="width:350px;"><ul></ul></div>');
|
||||||
}
|
}
|
||||||
counter++;
|
counter++;
|
||||||
})
|
})
|
||||||
//alert(column);
|
|
||||||
$("#apps_store div#widget_list").append(column);
|
$("#apps_store div#widget_list").append(column);
|
||||||
|
bindHandlers();
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,6 +79,13 @@ var orbitDesktopAPI = function(){
|
||||||
});
|
});
|
||||||
$confirm.stop(1,1).fadeIn();
|
$confirm.stop(1,1).fadeIn();
|
||||||
};
|
};
|
||||||
|
this.getArrayfromJson = function(tjson,key){
|
||||||
|
var tempArray = new Array;
|
||||||
|
$.each(tjson,function(i,val){
|
||||||
|
tempArray.push(val[key]);
|
||||||
|
})
|
||||||
|
return tempArray;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
orbitDesktopAPI.prototype.notifyImgPath = "temp";
|
orbitDesktopAPI.prototype.notifyImgPath = "temp";
|
||||||
orbitDesktopAPI.prototype.wallpaperPath = "temp";
|
orbitDesktopAPI.prototype.wallpaperPath = "temp";
|
||||||
|
|
|
@ -9,8 +9,89 @@ class DesktopAppstoreController< ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def getuserwidgets
|
def getuserwidgets
|
||||||
@widgets = current_user.desktop_widgets
|
@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
|
render :json=>@widgets.to_json
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ class Desktop
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
has_many :sections, :autosave => true, :dependent => :destroy
|
has_many :sections, :autosave => true, :dependent => :destroy
|
||||||
|
has_many :desktop_widgets, :autosave => true, :dependent => :destroy
|
||||||
|
|
||||||
before_create :initialize_section
|
before_create :initialize_section
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,9 @@ class DesktopWidget
|
||||||
field :name
|
field :name
|
||||||
field :author
|
field :author
|
||||||
field :shape
|
field :shape
|
||||||
field :user_id
|
field :desktop_id
|
||||||
|
field :status
|
||||||
|
field :section
|
||||||
|
|
||||||
belongs_to :user
|
belongs_to :desktop
|
||||||
end
|
end
|
|
@ -19,7 +19,7 @@ class User
|
||||||
has_one :desktop, :autosave => true, :dependent => :destroy
|
has_one :desktop, :autosave => true, :dependent => :destroy
|
||||||
has_many :other_accounts, :autosave => true, :dependent => :destroy
|
has_many :other_accounts, :autosave => true, :dependent => :destroy
|
||||||
has_many :journals, :autosave => true, :dependent => :destroy
|
has_many :journals, :autosave => true, :dependent => :destroy
|
||||||
has_many :desktop_widgets, :autosave => true, :dependent => :destroy
|
|
||||||
belongs_to :role
|
belongs_to :role
|
||||||
has_and_belongs_to_many :sub_roles
|
has_and_belongs_to_many :sub_roles
|
||||||
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
|
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
<div class="s_title hh3">Your Widgets</div>
|
||||||
<div class="tinycanvas hp">
|
<div class="tinycanvas hp">
|
||||||
<div class="scrollbar sb_h vp"><div class="track"><div class="thumb thmc2"><div class="end"></div></div></div></div>
|
<div class="scrollbar sb_h vp"><div class="track"><div class="thumb thmc2"><div class="end"></div></div></div></div>
|
||||||
<div class="viewport">
|
<div class="viewport">
|
||||||
<div id="connection_setting" class="overview vp">
|
<div class="overview vp">
|
||||||
<div class="s_title hh3">Your Widgets</div>
|
|
||||||
<div class="overview" id="widget_list">
|
<div class="overview" id="widget_list">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -130,6 +130,8 @@ Orbit::Application.routes.draw do
|
||||||
match '/desktop_appstore/appstore'=>'desktop_appstore#appstore'
|
match '/desktop_appstore/appstore'=>'desktop_appstore#appstore'
|
||||||
match '/desktop_appstore/widgets'=>'desktop_appstore#widgets'
|
match '/desktop_appstore/widgets'=>'desktop_appstore#widgets'
|
||||||
match '/desktop_appstore/getuserwidgets'=>'desktop_appstore#getuserwidgets'
|
match '/desktop_appstore/getuserwidgets'=>'desktop_appstore#getuserwidgets'
|
||||||
|
match '/desktop_appstore/widgets_settings'=>'desktop_appstore#widgets_settings'
|
||||||
|
|
||||||
|
|
||||||
match '/desktop/temp_func/'=>'desktop#temp_func'
|
match '/desktop/temp_func/'=>'desktop#temp_func'
|
||||||
|
|
||||||
|
|
Reference in New Issue