Merge branch 'desktop_harry' into desktop_devin
							
								
								
									
										1
									
								
								Gemfile
								
								
								
								
							
							
						
						|  | @ -26,6 +26,7 @@ gem 'sprockets' | ||||||
| gem 'tinymce-rails' | gem 'tinymce-rails' | ||||||
| gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux") | gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux") | ||||||
| gem 'mongoid-encryptor', :require => 'mongoid/encryptor' | gem 'mongoid-encryptor', :require => 'mongoid/encryptor' | ||||||
|  | # gem 'twitter' | ||||||
| 
 | 
 | ||||||
| # Gems used only for assets and not required | # Gems used only for assets and not required | ||||||
| # in production environments by default. | # in production environments by default. | ||||||
|  |  | ||||||
|  | @ -26,7 +26,7 @@ var orbitDesktop = function(dom){ | ||||||
| 	this.transitionTime = 500; | 	this.transitionTime = 500; | ||||||
| 	this.currenthtml = "desktop.html"; | 	this.currenthtml = "desktop.html"; | ||||||
| 	this.currentface = "home"; | 	this.currentface = "home"; | ||||||
| 	this.desktopData = {"home":"","settings":"","work":"","favorite":"","apps_manager":"","sections":"","journal_p":""}; | 	this.desktopData = {"home":"","settings":"","work":"","favorite":"","apps_manager":"","sections":"","journal_p":"","appstore":""}; | ||||||
| 	this.tp = ""; | 	this.tp = ""; | ||||||
| 	this.sectionList; | 	this.sectionList; | ||||||
| 	this.initialize = function(){ | 	this.initialize = function(){ | ||||||
|  | @ -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){ | ||||||
|  | @ -112,6 +112,15 @@ var orbitDesktop = function(dom){ | ||||||
| 				}); | 				}); | ||||||
| 			} | 			} | ||||||
| 		}); | 		}); | ||||||
|  | 		$("a#d_appstore").click(function(){ | ||||||
|  | 			var target = $(this).attr("href"); | ||||||
|  | 			if(o.currenthtml!=target){ | ||||||
|  | 				o.desktopData[o.currentface] = $(o.contentHolder).html(); | ||||||
|  | 				$("#content").hide("drop",o.transitionTime,function(){ | ||||||
|  | 					o.initializeAppstore(target); | ||||||
|  | 				}); | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
| 		$(window).resize(function(){ | 		$(window).resize(function(){ | ||||||
| 			var ww = $(window).width(); | 			var ww = $(window).width(); | ||||||
| 			$("img#thmbackground").attr({"width":ww}); | 			$("img#thmbackground").attr({"width":ww}); | ||||||
|  | @ -314,9 +323,7 @@ var orbitDesktop = function(dom){ | ||||||
| 	}; | 	}; | ||||||
| 	 | 	 | ||||||
| 	this.tempFunc = function(th){ | 	this.tempFunc = function(th){ | ||||||
| 		o.confirm("What","","",function(reply){ | 		$.post("desktop/twitter",function(){}); | ||||||
| 			alert(reply); |  | ||||||
| 		}) |  | ||||||
| 	}; | 	}; | ||||||
| 	 | 	 | ||||||
| 	this.initializeAppSearch = function(target){   //this is application search ie is app manager initialization
 | 	this.initializeAppSearch = function(target){   //this is application search ie is app manager initialization
 | ||||||
|  | @ -1020,7 +1027,7 @@ var orbitDesktop = function(dom){ | ||||||
| 				bindSecondaryHandlers(); | 				bindSecondaryHandlers(); | ||||||
| 			} | 			} | ||||||
| 			 | 			 | ||||||
| 			$("div#settings div#panel_r").load("/desktop/journal_p_list",function(){ | 			$("div#journal_p div#panel_r").load("/desktop/journal_p_list",function(){ | ||||||
| 				$.getJSON("/desktop_publications/getjournals",function(journals){ | 				$.getJSON("/desktop_publications/getjournals",function(journals){ | ||||||
| 					journalData = eval(journals); | 					journalData = eval(journals); | ||||||
| 					journalview(); | 					journalview(); | ||||||
|  | @ -1048,7 +1055,7 @@ var orbitDesktop = function(dom){ | ||||||
| 					.delay(1500) | 					.delay(1500) | ||||||
| 					.addClass('op00', 500); | 					.addClass('op00', 500); | ||||||
| 			} | 			} | ||||||
| 			$("div#settings div#panel_r").load("/desktop/journal_p_add",function(){ | 			$("div#journal_p div#panel_r").load("/desktop/journal_p_add",function(){ | ||||||
| 				bindHandlers(); | 				bindHandlers(); | ||||||
| 			}) | 			}) | ||||||
| 		} | 		} | ||||||
|  | @ -1064,6 +1071,161 @@ var orbitDesktop = function(dom){ | ||||||
| 			list(); | 			list(); | ||||||
| 		} | 		} | ||||||
| 	}; | 	}; | ||||||
|  | 	this.initializeAppstore = function(target){ | ||||||
|  | 		o.currenthtml = target; | ||||||
|  | 		o.currentface = "appstore"; | ||||||
|  | 		var bindHandlers = function(){ | ||||||
|  | 			$('.s_menu a').on({ | ||||||
|  | 				click: function(){ | ||||||
|  | 					if(!$(this).hasClass('active')){ | ||||||
|  | 						var tfunc = $(this).attr('href'); | ||||||
|  | 						switch(tfunc){ | ||||||
|  | 							case 'widgets': | ||||||
|  | 								widgets(); | ||||||
|  | 							break; | ||||||
|  | 						} | ||||||
|  | 						$('.s_menu a').removeClass('thmc1 thmtxt active'); | ||||||
|  | 						$(this).addClass('thmc1 thmtxt active'); | ||||||
|  | 					} | ||||||
|  | 				}, | ||||||
|  | 				mouseenter: function(){ | ||||||
|  | 					if(!$(this).hasClass('active')){ | ||||||
|  | 						$(this).switchClass('admtxt','thmc1 thmtxt',0); | ||||||
|  | 					} | ||||||
|  | 				}, | ||||||
|  | 				mouseleave: function(){ | ||||||
|  | 					var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt'; | ||||||
|  | 					$(this).switchClass(t,'admtxt',0); | ||||||
|  | 				} | ||||||
|  | 			}); | ||||||
|  | 		} | ||||||
|  | 		var widgets = 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(){ | ||||||
|  | 				$.getJSON("/desktop_appstore/getuserwidgets",function(userwidgets){ | ||||||
|  | 					var column = $('<div class="g_col list_t" style="width:350px;"><ul></ul></div>'), | ||||||
|  | 						counter = 1, | ||||||
|  | 						li; | ||||||
|  | 					$.each(userwidgets,function(i,widge){ | ||||||
|  | 						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); | ||||||
|  | 							if(counter%4==0){ | ||||||
|  | 								$("#apps_store div#widget_list").append(column); | ||||||
|  | 								column = $('<div class="g_col list_t" style="width:350px;"><ul></ul></div>'); | ||||||
|  | 							} | ||||||
|  | 							counter++; | ||||||
|  | 					}) | ||||||
|  | 				$("#apps_store div#widget_list").append(column); | ||||||
|  | 				bindHandlers(); | ||||||
|  | 				}) | ||||||
|  | 			}) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if(!o.desktopData[o.currentface]){ | ||||||
|  | 			$(o.contentHolder).empty().load("/desktop_appstore/"+target,function(){ | ||||||
|  | 				widgets(); | ||||||
|  | 				bindHandlers(); | ||||||
|  | 			}); | ||||||
|  | 		}else{ | ||||||
|  | 			$(o.contentHolder).html(o.desktopData[o.currentface]); | ||||||
|  | 			widgets(); | ||||||
|  | 			bindHandlers(); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	this.loadWallpaper = function(wallpaper){  // this is to load new wallpaper 
 | 	this.loadWallpaper = function(wallpaper){  // this is to load new wallpaper 
 | ||||||
| 		if(!wallpaper)wallpapernm = o.themesettings.background;else wallpapernm = wallpaper | 		if(!wallpaper)wallpapernm = o.themesettings.background;else wallpapernm = wallpaper | ||||||
| 		var ww = $(window).width(); | 		var ww = $(window).width(); | ||||||
|  |  | ||||||
|  | @ -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"; | ||||||
|  |  | ||||||
|  | @ -0,0 +1,97 @@ | ||||||
|  | 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 | ||||||
|  | 
 | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| class DesktopPublicationsController< ApplicationController | class DesktopPublicationsController< ApplicationController | ||||||
| 	def journal_p | 	  def journal_p | ||||||
|     	render "desktop/journal_p", :layout => false |       	render "desktop/journal_p", :layout => false | ||||||
|  	end |    	end | ||||||
|    |    | ||||||
|   	def journal_p_list |   	def journal_p_list | ||||||
|     	render "desktop/journal_pages/list", :layout => false |     	render "desktop/journal_pages/list", :layout => false | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ class OtheraccountsController< ApplicationController | ||||||
|   require 'rexml/document' |   require 'rexml/document' | ||||||
|   require 'net/http'  |   require 'net/http'  | ||||||
|   require 'net/https' |   require 'net/https' | ||||||
|  |  # require 'twitter' | ||||||
|   include REXML |   include REXML | ||||||
| 
 | 
 | ||||||
|   def saveaccountinfo |   def saveaccountinfo | ||||||
|  | @ -50,6 +51,12 @@ class OtheraccountsController< ApplicationController | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def twitter |   def twitter | ||||||
|  |     # token = "Yh9qYe0lhWk27TZJamnhrA" | ||||||
|  |     # secret = "iBgxJ5BrxfGFLkp7aB6pyCSzd0zcJiYDqJGFBK6Wdo" | ||||||
|  |     # oauth = Twitter::OAuth.new(token,secret) | ||||||
|  | 
 | ||||||
|  |     # oauth_token = oauth.request_token.token | ||||||
|  |     # oauth_secret = oauth.request_token.secret | ||||||
| 
 | 
 | ||||||
|   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 | ||||||
|    |    | ||||||
|  |  | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | class DesktopWidget | ||||||
|  | 	include Mongoid::Document | ||||||
|  |   	include Mongoid::Timestamps | ||||||
|  | 
 | ||||||
|  |   	field :name | ||||||
|  |   	field :author | ||||||
|  |   	field :shape | ||||||
|  |   	field :desktop_id | ||||||
|  |   	field :status | ||||||
|  |   	field :section | ||||||
|  | 
 | ||||||
|  |   	belongs_to :desktop | ||||||
|  | end | ||||||
|  | @ -19,6 +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 | ||||||
|  |    | ||||||
|   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 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,26 @@ | ||||||
|  | <div id="apps_store"> | ||||||
|  | <div id="content"> | ||||||
|  | 	<div id="header" class="hh3"> | ||||||
|  | 		<div class="dtitle w2 hh3 hp"> | ||||||
|  | 			<span class="thmtxth">App Store</span> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  | 	<div id="holder"> | ||||||
|  | 		 | ||||||
|  | 				<div id="panel_l" class="ph"> | ||||||
|  | 					<div class="s_menu sm_v"> | ||||||
|  | 						<ul id='setting_left_nav'> | ||||||
|  | 							<li><a href="" class="admtxt hh2 w2 hp" onclick='return false;'>Online Store</a></li> | ||||||
|  | 							<li><a href="widgets" class="admtxt hh2 w2 hp" onclick='return false;'>Widgets</a></li> | ||||||
|  | 							<li><a href="" class="admtxt hh2 w2 hp" onclick='return false;'>Apps</a></li> | ||||||
|  | 							<li><a href="" class="admtxt hh2 w2 hp" onclick='return false;'>Registeration</a></li> | ||||||
|  | 						</ul> | ||||||
|  | 					</div> | ||||||
|  | 				</div> | ||||||
|  | 				<div id="panel_r" class="ph pw admbg hp"> | ||||||
|  | 					 | ||||||
|  | 				</div> | ||||||
|  | 			<div class="clear"></div> | ||||||
|  | 	</div> | ||||||
|  | </div> | ||||||
|  | </div> | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | <div class="s_title hh3">Your Widgets</div> | ||||||
|  | <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="viewport"> | ||||||
|  | 		<div class="overview vp"> | ||||||
|  | 			<div class="overview" id="widget_list"> | ||||||
|  | 				 | ||||||
|  | 			</div> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  | </div> | ||||||
|  | @ -1,10 +1,13 @@ | ||||||
| <div id="journal_p"> | <div id="journal_p"> | ||||||
| 	<div id="settings"> |  | ||||||
| 	<div id="content"> | 	<div id="content"> | ||||||
| 		<div id="header" class="hh3"> | 		<div id="header" class="hh3"> | ||||||
| 			<div class="dtitle w2 hh3 hp"> | 			<div class="dtitle w2 hh3 hp"> | ||||||
| 				<span class="thmtxth">Journal Papers</span> | 				<span class="thmtxth">Journal Papers</span> | ||||||
| 			</div> | 			</div> | ||||||
|  | 			<div id="search_app" class="hfn w2 hh2 hp thmc3"> | ||||||
|  | 			<input type="text" class="ini_input form" value="Search" id="searchbox" /> | ||||||
|  | 			<input type="submit" class="ini_input submit thmc1" value="Submit"/> | ||||||
|  | 		</div> | ||||||
| 		</div> | 		</div> | ||||||
| 		<div id="holder"> | 		<div id="holder"> | ||||||
| 			<div id="panel_l" class="ph"> | 			<div id="panel_l" class="ph"> | ||||||
|  |  | ||||||
|  | @ -39,5 +39,6 @@ | ||||||
| 				</li> | 				</li> | ||||||
| 			</ul> | 			</ul> | ||||||
| 		</div> | 		</div> | ||||||
|  | 		<!-- <div style="z-index:999;position:relative;"><button onclick="o.tempFunc()">Twitter</button> --> | ||||||
| 	</div> | 	</div> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | @ -116,15 +116,22 @@ Orbit::Application.routes.draw do | ||||||
|   match '/desktop/newpositions/'=>'desktop#newpositions' |   match '/desktop/newpositions/'=>'desktop#newpositions' | ||||||
|   match '/desktop/settingconnection/'=>'desktop#settingconnection' |   match '/desktop/settingconnection/'=>'desktop#settingconnection' | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|   match '/desktop/journal_p/'=>'desktop_publications#journal_p' |   match '/desktop/journal_p/'=>'desktop_publications#journal_p' | ||||||
|   match '/desktop/journal_p_list/'=>'desktop_publications#journal_p_list' |   match '/desktop/journal_p_list/'=>'desktop_publications#journal_p_list' | ||||||
|   match '/desktop/journal_p_add/'=>'desktop_publications#journal_p_add' |   match '/desktop/journal_p_add/'=>'desktop_publications#journal_p_add' | ||||||
|   match '/desktop_publications/getjournals' => 'desktop_publications#getjournals' |   match '/desktop_publications/getjournals' => 'desktop_publications#getjournals' | ||||||
| 
 | 
 | ||||||
|   |   match '/desktop/twitter/'=>'otheraccounts#twitter' | ||||||
|   match '/desktop/forgmail/'=>'otheraccounts#gmail' |   match '/desktop/forgmail/'=>'otheraccounts#gmail' | ||||||
|   match '/desktop/getaccounts'=>'otheraccounts#getaccounts' |   match '/desktop/getaccounts'=>'otheraccounts#getaccounts' | ||||||
|   match '/desktop/save_account_info/'=>'otheraccounts#saveaccountinfo' |   match '/desktop/save_account_info/'=>'otheraccounts#saveaccountinfo' | ||||||
|  | 
 | ||||||
|  |   match '/desktop_appstore/appstore'=>'desktop_appstore#appstore' | ||||||
|  |   match '/desktop_appstore/widgets'=>'desktop_appstore#widgets' | ||||||
|  |   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' | ||||||
|    |    | ||||||
|  |  | ||||||
| Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB | 
| Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB | 
| Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB | 
|  | @ -51,16 +51,16 @@ | ||||||
| .clock .bg.left{ left:0px; } | .clock .bg.left{ left:0px; } | ||||||
| 
 | 
 | ||||||
| /* Individual styles for each color: */ | /* Individual styles for each color: */ | ||||||
| .orange .bg.left{ background:url(desktop_widgets/clock/img/bg_orange.png) no-repeat left top; } | .orange .bg.left{ background:url(desktop_widgets/4fa7810ac88514014d7c59bc/img/bg_orange.png) no-repeat left top; } | ||||||
| .green .bg.left{ background:url(desktop_widgets/clock/img/bg_green.png) no-repeat left top; } | .green .bg.left{ background:url(desktop_widgets/4fa7810ac88514014d7c59bc/img/bg_green.png) no-repeat left top; } | ||||||
| .blue .bg.left{	background:url(desktop_widgets/clock/img/bg_blue.png) no-repeat left top; } | .blue .bg.left{	background:url(desktop_widgets/4fa7810ac88514014d7c59bc/img/bg_blue.png) no-repeat left top; } | ||||||
| 
 | 
 | ||||||
| /* The right part of the background: */ | /* The right part of the background: */ | ||||||
| .clock .bg.right{ left:37.5px; } | .clock .bg.right{ left:37.5px; } | ||||||
| 
 | 
 | ||||||
| .orange .bg.right{ background:url(desktop_widgets/clock/img/bg_orange.png) no-repeat right top; } | .orange .bg.right{ background:url(desktop_widgets/4fa7810ac88514014d7c59bc/img/bg_orange.png) no-repeat right top; } | ||||||
| .green .bg.right{ background:url(desktop_widgets/clock/img/bg_green.png) no-repeat right top; } | .green .bg.right{ background:url(desktop_widgets/4fa7810ac88514014d7c59bc/img/bg_green.png) no-repeat right top; } | ||||||
| .blue .bg.right{ background:url(desktop_widgets/clock/img/bg_blue.png) no-repeat right top; } | .blue .bg.right{ background:url(desktop_widgets/4fa7810ac88514014d7c59bc/img/bg_blue.png) no-repeat right top; } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .clock .front.left{ | .clock .front.left{ | ||||||
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB | 
|  | @ -22,7 +22,7 @@ input { | ||||||
| </style> | </style> | ||||||
| <center> | <center> | ||||||
| <form id="search"> | <form id="search"> | ||||||
| <img src="desktop_widgets/googlesearch/img/google_64.png" style='margin-right:10px;'><br /> | <img src="desktop_widgets/4fa78140c88514014d7c59be/img/google_64.png" style='margin-right:10px;'><br /> | ||||||
| <input id="googlesearch"> | <input id="googlesearch"> | ||||||
| <input type="submit" style="display:none;"> | <input type="submit" style="display:none;"> | ||||||
| <br> | <br> | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| var eventsjson = new Array; | var eventsjson = new Array; | ||||||
| var loadEvents = function(){ | var loadEvents = function(){ | ||||||
| 	$.getJSON(o.widgetfolder+"/school_events/events.json",function(events){ | 	$.getJSON(o.widgetfolder+"/4fa78153c88514014d7c59bf/events.json",function(events){ | ||||||
| 		$.each(events,function(i,event){ | 		$.each(events,function(i,event){ | ||||||
| 			eventsjson.push(event); | 			eventsjson.push(event); | ||||||
| 		}) | 		}) | ||||||
| Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB | 
|  | @ -28,7 +28,7 @@ | ||||||
| </style> | </style> | ||||||
| <div class="g_weather"> | <div class="g_weather"> | ||||||
| 	<div class="gw_recent"> | 	<div class="gw_recent"> | ||||||
| 		<img src="desktop_widgets/weather/img/sunny.png" alt="sunny" class="gw_condition"> | 		<img src="desktop_widgets/4fa7817cc88514014d7c59c2/img/sunny.png" alt="sunny" class="gw_condition"> | ||||||
| 		<div class="gw_temp"> | 		<div class="gw_temp"> | ||||||
| 			<span class="gw_temp_num thmtxt">29</span><span class="gw_temp_unit thmtxt">°C</span> | 			<span class="gw_temp_num thmtxt">29</span><span class="gw_temp_unit thmtxt">°C</span> | ||||||
| 		</div> | 		</div> | ||||||
|  | @ -1,171 +0,0 @@ | ||||||
| /*! |  | ||||||
|  * jquery.tzineClock.js - Tutorialzine Colorful Clock Plugin |  | ||||||
|  * |  | ||||||
|  * Copyright (c) 2009 Martin Angelov |  | ||||||
|  * http://tutorialzine.com/
 |  | ||||||
|  * |  | ||||||
|  * Licensed under MIT |  | ||||||
|  * http://www.opensource.org/licenses/mit-license.php
 |  | ||||||
|  * |  | ||||||
|  * Launch  : December 2009 |  | ||||||
|  * Version : 1.0 |  | ||||||
|  * Released: Monday 28th December, 2009 - 00:00 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| (function($){ |  | ||||||
| 	 |  | ||||||
| 	// A global array used by the functions of the plug-in:
 |  | ||||||
| 	var gVars = {}; |  | ||||||
| 
 |  | ||||||
| 	// Extending the jQuery core:
 |  | ||||||
| 	$.fn.tzineClock = function(opts){ |  | ||||||
| 	 |  | ||||||
| 		// "this" contains the elements that were selected when calling the plugin: $('elements').tzineClock();
 |  | ||||||
| 		// If the selector returned more than one element, use the first one:
 |  | ||||||
| 		 |  | ||||||
| 		var container = this.eq(0); |  | ||||||
| 	 |  | ||||||
| 		if(!container) |  | ||||||
| 		{ |  | ||||||
| 			try{ |  | ||||||
| 				console.log("Invalid selector!"); |  | ||||||
| 			} catch(e){} |  | ||||||
| 			 |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		if(!opts) opts = {};  |  | ||||||
| 		 |  | ||||||
| 		var defaults = { |  | ||||||
| 			/* Additional options will be added in future versions of the plugin. */ |  | ||||||
| 		}; |  | ||||||
| 		 |  | ||||||
| 		/* Merging the provided options with the default ones (will be used in future versions of the plugin): */ |  | ||||||
| 		$.each(defaults,function(k,v){ |  | ||||||
| 			opts[k] = opts[k] || defaults[k]; |  | ||||||
| 		}) |  | ||||||
| 
 |  | ||||||
| 		// Calling the setUp function and passing the container,
 |  | ||||||
| 		// will be available to the setUp function as "this":
 |  | ||||||
| 		setUp.call(container); |  | ||||||
| 		 |  | ||||||
| 		return this; |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	function setUp() |  | ||||||
| 	{ |  | ||||||
| 		// The colors of the dials:
 |  | ||||||
| 		var colors = ['orange','blue','green']; |  | ||||||
| 		 |  | ||||||
| 		var tmp; |  | ||||||
| 		 |  | ||||||
| 		for(var i=0;i<3;i++) |  | ||||||
| 		{ |  | ||||||
| 			// Creating a new element and setting the color as a class name:
 |  | ||||||
| 			 |  | ||||||
| 			tmp = $('<div>').attr('class',colors[i]+' clock').html( |  | ||||||
| 				'<div class="display"></div>'+ |  | ||||||
| 				 |  | ||||||
| 				'<div class="front left"></div>'+ |  | ||||||
| 				 |  | ||||||
| 				'<div class="rotate left">'+ |  | ||||||
| 					'<div class="bg left"></div>'+ |  | ||||||
| 				'</div>'+ |  | ||||||
| 				 |  | ||||||
| 				'<div class="rotate right">'+ |  | ||||||
| 					'<div class="bg right"></div>'+ |  | ||||||
| 				'</div>' |  | ||||||
| 			); |  | ||||||
| 			 |  | ||||||
| 			// Appending to the container:
 |  | ||||||
| 			$(this).append(tmp); |  | ||||||
| 			 |  | ||||||
| 			// Assigning some of the elements as variables for speed:
 |  | ||||||
| 			tmp.rotateLeft = tmp.find('.rotate.left'); |  | ||||||
| 			tmp.rotateRight = tmp.find('.rotate.right'); |  | ||||||
| 			tmp.display = tmp.find('.display'); |  | ||||||
| 			 |  | ||||||
| 			// Adding the dial as a global variable. Will be available as gVars.colorName
 |  | ||||||
| 			gVars[colors[i]] = tmp; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		// Setting up a interval, executed every 1000 milliseconds:
 |  | ||||||
| 		setInterval(function(){ |  | ||||||
| 		 |  | ||||||
| 			var currentTime = new Date(); |  | ||||||
| 			var h = currentTime.getHours(); |  | ||||||
| 			var m = currentTime.getMinutes(); |  | ||||||
| 			var s = currentTime.getSeconds(); |  | ||||||
| 			 |  | ||||||
| 			animation(gVars.green, s, 60); |  | ||||||
| 			animation(gVars.blue, m, 60); |  | ||||||
| 			animation(gVars.orange, h, 24); |  | ||||||
| 		 |  | ||||||
| 		},1000); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	function animation(clock, current, total) |  | ||||||
| 	{ |  | ||||||
| 		// Calculating the current angle:
 |  | ||||||
| 		var angle = (360/total)*(current+1); |  | ||||||
| 	 |  | ||||||
| 		var element; |  | ||||||
| 
 |  | ||||||
| 		if(current==0) |  | ||||||
| 		{ |  | ||||||
| 			// Hiding the right half of the background:
 |  | ||||||
| 			clock.rotateRight.hide(); |  | ||||||
| 			 |  | ||||||
| 			// Resetting the rotation of the left part:
 |  | ||||||
| 			rotateElement(clock.rotateLeft,0); |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		if(angle<=180) |  | ||||||
| 		{ |  | ||||||
| 			// The left part is rotated, and the right is currently hidden:
 |  | ||||||
| 			element = clock.rotateLeft; |  | ||||||
| 		} |  | ||||||
| 		else |  | ||||||
| 		{ |  | ||||||
| 			// The first part of the rotation has completed, so we start rotating the right part:
 |  | ||||||
| 			clock.rotateRight.show(); |  | ||||||
| 			clock.rotateLeft.show(); |  | ||||||
| 			 |  | ||||||
| 			rotateElement(clock.rotateLeft,180); |  | ||||||
| 			 |  | ||||||
| 			element = clock.rotateRight; |  | ||||||
| 			angle = angle-180; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		rotateElement(element,angle); |  | ||||||
| 		 |  | ||||||
| 		// Setting the text inside of the display element, inserting a leading zero if needed:
 |  | ||||||
| 		clock.display.html(current<10?'0'+current:current); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	function rotateElement(element,angle) |  | ||||||
| 	{ |  | ||||||
| 		// Rotating the element, depending on the browser:
 |  | ||||||
| 		var rotate = 'rotate('+angle+'deg)'; |  | ||||||
| 		 |  | ||||||
| 		if(element.css('MozTransform')!=undefined) |  | ||||||
| 			element.css('MozTransform',rotate); |  | ||||||
| 			 |  | ||||||
| 		else if(element.css('WebkitTransform')!=undefined) |  | ||||||
| 			element.css('WebkitTransform',rotate); |  | ||||||
| 	 |  | ||||||
| 		// A version for internet explorer using filters, works but is a bit buggy (no surprise here):
 |  | ||||||
| 		else if(element.css("filter")!=undefined) |  | ||||||
| 		{ |  | ||||||
| 			var cos = Math.cos(Math.PI * 2 / 360 * angle); |  | ||||||
| 			var sin = Math.sin(Math.PI * 2 / 360 * angle); |  | ||||||
| 			 |  | ||||||
| 			element.css("filter","progid:DXImageTransform.Microsoft.Matrix(M11="+cos+",M12=-"+sin+",M21="+sin+",M22="+cos+",SizingMethod='auto expand',FilterType='nearest neighbor')"); |  | ||||||
| 	 |  | ||||||
| 			element.css("left",-Math.floor((element.width()-200)/2)); |  | ||||||
| 			element.css("top",-Math.floor((element.height()-200)/2)); |  | ||||||
| 		} |  | ||||||
| 	 |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| })(jQuery) |  | ||||||
| Before Width: | Height: | Size: 9.4 KiB | 
| Before Width: | Height: | Size: 6.7 KiB | 
| Before Width: | Height: | Size: 9.5 KiB | 
|  | @ -1,76 +0,0 @@ | ||||||
| <style> |  | ||||||
| .clock{ |  | ||||||
| 	/* The .clock div. Created dynamically by jQuery */ |  | ||||||
| 	background-color:#252525; |  | ||||||
| 	height:75px; |  | ||||||
| 	width:75px; |  | ||||||
| 	position:relative; |  | ||||||
| 	overflow:hidden; |  | ||||||
| 	float:left; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .clock .rotate{ |  | ||||||
| 	/* There are two .rotate divs - one for each half of the background */ |  | ||||||
| 	position:absolute; |  | ||||||
| 	width:75px; |  | ||||||
| 	height:75px; |  | ||||||
| 	top:0; |  | ||||||
| 	left:0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .rotate.right{ |  | ||||||
| 	display:none; |  | ||||||
| 	z-index:11; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .clock .bg, .clock .front{ |  | ||||||
| 	width:37.5px; |  | ||||||
| 	height:75px; |  | ||||||
| 	background-color:#252525; |  | ||||||
| 	position:absolute; |  | ||||||
| 	top:0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .clock .display{ |  | ||||||
| 	/* Holds the number of seconds, minutes or hours respectfully */ |  | ||||||
| 	position:absolute; |  | ||||||
| 	width:75px; |  | ||||||
| 	font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif; |  | ||||||
| 	z-index:20; |  | ||||||
| 	color:#F5F5F5; |  | ||||||
| 	font-size:22.5px; |  | ||||||
| 	text-align:center; |  | ||||||
| 	top:27.5px; |  | ||||||
| 	left:0; |  | ||||||
| 	 |  | ||||||
| 	/* CSS3 text shadow: */ |  | ||||||
| 	text-shadow:4px 4px 5px #333333; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* The left part of the background: */ |  | ||||||
| 
 |  | ||||||
| .clock .bg.left{ left:0; } |  | ||||||
| 
 |  | ||||||
| /* Individual styles for each color: */ |  | ||||||
| .orange .bg.left{ background:url(desktop_widgets/clock/img/bg_orange.png) no-repeat left top; } |  | ||||||
| .green .bg.left{ background:url(desktop_widgets/clock/img/bg_green.png) no-repeat left top; } |  | ||||||
| .blue .bg.left{	background:url(desktop_widgets/clock/img/bg_blue.png) no-repeat left top; } |  | ||||||
| 
 |  | ||||||
| /* The right part of the background: */ |  | ||||||
| .clock .bg.right{ left:37.5px; } |  | ||||||
| 
 |  | ||||||
| .orange .bg.right{ background:url(desktop_widgets/clock/img/bg_orange.png) no-repeat right top; } |  | ||||||
| .green .bg.right{ background:url(desktop_widgets/clock/img/bg_green.png) no-repeat right top; } |  | ||||||
| .blue .bg.right{ background:url(desktop_widgets/clock/img/bg_blue.png) no-repeat right top; } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| .clock .front.left{ |  | ||||||
| 	left:0; |  | ||||||
| 	z-index:10; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| </style> |  | ||||||
| <div id="fancyClock1"></div> |  | ||||||
| <script> |  | ||||||
| $('#fancyClock1').tzineClock(); |  | ||||||
| </script> |  | ||||||
| Before Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 15 KiB | 
| Before Width: | Height: | Size: 16 KiB | 
|  | @ -1,69 +0,0 @@ | ||||||
| .clock{ |  | ||||||
| 	/* The .clock div. Created dynamically by jQuery */ |  | ||||||
| 	background-color:#252525; |  | ||||||
| 	height:200px; |  | ||||||
| 	width:200px; |  | ||||||
| 	position:relative; |  | ||||||
| 	overflow:hidden; |  | ||||||
| 	float:left; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .clock .rotate{ |  | ||||||
| 	/* There are two .rotate divs - one for each half of the background */ |  | ||||||
| 	position:absolute; |  | ||||||
| 	width:200px; |  | ||||||
| 	height:200px; |  | ||||||
| 	top:0; |  | ||||||
| 	left:0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .rotate.right{ |  | ||||||
| 	display:none; |  | ||||||
| 	z-index:11; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .clock .bg, .clock .front{ |  | ||||||
| 	width:100px; |  | ||||||
| 	height:200px; |  | ||||||
| 	background-color:#252525; |  | ||||||
| 	position:absolute; |  | ||||||
| 	top:0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .clock .display{ |  | ||||||
| 	/* Holds the number of seconds, minutes or hours respectfully */ |  | ||||||
| 	position:absolute; |  | ||||||
| 	width:200px; |  | ||||||
| 	font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif; |  | ||||||
| 	z-index:20; |  | ||||||
| 	color:#F5F5F5; |  | ||||||
| 	font-size:60px; |  | ||||||
| 	text-align:center; |  | ||||||
| 	top:65px; |  | ||||||
| 	left:0; |  | ||||||
| 	 |  | ||||||
| 	/* CSS3 text shadow: */ |  | ||||||
| 	text-shadow:4px 4px 5px #333333; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* The left part of the background: */ |  | ||||||
| 
 |  | ||||||
| .clock .bg.left{ left:0; } |  | ||||||
| 
 |  | ||||||
| /* Individual styles for each color: */ |  | ||||||
| .orange .bg.left{ background:url(bg_orange.png) no-repeat left top; } |  | ||||||
| .green .bg.left{ background:url(bg_green.png) no-repeat left top; } |  | ||||||
| .blue .bg.left{	background:url(bg_blue.png) no-repeat left top; } |  | ||||||
| 
 |  | ||||||
| /* The right part of the background: */ |  | ||||||
| .clock .bg.right{ left:100px; } |  | ||||||
| 
 |  | ||||||
| .orange .bg.right{ background:url(bg_orange.png) no-repeat right top; } |  | ||||||
| .green .bg.right{ background:url(bg_green.png) no-repeat right top; } |  | ||||||
| .blue .bg.right{ background:url(bg_blue.png) no-repeat right top; } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| .clock .front.left{ |  | ||||||
| 	left:0; |  | ||||||
| 	z-index:10; |  | ||||||
| } |  | ||||||