Fully updated..
After Width: | Height: | Size: 5.0 KiB |
|
@ -11,4 +11,3 @@
|
||||||
//= require bootstrap
|
//= require bootstrap
|
||||||
//= require orbitdesktopAPI
|
//= require orbitdesktopAPI
|
||||||
//= require orbitdesktop
|
//= require orbitdesktop
|
||||||
//= require desktopload
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
|
||||||
orbitDesktop.prototype.themefolder = "desktop_themes";
|
orbitDesktop.prototype.themefolder = "desktop_themes";
|
||||||
orbitDesktopAPI.prototype.notifyImgPath = "/assets/";
|
orbitDesktopAPI.prototype.notifyImgPath = "/assets/";
|
||||||
|
alert("<%= @desktop.inspect %>")
|
||||||
var od = new orbitDesktop("#ajax_container");
|
var od = new orbitDesktop("#ajax_container");
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('.check[checked="checked"]').parents(".checkbox").addClass("checked");
|
||||||
|
$(".checkbox").click(function(){
|
||||||
|
if($(this).children(".check").attr("checked")){
|
||||||
|
// uncheck
|
||||||
|
$(this).children(".check").attr('checked', false);
|
||||||
|
$(this).removeClass("checked");
|
||||||
|
}else{
|
||||||
|
// check
|
||||||
|
$(this).children(".check").attr({checked: "checked"});
|
||||||
|
$(this).addClass("checked");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,126 @@
|
||||||
|
/*
|
||||||
|
* Date Format 1.2.3
|
||||||
|
* (c) 2007-2009 Steven Levithan <stevenlevithan.com>
|
||||||
|
* MIT license
|
||||||
|
*
|
||||||
|
* Includes enhancements by Scott Trenda <scott.trenda.net>
|
||||||
|
* and Kris Kowal <cixar.com/~kris.kowal/>
|
||||||
|
*
|
||||||
|
* Accepts a date, a mask, or a date and a mask.
|
||||||
|
* Returns a formatted version of the given date.
|
||||||
|
* The date defaults to the current date/time.
|
||||||
|
* The mask defaults to dateFormat.masks.default.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var dateFormat = function () {
|
||||||
|
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
|
||||||
|
timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
|
||||||
|
timezoneClip = /[^-+\dA-Z]/g,
|
||||||
|
pad = function (val, len) {
|
||||||
|
val = String(val);
|
||||||
|
len = len || 2;
|
||||||
|
while (val.length < len) val = "0" + val;
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Regexes and supporting functions are cached through closure
|
||||||
|
return function (date, mask, utc) {
|
||||||
|
var dF = dateFormat;
|
||||||
|
|
||||||
|
// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
|
||||||
|
if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
|
||||||
|
mask = date;
|
||||||
|
date = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Passing date through Date applies Date.parse, if necessary
|
||||||
|
date = date ? new Date(date) : new Date;
|
||||||
|
if (isNaN(date)) throw SyntaxError("invalid date");
|
||||||
|
|
||||||
|
mask = String(dF.masks[mask] || mask || dF.masks["default"]);
|
||||||
|
|
||||||
|
// Allow setting the utc argument via the mask
|
||||||
|
if (mask.slice(0, 4) == "UTC:") {
|
||||||
|
mask = mask.slice(4);
|
||||||
|
utc = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ = utc ? "getUTC" : "get",
|
||||||
|
d = date[_ + "Date"](),
|
||||||
|
D = date[_ + "Day"](),
|
||||||
|
m = date[_ + "Month"](),
|
||||||
|
y = date[_ + "FullYear"](),
|
||||||
|
H = date[_ + "Hours"](),
|
||||||
|
M = date[_ + "Minutes"](),
|
||||||
|
s = date[_ + "Seconds"](),
|
||||||
|
L = date[_ + "Milliseconds"](),
|
||||||
|
o = utc ? 0 : date.getTimezoneOffset(),
|
||||||
|
flags = {
|
||||||
|
d: d,
|
||||||
|
dd: pad(d),
|
||||||
|
ddd: dF.i18n.dayNames[D],
|
||||||
|
dddd: dF.i18n.dayNames[D + 7],
|
||||||
|
m: m + 1,
|
||||||
|
mm: pad(m + 1),
|
||||||
|
mmm: dF.i18n.monthNames[m],
|
||||||
|
mmmm: dF.i18n.monthNames[m + 12],
|
||||||
|
yy: String(y).slice(2),
|
||||||
|
yyyy: y,
|
||||||
|
h: H % 12 || 12,
|
||||||
|
hh: pad(H % 12 || 12),
|
||||||
|
H: H,
|
||||||
|
HH: pad(H),
|
||||||
|
M: M,
|
||||||
|
MM: pad(M),
|
||||||
|
s: s,
|
||||||
|
ss: pad(s),
|
||||||
|
l: pad(L, 3),
|
||||||
|
L: pad(L > 99 ? Math.round(L / 10) : L),
|
||||||
|
t: H < 12 ? "a" : "p",
|
||||||
|
tt: H < 12 ? "am" : "pm",
|
||||||
|
T: H < 12 ? "A" : "P",
|
||||||
|
TT: H < 12 ? "AM" : "PM",
|
||||||
|
Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
|
||||||
|
o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
|
||||||
|
S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
|
||||||
|
};
|
||||||
|
|
||||||
|
return mask.replace(token, function ($0) {
|
||||||
|
return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
|
||||||
|
// Some common format strings
|
||||||
|
dateFormat.masks = {
|
||||||
|
"default": "ddd mmm dd yyyy HH:MM:ss",
|
||||||
|
shortDate: "m/d/yy",
|
||||||
|
mediumDate: "mmm d, yyyy",
|
||||||
|
longDate: "mmmm d, yyyy",
|
||||||
|
fullDate: "dddd, mmmm d, yyyy",
|
||||||
|
shortTime: "h:MM TT",
|
||||||
|
mediumTime: "h:MM:ss TT",
|
||||||
|
longTime: "h:MM:ss TT Z",
|
||||||
|
isoDate: "yyyy / mm / dd",
|
||||||
|
isoTime: "HH:MM:ss",
|
||||||
|
isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
|
||||||
|
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
|
||||||
|
};
|
||||||
|
|
||||||
|
// Internationalization strings
|
||||||
|
dateFormat.i18n = {
|
||||||
|
dayNames: [
|
||||||
|
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
|
||||||
|
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
|
||||||
|
],
|
||||||
|
monthNames: [
|
||||||
|
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
|
||||||
|
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
// For convenience...
|
||||||
|
Date.prototype.format = function (mask, utc) {
|
||||||
|
return dateFormat(this, mask, utc);
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,891 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Date picker
|
||||||
|
* Author: Stefan Petre www.eyecon.ro
|
||||||
|
*
|
||||||
|
* Dual licensed under the MIT and GPL licenses
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
(function ($) {
|
||||||
|
var DatePicker = function () {
|
||||||
|
var ids = {},
|
||||||
|
views = {
|
||||||
|
years: 'datepickerViewYears',
|
||||||
|
moths: 'datepickerViewMonths',
|
||||||
|
days: 'datepickerViewDays'
|
||||||
|
},
|
||||||
|
tpl = {
|
||||||
|
wrapper: '<div class="datepicker"><div class="datepickerContainer"><table cellspacing="0" cellpadding="0"><tbody><tr></tr></tbody></table></div></div>',
|
||||||
|
head: [
|
||||||
|
'<td>',
|
||||||
|
'<table cellspacing="0" cellpadding="0">',
|
||||||
|
'<thead>',
|
||||||
|
'<tr>',
|
||||||
|
'<th class="datepickerGoPrev"><a href="#"><span><%=prev%></span></a></th>',
|
||||||
|
'<th colspan="6" class="datepickerMonth"><a href="#"><span></span></a></th>',
|
||||||
|
'<th class="datepickerGoNext"><a href="#"><span><%=next%></span></a></th>',
|
||||||
|
'</tr>',
|
||||||
|
'<tr class="datepickerDoW">',
|
||||||
|
'<th><span><%=week%></span></th>',
|
||||||
|
'<th><span><%=day1%></span></th>',
|
||||||
|
'<th><span><%=day2%></span></th>',
|
||||||
|
'<th><span><%=day3%></span></th>',
|
||||||
|
'<th><span><%=day4%></span></th>',
|
||||||
|
'<th><span><%=day5%></span></th>',
|
||||||
|
'<th><span><%=day6%></span></th>',
|
||||||
|
'<th><span><%=day7%></span></th>',
|
||||||
|
'</tr>',
|
||||||
|
'</thead>',
|
||||||
|
'</table></td>'
|
||||||
|
],
|
||||||
|
space : '<td class="datepickerSpace"><div></div></td>',
|
||||||
|
days: [
|
||||||
|
'<tbody class="datepickerDays">',
|
||||||
|
'<tr>',
|
||||||
|
'<th class="datepickerWeek"><a href="#"><span><%=weeks[0].week%></span></a></th>',
|
||||||
|
'<td class="<%=weeks[0].days[0].classname%>"><a href="#"><span><%=weeks[0].days[0].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[0].days[1].classname%>"><a href="#"><span><%=weeks[0].days[1].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[0].days[2].classname%>"><a href="#"><span><%=weeks[0].days[2].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[0].days[3].classname%>"><a href="#"><span><%=weeks[0].days[3].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[0].days[4].classname%>"><a href="#"><span><%=weeks[0].days[4].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[0].days[5].classname%>"><a href="#"><span><%=weeks[0].days[5].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[0].days[6].classname%>"><a href="#"><span><%=weeks[0].days[6].text%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'<tr>',
|
||||||
|
'<th class="datepickerWeek"><a href="#"><span><%=weeks[1].week%></span></a></th>',
|
||||||
|
'<td class="<%=weeks[1].days[0].classname%>"><a href="#"><span><%=weeks[1].days[0].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[1].days[1].classname%>"><a href="#"><span><%=weeks[1].days[1].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[1].days[2].classname%>"><a href="#"><span><%=weeks[1].days[2].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[1].days[3].classname%>"><a href="#"><span><%=weeks[1].days[3].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[1].days[4].classname%>"><a href="#"><span><%=weeks[1].days[4].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[1].days[5].classname%>"><a href="#"><span><%=weeks[1].days[5].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[1].days[6].classname%>"><a href="#"><span><%=weeks[1].days[6].text%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'<tr>',
|
||||||
|
'<th class="datepickerWeek"><a href="#"><span><%=weeks[2].week%></span></a></th>',
|
||||||
|
'<td class="<%=weeks[2].days[0].classname%>"><a href="#"><span><%=weeks[2].days[0].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[2].days[1].classname%>"><a href="#"><span><%=weeks[2].days[1].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[2].days[2].classname%>"><a href="#"><span><%=weeks[2].days[2].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[2].days[3].classname%>"><a href="#"><span><%=weeks[2].days[3].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[2].days[4].classname%>"><a href="#"><span><%=weeks[2].days[4].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[2].days[5].classname%>"><a href="#"><span><%=weeks[2].days[5].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[2].days[6].classname%>"><a href="#"><span><%=weeks[2].days[6].text%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'<tr>',
|
||||||
|
'<th class="datepickerWeek"><a href="#"><span><%=weeks[3].week%></span></a></th>',
|
||||||
|
'<td class="<%=weeks[3].days[0].classname%>"><a href="#"><span><%=weeks[3].days[0].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[3].days[1].classname%>"><a href="#"><span><%=weeks[3].days[1].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[3].days[2].classname%>"><a href="#"><span><%=weeks[3].days[2].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[3].days[3].classname%>"><a href="#"><span><%=weeks[3].days[3].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[3].days[4].classname%>"><a href="#"><span><%=weeks[3].days[4].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[3].days[5].classname%>"><a href="#"><span><%=weeks[3].days[5].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[3].days[6].classname%>"><a href="#"><span><%=weeks[3].days[6].text%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'<tr>',
|
||||||
|
'<th class="datepickerWeek"><a href="#"><span><%=weeks[4].week%></span></a></th>',
|
||||||
|
'<td class="<%=weeks[4].days[0].classname%>"><a href="#"><span><%=weeks[4].days[0].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[4].days[1].classname%>"><a href="#"><span><%=weeks[4].days[1].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[4].days[2].classname%>"><a href="#"><span><%=weeks[4].days[2].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[4].days[3].classname%>"><a href="#"><span><%=weeks[4].days[3].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[4].days[4].classname%>"><a href="#"><span><%=weeks[4].days[4].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[4].days[5].classname%>"><a href="#"><span><%=weeks[4].days[5].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[4].days[6].classname%>"><a href="#"><span><%=weeks[4].days[6].text%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'<tr>',
|
||||||
|
'<th class="datepickerWeek"><a href="#"><span><%=weeks[5].week%></span></a></th>',
|
||||||
|
'<td class="<%=weeks[5].days[0].classname%>"><a href="#"><span><%=weeks[5].days[0].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[5].days[1].classname%>"><a href="#"><span><%=weeks[5].days[1].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[5].days[2].classname%>"><a href="#"><span><%=weeks[5].days[2].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[5].days[3].classname%>"><a href="#"><span><%=weeks[5].days[3].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[5].days[4].classname%>"><a href="#"><span><%=weeks[5].days[4].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[5].days[5].classname%>"><a href="#"><span><%=weeks[5].days[5].text%></span></a></td>',
|
||||||
|
'<td class="<%=weeks[5].days[6].classname%>"><a href="#"><span><%=weeks[5].days[6].text%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'</tbody>'
|
||||||
|
],
|
||||||
|
months: [
|
||||||
|
'<tbody class="<%=className%>">',
|
||||||
|
'<tr>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[0]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[1]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[2]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[3]%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'<tr>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[4]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[5]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[6]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[7]%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'<tr>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[8]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[9]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[10]%></span></a></td>',
|
||||||
|
'<td colspan="2"><a href="#"><span><%=data[11]%></span></a></td>',
|
||||||
|
'</tr>',
|
||||||
|
'</tbody>'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
defaults = {
|
||||||
|
flat: false,
|
||||||
|
starts: 1,
|
||||||
|
prev: '◀',
|
||||||
|
next: '▶',
|
||||||
|
lastSel: false,
|
||||||
|
mode: 'single',
|
||||||
|
view: 'days',
|
||||||
|
calendars: 1,
|
||||||
|
format: 'Y-m-d',
|
||||||
|
position: 'bottom',
|
||||||
|
eventName: 'click',
|
||||||
|
onRender: function(){return {};},
|
||||||
|
onChange: function(){return true;},
|
||||||
|
onShow: function(){return true;},
|
||||||
|
onBeforeShow: function(){return true;},
|
||||||
|
onHide: function(){return true;},
|
||||||
|
locale: {
|
||||||
|
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
|
||||||
|
daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
|
||||||
|
daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
|
||||||
|
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
|
||||||
|
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||||
|
weekMin: 'wk'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fill = function(el) {
|
||||||
|
var options = $(el).data('datepicker');
|
||||||
|
var cal = $(el);
|
||||||
|
var currentCal = Math.floor(options.calendars/2), date, data, dow, month, cnt = 0, week, days, indic, indic2, html, tblCal;
|
||||||
|
cal.find('td>table tbody').remove();
|
||||||
|
for (var i = 0; i < options.calendars; i++) {
|
||||||
|
date = new Date(options.current);
|
||||||
|
date.addMonths(-currentCal + i);
|
||||||
|
tblCal = cal.find('table').eq(i+1);
|
||||||
|
switch (tblCal[0].className) {
|
||||||
|
case 'datepickerViewDays':
|
||||||
|
dow = formatDate(date, 'B, Y');
|
||||||
|
break;
|
||||||
|
case 'datepickerViewMonths':
|
||||||
|
dow = date.getFullYear();
|
||||||
|
break;
|
||||||
|
case 'datepickerViewYears':
|
||||||
|
dow = (date.getFullYear()-6) + ' - ' + (date.getFullYear()+5);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
tblCal.find('thead tr:first th:eq(1) span').text(dow);
|
||||||
|
dow = date.getFullYear()-6;
|
||||||
|
data = {
|
||||||
|
data: [],
|
||||||
|
className: 'datepickerYears'
|
||||||
|
}
|
||||||
|
for ( var j = 0; j < 12; j++) {
|
||||||
|
data.data.push(dow + j);
|
||||||
|
}
|
||||||
|
html = tmpl(tpl.months.join(''), data);
|
||||||
|
date.setDate(1);
|
||||||
|
data = {weeks:[], test: 10};
|
||||||
|
month = date.getMonth();
|
||||||
|
var dow = (date.getDay() - options.starts) % 7;
|
||||||
|
date.addDays(-(dow + (dow < 0 ? 7 : 0)));
|
||||||
|
week = -1;
|
||||||
|
cnt = 0;
|
||||||
|
while (cnt < 42) {
|
||||||
|
indic = parseInt(cnt/7,10);
|
||||||
|
indic2 = cnt%7;
|
||||||
|
if (!data.weeks[indic]) {
|
||||||
|
week = date.getWeekNumber();
|
||||||
|
data.weeks[indic] = {
|
||||||
|
week: week,
|
||||||
|
days: []
|
||||||
|
};
|
||||||
|
}
|
||||||
|
data.weeks[indic].days[indic2] = {
|
||||||
|
text: date.getDate(),
|
||||||
|
classname: []
|
||||||
|
};
|
||||||
|
if (month != date.getMonth()) {
|
||||||
|
data.weeks[indic].days[indic2].classname.push('datepickerNotInMonth');
|
||||||
|
}
|
||||||
|
if (date.getDay() == 0) {
|
||||||
|
data.weeks[indic].days[indic2].classname.push('datepickerSunday');
|
||||||
|
}
|
||||||
|
if (date.getDay() == 6) {
|
||||||
|
data.weeks[indic].days[indic2].classname.push('datepickerSaturday');
|
||||||
|
}
|
||||||
|
var fromUser = options.onRender(date);
|
||||||
|
var val = date.valueOf();
|
||||||
|
if (fromUser.selected || options.date == val || $.inArray(val, options.date) > -1 || (options.mode == 'range' && val >= options.date[0] && val <= options.date[1])) {
|
||||||
|
data.weeks[indic].days[indic2].classname.push('datepickerSelected');
|
||||||
|
}
|
||||||
|
if (fromUser.disabled) {
|
||||||
|
data.weeks[indic].days[indic2].classname.push('datepickerDisabled');
|
||||||
|
}
|
||||||
|
if (fromUser.className) {
|
||||||
|
data.weeks[indic].days[indic2].classname.push(fromUser.className);
|
||||||
|
}
|
||||||
|
data.weeks[indic].days[indic2].classname = data.weeks[indic].days[indic2].classname.join(' ');
|
||||||
|
cnt++;
|
||||||
|
date.addDays(1);
|
||||||
|
}
|
||||||
|
html = tmpl(tpl.days.join(''), data) + html;
|
||||||
|
data = {
|
||||||
|
data: options.locale.monthsShort,
|
||||||
|
className: 'datepickerMonths'
|
||||||
|
};
|
||||||
|
html = tmpl(tpl.months.join(''), data) + html;
|
||||||
|
tblCal.append(html);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
parseDate = function (date, format) {
|
||||||
|
if (date.constructor == Date) {
|
||||||
|
return new Date(date);
|
||||||
|
}
|
||||||
|
var parts = date.split(/\W+/);
|
||||||
|
var against = format.split(/\W+/), d, m, y, h, min, now = new Date();
|
||||||
|
for (var i = 0; i < parts.length; i++) {
|
||||||
|
switch (against[i]) {
|
||||||
|
case 'd':
|
||||||
|
case 'e':
|
||||||
|
d = parseInt(parts[i],10);
|
||||||
|
break;
|
||||||
|
case 'm':
|
||||||
|
m = parseInt(parts[i], 10)-1;
|
||||||
|
break;
|
||||||
|
case 'Y':
|
||||||
|
case 'y':
|
||||||
|
y = parseInt(parts[i], 10);
|
||||||
|
y += y > 100 ? 0 : (y < 29 ? 2000 : 1900);
|
||||||
|
break;
|
||||||
|
case 'H':
|
||||||
|
case 'I':
|
||||||
|
case 'k':
|
||||||
|
case 'l':
|
||||||
|
h = parseInt(parts[i], 10);
|
||||||
|
break;
|
||||||
|
case 'P':
|
||||||
|
case 'p':
|
||||||
|
if (/pm/i.test(parts[i]) && h < 12) {
|
||||||
|
h += 12;
|
||||||
|
} else if (/am/i.test(parts[i]) && h >= 12) {
|
||||||
|
h -= 12;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
min = parseInt(parts[i], 10);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Date(
|
||||||
|
y === undefined ? now.getFullYear() : y,
|
||||||
|
m === undefined ? now.getMonth() : m,
|
||||||
|
d === undefined ? now.getDate() : d,
|
||||||
|
h === undefined ? now.getHours() : h,
|
||||||
|
min === undefined ? now.getMinutes() : min,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
},
|
||||||
|
formatDate = function(date, format) {
|
||||||
|
var m = date.getMonth();
|
||||||
|
var d = date.getDate();
|
||||||
|
var y = date.getFullYear();
|
||||||
|
var wn = date.getWeekNumber();
|
||||||
|
var w = date.getDay();
|
||||||
|
var s = {};
|
||||||
|
var hr = date.getHours();
|
||||||
|
var pm = (hr >= 12);
|
||||||
|
var ir = (pm) ? (hr - 12) : hr;
|
||||||
|
var dy = date.getDayOfYear();
|
||||||
|
if (ir == 0) {
|
||||||
|
ir = 12;
|
||||||
|
}
|
||||||
|
var min = date.getMinutes();
|
||||||
|
var sec = date.getSeconds();
|
||||||
|
var parts = format.split(''), part;
|
||||||
|
for ( var i = 0; i < parts.length; i++ ) {
|
||||||
|
part = parts[i];
|
||||||
|
switch (parts[i]) {
|
||||||
|
case 'a':
|
||||||
|
part = date.getDayName();
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
part = date.getDayName(true);
|
||||||
|
break;
|
||||||
|
case 'b':
|
||||||
|
part = date.getMonthName();
|
||||||
|
break;
|
||||||
|
case 'B':
|
||||||
|
part = date.getMonthName(true);
|
||||||
|
break;
|
||||||
|
case 'C':
|
||||||
|
part = 1 + Math.floor(y / 100);
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
part = (d < 10) ? ("0" + d) : d;
|
||||||
|
break;
|
||||||
|
case 'e':
|
||||||
|
part = d;
|
||||||
|
break;
|
||||||
|
case 'H':
|
||||||
|
part = (hr < 10) ? ("0" + hr) : hr;
|
||||||
|
break;
|
||||||
|
case 'I':
|
||||||
|
part = (ir < 10) ? ("0" + ir) : ir;
|
||||||
|
break;
|
||||||
|
case 'j':
|
||||||
|
part = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy;
|
||||||
|
break;
|
||||||
|
case 'k':
|
||||||
|
part = hr;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
part = ir;
|
||||||
|
break;
|
||||||
|
case 'm':
|
||||||
|
part = (m < 9) ? ("0" + (1+m)) : (1+m);
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
part = (min < 10) ? ("0" + min) : min;
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
case 'P':
|
||||||
|
part = pm ? "PM" : "AM";
|
||||||
|
break;
|
||||||
|
case 's':
|
||||||
|
part = Math.floor(date.getTime() / 1000);
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
part = (sec < 10) ? ("0" + sec) : sec;
|
||||||
|
break;
|
||||||
|
case 'u':
|
||||||
|
part = w + 1;
|
||||||
|
break;
|
||||||
|
case 'w':
|
||||||
|
part = w;
|
||||||
|
break;
|
||||||
|
case 'y':
|
||||||
|
part = ('' + y).substr(2, 2);
|
||||||
|
break;
|
||||||
|
case 'Y':
|
||||||
|
part = y;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
parts[i] = part;
|
||||||
|
}
|
||||||
|
return parts.join('');
|
||||||
|
},
|
||||||
|
extendDate = function(options) {
|
||||||
|
if (Date.prototype.tempDate) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Date.prototype.tempDate = null;
|
||||||
|
Date.prototype.months = options.months;
|
||||||
|
Date.prototype.monthsShort = options.monthsShort;
|
||||||
|
Date.prototype.days = options.days;
|
||||||
|
Date.prototype.daysShort = options.daysShort;
|
||||||
|
Date.prototype.getMonthName = function(fullName) {
|
||||||
|
return this[fullName ? 'months' : 'monthsShort'][this.getMonth()];
|
||||||
|
};
|
||||||
|
Date.prototype.getDayName = function(fullName) {
|
||||||
|
return this[fullName ? 'days' : 'daysShort'][this.getDay()];
|
||||||
|
};
|
||||||
|
Date.prototype.addDays = function (n) {
|
||||||
|
this.setDate(this.getDate() + n);
|
||||||
|
this.tempDate = this.getDate();
|
||||||
|
};
|
||||||
|
Date.prototype.addMonths = function (n) {
|
||||||
|
if (this.tempDate == null) {
|
||||||
|
this.tempDate = this.getDate();
|
||||||
|
}
|
||||||
|
this.setDate(1);
|
||||||
|
this.setMonth(this.getMonth() + n);
|
||||||
|
this.setDate(Math.min(this.tempDate, this.getMaxDays()));
|
||||||
|
};
|
||||||
|
Date.prototype.addYears = function (n) {
|
||||||
|
if (this.tempDate == null) {
|
||||||
|
this.tempDate = this.getDate();
|
||||||
|
}
|
||||||
|
this.setDate(1);
|
||||||
|
this.setFullYear(this.getFullYear() + n);
|
||||||
|
this.setDate(Math.min(this.tempDate, this.getMaxDays()));
|
||||||
|
};
|
||||||
|
Date.prototype.getMaxDays = function() {
|
||||||
|
var tmpDate = new Date(Date.parse(this)),
|
||||||
|
d = 28, m;
|
||||||
|
m = tmpDate.getMonth();
|
||||||
|
d = 28;
|
||||||
|
while (tmpDate.getMonth() == m) {
|
||||||
|
d ++;
|
||||||
|
tmpDate.setDate(d);
|
||||||
|
}
|
||||||
|
return d - 1;
|
||||||
|
};
|
||||||
|
Date.prototype.getFirstDay = function() {
|
||||||
|
var tmpDate = new Date(Date.parse(this));
|
||||||
|
tmpDate.setDate(1);
|
||||||
|
return tmpDate.getDay();
|
||||||
|
};
|
||||||
|
Date.prototype.getWeekNumber = function() {
|
||||||
|
var tempDate = new Date(this);
|
||||||
|
tempDate.setDate(tempDate.getDate() - (tempDate.getDay() + 6) % 7 + 3);
|
||||||
|
var dms = tempDate.valueOf();
|
||||||
|
tempDate.setMonth(0);
|
||||||
|
tempDate.setDate(4);
|
||||||
|
return Math.round((dms - tempDate.valueOf()) / (604800000)) + 1;
|
||||||
|
};
|
||||||
|
Date.prototype.getDayOfYear = function() {
|
||||||
|
var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
|
||||||
|
var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
|
||||||
|
var time = now - then;
|
||||||
|
return Math.floor(time / 24*60*60*1000);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
layout = function (el) {
|
||||||
|
var options = $(el).data('datepicker');
|
||||||
|
var cal = $('#' + options.id);
|
||||||
|
if (!options.extraHeight) {
|
||||||
|
var divs = $(el).find('div');
|
||||||
|
//options.extraHeight = divs.get(0).offsetHeight + divs.get(1).offsetHeight;
|
||||||
|
//options.extraWidth = divs.get(2).offsetWidth + divs.get(3).offsetWidth;
|
||||||
|
}
|
||||||
|
var tbl = cal.find('table:first').get(0);
|
||||||
|
var width = tbl.offsetWidth;
|
||||||
|
var height = tbl.offsetHeight;
|
||||||
|
cal.css({
|
||||||
|
width: width + options.extraWidth + 'px',
|
||||||
|
height: height + options.extraHeight + 'px'
|
||||||
|
}).find('div.datepickerContainer').css({
|
||||||
|
width: width + 'px',
|
||||||
|
height: height + 'px'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
click = function(ev) {
|
||||||
|
if ($(ev.target).is('span')) {
|
||||||
|
ev.target = ev.target.parentNode;
|
||||||
|
}
|
||||||
|
var el = $(ev.target);
|
||||||
|
if (el.is('a')) {
|
||||||
|
ev.target.blur();
|
||||||
|
if (el.hasClass('datepickerDisabled')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var options = $(this).data('datepicker');
|
||||||
|
var parentEl = el.parent();
|
||||||
|
var tblEl = parentEl.parent().parent().parent();
|
||||||
|
var tblIndex = $('table', this).index(tblEl.get(0)) - 1;
|
||||||
|
var tmp = new Date(options.current);
|
||||||
|
var changed = false;
|
||||||
|
var fillIt = false;
|
||||||
|
if (parentEl.is('th')) {
|
||||||
|
if (parentEl.hasClass('datepickerWeek') && options.mode == 'range' && !parentEl.next().hasClass('datepickerDisabled')) {
|
||||||
|
var val = parseInt(parentEl.next().text(), 10);
|
||||||
|
tmp.addMonths(tblIndex - Math.floor(options.calendars/2));
|
||||||
|
if (parentEl.next().hasClass('datepickerNotInMonth')) {
|
||||||
|
tmp.addMonths(val > 15 ? -1 : 1);
|
||||||
|
}
|
||||||
|
tmp.setDate(val);
|
||||||
|
options.date[0] = (tmp.setHours(0,0,0,0)).valueOf();
|
||||||
|
tmp.setHours(23,59,59,0);
|
||||||
|
tmp.addDays(6);
|
||||||
|
options.date[1] = tmp.valueOf();
|
||||||
|
fillIt = true;
|
||||||
|
changed = true;
|
||||||
|
options.lastSel = false;
|
||||||
|
} else if (parentEl.hasClass('datepickerMonth')) {
|
||||||
|
tmp.addMonths(tblIndex - Math.floor(options.calendars/2));
|
||||||
|
switch (tblEl.get(0).className) {
|
||||||
|
case 'datepickerViewDays':
|
||||||
|
tblEl.get(0).className = 'datepickerViewMonths';
|
||||||
|
el.find('span').text(tmp.getFullYear());
|
||||||
|
break;
|
||||||
|
case 'datepickerViewMonths':
|
||||||
|
tblEl.get(0).className = 'datepickerViewYears';
|
||||||
|
el.find('span').text((tmp.getFullYear()-6) + ' - ' + (tmp.getFullYear()+5));
|
||||||
|
break;
|
||||||
|
case 'datepickerViewYears':
|
||||||
|
tblEl.get(0).className = 'datepickerViewDays';
|
||||||
|
el.find('span').text(formatDate(tmp, 'B, Y'));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (parentEl.parent().parent().is('thead')) {
|
||||||
|
switch (tblEl.get(0).className) {
|
||||||
|
case 'datepickerViewDays':
|
||||||
|
options.current.addMonths(parentEl.hasClass('datepickerGoPrev') ? -1 : 1);
|
||||||
|
break;
|
||||||
|
case 'datepickerViewMonths':
|
||||||
|
options.current.addYears(parentEl.hasClass('datepickerGoPrev') ? -1 : 1);
|
||||||
|
break;
|
||||||
|
case 'datepickerViewYears':
|
||||||
|
options.current.addYears(parentEl.hasClass('datepickerGoPrev') ? -12 : 12);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
fillIt = true;
|
||||||
|
}
|
||||||
|
} else if (parentEl.is('td') && !parentEl.hasClass('datepickerDisabled')) {
|
||||||
|
switch (tblEl.get(0).className) {
|
||||||
|
case 'datepickerViewMonths':
|
||||||
|
options.current.setMonth(tblEl.find('tbody.datepickerMonths td').index(parentEl));
|
||||||
|
options.current.setFullYear(parseInt(tblEl.find('thead th.datepickerMonth span').text(), 10));
|
||||||
|
options.current.addMonths(Math.floor(options.calendars/2) - tblIndex);
|
||||||
|
tblEl.get(0).className = 'datepickerViewDays';
|
||||||
|
break;
|
||||||
|
case 'datepickerViewYears':
|
||||||
|
options.current.setFullYear(parseInt(el.text(), 10));
|
||||||
|
tblEl.get(0).className = 'datepickerViewMonths';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
var val = parseInt(el.text(), 10);
|
||||||
|
tmp.addMonths(tblIndex - Math.floor(options.calendars/2));
|
||||||
|
if (parentEl.hasClass('datepickerNotInMonth')) {
|
||||||
|
tmp.addMonths(val > 15 ? -1 : 1);
|
||||||
|
}
|
||||||
|
tmp.setDate(val);
|
||||||
|
switch (options.mode) {
|
||||||
|
case 'multiple':
|
||||||
|
val = (tmp.setHours(0,0,0,0)).valueOf();
|
||||||
|
if ($.inArray(val, options.date) > -1) {
|
||||||
|
$.each(options.date, function(nr, dat){
|
||||||
|
if (dat == val) {
|
||||||
|
options.date.splice(nr,1);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
options.date.push(val);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'range':
|
||||||
|
if (!options.lastSel) {
|
||||||
|
options.date[0] = (tmp.setHours(0,0,0,0)).valueOf();
|
||||||
|
}
|
||||||
|
val = (tmp.setHours(23,59,59,0)).valueOf();
|
||||||
|
if (val < options.date[0]) {
|
||||||
|
options.date[1] = options.date[0] + 86399000;
|
||||||
|
options.date[0] = val - 86399000;
|
||||||
|
} else {
|
||||||
|
options.date[1] = val;
|
||||||
|
}
|
||||||
|
options.lastSel = !options.lastSel;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
options.date = tmp.valueOf();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
fillIt = true;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
if (fillIt) {
|
||||||
|
fill(this);
|
||||||
|
}
|
||||||
|
if (changed) {
|
||||||
|
options.onChange.apply(this, prepareDate(options));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
prepareDate = function (options) {
|
||||||
|
var tmp;
|
||||||
|
if (options.mode == 'single') {
|
||||||
|
tmp = new Date(options.date);
|
||||||
|
return [formatDate(tmp, options.format), tmp, options.el];
|
||||||
|
} else {
|
||||||
|
tmp = [[],[], options.el];
|
||||||
|
$.each(options.date, function(nr, val){
|
||||||
|
var date = new Date(val);
|
||||||
|
tmp[0].push(formatDate(date, options.format));
|
||||||
|
tmp[1].push(date);
|
||||||
|
});
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getViewport = function () {
|
||||||
|
var m = document.compatMode == 'CSS1Compat';
|
||||||
|
return {
|
||||||
|
l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
|
||||||
|
t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
|
||||||
|
w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
|
||||||
|
h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
|
||||||
|
};
|
||||||
|
},
|
||||||
|
isChildOf = function(parentEl, el, container) {
|
||||||
|
if (parentEl == el) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (parentEl.contains) {
|
||||||
|
return parentEl.contains(el);
|
||||||
|
}
|
||||||
|
if ( parentEl.compareDocumentPosition ) {
|
||||||
|
return !!(parentEl.compareDocumentPosition(el) & 16);
|
||||||
|
}
|
||||||
|
var prEl = el.parentNode;
|
||||||
|
while(prEl && prEl != container) {
|
||||||
|
if (prEl == parentEl)
|
||||||
|
return true;
|
||||||
|
prEl = prEl.parentNode;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
show = function (ev) {
|
||||||
|
var cal = $('#' + $(this).data('datepickerId'));
|
||||||
|
if (!cal.is(':visible')) {
|
||||||
|
var calEl = cal.get(0);
|
||||||
|
fill(calEl);
|
||||||
|
var options = cal.data('datepicker');
|
||||||
|
options.onBeforeShow.apply(this, [cal.get(0)]);
|
||||||
|
var pos = $(this).offset();
|
||||||
|
var viewPort = getViewport();
|
||||||
|
var top = pos.top;
|
||||||
|
var left = pos.left;
|
||||||
|
var oldDisplay = $.curCSS(calEl, 'display');
|
||||||
|
cal.css({
|
||||||
|
visibility: 'hidden',
|
||||||
|
display: 'block'
|
||||||
|
});
|
||||||
|
layout(calEl);
|
||||||
|
switch (options.position){
|
||||||
|
case 'top':
|
||||||
|
top -= calEl.offsetHeight;
|
||||||
|
break;
|
||||||
|
case 'left':
|
||||||
|
left -= calEl.offsetWidth;
|
||||||
|
break;
|
||||||
|
case 'right':
|
||||||
|
left += this.offsetWidth;
|
||||||
|
break;
|
||||||
|
case 'bottom':
|
||||||
|
top += this.offsetHeight;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (top + calEl.offsetHeight > viewPort.t + viewPort.h) {
|
||||||
|
top = pos.top - calEl.offsetHeight;
|
||||||
|
}
|
||||||
|
if (top < viewPort.t) {
|
||||||
|
top = pos.top + this.offsetHeight + calEl.offsetHeight;
|
||||||
|
}
|
||||||
|
if (left + calEl.offsetWidth > viewPort.l + viewPort.w) {
|
||||||
|
left = pos.left - calEl.offsetWidth;
|
||||||
|
}
|
||||||
|
if (left < viewPort.l) {
|
||||||
|
left = pos.left + this.offsetWidth
|
||||||
|
}
|
||||||
|
cal.css({
|
||||||
|
visibility: 'visible',
|
||||||
|
display: 'block',
|
||||||
|
top: top + 'px',
|
||||||
|
left: left + 'px'
|
||||||
|
});
|
||||||
|
if (options.onShow.apply(this, [cal.get(0)]) != false) {
|
||||||
|
cal.show();
|
||||||
|
}
|
||||||
|
$(document).bind('mousedown', {cal: cal, trigger: this}, hide);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
hide = function (ev) {
|
||||||
|
if (ev.target != ev.data.trigger && !isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
|
||||||
|
if (ev.data.cal.data('datepicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
|
||||||
|
ev.data.cal.hide();
|
||||||
|
}
|
||||||
|
$(document).unbind('mousedown', hide);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
init: function(options){
|
||||||
|
options = $.extend({}, defaults, options||{});
|
||||||
|
extendDate(options.locale);
|
||||||
|
options.calendars = Math.max(1, parseInt(options.calendars,10)||1);
|
||||||
|
options.mode = /single|multiple|range/.test(options.mode) ? options.mode : 'single';
|
||||||
|
return this.each(function(){
|
||||||
|
if (!$(this).data('datepicker')) {
|
||||||
|
options.el = this;
|
||||||
|
if (options.date.constructor == String) {
|
||||||
|
options.date = parseDate(options.date, options.format);
|
||||||
|
options.date.setHours(0,0,0,0);
|
||||||
|
}
|
||||||
|
if (options.mode != 'single') {
|
||||||
|
if (options.date.constructor != Array) {
|
||||||
|
options.date = [options.date.valueOf()];
|
||||||
|
if (options.mode == 'range') {
|
||||||
|
options.date.push(((new Date(options.date[0])).setHours(23,59,59,0)).valueOf());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (var i = 0; i < options.date.length; i++) {
|
||||||
|
options.date[i] = (parseDate(options.date[i], options.format).setHours(0,0,0,0)).valueOf();
|
||||||
|
}
|
||||||
|
if (options.mode == 'range') {
|
||||||
|
options.date[1] = ((new Date(options.date[1])).setHours(23,59,59,0)).valueOf();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
options.date = options.date.valueOf();
|
||||||
|
}
|
||||||
|
if (!options.current) {
|
||||||
|
options.current = new Date();
|
||||||
|
} else {
|
||||||
|
options.current = parseDate(options.current, options.format);
|
||||||
|
}
|
||||||
|
options.current.setDate(1);
|
||||||
|
options.current.setHours(0,0,0,0);
|
||||||
|
var id = 'datepicker_' + parseInt(Math.random() * 1000), cnt;
|
||||||
|
options.id = id;
|
||||||
|
$(this).data('datepickerId', options.id);
|
||||||
|
var cal = $(tpl.wrapper).attr('id', id).bind('click', click).data('datepicker', options);
|
||||||
|
if (options.className) {
|
||||||
|
cal.addClass(options.className);
|
||||||
|
}
|
||||||
|
var html = '';
|
||||||
|
for (var i = 0; i < options.calendars; i++) {
|
||||||
|
cnt = options.starts;
|
||||||
|
if (i > 0) {
|
||||||
|
html += tpl.space;
|
||||||
|
}
|
||||||
|
html += tmpl(tpl.head.join(''), {
|
||||||
|
week: options.locale.weekMin,
|
||||||
|
prev: options.prev,
|
||||||
|
next: options.next,
|
||||||
|
day1: options.locale.daysMin[(cnt++)%7],
|
||||||
|
day2: options.locale.daysMin[(cnt++)%7],
|
||||||
|
day3: options.locale.daysMin[(cnt++)%7],
|
||||||
|
day4: options.locale.daysMin[(cnt++)%7],
|
||||||
|
day5: options.locale.daysMin[(cnt++)%7],
|
||||||
|
day6: options.locale.daysMin[(cnt++)%7],
|
||||||
|
day7: options.locale.daysMin[(cnt++)%7]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
cal
|
||||||
|
.find('tr:first').append(html)
|
||||||
|
.find('table').addClass(views[options.view]);
|
||||||
|
fill(cal.get(0));
|
||||||
|
if (options.flat) {
|
||||||
|
cal.appendTo(this).show().css('position', 'relative');
|
||||||
|
layout(cal.get(0));
|
||||||
|
} else {
|
||||||
|
cal.appendTo(document.body);
|
||||||
|
$(this).bind(options.eventName, show);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
showPicker: function() {
|
||||||
|
return this.each( function () {
|
||||||
|
if ($(this).data('datepickerId')) {
|
||||||
|
show.apply(this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
hidePicker: function() {
|
||||||
|
return this.each( function () {
|
||||||
|
if ($(this).data('datepickerId')) {
|
||||||
|
$('#' + $(this).data('datepickerId')).hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
setDate: function(date, shiftTo){
|
||||||
|
return this.each(function(){
|
||||||
|
if ($(this).data('datepickerId')) {
|
||||||
|
var cal = $('#' + $(this).data('datepickerId'));
|
||||||
|
var options = cal.data('datepicker');
|
||||||
|
options.date = date;
|
||||||
|
if (options.date.constructor == String) {
|
||||||
|
options.date = parseDate(options.date, options.format);
|
||||||
|
options.date.setHours(0,0,0,0);
|
||||||
|
}
|
||||||
|
if (options.mode != 'single') {
|
||||||
|
if (options.date.constructor != Array) {
|
||||||
|
options.date = [options.date.valueOf()];
|
||||||
|
if (options.mode == 'range') {
|
||||||
|
options.date.push(((new Date(options.date[0])).setHours(23,59,59,0)).valueOf());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (var i = 0; i < options.date.length; i++) {
|
||||||
|
options.date[i] = (parseDate(options.date[i], options.format).setHours(0,0,0,0)).valueOf();
|
||||||
|
}
|
||||||
|
if (options.mode == 'range') {
|
||||||
|
options.date[1] = ((new Date(options.date[1])).setHours(23,59,59,0)).valueOf();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
options.date = options.date.valueOf();
|
||||||
|
}
|
||||||
|
if (shiftTo) {
|
||||||
|
options.current = new Date (options.mode != 'single' ? options.date[0] : options.date);
|
||||||
|
}
|
||||||
|
fill(cal.get(0));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getDate: function(formated) {
|
||||||
|
if (this.size() > 0) {
|
||||||
|
return prepareDate($('#' + $(this).data('datepickerId')).data('datepicker'))[formated ? 0 : 1];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
clear: function(){
|
||||||
|
return this.each(function(){
|
||||||
|
if ($(this).data('datepickerId')) {
|
||||||
|
var cal = $('#' + $(this).data('datepickerId'));
|
||||||
|
var options = cal.data('datepicker');
|
||||||
|
if (options.mode != 'single') {
|
||||||
|
options.date = [];
|
||||||
|
fill(cal.get(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
fixLayout: function(){
|
||||||
|
return this.each(function(){
|
||||||
|
if ($(this).data('datepickerId')) {
|
||||||
|
var cal = $('#' + $(this).data('datepickerId'));
|
||||||
|
var options = cal.data('datepicker');
|
||||||
|
if (options.flat) {
|
||||||
|
layout(cal.get(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
$.fn.extend({
|
||||||
|
DatePicker: DatePicker.init,
|
||||||
|
DatePickerHide: DatePicker.hidePicker,
|
||||||
|
DatePickerShow: DatePicker.showPicker,
|
||||||
|
DatePickerSetDate: DatePicker.setDate,
|
||||||
|
DatePickerGetDate: DatePicker.getDate,
|
||||||
|
DatePickerClear: DatePicker.clear,
|
||||||
|
DatePickerLayout: DatePicker.fixLayout
|
||||||
|
});
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
(function(){
|
||||||
|
var cache = {};
|
||||||
|
|
||||||
|
this.tmpl = function tmpl(str, data){
|
||||||
|
// Figure out if we're getting a template, or if we need to
|
||||||
|
// load the template - and be sure to cache the result.
|
||||||
|
var fn = !/\W/.test(str) ?
|
||||||
|
cache[str] = cache[str] ||
|
||||||
|
tmpl(document.getElementById(str).innerHTML) :
|
||||||
|
|
||||||
|
// Generate a reusable function that will serve as a template
|
||||||
|
// generator (and which will be cached).
|
||||||
|
new Function("obj",
|
||||||
|
"var p=[],print=function(){p.push.apply(p,arguments);};" +
|
||||||
|
|
||||||
|
// Introduce the data as local variables using with(){}
|
||||||
|
"with(obj){p.push('" +
|
||||||
|
|
||||||
|
// Convert the template into pure JavaScript
|
||||||
|
str
|
||||||
|
.replace(/[\r\t\n]/g, " ")
|
||||||
|
.split("<%").join("\t")
|
||||||
|
.replace(/((^|%>)[^\t]*)'/g, "$1\r")
|
||||||
|
.replace(/\t=(.*?)%>/g, "',$1,'")
|
||||||
|
.split("\t").join("');")
|
||||||
|
.split("%>").join("p.push('")
|
||||||
|
.split("\r").join("\\'")
|
||||||
|
+ "');}return p.join('');");
|
||||||
|
|
||||||
|
// Provide some basic currying to the user
|
||||||
|
return data ? fn( data ) : fn;
|
||||||
|
};
|
||||||
|
})();
|
|
@ -12,3 +12,4 @@
|
||||||
//= require orbit-1.0
|
//= require orbit-1.0
|
||||||
//= require tinymce-jquery
|
//= require tinymce-jquery
|
||||||
//= require tinymce_orbit
|
//= require tinymce_orbit
|
||||||
|
//= require orbit-bar-search
|
|
@ -9,27 +9,14 @@ function resize() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
$(document).on('click', '.orbit-bar-member', function(){
|
|
||||||
$(this).hasClass('open') ? $(this).removeClass('open') : $(this).addClass('open');
|
|
||||||
$('.bar-login .dropdown-menu').toggle();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).click(function() {
|
|
||||||
$('.orbit-bar-member').removeClass("open");
|
|
||||||
$('.bar-login .dropdown-menu').hide();
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('click', '.bar-login .dropdown-menu', function(e) {
|
|
||||||
e.stopPropagation();
|
|
||||||
$('.bar-login .dropdown-menu').show();
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.tip').tooltip({
|
$('.tip').tooltip({
|
||||||
placement: "left"
|
placement: "left"
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('click', '.privacy', function() {
|
$(document).on('click', '.privacy', function() {
|
||||||
|
|
||||||
|
console.log($(this).val());
|
||||||
switch ($(this).val()) {
|
switch ($(this).val()) {
|
||||||
case 'true':
|
case 'true':
|
||||||
$(this).parents('.controls').children('.select-role').slideUp(300);
|
$(this).parents('.controls').children('.select-role').slideUp(300);
|
||||||
|
@ -40,11 +27,6 @@ $(document).ready(function(){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('click', '.sort-header > .sort', function() {
|
|
||||||
$.getScript($(this).attr('rel'));
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
var $role = $('.select-role');
|
var $role = $('.select-role');
|
||||||
var method =$('.privacy:eq(1)').attr('checked');
|
var method =$('.privacy:eq(1)').attr('checked');
|
||||||
if(method == 'checked'){
|
if(method == 'checked'){
|
||||||
|
@ -73,7 +55,7 @@ $(document).ready(function(){
|
||||||
$('#main-sidebar').tinyscrollbar();
|
$('#main-sidebar').tinyscrollbar();
|
||||||
$('.detal-list').tinyscrollbar();
|
$('.detal-list').tinyscrollbar();
|
||||||
$('#main-sidebar').tinyscrollbar({size:(viewportheight-34)});
|
$('#main-sidebar').tinyscrollbar({size:(viewportheight-34)});
|
||||||
mainTablePosition()
|
mainTablePosition();
|
||||||
|
|
||||||
/*isotope*/
|
/*isotope*/
|
||||||
var $container = $('#isotope');
|
var $container = $('#isotope');
|
||||||
|
@ -92,16 +74,26 @@ $(window).resize(function(){
|
||||||
$('.post-title').css("width", viewportwidth-495);
|
$('.post-title').css("width", viewportwidth-495);
|
||||||
$('#main-wrap > .subnav').css("width", viewportwidth-$mainWrapMarginLeft)
|
$('#main-wrap > .subnav').css("width", viewportwidth-$mainWrapMarginLeft)
|
||||||
$('#main-sidebar').tinyscrollbar({size:(viewportheight-34)});
|
$('#main-sidebar').tinyscrollbar({size:(viewportheight-34)});
|
||||||
mainTablePosition()
|
mainTablePosition();
|
||||||
});
|
});
|
||||||
/*main-table position*/
|
/*main-table position*/
|
||||||
function mainTablePosition() {
|
function mainTablePosition() {
|
||||||
var $height = $('#main-wrap > .subnav').height()
|
var $height = $('#main-wrap .subnav').length && $('#main-wrap .subnav').height();
|
||||||
var $table = $('#main-wrap > .table')
|
var $table = $('#main-wrap > table').length && $('#main-wrap > table');
|
||||||
//alert ($table.height())
|
if($table && $table==0){
|
||||||
$table.stop().animate({marginTop:$height-17},500)
|
$table.css({marginTop:$height});
|
||||||
//$table.css({marginTop : $height})
|
}
|
||||||
}
|
else if($table){
|
||||||
|
if($height>0){
|
||||||
|
$height = $height-17;
|
||||||
|
}
|
||||||
|
$table.stop().animate({marginTop:$height},500);
|
||||||
|
}
|
||||||
|
else if($('#main-wrap .subnav')){
|
||||||
|
var $object = $('#main-wrap .subnav').next();
|
||||||
|
$object.css({marginTop:$height});
|
||||||
|
};
|
||||||
|
};
|
||||||
$(window).scroll(function () {
|
$(window).scroll(function () {
|
||||||
//var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-1;
|
//var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-1;
|
||||||
//var $subnavWidth = parseInt($('#main-wrap > .subnav').css("width"));
|
//var $subnavWidth = parseInt($('#main-wrap > .subnav').css("width"));
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
$(document).on('click', '.orbit-bar-member', function(){
|
||||||
|
$(this).hasClass('open') ? $(this).removeClass('open') : $(this).addClass('open');
|
||||||
|
$('.bar-login .dropdown-menu').toggle();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).click(function() {
|
||||||
|
$('.orbit-bar-member').removeClass("open");
|
||||||
|
$('.bar-login .dropdown-menu').hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', '.bar-login .dropdown-menu', function(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
$('.bar-login .dropdown-menu').show();
|
||||||
|
});
|
|
@ -0,0 +1,20 @@
|
||||||
|
$(document).on('click', '.orbit-bar-search', function (){
|
||||||
|
if ($(this).parents('.search').hasClass('visible')){
|
||||||
|
$(this).parents('.search').stop().animate({
|
||||||
|
'width':'28px',
|
||||||
|
});
|
||||||
|
$(this).parents('.search').css({
|
||||||
|
'background-color': 'transparent',
|
||||||
|
});
|
||||||
|
$(this).parents('.search').removeClass('visible');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$(this).parents('.search').stop().animate({
|
||||||
|
'width':'265px',
|
||||||
|
});
|
||||||
|
$(this).parents('.search').css({
|
||||||
|
'background-color': 'rgba(0, 0, 0, 0.5)',
|
||||||
|
});
|
||||||
|
$(this).parents('.search').addClass('visible');
|
||||||
|
}
|
||||||
|
});
|
|
@ -14,12 +14,20 @@ var orbitDesktop = function(dom){
|
||||||
this.tp = "";
|
this.tp = "";
|
||||||
this.initialize = function(){
|
this.initialize = function(){
|
||||||
var theme = o.theme;
|
var theme = o.theme;
|
||||||
|
$.getJSON("/desktop/get_desktop_settings",{id:o.desktopId},function(desktopSettings){
|
||||||
|
if(desktopSettings){
|
||||||
|
theme = desktopSettings.theme;
|
||||||
|
o.theme = theme;
|
||||||
|
loadTheme();
|
||||||
|
}else{loadTheme();}
|
||||||
|
})
|
||||||
|
var loadTheme = function(){
|
||||||
$.getJSON("/"+o.themefolder+"/"+theme+"/settings/"+theme+".json",function(ts){
|
$.getJSON("/"+o.themefolder+"/"+theme+"/settings/"+theme+".json",function(ts){
|
||||||
o.themesettings = eval(ts);
|
o.themesettings = eval(ts);
|
||||||
$('head').append( $('<link rel="stylesheet" id="dyn_css" type="text/css" />').attr('href', "/"+o.themefolder+"/"+theme+"/css/"+ts.css));
|
$('head').append( $('<link rel="stylesheet" id="dyn_css" type="text/css" />').attr('href', "/"+o.themefolder+"/"+theme+"/css/"+ts.css));
|
||||||
$(document).ready(function(){o.loadWallpaper();o.bindDesktopEvents();o.loadIconCache();o.initializeDesktop();});
|
$(document).ready(function(){o.loadWallpaper();o.bindDesktopEvents();o.loadIconCache();o.initializeDesktop();});
|
||||||
})
|
})
|
||||||
|
}
|
||||||
};
|
};
|
||||||
this.changeTheme = function(theme){
|
this.changeTheme = function(theme){
|
||||||
o.theme = theme;
|
o.theme = theme;
|
||||||
|
@ -69,12 +77,9 @@ var orbitDesktop = function(dom){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$("select#change_theme").change(function(){
|
|
||||||
o.changeTheme($(this).val());
|
|
||||||
})
|
|
||||||
$(window).resize(function(){
|
$(window).resize(function(){
|
||||||
var ww = $(window).width();
|
var ww = $(window).width();
|
||||||
$("img#thmbackground").attr({"width":ww})
|
$("img#thmbackground").attr({"width":ww});
|
||||||
});
|
});
|
||||||
$(o.contentHolder).mousemove(function(event){
|
$(o.contentHolder).mousemove(function(event){
|
||||||
/*if(($(window).width()-50)<=event.pageX){
|
/*if(($(window).width()-50)<=event.pageX){
|
||||||
|
@ -84,6 +89,15 @@ var orbitDesktop = function(dom){
|
||||||
$("#holder").animate({scrollLeft:0},1000);
|
$("#holder").animate({scrollLeft:0},1000);
|
||||||
}*/
|
}*/
|
||||||
});
|
});
|
||||||
|
var $widget_fn = $('.widget_fn'),$fn_des = $('.fn_des');
|
||||||
|
$widget_fn.hover(function(){
|
||||||
|
var fn_name = $(this).find('img').attr('alt'),nth = $(this).parents('.d_cate').index(),des_left = $('.dock_child').eq(nth).width();
|
||||||
|
$(this).addClass('thmc1');
|
||||||
|
$fn_des.text(fn_name).css({'top':nth * 60,'left': des_left + 60}).stop(true, true).fadeIn();
|
||||||
|
},function(){
|
||||||
|
$(this).removeClass('thmc1');
|
||||||
|
$fn_des.stop(true, true).fadeOut();
|
||||||
|
});
|
||||||
};
|
};
|
||||||
this.initializeDesktop = function(target){
|
this.initializeDesktop = function(target){
|
||||||
if(!target)target = "desktop";
|
if(!target)target = "desktop";
|
||||||
|
@ -132,19 +146,39 @@ var orbitDesktop = function(dom){
|
||||||
|
|
||||||
});
|
});
|
||||||
$('#holder').tinyscrollbar({ axis: 'x'});
|
$('#holder').tinyscrollbar({ axis: 'x'});
|
||||||
sdm();
|
$("div.scrollbar").hover(function(){
|
||||||
|
$(this).removeClass('op01');
|
||||||
|
}, function(){
|
||||||
|
$(this).addClass('op01');
|
||||||
|
});
|
||||||
|
var $sdm = $('.sdm');
|
||||||
|
|
||||||
|
if( !$sdm.children('.sdm_o') ){
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
$sdm.hover(function(){
|
||||||
|
$(this).addClass('thmc2');
|
||||||
|
}, function(){
|
||||||
|
$(this).removeClass('thmc2');
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(!o.desktopData[o.currentface]){
|
if(!o.desktopData[o.currentface]){
|
||||||
$(o.contentHolder).empty().load("/desktop/"+target,function(){
|
$(o.contentHolder).empty().load("/desktop/"+target,function(){
|
||||||
bindHandlers();
|
bindHandlers();
|
||||||
|
o.initializeWidgets();
|
||||||
});
|
});
|
||||||
}else{
|
}else{
|
||||||
$(o.contentHolder).html(o.desktopData[o.currentface]);
|
$(o.contentHolder).html(o.desktopData[o.currentface]);
|
||||||
bindHandlers();
|
bindHandlers();
|
||||||
|
o.initializeWidgets();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.tempFunc = function(){
|
this.tempFunc = function(){
|
||||||
o.notify("This is test notification!!","alert",2)
|
//o.notify("This is test notification!!","alert",2)
|
||||||
|
$.post("/desktop/save_desktop_settings",{"id":o.desktopId,"theme":$("#change_theme").val()},function(){
|
||||||
|
o.notify("Settings Saved!!","success");
|
||||||
|
})
|
||||||
}
|
}
|
||||||
this.initializeAppSearch = function(target){
|
this.initializeAppSearch = function(target){
|
||||||
o.currenthtml = target;
|
o.currenthtml = target;
|
||||||
|
@ -190,6 +224,7 @@ var orbitDesktop = function(dom){
|
||||||
if(!o.desktopData[o.currentface]){
|
if(!o.desktopData[o.currentface]){
|
||||||
$(o.contentHolder).empty().load("/desktop/"+target,function(){
|
$(o.contentHolder).empty().load("/desktop/"+target,function(){
|
||||||
bindHandlers();
|
bindHandlers();
|
||||||
|
|
||||||
});
|
});
|
||||||
}else{
|
}else{
|
||||||
$(o.contentHolder).html(o.desktopData[o.currentface]);
|
$(o.contentHolder).html(o.desktopData[o.currentface]);
|
||||||
|
@ -220,8 +255,7 @@ var orbitDesktop = function(dom){
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$("#"+$(this).attr("data-category")).append(element);
|
$("#"+$(this).attr("data-category")).append(element);
|
||||||
},
|
},over:function(){
|
||||||
over:function(){
|
|
||||||
$(this).find('span.tile').removeClass('op06');
|
$(this).find('span.tile').removeClass('op06');
|
||||||
},
|
},
|
||||||
out:function(){
|
out:function(){
|
||||||
|
@ -229,6 +263,17 @@ var orbitDesktop = function(dom){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('#holder').tinyscrollbar({ axis: 'x'});
|
$('#holder').tinyscrollbar({ axis: 'x'});
|
||||||
|
var $sdm = $('.sdm');
|
||||||
|
|
||||||
|
if( !$sdm.children('.sdm_o') ){
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
$sdm.hover(function(){
|
||||||
|
$(this).addClass('thmc2');
|
||||||
|
}, function(){
|
||||||
|
$(this).removeClass('thmc2');
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
if(!o.desktopData[o.currentface]){
|
if(!o.desktopData[o.currentface]){
|
||||||
$(o.contentHolder).empty().load("/desktop/"+target,function(){
|
$(o.contentHolder).empty().load("/desktop/"+target,function(){
|
||||||
|
@ -240,6 +285,23 @@ var orbitDesktop = function(dom){
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
this.initializeSettings = function(target){
|
||||||
|
o.currenthtml = target;
|
||||||
|
o.currentface = "settings";
|
||||||
|
var bindHandlers = function(){
|
||||||
|
$("select#change_theme").change(function(){
|
||||||
|
o.changeTheme($(this).val());
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if(!o.desktopData[o.currentface]){
|
||||||
|
$(o.contentHolder).empty().load("/desktop/"+target,function(){
|
||||||
|
bindHandlers();
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
$(o.contentHolder).html(o.desktopData[o.currentface]);
|
||||||
|
bindHandlers();
|
||||||
|
}
|
||||||
|
};
|
||||||
this.loadWallpaper = function(wallpaper){
|
this.loadWallpaper = function(wallpaper){
|
||||||
if(!wallpaper)wallpaper = o.themesettings.background;
|
if(!wallpaper)wallpaper = o.themesettings.background;
|
||||||
var ww = $(window).width();
|
var ww = $(window).width();
|
||||||
|
@ -252,97 +314,33 @@ var orbitDesktop = function(dom){
|
||||||
$("div#bgover").css({"position":"fixed","top":"0px","left":"0px","z-index":"-1","width":ww,"height":wh});
|
$("div#bgover").css({"position":"fixed","top":"0px","left":"0px","z-index":"-1","width":ww,"height":wh});
|
||||||
};
|
};
|
||||||
this.loadIconCache = function(){
|
this.loadIconCache = function(){
|
||||||
$("#home_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.home);
|
var imgs = $("ul.docklist img");
|
||||||
$("#app_manager_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.app_manager);
|
$.each(imgs,function(){
|
||||||
$("#sections_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.sections);
|
var setting_name = $(this).attr("id").replace("_icon","");
|
||||||
$("#settings_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.settings);
|
$(this).attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons[setting_name])
|
||||||
$("#publication_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.publication);
|
})
|
||||||
$("#journal_p_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.journal_p);
|
|
||||||
$("#seminar_p_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.seminar_p);
|
|
||||||
$("#books_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.books);
|
|
||||||
$("#research_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.research);
|
|
||||||
$("#research_d_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.research_d);
|
|
||||||
$("#research_p_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.research_p);
|
|
||||||
$("#patents_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.patents);
|
|
||||||
$("#labs_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.labs);
|
|
||||||
$("#experience_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.experience);
|
|
||||||
$("#working_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.working);
|
|
||||||
$("#education_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.education);
|
|
||||||
$("#honors_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.honors);
|
|
||||||
$("#activities_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.activities);
|
|
||||||
$("#clubs_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.clubs);
|
|
||||||
$("#landt_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.landt);
|
|
||||||
$("#courses_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.courses);
|
|
||||||
$("#homework_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.homework);
|
|
||||||
$("#certification_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.certification);
|
|
||||||
$("#personal_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.personal);
|
|
||||||
$("#mypage_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.mypage);
|
|
||||||
$("#blog_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.blog);
|
|
||||||
$("#album_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.album);
|
|
||||||
$("#calendar_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.calendar);
|
|
||||||
$("#files_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.files);
|
|
||||||
$("#orbit_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.orbit);
|
|
||||||
$("#connection_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.connection);
|
|
||||||
$("#appstore_icon").attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons.appstore);
|
|
||||||
};
|
};
|
||||||
this.initializeSettings = function(target){
|
this.initializeWidgets = function(){
|
||||||
o.currenthtml = target;
|
var elements = $("#group_wrapper li.element");
|
||||||
o.currentface = "settings";
|
$.each(elements,function(){
|
||||||
if(!o.desktopData[o.currentface]){
|
var widget = $(this);
|
||||||
$(o.contentHolder).empty().load("/desktop/"+target,function(){
|
if(widget.attr("data-category")=="widget"){
|
||||||
// bindHandlers();
|
var widgename =widget.attr("data-content");
|
||||||
|
$.getScript("/desktop_widgets/"+widgename+"/"+widgename+".js",function(){
|
||||||
|
widget.find("div.appholder").load("/desktop_widgets/"+widgename+"/index.html.erb");
|
||||||
});
|
});
|
||||||
}else{
|
// $(this).find("div.appholder").append( $('<link rel="stylesheet" id="dyn_css" type="text/css" />').attr('href', "/desktop_widgets/"+widgename+"/css/"+widgename+".css"));
|
||||||
$(o.contentHolder).html(o.desktopData[o.currentface]);
|
}
|
||||||
// bindHandlers();
|
|
||||||
|
})
|
||||||
}
|
}
|
||||||
};
|
|
||||||
o.initialize();
|
o.initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
orbitDesktop.prototype.themefolder = "themes";
|
orbitDesktop.prototype.themefolder = "themes";
|
||||||
|
orbitDesktop.prototype.widgetfolder = "desktop_widgets";
|
||||||
|
orbitDesktop.prototype.desktopId = "1";
|
||||||
|
orbitDesktop.prototype.notifyImgPath = "temp";
|
||||||
|
|
||||||
// devin
|
// devin
|
||||||
(function(){
|
|
||||||
$(document).ready(function(){
|
|
||||||
// dock effect
|
|
||||||
var $widget_fn = $('.widget_fn'),
|
|
||||||
$fn_des = $('.fn_des');
|
|
||||||
|
|
||||||
$widget_fn.hover(function(){
|
|
||||||
var fn_name = $(this).find('img').attr('alt'),
|
|
||||||
nth = $(this).parents('.d_cate').index(),
|
|
||||||
des_left = $('.dock_child').eq(nth).width();
|
|
||||||
|
|
||||||
|
|
||||||
$(this).addClass('thmc1');
|
|
||||||
$fn_des
|
|
||||||
.text(fn_name)
|
|
||||||
.css({
|
|
||||||
'top':nth * 60,
|
|
||||||
'left': des_left + 60
|
|
||||||
})
|
|
||||||
.stop(true, true)
|
|
||||||
.fadeIn();
|
|
||||||
}, function(){
|
|
||||||
$(this).removeClass('thmc1');
|
|
||||||
$fn_des.stop(true, true).fadeOut();
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}());
|
|
||||||
|
|
||||||
// Simple Dropdown Menu
|
|
||||||
function sdm(){
|
|
||||||
var $sdm = $('.sdm');
|
|
||||||
|
|
||||||
if( !$sdm.children('.sdm_o') ){
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
$sdm.hover(function(){
|
|
||||||
$(this).addClass('thmc2');
|
|
||||||
}, function(){
|
|
||||||
$(this).removeClass('thmc2');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -33,7 +33,7 @@ var orbitDesktopAPI = function(){
|
||||||
img = "note_alert.png";
|
img = "note_alert.png";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$notify.find("img#note_img").attr("src","/assets/"+img);
|
$notify.find("img#note_img").attr("src",o.notifyImgPath+img);
|
||||||
$notify.find(".note_message").text(msg);
|
$notify.find(".note_message").text(msg);
|
||||||
n_height = $notify.outerHeight();
|
n_height = $notify.outerHeight();
|
||||||
if(!time)time=5000; else time=time*1000;
|
if(!time)time=5000; else time=time*1000;
|
||||||
|
@ -44,5 +44,3 @@ var orbitDesktopAPI = function(){
|
||||||
.animate({top:-n_height,opacity:0},200);
|
.animate({top:-n_height,opacity:0},200);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
orbitDesktopAPI.prototype.notifyImgPath = "";
|
|
|
@ -4,14 +4,13 @@ $(function() {
|
||||||
plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
|
plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
|
||||||
|
|
||||||
// Theme options
|
// Theme options
|
||||||
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
|
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect",
|
||||||
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
|
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,forecolor,backcolor",
|
||||||
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
|
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,fullscreen",
|
||||||
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
|
|
||||||
theme_advanced_toolbar_location : "top",
|
theme_advanced_toolbar_location : "top",
|
||||||
theme_advanced_toolbar_align : "left",
|
theme_advanced_toolbar_align : "left",
|
||||||
theme_advanced_statusbar_location : "bottom",
|
theme_advanced_statusbar_location : "bottom",
|
||||||
theme_advanced_resizing : false,
|
theme_advanced_resizing : true,
|
||||||
|
|
||||||
// Skin options
|
// Skin options
|
||||||
skin : "o2k7",
|
skin : "o2k7",
|
||||||
|
|
|
@ -180,8 +180,8 @@ a, a:hover { text-decoration: none; }
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
left: 0;
|
/* left: 0;
|
||||||
top: 0;
|
top: 0; */
|
||||||
}
|
}
|
||||||
.dtitle {
|
.dtitle {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
.checkblock {
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
.check[type="checkbox"]{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
.checkbox{
|
||||||
|
padding:5px;
|
||||||
|
margin:5px;
|
||||||
|
display: inline-block;
|
||||||
|
color:#777777;
|
||||||
|
text-shadow: 0 1px 0px rgba(255,255,255,.4);
|
||||||
|
border-radius: 3px;
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
height: 30px;
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #ededed), color-stop(1, #dfdfdf) );
|
||||||
|
background:-moz-linear-gradient( center top, #ededed 5%, #dfdfdf 100% );
|
||||||
|
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf');
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
.checkbox .check-icon {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
border-radius: 11px;
|
||||||
|
background-color: #d0f311;
|
||||||
|
right: -5px;
|
||||||
|
top: -5px;
|
||||||
|
box-shadow: 0px 0px 5px rgba(0,0,0,.05);
|
||||||
|
}
|
||||||
|
.checkbox .check-icon i {
|
||||||
|
margin: 1px 0 0 3px;
|
||||||
|
}
|
||||||
|
.checkbox .member-name {
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
img.member-img {
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
max-width: 30px;
|
||||||
|
}
|
||||||
|
.checked .check-icon {
|
||||||
|
display: block;
|
||||||
|
}
|
|
@ -0,0 +1,205 @@
|
||||||
|
div.datepicker {
|
||||||
|
position: relative;
|
||||||
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 12px;
|
||||||
|
height: 147px;
|
||||||
|
cursor: default;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.datepickerContainer {
|
||||||
|
padding: 10px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
.datepickerBorderT {
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
top: 0;
|
||||||
|
right: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: url(../images/datepicker_t.png);
|
||||||
|
}
|
||||||
|
.datepickerBorderB {
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
bottom: 0;
|
||||||
|
right: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: url(../images/datepicker_b.png);
|
||||||
|
}
|
||||||
|
.datepickerBorderL {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 10px;
|
||||||
|
top: 10px;
|
||||||
|
width: 10px;
|
||||||
|
background: url(../images/datepicker_l.png);
|
||||||
|
}
|
||||||
|
.datepickerBorderR {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 10px;
|
||||||
|
top: 10px;
|
||||||
|
width: 10px;
|
||||||
|
background: url(../images/datepicker_r.png);
|
||||||
|
}
|
||||||
|
.datepickerBorderTL {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: url(../images/datepicker_tl.png);
|
||||||
|
}
|
||||||
|
.datepickerBorderTR {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: url(../images/datepicker_tr.png);
|
||||||
|
}
|
||||||
|
.datepickerBorderBL {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: url(../images/datepicker_bl.png);
|
||||||
|
}
|
||||||
|
.datepickerBorderBR {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: url(../images/datepicker_br.png);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
.datepickerHidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
div.datepicker table {
|
||||||
|
width: 260px;
|
||||||
|
border-collapse:collapse;
|
||||||
|
}
|
||||||
|
div.datepicker a {
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: default;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
div.datepicker table td {
|
||||||
|
text-align: right;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
div.datepicker th {
|
||||||
|
text-align: center;
|
||||||
|
color: #999;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
div.datepicker tbody th {
|
||||||
|
/*text-align: left;*/
|
||||||
|
}
|
||||||
|
div.datepicker tbody a {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.datepickerWeek a {
|
||||||
|
color: #F60;
|
||||||
|
}
|
||||||
|
.datepickerWeek a:hover {
|
||||||
|
color: #FC0 !important;
|
||||||
|
}
|
||||||
|
.datepickerDays a {
|
||||||
|
width: 20px;
|
||||||
|
line-height: 16px;
|
||||||
|
height: 16px;
|
||||||
|
padding-right: 2px;
|
||||||
|
}
|
||||||
|
.datepickerYears a,
|
||||||
|
.datepickerMonths a{
|
||||||
|
width: 44px;
|
||||||
|
line-height: 36px;
|
||||||
|
height: 36px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
td.datepickerNotInMonth a {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
tbody.datepickerDays td.datepickerSelected{
|
||||||
|
background: #0088CC;
|
||||||
|
}
|
||||||
|
tbody.datepickerDays td.datepickerSelected a{
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected {
|
||||||
|
background: #17384d;
|
||||||
|
}
|
||||||
|
tbody.datepickerYears td.datepickerSelected,
|
||||||
|
tbody.datepickerMonths td.datepickerSelected{
|
||||||
|
background: #17384d;
|
||||||
|
}
|
||||||
|
div.datepicker a:hover,
|
||||||
|
div.datepicker a:hover {
|
||||||
|
color: #88c5eb;
|
||||||
|
}
|
||||||
|
div.datepicker td.datepickerNotInMonth a:hover {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
div.datepicker tbody th {
|
||||||
|
/*text-align: left;*/
|
||||||
|
}
|
||||||
|
.datepickerSpace div {
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
.datepickerGoNext a,
|
||||||
|
.datepickerGoPrev a,
|
||||||
|
.datepickerMonth a {
|
||||||
|
text-align: center;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.datepickerGoNext a {
|
||||||
|
float: right;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
.datepickerGoPrev a {
|
||||||
|
float: left;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
table.datepickerViewDays tbody.datepickerMonths,
|
||||||
|
table.datepickerViewDays tbody.datepickerYears {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
table.datepickerViewMonths tbody.datepickerDays,
|
||||||
|
table.datepickerViewMonths tbody.datepickerYears,
|
||||||
|
table.datepickerViewMonths tr.datepickerDoW {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
table.datepickerViewYears tbody.datepickerDays,
|
||||||
|
table.datepickerViewYears tbody.datepickerMonths,
|
||||||
|
table.datepickerViewYears tr.datepickerDoW {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
td.datepickerDisabled a,
|
||||||
|
td.datepickerDisabled.datepickerNotInMonth a{
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
td.datepickerDisabled a:hover {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
td.datepickerSpecial a {
|
||||||
|
background: #700;
|
||||||
|
}
|
||||||
|
td.datepickerSpecial.datepickerSelected a {
|
||||||
|
background: #a00;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Layout*/
|
||||||
|
#widgetCalendar {
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
|
@ -1,4 +1,3 @@
|
||||||
@import url(http://fonts.googleapis.com/css?family=Cuprum);
|
|
||||||
@font-face{
|
@font-face{
|
||||||
font-family: 'WebSymbolsRegular';
|
font-family: 'WebSymbolsRegular';
|
||||||
src: url(<%= asset_path 'websymbols-regular-webfont.eot' %>);
|
src: url(<%= asset_path 'websymbols-regular-webfont.eot' %>);
|
||||||
|
@ -50,18 +49,21 @@
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
#orbit-bar .navbar-search {
|
#orbit-bar .navbar-search {
|
||||||
float: none;
|
left: 28px;
|
||||||
margin: 0 auto;
|
margin: 0;
|
||||||
text-align: center;
|
position: absolute;
|
||||||
|
text-align: right;
|
||||||
|
top: -1px;
|
||||||
}
|
}
|
||||||
#orbit-bar .nav.pull-right {
|
#orbit-bar .nav.pull-right {
|
||||||
margin-right: -20px;
|
margin-right: -20px;
|
||||||
}
|
}
|
||||||
#orbit-bar .search-query {
|
#orbit-bar .search-query {
|
||||||
background-image: url(<%= asset_path 'main-search.png' %>);
|
padding: 4px 9px;
|
||||||
background-repeat: no-repeat;
|
height: 12px;
|
||||||
background-position: 5px 6px;
|
margin-top: 3px;
|
||||||
padding-left: 25px;
|
border: 1px solid #333333;
|
||||||
|
font-size: 11px;
|
||||||
/*background-color: rgba(255, 255, 255, 0.8);
|
/*background-color: rgba(255, 255, 255, 0.8);
|
||||||
color: #333;
|
color: #333;
|
||||||
text-shadow: 0px 1px 0px #FFF;*/
|
text-shadow: 0px 1px 0px #FFF;*/
|
||||||
|
@ -70,7 +72,7 @@
|
||||||
#orbit-bar .search-query:focus {
|
#orbit-bar .search-query:focus {
|
||||||
/*background-color: rgba(255, 255, 255, 0.9);
|
/*background-color: rgba(255, 255, 255, 0.9);
|
||||||
text-shadow: 0px 1px 0px #FFF;*/
|
text-shadow: 0px 1px 0px #FFF;*/
|
||||||
background-position: 6px 7px;
|
background-position: 5px 2px;
|
||||||
}
|
}
|
||||||
#orbit-bar .container {
|
#orbit-bar .container {
|
||||||
width:100%;
|
width:100%;
|
||||||
|
@ -105,11 +107,16 @@
|
||||||
text-indent: -9999px;
|
text-indent: -9999px;
|
||||||
padding:6px;
|
padding:6px;
|
||||||
}
|
}
|
||||||
|
#orbit-bar .nav > li.search {
|
||||||
|
overflow: hidden;
|
||||||
|
width: 28px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
#orbit-bar .nav > li > a.orbit-bar-home {
|
#orbit-bar .nav > li > a.orbit-bar-home {
|
||||||
background-position: -10px -10px;
|
background-position: -10px -10px;
|
||||||
}
|
}
|
||||||
#orbit-bar .nav > li > a.orbit-bar-desktop {
|
#orbit-bar .nav > li > a.orbit-bar-desktop {
|
||||||
background-position: -100px -4px;
|
background-position: -106px -9px;
|
||||||
}
|
}
|
||||||
#orbit-bar .nav > li > a.orbit-bar-member {
|
#orbit-bar .nav > li > a.orbit-bar-member {
|
||||||
background-position: -4px -37px;
|
background-position: -4px -37px;
|
||||||
|
@ -120,6 +127,10 @@
|
||||||
#orbit-bar .nav > li > a.orbit-bar-language {
|
#orbit-bar .nav > li > a.orbit-bar-language {
|
||||||
background-position: -42px -42px;
|
background-position: -42px -42px;
|
||||||
}
|
}
|
||||||
|
#orbit-bar .nav > li > a.orbit-bar-search {
|
||||||
|
background-position: -75px -10px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
.language-menu .active {
|
.language-menu .active {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
@ -144,6 +155,9 @@
|
||||||
float: left;
|
float: left;
|
||||||
max-width: 22px;
|
max-width: 22px;
|
||||||
}
|
}
|
||||||
|
#orbit-bar .clear {
|
||||||
|
clear: none;
|
||||||
|
}
|
||||||
#orbit-bar .account-menu {
|
#orbit-bar .account-menu {
|
||||||
right: 5px;
|
right: 5px;
|
||||||
}
|
}
|
||||||
|
@ -351,8 +365,6 @@
|
||||||
border-top: none;
|
border-top: none;
|
||||||
}
|
}
|
||||||
#post-body .editor {
|
#post-body .editor {
|
||||||
margin: 8px 0;
|
|
||||||
width: 100%;
|
|
||||||
}
|
}
|
||||||
#post-body-content {
|
#post-body-content {
|
||||||
margin-right: 320px;
|
margin-right: 320px;
|
||||||
|
@ -390,6 +402,9 @@
|
||||||
.filter .active a {
|
.filter .active a {
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
}
|
}
|
||||||
|
.filter form {
|
||||||
|
margin: 5px 10px;
|
||||||
|
}
|
||||||
.filters {
|
.filters {
|
||||||
background-color: rgba(0,0,0,0.075);
|
background-color: rgba(0,0,0,0.075);
|
||||||
-webkit-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.2);
|
-webkit-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.2);
|
||||||
|
@ -510,6 +525,26 @@
|
||||||
.active .web-symbol:after {
|
.active .web-symbol:after {
|
||||||
content: "}";
|
content: "}";
|
||||||
}
|
}
|
||||||
|
.img-peview {
|
||||||
|
margin-left: 12px;
|
||||||
|
}
|
||||||
|
.popover img {
|
||||||
|
max-height: 120px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
.popover-inner {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
.popover-title {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.popover-content {
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.popover-title {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
/*icons*/
|
/*icons*/
|
||||||
.the-icons i:after {
|
.the-icons i:after {
|
||||||
content: attr(class);
|
content: attr(class);
|
||||||
|
@ -628,6 +663,12 @@
|
||||||
.icons-unlock {
|
.icons-unlock {
|
||||||
background-position: -192px -32px;
|
background-position: -192px -32px;
|
||||||
}
|
}
|
||||||
|
.icons-time {
|
||||||
|
background-position: -448px -32px;
|
||||||
|
}
|
||||||
|
.icons-banner {
|
||||||
|
background-position: -608px -32px;
|
||||||
|
}
|
||||||
/*3*/
|
/*3*/
|
||||||
.icons-content {
|
.icons-content {
|
||||||
background-position: -160px -66px;
|
background-position: -160px -66px;
|
||||||
|
@ -776,6 +817,9 @@
|
||||||
background-position: -224px -320px;
|
background-position: -224px -320px;
|
||||||
}
|
}
|
||||||
/*12*/
|
/*12*/
|
||||||
|
.icons-check-2 {
|
||||||
|
background-position: -288px -352px;
|
||||||
|
}
|
||||||
.icons-star-thin {
|
.icons-star-thin {
|
||||||
background-position: -416px -352px;
|
background-position: -416px -352px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,28 +63,86 @@
|
||||||
}
|
}
|
||||||
.file-upload {
|
.file-upload {
|
||||||
position:relative;
|
position:relative;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.file-upload .file-name {
|
.file-upload .file-name {
|
||||||
display: inline-block;
|
|
||||||
margin: 0 0 5px 5px;
|
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
width: 140px;
|
overflow: hidden;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 1px 1px 1px 0;
|
||||||
|
border-color: #CCC;
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
padding: 4px 10px;
|
||||||
|
height: 18px;
|
||||||
|
line-height: 18px;
|
||||||
|
-webkit-border-radius: 0 3px 3px 0;
|
||||||
|
-moz-border-radius: 0 3px 3px 0;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
text-align: left;
|
||||||
|
margin: 0;
|
||||||
|
width: 182px;
|
||||||
}
|
}
|
||||||
.file-upload .upload {
|
.file-upload .upload {
|
||||||
margin:0;
|
margin:0;
|
||||||
padding:0;
|
padding:0;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
top:0;
|
top: 0;
|
||||||
left:0;
|
left:0;
|
||||||
opacity:.0;
|
opacity:.0;
|
||||||
filter: alpha(opacity=100);
|
font-size: 60px;
|
||||||
|
left: -595px/9;
|
||||||
|
filter: alpha(opacity: 0);
|
||||||
|
outline: none;
|
||||||
}
|
}
|
||||||
.file-upload .upload:focus {
|
.file-upload .upload:focus {
|
||||||
position:absolute;
|
position:absolute;
|
||||||
}
|
}
|
||||||
.upload-picture {
|
.upload-picture {
|
||||||
margin-right: 5px;
|
margin-bottom: 5px;
|
||||||
|
text-align: center;
|
||||||
|
width: 276px;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 90px;
|
||||||
|
}
|
||||||
|
.upload-picture img {
|
||||||
|
left: 0;
|
||||||
|
margin-top: -15%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.widget-box .widgetInfo {
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
width: 255px;
|
||||||
|
margin : 0px 0 5px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
.file-upload .input-medium {
|
||||||
|
border-radius: 3px 3px 3px 3px !important;
|
||||||
|
width: 267px;
|
||||||
|
position: relative;
|
||||||
|
z-index: 5;
|
||||||
}
|
}
|
||||||
#widget-link table {
|
#widget-link table {
|
||||||
margin-bottom:0
|
margin-bottom:0
|
||||||
}
|
}
|
||||||
|
/*Date*/
|
||||||
|
.showDate {
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 1px 0 1px 1px;
|
||||||
|
border-color: #CCC;
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
padding: 4px 10px;
|
||||||
|
height: 18px;
|
||||||
|
line-height: 18px;
|
||||||
|
-webkit-border-radius: 3px 0 0 3px;
|
||||||
|
-moz-border-radius: 3px 0 0 3px;
|
||||||
|
border-radius: 3px 0 0 3px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.calendarInput {
|
||||||
|
position: absolute;
|
||||||
|
visibility: hidden;
|
||||||
|
left: 11px;
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
class Admin::AdBannersController < ApplicationController
|
class Admin::AdBannersController < ApplicationController
|
||||||
layout "admin"
|
layout "new_admin"
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
before_filter :is_admin?
|
before_filter :is_admin?
|
||||||
|
|
||||||
|
@ -10,11 +10,14 @@ class Admin::AdBannersController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@ad_banner = AdBanner.find(params[:id])
|
@ad_banners = AdBanner.all
|
||||||
|
@active = AdBanner.find(params[:id])
|
||||||
|
render :action => 'index'
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@ad_banner = AdBanner.new
|
@ad_banners = AdBanner.all
|
||||||
|
render :action => 'index',:params => 'new'
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
@ -36,8 +39,13 @@ class Admin::AdBannersController < ApplicationController
|
||||||
redirect_to admin_ad_banners_url
|
redirect_to admin_ad_banners_url
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def destroy_ad_image
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@ad_banners = AdBanner.all
|
@ad_banners = AdBanner.all
|
||||||
|
@active = @ad_banners.first
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -0,0 +1,47 @@
|
||||||
|
class Admin::AdImagesController < ApplicationController
|
||||||
|
layout 'new_admin'
|
||||||
|
before_filter :authenticate_user!
|
||||||
|
before_filter :is_admin?
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@ad_banner = AdBanner.find params[:ad_banner_id]
|
||||||
|
@ad_image = @ad_banner.ad_images.find params[:id]
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@ad_banner = AdBanner.find params[:ad_banner_id]
|
||||||
|
@ad_image = AdImage.find params[:id]
|
||||||
|
@ad_image.update_attributes(params[:ad_image])
|
||||||
|
@ad_image.to_save = true
|
||||||
|
@ad_image.save!
|
||||||
|
redirect_to admin_ad_banner_path @ad_banner
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@ad_image =AdImage.new
|
||||||
|
#render :action => 'new',:url=> {:ad_banner_id => params.has_key?(:ad_banner_id)? params[:ad_banner_id],nil}
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@ad_banner = AdBanner.find params[:ad_banner][:id]
|
||||||
|
ad_image = AdImage.new params[:ad_image]
|
||||||
|
ad_image.to_save = true
|
||||||
|
@ad_banner.ad_images << ad_image
|
||||||
|
|
||||||
|
if @ad_banner.save!
|
||||||
|
redirect_to admin_ad_banner_path @ad_banner
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@ad_banner = AdBanner.find params[:ad_banner_id]
|
||||||
|
@ad_image = @ad_banner.ad_images.find params[:id]
|
||||||
|
if @ad_image.destroy
|
||||||
|
flash[:notice] = t('admin.success_destroy_ad_image')
|
||||||
|
redirect_to admin_ad_banner_path @ad_banner
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
|
@ -1,11 +1,12 @@
|
||||||
class DesktopController< ApplicationController
|
class DesktopController< ApplicationController
|
||||||
layout 'desktop'
|
layout 'desktop'
|
||||||
|
before_filter :authenticate_user!
|
||||||
def index
|
def index
|
||||||
|
@desktop = current_user.desktop
|
||||||
end
|
end
|
||||||
|
|
||||||
def desktop
|
def desktop
|
||||||
|
|
||||||
render :layout => false
|
render :layout => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -17,6 +18,18 @@ class DesktopController< ApplicationController
|
||||||
render :layout => false
|
render :layout => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def save_desktop_settings
|
||||||
|
@desktop = Desktop.find(params["id"])
|
||||||
|
@desktop.update_attributes(:theme => params["theme"])
|
||||||
|
a = Array.new
|
||||||
|
a << {"success"=>"true"}
|
||||||
|
render :json=>a.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_desktop_settings
|
||||||
|
@desktop = Desktop.find(params["id"])
|
||||||
|
render :json => @desktop.to_json
|
||||||
|
end
|
||||||
def settings
|
def settings
|
||||||
render :layout => false
|
render :layout => false
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@ require 'mongo'
|
||||||
class GridfsController < ActionController::Metal
|
class GridfsController < ActionController::Metal
|
||||||
|
|
||||||
def serve
|
def serve
|
||||||
gridfs_path = env["PATH_INFO"].gsub("/gridfs/", "")
|
gridfs_path = env["PATH_INFO"].gsub("/gridfs/", "").force_encoding("UTF-8")
|
||||||
begin
|
begin
|
||||||
gridfs_file = Mongo::GridFileSystem.new(Mongoid.database).open(gridfs_path, 'r')
|
gridfs_file = Mongo::GridFileSystem.new(Mongoid.database).open(gridfs_path, 'r')
|
||||||
self.response_body = gridfs_file.read
|
self.response_body = gridfs_file.read
|
||||||
|
|
|
@ -1,2 +1,34 @@
|
||||||
module Admin::AdBannerHelper
|
module Admin::AdBannerHelper
|
||||||
|
def preview_block(ad_banner)
|
||||||
|
res =''
|
||||||
|
#same code as in frontend backend parser
|
||||||
|
if ad_banner
|
||||||
|
res << "<script type='text/javascript'>
|
||||||
|
$(document).ready(function(){ $('#slideshow-#{ad_banner.title.dehumanize}').cycle({delay: -1000, fx: '#{ad_banner.ad_fx.nil?? 'fade': ad_banner.ad_fx}', timeoutFn: getTimeout }); });
|
||||||
|
</script>"
|
||||||
|
res << "<div id='slideshow-#{ad_banner.title.dehumanize}'>"
|
||||||
|
printable_ad_images = []
|
||||||
|
ad_banner.ad_images.each do |ad_image|
|
||||||
|
if ad_image.display?
|
||||||
|
ad_image.weight.times do
|
||||||
|
printable_ad_images << ad_image
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
printable_ad_images.shuffle!
|
||||||
|
printable_ad_images.each do |ad_image| #TODO Need Reflact
|
||||||
|
res << "<img src='#{ad_image.file}' "
|
||||||
|
res << "alt='#{ad_image.title || ' '}' "
|
||||||
|
res << "time_to_next='#{ad_banner.transition_sec}' "
|
||||||
|
res << "link_open='#{ad_image.link_open}' "
|
||||||
|
# res << "link_url='#{(ad_image.direct_to_after_click?? ad_image.out_link : ad_banner.context) || ' '}' "
|
||||||
|
res << "link_url='#{(ad_image.out_link || ad_banner.context || ' ')}' "
|
||||||
|
res << "/>"
|
||||||
|
end
|
||||||
|
res << "</div>"
|
||||||
|
res.html_safe
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
module Admin::AdImagesHelper
|
||||||
|
|
||||||
|
def active_when_default_locale_eq locale
|
||||||
|
locale.to_sym == I18n.default_locale ? 'active': ''
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -2,6 +2,12 @@ module ApplicationHelper
|
||||||
|
|
||||||
FLASH_NOTICE_KEYS = [:error, :notice, :warning]
|
FLASH_NOTICE_KEYS = [:error, :notice, :warning]
|
||||||
|
|
||||||
|
def site_valid_locales_default_head
|
||||||
|
index = @site_valid_locales.rindex I18n.default_locale.to_s
|
||||||
|
shift_out = @site_valid_locales.shift(index)
|
||||||
|
@site_valid_locales += shift_out
|
||||||
|
end
|
||||||
|
|
||||||
def colorize_in_use_locale(locale)
|
def colorize_in_use_locale(locale)
|
||||||
@site_in_use_locales.include?(locale)? 'green' : 'red'
|
@site_in_use_locales.include?(locale)? 'green' : 'red'
|
||||||
end
|
end
|
||||||
|
@ -145,7 +151,8 @@ module ApplicationHelper
|
||||||
javascripts << "<script type='text/javascript' src='/assets/bootstrap.js'></script>\n"
|
javascripts << "<script type='text/javascript' src='/assets/bootstrap.js'></script>\n"
|
||||||
javascripts << "<script type='text/javascript' src='/assets/jquery.tinyscrollbar.min.js'></script>\n"
|
javascripts << "<script type='text/javascript' src='/assets/jquery.tinyscrollbar.min.js'></script>\n"
|
||||||
javascripts << "<script type='text/javascript' src='/assets/jquery.isotope.min.js'></script>\n"
|
javascripts << "<script type='text/javascript' src='/assets/jquery.isotope.min.js'></script>\n"
|
||||||
javascripts << "<script type='text/javascript' src='/assets/orbit-1.0.js'></script>\n"
|
javascripts << "<script type='text/javascript' src='/assets/orbit-bar-member.js'></script>\n"
|
||||||
|
javascripts << "<script type='text/javascript' src='/assets/orbit-bar-search.js'></script>\n"
|
||||||
javascripts << "<script type='text/javascript' src='/assets/orbit_bar.js'></script>\n"
|
javascripts << "<script type='text/javascript' src='/assets/orbit_bar.js'></script>\n"
|
||||||
javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n"
|
javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n"
|
||||||
page.design.javascripts.each do |js|
|
page.design.javascripts.each do |js|
|
||||||
|
|
|
@ -4,41 +4,32 @@ class AdBanner
|
||||||
include Mongoid::MultiParameterAttributes
|
include Mongoid::MultiParameterAttributes
|
||||||
|
|
||||||
field :title
|
field :title
|
||||||
field :picture_position
|
field :transition_sec,type: Integer
|
||||||
field :post_date,type: Date
|
|
||||||
field :unpost_date,type: Date
|
|
||||||
field :context
|
|
||||||
field :direct_to_after_click,type: Boolean
|
|
||||||
field :ad_fx #TODO Design should explain
|
field :ad_fx #TODO Design should explain
|
||||||
|
|
||||||
|
|
||||||
before_save :save_or_destroy
|
before_save :save_or_destroy
|
||||||
|
validates_uniqueness_of :title
|
||||||
embeds_many :ad_images, :cascade_callbacks => true
|
has_many :ad_images , dependent: :delete
|
||||||
|
|
||||||
FX_TYPES = ["blindX","blindY","blindZ","cover","curtainX","curtainY","fade","fadeZoom","growX","growY","scrollUp","scrollDown","scrollLeft","scrollRight","scrollHorz","scrollVert","shuffle","slideX","slideY","toss","turnUp","turnDown","turnLeft","turnRight","uncover","wipe","zoom"]
|
FX_TYPES = ["blindX","blindY","blindZ","cover","curtainX","curtainY","fade","fadeZoom","growX","growY","scrollUp","scrollDown","scrollLeft","scrollRight","scrollHorz","scrollVert","shuffle","slideX","slideY","toss","turnUp","turnDown","turnLeft","turnRight","uncover","wipe","zoom"]
|
||||||
|
|
||||||
def display?
|
|
||||||
if (self.post_date <= Date.today && (self.unpost_date.nil? || self.unpost_date>= Date.today))
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
def new_ad_images=(*attrs)
|
# def new_ad_images(*attrs)
|
||||||
attrs[0].each do |attr| #Loop by JSs,Themes,Imgs
|
# debugger
|
||||||
unless attr[:file].nil?
|
# a=1
|
||||||
self.ad_images << AdImage.new(attr)
|
# attrs[0].each do |attr| #Loop by JSs,Themes,Imgs
|
||||||
end
|
# unless attr[:file].nil?
|
||||||
end
|
# self.ad_images << AdImage.new(attr)
|
||||||
end
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
def existing_ad_images=(*attrs)
|
# def existing_ad_images=(*attrs)
|
||||||
attrs[0].each do |attr| #Loop by JSs,Themes,Imgs
|
# attrs[0].each do |attr| #Loop by JSs,Themes,Imgs
|
||||||
ad_image = self.ad_images.find attr[0]
|
# ad_image = self.ad_images.find attr[0]
|
||||||
ad_image.update_attributes(attr[1])
|
# ad_image.update_attributes(attr[1])
|
||||||
end
|
# end
|
||||||
end
|
# end
|
||||||
|
|
||||||
def save_or_destroy
|
def save_or_destroy
|
||||||
self.ad_images.each do |ad_image|
|
self.ad_images.each do |ad_image|
|
||||||
|
|
|
@ -4,18 +4,45 @@ class AdImage
|
||||||
|
|
||||||
mount_uploader :file, ImageUploader
|
mount_uploader :file, ImageUploader
|
||||||
|
|
||||||
field :time_to_next #Weight
|
has_one :title, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
|
||||||
field :picture_intro
|
has_one :context, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
|
||||||
field :out_link
|
|
||||||
field :link_open
|
field :direct_to_after_click,type: Boolean
|
||||||
|
|
||||||
|
field :weight ,type: Integer ,default: 1
|
||||||
|
field :out_link #the link itself
|
||||||
|
field :link_open #how will the link be opened
|
||||||
|
LINK_OPEN_TYPES = ["new_window","local"]
|
||||||
|
|
||||||
|
field :post_date,type: Date
|
||||||
|
field :unpost_date,type: Date
|
||||||
|
|
||||||
field :to_save, :type => Boolean
|
field :to_save, :type => Boolean
|
||||||
field :to_destroy, :type => Boolean
|
field :to_destroy, :type => Boolean
|
||||||
|
|
||||||
LINK_OPEN_TYPES = ["new_window","local"]
|
belongs_to :ad_banner
|
||||||
|
|
||||||
|
# validates_numericality_of :weight, greater_than_or_equal_to: 1,less_than_or_equal_to: 10
|
||||||
|
# validates_format_of :out_link, with: /(http:\/\/.*|)/ ,:message => 'Need a valid URL'
|
||||||
|
# validates_presence_of :post_date,:message => 'Need a valid post date'
|
||||||
|
attr_reader :parse_post_date,:parse_unpost_date
|
||||||
|
|
||||||
|
def parse_post_date=(att)
|
||||||
|
self.post_date = (Date.parse att rescue nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
embedded_in :ad_banner
|
def parse_unpost_date=(att)
|
||||||
|
self.unpost_date = (Date.parse att rescue nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
def display?
|
||||||
|
if (self.post_date <= Date.today && (self.unpost_date.nil? || self.unpost_date>= Date.today) rescue false)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def get_delay_time
|
def get_delay_time
|
||||||
time = ''
|
time = ''
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
class Design
|
class Design
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
include ParserLayout
|
||||||
|
|
||||||
field :title
|
field :title
|
||||||
field :author
|
field :author
|
||||||
|
@ -14,7 +15,7 @@ class Design
|
||||||
embeds_one :reset_css, :class_name => "Stylesheet", :cascade_callbacks => true
|
embeds_one :reset_css, :class_name => "Stylesheet", :cascade_callbacks => true
|
||||||
embeds_many :themes, :cascade_callbacks => true
|
embeds_many :themes, :cascade_callbacks => true
|
||||||
embeds_many :javascripts, :cascade_callbacks => true
|
embeds_many :javascripts, :cascade_callbacks => true
|
||||||
embeds_many :images, :cascade_callbacks => true
|
embeds_many :images, :as => :design_image, :cascade_callbacks => true
|
||||||
# embeds_many :custom_images, :class_name => 'Image', :cascade_callbacks => true
|
# embeds_many :custom_images, :class_name => 'Image', :cascade_callbacks => true
|
||||||
|
|
||||||
validates_presence_of :title
|
validates_presence_of :title
|
||||||
|
@ -65,9 +66,6 @@ class Design
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def parse_css_for_images
|
def parse_css_for_images
|
||||||
self.images.each do |image|
|
|
||||||
image.save
|
|
||||||
end
|
|
||||||
if (self.default_css && self.default_css.changed)
|
if (self.default_css && self.default_css.changed)
|
||||||
self.default_css.parse_urls
|
self.default_css.parse_urls
|
||||||
end
|
end
|
||||||
|
@ -76,6 +74,7 @@ class Design
|
||||||
theme.parse_urls
|
theme.parse_urls
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
parse_body_for_images(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,6 +27,7 @@ class Stylesheet < DesignFile
|
||||||
temp_file = File.new(dir + '/' + orig_file_name, 'w+')
|
temp_file = File.new(dir + '/' + orig_file_name, 'w+')
|
||||||
temp_file.write content.force_encoding("UTF-8")
|
temp_file.write content.force_encoding("UTF-8")
|
||||||
self.file = temp_file
|
self.file = temp_file
|
||||||
|
self.save
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
class Desktop
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :theme, default: "default"
|
||||||
|
|
||||||
|
belongs_to :user
|
||||||
|
has_many :sections, :autosave => true, :dependent => :destroy
|
||||||
|
|
||||||
|
before_create :initialize_section
|
||||||
|
|
||||||
|
def initialize_section
|
||||||
|
self.sections.build(name: "Desktop 1")
|
||||||
|
self.sections.build(name: "Desktop 2")
|
||||||
|
self.sections.build(name: "Desktop 3")
|
||||||
|
self.sections.build(name: "Desktop 4")
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,15 @@
|
||||||
|
class Group
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
belongs_to :section
|
||||||
|
has_many :tiles, :autosave => true, :dependent => :destroy
|
||||||
|
before_create :initialize_tile
|
||||||
|
|
||||||
|
def initialize_tile
|
||||||
|
self.tiles.build
|
||||||
|
self.tiles.build
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
|
@ -34,7 +34,7 @@ class Page < Item
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_key
|
def set_key
|
||||||
if title.new_record?
|
if title && title.new_record?
|
||||||
title.key = 'title'
|
title.key = 'title'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
class Section
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :name
|
||||||
|
|
||||||
|
belongs_to :desktop
|
||||||
|
has_many :groups, :autosave => true, :dependent => :destroy
|
||||||
|
|
||||||
|
before_create :initialize_group
|
||||||
|
|
||||||
|
def initialize_group
|
||||||
|
self.groups.build
|
||||||
|
self.groups.build
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
class Tile
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
belongs_to :group
|
||||||
|
|
||||||
|
|
||||||
|
end
|
|
@ -16,11 +16,13 @@ class User
|
||||||
has_many :privilege_apps, :inverse_of => :privilege_users, :class_name => "AppAuth"
|
has_many :privilege_apps, :inverse_of => :privilege_users, :class_name => "AppAuth"
|
||||||
|
|
||||||
has_many :managing_apps,:class_name => "AppManager"
|
has_many :managing_apps,:class_name => "AppManager"
|
||||||
|
has_one :desktop, :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
|
||||||
|
|
||||||
|
before_create :initialize_desktop
|
||||||
|
|
||||||
def avb_apps
|
def avb_apps
|
||||||
sub_role_ids_ary=self.sub_roles.collect{|t| t.id}
|
sub_role_ids_ary=self.sub_roles.collect{|t| t.id}
|
||||||
query1 = AppAuth.any_in({sub_role_ids: sub_role_ids_ary}).excludes(blocked_user_ids: self.id)
|
query1 = AppAuth.any_in({sub_role_ids: sub_role_ids_ary}).excludes(blocked_user_ids: self.id)
|
||||||
|
@ -53,4 +55,8 @@ class User
|
||||||
User.find(id) rescue nil
|
User.find(id) rescue nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def initialize_desktop
|
||||||
|
self.build_desktop
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<script type="text/javascript" src="/static/jquery.cycle.all.latest.js"></script>
|
||||||
|
<div class="tab-pane <%= "active" if ad_banner_tab==@active %>" id=<%= ad_banner_tab.title %>>
|
||||||
|
<p>尺寸:</p>
|
||||||
|
|
||||||
|
<%= form_for ad_banner_tab,:url=> admin_ad_banner_path(ad_banner_tab),:method => :put,:class=>"input-medium" do |f| -%>
|
||||||
|
<%= f.label :ad_fx, t('admin.ad.ab_fx') %>
|
||||||
|
<%= f.select :ad_fx ,AdBanner::FX_TYPES %>
|
||||||
|
<%= f.label :transition_sec, t('admin.ad.transition_sec') %>
|
||||||
|
<%= f.text_field :transition_sec,:placeholder=>"3秒請輸入3000",:class=> "span3" %> <%= t("admin.ad.trans_unit_sec") %>
|
||||||
|
<%= f.submit %>
|
||||||
|
<%= f.submit 'Cancel',:type=>'reset' %>
|
||||||
|
<div>
|
||||||
|
<%= render :partial => "ad_image_update", :collection => ad_banner_tab.ad_images,:as => :ad_image,:locals=>{:ad_banner => ad_banner_tab} %>
|
||||||
|
<%#= render :partial => 'new_add_banner_file', :object => ad_banner_tab.ad_images.build, :locals => { :field_name => "new_ad_images[]", :f => f, :classes => "r_destroy" } %>
|
||||||
|
<%= link_to 'Add AdImage',new_admin_ad_banner_ad_image_path(ad_banner_tab) %>
|
||||||
|
</div>
|
||||||
|
<% end -%>
|
||||||
|
<%= preview_block ad_banner_tab %>
|
||||||
|
</div>
|
|
@ -1,8 +0,0 @@
|
||||||
<div id="basic_block" class="roles_block">
|
|
||||||
<%= image_tag ad_image.file %>
|
|
||||||
<p>
|
|
||||||
Time to next: <%= ad_image.time_to_next %>
|
|
||||||
Intro: <%= ad_image.picture_intro %>
|
|
||||||
Out Link <%= link_to ad_image.out_link %> by <%= ad_image.link_open %>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
|
@ -1,5 +0,0 @@
|
||||||
Time: <%= f.text_field :time_to_next ,:class=> 'ad_time'%>
|
|
||||||
Link:<%= f.text_field :out_link ,:class=> 'ad_out_link'%>
|
|
||||||
Open Type <%= f.select :link_open ,AdImage::LINK_OPEN_TYPES %>
|
|
||||||
|
|
||||||
<%= f.hidden_field :to_save %>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<div id="basic_block" class="roles_block">
|
|
||||||
<%= image_tag ad_image.file %>
|
|
||||||
<p>
|
|
||||||
Time to next: <%= ad_image.time_to_next %>
|
|
||||||
Intro: <%= ad_image.picture_intro %>
|
|
||||||
Out Link <%= link_to ad_image.out_link %> by <%= ad_image.link_open %>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
|
@ -1,9 +1,12 @@
|
||||||
<%= fields_for "ad_banner[existing_ad_images][#{ad_image.id}]", ad_image do |f| %>
|
<li class="span3" id = 'asd'>
|
||||||
<%= image_tag ad_image.file %>
|
<%= image_tag ad_image.file %>
|
||||||
<div>
|
<p>
|
||||||
Destroy?<%= f.check_box :to_destroy %>
|
<%= ad_image.display? ? '[Showing]' : '[NotShawing]' %>
|
||||||
<%= render :partial => "ad_image_form", :locals => { :f => f } %>
|
<%= "#{ad_image.post_date ||'NeedReset' }~#{ad_image.unpost_date || 'NeedReset'}" %>
|
||||||
</div>
|
</p>
|
||||||
<% end %>
|
<p>
|
||||||
|
<%= link_to 'Edit',edit_admin_ad_banner_ad_image_path(ad_banner,ad_image),:class => 'btn btn-primary' %>
|
||||||
|
<%= link_to 'Del',admin_ad_banner_ad_image_path(ad_banner,ad_image),:class => 'btn',:method => :delete,:confirm => t('sure?') %>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
<% content_for :page_specific_css do %>
|
|
||||||
<%#= javascript_include_tag "ad_banner" #this line wont work %>
|
|
||||||
<script type="text/javascript" src="<%= asset_path 'ad_banner' %>"></script>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= f.label :title, t('admin.title') %>
|
|
||||||
<%= f.text_field :title, :class => 'text' %>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<%= f.label :picture_position, t('admin.picture_position') %>
|
|
||||||
<%= f.text_field :picture_position, :class => 'text' %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= f.label :post_date, t('admin.post_date') %>
|
|
||||||
<%= f.date_select :post_date, :order => [:year, :month, :day], :use_month_numbers => true %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= f.label :unpost_date, t('admin.unpost_date') %>
|
|
||||||
<%= f.date_select :unpost_date, :order => [:year, :month, :day], :use_month_numbers => true,:prompt => { :day => t('form.date_unlimited'), :month => t('form.date_unlimited'), :year => t('form.date_unlimited') } %>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<%= f.label :context, t('admin.context') %>
|
|
||||||
<%= f.text_field :context, :class => 'text' %>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<%= f.label :direct_to_after_click, t('admin.direct_to_after_click') %>
|
|
||||||
<%= f.check_box :direct_to_after_click %>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<%= f.label :ad_fx, t('admin.ad_fx') %>
|
|
||||||
<%= f.select :ad_fx ,AdBanner::FX_TYPES %>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<%#= f.label :ad_images, t('admin.ad_images') %>
|
|
||||||
|
|
||||||
<%# @ad_banner.ad_images.each do |ad_image| %>
|
|
||||||
<%#= render :partial => 'ad_image_update', :object => ad_image, :locals => { :field_name => "ad_images", :f => f, :classes => "r_destroy, r_edit" } %>
|
|
||||||
<%# end %>
|
|
||||||
<%= render :partial => "ad_image_update", :collection => @ad_banner.ad_images,:as => :ad_image, %>
|
|
||||||
<ul id="new_add_banner_file_holder"></ul>
|
|
||||||
<%= render :partial => 'new_add_banner_file', :object => @ad_banner.ad_images.build, :locals => { :field_name => "new_ad_images[]", :f => f, :classes => "r_destroy" } %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
|
|
||||||
|
|
||||||
<%#= render :partial => 'new_design_file', :object => @design.themes.build, :locals => { :field_name => "themes", :f => f, :classes => "r_destroy" } %>
|
|
||||||
</p>
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="new-a-banner" class="modal fade in tab-pane <%= 'active' if @active.nil? %>">
|
||||||
|
<%= form_for(:ad_banner,:remote => true, :url => admin_ad_banners_path) do |f| %>
|
||||||
|
|
||||||
|
<div class="modal-header">
|
||||||
|
<a class="close" data-dismiss="modal">×</a>
|
||||||
|
<h3>Add AdBanner</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-body form-horizontal">
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :title,t('admin.ad.title'),:class => "control-label" %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :title %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :transition_sec, t('admin.ad.transition_sec'),:class => "control-label" %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :transition_sec %> <%= t("admin.ad.trans_unit_sec") %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :ad_fx, t('admin.ad.ab_fx') %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.select :ad_fx ,AdBanner::FX_TYPES %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
|
||||||
|
<a class="btn" data-dismiss="modal"><%= t('cancel')%></a>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<%= f.fields_for field_name, new_add_banner_file do |f| %>
|
<%= f.fields_for field_name, new_add_banner_file do |f| %>
|
||||||
<p class="new_file">
|
<p class="new_file">
|
||||||
<%= f.file_field :file %>
|
<%= f.file_field :file %>
|
||||||
<%= render :partial => "ad_image_form", :locals => { :f => f } %>
|
<%#= render :partial => "ad_image_form", :locals => { :f => f } %>
|
||||||
<%= button_tag '+', :class => "multi_files"%>
|
<%= button_tag '+', :class => "multi_files"%>
|
||||||
</p>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
|
@ -1,11 +0,0 @@
|
||||||
<div id="search">
|
|
||||||
<input id="user_search" name="user[username]" size="30" type="text" />
|
|
||||||
</div>
|
|
||||||
<div class="member_setup <%= @class %>">
|
|
||||||
<h1><%= t('admin.setup_member') %></h1>
|
|
||||||
<ul class="list">
|
|
||||||
<li class="set_1"><%= link_to content_tag(:span, t('admin.list_users')), admin_users_path %></li>
|
|
||||||
<li class="set_2"><%= link_to content_tag(:span, t('admin.list_roles')), admin_roles_path %></li>
|
|
||||||
<li class="set_3"><%= link_to content_tag(:span, t('admin.list_infos')), admin_infos_path %></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
|
@ -1,11 +0,0 @@
|
||||||
<h1><%= t('admin.editing_ad_banner') %></h1>
|
|
||||||
|
|
||||||
<%= form_for @ad_banner, :url => admin_ad_banner_path(@ad_banner),:html => {:multipart => true} do |f| %>
|
|
||||||
<%= f.error_messages %>
|
|
||||||
<%= render :partial => "form", :locals => { :f => f } %>
|
|
||||||
<p>
|
|
||||||
<%= f.submit t('update') %> <%= link_back %>
|
|
||||||
</p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<br /><br/>
|
|
|
@ -1,48 +1,16 @@
|
||||||
<% content_for :secondary do %>
|
<div id="post-body-content" class="clear">
|
||||||
<div class="ad_banners_setup">
|
<ul class="nav nav-tabs">
|
||||||
<h1><%= t('admin.setup_ad_banners') %></h1>
|
<% @ad_banners.each do |ab| %>
|
||||||
<ul class="list">
|
<%= content_tag :li,link_to(ab.title,"##{ab.title}",:data=>{:toggle=>"tab"}),:class => (ab == @active ? 'active' : '' ) %>
|
||||||
<li><%= link_to content_tag(:span, t('admin.new_ad_banner')), new_admin_ad_banner_path, :class => 'seclink1' %></li>
|
<% end -%>
|
||||||
|
<%= content_tag :li,link_to('New',"#new-a-banner",:data=>{:toggle=>"tab"}),:class => (@active.nil? ? 'active' : '' ) %>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
|
||||||
<% end -%>
|
|
||||||
|
|
||||||
<%= flash_messages %>
|
<div class="tab-content">
|
||||||
<div class="main2">
|
<%= render :partial => 'ad_banner_tab',:collection => @ad_banners %>
|
||||||
<h1><%= t('admin.list_ad_banners') %></h1>
|
<%= render :partial => "modal_ad_banner_form"%>
|
||||||
|
</div>
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<td><%= t('admin.title') %></td>
|
|
||||||
<td><%= t('admin.picture_position') %></td>
|
|
||||||
<td><%= t('admin.post_date') %></td>
|
|
||||||
<td><%= t('admin.unpost_date') %></td>
|
|
||||||
<td><%= t('admin.context') %></td>
|
|
||||||
<td><%= t('admin.direct_to_after_click') %></td>
|
|
||||||
<td><%= t('admin.now_display?') %></td>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<% @ad_banners.each do |ad_banner| %>
|
|
||||||
<tr class="have">
|
|
||||||
<td><%= ad_banner.title %></td>
|
|
||||||
<td><%= ad_banner.picture_position %></td>
|
|
||||||
<td><%= ad_banner.post_date %></td>
|
|
||||||
<td><%= ad_banner.unpost_date.nil?? t('form.date_unlimited'): ad_banner.unpost_date %></td>
|
|
||||||
<td><%= ad_banner.context %></td>
|
|
||||||
<td><%= ad_banner.direct_to_after_click %></td>
|
|
||||||
<td><%= ad_banner.display? %></td>
|
|
||||||
<td class="action">
|
|
||||||
<%= link_to t(:show), admin_ad_banner_path(ad_banner), :class => 'show' %>
|
|
||||||
<%= link_to t(:edit), edit_admin_ad_banner_path(ad_banner), :class => 'edit' %>
|
|
||||||
<%= link_to t(:delete), admin_ad_banner_path(ad_banner), :confirm => t('sure?'), :method => :delete, :class => 'delete' %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr></tr>
|
|
||||||
<% end %>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="button_bar">
|
|
||||||
<%= link_to t('admin.new_ad_banner'), new_admin_ad_banner_path, :class => 'new' %>
|
|
||||||
</div>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<div class="main2">
|
|
||||||
<h1><%= t('admin.new_ad_banner') %></h1>
|
|
||||||
|
|
||||||
<%= form_for :ad_banner, :url => admin_ad_banners_path, :html => {:multipart => true} do |f| %>
|
|
||||||
<%= f.error_messages %>
|
|
||||||
<%= render :partial => "form", :locals => { :f => f } %>
|
|
||||||
|
|
||||||
<div class="button_bar">
|
|
||||||
<%= link_back %>
|
|
||||||
<%= f.submit t('create') %>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
|
@ -1,17 +0,0 @@
|
||||||
<% content_for :secondary do %>
|
|
||||||
<%= render 'side_bar' %>
|
|
||||||
<% end %>
|
|
||||||
<br /><br /><br /><br />
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><%=t('admin.ad_banner.title') %> <%= @ad_banner.title %></li>
|
|
||||||
<li><%=t('admin.ad_banner.picture_position') %> <%= @ad_banner.picture_position %></li>
|
|
||||||
<li><%=t('admin.ad_banner.post_date') %> <%= @ad_banner.post_date %></li>
|
|
||||||
<li><%=t('admin.ad_banner.unpost_date') %> <%= @ad_banner.unpost_date %></li>
|
|
||||||
<li><%=t('admin.ad_banner.context') %> <%= @ad_banner.context %></li>
|
|
||||||
<li><%=t('admin.ad_banner.direct_to_after_click') %> <%= @ad_banner.direct_to_after_click %></li>
|
|
||||||
<li><%=t('admin.ad_banner.ad_fx') %> <%= @ad_banner.ad_fx %></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<%= render :partial => "admin/ad_banners/ad_image_show", :collection => @ad_banner.ad_images,:as => :ad_image %>
|
|
||||||
|
|
|
@ -0,0 +1,186 @@
|
||||||
|
<% content_for :page_specific_css do %>
|
||||||
|
<%= stylesheet_link_tag "lib/datepicker" %>
|
||||||
|
<% end %>
|
||||||
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "lib/datepicker" %>
|
||||||
|
<%= javascript_include_tag "lib/date.format" %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="poststuff">
|
||||||
|
<form class="clear">
|
||||||
|
<!--Widget start-->
|
||||||
|
<div id="sub-wiget">
|
||||||
|
<div id="widget-date" class="widget-box">
|
||||||
|
<div class="widget-action clear">
|
||||||
|
<a href="#" class="action"><i title="Set the announcement to start and end dates" class="icon-exclamation-sign icon-white tip"></i></a>
|
||||||
|
</div>
|
||||||
|
<h3 class="widget-title"><i class="icons-calendar icons-white"></i> Date</h3>
|
||||||
|
<div class="widget-content clear">
|
||||||
|
<div id="calendarRange">
|
||||||
|
<div class="input-append">
|
||||||
|
<span class="showDate"></span><span class="add-on btn">▼</span>
|
||||||
|
<%= f.hidden_field :parse_post_date %>
|
||||||
|
<%= f.hidden_field :parse_unpost_date%>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="widgetCalendar">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var today = new Date();
|
||||||
|
today = today.format('isoDate');
|
||||||
|
var state = false;
|
||||||
|
var arr = state ? "▼" : "▲"
|
||||||
|
//calendarRange
|
||||||
|
$('#calendarRange .showDate').html(today+" - "+today)
|
||||||
|
$('#calendarRange .calendarInput').val(today+" - "+today);
|
||||||
|
$('#calendarRange #widgetCalendar').DatePicker({
|
||||||
|
flat: true,
|
||||||
|
format: 'Y / m / d',
|
||||||
|
date: today,
|
||||||
|
calendars: 1,
|
||||||
|
mode: 'range',
|
||||||
|
starts: 1,
|
||||||
|
onChange: function(formated) {
|
||||||
|
$('#calendarRange .showDate').get(0).innerHTML = formated.join(' - ');
|
||||||
|
$('#calendarRange .calendarInput').val(formated.join(' - '));
|
||||||
|
start_date = formated[0].replace(/\s/g, "");
|
||||||
|
end_date = formated[1].replace(/\s/g, "");
|
||||||
|
$('#ad_image_parse_post_date').val(start_date);
|
||||||
|
$('#ad_image_parse_unpost_date').val(end_date);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#calendarRange .input-append').bind('click', function(){
|
||||||
|
var arr = state ? "▼" : "▲"
|
||||||
|
$('#calendarRange .add-on').html(arr);
|
||||||
|
$('#calendarRange #widgetCalendar').stop().animate({height: state ? 0 : $('#calendarRange #widgetCalendar div.datepicker').get(0).offsetHeight}, 500);
|
||||||
|
state = !state;
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#calendarRange #widgetCalendar div.datepicker').css('position', 'absolute');
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="widget-picture" class="widget-box">
|
||||||
|
<div class="widget-action clear">
|
||||||
|
<a class="action"><i title="Upload pictures" class="icon-exclamation-sign icon-white tip"></i></a>
|
||||||
|
</div>
|
||||||
|
<h3 class="widget-title"><i class="icons-picture icons-white"></i>Picture</h3>
|
||||||
|
<div class="widget-content clear">
|
||||||
|
<div class="control-group">
|
||||||
|
<div class="upload-picture">
|
||||||
|
<!--請程式務必將圖片尺寸加入到行內裡-->
|
||||||
|
<%= image_tag @ad_image.file,:width=> "456",:height=>'700' rescue ''%>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var picH = $('.upload-picture').width()/$('.upload-picture').find('img').attr("width")*$('.upload-picture').find('img').attr("height")
|
||||||
|
var imgMarginTop = ($('.upload-picture').height()-picH)/2;
|
||||||
|
var d = $('.upload-picture').height();
|
||||||
|
if(imgMarginTop>0){
|
||||||
|
imgMarginTop = 0;
|
||||||
|
d = picH;
|
||||||
|
$('.upload-picture').css({height:d})
|
||||||
|
}
|
||||||
|
$('.upload-picture').find('img').css({marginTop:imgMarginTop})
|
||||||
|
$('.upload-picture').each(function (i){
|
||||||
|
$(this).mouseenter(function(){
|
||||||
|
var h= picH;
|
||||||
|
$(this).stop().animate({height:h}, 500);
|
||||||
|
$(this).find('img').stop().animate({marginTop:0}, 500);
|
||||||
|
});
|
||||||
|
$(this).mouseleave(function(){
|
||||||
|
$(this).stop().animate({height:d}, 500);
|
||||||
|
$(this).find('img').stop().animate({marginTop:imgMarginTop}, 500);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
<span class="alert widgetInfo">此區塊圖片尺寸請使用580px × 225px</span>
|
||||||
|
<div class="controls file-upload input-prepend">
|
||||||
|
<label class="control-label add-on btn" for="input-upload">
|
||||||
|
Choose file
|
||||||
|
|
||||||
|
<%= f.file_field :file,:id=>"input-upload",:class => "upload", :onchange=> "document.getElementById('fu1').innerHTML = this.form.fu1.value = this.value;" %>
|
||||||
|
</label>
|
||||||
|
<span id="fu1" class="file-name"></span>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
<input name="fu1" class="input-medium" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="widget-type" class="widget-box">
|
||||||
|
<div class="widget-action clear">
|
||||||
|
<a class="action"><i class="icon-exclamation-sign icon-white tip" data-original-title="Upload pictures"></i></a>
|
||||||
|
</div>
|
||||||
|
<h3 class="widget-title"><i class="icons-star-thin icons-white"></i>Type</h3>
|
||||||
|
<div class="widget-content clear">
|
||||||
|
<%= f.select :link_open ,AdImage::LINK_OPEN_TYPES%>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="widget-time" class="widget-box widget-size-300">
|
||||||
|
<div class="widget-action clear">
|
||||||
|
<a class="action"><i class="icon-exclamation-sign icon-white tip" data-original-title="Set the range time"></i></a>
|
||||||
|
</div>
|
||||||
|
<h3 class="widget-title"><i class="icons-time icons-white"></i>FEQ</h3>
|
||||||
|
<div class="widget-content clear">
|
||||||
|
<%= f.text_field :weight ,:class=> 'span3',:placeholder=>"在套圖中出現次數 1次請輸入1" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="widget-link" class="widget-box widget-size-300">
|
||||||
|
<div class="widget-action clear">
|
||||||
|
<a class="action"><i class="icon-exclamation-sign icon-white tip" data-original-title="Add a reference link"></i></a>
|
||||||
|
</div>
|
||||||
|
<h3 class="widget-title"><i class="icons-link icons-white"></i>Link</h3>
|
||||||
|
<div class="widget-content clear">
|
||||||
|
<%= f.text_field :out_link ,:class=> 'span3',:placeholder => "輸入連結"%>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--Wiget End-->
|
||||||
|
<!--Post Start-->
|
||||||
|
<div id="post-body">
|
||||||
|
<div id="post-body-content" class="clear">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<% site_valid_locales_default_head.each do |locale|%>
|
||||||
|
<%= content_tag :li,link_to(I18nVariable.from_locale(locale),"##{locale}",:data=>{:toggle => "tab"}),:class=> (active_when_default_locale_eq locale) %>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
<%= select_tag 'ad_banner[id]',options_from_collection_for_select(AdBanner.all, "id", "title",params[:ad_banner_id]) , :class=>"input-medium", %>
|
||||||
|
<% site_valid_locales_default_head.each do |locale|%>
|
||||||
|
<%= content_tag :div,:class => "tab-pane #{active_when_default_locale_eq locale}",:id=>"#{locale}" do%>
|
||||||
|
<div class="title">
|
||||||
|
<%= f.fields_for :title,@ad_image.title do |f| %>
|
||||||
|
<%= f.text_field locale,:class=>"ad_image-title",:placeholder => "輸入標題"%>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="context editor">
|
||||||
|
<%= f.fields_for :context, @ad_image.context do |f| %>
|
||||||
|
<%= f.text_area locale,:style => "width:100%", :class => "asd_tinymce_textarea" %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--Post End-->
|
||||||
|
<div class="form-actions">
|
||||||
|
<button class="btn btn-success" type="submit">Preview/預覽</button>
|
||||||
|
<button class="btn btn-primary" type="submit">Submit/送出</button>
|
||||||
|
<button class="btn" type="reset">Cancel/取消</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<%= flash_messages %>
|
||||||
|
|
||||||
|
<%= form_for @ad_image, :url => admin_ad_banner_ad_image_path, :html => { :class => 'form' } do |f| %>
|
||||||
|
|
||||||
|
<%= render :partial => "form", :locals => { :f => f } %>
|
||||||
|
|
||||||
|
|
||||||
|
<% end %>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<%= flash_messages %>
|
||||||
|
|
||||||
|
<%= form_for @ad_image, :url => create_ad_image_admin_ad_banners_path, :html => { :class => 'form' ,:multipart => true} do |f| %>
|
||||||
|
|
||||||
|
<%= render :partial => "form", :locals => { :f => f } %>
|
||||||
|
|
||||||
|
|
||||||
|
<% end %>
|
|
@ -25,7 +25,7 @@
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<%= t('admin.module_app') %>
|
<%= t('admin.module_app') %>
|
||||||
<%= render :partial => "admin/module_apps/app_selector", :locals => { :f => f } %>
|
<%= render :partial => "app_selector", :locals => { :f => f } %>
|
||||||
<span id="app_page_url"><%= select('page','app_frontend_url', @app_frontend_urls, :selected => @item.app_frontend_url ) rescue ''%> </span>
|
<span id="app_page_url"><%= select('page','app_frontend_url', @app_frontend_urls, :selected => @item.app_frontend_url ) rescue ''%> </span>
|
||||||
<span id="app_page_category"><%= select('page','category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, :selected => @item[:category] ) rescue ''%> </span>
|
<span id="app_page_category"><%= select('page','category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, :selected => @item[:category] ) rescue ''%> </span>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
<div id="<%= dom_id tag %>" >
|
<div id="<%= dom_id tag %>" class="tag clear">
|
||||||
|
<div class="tagitem">
|
||||||
|
<i class="icons-tag"></i>
|
||||||
<% @site_valid_locales.each do |locale| %>
|
<% @site_valid_locales.each do |locale| %>
|
||||||
<%= I18nVariable.from_locale(locale) %>:
|
<%#= I18nVariable.from_locale(locale) %>
|
||||||
<%= tag[locale] %>
|
<%= tag[locale] %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="action">
|
||||||
<%= link_to t(:edit), edit_admin_tag_path(tag), :remote => true %>
|
<%= link_to t(:edit), edit_admin_tag_path(tag), :remote => true %>
|
||||||
<%= link_to t(:delete), admin_tag_path(tag), :confirm => t('sure?'), :method => :delete, :remote => true %>
|
<%= link_to t(:delete), admin_tag_path(tag), :confirm => t('sure?'), :method => :delete, :remote => true %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,6 +1,16 @@
|
||||||
<div id='tags'>
|
<div class="subnav">
|
||||||
|
<ul class="nav nav-pills filter">
|
||||||
|
<li class="accordion-group">
|
||||||
|
<form class="form-search">
|
||||||
|
<input type="text" class="input-medium search-query">
|
||||||
|
<button type="submit" class="btn">Search</button>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id='tags' class="clear">
|
||||||
<%= render :partial => 'tag', :collection => @tags %>
|
<%= render :partial => 'tag', :collection => @tags %>
|
||||||
</div>
|
</div>
|
||||||
-------------------------
|
<div class="form-actions">
|
||||||
<br/>
|
<%= render 'add' %>
|
||||||
<%= render 'add' %>
|
</div>
|
|
@ -1 +1 @@
|
||||||
$('#<%= dom_id @tag %>').html("<%= j render :partial => 'tag', :object => @tag %>")
|
$('#<%= dom_id @tag %>').replaceWith("<%= j render :partial => 'tag', :object => @tag %>")
|
|
@ -1,4 +1,5 @@
|
||||||
<div id="content">
|
|
||||||
|
<div id="content">
|
||||||
<div id="header" class="hh3">
|
<div id="header" class="hh3">
|
||||||
<div class="dtitle w2 hh3 hp sdm">
|
<div class="dtitle w2 hh3 hp sdm">
|
||||||
<span class="thmtxth">Campus</span>
|
<span class="thmtxth">Campus</span>
|
||||||
|
@ -12,7 +13,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="holder">
|
<div id="holder">
|
||||||
<div class="scrollbar"><div class="track"><div class="thumb thmc2"><div class="end"></div></div></div></div>
|
<div class="scrollbar op01"><div class="track"><div class="thumb thmc2"><div class="end"></div></div></div></div>
|
||||||
<div class="viewport">
|
<div class="viewport">
|
||||||
<div id="group_wrapper" class="overview">
|
<div id="group_wrapper" class="overview">
|
||||||
<div class="group">
|
<div class="group">
|
||||||
|
@ -27,17 +28,18 @@
|
||||||
<a href="" class="appicon"><img src="" alt=""></a>
|
<a href="" class="appicon"><img src="" alt=""></a>
|
||||||
<h1 class="appname thmtxt">名人名言</h1>
|
<h1 class="appname thmtxt">名人名言</h1>
|
||||||
</li>
|
</li>
|
||||||
<li class="element w2 h2 hp vp" data-category="abc">
|
<li class="element w2 h2 hp vp" data-category="widget" data-content='weather'>
|
||||||
<span class="tile thmc2 op09"></span>
|
<span class="tile thmc2 op09"></span>
|
||||||
<h1 class="appname thmtxt">Weather</h1>
|
<h1 class="appname thmtxt">Weather</h1>
|
||||||
<div class="appholder holder_f">test content</div>
|
<div class="appholder holder_f">
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="element w2 h1 hp vp" data-category="abc">
|
<li class="element w2 h1 hp vp" data-category="widget" data-content='clock'>
|
||||||
<span class="tile thmc1 op08"></span>
|
<span class="tile thmc1 op08"></span>
|
||||||
<h1 class="appname thmtxt">Clock</h1>
|
<h1 class="appname thmtxt">Clock</h1>
|
||||||
<div class="appholder holder_f">test content</div>
|
<div class="appholder holder_f">test content</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="element w2 h1 hp vp" data-category="abc">
|
<li class="element w2 h1 hp vp" data-category="widget" data-content="school_events">
|
||||||
<span class="tile thmc1 op08"></span>
|
<span class="tile thmc1 op08"></span>
|
||||||
<h1 class="appname thmtxt">School Events</h1>
|
<h1 class="appname thmtxt">School Events</h1>
|
||||||
<div class="appholder">test content</div>
|
<div class="appholder">test content</div>
|
||||||
|
@ -95,4 +97,3 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
|
|
@ -65,13 +65,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--<div id="orbitbar"></div>-->
|
<!--<div id="orbitbar"></div>-->
|
||||||
Change Theme: <select id="change_theme">
|
|
||||||
<option value='default'>Default Theme</option>
|
|
||||||
<option value='Snake'>Snake Theme</option>
|
|
||||||
<option value='sexy'>Sexy Theme</option>
|
|
||||||
<option value='vintage'>Vintage Theme</option>
|
|
||||||
<option value='chris'>Chris Theme</option>
|
|
||||||
</select>
|
|
||||||
<img src="" id="thmbackground" />
|
<img src="" id="thmbackground" />
|
||||||
<div id="bgover" ></div>
|
<div id="bgover" ></div>
|
||||||
<div id="orbitnote" style="display:none;">
|
<div id="orbitnote" style="display:none;">
|
||||||
|
@ -80,4 +74,12 @@ Change Theme: <select id="change_theme">
|
||||||
<div class="note_message">Check the Notifications section for more information.</div>
|
<div class="note_message">Check the Notifications section for more information.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button onClick="od.tempFunc();">Click</button>
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
orbitDesktop.prototype.themefolder = "desktop_themes";
|
||||||
|
orbitDesktop.prototype.notifyImgPath = "/assets/";
|
||||||
|
orbitDesktop.prototype.desktopId = "<%= @desktop.id %>";
|
||||||
|
var od = new orbitDesktop("#ajax_container");
|
||||||
|
o.notify("Notification Working!!","imp",5)
|
||||||
|
</script>
|
||||||
|
|
|
@ -16,6 +16,18 @@
|
||||||
<li><a href="" class="admtxt">Connection</a></li>
|
<li><a href="" class="admtxt">Connection</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<select id="change_theme">
|
||||||
|
<option value='default'>Default Theme</option>
|
||||||
|
<option value='snake'>Snake Theme</option>
|
||||||
|
<option value='sexy'>Sexy Theme</option>
|
||||||
|
<option value='vintage'>Vintage Theme</option>
|
||||||
|
<option value='chris'>Chris Theme</option>
|
||||||
|
</select>
|
||||||
|
<br />
|
||||||
|
<button onClick="od.tempFunc();">Save</button>
|
||||||
|
>>>>>>> desktop_harry
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li><%= link_to t(:homepage), root_path, :class => 'orbit-bar-home' %></li>
|
<li><%= link_to t(:homepage), root_path, :class => 'orbit-bar-home' %></li>
|
||||||
|
<li><a class="orbit-bar-desktop" href="#">Desktop</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="nav pull-right">
|
<ul class="nav pull-right">
|
||||||
<li class="dropdown language">
|
<li class="dropdown language">
|
||||||
|
@ -25,6 +26,13 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="search clear">
|
||||||
|
<a class="orbit-bar-search" href="#">search</a>
|
||||||
|
<form class="navbar-search" action="">
|
||||||
|
<input class="search-query span3" type="text" placeholder="<%= t(:search_nccu) %>">
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
<% if user_signed_in? %>
|
<% if user_signed_in? %>
|
||||||
<li class="dropdown active">
|
<li class="dropdown active">
|
||||||
<a class="orbit-bar-account" href="#" data-toggle="dropdown">
|
<a class="orbit-bar-account" href="#" data-toggle="dropdown">
|
||||||
|
@ -94,9 +102,6 @@
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="navbar-search span6" action="">
|
|
||||||
<input class="search-query span4" type="text" placeholder="<%= t(:search_nccu) %>">
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
|
@ -9,7 +9,7 @@
|
||||||
<%= content_tag :li, link_to(t('admin.add_new'), new_panel_announcement_back_end_bulletin_path), :class => active_for_action('bulletins', 'new') %>
|
<%= content_tag :li, link_to(t('admin.add_new'), new_panel_announcement_back_end_bulletin_path), :class => active_for_action('bulletins', 'new') %>
|
||||||
<%= content_tag :li, link_to(t('admin.categories'), panel_announcement_back_end_bulletin_categorys_path), :class => active_for_action('bulletin_categorys', 'index') %>
|
<%= content_tag :li, link_to(t('admin.categories'), panel_announcement_back_end_bulletin_categorys_path), :class => active_for_action('bulletin_categorys', 'index') %>
|
||||||
<%= content_tag :li, link_to(t('admin.tags'), panel_announcement_back_end_tags_path), :class => active_for_action('tags', 'index') %>
|
<%= content_tag :li, link_to(t('admin.tags'), panel_announcement_back_end_tags_path), :class => active_for_action('tags', 'index') %>
|
||||||
<%= content_tag :li, link_to(t('announcement.bulletin.fact_check_setting'), panel_announcement_back_end_fact_checks_setting_path), :class => active_for_action('tags', 'index') if is_manager? %>
|
<%= content_tag :li, link_to(t('announcement.bulletin.fact_check_setting'), panel_announcement_back_end_fact_checks_setting_path), :class => active_for_action('bulletins', 'fact_check_setting') if (is_manager? rescue nil) %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
@ -29,6 +29,15 @@
|
||||||
<%= link_to content_tag(:i, nil, :class => 'icons-window-block') + t('admin.design'), admin_designs_path %>
|
<%= link_to content_tag(:i, nil, :class => 'icons-window-block') + t('admin.design'), admin_designs_path %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
|
<%= content_tag :li, :class => active_for_controllers('ad_banners', 'ad_images') do -%>
|
||||||
|
<%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.ad_banner'), admin_ad_banners_path %>
|
||||||
|
<%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('ad_banners', 'ad_images')) do -%>
|
||||||
|
<%= content_tag :li, link_to(t('admin.all_ad_banners'), admin_ad_banners_path), :class => active_for_action('ad_banners', 'index') %>
|
||||||
|
<%= content_tag :li, link_to(t('admin.new_ad_banner'), new_admin_ad_banner_path), :class => active_for_action('ad_banners', 'new') %>
|
||||||
|
<%= content_tag :li, link_to(t('admin.new_ad_image'), new_ad_image_admin_ad_banners_path), :class => active_for_action('ad_images', 'new') %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<%= content_tag :li, :class => active_for_controllers('web_links', 'tags', 'web_link_categorys') do -%>
|
<%= content_tag :li, :class => active_for_controllers('web_links', 'tags', 'web_link_categorys') do -%>
|
||||||
<%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.link'), panel_web_resource_back_end_web_links_path %>
|
<%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.link'), panel_web_resource_back_end_web_links_path %>
|
||||||
<%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('web_links', 'tags', 'web_link_categorys')) do -%>
|
<%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('web_links', 'tags', 'web_link_categorys')) do -%>
|
||||||
|
|
|
@ -31,6 +31,7 @@ module Orbit
|
||||||
config.autoload_paths += %W(#{config.root}/lib)
|
config.autoload_paths += %W(#{config.root}/lib)
|
||||||
config.autoload_paths += %W(#{config.root}/lib/parsers)
|
config.autoload_paths += %W(#{config.root}/lib/parsers)
|
||||||
config.autoload_paths += %W(#{config.root}/app/models/design)
|
config.autoload_paths += %W(#{config.root}/app/models/design)
|
||||||
|
config.autoload_paths += %W(#{config.root}/app/models/meta)
|
||||||
config.autoload_paths += %W(#{config.root}/app/models/purchase)
|
config.autoload_paths += %W(#{config.root}/app/models/purchase)
|
||||||
config.autoload_paths += %W(#{config.root}/app/models/user)
|
config.autoload_paths += %W(#{config.root}/app/models/user)
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,14 @@ zh_tw:
|
||||||
admin:
|
admin:
|
||||||
action: 操作
|
action: 操作
|
||||||
ad_banner: 廣告輪播
|
ad_banner: 廣告輪播
|
||||||
|
ad:
|
||||||
|
ab_fx: 轉場特效
|
||||||
|
all_banners: 輪播清單
|
||||||
|
new_banner: 新增輪播
|
||||||
|
new_image: 新增橫幅
|
||||||
|
title: 標題
|
||||||
|
transition_sec: 轉場單位時間
|
||||||
|
trans_unit_sec: 秒
|
||||||
add: 新增
|
add: 新增
|
||||||
add_item: 新增項目
|
add_item: 新增項目
|
||||||
add_language: 新增語言
|
add_language: 新增語言
|
||||||
|
|
|
@ -24,7 +24,14 @@ Orbit::Application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :ad_banners
|
|
||||||
|
resources :ad_banners do
|
||||||
|
collection do
|
||||||
|
match 'new_ad_image' => 'ad_images#new',:as => :new_ad_image,:via => :get
|
||||||
|
match 'new_ad_image' => 'ad_images#create',:as => :create_ad_image,:via => :post
|
||||||
|
end
|
||||||
|
resources :ad_images ,:except => [:show,:index]
|
||||||
|
end
|
||||||
resources :dashboards
|
resources :dashboards
|
||||||
resources :designs do
|
resources :designs do
|
||||||
collection do
|
collection do
|
||||||
|
@ -99,6 +106,8 @@ Orbit::Application.routes.draw do
|
||||||
match '/desktop/app_manager'=>'desktop#app_manager'
|
match '/desktop/app_manager'=>'desktop#app_manager'
|
||||||
match '/desktop/sections'=>'desktop#sections'
|
match '/desktop/sections'=>'desktop#sections'
|
||||||
match '/desktop/settings'=>'desktop#settings'
|
match '/desktop/settings'=>'desktop#settings'
|
||||||
|
match '/desktop/get_desktop_settings/'=>'desktop#get_desktop_settings'
|
||||||
|
match '/desktop/save_desktop_settings/'=>'desktop#save_desktop_settings'
|
||||||
match '/panel/:app_name/front_end/:app_action/:id' => 'pages#show_from_link', :constraints => lambda { |request|
|
match '/panel/:app_name/front_end/:app_action/:id' => 'pages#show_from_link', :constraints => lambda { |request|
|
||||||
!request.query_string.include?("inner=true")
|
!request.query_string.include?("inner=true")
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ module ParserBackEnd
|
||||||
def parse_page_edit_noko(page, id = nil)
|
def parse_page_edit_noko(page, id = nil)
|
||||||
body = Nokogiri::HTML(page.design.layout.body)
|
body = Nokogiri::HTML(page.design.layout.body)
|
||||||
parse_menu(body, page, true)
|
parse_menu(body, page, true)
|
||||||
public_r_tags = parse_contents(body, page, id)
|
public_r_tags = parse_content_edits(body, page, id)
|
||||||
parse_images(body, page)
|
parse_images(body, page)
|
||||||
|
|
||||||
public_r_tags.each do |tag|
|
public_r_tags.each do |tag|
|
||||||
|
@ -37,7 +37,7 @@ module ParserBackEnd
|
||||||
end
|
end
|
||||||
|
|
||||||
# page_contents
|
# page_contents
|
||||||
def parse_contents(body, page, id)
|
def parse_content_edits(body, page, id)
|
||||||
public_r_tags = []
|
public_r_tags = []
|
||||||
body.css('.page_content').each do |content|
|
body.css('.page_content').each do |content|
|
||||||
ret = ''
|
ret = ''
|
||||||
|
@ -47,9 +47,9 @@ module ParserBackEnd
|
||||||
ret << "'></div>"
|
ret << "'></div>"
|
||||||
else
|
else
|
||||||
part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil
|
part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil
|
||||||
ret << "<div id='#{tag.attr['name']}' part_id='#{part.id}' class='editable' style='border:solid 1px; margin:5px; padding:5px;'>"
|
ret << "<div id='#{content['name']}' part_id='#{part.id}' class='editable' style='border:solid 1px; margin:5px; padding:5px;'>" if part
|
||||||
ret << "<div class='edit_link' style='display:none'>"
|
ret << "<div class='edit_link' style='display:none'>"
|
||||||
ret << " <a href='#{edit_admin_page_part_path(part.id)}' class='nav'>#{t(:edit)}</a>"
|
ret << " <a href='#{edit_admin_page_part_path(part.id)}' class='nav'>#{t(:edit)}</a>" if part
|
||||||
ret << '</div>'
|
ret << '</div>'
|
||||||
case part.kind
|
case part.kind
|
||||||
when 'text'
|
when 'text'
|
||||||
|
@ -65,7 +65,7 @@ module ParserBackEnd
|
||||||
public_r_tags << part.public_r_tag
|
public_r_tags << part.public_r_tag
|
||||||
else
|
else
|
||||||
''
|
''
|
||||||
end
|
end if part
|
||||||
end
|
end
|
||||||
scope = "<#{content.name}"
|
scope = "<#{content.name}"
|
||||||
content.attributes.each_pair do |key, value|
|
content.attributes.each_pair do |key, value|
|
||||||
|
|
|
@ -2,7 +2,7 @@ module ParserCommon
|
||||||
|
|
||||||
def menu_level(page, current, menu, edit = false)
|
def menu_level(page, current, menu, edit = false)
|
||||||
res = ''
|
res = ''
|
||||||
if current <= menu.levels
|
if menu.levels > 0 && current <= menu.levels
|
||||||
if current != 0
|
if current != 0
|
||||||
res << "<div class='rc_dm'>"
|
res << "<div class='rc_dm'>"
|
||||||
item = rand(100000)
|
item = rand(100000)
|
||||||
|
@ -49,17 +49,27 @@ module ParserCommon
|
||||||
body.css('ad_banner').each do |banner|
|
body.css('ad_banner').each do |banner|
|
||||||
res = ''
|
res = ''
|
||||||
ad_banner = AdBanner.find(banner["id"]) rescue nil
|
ad_banner = AdBanner.find(banner["id"]) rescue nil
|
||||||
if ad_banner && ad_banner.display?
|
if ad_banner
|
||||||
res << "<script type='text/javascript'>
|
res << "<script type='text/javascript'>
|
||||||
$(document).ready(function(){ $('#slideshow-#{ad_banner.title.dehumanize}').cycle({delay: -1000, fx: '#{ad_banner.ad_fx.nil?? 'fade': ad_banner.ad_fx}', timeoutFn: getTimeout }); });
|
$(document).ready(function(){ $('#slideshow-#{ad_banner.title.dehumanize}').cycle({delay: -1000, fx: '#{ad_banner.ad_fx.nil?? 'fade': ad_banner.ad_fx}', timeoutFn: getTimeout }); });
|
||||||
</script>"
|
</script>"
|
||||||
res << "<div id='slideshow-#{ad_banner.title.dehumanize}'>"
|
res << "<div id='slideshow-#{ad_banner.title.dehumanize}'>"
|
||||||
|
printable_ad_images = []
|
||||||
ad_banner.ad_images.each do |ad_image|
|
ad_banner.ad_images.each do |ad_image|
|
||||||
|
if ad_image.display?
|
||||||
|
ad_image.weight.times do
|
||||||
|
printable_ad_images << ad_image
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
printable_ad_images.shuffle!
|
||||||
|
printable_ad_images.each do |ad_image| #TODO Need Reflact
|
||||||
res << "<img src='#{ad_image.file}' "
|
res << "<img src='#{ad_image.file}' "
|
||||||
res << "alt='#{ad_image.picture_intro || ' '}' "
|
res << "alt='#{ad_image.title || ' '}' "
|
||||||
res << "time_to_next='#{ad_image.get_delay_time}' "
|
res << "time_to_next='#{ad_banner.transition_sec}' "
|
||||||
res << "link_open='#{ad_image.link_open}' "
|
res << "link_open='#{ad_image.link_open}' "
|
||||||
res << "link_url='#{(ad_banner.direct_to_after_click?? ad_image.out_link : ad_banner.context) || ' '}' "
|
# res << "link_url='#{(ad_image.direct_to_after_click?? ad_image.out_link : ad_banner.context) || ' '}' "
|
||||||
|
res << "link_url='#{(ad_image.out_link || ad_banner.context || ' ')}' "
|
||||||
res << "/>"
|
res << "/>"
|
||||||
end
|
end
|
||||||
res << "</div>"
|
res << "</div>"
|
||||||
|
@ -74,7 +84,7 @@ module ParserCommon
|
||||||
body.css('.page_image').each do |page_image|
|
body.css('.page_image').each do |page_image|
|
||||||
# image = page.custom_images.detect{|image| image.name.eql?(tag.attr['name']) }
|
# image = page.custom_images.detect{|image| image.name.eql?(tag.attr['name']) }
|
||||||
# image = page.design.custom_images.detect{|image| image.name.eql?(tag.attr['name']) } unless image
|
# image = page.design.custom_images.detect{|image| image.name.eql?(tag.attr['name']) } unless image
|
||||||
image = page.design.images.detect{|image| image.name.eql?(page_image['name']) } unless image
|
image = page.design.images.detect{|image| image.name.eql?(File.basename(page_image['src'])) } unless image
|
||||||
if image
|
if image
|
||||||
res = "<img src=#{image.file.url} "
|
res = "<img src=#{image.file.url} "
|
||||||
page_image.attributes.each do |l|
|
page_image.attributes.each do |l|
|
||||||
|
@ -92,7 +102,7 @@ module ParserCommon
|
||||||
page_menu = body.css('.page_menu').first
|
page_menu = body.css('.page_menu').first
|
||||||
home = get_homepage
|
home = get_homepage
|
||||||
menu = page.design.layout.menu
|
menu = page.design.layout.menu
|
||||||
fragment = Nokogiri::HTML::DocumentFragment.new(body, menu_level(home, 0, menu, true))
|
fragment = Nokogiri::HTML::DocumentFragment.new(body, menu_level(home, 0, menu, edit))
|
||||||
page_menu.swap(fragment)
|
page_menu.swap(fragment)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ module ParserFrontEnd
|
||||||
public_r_tags << part.public_r_tag
|
public_r_tags << part.public_r_tag
|
||||||
else
|
else
|
||||||
''
|
''
|
||||||
end
|
end if part
|
||||||
end
|
end
|
||||||
scope = "<#{content.name}"
|
scope = "<#{content.name}"
|
||||||
content.attributes.each_pair do |key, value|
|
content.attributes.each_pair do |key, value|
|
||||||
|
|
|
@ -8,11 +8,6 @@ module ParserLayout
|
||||||
layout.layout_parts.build(:name => content['name'])
|
layout.layout_parts.build(:name => content['name'])
|
||||||
end
|
end
|
||||||
|
|
||||||
body.css('.page_image').each do |image|
|
|
||||||
image = layout.design.images.detect{ |i| i.file_identifier.eql?(parse_html_image(image.to_html)) }
|
|
||||||
image.update_attributes(:name => image['name'], :html_id => image['id'], :html_class => image['class']) if image
|
|
||||||
end
|
|
||||||
|
|
||||||
body.css('.page_menu').each do |menu|
|
body.css('.page_menu').each do |menu|
|
||||||
layout.build_menu(:levels => 0, :values => {}) unless layout.menu
|
layout.build_menu(:levels => 0, :values => {}) unless layout.menu
|
||||||
layout.menu.levels = i = menu['level'].to_i
|
layout.menu.levels = i = menu['level'].to_i
|
||||||
|
@ -22,12 +17,14 @@ module ParserLayout
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def parse_html_image(html)
|
def parse_body_for_images(design)
|
||||||
html.scan(/(?<=\<img)(.*?)(?=\/\>)/){
|
body = Nokogiri::HTML(design.layout.body)
|
||||||
$1.gsub(' ','').scan(/(?<=src=\")(.*?)(?=\")/){
|
|
||||||
return File.basename($1).gsub(/[\\\"]/, '')
|
body.css('.page_image').each do |page_image|
|
||||||
}
|
image = design.images.where( file: File.basename(page_image['src']))[0]
|
||||||
}
|
image.update_attributes(:name => File.basename(page_image['src']), :html_id => page_image['id'], :html_class => page_image['class']) if image
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,121 +0,0 @@
|
||||||
<div id="content">
|
|
||||||
<div id="header" class="hh3">
|
|
||||||
<div class="dtitle thmtxth w2 hh3 hp">Apps Manager</div>
|
|
||||||
<a href="" class="hfn w1 hh2 hp"><span class="tile thmc1 op06"></span><span class="thmtxt">Date</span></a>
|
|
||||||
<a href="ascending" class="hfn w1 hh2 hp" id="alphabet_sort_btn" ><span class="tile thmc2 op03"></span><span class="thmtxt">Alphabet [A-Z]</span></a>
|
|
||||||
<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 class="clear"></div>
|
|
||||||
</div>
|
|
||||||
<div class="search_result">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div id="holder">
|
|
||||||
|
|
||||||
<div id="group_wrapper">
|
|
||||||
|
|
||||||
<div class="group g_sep op03" id='seperator' style="height: 516px;display:none;"></div>
|
|
||||||
<div class="group_search">
|
|
||||||
<div class="element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class="element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class="element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iTunes</h1>
|
|
||||||
</div>
|
|
||||||
<div class=" element w1 h1 hp vp thmc2" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">iWork</h1>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="clear"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,110 +0,0 @@
|
||||||
<div id="content">
|
|
||||||
<div id="header" class="hh3">
|
|
||||||
<div class="dtitle w2 hh3 hp">
|
|
||||||
<span class="thmtxth">Desktop</span>
|
|
||||||
<div class="section_slc admbg">
|
|
||||||
<ul>
|
|
||||||
<li><a class="admtxt" href="">Section 1</a></li>
|
|
||||||
<li><a class="admtxt" href="">Section 2</a></li>
|
|
||||||
<li><a class="admtxt" href="">Section 3</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="holder">
|
|
||||||
<div id="group_wrapper">
|
|
||||||
<div class="group">
|
|
||||||
<ul class="grp ui-sortable">
|
|
||||||
<li class="element w2 h2 hp vp thmc1 op07" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w2 h2 hp vp thmc2 op07" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc1 op07" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w2 h1 hp vp thmc1 op07" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc1 op07" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li><li style="" class="element w2 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="group">
|
|
||||||
<ul class="grp ui-sortable">
|
|
||||||
<li style="" class="element w2 h2 hp vp thmc2 op07" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li><li class="element w2 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w2 h1 hp vp thmc1 op07" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li><li style="" class="element w2 h2 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc2 op07" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc2 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li><li style="" class="element w1 h1 hp vp thmc1 op07" data-category="desktop">
|
|
||||||
<h1 class="appname thmtxt">Aperture</h1>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="clear"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="clear"></div>
|
|
||||||
|
|
|
@ -1,171 +0,0 @@
|
||||||
<div id="content">
|
|
||||||
<div id="header" class="hh3">
|
|
||||||
<div class="dtitle w2 hh3 hp">
|
|
||||||
<span class="thmtxth">All Sections</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="holder">
|
|
||||||
<div id="group_wrapper">
|
|
||||||
<div class="group">
|
|
||||||
<div class="section_label" >
|
|
||||||
<ul>
|
|
||||||
<li class="element w1 h1 hp vp thmtxt"><span class="tile thmc1"></span><span class="thmtxt">section 1</span></li>
|
|
||||||
<li class="element w1 h1 hp vp thmtxt " style="display: none;" data-category="section2"><span class="tile thmc1 op06"></span><span class="thmtxt">section 2</span></li>
|
|
||||||
<li class="element w1 h1 hp vp thmtxt " style="display: none;" data-category="section3"><span class="tile thmc1 op06"></span><span class="thmtxt">section 3</span></li>
|
|
||||||
<li class="element w1 h1 hp vp thmtxt " style="display: none;" data-category="section4"><span class="tile thmc1 op06"></span><span class="thmtxt">section 4</span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<ul class="grp" id="section1">
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="group">
|
|
||||||
<div class="section_label" >
|
|
||||||
<ul>
|
|
||||||
<li class="element w1 h1 hp vp thmtxt"><span class="tile thmc1"></span><span class="thmtxt">section 2</span></li>
|
|
||||||
<li class="element w1 h1 hp vp thmtxt " style="display: none;" data-category="section1"><span class="tile thmc1 op06"></span><span class="thmtxt">section 1</span></li>
|
|
||||||
<li class="element w1 h1 hp vp thmtxt " style="display: none;" data-category="section3"><span class="tile thmc1 op06"></span><span class="thmtxt">section 3</span></li>
|
|
||||||
<li class="element w1 h1 hp vp thmtxt " style="display: none;" data-category="section4"><span class="tile thmc1 op06"></span><span class="thmtxt">section 4</span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<ul class="grp" id="section2">
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
<li class="element w1 hh2 hp vp" data-category="abc">
|
|
||||||
<h1 class="appname thmtxt">Garage Band</h1>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="clear"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
After Width: | Height: | Size: 535 B |
After Width: | Height: | Size: 720 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 553 B |
After Width: | Height: | Size: 436 B |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 598 B |
After Width: | Height: | Size: 714 B |
After Width: | Height: | Size: 524 B |
After Width: | Height: | Size: 454 B |
After Width: | Height: | Size: 500 B |
After Width: | Height: | Size: 513 B |
After Width: | Height: | Size: 533 B |
After Width: | Height: | Size: 379 B |
After Width: | Height: | Size: 488 B |
After Width: | Height: | Size: 506 B |
After Width: | Height: | Size: 670 B |
After Width: | Height: | Size: 517 B |
After Width: | Height: | Size: 805 B |
After Width: | Height: | Size: 481 B |
After Width: | Height: | Size: 464 B |
After Width: | Height: | Size: 628 B |
After Width: | Height: | Size: 495 B |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 524 B |
After Width: | Height: | Size: 575 B |
After Width: | Height: | Size: 533 B |