widget structure improvised…
10
Gemfile.lock
|
@ -88,8 +88,6 @@ GEM
|
|||
factory_girl_rails (1.7.0)
|
||||
factory_girl (~> 2.6.0)
|
||||
railties (>= 3.0.0)
|
||||
faraday (0.8.0)
|
||||
multipart-post (~> 1.1)
|
||||
fastercsv (1.5.4)
|
||||
haml (3.1.4)
|
||||
hike (1.2.1)
|
||||
|
@ -123,7 +121,6 @@ GEM
|
|||
encrypted_strings (~> 0.3.3)
|
||||
mongoid (~> 2)
|
||||
multi_json (1.1.0)
|
||||
multipart-post (1.1.5)
|
||||
nokogiri (1.5.2)
|
||||
nokogiri (1.5.2-x86-mingw32)
|
||||
orm_adapter (0.0.6)
|
||||
|
@ -201,7 +198,6 @@ GEM
|
|||
tilt (~> 1.3.2)
|
||||
sexp_processor (3.1.0)
|
||||
shoulda-matchers (1.0.0)
|
||||
simple_oauth (0.1.7)
|
||||
simplecov (0.6.1)
|
||||
multi_json (~> 1.0)
|
||||
simplecov-html (~> 0.5.3)
|
||||
|
@ -227,11 +223,6 @@ GEM
|
|||
treetop (1.4.10)
|
||||
polyglot
|
||||
polyglot (>= 0.3.1)
|
||||
twitter (2.2.0)
|
||||
activesupport (>= 2.3.9, < 4)
|
||||
faraday (~> 0.7)
|
||||
multi_json (~> 1.0)
|
||||
simple_oauth (~> 0.1)
|
||||
tzinfo (0.3.32)
|
||||
uglifier (1.2.3)
|
||||
execjs (>= 0.3.0)
|
||||
|
@ -285,6 +276,5 @@ DEPENDENCIES
|
|||
spork
|
||||
sprockets
|
||||
tinymce-rails
|
||||
twitter
|
||||
uglifier
|
||||
watchr
|
||||
|
|
|
@ -1101,7 +1101,22 @@ var orbitDesktop = function(dom){
|
|||
|
||||
}
|
||||
$("div#apps_store div#panel_r").load("/desktop_appstore/widgets",function(){
|
||||
bindHandlers();
|
||||
$.getJSON("/desktop_appstore/getuserwidgets",function(userwidgets){
|
||||
var column = $('<div class="g_col list_t"><ul></ul></div>'),
|
||||
counter = 1,
|
||||
li;
|
||||
$.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>');
|
||||
column.find("ul").append(li);
|
||||
if(counter%5==0){
|
||||
$("#journal_p div#paper_list div.overview").append(column);
|
||||
column = $('<div class="g_col list_t"><ul></ul></div>');
|
||||
}
|
||||
counter++;
|
||||
})
|
||||
//alert(column);
|
||||
$("#apps_store div#widget_list").append(column);
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -1109,7 +1124,6 @@ var orbitDesktop = function(dom){
|
|||
$(o.contentHolder).empty().load("/desktop_appstore/"+target,function(){
|
||||
widgets();
|
||||
bindHandlers();
|
||||
|
||||
});
|
||||
}else{
|
||||
$(o.contentHolder).html(o.desktopData[o.currentface]);
|
||||
|
|
|
@ -8,4 +8,9 @@ class DesktopAppstoreController< ApplicationController
|
|||
render "desktop/appstore/widgets", :layout => false
|
||||
end
|
||||
|
||||
def getuserwidgets
|
||||
@widgets = current_user.desktop_widgets
|
||||
render :json=>@widgets.to_json
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,11 @@
|
|||
class DesktopWidget
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :name
|
||||
field :author
|
||||
field :shape
|
||||
field :user_id
|
||||
|
||||
belongs_to :user
|
||||
end
|
|
@ -19,6 +19,7 @@ class User
|
|||
has_one :desktop, :autosave => true, :dependent => :destroy
|
||||
has_many :other_accounts, :autosave => true, :dependent => :destroy
|
||||
has_many :journals, :autosave => true, :dependent => :destroy
|
||||
has_many :desktop_widgets, :autosave => true, :dependent => :destroy
|
||||
belongs_to :role
|
||||
has_and_belongs_to_many :sub_roles
|
||||
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
|
||||
|
|
|
@ -1 +1,11 @@
|
|||
this is widget page...
|
||||
<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 id="connection_setting" class="overview vp">
|
||||
<div class="s_title hh3">Your Widgets</div>
|
||||
<div class="overview" id="widget_list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -129,6 +129,7 @@ Orbit::Application.routes.draw do
|
|||
|
||||
match '/desktop_appstore/appstore'=>'desktop_appstore#appstore'
|
||||
match '/desktop_appstore/widgets'=>'desktop_appstore#widgets'
|
||||
match '/desktop_appstore/getuserwidgets'=>'desktop_appstore#getuserwidgets'
|
||||
|
||||
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; }
|
||||
|
||||
/* 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; }
|
||||
.orange .bg.left{ background:url(desktop_widgets/4fa7810ac88514014d7c59bc/img/bg_orange.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/4fa7810ac88514014d7c59bc/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; }
|
||||
.orange .bg.right{ background:url(desktop_widgets/4fa7810ac88514014d7c59bc/img/bg_orange.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/4fa7810ac88514014d7c59bc/img/bg_blue.png) no-repeat right top; }
|
||||
|
||||
|
||||
.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>
|
||||
<center>
|
||||
<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 type="submit" style="display:none;">
|
||||
<br>
|
|
@ -1,6 +1,6 @@
|
|||
var eventsjson = new Array;
|
||||
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){
|
||||
eventsjson.push(event);
|
||||
})
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
@ -28,7 +28,7 @@
|
|||
</style>
|
||||
<div class="g_weather">
|
||||
<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">
|
||||
<span class="gw_temp_num thmtxt">29</span><span class="gw_temp_unit thmtxt">°C</span>
|
||||
</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;
|
||||
}
|