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'
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue