Compare commits
95 Commits
desktop_de
...
master
| Author | SHA1 | Date |
|---|---|---|
|
|
f8bb0bba56 | |
|
|
47b8b3e277 | |
|
|
ecc3581106 | |
|
|
6d4d3ccfd4 | |
|
|
141b708392 | |
|
|
d5dc3ef793 | |
|
|
b3366b48a1 | |
|
|
36e7e3d3e8 | |
|
|
06c2240d34 | |
|
|
c4e8ed96a9 | |
|
|
8ad015af7f | |
|
|
1857ad428c | |
|
|
134b639465 | |
|
|
45136f915d | |
|
|
2c3924d92c | |
|
|
41b562d3f7 | |
|
|
4074ac677d | |
|
|
e1c57c6843 | |
|
|
915ea066d6 | |
|
|
e7aa7ea1fa | |
|
|
1ccfd6e48c | |
|
|
23516277f3 | |
|
|
87bc2852b3 | |
|
|
27b86b078a | |
|
|
8f393e1079 | |
|
|
353039dcd0 | |
|
|
d8dd68b4df | |
|
|
aa8523c8cf | |
|
|
69ef8fa747 | |
|
|
473baa9b95 | |
|
|
1592aaff89 | |
|
|
030d994180 | |
|
|
a88ad35641 | |
|
|
a63193dc65 | |
|
|
452bddb587 | |
|
|
371485e420 | |
|
|
69b3625861 | |
|
|
72d1427854 | |
|
|
079b9145c3 | |
|
|
3102a46219 | |
|
|
653a098ab6 | |
|
|
426edea485 | |
|
|
2e5b2555c6 | |
|
|
2593707d8c | |
|
|
b20955579e | |
|
|
1ebda22f0e | |
|
|
c511aeb8de | |
|
|
26d3a89d30 | |
|
|
91f80a0952 | |
|
|
f333fe9e21 | |
|
|
33f256bd16 | |
|
|
fde9fd7ffe | |
|
|
d977b83d06 | |
|
|
a1eae7543e | |
|
|
8d9bf62909 | |
|
|
2f480c31bf | |
|
|
19d33f78bd | |
|
|
37c91664d3 | |
|
|
eb853f773d | |
|
|
d701d9d6ad | |
|
|
75eeec737c | |
|
|
36c3635bbb | |
|
|
fa1c731ad3 | |
|
|
2c24e788b0 | |
|
|
26a8be2f0f | |
|
|
fa51d16879 | |
|
|
ceff21fd1f | |
|
|
1357124f6f | |
|
|
8c3fb43bf5 | |
|
|
71e8b3c042 | |
|
|
b37643147f | |
|
|
ec57cbff1c | |
|
|
7d6df11873 | |
|
|
8043573370 | |
|
|
f025c98ffa | |
|
|
3a91c92bf7 | |
|
|
b1d8a87256 | |
|
|
c7ac4e2485 | |
|
|
3467868607 | |
|
|
ceac2b842c | |
|
|
c763817ebf | |
|
|
3c3bba514a | |
|
|
837dc3ea7b | |
|
|
ea5d89e0e1 | |
|
|
aea15fa622 | |
|
|
c1316f72a0 | |
|
|
d996b91b54 | |
|
|
07b3857465 | |
|
|
8751b15385 | |
|
|
6a40a9555a | |
|
|
869f3b6815 | |
|
|
465d417c35 | |
|
|
eaf7577810 | |
|
|
22358bd862 | |
|
|
300de76c3a |
|
|
@ -14,7 +14,9 @@ public/uploads/**/*
|
|||
solr/data
|
||||
tmp/**/*
|
||||
uploads/**/*
|
||||
|
||||
config/*.god
|
||||
log/*.gz
|
||||
tmp/restart.txt
|
||||
*.swp
|
||||
*.pid
|
||||
*.lck
|
||||
|
|
|
|||
12
Gemfile
12
Gemfile
|
|
@ -14,7 +14,11 @@ gem 'execjs'
|
|||
gem 'jquery-rails', '2.1.4'
|
||||
gem 'jquery-ui-rails'
|
||||
gem "select2-rails", '3.3.1'
|
||||
gem 'kaminari', :git => 'git://github.com/amatsuda/kaminari.git'
|
||||
gem 'kaminari'
|
||||
gem "acts_as_unvlogable"
|
||||
gem 'youtube_it'
|
||||
gem 'gotcha'
|
||||
|
||||
|
||||
# gem "memcached", "~> 1.4.3"
|
||||
# gem "memcache-client"
|
||||
|
|
@ -35,7 +39,7 @@ gem 'resque-scheduler' # job scheduling
|
|||
gem 'resque-restriction'
|
||||
#gem 'rb-readline'
|
||||
# gem 'ruby-debug19'
|
||||
gem 'rubyzip'
|
||||
gem 'rubyzip','0.9.9'
|
||||
|
||||
gem 'sunspot_mongo'
|
||||
gem 'sunspot_solr'
|
||||
|
|
@ -46,14 +50,14 @@ gem 'sinatra'
|
|||
gem 'sprockets'
|
||||
gem 'social-share-button'
|
||||
|
||||
gem 'tinymce-rails'
|
||||
gem 'tinymce-rails', '3.5.8.3'
|
||||
gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux")
|
||||
gem 'libv8', '~> 3.11.8' if RUBY_PLATFORM.downcase.include?("linux")
|
||||
gem 'mongoid-encryptor', :require => 'mongoid/encryptor'
|
||||
gem 'rb-readline','~> 0.4.2' if RUBY_PLATFORM.downcase.include?("linux")
|
||||
|
||||
|
||||
gem "impressionist", :git => 'git://github.com/charlotte-ruby/impressionist.git'
|
||||
gem "impressionist",'1.2.0'
|
||||
#gem 'contacts'
|
||||
#gem 'event-calendar', :require => 'event_calendar'#, :git => 'git://github.com/elevation/event_calendar.git'
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
|
|
@ -10,11 +10,10 @@
|
|||
//= require jquery.form
|
||||
//= require jquery.tinyscrollbar
|
||||
//= require jquery.miniColors.min
|
||||
//= require select2
|
||||
//= require bootstrap
|
||||
//= require orbitdesktopAPI
|
||||
//= require orbitTimeline
|
||||
//= require orbitdesktop
|
||||
//= require jquery.gridster
|
||||
//= require jquery.isotope.min
|
||||
//= require desktop/books_pages
|
||||
//= require desktop/books_pages
|
||||
//= require select2
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
|
@ -8,37 +8,32 @@ var orbitDesktopAPI = function(){
|
|||
//msg (string) : message to display
|
||||
//type (string : success, imp, alert
|
||||
//time (int) : duration for notification in seconds
|
||||
var $notify = $('#orbitnote'),
|
||||
ani_method = { direction: 'up',easing: 'easeInOutQuint' },
|
||||
img, n_height;
|
||||
var $notify = $("#orbitnote");
|
||||
var img, n_height;
|
||||
if(!type)type="";
|
||||
switch(type){
|
||||
case "alert":
|
||||
img = "exclamation-sign";
|
||||
img = "note_alert.png";
|
||||
break;
|
||||
case "imp":
|
||||
img = "warning-sign";
|
||||
img = "note_imp.png";
|
||||
break;
|
||||
case "success":
|
||||
img = "ok";
|
||||
img = "note_success.png";
|
||||
break;
|
||||
default:
|
||||
img = "exclamation-sign";
|
||||
img = "note_alert.png";
|
||||
break;
|
||||
}
|
||||
if( !time || time > 20) time = 5000; else time = time*1000;
|
||||
|
||||
var sign = '<div class="note_type"><span class="sign icon-'+ img +'"></span></div>',
|
||||
message = '<div class="note_message">'+ msg +'</div>',
|
||||
item = '<div class="note_holder admbg">'+ sign + message +'</div>';
|
||||
|
||||
$(item)
|
||||
.prependTo($notify)
|
||||
.stop(1,1)
|
||||
.toggle('slide', ani_method, 300)
|
||||
$notify.find("img#note_img").attr("src",o.notifyImgPath+img);
|
||||
$notify.find(".note_message").html(msg);
|
||||
n_height = $notify.outerHeight();
|
||||
if(!time)time=5000; else time=time*1000;
|
||||
$notify
|
||||
.css({'top':-n_height, 'display':'block', 'opacity':0})
|
||||
.animate({top:0,opacity:1},200)
|
||||
.delay(time)
|
||||
.toggle('slide', ani_method, 800);
|
||||
$notify.find('.note_holder:hidden').remove();
|
||||
.animate({top:-n_height,opacity:0},200);
|
||||
};
|
||||
this.executeFunc = function(func,callbackFn){
|
||||
//takes 2 arguments
|
||||
|
|
@ -72,7 +67,7 @@ var orbitDesktopAPI = function(){
|
|||
this.changeWallpaper = function(wallpaper){
|
||||
//takes 1 parameter
|
||||
//wallpaper (string): takes wallpaper and sets the wallpaper
|
||||
$("#thmbackground").attr("src",o.wallpaperPath+wallpaper);
|
||||
$("img#thmbackground").attr("src",o.wallpaperPath+wallpaper);
|
||||
o.saveWallpaper(wallpaper);
|
||||
};
|
||||
this.confirm = function(settings,callbackfn){
|
||||
|
|
@ -116,35 +111,29 @@ var orbitDesktopAPI = function(){
|
|||
})
|
||||
return tempArray;
|
||||
};
|
||||
this.appWindow = function(options,callbackfn){
|
||||
this.appWindow = function(settings,callbackfn){
|
||||
//takes set of arguments as array and gives callback
|
||||
//settings.method (string) : like open and close
|
||||
//settings.title (string) : the window title
|
||||
//settings.extUrl (boolean) : true for opening external url else false
|
||||
//settings.appid (string) : appid.. user can use this appid to open or close or refresh the window
|
||||
//settings.url (string) : it is the url if you want to force external url to open in appwindow... you have to pass extURL in appid if you want to open externalurl
|
||||
var settings = {
|
||||
method : "open",
|
||||
extUrl : true,
|
||||
title : "New Window"
|
||||
}
|
||||
$.extend(settings,options);
|
||||
if(typeof settings == "undefined")settings = {};
|
||||
if(!settings.appid){
|
||||
o.notify("Invalid AppID.","imp",3);
|
||||
return;
|
||||
}
|
||||
var isWindow = ($("div.app_frame[data-app="+settings.appid+"]").length > 0 ? $("div.app_frame[data-app="+settings.appid+"]") : null);
|
||||
if(isWindow){
|
||||
o.minimizeBarManager.maximize(isWindow);
|
||||
return;
|
||||
}
|
||||
if(!settings.method)settings.method = "open";
|
||||
if(!settings.extUrl)settings.extUrl = true;
|
||||
if(settings.method == 'open'){
|
||||
var appurl = "http://www.rulingcom.com";
|
||||
o.windowcounter++;
|
||||
if(!settings.title)settings.title = "New Window "+o.windowcounter;
|
||||
if(settings.extUrl){
|
||||
if(settings.url){
|
||||
|
||||
if(settings.url.substr(0,4)!="http")settings.url = "http://"+settings.url;
|
||||
console.log(settings.url)
|
||||
var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.)");
|
||||
if(urlregex.test(settings.url))
|
||||
appurl = settings.url;
|
||||
|
|
@ -158,64 +147,20 @@ var orbitDesktopAPI = function(){
|
|||
return;
|
||||
}
|
||||
}
|
||||
var whtml = $('<div id="app_frame_'+o.windowcounter+'" class="thmc2 app_frame" data-app="'+settings.appid+'" data-title="'+ settings.title +'"><div class="app_frame_header"><div class="dtitle hh2 hp"><span class="thmtxth">'+settings.title+'</span></div><span class="icon-remove hh2 hp thmtxt"></span><span class="icon-minus hh2 hp thmtxt"></span></div><div id="holder_'+o.windowcounter+'" class="app_holder clear"><iframe src="'+appurl+'" frameborder="0" scrolling="auto"></iframe></div></div>');
|
||||
$("body").append(whtml).css('overflow','hidden');
|
||||
var parentwindow = $("#app_frame_"+o.windowcounter);
|
||||
var app_holder_height = parentwindow.height() - 60;
|
||||
var whtml =$('<div id="app_frame_'+o.windowcounter+'" class="thmc2 app_frame" data-app="'+settings.appid+'"><div id="content"><div id="header" class="hh3"><div class="dtitle hh3 hp" style="text-transform:capitalize;"><span class="thmtxth">'+settings.title+'</span></div><span class="icon-remove hh3 hp thmtxt"></span></div><div id="holder_'+o.windowcounter+'" class="app_holder"><iframe src="'+appurl+'" frameborder="0" scrolling="auto"></iframe><div class="clear"></div></div></div></div>');
|
||||
$(o.contentHolder).append(whtml);
|
||||
var parentwindow = $(o.contentHolder).find("div#app_frame_"+o.windowcounter);
|
||||
var app_holder_height = parentwindow.height() - 72;
|
||||
var app_holder_width = parentwindow.width();
|
||||
parentwindow.find("iframe").attr({"height":app_holder_height});
|
||||
parentwindow.find(".app_holder").height(app_holder_height);
|
||||
parentwindow.find(".icon-remove").click(function(){
|
||||
o.appWindow.close(parentwindow);
|
||||
});
|
||||
parentwindow.find(".icon-minus").click(function(){
|
||||
o.appWindow.minimize(parentwindow);
|
||||
parentwindow.find("iframe").attr({"height":app_holder_height,"width":app_holder_width});
|
||||
parentwindow.find("div.app_holder").height(app_holder_height);
|
||||
parentwindow.find("span.icon-remove").click(function(){
|
||||
parentwindow.remove();
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
this.appWindow.close = function(win){
|
||||
win.remove();
|
||||
$('body').attr('style','');
|
||||
}
|
||||
|
||||
this.appWindow.minimize = function(win){
|
||||
o.minimizeBarManager.minimize(win);
|
||||
var minimizeBar = $('#minimizebar'),
|
||||
minimizeHeight = minimizeBar.height();
|
||||
|
||||
minimizeBar
|
||||
.stop(1,1)
|
||||
.delay(2000)
|
||||
.animate({
|
||||
//'bottom': -minimizeHeight
|
||||
'opacity': 0
|
||||
}, 900, 'easeInOutQuint');
|
||||
|
||||
minimizeBar.on({
|
||||
mouseenter: function(){
|
||||
$(this)
|
||||
.stop(1,1)
|
||||
.animate({
|
||||
'opacity': 1
|
||||
}, 900, 'easeInOutQuint');
|
||||
},
|
||||
mouseleave: function(){
|
||||
$(this)
|
||||
.stop(1,1)
|
||||
.delay(2000)
|
||||
.animate({
|
||||
//'bottom': -minimizeHeight
|
||||
'opacity': 0
|
||||
}, 900, 'easeInOutQuint');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(typeof callbackfn=="function"){
|
||||
callbackfn.call(this,parentwindow);
|
||||
callbackfn.call(this);
|
||||
}
|
||||
return parentwindow;
|
||||
};
|
||||
this.toolPopup = function(settings){
|
||||
if(settings == "destroy"){
|
||||
|
|
|
|||
|
|
@ -15,6 +15,11 @@ function load_tinymce() {
|
|||
theme_advanced_statusbar_location : "bottom",
|
||||
theme_advanced_resizing : true,
|
||||
|
||||
// Domain Absolute URLs
|
||||
relative_urls : false,
|
||||
remove_script_host : false,
|
||||
document_base_url: window.location.protocol + '//' + window.location.host,
|
||||
|
||||
// Skin options
|
||||
skin : "o2k7",
|
||||
skin_variant : "silver",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
$(".attributes").append('<%= escape_javascript(render :partial=>"attribute_field",:locals=>{:attribute_field=>@attribute_field,:attribute_field_counter=>@attribute_field_counter} )%>');
|
||||
$(".dataType").change(function () {
|
||||
$(this).parents("legend").next("div").find("div[class^='type']").addClass("hide");
|
||||
$(this).parents("legend").next("div").find("."+$(this).find("option:selected").attr("ref")).removeClass("hide");
|
||||
|
||||
})
|
||||
|
|
@ -5,3 +5,4 @@
|
|||
*= require_self
|
||||
*= require social-share-button
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,6 @@ $gray: #ddd;
|
|||
font-family: "Source Sans Pro", Arial, sans-serif;
|
||||
font-size: #{$font-size}px;
|
||||
}
|
||||
@mixin font-icon($font-size) {
|
||||
font-family: "FontAwesome";
|
||||
font-size: #{$font-size}px;
|
||||
}
|
||||
@mixin transition-type($property, $sec) {
|
||||
-webkit-transition: #{$property} #{$sec}s ease;
|
||||
-moz-transition: #{$property} #{$sec}s ease;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.noSelect, .noSelect * {
|
||||
.noSelect {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
|
|
@ -50,14 +50,6 @@
|
|||
width: 384px; }
|
||||
.s_grid_row .s_grid_12 {
|
||||
width: 420px; }
|
||||
.s_grid_row .s_grid_13 {
|
||||
width: 456px; }
|
||||
.s_grid_row .s_grid_14 {
|
||||
width: 492px; }
|
||||
.s_grid_row .s_grid_15 {
|
||||
width: 528px; }
|
||||
.s_grid_row .s_grid_16 {
|
||||
width: 564px; }
|
||||
.s_grid_row:last-child {
|
||||
margin-bottom: 0; }
|
||||
.s_grid_row .s_grid_h_1 {
|
||||
|
|
@ -101,7 +93,7 @@
|
|||
left: 0;
|
||||
top: 60px;
|
||||
font-size: 15px;
|
||||
min-width: 120px;
|
||||
width: 120px;
|
||||
border: solid 2px #dddddd;
|
||||
-webkit-box-sizing: border-box;
|
||||
/* webkit */
|
||||
|
|
@ -136,7 +128,7 @@
|
|||
font-size: 15px;
|
||||
line-height: 36px; }
|
||||
.s_menu li {
|
||||
border-top: solid 1px #eaeaea; }
|
||||
border-top: solid 1px #dddddd; }
|
||||
.s_menu li:first-child {
|
||||
border: none; }
|
||||
.s_menu a {
|
||||
|
|
@ -146,23 +138,31 @@
|
|||
.s_tab {
|
||||
font-size: 15px;
|
||||
line-height: 36px; }
|
||||
.s_tab ul {
|
||||
overflow: hidden; }
|
||||
.s_tab li {
|
||||
float: left; }
|
||||
.s_tab a {
|
||||
display: block; }
|
||||
.s_tab .admbg {
|
||||
background-color: #f0f0f0; }
|
||||
|
||||
.s_tab ul {
|
||||
overflow: hidden; }
|
||||
|
||||
.s_tab li {
|
||||
float: left; }
|
||||
|
||||
.s_tab a {
|
||||
display: block; }
|
||||
|
||||
.s_tab .admbg {
|
||||
background-color: #f0f0f0; }
|
||||
|
||||
.st_c {
|
||||
display: none; }
|
||||
|
||||
.st_c:first-child {
|
||||
display: block; }
|
||||
|
||||
/* simple form */
|
||||
.s_form {
|
||||
font-size: 15px; }
|
||||
.s_form label {
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 100px;
|
||||
|
|
@ -172,9 +172,6 @@
|
|||
line-height: 32px; }
|
||||
.s_form input[type=text],
|
||||
.s_form input[type=password],
|
||||
.s_form input[type=submit],
|
||||
.s_form input[type=reset],
|
||||
.s_form input[type=button],
|
||||
.s_form select {
|
||||
height: 32px;
|
||||
margin-top: 0;
|
||||
|
|
@ -205,6 +202,7 @@
|
|||
.s_form input[type=text]:focus,
|
||||
.s_form input[type=password]:focus,
|
||||
.s_form textarea:focus {
|
||||
background-color: #f7f7f7;
|
||||
border-color: #c4c4c4; }
|
||||
.s_form textarea {
|
||||
resize: none; }
|
||||
|
|
@ -220,10 +218,9 @@
|
|||
.s_form .s_table td {
|
||||
vertical-align: middle; }
|
||||
.s_form .s_table thead th {
|
||||
border-bottom: solid 1px #eee; }
|
||||
border-bottom: solid 1px #eeeeee; }
|
||||
|
||||
/* simple select */
|
||||
.s_select_g {
|
||||
.check_box_g {
|
||||
padding: 4px 8px;
|
||||
-webkit-box-sizing: border-box;
|
||||
/* webkit */
|
||||
|
|
@ -235,89 +232,22 @@
|
|||
/* ie */
|
||||
box-sizing: border-box;
|
||||
/* css3 */ }
|
||||
.s_select_g li {
|
||||
.check_box_g li {
|
||||
margin: 0 6px 6px 0;
|
||||
padding: 0; }
|
||||
.s_select_g li,
|
||||
.s_select_g li > * {
|
||||
.check_box_g li,
|
||||
.check_box_g li > * {
|
||||
display: inline-block;
|
||||
vertical-align: middle; }
|
||||
.s_select_g label {
|
||||
.check_box_g label {
|
||||
width: auto;
|
||||
margin: 0; }
|
||||
.s_select_g > label {
|
||||
.check_box_g > label {
|
||||
font-size: 15px;
|
||||
display: block;
|
||||
padding: 4px 0; }
|
||||
.s_select_g li label {
|
||||
padding-left: 4px;
|
||||
cursor: pointer; }
|
||||
.s_select_g li label:before {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
text-align: center;
|
||||
margin-right: 6px;
|
||||
content: '';
|
||||
border: solid 1px #c4c4c4; }
|
||||
.s_select_g input[type=checkbox],
|
||||
.s_select_g input[type=radio] {
|
||||
display: none; }
|
||||
.s_select_g input[type=checkbox]:checked + label:before, .s_select_g input[type=radio]:checked + label:before {
|
||||
background-color: #444444;
|
||||
border-color: #444444;
|
||||
color: #fff;
|
||||
font-family: "FontAwesome";
|
||||
font-size: 12px; }
|
||||
.s_select_g input[type=checkbox]:checked + label:before {
|
||||
content: "\f00c"; }
|
||||
.s_select_g input[type=radio] + label:before {
|
||||
border-radius: 8px; }
|
||||
.s_select_g input[type=radio]:checked + label:before {
|
||||
content: "\f111";
|
||||
font-size: 9px;
|
||||
-webkit-text-size-adjust: none; }
|
||||
|
||||
/* simple switch */
|
||||
.s_switch {
|
||||
overflow: hidden; }
|
||||
.s_switch .s_switch_status {
|
||||
font-size: 1.5em;
|
||||
line-height: 20px;
|
||||
height: 20px;
|
||||
float: left;
|
||||
margin-right: 60px; }
|
||||
.s_switch .s_switch_switcher {
|
||||
display: block;
|
||||
float: right;
|
||||
position: relative;
|
||||
width: 48px;
|
||||
height: 20px;
|
||||
overflow: hidden; }
|
||||
.s_switch .s_switch_switcher input[type=checkbox] {
|
||||
width: 144px;
|
||||
height: 20px;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: -96px; }
|
||||
.s_switch .s_switch_switcher input[type=checkbox] + .s_switch_toggle {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: -2px;
|
||||
top: -2px;
|
||||
width: 16px;
|
||||
height: 20px;
|
||||
background-color: #000;
|
||||
border: solid 2px #fff;
|
||||
cursor: pointer;
|
||||
-webkit-transition: left 0.3s ease;
|
||||
-moz-transition: left 0.3s ease;
|
||||
transition: left 0.3s ease; }
|
||||
.s_switch .s_switch_switcher input[type=checkbox]:checked + .s_switch_toggle {
|
||||
left: 30px; }
|
||||
.check_box_g li label {
|
||||
padding-left: 4px; }
|
||||
|
||||
/* tool bar */
|
||||
.toolbar {
|
||||
|
|
@ -325,7 +255,7 @@
|
|||
font-size: 15px;
|
||||
line-height: 36px;
|
||||
position: relative;
|
||||
z-index: 99; }
|
||||
z-index: 9; }
|
||||
.toolbar .sdm, .toolbar .fn_g {
|
||||
display: inline-block;
|
||||
vertical-align: top; }
|
||||
|
|
@ -352,21 +282,16 @@
|
|||
width: auto;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
z-index: 10; }
|
||||
position: relative; }
|
||||
.tinycanvas .overview {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
min-width: 100%;
|
||||
height: 100%; }
|
||||
.tinycanvas .overview:after {
|
||||
content: "";
|
||||
display: table;
|
||||
width: 100%; }
|
||||
.tinycanvas .overview > .column {
|
||||
float: left;
|
||||
border-right: solid 1px #eee;
|
||||
border-right: solid 1px #eeeeee;
|
||||
padding: 0 12px 0 0;
|
||||
margin: 0 12px 0 0;
|
||||
height: 100%; }
|
||||
|
|
@ -422,7 +347,7 @@
|
|||
width: 6px; }
|
||||
.tinycanvas .scrollbar {
|
||||
position: absolute;
|
||||
z-index: 11;
|
||||
z-index: 9;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.3s ease;
|
||||
|
|
@ -433,7 +358,7 @@
|
|||
visibility: visible; }
|
||||
.tinycanvas .scrollbar.sb_h {
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
bottom: -6px;
|
||||
height: 6px; }
|
||||
.tinycanvas .scrollbar.sb_v {
|
||||
right: 0;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
@import "desktop-helper";
|
||||
|
||||
.noSelect, .noSelect * {
|
||||
.noSelect {
|
||||
@include no-select;
|
||||
}
|
||||
|
||||
|
|
@ -19,11 +19,9 @@
|
|||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
// fixed width column with 12px gutter
|
||||
// 276px width for 8 columns
|
||||
// 420px width for 12 columns
|
||||
// 564px width for 16 columns
|
||||
@for $i from 1 through 16 {
|
||||
// fixed width column
|
||||
// full width 420px
|
||||
@for $i from 1 through 12 {
|
||||
.s_grid_#{$i} {
|
||||
width: 36px * $i - 12px;
|
||||
}
|
||||
|
|
@ -40,7 +38,6 @@
|
|||
height: 44px * $j - 12px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* simple dropdown menu */
|
||||
|
|
@ -61,7 +58,7 @@
|
|||
left: 0;
|
||||
top: 60px;
|
||||
font-size: 15px;
|
||||
min-width: 120px;
|
||||
width: 120px;
|
||||
border: solid 2px $gray;
|
||||
@include box-sizing;
|
||||
|
||||
|
|
@ -95,7 +92,7 @@
|
|||
line-height: 36px;
|
||||
|
||||
li {
|
||||
border-top: solid 1px lighten($gray, 5%);
|
||||
border-top: solid 1px $gray;
|
||||
}
|
||||
li:first-child {
|
||||
border: none;
|
||||
|
|
@ -109,25 +106,27 @@
|
|||
.s_tab {
|
||||
font-size: 15px;
|
||||
line-height: 36px;
|
||||
|
||||
ul {
|
||||
overflow: hidden;
|
||||
}
|
||||
li {
|
||||
float: left;
|
||||
}
|
||||
a {
|
||||
display: block;
|
||||
}
|
||||
.admbg {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
}
|
||||
.stb_h {}
|
||||
.stb_v {}
|
||||
.s_tab ul {
|
||||
overflow: hidden;
|
||||
}
|
||||
.s_tab li {
|
||||
float: left;
|
||||
}
|
||||
.s_tab a {
|
||||
display: block;
|
||||
}
|
||||
.s_tab .admbg {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
.st_c {
|
||||
display: none;
|
||||
}
|
||||
.st_c:first-child {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* simple form */
|
||||
.s_form {
|
||||
|
|
@ -136,6 +135,7 @@
|
|||
// basic style
|
||||
label {
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 100px;
|
||||
|
|
@ -148,9 +148,6 @@
|
|||
}
|
||||
input[type=text],
|
||||
input[type=password],
|
||||
input[type=submit],
|
||||
input[type=reset],
|
||||
input[type=button],
|
||||
select {
|
||||
height: 32px;
|
||||
margin-top: 0;
|
||||
|
|
@ -172,7 +169,7 @@
|
|||
@include box-sizing;
|
||||
|
||||
&:focus {
|
||||
// background-color: lighten($gray, 10%);
|
||||
background-color: lighten($gray, 10%);
|
||||
border-color: darken($gray, 10%);
|
||||
}
|
||||
}
|
||||
|
|
@ -201,8 +198,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
/* simple select */
|
||||
.s_select_g {
|
||||
|
||||
.check_box_g {
|
||||
padding: 4px 8px;
|
||||
// border: solid 1px $gray;
|
||||
@include box-sizing;
|
||||
|
|
@ -227,87 +224,6 @@
|
|||
}
|
||||
li label {
|
||||
padding-left: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
&:before {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
text-align: center;
|
||||
margin-right: 6px;
|
||||
content: '';
|
||||
border: solid 1px darken($gray, 10%);
|
||||
}
|
||||
}
|
||||
input[type=checkbox],
|
||||
input[type=radio]
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
input[type=checkbox]:checked + label:before, input[type=radio]:checked + label:before {
|
||||
background-color: darken($gray, 60%);
|
||||
border-color: darken($gray, 60%);
|
||||
color: #fff;
|
||||
@include font-icon(12);
|
||||
}
|
||||
input[type=checkbox]:checked + label:before {
|
||||
content: "\f00c";
|
||||
}
|
||||
input[type=radio] + label:before {
|
||||
border-radius: 8px;
|
||||
}
|
||||
input[type=radio]:checked + label:before {
|
||||
content: "\f111";
|
||||
font-size: 9px;
|
||||
-webkit-text-size-adjust: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* simple switch */
|
||||
.s_switch {
|
||||
overflow: hidden;
|
||||
|
||||
.s_switch_status {
|
||||
font-size: 1.5em;
|
||||
line-height: 20px;
|
||||
height: 20px;
|
||||
float: left;
|
||||
margin-right: 60px;
|
||||
}
|
||||
.s_switch_switcher {
|
||||
display: block;
|
||||
float: right;
|
||||
position: relative;
|
||||
width: 48px;
|
||||
height: 20px;
|
||||
overflow: hidden;
|
||||
|
||||
input[type=checkbox] {
|
||||
width: 144px;
|
||||
height: 20px;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: -96px;
|
||||
|
||||
+ .s_switch_toggle {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: -2px;
|
||||
top: -2px;
|
||||
width: 16px;
|
||||
height: 20px;
|
||||
background-color: #000;
|
||||
border: solid 2px #fff;
|
||||
cursor: pointer;
|
||||
@include transition-type(left,0.3);
|
||||
}
|
||||
&:checked + .s_switch_toggle {
|
||||
left: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -317,7 +233,7 @@
|
|||
font-size: 15px;
|
||||
line-height: 36px;
|
||||
position: relative;
|
||||
z-index: 99;
|
||||
z-index: 9;
|
||||
|
||||
.sdm, .fn_g {
|
||||
display: inline-block;
|
||||
|
|
@ -352,21 +268,14 @@
|
|||
height: 100%;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
}
|
||||
.overview {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
min-width: 100%;
|
||||
height: 100%;
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
display: table;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
> .column {
|
||||
float: left;
|
||||
border-right: solid 1px #eee;
|
||||
|
|
@ -420,7 +329,7 @@
|
|||
}
|
||||
.scrollbar {
|
||||
position: absolute;
|
||||
z-index: 11;
|
||||
z-index: 9;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
@include transition-type(opacity, 0.3);
|
||||
|
|
@ -431,7 +340,7 @@
|
|||
}
|
||||
&.sb_h {
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
bottom: -6px;
|
||||
height: 6px;
|
||||
}
|
||||
&.sb_v {
|
||||
|
|
|
|||
|
|
@ -72,12 +72,6 @@ a:focus {
|
|||
content: '';
|
||||
clear: both; }
|
||||
|
||||
.valign:before {
|
||||
content: '';
|
||||
height: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: middle; }
|
||||
|
||||
.o-loading {
|
||||
font-size: 13px; }
|
||||
.fullsize .o-loading {
|
||||
|
|
@ -86,17 +80,14 @@ a:focus {
|
|||
font-size: 20px; }
|
||||
|
||||
#thmbackground {
|
||||
min-height: 100%;
|
||||
min-width: 980px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
height: auto;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: -1;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
background-size: cover; }
|
||||
z-index: -1; }
|
||||
|
||||
#bgover {
|
||||
position: fixed;
|
||||
|
|
@ -130,14 +121,13 @@ a:focus {
|
|||
background-color: #fff; }
|
||||
|
||||
.admbg2 {
|
||||
background-color: #dddddd; }
|
||||
background-color: #ddd; }
|
||||
|
||||
.admtxt {
|
||||
color: #666; }
|
||||
|
||||
a.admtxt.admbg2:hover {
|
||||
color: #fff;
|
||||
background-color: #aaaaaa; }
|
||||
.admtxt:hover {
|
||||
color: #666; }
|
||||
|
||||
.hfn {
|
||||
font-size: 15px;
|
||||
|
|
@ -157,15 +147,6 @@ a.admtxt.admbg2:hover {
|
|||
.ini_input:focus {
|
||||
outline: none; }
|
||||
|
||||
.text_ofl {
|
||||
overflow: hidden; }
|
||||
.text_ofl span {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-o-text-overflow: ellipsis; }
|
||||
|
||||
/* - Opacity */
|
||||
.op00 {
|
||||
opacity: 0; }
|
||||
|
|
@ -257,15 +238,7 @@ a.admtxt.admbg2:hover {
|
|||
.element {
|
||||
margin: 0 12px 12px 0;
|
||||
float: left;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
-webkit-transition: all 0.2s ease;
|
||||
-moz-transition: all 0.2s ease;
|
||||
transition: all 0.2s ease; }
|
||||
.element:active {
|
||||
-webkit-transform: scale(0.92);
|
||||
-moz-transform: scale(0.92);
|
||||
transform: scale(0.92); }
|
||||
position: relative; }
|
||||
|
||||
.group {
|
||||
float: left;
|
||||
|
|
@ -273,14 +246,12 @@ a.admtxt.admbg2:hover {
|
|||
|
||||
/* desktop layout */
|
||||
#container {
|
||||
padding: 48px 0 0 156px;
|
||||
min-width: 800px; }
|
||||
padding: 48px 0 0 156px; }
|
||||
|
||||
#header {
|
||||
padding: 0 0 12px 0;
|
||||
height: 72px;
|
||||
position: relative;
|
||||
z-index: 2; }
|
||||
min-width: 800px;
|
||||
height: 72px; }
|
||||
|
||||
#side {
|
||||
width: 60px;
|
||||
|
|
@ -289,13 +260,12 @@ a.admtxt.admbg2:hover {
|
|||
margin-right: 96px;
|
||||
top: 120px;
|
||||
left: 0;
|
||||
z-index: 13; }
|
||||
z-index: 11; }
|
||||
|
||||
#holder {
|
||||
height: 516px;
|
||||
width: auto;
|
||||
position: relative;
|
||||
z-index: 1; }
|
||||
position: relative; }
|
||||
|
||||
#rwidget {
|
||||
height: 516px; }
|
||||
|
|
@ -368,59 +338,37 @@ a.admtxt.admbg2:hover {
|
|||
|
||||
/* panel */
|
||||
#panel_l {
|
||||
background-color: #f7f7f7;
|
||||
background-color: #f0f0f0;
|
||||
float: left; }
|
||||
|
||||
#panel_r {
|
||||
background-color: #fff;
|
||||
margin-left: 252px;
|
||||
position: relative;
|
||||
width: auto; }
|
||||
position: relative; }
|
||||
|
||||
/* Desktop Notification */
|
||||
#orbitnote {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -200px;
|
||||
margin-left: -206px;
|
||||
z-index: 99999;
|
||||
width: 400px;
|
||||
-webkit-transition: height 2s ease;
|
||||
-moz-transition: height 2s ease;
|
||||
transition: height 2s ease; }
|
||||
padding: 0 6px 6px 6px;
|
||||
background-color: #000;
|
||||
background-color: rgba(0, 0, 0, 0.6); }
|
||||
#orbitnote .note_holder {
|
||||
background-color: #f3f3f3;
|
||||
border: solid 1px white;
|
||||
border-top: none;
|
||||
overflow: hidden;
|
||||
padding: 36px;
|
||||
border: solid 2px #dddddd;
|
||||
border-top: 0;
|
||||
display: none; }
|
||||
padding: 24px 24px; }
|
||||
#orbitnote .note_holder .note_type {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
color: #fff; }
|
||||
#orbitnote .note_holder .note_type .sign {
|
||||
display: block;
|
||||
font-size: 40px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
padding: 10px;
|
||||
border-radius: 30px;
|
||||
text-align: center; }
|
||||
#orbitnote .note_holder .note_type .sign.icon-ok {
|
||||
background-color: #5BB75B; }
|
||||
#orbitnote .note_holder .note_type .sign.icon-exclamation-sign {
|
||||
background-color: #DA4F49; }
|
||||
#orbitnote .note_holder .note_type .sign.icon-warning-sign {
|
||||
background-color: #FAA732; }
|
||||
float: left; }
|
||||
#orbitnote .note_holder .note_type img {
|
||||
display: block; }
|
||||
#orbitnote .note_holder .note_message {
|
||||
color: #333;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
word-wrap: break-word;
|
||||
width: 240px;
|
||||
margin: 0 0 0 20px;
|
||||
margin: 10px 0 0 48px;
|
||||
font-size: 15px; }
|
||||
|
||||
/* Desktop Dialogue */
|
||||
|
|
@ -430,8 +378,7 @@ a.admtxt.admbg2:hover {
|
|||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 12;
|
||||
display: none; }
|
||||
z-index: 12; }
|
||||
#orbitdiag .tile {
|
||||
background-color: #000; }
|
||||
#orbitdiag .diag_holder {
|
||||
|
|
@ -455,7 +402,7 @@ a.admtxt.admbg2:hover {
|
|||
font-size: 15px;
|
||||
line-height: 36px; }
|
||||
#orbitdiag .diag_holder .diag_holder_inner .diag_btn:hover {
|
||||
outline: solid 2px #fff; }
|
||||
outline: solid 2px white; }
|
||||
|
||||
/* Tile */
|
||||
.appname {
|
||||
|
|
@ -488,7 +435,7 @@ a.admtxt.admbg2:hover {
|
|||
height: 60px;
|
||||
margin: 0 auto;
|
||||
position: relative; }
|
||||
[data-sizex="1"] .appicon, .w1.h1 .appicon {
|
||||
[data-sizex="1"] .appicon {
|
||||
margin-top: 24px; }
|
||||
#sections .appicon {
|
||||
width: 30px;
|
||||
|
|
@ -533,11 +480,6 @@ a.admtxt.admbg2:hover {
|
|||
cursor: move;
|
||||
overflow: hidden; }
|
||||
|
||||
.gs_w.dragging {
|
||||
-webkit-transform: scale(0.92);
|
||||
-moz-transform: scale(0.92);
|
||||
transform: scale(0.92); }
|
||||
|
||||
/* header drop menu */
|
||||
.sdm_mdr .sdm_o {
|
||||
top: 36px; }
|
||||
|
|
@ -553,7 +495,7 @@ a.admtxt.admbg2:hover {
|
|||
cursor: pointer; }
|
||||
|
||||
.theme_thumb, .stock_wallpaper img {
|
||||
border: solid 1px #fff;
|
||||
border: solid 1px white;
|
||||
width: 120px;
|
||||
margin: 0 auto; }
|
||||
|
||||
|
|
@ -606,9 +548,8 @@ a.admtxt.admbg2:hover {
|
|||
padding: 24px 0;
|
||||
margin-top: 12px;
|
||||
overflow: hidden;
|
||||
border-top: solid 1px #eee; }
|
||||
.s_action .setting_btn {
|
||||
margin-left: 12px; }
|
||||
border-top: solid 1px #eeeeee;
|
||||
background-color: #fff; }
|
||||
|
||||
.setting_btn {
|
||||
display: block;
|
||||
|
|
@ -618,76 +559,28 @@ a.admtxt.admbg2:hover {
|
|||
text-align: center;
|
||||
border: 0; }
|
||||
|
||||
/* Apps Manager */
|
||||
#app_info {
|
||||
.group_search {
|
||||
float: left;
|
||||
width: 420px;
|
||||
height: 516px;
|
||||
margin-right: 36px;
|
||||
display: none; }
|
||||
#app_info .app_info_header {
|
||||
height: 120px;
|
||||
margin: -12px -12px 12px -12px;
|
||||
position: relative;
|
||||
background-color: #f7f7f7;
|
||||
-webkit-box-sizing: border-box;
|
||||
/* webkit */
|
||||
-khtml-box-sizing: border-box;
|
||||
/* konqueror */
|
||||
-moz-box-sizing: border-box;
|
||||
/* firefox */
|
||||
-ms-box-sizing: border-box;
|
||||
/* ie */
|
||||
box-sizing: border-box;
|
||||
/* css3 */ }
|
||||
#app_info .app_info_header > * {
|
||||
height: 100%; }
|
||||
#app_info .app_info_header .app_info_icon {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
margin-top: 30px;
|
||||
-webkit-box-sizing: border-box;
|
||||
/* webkit */
|
||||
-khtml-box-sizing: border-box;
|
||||
/* konqueror */
|
||||
-moz-box-sizing: border-box;
|
||||
/* firefox */
|
||||
-ms-box-sizing: border-box;
|
||||
/* ie */
|
||||
box-sizing: border-box;
|
||||
/* css3 */ }
|
||||
#app_info .app_info_header .app_info_name {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
font-size: 2em;
|
||||
width: 300px;
|
||||
word-wrap: break-word; }
|
||||
#app_info .app_info_header .panel_close {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 12px;
|
||||
font-size: 20px; }
|
||||
#app_info .app_info_list {
|
||||
line-height: 1.5em;
|
||||
overflow: hidden; }
|
||||
#app_info .app_info_list label {
|
||||
color: #aaaaaa; }
|
||||
|
||||
#app_list {
|
||||
float: left; }
|
||||
#app_list .element > * {
|
||||
cursor: pointer; }
|
||||
margin-right: 36px; }
|
||||
|
||||
.search_result {
|
||||
float: left;
|
||||
overflow: hidden; }
|
||||
.search_result .message {
|
||||
font-size: 15px;
|
||||
word-wrap: break-word; }
|
||||
.search_result .message b {
|
||||
font-size: 20px;
|
||||
display: block;
|
||||
margin-top: 12px; }
|
||||
margin-right: 24px;
|
||||
max-width: 340px; }
|
||||
|
||||
.g_sep {
|
||||
width: 12px;
|
||||
border-left: solid 1px white;
|
||||
-webkit-box-sizing: border-box;
|
||||
/* webkit */
|
||||
-khtml-box-sizing: border-box;
|
||||
/* konqueror */
|
||||
-moz-box-sizing: border-box;
|
||||
/* firefox */
|
||||
-ms-box-sizing: border-box;
|
||||
/* ie */
|
||||
box-sizing: border-box;
|
||||
/* css3 */ }
|
||||
|
||||
.grp {
|
||||
height: 528px;
|
||||
|
|
@ -715,10 +608,9 @@ a.admtxt.admbg2:hover {
|
|||
overflow: hidden; }
|
||||
|
||||
.list_t_title {
|
||||
padding-bottom: 6px;
|
||||
color: #000;
|
||||
font-size: 15px;
|
||||
line-height: 1.3em; }
|
||||
margin-bottom: 6px;
|
||||
color: #333;
|
||||
font-size: 15px; }
|
||||
|
||||
.list_t_des {
|
||||
line-height: 1.5em;
|
||||
|
|
@ -726,34 +618,153 @@ a.admtxt.admbg2:hover {
|
|||
margin-bottom: 4px;
|
||||
font-size: 13px; }
|
||||
|
||||
.list_item_function {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: -30px;
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: right;
|
||||
-webkit-transition: all 0.3s ease;
|
||||
-moz-transition: all 0.3s ease;
|
||||
transition: all 0.3s ease; }
|
||||
.list_item_function a {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
margin-left: 4px;
|
||||
padding: 0 6px;
|
||||
font-size: 11px;
|
||||
-webkit-text-size-adjust: none; }
|
||||
.list_item_function a :first-child {
|
||||
margin-left: 0; }
|
||||
.datalist_item:hover .list_item_function {
|
||||
bottom: 0; }
|
||||
.list_item_function a {
|
||||
display: inline-block;
|
||||
padding: 4px;
|
||||
font-size: 11px;
|
||||
-webkit-text-size-adjust: none; }
|
||||
|
||||
/* Journal Papers */
|
||||
[page-name="journal_p_list"] .list_t_item .inner {
|
||||
padding-left: 30px; }
|
||||
[page-name="journal_p_list"] .list_item_action {
|
||||
font-size: 12px;
|
||||
float: left;
|
||||
margin-left: -30px; }
|
||||
[page-name="journal_p_list"] .list_item_action a {
|
||||
display: block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
margin: 1px 1px 6px 1px; }
|
||||
[page-name="journal_p_list"] .list_item_action .icon-star-empty {
|
||||
color: #999;
|
||||
font-size: 20px; }
|
||||
[page-name="journal_p_list"] .list_item_action .icon-star {
|
||||
color: #faa732;
|
||||
font-size: 20px; }
|
||||
[page-name="journal_p_list"] .list_item_action .icon-check-empty {
|
||||
color: #999;
|
||||
font-size: 20px; }
|
||||
[page-name="journal_p_list"] .list_item_action .icon-check {
|
||||
color: #333;
|
||||
font-size: 20px; }
|
||||
[page-name="journal_p_list"] .file_view .list_t_des {
|
||||
overflow: hidden; }
|
||||
[page-name="journal_p_list"] .file_view .file {
|
||||
float: left;
|
||||
width: 120px;
|
||||
height: 50px;
|
||||
padding: 6px;
|
||||
margin: 1px;
|
||||
position: relative;
|
||||
-webkit-box-sizing: border-box;
|
||||
/* webkit */
|
||||
-khtml-box-sizing: border-box;
|
||||
/* konqueror */
|
||||
-moz-box-sizing: border-box;
|
||||
/* firefox */
|
||||
-ms-box-sizing: border-box;
|
||||
/* ie */
|
||||
box-sizing: border-box;
|
||||
/* css3 */ }
|
||||
[page-name="journal_p_list"] .file_view .file:hover {
|
||||
background-color: #f7f7f7; }
|
||||
[page-name="journal_p_list"] .file_view .file img {
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
position: absolute;
|
||||
left: 6px;
|
||||
top: 6px; }
|
||||
[page-name="journal_p_list"] .file_view .file .filetitle {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 38px;
|
||||
padding-left: 40px;
|
||||
overflow: hidden;
|
||||
-webkit-box-sizing: border-box;
|
||||
/* webkit */
|
||||
-khtml-box-sizing: border-box;
|
||||
/* konqueror */
|
||||
-moz-box-sizing: border-box;
|
||||
/* firefox */
|
||||
-ms-box-sizing: border-box;
|
||||
/* ie */
|
||||
box-sizing: border-box;
|
||||
/* css3 */ }
|
||||
|
||||
/* Journal Paper Add */
|
||||
#paper_add .s_grid_con {
|
||||
float: left;
|
||||
height: 456px;
|
||||
margin-left: 12px;
|
||||
padding-left: 12px;
|
||||
border-left: solid 1px #eeeeee; }
|
||||
#paper_add .s_grid_con:first-child {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
border: none; }
|
||||
#paper_add .f_w {
|
||||
width: 336px; }
|
||||
#paper_add label {
|
||||
margin-right: 0; }
|
||||
|
||||
/* Journal Journal list */
|
||||
[page-name="journal_p_journal"] .datalist_item .inner {
|
||||
padding-left: 30px; }
|
||||
[page-name="journal_p_journal"] .list_item_action {
|
||||
font-size: 12px;
|
||||
float: left;
|
||||
margin-left: -30px; }
|
||||
[page-name="journal_p_journal"] .list_item_action i {
|
||||
color: #999;
|
||||
font-size: 20px;
|
||||
display: block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
margin: 1px 1px 6px 1px; }
|
||||
[page-name="journal_p_journal"] .list_t_desc {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #999; }
|
||||
|
||||
/* Journal Co-Author */
|
||||
[page-name="journal_p_coauthor"] .list_t_item {
|
||||
height: 110px; }
|
||||
[page-name="journal_p_coauthor"] .list_item_function a {
|
||||
display: inline-block;
|
||||
padding: 4px;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
-webkit-text-size-adjust: none; }
|
||||
[page-name="journal_p_coauthor"] .info {
|
||||
font-family: Arial, sans-serif; }
|
||||
[page-name="journal_p_coauthor"] .info li {
|
||||
margin-bottom: 8px;
|
||||
color: #999; }
|
||||
[page-name="journal_p_coauthor"] .info .name {
|
||||
font-size: 18px;
|
||||
line-height: 24px;
|
||||
color: #333; }
|
||||
|
||||
/* Journal Co-Author Relationship*/
|
||||
[page-name="journal_p_coauthor_relation"] .edit_co_author_relation {
|
||||
/*margin-left: -10px;*/ }
|
||||
[page-name="journal_p_coauthor_relation"] .form_space {
|
||||
margin-bottom: 10px;
|
||||
font-size: 18px;
|
||||
font-family: Arial, sans-serif; }
|
||||
|
||||
/* Journal New Co-Author */
|
||||
#new_co_author label {
|
||||
margin-right: 0; }
|
||||
|
||||
/* App */
|
||||
.app_frame {
|
||||
margin: 60px 0 48px 156px;
|
||||
margin: 48px 96px 48px 156px;
|
||||
min-width: 800px;
|
||||
min-height: 576px;
|
||||
min-height: 588px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
|
@ -764,40 +775,17 @@ a.admtxt.admbg2:hover {
|
|||
background-color: #fff;
|
||||
position: absolute;
|
||||
width: 100%; }
|
||||
.app_frame .app_holder iframe {
|
||||
width: 100%; }
|
||||
.app_frame .app_frame_header {
|
||||
height: 60px; }
|
||||
.app_frame .app_frame_header .icon-remove, .app_frame .app_frame_header .icon-minus {
|
||||
display: block;
|
||||
float: right;
|
||||
line-height: 60px;
|
||||
font-size: 20px;
|
||||
cursor: pointer; }
|
||||
|
||||
/* Minimize Section */
|
||||
#minimizebar {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
z-index: 14; }
|
||||
#minimizebar .minimize {
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
line-height: 36px;
|
||||
font-size: 15px;
|
||||
float: left; }
|
||||
#minimizebar .minimize .icon-remove {
|
||||
float: right;
|
||||
line-height: 36px; }
|
||||
.app_frame #header .icon-remove {
|
||||
display: block;
|
||||
float: right;
|
||||
line-height: 60px;
|
||||
font-size: 20px;
|
||||
cursor: pointer; }
|
||||
|
||||
/*Tooltip popup */
|
||||
.desktop_toolpopup {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
z-index: 10px;
|
||||
display: none;
|
||||
padding: 12px;
|
||||
cursor: default;
|
||||
|
|
|
|||
|
|
@ -68,12 +68,6 @@ a:focus { outline: none; }
|
|||
content: '';
|
||||
clear: both;
|
||||
}
|
||||
.valign:before {
|
||||
content: '';
|
||||
height: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.o-loading {
|
||||
font-size: 13px;
|
||||
// font-weight: normal;
|
||||
|
|
@ -86,17 +80,14 @@ a:focus { outline: none; }
|
|||
}
|
||||
}
|
||||
#thmbackground {
|
||||
min-height: 100%;
|
||||
min-width: 980px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
height: auto;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: -1;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
background-size: cover;
|
||||
}
|
||||
#bgover {
|
||||
position: fixed;
|
||||
|
|
@ -122,12 +113,9 @@ a:focus { outline: none; }
|
|||
|
||||
/* Desktop Global Style */
|
||||
.admbg { background-color: #fff; }
|
||||
.admbg2 { background-color: $gray; }
|
||||
.admbg2 { background-color: #ddd; }
|
||||
.admtxt { color: #666; }
|
||||
a.admtxt.admbg2:hover {
|
||||
color: #fff;
|
||||
background-color: darken($gray, 20%);
|
||||
}
|
||||
.admtxt:hover { color: #666; }
|
||||
.hfn {
|
||||
font-size: 15px;
|
||||
line-height: 36px;
|
||||
|
|
@ -142,17 +130,6 @@ a.admtxt.admbg2:hover {
|
|||
border: 0;
|
||||
}
|
||||
.ini_input:focus { outline: none; }
|
||||
.text_ofl {
|
||||
overflow: hidden;
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-o-text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
/* - Opacity */
|
||||
@for $i from 0 through 10 {
|
||||
|
|
@ -189,15 +166,7 @@ a.admtxt.admbg2:hover {
|
|||
margin: 0 12px 12px 0;
|
||||
float: left;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
@include transition-type(all,0.2);
|
||||
|
||||
&:active {
|
||||
-webkit-transform: scale(0.92);
|
||||
-moz-transform: scale(0.92);
|
||||
transform: scale(0.92);
|
||||
}
|
||||
}
|
||||
.group{
|
||||
float: left;
|
||||
margin-right: 24px;
|
||||
|
|
@ -206,13 +175,11 @@ a.admtxt.admbg2:hover {
|
|||
/* desktop layout */
|
||||
#container {
|
||||
padding: 48px 0 0 156px;
|
||||
min-width: 800px;
|
||||
}
|
||||
#header {
|
||||
padding: 0 0 12px 0;
|
||||
min-width: 800px;
|
||||
height: 72px;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
#side {
|
||||
width: 60px;
|
||||
|
|
@ -221,13 +188,12 @@ a.admtxt.admbg2:hover {
|
|||
margin-right: 96px;
|
||||
top: 120px;
|
||||
left: 0;
|
||||
z-index: 13;
|
||||
z-index: 11;
|
||||
}
|
||||
#holder {
|
||||
height: 516px;
|
||||
width: auto;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
#rwidget {
|
||||
height: 516px;
|
||||
|
|
@ -316,14 +282,12 @@ a.admtxt.admbg2:hover {
|
|||
}
|
||||
/* panel */
|
||||
#panel_l {
|
||||
background-color: lighten($gray, 10%);
|
||||
background-color: #f0f0f0;
|
||||
float: left;
|
||||
}
|
||||
#panel_r {
|
||||
background-color: #fff;
|
||||
margin-left: 252px;
|
||||
position: relative;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* Desktop Notification */
|
||||
|
|
@ -331,46 +295,30 @@ a.admtxt.admbg2:hover {
|
|||
position: fixed;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -200px;
|
||||
margin-left: -206px;
|
||||
z-index: 99999;
|
||||
width: 400px;
|
||||
@include transition-type(height,2);
|
||||
padding: 0 6px 6px 6px;
|
||||
background-color: #000;
|
||||
background-color: rgba(0,0,0,0.6);
|
||||
|
||||
.note_holder {
|
||||
background-color: #f3f3f3;
|
||||
border: solid 1px #fff;
|
||||
border-top: none;
|
||||
overflow: hidden;
|
||||
padding: 36px;
|
||||
border: solid 2px $gray;
|
||||
border-top: 0;
|
||||
display: none;
|
||||
padding: 24px 24px;
|
||||
|
||||
.note_type {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
color: #fff;
|
||||
float: left;
|
||||
|
||||
.sign {
|
||||
img {
|
||||
display: block;
|
||||
font-size: 40px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
padding: 10px;
|
||||
border-radius: 30px;
|
||||
text-align: center;
|
||||
|
||||
&.icon-ok { background-color: #5BB75B; }
|
||||
&.icon-exclamation-sign { background-color: #DA4F49; }
|
||||
&.icon-warning-sign { background-color: #FAA732; }
|
||||
}
|
||||
}
|
||||
.note_message {
|
||||
color: #333;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
word-wrap: break-word;
|
||||
width: 240px;
|
||||
margin: 0 0 0 20px;
|
||||
margin: 10px 0 0 48px;
|
||||
font-size: 15px;
|
||||
// font-weight: normal;
|
||||
}
|
||||
|
|
@ -385,7 +333,6 @@ a.admtxt.admbg2:hover {
|
|||
left: 0;
|
||||
top: 0;
|
||||
z-index: 12;
|
||||
display: none;
|
||||
|
||||
.tile {
|
||||
background-color: #000;
|
||||
|
|
@ -464,7 +411,7 @@ a.admtxt.admbg2:hover {
|
|||
margin: 0 auto;
|
||||
position: relative;
|
||||
|
||||
[data-sizex="1"] &, .w1.h1 & {
|
||||
[data-sizex="1"] & {
|
||||
margin-top: 24px;
|
||||
}
|
||||
#sections & {
|
||||
|
|
@ -513,11 +460,11 @@ a.admtxt.admbg2:hover {
|
|||
cursor: move;
|
||||
overflow: hidden;
|
||||
}
|
||||
.gs_w.dragging {
|
||||
-webkit-transform: scale(0.92);
|
||||
-moz-transform: scale(0.92);
|
||||
transform: scale(0.92);
|
||||
}
|
||||
// .app.gs_w:active {
|
||||
// -webkit-transform: scale(0.9);
|
||||
// -moz-transform: scale(0.9);
|
||||
// transform: scale(0.9);
|
||||
// }
|
||||
|
||||
/* header drop menu */
|
||||
.sdm_mdr .sdm_o { top: 36px; }
|
||||
|
|
@ -599,11 +546,7 @@ a.admtxt.admbg2:hover {
|
|||
margin-top: 12px;
|
||||
overflow: hidden;
|
||||
border-top: solid 1px #eee;
|
||||
// background-color: #fff;
|
||||
|
||||
.setting_btn {
|
||||
margin-left: 12px;
|
||||
}
|
||||
background-color: #fff;
|
||||
}
|
||||
.setting_btn {
|
||||
display: block;
|
||||
|
|
@ -615,74 +558,21 @@ a.admtxt.admbg2:hover {
|
|||
border: 0;
|
||||
}
|
||||
|
||||
/* Apps Manager */
|
||||
#app_info {
|
||||
|
||||
.group_search{
|
||||
float: left;
|
||||
width: 420px;
|
||||
height: 516px;
|
||||
margin-right: 36px;
|
||||
display: none;
|
||||
|
||||
.app_info_header {
|
||||
height: 120px;
|
||||
margin: -12px -12px 12px -12px;
|
||||
position: relative;
|
||||
background-color: lighten($gray, 10%);
|
||||
@include box-sizing;
|
||||
|
||||
> * {
|
||||
height: 100%;
|
||||
}
|
||||
.app_info_icon {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
margin-top: 30px;
|
||||
@include box-sizing;
|
||||
}
|
||||
.app_info_name {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
font-size: 2em;
|
||||
width: 300px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.panel_close {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 12px;
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
.app_info_list {
|
||||
line-height: 1.5em;
|
||||
overflow: hidden;
|
||||
|
||||
label {
|
||||
color: darken($gray, 20%);
|
||||
}
|
||||
}
|
||||
}
|
||||
#app_list {
|
||||
float: left;
|
||||
|
||||
.element > * {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
}
|
||||
.search_result{
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
|
||||
.message {
|
||||
font-size: 15px;
|
||||
word-wrap: break-word;
|
||||
|
||||
b {
|
||||
font-size: 20px;
|
||||
display: block;
|
||||
margin-top: 12px;
|
||||
}
|
||||
}
|
||||
margin-right: 24px;
|
||||
max-width: 340px;
|
||||
}
|
||||
.g_sep {
|
||||
width: 12px;
|
||||
border-left: solid 1px #fff;
|
||||
@include box-sizing;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -706,14 +596,11 @@ a.admtxt.admbg2:hover {
|
|||
}
|
||||
|
||||
/* list item */
|
||||
.list_t_item {
|
||||
overflow: hidden;
|
||||
}
|
||||
.list_t_item { overflow: hidden; }
|
||||
.list_t_title {
|
||||
padding-bottom: 6px;
|
||||
color: #000;
|
||||
margin-bottom: 6px;
|
||||
color: #333;
|
||||
font-size: 15px;
|
||||
line-height: 1.3em;
|
||||
// font-weight: normal;
|
||||
}
|
||||
.list_t_des {
|
||||
|
|
@ -722,38 +609,164 @@ a.admtxt.admbg2:hover {
|
|||
margin-bottom: 4px;
|
||||
font-size: 13px;
|
||||
}
|
||||
.list_item_function {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: -30px;
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: right;
|
||||
@include transition-type(all,0.3);
|
||||
.list_item_function a {
|
||||
display: inline-block;
|
||||
padding: 4px;
|
||||
font-size: 11px;
|
||||
-webkit-text-size-adjust: none;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
margin-left: 4px;
|
||||
padding: 0 6px;
|
||||
font-size: 11px;
|
||||
-webkit-text-size-adjust: none;
|
||||
|
||||
:first-child {
|
||||
margin-left: 0;
|
||||
/* Journal Papers */
|
||||
[page-name="journal_p_list"] {
|
||||
.list_t_item .inner { padding-left: 30px; }
|
||||
.list_item_action {
|
||||
font-size: 12px;
|
||||
float: left;
|
||||
margin-left: -30px;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
margin: 1px 1px 6px 1px;
|
||||
}
|
||||
.icon-star-empty { color: #999; font-size: 20px; }
|
||||
.icon-star { color: #faa732; font-size: 20px; }
|
||||
.icon-check-empty { color: #999; font-size: 20px; }
|
||||
.icon-check { color: #333; font-size: 20px; }
|
||||
}
|
||||
.datalist_item:hover & {
|
||||
bottom: 0;
|
||||
|
||||
.file_view {
|
||||
.list_t_des {
|
||||
overflow: hidden;
|
||||
}
|
||||
.file {
|
||||
float: left;
|
||||
width: 120px;
|
||||
height: 50px;
|
||||
padding: 6px;
|
||||
margin: 1px;
|
||||
position: relative;
|
||||
@include box-sizing;
|
||||
|
||||
&:hover {
|
||||
background-color: lighten($gray, 10%);
|
||||
}
|
||||
img {
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
position: absolute;
|
||||
left: 6px;
|
||||
top: 6px;
|
||||
}
|
||||
.filetitle {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 38px;
|
||||
padding-left: 40px;
|
||||
overflow: hidden;
|
||||
@include box-sizing;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Journal Paper Add */
|
||||
#paper_add {
|
||||
.s_grid_con {
|
||||
float: left;
|
||||
height: 456px;
|
||||
margin-left: 12px;
|
||||
padding-left: 12px;
|
||||
border-left: solid 1px #eee;
|
||||
|
||||
&:first-child {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
.f_w { width: 336px; }
|
||||
label { margin-right: 0; }
|
||||
}
|
||||
|
||||
/* Journal Journal list */
|
||||
[page-name="journal_p_journal"] {
|
||||
|
||||
.datalist_item .inner {
|
||||
padding-left: 30px;
|
||||
}
|
||||
.list_item_action {
|
||||
font-size: 12px;
|
||||
float: left;
|
||||
margin-left: -30px;
|
||||
}
|
||||
.list_item_action i {
|
||||
color: #999;
|
||||
font-size: 20px;
|
||||
display: block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
margin: 1px 1px 6px 1px;
|
||||
}
|
||||
.list_t_desc {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
|
||||
/* Journal Co-Author */
|
||||
[page-name="journal_p_coauthor"] {
|
||||
.list_t_item {
|
||||
height: 110px;
|
||||
}
|
||||
.list_item_function {}
|
||||
.list_item_function a {
|
||||
display: inline-block;
|
||||
padding: 4px;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
-webkit-text-size-adjust: none;
|
||||
}
|
||||
.info {
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
.info li {
|
||||
margin-bottom: 8px;
|
||||
color: #999;
|
||||
}
|
||||
.info .name {
|
||||
font-size: 18px;
|
||||
line-height: 24px;
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
|
||||
/* Journal Co-Author Relationship*/
|
||||
[page-name="journal_p_coauthor_relation"]{
|
||||
.edit_co_author_relation {
|
||||
/*margin-left: -10px;*/
|
||||
}
|
||||
.form_space {
|
||||
margin-bottom: 10px;
|
||||
font-size: 18px;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
}
|
||||
/* Journal New Co-Author */
|
||||
#new_co_author label {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
|
||||
/* App */
|
||||
.app_frame {
|
||||
margin: 60px 0 48px 156px;
|
||||
margin: 48px 96px 48px 156px;
|
||||
min-width: 800px;
|
||||
min-height: 576px;
|
||||
min-height: 588px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
|
@ -765,55 +778,20 @@ a.admtxt.admbg2:hover {
|
|||
background-color: #fff;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
|
||||
iframe {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.app_frame_header{
|
||||
height: 60px;
|
||||
|
||||
.icon-remove, .icon-minus {
|
||||
display: block;
|
||||
float: right;
|
||||
line-height: 60px;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Minimize Section */
|
||||
#minimizebar {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
z-index: 14;
|
||||
|
||||
.minimize {
|
||||
#header .icon-remove {
|
||||
display: block;
|
||||
float: right;
|
||||
line-height: 60px;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
line-height: 36px;
|
||||
font-size: 15px;
|
||||
float: left;
|
||||
|
||||
.icon-remove {
|
||||
float: right;
|
||||
line-height: 36px;
|
||||
}
|
||||
}
|
||||
> :first-child {
|
||||
// margin-top: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
/*Tooltip popup */
|
||||
.desktop_toolpopup {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
z-index: 10px;
|
||||
display: none;
|
||||
padding: 12px;
|
||||
cursor: default;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
@media only screen and (min-width: 1240px){
|
||||
|
||||
/*#panel_r.pw { width: 800px; }*/
|
||||
#panel_r.pw { width: 800px; }
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 1900px){
|
||||
|
||||
/*#panel_r.pw { width: 1400px; }*/
|
||||
#panel_r.pw { width: 1400px; }
|
||||
|
||||
}
|
||||
|
|
@ -271,7 +271,7 @@ disabled look for disabled choices in the results dropdown
|
|||
.select2-container.select2-container-disabled .select2-choice {
|
||||
background-color: #f4f4f4;
|
||||
background-image: none;
|
||||
border: 1px solid #ddd;
|
||||
border: 1px solid #dddddd;
|
||||
cursor: default; }
|
||||
|
||||
.select2-container.select2-container-disabled .select2-choice div {
|
||||
|
|
@ -326,7 +326,7 @@ disabled look for disabled choices in the results dropdown
|
|||
background: white url("select2/spinner.gif") no-repeat 100% !important; }
|
||||
|
||||
.select2-default {
|
||||
color: #999 !important; }
|
||||
color: #999999 !important; }
|
||||
|
||||
.select2-container-multi .select2-choices .select2-search-choice {
|
||||
padding: 3px 5px 3px 18px;
|
||||
|
|
@ -374,12 +374,12 @@ disabled look for disabled choices in the results dropdown
|
|||
.select2-container-multi.select2-container-disabled .select2-choices {
|
||||
background-color: #f4f4f4;
|
||||
background-image: none;
|
||||
border: 1px solid #ddd;
|
||||
border: 1px solid #dddddd;
|
||||
cursor: default; }
|
||||
|
||||
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
|
||||
padding: 3px 5px 3px 5px;
|
||||
border: 1px solid #ddd;
|
||||
border: 1px solid #dddddd;
|
||||
background-image: none;
|
||||
background-color: #f4f4f4; }
|
||||
|
||||
|
|
@ -404,4 +404,4 @@ disabled look for disabled choices in the results dropdown
|
|||
background-size: 60px 40px !important; }
|
||||
|
||||
.select2-search input {
|
||||
background-position: 100% -21px !important; } }
|
||||
background-position: 100% -21px !important; } }
|
||||
|
|
@ -155,7 +155,7 @@ Version: 3.3.1 Timestamp: Wed Feb 20 09:57:22 PST 2013
|
|||
}
|
||||
|
||||
.select2-search input.select2-active {
|
||||
background: #fff url('select2/spinner.gif') no-repeat 100%;
|
||||
background: #fff image-url('select2-spinner.gif') no-repeat 100%;
|
||||
}
|
||||
|
||||
.select2-container-active .select2-choice,
|
||||
|
|
@ -273,7 +273,7 @@ disabled look for disabled choices in the results dropdown
|
|||
}
|
||||
|
||||
.select2-more-results.select2-active {
|
||||
background: #f4f4f4 url('select2/spinner.gif') no-repeat 100%;
|
||||
background: #f4f4f4 image-url('select2-spinner.gif') no-repeat 100%;
|
||||
}
|
||||
|
||||
.select2-more-results {
|
||||
|
|
@ -352,7 +352,7 @@ disabled look for disabled choices in the results dropdown
|
|||
}
|
||||
|
||||
.select2-container-multi .select2-choices .select2-search-field input.select2-active {
|
||||
background: #fff url('select2/spinner.gif') no-repeat 100% !important;
|
||||
background: #fff image-url('select2-spinner.gif') no-repeat 100% !important;
|
||||
}
|
||||
|
||||
.select2-default {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
class Admin::MailCronLogsController < OrbitBackendController
|
||||
|
||||
layout "new_admin"
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
|
||||
def index
|
||||
|
||||
# @mail_cron_logs = MailCronLog.all.desc(:created_at).page(params[:page_main] ).per('20')
|
||||
@mail_cron_logs = (params[:sort]) ? get_sorted_and_filtered("mail_cron_log") : get_viewable("mail_cron_log")
|
||||
|
||||
respond_to do |format|
|
||||
format.html # index.html.erb
|
||||
format.xml { render :xml => @mail_crons }
|
||||
format.js
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def destroy
|
||||
@mail_cron_log = MailCronLog.find(params[:id])
|
||||
@mail_cron_log.destroy
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to(admin_mail_cron_logs_url) }
|
||||
# format.xml { head :ok }
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def delete
|
||||
if params[:ids]
|
||||
mail_cron_logs = MailCronLog.any_in(:_id => params[:ids]).destroy_all
|
||||
end
|
||||
redirect_to admin_mail_cron_logs_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
class Admin::MailCronsController < OrbitBackendController
|
||||
|
||||
layout "new_admin"
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
|
||||
def index
|
||||
|
||||
# @mail_crons = MailCron.all.asc(:mail_sentdate).page(params[:page_main] ).per('20')
|
||||
@mail_crons = (params[:sort]) ? get_sorted_and_filtered("mail_cron") : get_viewable("mail_cron")
|
||||
|
||||
respond_to do |format|
|
||||
format.html # index.html.erb
|
||||
format.xml { render :xml => @mail_crons }
|
||||
format.js
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def show
|
||||
end
|
||||
|
||||
def new
|
||||
@mail_cron = MailCron.new
|
||||
|
||||
respond_to do |format|
|
||||
format.html # new.html.erb
|
||||
format.xml { render :xml => @mail_cron }
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
@mail_cron = MailCron.new(params[:mail_cron])
|
||||
|
||||
@mail_cron.create_user_id = current_user.id
|
||||
@mail_cron.update_user_id = current_user.id
|
||||
|
||||
respond_to do |format|
|
||||
if @mail_cron.save
|
||||
format.html { redirect_to(admin_mail_crons_url) }
|
||||
format.xml { render :xml => @mail_cron, :status => :created, :location => @mail_cron }
|
||||
else
|
||||
format.html { render :action => "new" }
|
||||
format.xml { render :xml => @mail_cron.errors, :status => :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
@mail_cron = MailCron.find(params[:id])
|
||||
end
|
||||
|
||||
def update
|
||||
|
||||
|
||||
|
||||
@datas = MailCron.where(:mail_sentdate.lte => Time.now, :mail_sent => false)
|
||||
|
||||
@datas.each do |mail_data|
|
||||
|
||||
@mail_j = 0
|
||||
@read_mails = Array.new
|
||||
|
||||
@mails = mail_data.mail_to.split(",")
|
||||
|
||||
@mails.each do |send_mail|
|
||||
|
||||
@read_mails << send_mail
|
||||
|
||||
@mail_j += 1
|
||||
|
||||
if 0 == @mail_j % 30
|
||||
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||
@read_mails = Array.new
|
||||
|
||||
sleep 10
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if !@read_mails.join(',').blank?
|
||||
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||
@read_mails = Array.new
|
||||
|
||||
sleep 10
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@mail_cron = MailCron.find(params[:id])
|
||||
|
||||
@mail_cron.update_user_id = current_user.id
|
||||
|
||||
respond_to do |format|
|
||||
if @mail_cron.update_attributes(params[:mail_cron])
|
||||
format.html { redirect_to(admin_mail_crons_url) }
|
||||
format.js { render 'toggle_enable' }
|
||||
format.xml { head :ok }
|
||||
else
|
||||
format.html { render :action => "edit" }
|
||||
format.xml { render :xml => @mail_cron.errors, :status => :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@mail_cron = MailCron.find(params[:id])
|
||||
@mail_cron.destroy
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to(admin_mail_crons_url) }
|
||||
# format.xml { head :ok }
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def delete
|
||||
if params[:ids]
|
||||
mail_crons = MailCron.any_in(:_id => params[:ids]).destroy_all
|
||||
end
|
||||
redirect_to admin_mail_crons_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
end
|
||||
|
|
@ -11,23 +11,21 @@ class DefaultWidgetController< OrbitWidgetController
|
|||
end
|
||||
|
||||
def query_for_default_widget
|
||||
|
||||
@ori_class_name = @default_widget["query"].split('.')[0]
|
||||
result = nil
|
||||
result_objects = nil
|
||||
|
||||
@ori_class_name = @default_widget["query"].split('.')[0]
|
||||
@result = eval(@default_widget["query"])
|
||||
if !params["tag_id"].blank?
|
||||
if params["category_id"].blank? #has tag no cate
|
||||
result = @ori_class_name.constantize.where(:tagged_ids.in => params["tag_id"])
|
||||
@result.selector[:tagged_ids] = { "$in" => params['tag_id'] }
|
||||
else #has tag and cate
|
||||
result = eval("#{@ori_class_name}.where(:#{get_category_field_name}.in=>params['category_id'], :tagged_ids.in => params['tag_id'])")
|
||||
@result.selector[get_category_field_name] = { "$in" => params['category_id'].collect{|t| BSON::ObjectId(t)}}
|
||||
@result.selector[:tagged_ids] = { "$in" => params['tag_id'] }
|
||||
end
|
||||
elsif params["category_id"].blank? #no tag no cate
|
||||
result = eval(@default_widget["query"])
|
||||
else #no tag has cate
|
||||
result = eval("#{@ori_class_name}.where(:#{get_category_field_name}.in=>params['category_id'])")
|
||||
|
||||
@result.selector[get_category_field_name] = { "$in" => params['category_id'].collect{|t| BSON::ObjectId(t)}}
|
||||
end
|
||||
result.available_for_lang(I18n.locale).can_display.desc(:is_top, :postdate)
|
||||
eval("@result.#{@default_widget[:sorting_query]}")
|
||||
end
|
||||
|
||||
def search_result
|
||||
|
|
@ -40,9 +38,13 @@ class DefaultWidgetController< OrbitWidgetController
|
|||
|
||||
def default_widget
|
||||
@search = params["search_query"].blank? ? false : true
|
||||
if !params[:id].blank?
|
||||
if !params[:id].blank? and !params["clicked_field_name"].blank?
|
||||
clicked_field_name = params["clicked_field_name"].to_sym
|
||||
redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {inner: #{params[:inner] || true}})")
|
||||
elsif !params[:id].blank? and params["preview"]
|
||||
clicked_field_name = :title
|
||||
@preview_pages = @page_part.module_app.widget_fields_link_method.find_all{|t| t[1].has_key?(:preview)}.collect{|t| t[0]}
|
||||
redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {preview: true,inner: #{params[:inner] || true},clicked_field_name: '#{@preview_pages.first.to_s}'})")
|
||||
else
|
||||
@tag_class = nil
|
||||
@default_widget = @page_part.module_app.get_default_widget
|
||||
|
|
@ -91,9 +93,9 @@ class DefaultWidgetController< OrbitWidgetController
|
|||
end
|
||||
|
||||
def get_category_field_name
|
||||
@ori_class_name = @ori_class_name.constantize
|
||||
@ori_class_name = @ori_class_name.constantize unless @ori_class_name.is_a? Class
|
||||
@ori_class_name.fields.each_key do |key|
|
||||
return key if key.include?('category_id')
|
||||
return key.to_s if key.include?('category_id')
|
||||
end
|
||||
nil
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
class DesktopAppsController < OrbitBackendController
|
||||
require "net/http"
|
||||
require "uri"
|
||||
require 'zip/zip'
|
||||
|
||||
def index
|
||||
@desktopapps = DesktopApp.all
|
||||
end
|
||||
|
||||
def upload
|
||||
if !params[:desktop_app].nil?
|
||||
temp_file = Tempfile.new("temp_file");
|
||||
original_file = params[:desktop_app][:package_file]
|
||||
temp_file.write(original_file.read.force_encoding("UTF-8"))
|
||||
temp_file.rewind
|
||||
filename = File.basename(original_file.original_filename,".zip")
|
||||
unzip_app(temp_file,filename)
|
||||
temp_file.close
|
||||
end
|
||||
end
|
||||
|
||||
def unzip_app(file, zip_name)
|
||||
Zip::ZipFile.open(file) { |zip_file|
|
||||
da = DesktopApp.new.from_json(zip_file.read("#{zip_name}/settings.json"))
|
||||
Dir.mktmpdir('f_path') { |dir|
|
||||
images_entries = []
|
||||
zip_file.entries.each do |entry|
|
||||
case (path = entry.to_s)
|
||||
when /\A(#{zip_name})\/(images)\/.*((\.jpg)|(\.png)|(\.gif))\z/ #for img
|
||||
images_entries << entry
|
||||
end
|
||||
end
|
||||
|
||||
images_entries.each do |image|
|
||||
da.images.build(:file => get_temp_file(zip_file,dir,image))
|
||||
end
|
||||
}
|
||||
da.save
|
||||
}
|
||||
end
|
||||
|
||||
def get_temp_file(zip_file, dir, entry)
|
||||
filename = File.basename(entry.to_s)
|
||||
temp_file = File.new(dir + '/' + filename, 'w+')
|
||||
temp_file.write (zip_file.read entry ).force_encoding('UTF-8')
|
||||
temp_file
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -31,7 +31,7 @@ class DesktopController< ApplicationController
|
|||
render :layout => false
|
||||
end
|
||||
|
||||
def get_themes
|
||||
def themes
|
||||
@themes = DesktopTheme.all
|
||||
# raise @themes.inspect
|
||||
render "desktop/settings/themes", :layout => false
|
||||
|
|
@ -42,7 +42,6 @@ class DesktopController< ApplicationController
|
|||
end
|
||||
|
||||
def connections
|
||||
@url = "http://fb.tp.rulingcom.com/login?callback=http://harry.tp.rulingcom.com/facebook/register_fb?user="+current_user.id.to_s
|
||||
render "desktop/settings/connections", :layout => false
|
||||
end
|
||||
|
||||
|
|
@ -108,19 +107,18 @@ class DesktopController< ApplicationController
|
|||
def getgroups
|
||||
@section = Section.find(params["sectionid"])
|
||||
@groups = @section.groups
|
||||
|
||||
gr = Array.new
|
||||
@groups.each do |group|
|
||||
a = Array.new
|
||||
@t = group.tiles
|
||||
|
||||
@t.each do |tile|
|
||||
t = group.tiles
|
||||
t.each do |tile|
|
||||
data_content = ""
|
||||
jsfile = []
|
||||
cssfile = ""
|
||||
shape = "w1 h1"
|
||||
link = ""
|
||||
icon= ""
|
||||
fullsize = false
|
||||
link = ""
|
||||
if tile.data_category == "widget"
|
||||
widge = DesktopWidget.find(tile.desktop_widget_id.to_s)
|
||||
# data_content = widge.widget_layout.file
|
||||
|
|
@ -129,17 +127,21 @@ class DesktopController< ApplicationController
|
|||
cssfile = widge.css_default.file.as_json[:file]
|
||||
shape = widge.shape
|
||||
title = widge.name
|
||||
icon = widge.images.where(:name => widge.icon).first.file.url
|
||||
# binding.pry
|
||||
fullsize = widge.fullsize
|
||||
if not widge.fullsize.nil?
|
||||
fullsize = widge.fullsize
|
||||
end
|
||||
else
|
||||
app = DesktopApp.find(tile.desktop_app_id.to_s)
|
||||
title = app.name
|
||||
link = app.url
|
||||
icon = app.images.where(:name => app.icon).first.file.url
|
||||
|
||||
data_content = tile.data_content
|
||||
title = tile.title
|
||||
case data_content
|
||||
when "envocab"
|
||||
link = "http://www.english-vocabulary.eu/"
|
||||
when "wikibooks"
|
||||
link = "http://www.wikibooks.org"
|
||||
end
|
||||
end
|
||||
gr << {"id"=>tile.id,"data_category"=>tile.data_category,"data_content"=>data_content,"js"=>jsfile,"css"=>cssfile,"shape"=>shape,"position"=>tile.position,"row"=>tile.row,"column"=>tile.column, "title"=>title,"fullsize"=>fullsize,"link"=>link,"icon"=>icon}
|
||||
gr << {"id"=>tile.id,"data_category"=>tile.data_category,"data_content"=>data_content,"js"=>jsfile,"css"=>cssfile,"shape"=>shape,"position"=>tile.position,"row"=>tile.row,"column"=>tile.column, "title"=>title,"fullsize"=>fullsize,"link"=>link}
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -150,11 +152,9 @@ class DesktopController< ApplicationController
|
|||
|
||||
def widget_layout
|
||||
widget = DesktopWidget.find(params[:id])
|
||||
# link = '<link href="'+widget.css_default.file.to_s+'" media="screen" rel="stylesheet" type="text/css" />'
|
||||
css = widget.css_default.content;
|
||||
css = "<style>" + css + "</style>"
|
||||
link = '<link href="'+widget.css_default.file.to_s+'" media="screen" rel="stylesheet" type="text/css" />'
|
||||
content = widget.widget_layout.body
|
||||
dhtml = css + content
|
||||
dhtml = link + content
|
||||
render :text => dhtml.html_safe
|
||||
end
|
||||
|
||||
|
|
@ -194,46 +194,6 @@ class DesktopController< ApplicationController
|
|||
end
|
||||
render :json=>a.to_json
|
||||
end
|
||||
|
||||
def getapplistforManager
|
||||
@dwss = DesktopWidget.all
|
||||
@dapps = DesktopApp.all
|
||||
@tiles = Array.new
|
||||
desktop = Desktop.find(params['desktopid'])
|
||||
sections = desktop.sections
|
||||
sections.each do |section|
|
||||
groups = section.groups
|
||||
groups.each do |group|
|
||||
@tiles += group.tiles
|
||||
end
|
||||
end
|
||||
@validtiles = Array.new
|
||||
@allWidgets = Array.new
|
||||
@dwss.each do |dw|
|
||||
@id = dw.id
|
||||
@validtiles = @tiles.select{|t| t.desktop_widget_id == @id}
|
||||
@sections = Array.new
|
||||
@validtiles.each do |vt|
|
||||
grp = Group.find(vt.group_id)
|
||||
sec = Section.find(grp.section_id);
|
||||
@sections << {"id"=>sec.id,"name"=>sec.name}
|
||||
end
|
||||
@allWidgets << {"id"=>dw.id, "data_category"=> "widget","title" => dw.name, "version" => dw.version, "author"=>dw.author, "last_update"=>dw.updated_at, "icon"=>dw.images.where(:name=>dw.icon).first.file.url, "text_color" => dw.text_color, "background" => dw.bg_color, "sections" => @sections}
|
||||
end
|
||||
validtiles = Array.new
|
||||
@dapps.each do |da|
|
||||
@id = da.id
|
||||
@validtiles = @tiles.select{|t| t.desktop_app_id == @id}
|
||||
@sections = Array.new
|
||||
@validtiles.each do |vt|
|
||||
grp = Group.find(vt.group_id)
|
||||
sec = Section.find(grp.section_id);
|
||||
@sections << {"id"=>sec.id,"name"=>sec.name}
|
||||
end
|
||||
@allWidgets << {"id"=>da.id, "data_category"=> "app","title" => da.name, "version" => da.version, "author"=>da.author, "last_update"=>da.updated_at, "icon"=>da.images.where(:name=>da.icon).first.file.url, "sections" => @sections}
|
||||
end
|
||||
render :json=>@allWidgets.to_json
|
||||
end
|
||||
|
||||
def newpositions
|
||||
@newpositions = params[:newpositions]
|
||||
|
|
@ -276,48 +236,5 @@ class DesktopController< ApplicationController
|
|||
feed = Net::HTTP.get_response(URI.parse("https://mail.google.com/mail/feed/atom")).body
|
||||
render :xml=>feed
|
||||
end
|
||||
|
||||
def appactivation
|
||||
@group = Section.find(params[:section_id]).groups.first
|
||||
@type = params[:type]
|
||||
if @type == "widget"
|
||||
@widget = DesktopWidget.find(params[:id])
|
||||
status = params[:status]
|
||||
|
||||
case status
|
||||
when "true"
|
||||
tile = Tile.new(data_category: "widget", position: 8, desktop_widget_id: @widget.id)
|
||||
@group.tiles+=[tile]
|
||||
@group.save
|
||||
when "false"
|
||||
tile = @group.tiles.where("desktop_widget_id"=>@widget.id).first
|
||||
if tile != nil
|
||||
tile.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if @type == "app"
|
||||
@app = DesktopApp.find(params[:id])
|
||||
status = params[:status]
|
||||
case status
|
||||
when "true"
|
||||
tile = Tile.new(data_category: "app", position: 8, desktop_app_id: @app.id)
|
||||
@group.tiles+=[tile]
|
||||
@group.save
|
||||
when "false"
|
||||
tile = @group.tiles.where("desktop_app_id"=>@app.id).first
|
||||
if tile != nil
|
||||
tile.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
b = Array.new
|
||||
b = {"success"=>"true"}
|
||||
render :json=>b.to_json
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,86 +0,0 @@
|
|||
class DesktopThemesController < OrbitBackendController
|
||||
require "net/http"
|
||||
require "uri"
|
||||
require 'zip/zip'
|
||||
|
||||
def index
|
||||
@desktopThemes = DesktopTheme.all
|
||||
end
|
||||
|
||||
def destroy
|
||||
dt = DesktopTheme.find(params[:id])
|
||||
dt.destroy
|
||||
redirect_to desktop_theme_path
|
||||
end
|
||||
|
||||
def upload
|
||||
if !params[:desktop_theme].nil?
|
||||
temp_file = Tempfile.new("temp_file")
|
||||
original_file = params[:desktop_theme][:package_file]
|
||||
#if original_file.content_type == 'application/zip'
|
||||
temp_file.write(original_file.read.force_encoding('UTF-8'))
|
||||
temp_file.rewind
|
||||
filename = File.basename(original_file.original_filename,".zip")
|
||||
unzip_widget(temp_file, filename)
|
||||
#else
|
||||
# flash[:error] = "Upload file should be in zip format"
|
||||
#end
|
||||
temp_file.close
|
||||
end
|
||||
end
|
||||
def edit
|
||||
@dw = DesktopWidget.find(params[:id])
|
||||
end
|
||||
|
||||
|
||||
def unzip_widget(file, zip_name)
|
||||
Zip::ZipFile.open(file) { |zip_file|
|
||||
dt = DesktopTheme.new.from_json(zip_file.read("#{zip_name}/settings.json"))
|
||||
Dir.mktmpdir('f_path') { |dir|
|
||||
images_entries = []
|
||||
zip_file.entries.each do |entry|
|
||||
case (path = entry.to_s)
|
||||
when /\A(#{zip_name})\/(theme\.css)\z/
|
||||
#for default css
|
||||
dt.build_css_default(:file => get_temp_file(zip_file, dir, entry))
|
||||
when /\A(#{zip_name})\/(background)\/.*((\.jpg)|(\.png)|(\.gif))\z/ #for img
|
||||
images_entries << entry
|
||||
end
|
||||
end
|
||||
images_entries.each do |image|
|
||||
dt.images.build(:file => get_temp_file(zip_file,dir,image))
|
||||
end
|
||||
}
|
||||
dt.save
|
||||
}
|
||||
end
|
||||
def get_temp_file(zip_file, dir, entry)
|
||||
filename = File.basename(entry.to_s)
|
||||
temp_file = File.new(dir + '/' + filename, 'w+')
|
||||
temp_file.write (zip_file.read entry ).force_encoding('UTF-8')
|
||||
temp_file
|
||||
end
|
||||
|
||||
def settings
|
||||
if params[:id] == "custom"
|
||||
@id = DesktopTheme.first.id.to_s
|
||||
else
|
||||
@id = params[:id]
|
||||
end
|
||||
dt = DesktopTheme.find(@id)
|
||||
if !dt.nil?
|
||||
dt['css'] = dt.css_default.file.url
|
||||
dt['background'] = dt.images.where(:name=>dt.background).first.file.url
|
||||
end
|
||||
icons = DesktopTheme::ICONS
|
||||
dt['icons'] = icons
|
||||
|
||||
render :json => dt.to_json
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -4,7 +4,6 @@ class DesktopWidgetsController < OrbitBackendController
|
|||
require 'zip/zip'
|
||||
|
||||
def index
|
||||
@desktopWidgets = DesktopWidget.all
|
||||
end
|
||||
|
||||
def upload
|
||||
|
|
@ -22,19 +21,6 @@ class DesktopWidgetsController < OrbitBackendController
|
|||
temp_file.close
|
||||
end
|
||||
end
|
||||
def edit
|
||||
@dw = DesktopWidget.find(params[:id])
|
||||
end
|
||||
|
||||
def update
|
||||
@dw = DesktopWidget.find(params[:id])
|
||||
if(params[:desktop_widget])
|
||||
@imagefile = params[:desktop_widget][:image]
|
||||
@dw.images.build(:file => @imagefile)
|
||||
@dw.save
|
||||
end
|
||||
redirect_to action: "index"
|
||||
end
|
||||
|
||||
def unzip_widget(file, zip_name)
|
||||
Zip::ZipFile.open(file) { |zip_file|
|
||||
|
|
|
|||
|
|
@ -1,31 +0,0 @@
|
|||
require "net/http"
|
||||
require "uri"
|
||||
require 'json'
|
||||
|
||||
class FacebookController< ApplicationController
|
||||
|
||||
def register_fb
|
||||
user = User.find(params[:user])
|
||||
if !user.facebook
|
||||
user.build_facebook(fb_identifier: params[:identifier],connected: true)
|
||||
user.save!
|
||||
end
|
||||
render :json=>{"success"=>true,"user"=>user.facebook.fb_identifier}.to_json
|
||||
end
|
||||
|
||||
def get_friends
|
||||
@url = "http://fb.tp.rulingcom.com/get_friends?identifier=" + current_user.facebook.fb_identifier
|
||||
uri = URI.parse(@url)
|
||||
http = Net::HTTP.new(uri.host, uri.port)
|
||||
request = Net::HTTP::Get.new(uri.request_uri)
|
||||
response = http.request(request)
|
||||
friends = response.body
|
||||
friends = JSON.parse(friends)
|
||||
output = Array.new
|
||||
friends.each do |friend|
|
||||
output << friend['name']
|
||||
end
|
||||
render :json=>{"count"=>friends.count,"friends"=>output}.to_json
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -43,7 +43,7 @@ class MobileController < ApplicationController
|
|||
|
||||
def page
|
||||
@page_title = t('mobile.page')
|
||||
@page_contexts = PageContext.where(:archived => false).page(params[:page_main]).per(15)
|
||||
@page_contexts = get_sorted_page_from_structure
|
||||
end
|
||||
|
||||
def page_content
|
||||
|
|
@ -57,4 +57,12 @@ class MobileController < ApplicationController
|
|||
@no_footer = true if request.path =~ /app/
|
||||
end
|
||||
|
||||
def get_sorted_page_from_structure
|
||||
page_contexts = Item.structure_ordered_items.inject([]){ |pages, page|
|
||||
pages << page.page_contexts.where(archived: false).limit(1)[0] if page.is_a?(Page) && !page.page_contexts.blank?
|
||||
pages
|
||||
}
|
||||
Kaminari.paginate_array(page_contexts).page(params[:page]).per(15)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -7,4 +7,10 @@ class OrbitFrontendComponentController< ApplicationController
|
|||
@app_title = request.fullpath.split('/')[2]
|
||||
end
|
||||
|
||||
def delay_impressionist(item)
|
||||
user_id = current_user.nil? ? nil : current_user.id
|
||||
Resque.enqueue(DelayedImpressionist,:request=>DelayImpressionistRequest.new(request),:obj=>item,:class=>item.class.to_s,:controller_name=>controller_name,:action_name=>action_name,:user=>user_id)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -44,29 +44,13 @@ class PagesController < ApplicationController
|
|||
# render :file => "#{Rails.root}/public/404.html", :status => :not_found
|
||||
#end
|
||||
end
|
||||
|
||||
def convert_array_param(key,array)
|
||||
array.collect{|t| "#{key}[]=#{t}"}.join("&")
|
||||
end
|
||||
|
||||
def index_from_link
|
||||
url = "/#{@item.path}"
|
||||
options = ''
|
||||
options << "#{options.blank? ? '?' : '&'}page_main=#{params[:page_main]}" unless params[:page_main].blank?
|
||||
|
||||
if params[:category_id].is_a? Array
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id',params[:category_id])}" unless params[:category_id].blank?
|
||||
elsif params[:category_id].is_a? String
|
||||
options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
|
||||
end
|
||||
|
||||
if params[:tag_id].is_a? Array
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id',params[:tag_id])}" unless params[:tag_id].blank?
|
||||
elsif params[:category_id].is_a? String
|
||||
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
|
||||
end
|
||||
|
||||
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id', params[:category_id])}" unless params[:category_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id', params[:tag_id])}" unless params[:tag_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}name=#{params[:name]}" unless params[:name].blank?
|
||||
uri = URI::escape(url + options)
|
||||
|
|
@ -78,8 +62,8 @@ class PagesController < ApplicationController
|
|||
url = "/#{@item.path}"
|
||||
options = ''
|
||||
options << "#{options.blank? ? '?' : '&'}id=#{params[:id]}" unless params[:id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id', params[:category_id])}" unless params[:category_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('tag_id', params[:tag_id])}" unless params[:tag_id].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}preview=#{params[:preview]}" unless params[:preview].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}controller_action=#{params[:controller_action]}" unless params[:controller_action].blank?
|
||||
options << "#{options.blank? ? '?' : '&'}clicked_field_name=#{params[:clicked_field_name]}" unless params[:clicked_field_name].blank?
|
||||
|
|
@ -98,23 +82,43 @@ class PagesController < ApplicationController
|
|||
elsif params[:same_page_id]
|
||||
@item = Item.find(params[:same_page_id])
|
||||
else
|
||||
category_ids = params[:category_id].is_a?(Array) ? params[:category_id] : [params[:category_id]]
|
||||
tag_ids = params[:tag_id].is_a?(Array) ? params[:tag_id] : [params[:tag_id]]
|
||||
category_ids = Array(params[:category_id]) unless params[:category_id].nil?
|
||||
tag_ids = Array(params[:tag_id]) unless params[:tag_id].nil?
|
||||
module_app = ModuleApp.first(:conditions => {:key => params[:app_name]})
|
||||
|
||||
default_query = { is_published: true, module_app_id: module_app.id, :app_frontend_url.in => [params[:app_action], 'default_widget'] }
|
||||
specific_categories = { :category => category_ids }
|
||||
in_categories = { :category.in => category_ids }
|
||||
nil_categories = { :category.in => [nil, []] }
|
||||
specific_tags = { :tag => tag_ids }
|
||||
in_tags = { :tag.in => tag_ids }
|
||||
nil_tags = { :tag.in => [nil, []] }
|
||||
|
||||
if !category_ids.blank? && !tag_ids.blank?
|
||||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category.in => category_ids, :tag.in => tag_ids})
|
||||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category.in => category_ids, :tag.in => [nil, []]}) unless @item
|
||||
@item = Item.where(default_query.merge(specific_categories).merge(specific_tags)).first
|
||||
@item = Item.where(default_query.merge(specific_categories).merge(in_tags)).first unless @item
|
||||
@item = Item.where(default_query.merge(specific_categories).merge(nil_tags)).first unless @item
|
||||
@item = Item.where(default_query.merge(specific_tags).merge(in_categories)).first unless @item
|
||||
@item = Item.where(default_query.merge(specific_tags).merge(nil_categories)).first unless @item
|
||||
@item = Item.where(default_query.merge(in_categories).merge(in_tags)).first unless @item
|
||||
@item = Item.where(default_query.merge(in_categories).merge(nil_tags)).first unless @item
|
||||
@item = Item.where(default_query.merge(in_tags).merge(nil_categories)).first unless @item
|
||||
elsif !category_ids.blank?
|
||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action], :category.in => category_ids).any_in(tag: [nil, []]).first
|
||||
@item = Item.where(default_query.merge(specific_categories).merge(nil_tags)).first
|
||||
@item = Item.where(default_query.merge(specific_categories)).first unless @item
|
||||
@item = Item.where(default_query.merge(in_categories).merge(nil_tags)).first unless @item
|
||||
@item = Item.where(default_query.merge(in_categories)).first unless @item
|
||||
elsif !tag_ids.blank?
|
||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action], :tag.in => tag_ids).any_in(category: [nil, []]).first
|
||||
@item = Item.where(default_query.merge(specific_tags).merge(nil_categories)).first
|
||||
@item = Item.where(default_query.merge(specific_tags)).first unless @item
|
||||
@item = Item.where(default_query.merge(in_tags).merge(nil_categories)).first unless @item
|
||||
@item = Item.where(default_query.merge(in_tags)).first unless @item
|
||||
end
|
||||
@item = Item.find(params[:orig_page]) unless @item || params[:orig_page].blank?
|
||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).all_of("tag" => {"$in" => [nil, []]},"category" => { "$in" => [nil, []]}).first unless @item
|
||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: 'default_widget').first unless @item
|
||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).first unless @item
|
||||
@item = Item.where(default_query.merge(nil_categories).merge(nil_tags)).first unless @item
|
||||
@item = Item.where(default_query).first unless @item
|
||||
end
|
||||
raise PageError,'Missing Frontend Page' if @item.nil?
|
||||
raise PageError, 'Missing Frontend Page' if @item.nil?
|
||||
end
|
||||
|
||||
def save_from_no_lang_for_page
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
module ApplicationHelper
|
||||
|
||||
include OrbitApp::Module::VisitorCounter
|
||||
FLASH_NOTICE_KEYS = [:error, :notice, :warning]
|
||||
|
||||
|
||||
|
|
@ -7,8 +7,9 @@ module ApplicationHelper
|
|||
request.referer.include?('?') ? [request.referer,param_hash.to_param].join('&') : [request.referer,param_hash.to_param].join('?')
|
||||
end
|
||||
|
||||
def delayed_impressionist(object)
|
||||
# Resque.enqueue_at(1.minute.from_now,DelayedImpressionist,object)
|
||||
def delayed_impressionist(item)
|
||||
user_id = current_user.nil? ? nil : current_user.id
|
||||
Resque.enqueue(DelayedImpressionist,:request=>DelayImpressionistRequest.new(request),:obj=>item,:class=>item.class.to_s,:controller_name=>controller_name,:action_name=>action_name,:user=>user_id)
|
||||
end
|
||||
|
||||
def check_user_role_enable(attribute_fields)
|
||||
|
|
@ -242,25 +243,27 @@ module ApplicationHelper
|
|||
"#{t(:view_count)}: #{object.view_count}"
|
||||
end
|
||||
|
||||
def display_visitors(options={})
|
||||
Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
||||
end
|
||||
# def display_visitors(options={})
|
||||
# # Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
||||
# impressions = Impression.where(options).and(:referrer.ne => nil)
|
||||
# impressions.map{|i| i[:session_hash]}.uniq.count
|
||||
# end
|
||||
|
||||
def display_visitors_today
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
|
||||
end
|
||||
# def display_visitors_today
|
||||
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
|
||||
# end
|
||||
|
||||
def display_visitors_this_week
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week})
|
||||
end
|
||||
# def display_visitors_this_week
|
||||
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week})
|
||||
# end
|
||||
|
||||
def display_visitors_this_month
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month})
|
||||
end
|
||||
# def display_visitors_this_month
|
||||
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month})
|
||||
# end
|
||||
|
||||
def display_visitors_this_year
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
|
||||
end
|
||||
# def display_visitors_this_year
|
||||
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
|
||||
# end
|
||||
|
||||
def display_date_time(object)
|
||||
object.strftime("%Y-%m-%d %H:%M")
|
||||
|
|
@ -311,4 +314,8 @@ module ApplicationHelper
|
|||
link_to title, params.merge({direction: direction, sort: column, sort_options: column}), {:class => "#{css_class} sortable", :remote => options[:remote]}
|
||||
end
|
||||
|
||||
def convert_array_param(key, array)
|
||||
Array(array).collect{|t| "#{key}[]=#{t}"}.join("&")
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,6 +3,13 @@ module DefaultWidgetHelper
|
|||
I18n.t("#{@page_part.module_app.key}.default_widget.#{field}")
|
||||
end
|
||||
|
||||
def get_top_hot_class(row_data)
|
||||
class_attr = []
|
||||
class_attr << 'data_is_hot' if( row_data.is_hot? rescue false )
|
||||
class_attr << 'data_is_top' if( row_data.is_top? rescue false)
|
||||
return class_attr.join(" ")
|
||||
end
|
||||
|
||||
def link_to_field(row_data,field, switch, options=nil)
|
||||
method_ary = @page_part.module_app.widget_fields_link_method
|
||||
field = field.to_sym
|
||||
|
|
@ -77,4 +84,13 @@ module DefaultWidgetHelper
|
|||
content_tag(:span,get_display(row_data,field_setting),:class=>field_setting[:class])
|
||||
end
|
||||
end
|
||||
|
||||
def get_row_category(row_data)
|
||||
row_data.send("#{row_data.class.to_s.underscore}_category_id") rescue nil
|
||||
end
|
||||
|
||||
def get_row_tags(row_data)
|
||||
row_data.tagged_ids rescue nil
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -2,16 +2,24 @@ class BackupServer
|
|||
@queue = :high
|
||||
|
||||
def self.perform()
|
||||
#CronMail.time_check("Going to backup Orbit").deliver
|
||||
dbhost = Mongoid.config.database.connection.primary.join ':'
|
||||
dbname = Mongoid.config.database.name
|
||||
archive_db_list_path = OrbitSystemPreference::ArchiveDbListPath
|
||||
dbdirectory = "#{Rails.root}/tmp/#{dbname}-"+Time.now.strftime("%Y-%m-%d-%H-%M")
|
||||
%x[mongodump -h #{dbhost} -d #{dbname} -o #{dbdirectory} ]
|
||||
|
||||
%x[rm #{archive_db_list_path}]
|
||||
%x[ls #{Rails.root}/tmp/#{dbname}* | du -h --max-depth=1 --block-size=1M |sort -h >> #{archive_db_list_path}]
|
||||
Dir.foreach('tmp') do |item|
|
||||
date_str = item.to_s.gsub("#{dbname}-",'')
|
||||
next if not date_str.match(/\d{4}-\d{2}-\d{2}-\d{2}-\d{2}/)
|
||||
if Date.parse(date_str).to_time < Site.first.backup_keep_for_days.days.ago
|
||||
OrbitLogger.info "Deleting #{date_str}"
|
||||
%x[rm -rf tmp/#{item}]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
%x[rm -f #{archive_db_list_path}]
|
||||
%x[cd tmp ; ls -l |grep #{dbname} | awk '{print $8}'|xargs du -h --block-size=1M --max-depth=0 |sort -h >> #{archive_db_list_path}]
|
||||
OrbitLogger.info "DB backup done Path:#{dbdirectory}"
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,36 +1,21 @@
|
|||
class DashboardCounter < Resque::Plugins::RestrictionJob
|
||||
extend OrbitApp::Module::VisitorCounterEval
|
||||
|
||||
@queue = :high
|
||||
|
||||
def self.perform(*args)
|
||||
site = Site.first
|
||||
obj = new(*args)
|
||||
site.dashboard_counter[:visitors_this_week] = obj.display_visitors_this_week
|
||||
site.dashboard_counter[:visitors_this_month] = obj.display_visitors_this_month
|
||||
site.dashboard_counter[:visitors_this_year] = obj.display_visitors_this_year
|
||||
site.visitor_counters[:total] = display_visitors
|
||||
site.visitor_counters[:today] = display_visitors_today
|
||||
site.visitor_counters[:this_week] = display_visitors_this_week
|
||||
site.visitor_counters[:this_month] = display_visitors_this_month
|
||||
site.visitor_counters[:this_year] = display_visitors_this_year
|
||||
site.save
|
||||
OrbitLogger.info "DashboardCounter done #{site.dashboard_counter.to_s}"
|
||||
end
|
||||
OrbitLogger.info "DashboardCounter done #{site.visitor_counters.to_s}"
|
||||
|
||||
|
||||
def display_visitors(options={})
|
||||
impressions = Impression.where(options).and(:referrer.ne => nil)
|
||||
impressions.map{|i| i[:session_hash]}.uniq.count
|
||||
end
|
||||
|
||||
def display_visitors_today
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
|
||||
end
|
||||
|
||||
def display_visitors_this_week
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week})
|
||||
end
|
||||
|
||||
def display_visitors_this_month
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month})
|
||||
end
|
||||
|
||||
def display_visitors_this_year
|
||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
|
||||
#Notice this is mainly used at user dashbroad. however the code there is currentlly using realtime evaluation.
|
||||
#and the site model will need a field call dashboard_counter to complete this job.
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,7 +1,51 @@
|
|||
class DelayedImpressionist
|
||||
@queue = :low
|
||||
def self.perform(object)
|
||||
impressionist(object)
|
||||
true
|
||||
end
|
||||
class DelayedImpressionist
|
||||
def self.before_filter(*args)
|
||||
return
|
||||
end
|
||||
|
||||
include ImpressionistController::InstanceMethods
|
||||
@queue = :low
|
||||
|
||||
def initialize(request,controller_name,action_name,user,obj)
|
||||
@controller_name = controller_name
|
||||
@action_name = action_name
|
||||
@user = User.find user unless user.nil?
|
||||
@request = request
|
||||
end
|
||||
|
||||
def self.perform(*args)
|
||||
arg = args[0]
|
||||
@request= DelayImpressionistRequest.new
|
||||
@request.restore(arg["request"])
|
||||
obj = eval("#{arg["class"]}.find '#{arg['obj']['_id']}'")
|
||||
# imp = new(@request,arg["controller_name"],arg["action_name"],arg["user"],obj)
|
||||
new_impression = obj.impressions.build(:user_id=>arg["user"],:controller_name=>arg["controller_name"],:action_name=>arg["action_name"],:ip_address=>@request.remote_ip,:referrer=>@request.referer)
|
||||
@try = 1
|
||||
loop do
|
||||
result = new_impression.save rescue false
|
||||
break if (result || @try >= 10)
|
||||
@try = @try + 1
|
||||
puts "trying:#{@try}"
|
||||
end
|
||||
new_impression.save
|
||||
obj.update_attribute(:view_count,obj.impression_count)
|
||||
end
|
||||
|
||||
private
|
||||
def user
|
||||
@user
|
||||
end
|
||||
|
||||
def action_name
|
||||
@action_name
|
||||
end
|
||||
|
||||
def controller_name
|
||||
@controller_name
|
||||
end
|
||||
|
||||
def request
|
||||
@request
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
class EmailCron
|
||||
@queue = :mail
|
||||
|
||||
def self.perform
|
||||
|
||||
@datas = MailCron.where(:mail_sentdate.lte => Time.now)
|
||||
|
||||
@datas.each do |mail_data|
|
||||
|
||||
@mail_j = 0
|
||||
@read_mails = Array.new
|
||||
|
||||
@mails = mail_data.mail_to.split(",")
|
||||
|
||||
@mails.each do |send_mail|
|
||||
|
||||
@read_mails << send_mail
|
||||
|
||||
@mail_j += 1
|
||||
|
||||
if 0 == @mail_j % 30
|
||||
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||
@read_mails = Array.new
|
||||
|
||||
sleep 10
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if !@read_mails.join(',').blank?
|
||||
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||
@read_mails = Array.new
|
||||
|
||||
sleep 10
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -3,7 +3,7 @@ class UpdateTagCloud
|
|||
|
||||
def self.perform()
|
||||
Tag.all.each do |tag|
|
||||
tag.update_attribute(:cloud_view_count, tag.impressionist_count(:created_at.gte => 14.days.ago, :created_at.lte => Time.now))
|
||||
tag.update_attribute(:cloud_view_count, tag.get_impressionist)
|
||||
end
|
||||
OrbitLogger.info "UpdateTagCloud Done"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,81 @@
|
|||
class MailCronMailer < ActionMailer::Base
|
||||
default :from => "orbit_test@rulingcom.com"
|
||||
|
||||
def get_settings
|
||||
|
||||
@site = Site.first
|
||||
|
||||
@smtp_settings = {
|
||||
:address => @site['site_settings']['address'],
|
||||
:port => @site['site_settings']['port'],
|
||||
:domain => @site['site_settings']['domain'],
|
||||
:authentication => @site['site_settings']['authentication'],
|
||||
# :user_name => @site['site_settings']['user_name'],
|
||||
# :password => @site['site_settings']['password'],
|
||||
:tls => (@site['site_settings']['tls'] == '0' ? false : true ) ,
|
||||
:enable_starttls_auto => (@site['site_settings']['enable_starttls_auto'] == '0' ? false : true )
|
||||
}
|
||||
|
||||
if !@site['site_settings']['user_name'].blank?
|
||||
@smtp_settings[:user_name] = @site['site_settings']['user_name']
|
||||
end
|
||||
|
||||
if !@site['site_settings']['password'].blank?
|
||||
@smtp_settings[:password] = @site['site_settings']['password']
|
||||
end
|
||||
|
||||
|
||||
ActionMailer::Base.smtp_settings = @smtp_settings
|
||||
|
||||
end
|
||||
|
||||
|
||||
def cron_mail( data_id, group_mail )
|
||||
|
||||
get_settings
|
||||
|
||||
@data = MailCron.find(data_id)
|
||||
|
||||
if @data
|
||||
|
||||
@user = User.find(@data.create_user_id)
|
||||
|
||||
if !@data.mail_cron_files.blank?
|
||||
@data.mail_cron_files.each_with_index do |mail_cron_file, i|
|
||||
file_type = File.extname(mail_cron_file.file.to_s)
|
||||
file_content = Mongo::GridFileSystem.new(Mongoid.database).open(mail_cron_file.file.url.gsub("/gridfs/", "").force_encoding("UTF-8"), 'r')
|
||||
attachments["#{mail_cron_file.title}#{file_type}"] = file_content.read
|
||||
end
|
||||
end
|
||||
|
||||
if !@data.mail_content["text"].blank?
|
||||
mail( :from => @data.mail_from, :reply_to => @data.mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
|
||||
format.html { render :text => @data.mail_content["text"] }
|
||||
end
|
||||
elsif !@data.mail_content["template"].blank?
|
||||
mail( :from => @data.mail_from, :reply_to => @data.mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
|
||||
format.html { render :template => @data.mail_content["template"], :collection => @data.mail_content }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@mail_cron_log = {
|
||||
:mail_subject => @data.mail_subject,
|
||||
:mail_to => group_mail,
|
||||
:mail_user => @user.name,
|
||||
:mailer_count => group_mail.split(",").size,
|
||||
:mail_from_app => @data.mail_from_app
|
||||
}
|
||||
|
||||
@mail_cron_log = MailCronLog.new(@mail_cron_log)
|
||||
|
||||
|
||||
@mail_cron_log.save
|
||||
|
||||
@data.destroy
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -4,8 +4,5 @@ class CssDefault < Stylesheet
|
|||
# belongs_to :desktop_widget
|
||||
|
||||
belongs_to :css, polymorphic: true
|
||||
def content
|
||||
self.file.read.force_encoding("UTF-8") rescue ''
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ class Desktop
|
|||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :theme
|
||||
field :theme, default: "4f8d3f533b67fcd05f08635a"
|
||||
field :customtheme
|
||||
field :wallpaper
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
class DesktopApp
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :name
|
||||
field :author
|
||||
field :shape
|
||||
field :version, :type => String
|
||||
field :text_color, :type => String, default: ""
|
||||
field :bg_color, :type => String, default: ""
|
||||
field :icon, default: "icon.png"
|
||||
field :url
|
||||
|
||||
has_many :images, as: :imgs, :autosave => true, :dependent => :destroy
|
||||
has_and_belongs_to_many :desktops, :autosave => true
|
||||
has_many :tiles, :autosave => true
|
||||
|
||||
accepts_nested_attributes_for :images, :allow_destroy => true
|
||||
|
||||
end
|
||||
|
|
@ -1,63 +1,9 @@
|
|||
class DesktopTheme
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :name
|
||||
field :author
|
||||
field :background
|
||||
field :tilecolor ,type: Array, default: ["thmc1","thmc2"]
|
||||
ICONS = {
|
||||
"home"=>"d_home.png",
|
||||
"app_manager"=>"d_app_manager.png",
|
||||
"sections"=>"d_sections.png",
|
||||
"settings"=>"d_settings.png",
|
||||
"publication"=>"d_publication.png",
|
||||
"journal_p"=>"d_journal_p.png",
|
||||
"conference_p"=>"d_conference_p.png",
|
||||
"books"=>"d_books.png",
|
||||
"research"=>"d_research.png",
|
||||
"research_d"=>"d_research_d.png",
|
||||
"research_p"=>"d_research_p.png",
|
||||
"patents"=>"d_patents.png",
|
||||
"labs"=>"d_labs.png",
|
||||
"experience"=>"d_experience.png",
|
||||
"working"=>"d_working.png",
|
||||
"education"=>"d_education.png",
|
||||
"honors"=>"d_honors.png",
|
||||
"activities"=>"d_activities.png",
|
||||
"clubs"=>"d_clubs.png",
|
||||
"landt"=>"d_landt.png",
|
||||
"courses"=>"d_courses.png",
|
||||
"homework"=>"d_homework.png",
|
||||
"certification"=>"d_certification.png",
|
||||
"personal"=>"d_personal.png",
|
||||
"mypage"=>"d_mypage.png",
|
||||
"blog"=>"d_blog.png",
|
||||
"album"=>"d_album.png",
|
||||
"calendar"=>"d_calendar.png",
|
||||
"files"=>"d_files.png",
|
||||
"orbit"=>"d_orbit.png",
|
||||
"connection"=>"d_connection.png",
|
||||
"appstore"=>"d_appstore.png"
|
||||
}
|
||||
|
||||
has_one :css_default, as: :css, :autosave => true, :dependent => :destroy
|
||||
has_many :images, as: :imgs, :autosave => true, :dependent => :destroy
|
||||
has_and_belongs_to_many :desktops, :autosave => true
|
||||
|
||||
accepts_nested_attributes_for :images, :allow_destroy => true
|
||||
|
||||
# after_save :parse_css_for_images
|
||||
|
||||
# belongs_to :desktop
|
||||
|
||||
|
||||
# protected
|
||||
|
||||
# def parse_css_for_images
|
||||
# self.css_default.parse_urls
|
||||
# end
|
||||
|
||||
field :name
|
||||
field :author
|
||||
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,12 +5,9 @@ class DesktopWidget
|
|||
|
||||
field :name
|
||||
field :author
|
||||
field :shape, default: "w1 h1"
|
||||
field :fullsize, :type => Boolean, default: false
|
||||
field :shape
|
||||
field :fullsize, :type => Boolean
|
||||
field :version, :type => String
|
||||
field :text_color, :type => String, default: ""
|
||||
field :bg_color, :type => String, default: ""
|
||||
field :icon, default: "icon.png"
|
||||
|
||||
has_one :css_default, as: :css, :autosave => true, :dependent => :destroy
|
||||
has_one :widget_layout, :autosave => true, :dependent => :destroy
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
class Facebook
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :fb_identifier
|
||||
field :connected, type: Boolean
|
||||
|
||||
belongs_to :user
|
||||
end
|
||||
|
|
@ -7,11 +7,11 @@ class Group
|
|||
before_create :initialize_tile
|
||||
|
||||
def initialize_tile
|
||||
# self.tiles.build(data_category: "app", data_content: "quotes", position: 5, shape: "w1 h1", title: "Quotes")
|
||||
# self.tiles.build(data_category: "app", data_content: "dailyenglish", position: 6, shape: "w1 h1", title: "Daily English Word")
|
||||
self.tiles.build(data_category: "app", data_content: "quotes", position: 5, shape: "w1 h1", title: "Quotes")
|
||||
self.tiles.build(data_category: "app", data_content: "dailyenglish", position: 6, shape: "w1 h1", title: "Daily English Word")
|
||||
widgets = self.section.desktop.desktop_widgets.collect{|widget| widget.id}
|
||||
widgets.each_with_index do |w,i|
|
||||
self.tiles.build(data_category: "widget", position: i+1,desktop_widget_id: w)
|
||||
for i in 0..3
|
||||
self.tiles.build(data_category: "widget", position: i+1,desktop_widget_id: widgets[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -13,6 +13,5 @@ class Tile
|
|||
|
||||
belongs_to :group
|
||||
belongs_to :desktop_widget
|
||||
belongs_to :desktop_app
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
class MailCron
|
||||
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
|
||||
field :mail_from_app
|
||||
field :mail_from
|
||||
field :mail_to
|
||||
field :mail_reply_to
|
||||
field :mail_subject
|
||||
field :mail_content, :type => Hash
|
||||
field :mail_sentdate , :type => DateTime
|
||||
|
||||
field :create_user_id
|
||||
field :update_user_id
|
||||
|
||||
has_many :mail_cron_files, :autosave => true, :dependent => :destroy
|
||||
|
||||
accepts_nested_attributes_for :mail_cron_files, :allow_destroy => true
|
||||
|
||||
after_save :save_mail_cron_files
|
||||
|
||||
|
||||
def save_mail_cron_files
|
||||
self.mail_cron_files.each do |t|
|
||||
if t.should_destroy
|
||||
t.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.send_mail_now(mail_cron_id)
|
||||
|
||||
mail_data = MailCron.find(mail_cron_id)
|
||||
|
||||
if !mail_data.blank?
|
||||
|
||||
@mail_j = 0
|
||||
@read_mails = Array.new
|
||||
|
||||
@mails = mail_data.mail_to.split(",")
|
||||
|
||||
@mails.each do |send_mail|
|
||||
|
||||
@read_mails << send_mail
|
||||
|
||||
@mail_j += 1
|
||||
|
||||
if 0 == @mail_j % 30
|
||||
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||
@read_mails = Array.new
|
||||
|
||||
sleep 10
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if !@read_mails.join(',').blank?
|
||||
MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
|
||||
@read_mails = Array.new
|
||||
|
||||
sleep 10
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
class MailCronFile
|
||||
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
mount_uploader :file, AssetUploader
|
||||
|
||||
field :should_destroy, :type => Boolean
|
||||
field :title
|
||||
|
||||
belongs_to :mail_cron
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
class MailCronLog
|
||||
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
|
||||
field :mail_subject
|
||||
field :mail_to
|
||||
field :mail_user
|
||||
field :mailer_count
|
||||
field :mail_from_app
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -140,7 +140,7 @@ class ModuleApp
|
|||
def sorted_tags_for_cloud
|
||||
temp_tags = {}
|
||||
self.tags.each{ |tag|
|
||||
temp_tags.merge!({tag => Tag.get_impressionist(tag)})
|
||||
temp_tags.merge!({tag => tag.cloud_view_count})
|
||||
}
|
||||
if !temp_tags.blank?
|
||||
sorted_tags = temp_tags.sort{|a,b| a[1]<=>b[1]}.reverse
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ class Page < Item
|
|||
include Impressionist::Impressionable
|
||||
include ParserFrontEnd
|
||||
|
||||
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||
is_impressionable #:counter_cache => { :column_name => :view_count }
|
||||
|
||||
field :content, localize: true
|
||||
field :app_frontend_url
|
||||
|
|
|
|||
|
|
@ -51,8 +51,9 @@ class PrototypeAuth
|
|||
end
|
||||
|
||||
def remove_operation(item,obj)
|
||||
if (self.send item).include? obj
|
||||
(self.send item).delete obj
|
||||
item = (item.to_s.singularize == item.to_s) ? "#{item.to_s}_id" : "#{item.to_s.singularize}_ids"
|
||||
if (self.send item).include? obj.id
|
||||
(self.send item).delete obj.id
|
||||
self.save!
|
||||
else
|
||||
false #should put error message for user not existed in list
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ class Site
|
|||
field :title_always_on, :type => Boolean, :default => false
|
||||
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
||||
field :mail_settings, :type => Hash
|
||||
field :visitor_counters,:type=> Hash,:default=>{:total=>0,:today=>0,:this_week=>0,:this_month=>0,:this_year=>0}
|
||||
|
||||
field :disk_space, :type => String
|
||||
field :system_package_info, :type => Hash,:default=>{}
|
||||
|
|
@ -28,10 +29,11 @@ class Site
|
|||
mount_uploader :default_image, ImageUploader
|
||||
|
||||
field :search,:type => Hash
|
||||
|
||||
field :resque_namespace,:type => String, :default=>APP_CONFIG['orbit']
|
||||
field :title, localize: true
|
||||
field :footer, localize: true
|
||||
field :sub_menu, localize: true
|
||||
field :backup_keep_for_days,:type=>Integer,:default=> APP_CONFIG['backup_keep_for_days']
|
||||
|
||||
field :mobile_on, :type => Boolean, :default => false
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class Tag
|
|||
include Mongoid::Timestamps
|
||||
include Impressionist::Impressionable
|
||||
|
||||
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||
is_impressionable #:counter_cache => { :column_name => :view_count }
|
||||
|
||||
field :name, localize: true
|
||||
field :view_count, :type => Integer, :default => 0
|
||||
|
|
@ -17,30 +17,6 @@ class Tag
|
|||
belongs_to :module_tag, polymorphic: true
|
||||
has_many :taggings, dependent: :destroy
|
||||
|
||||
#field :cloud_amper,:type: Integer,:default=> 0
|
||||
|
||||
# def self.sorted_for_cloud
|
||||
# tags = {}
|
||||
# self.all.each{ |tag|
|
||||
# tags.merge!({tag => self.get_impressionist(tag)})
|
||||
# }
|
||||
# if !tags.blank?
|
||||
# sorted_tags = tags.sort{|a,b| a[1]<=>b[1]}.reverse
|
||||
# sorted_tags[0][1] = :hot1
|
||||
# offset = (sorted_tags.size - 1) / 3
|
||||
# i = 1
|
||||
# class_i = 2
|
||||
# sorted_tags[1..-1].collect!{ |x|
|
||||
# x[1] = "hot#{class_i}"
|
||||
# i == offset ? i = 1 : i += 1 if class_i < 4
|
||||
# class_i += 1 if i == offset && class_i < 4
|
||||
# }
|
||||
# sorted_tags
|
||||
# else
|
||||
# []
|
||||
# end
|
||||
# end
|
||||
|
||||
protected
|
||||
|
||||
def self.get_impressionist(item_tag = self)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ class User
|
|||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
|
||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable #, :timeoutable
|
||||
|
||||
mount_uploader :avatar, AvatarUploader
|
||||
|
||||
|
|
@ -26,7 +26,6 @@ class User
|
|||
|
||||
has_many :managing_apps,:class_name => "AppManager", :dependent => :destroy
|
||||
has_one :desktop, :autosave => true, :dependent => :destroy
|
||||
has_one :facebook, :autosave => true, :dependent => :destroy
|
||||
has_many :other_accounts, :autosave => true, :dependent => :destroy
|
||||
# has_many :journals, :autosave => true, :dependent => :destroy
|
||||
# has_many :papers, :autosave => true, :dependent => :destroy
|
||||
|
|
@ -43,7 +42,6 @@ class User
|
|||
|
||||
before_create :initialize_desktop
|
||||
before_save :rebuild_status_record
|
||||
before_save :save_roles
|
||||
scope :remote_account, where(:nccu_id.ne => nil)
|
||||
scope :not_guest_user, all_of(:name.ne => "guest")
|
||||
|
||||
|
|
@ -90,9 +88,9 @@ class User
|
|||
var[:id].each do |id,val|
|
||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||
if (val=="true")
|
||||
self.roles = self.roles.reject{|t| t.id.to_s==id}
|
||||
self.role_ids.reject!{|t| t.to_s == id}
|
||||
elsif(val=="false")
|
||||
self.roles << Role.find(id)
|
||||
self.role_ids += Array(id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -107,9 +105,9 @@ class User
|
|||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||
|
||||
if ( self.roles.include?(@roid) == false or val=="true")
|
||||
self.sub_roles = self.sub_roles.reject{|t| t.id.to_s==id}
|
||||
self.sub_role_ids.reject!{|t| t.to_s == id}
|
||||
elsif(val=="false")
|
||||
self.sub_roles << SubRole.find(id)
|
||||
self.sub_role_ids += Array(id)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -274,10 +272,6 @@ class User
|
|||
end
|
||||
|
||||
protected
|
||||
def save_roles
|
||||
# self.roles = self.sub_roles.collect{|t| t.role}.uniq
|
||||
self.roles = self.roles.uniq
|
||||
end
|
||||
|
||||
def rebuild_status_record
|
||||
self.status_record = {}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,5 @@
|
|||
</table>
|
||||
|
||||
<div class="form-actions form-fixed pagination-right">
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:add), new_admin_design_path, :class => 'btn btn-primary pull-right' %>
|
||||
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:upload), upload_package_admin_designs_path, :class => 'btn btn-primary pull-right' %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<div class="filter-clear">
|
||||
<%= link_to content_tag(:i, nil, :class => 'icons-cycle') + t(:clear), admin_mail_crons_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn btn-small js_history" %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<div id="filter" class="subnav">
|
||||
<div class="filters">
|
||||
<div id="sort_headers" class="table-label">
|
||||
<%= render 'sort_headers' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "sort_header" %>
|
||||
<% end %>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<tr id="<%= dom_id mail_cron_log %>" class="with_action">
|
||||
<td class="span1">
|
||||
<% if is_manager? %>
|
||||
<%= check_box_tag 'to_delete[]', mail_cron_log.id, false, :class => "checkbox_in_list" %>
|
||||
<% end -%>
|
||||
</td>
|
||||
<td class="span1-2">
|
||||
<%= mail_cron_log.mail_subject %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills hide">
|
||||
<%if at_least_module_manager %>
|
||||
<li><%= link_to t(:delete_), admin_mail_cron_log_path(mail_cron_log), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||
<% end -%>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron_log.mail_to.gsub(/,/, "<br />").html_safe %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron_log.mail_user %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron_log.mail_from_app %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= display_date_time(mail_cron_log.created_at) %>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<%= render_sort_bar(true, delete_admin_mail_cron_logs_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
|
||||
['subject', 'mail_subject','span2', :subject] ,
|
||||
['mail_to', 'mail_to','span2', :mail_to] ,
|
||||
['mail_user', 'mail_user','span2', :mail_user] ,
|
||||
['mail_from_app', 'mail_from_app','span2', :mail_from_app] ,
|
||||
['sentdate', 'created_at','span2', :sentdate] ).html_safe %>
|
||||
|
|
@ -0,0 +1 @@
|
|||
$("#<%= dom_id @mail_cron_log %>").remove();
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<% content_for :side_bar do %>
|
||||
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||
<% end %>
|
||||
|
||||
<%= render 'filter' %>
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span1"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody_mail_cron_logs" class="sort-holder">
|
||||
<%= render :partial => "mail_cron_log",:collection=> @mail_cron_logs%>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="form-actions form-fixed pagination-right">
|
||||
<div id="web_link_pagination" class="paginationFixed">
|
||||
<%= paginate @mail_cron_logs, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
$("#delete_all").attr("action", "<%= delete_admin_mail_cron_logs_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>");
|
||||
$("#sort_headers").html("<%= j render 'sort_headers' %>");
|
||||
$("#tbody_mail_cron_logs").html("<%= j render :partial => 'mail_cron_log', :collection => @mail_cron_logs %>");
|
||||
$("#mail_cron_log_pagination").html("<%= j paginate @mail_cron_logs, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<div class="filter-clear">
|
||||
<%= link_to content_tag(:i, nil, :class => 'icons-cycle') + t(:clear), admin_mail_crons_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn btn-small js_history" %>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<div id="filter" class="subnav">
|
||||
<div class="filters">
|
||||
<div id="sort_headers" class="table-label">
|
||||
<%= render 'sort_headers' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "sort_header" %>
|
||||
<% end %>
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
<div id= "poststuff">
|
||||
<% # encoding: utf-8 %>
|
||||
|
||||
<%= f.error_messages %>
|
||||
|
||||
<!--Widget start-->
|
||||
|
||||
<div id="sub-wiget">
|
||||
|
||||
<div id="widget-date" class="widget-box widget-size-300">
|
||||
<h3 class="widget-title"><i class="icons-calendar"></i><%= t(:date_) %></h3>
|
||||
<div class="widget-content clear">
|
||||
<div class="control-group">
|
||||
<%= f.datetime_picker :mail_sentdate, :picker_type => 'separated', :label => t(:start) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--Wiget End-->
|
||||
<!--Post Start-->
|
||||
|
||||
<div id="post-body">
|
||||
<div id="post-body-content" class="clear">
|
||||
|
||||
<%= f.label :mail_subject ,t(:mail_subject)%>
|
||||
<%= f.text_field :mail_subject %>
|
||||
|
||||
<%= f.label :mail_from ,t(:mail_from)%>
|
||||
<%= f.text_field :mail_from %>
|
||||
|
||||
<%= f.label :mail_reply_to ,t(:mail_reply_to)%>
|
||||
<%= f.text_field :mail_reply_to %>
|
||||
|
||||
<%= f.label :mail_to ,t(:mail_to)%>
|
||||
<%= f.text_field :mail_to %>
|
||||
|
||||
<%= f.label :mail_content ,t(:mail_content)%>
|
||||
<%= f.text_area :mail_content, :class=>"span12", :cols=>"25", :rows=>"10" %>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
|
||||
<div id='plugin_files' class="plugin_files_block">
|
||||
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>File</th>
|
||||
<th>File Name</th>
|
||||
<th class="span1"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td style="text-align:center" colspan="3">
|
||||
<div id='add_plugin_file' class="info_input plugin_files_block">
|
||||
<%= hidden_field_tag 'plugin_file_field_count', @mail_cron.mail_cron_files.count %>
|
||||
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> ADD/新增</span></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tfoot>
|
||||
<tbody>
|
||||
|
||||
<% @mail_cron.mail_cron_files.each_with_index do |mail_cron_file, i| %>
|
||||
<%= f.fields_for :mail_cron_files, mail_cron_file do |f| %>
|
||||
<%= render :partial => 'form_file', :object => mail_cron_file, :locals => {:f => f, :i => i} %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--Post End-->
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-actions">
|
||||
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
|
||||
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "archive_plugin_form" %>
|
||||
<script>
|
||||
$('#add_plugin_file a.add').live('click', function(){
|
||||
var new_id = $(this).prev().attr('value');
|
||||
var old_id = new RegExp("new_add_plugin_files", "g");
|
||||
$(this).prev().attr('value', parseInt(new_id) + 1);
|
||||
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_file', f, :mail_cron_files) %>").replace(old_id, new_id));
|
||||
});
|
||||
|
||||
$('.add_plugin_files_block a.delete').live('click', function(){
|
||||
$(this).parents('.list_item').remove();
|
||||
});
|
||||
|
||||
$('.action a.remove_existing_record').live('click', function(){
|
||||
$(this).next('.should_destroy').attr('value', 1);
|
||||
$("tr#add_plugin_file_" + $(this).prev().attr('value')).hide();
|
||||
});
|
||||
|
||||
</script>
|
||||
<% end %>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<% # encoding: utf-8 %>
|
||||
|
||||
<tr id="<%= "plugin_file_#{form_file.id}" if !form_file.new_record? %>" class='list_item'>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<%= f.file_field :file %>
|
||||
<%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<div class="tab-content">
|
||||
|
||||
<%= f.text_field :title %>
|
||||
|
||||
</div>
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<span class="action">
|
||||
<% if form_file.new_record? %>
|
||||
<a class="delete"><i class="icon-remove"></i></a>
|
||||
<% else %>
|
||||
<%= f.hidden_field :id %>
|
||||
<a class="remove_existing_record"><i class="icon-remove"></i></a>
|
||||
<%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
|
||||
<% end %>
|
||||
</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<tr id="<%= dom_id mail_cron %>" class="with_action">
|
||||
<td class="span1">
|
||||
<% if is_manager? %>
|
||||
<%= check_box_tag 'to_delete[]', mail_cron.id, false, :class => "checkbox_in_list" %>
|
||||
<% end -%>
|
||||
</td>
|
||||
<td class="span1-2">
|
||||
<%= mail_cron.mail_subject %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills hide">
|
||||
<%if at_least_module_manager %>
|
||||
<li><%= link_to t(:delete_), admin_mail_cron_path(mail_cron), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||
<% end -%>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron.mail_to.gsub(/,/, "<br />").html_safe %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= mail_cron.mail_from_app %>
|
||||
</td>
|
||||
<td class="span2">
|
||||
<%= display_date_time(mail_cron.mail_sentdate) %>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<%= render_sort_bar(true, delete_admin_mail_crons_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
|
||||
['subject', 'mail_subject','span2', :mail_subject] ,
|
||||
['mail_to', 'mail_to','span2', :mail_to] ,
|
||||
['mail_from_app', 'mail_from_app','span2', :mail_from_app] ,
|
||||
['sentdate', 'mail_sentdate','span2', :mail_sentdate] ).html_safe %>
|
||||
|
|
@ -0,0 +1 @@
|
|||
$("#<%= dom_id @mail_cron %>").remove();
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<% content_for :side_bar do %>
|
||||
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||
<% end %>
|
||||
|
||||
<h1><%= t('mail_cron.editing_mail_cron') %></h1>
|
||||
|
||||
<%= form_for @mail_cron, :url => admin_mail_cron_path(@mail_cron), :html => {:class => 'clear'} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<% content_for :side_bar do %>
|
||||
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||
<% end %>
|
||||
|
||||
<%= render 'filter' %>
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="span1"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
<th class="span2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tbody_mail_crons" class="sort-holder">
|
||||
<%= render :partial => "mail_cron",:collection=> @mail_crons%>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="form-actions form-fixed pagination-right">
|
||||
<div id="web_link_pagination" class="paginationFixed">
|
||||
<%= paginate @mail_crons, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
$("#delete_all").attr("action", "<%= delete_admin_mail_crons_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>");
|
||||
$("#sort_headers").html("<%= j render 'sort_headers' %>");
|
||||
$("#tbody_mail_crons").html("<%= j render :partial => 'mail_cron', :collection => @mail_crons %>");
|
||||
$("#mail_cron_pagination").html("<%= j paginate @mail_crons, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
|
||||
<% content_for :side_bar do %>
|
||||
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||
<% end %>
|
||||
|
||||
<div id="poststuff">
|
||||
<h1><%= t('mail_cron.new_mail_cron') %></h1>
|
||||
<%= form_for @mail_cron, :url => admin_mail_crons_path, :html => {:class => 'clear'} do |f| %>
|
||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
|
@ -9,6 +9,8 @@
|
|||
<%#= content_tag :li, link_to(t(:theme), admin_site_ui_theme_path(@site)), :class => active_for_action('sites', 'ui_theme') %>
|
||||
<%= content_tag :li, link_to(t('sitemap'), admin_site_sitemap_path(@site)), :class => active_for_action('sites', 'sitemap') %>
|
||||
<%= content_tag :li, link_to(t('user_actions'), admin_user_actions_path), :class => active_for_action('user_actions', 'index') %>
|
||||
<%= content_tag :li, link_to(t('mail.mail_cron'), admin_mail_crons_path), :class => active_for_action('mail_cron', 'index') %>
|
||||
<%= content_tag :li, link_to(t('mail.mail_cron_log'), admin_mail_cron_logs_path), :class => active_for_action('mail_cron_log', 'index') %>
|
||||
<% end -%>
|
||||
|
||||
<% end -%>
|
||||
|
|
|
|||
|
|
@ -1,19 +1,22 @@
|
|||
<%= content_tag :div,:class=>@tag_class do%>
|
||||
<%= content_tag :div, class: @tag_class do %>
|
||||
<div class="default_widget_type_A">
|
||||
<table class="default_widget_tb" border="0" cellpadding="0" cellspacing="0" >
|
||||
<thead>
|
||||
<tr>
|
||||
<% @frontend_field_names.each_with_index do |field,index|%>
|
||||
<%= content_tag(:th,content_tag(:span,get_field_header(field),:class=>@frontend_classes[index]))unless field.blank?%>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<% @data.each do |row_data| %>
|
||||
<thead>
|
||||
<tr>
|
||||
<% @frontend_field_names.each_with_index do |field,index|%>
|
||||
<%= content_tag(:td,content_tag(:span,link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s}),:class=>@frontend_classes[index]))unless field.blank?%>
|
||||
<% @frontend_field_names.each_with_index do |field, index| %>
|
||||
<%= content_tag(:th, content_tag(:span, get_field_header(field), class: @frontend_classes[index])) unless field.blank? %>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @data.each do |row_data| %>
|
||||
<tr class="<%= get_top_hot_class(row_data) %>">
|
||||
<% @frontend_field_names.each_with_index do |field, index|%>
|
||||
<%= content_tag(:td, content_tag(:span, link_to_field(row_data, field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index])) unless field.blank? %>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<%= content_tag :div,:class=>@tag_class do%>
|
||||
<%= content_tag :div, class: @tag_class do %>
|
||||
<ul class="default_widget_list">
|
||||
<% @data.each do |row_data| %>
|
||||
<%= content_tag(:li) do %>
|
||||
<%= content_tag(:li, class: get_top_hot_class(row_data)) do %>
|
||||
<div class="img app-pic">
|
||||
<%= image_tag row_data.send(@widget_image_field)%>
|
||||
<%= image_tag row_data.send(@widget_image_field) %>
|
||||
</div>
|
||||
<div class="wrap">
|
||||
<% @frontend_field_names.each_with_index do |field,index|%>
|
||||
<%= content_tag(:span,link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s}),:class=>@frontend_classes[index]) unless field.blank?%>
|
||||
<% @frontend_field_names.each_with_index do |field, index| %>
|
||||
<%= content_tag(:span, link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index]) unless field.blank? %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<%= content_tag :div,:class=>@tag_class do%>
|
||||
<%= content_tag :div, class: @tag_class do %>
|
||||
<div class="img app-pic">
|
||||
<%= image_tag @data.first.send(@widget_image_field)%>
|
||||
<%= image_tag @data.first.send(@widget_image_field) %>
|
||||
</div>
|
||||
<ul class="default_widget_list">
|
||||
<% @data.each do |row_data| %>
|
||||
<%= content_tag(:li) do %>
|
||||
<% @frontend_field_names.each_with_index do |field,index|%>
|
||||
<%= content_tag(:span, link_to_field(row_data,field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s}),:class=>@frontend_classes[index]) unless field.blank?%>
|
||||
<%= content_tag(:li, class: get_top_hot_class(row_data)) do %>
|
||||
<% @frontend_field_names.each_with_index do |field, index|%>
|
||||
<%= content_tag(:span, link_to_field(row_data, field, @frontend_sat_to_links[index], {orig_page: @page_id.to_s, category_id: get_row_category(row_data), tag_id: get_row_tags(row_data)}), class: @frontend_classes[index]) unless field.blank? %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@
|
|||
</div>
|
||||
</div>
|
||||
<div id="holder">
|
||||
<div id="group_wrapper" class="overview" content-layout="simple"></div>
|
||||
<div id="group_wrapper" class="overview" content-layout="simple">
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -5,55 +5,26 @@
|
|||
<a href="" class="hfn w1 hh1 hp"><span class="tile thmc1 op06"></span><span class="thmtxt">Date</span></a>
|
||||
<a href="ascending" class="hfn w1 hh1 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 hh1 hp thmc3">
|
||||
<input type="text" class="ini_input form" value="Search" maxlength="30" id="searchbox" />
|
||||
<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" style="min-width:120px;">
|
||||
|
||||
</div>
|
||||
<div id="holder">
|
||||
<div id="group_wrapper" class="overview" content-layout="simple">
|
||||
<div id="app_info" class="admbg vp hp s_column">
|
||||
<div class="app_info_header s_grid_row hp">
|
||||
<div class="s_grid s_grid_3">
|
||||
<img class="app_info_icon" src="/assets/icons/wikibooks.png" alt="">
|
||||
</div>
|
||||
<div class="s_grid s_grid_9 valign">
|
||||
<h2 class="app_info_name"></h2>
|
||||
<a href="" class="panel_close icon-remove"></a>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="app_info_list">
|
||||
<li class="s_grid_row">
|
||||
<label class="s_grid s_grid_3">Activation</label>
|
||||
<div info="app_section_activation" class="s_grid s_grid_9"></div>
|
||||
</li>
|
||||
<li class="s_grid_row">
|
||||
<label class="s_grid s_grid_3">Description</label>
|
||||
<div class="s_grid s_grid_9">
|
||||
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||
</div>
|
||||
</li>
|
||||
<li class="s_grid_row">
|
||||
<label class="s_grid s_grid_3">Version</label>
|
||||
<div class="s_grid s_grid_9" info="app_version"></div>
|
||||
</li>
|
||||
<li class="s_grid_row">
|
||||
<label class="s_grid s_grid_3">Last Update</label>
|
||||
<div class="s_grid s_grid_9" info="app_last_update"></div>
|
||||
</li>
|
||||
<li class="s_grid_row">
|
||||
<label class="s_grid s_grid_3">Author</label>
|
||||
<div class="s_grid s_grid_9" info="app_author"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="s_action">
|
||||
<a href="" id="" class="setting_btn admbg2 admtxt w1 hh1 hp" onclick="return false;">Remove</a>
|
||||
<a href="" id="" class="setting_btn thmc1 thmtxt w1 hh1 hp" onclick="return false;">Setting</a>
|
||||
</div>
|
||||
|
||||
<div class="group g_sep op03" id='seperator' style="height: 516px;display:none;"></div>
|
||||
<div class="group_search" id="app_list">
|
||||
<!--<div class="element w1 h1 hp vp thmc2" data-category="desktop">
|
||||
<span class="tile thmc2"></span>
|
||||
<a href="" class="appicon"><img src="" alt=""></a>
|
||||
<h1 class="appname thmtxt">O-Music</h1>
|
||||
</div>-->
|
||||
</div>
|
||||
<div class="search_result s_column"></div>
|
||||
<div id="app_list" class="s_column"></div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@
|
|||
<div class="dtitle w2 hh2 hp"><span class="thmtxth">Appname</span></div>
|
||||
<span class="icon-remove hh2 hp thmtxt"></span>
|
||||
</div>
|
||||
<div id="holder" class="clear">
|
||||
<div id="holder">
|
||||
<!-- app content -->
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,22 +1,26 @@
|
|||
<div id="desktop">
|
||||
<div id="content">
|
||||
<div id="header" class="hh2">
|
||||
<div class="dtitle w2 hh2 hp sdm">
|
||||
<div class="thmtxth sdm_t" id="section_heading"></div>
|
||||
<div class="admbg sdm_o w2">
|
||||
<ul id="section_list">
|
||||
</ul>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div id="header" class="hh2">
|
||||
<div class="dtitle w2 hh2 hp sdm">
|
||||
<div class="thmtxth sdm_t" id="section_heading"></div>
|
||||
<div class="admbg sdm_o w2">
|
||||
<ul id="section_list">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="holder">
|
||||
<div class="tinycanvas">
|
||||
<div class="scrollbar sb_h"><div class="track"><div class="thumb thmc2"><div class="end"></div></div></div></div>
|
||||
<div class="viewport">
|
||||
<div id="group_wrapper" class="overview">
|
||||
</div>
|
||||
</div>
|
||||
<div id="holder">
|
||||
<div class="tinycanvas">
|
||||
<div class="scrollbar sb_h"><div class="track"><div class="thumb thmc2"><div class="end"></div></div></div></div>
|
||||
<div class="viewport">
|
||||
<div id="group_wrapper" class="overview">
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
|
@ -2,8 +2,9 @@
|
|||
<div id="rwidget" class="wh2 thmc4">
|
||||
<ul class="docklist">
|
||||
<li class="d_cate"><a callback-method='initializeDesktop' href="desktop/desktop" class="widget_fn wh2 hh2" id='home' onclick="return false;"><span class="widget_icon"><img src="" alt="Home" id="home_icon" width="30" height="30"/></span></a>
|
||||
<ul class="dock_child hh2 thmc4" style="width: 120px;">
|
||||
<li class="dock_item"><a callback-method='initializeAppManager' href="<%= desktop_app_manager_path %>" class="widget_fn wh2 hh2" id="d_app_manager" onclick="return false;"><span class="widget_icon"><img src="" alt="App Manager" id="app_manager_icon" width="30" height="30"/></span></a></li>
|
||||
<ul class="dock_child hh2 thmc4" style="width: 180px;">
|
||||
<li class="dock_item"><a callback-method='initializeAppSearch' href="<%= desktop_app_manager_path %>" class="widget_fn wh2 hh2" id="d_app_manager" onclick="return false;"><span class="widget_icon"><img src="" alt="App Manager" id="app_manager_icon" width="30" height="30"/></span></a></li>
|
||||
<li class="dock_item"><a callback-method='initializeSectionsManager' href="<%= desktop_allsections_path %>" class="widget_fn wh2 hh2" id="d_sections" custom-load="sections" onclick="return false;"><span class="widget_icon"><img src="" alt="All Sections" id="sections_icon" width="30" height="30"/></span></a></li>
|
||||
<li class="dock_item"><a callback-method='initializeSettings' href="<%= desktop_settings_path %>" custom-load="settings" class="widget_fn wh2 hh2" id="d_settings" onclick="return false;"><span class="widget_icon"><img src="" alt="Settings" id="settings_icon" width="30" height="30"/></span></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
@ -62,17 +63,23 @@
|
|||
</div>
|
||||
</div>
|
||||
<div id="container">
|
||||
|
||||
<div id='ajax_container'>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!--<div id="orbitbar"></div>-->
|
||||
<div id="minimizebar" class="admbg"></div>
|
||||
<div id="thmbackground"></div>
|
||||
|
||||
<img src="" id="thmbackground" />
|
||||
<div id="bgover" ></div>
|
||||
<div id="orbitnote"></div>
|
||||
<div id="orbitdiag">
|
||||
<div id="orbitnote" style="display:none;">
|
||||
<div class="note_holder">
|
||||
<div class="note_type"><img id='note_img' alt=""/></div>
|
||||
<div class="note_message">Check the Notifications section for more information.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="orbitdiag" style="display: none;">
|
||||
<div class="tile op07"></div>
|
||||
<div class="diag_holder">
|
||||
<div class="diag_holder_inner">
|
||||
|
|
@ -93,12 +100,7 @@
|
|||
orbitDesktop.prototype.currentUsername = "<%= @currentusername %>";
|
||||
//uselessfunction();
|
||||
var od = new orbitDesktop("#ajax_container");
|
||||
if($.browser.msie){
|
||||
if($.browser.version < 9){
|
||||
$.fx.off = true;
|
||||
o.notify("We turn off the animation (javascript) for you, but still you can turn it on",10);
|
||||
}
|
||||
}
|
||||
o.notify("Welcome "+o.currentUsername+"!!","alert",3);
|
||||
</script>
|
||||
|
||||
<%= javascript_include_tag "personal_journal" %>
|
||||
<%= javascript_include_tag "personal_conference" %>
|
||||
|
|
|
|||
|
|
@ -9,10 +9,10 @@
|
|||
<div id="panel_l" class="ph">
|
||||
<div class="s_menu sm_v" content-type="menu">
|
||||
<ul id='setting_left_nav'>
|
||||
<li><a href="" class="admtxt hh1 w2 hp" onclick='return false;'>Overview</a></li>
|
||||
<li><a href="" class="admtxt hh1 w2 hp" load="true" onclick='return false;'>Overview</a></li>
|
||||
<li><a href="<%= edit_user_registration_path %>" callback-method="account" custom-load="account" class="admtxt hh1 w2 hp" onclick='return false;'>Account</a></li>
|
||||
<li><a href="<%= desktop_sections_path %>" callback-method="sections" custom-load="sections" class="admtxt hh1 w2 hp" onclick='return false;'>Sections</a></li>
|
||||
<li><a href="<%= desktop_get_themes_path %>" load="true" callback-method="themes" class="admtxt hh1 w2 hp" onclick='return false;'>Theme</a></li>
|
||||
<li><a href="<%= desktop_themes_path %>" callback-method="themes" class="admtxt hh1 w2 hp" onclick='return false;'>Theme</a></li>
|
||||
<li><a href="<%= desktop_connections_path %>" callback-method="connection" class="admtxt hh1 w2 hp" onclick='return false;'>Connection</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
|
||||
<div id="connection_setting" class="overview vp" content-layout="simple">
|
||||
<a href="" onclick="window.open('<%= @url %>','login_window','height=250,width=400,titlebar=0,statusbar=0,location=0');return false;">Connect FaceBook</a>
|
||||
|
||||
<a href="/facebook/get_friends" ajax-remote="get" >Get Friends</a>
|
||||
<!-- <ul class="s_form w2 hp" id="facebook_connection">
|
||||
<div id="connection_setting" class="overview vp">
|
||||
<ul class="s_form w2 hp" id="facebook_connection">
|
||||
<li><span class="c_status">No Connection</span></li>
|
||||
<li><img src="/assets/connection/facebook.png" alt="" class="c_icon"><h1 class="c_name">Facebook</h1></li>
|
||||
<li><label for="">Account</label><input type="text"></li>
|
||||
|
|
@ -38,7 +35,7 @@
|
|||
<a href="gmail" class="setting_btn thmc1 thmtxt hp" onclick="return false;" for="delete" style="display:none;">Remove</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul> -->
|
||||
</ul>
|
||||
</div>
|
||||
<!-- <div style="z-index:999;position:relative;"><button onclick="o.tempFunc()">Twitter</button> -->
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
<div class="s_tab stb_h">
|
||||
<ul>
|
||||
<li><a href="#st1" class="hh1 hp thmc2 thmtxt" data-active="true">Themes</a></li>
|
||||
<li><a href="#st2" class="hh1 hp admtxt admbg">Theme Color</a></li>
|
||||
<li><a href="#st1" class="hh1 hp thmtxt thmc2">Select Theme</a></li>
|
||||
<li><a href="#st2" class="hh1 hp admtxt admbg">Custom Theme</a></li>
|
||||
<li><a href="#st3" class="hh1 hp admtxt admbg">Wallpaper</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="overview tab_holder" content-layout="simple">
|
||||
<div id="st1" class="st_c" style="display:block;">
|
||||
<div class="overview" content-layout="simple">
|
||||
<div id="st1" class="st_c">
|
||||
<div class="theme_list ssl">
|
||||
<% @themes.each do |theme| %>
|
||||
<div id="<%= theme.id %>" class="ssl_item"><div class="theme_thumb"><img src="<%= theme.images.where(:name=>theme.background).first.file.thumb.url %>" alt="" width="120" height="96"></div><span class="theme_name ssl_des"><%= theme.name %></span></div>
|
||||
<div id="<%= theme.id %>" class="ssl_item"><div class="theme_thumb"><img src="/assets/sample_theme.jpg" alt="" width="120" height="96"></div><span class="theme_name ssl_des"><%= theme.name %></span></div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
<div>
|
||||
<ul>
|
||||
<% @desktopapps.each do |da| %>
|
||||
<li> <%= da.name %>
|
||||
<%= link_to "Delete", desktop_app_path(da), :method=>"delete", :confirm=>"Are you sure?" %>
|
||||
<%#= link_to "Edit", edit_desktop_app_path(da) %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<h4>Upload App Package </h4>
|
||||
<div class="main2">
|
||||
<%= form_tag '',:multipart => true,:action=>"post" do |f| %>
|
||||
|
||||
<p>
|
||||
<%= file_field :desktop_app,:package_file %>
|
||||
</p>
|
||||
<%= submit_tag %>
|
||||
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<div>
|
||||
<%= @dw.name %>
|
||||
|
||||
<h4>Upload Widget image </h4>
|
||||
<div class="main2">
|
||||
<%= form_for @dw, :url => desktop_widget_path(@dw) do |f| %>
|
||||
|
||||
<p>
|
||||
<%= f.file_field :image %>
|
||||
</p>
|
||||
<%= submit_tag %>
|
||||
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<div>
|
||||
<ul>
|
||||
<% @desktopThemes.each do |dw| %>
|
||||
<li> <%= dw.name %>
|
||||
<%= link_to "Delete", desktop_theme_path(dw), :method=>"delete", :confirm=>"Are you sure?" %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<h4>Upload Theme Package </h4>
|
||||
<div class="main2">
|
||||
<%= form_tag '',:multipart => true,:action=>"post" do |f| %>
|
||||
|
||||
<p>
|
||||
<%= file_field :desktop_theme,:package_file %>
|
||||
</p>
|
||||
<%= submit_tag %>
|
||||
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<div>
|
||||
<%= @dw.name %>
|
||||
|
||||
<h4>Upload Widget image </h4>
|
||||
<div class="main2">
|
||||
<%= form_for @dw, :url => desktop_widget_path(@dw) do |f| %>
|
||||
|
||||
<p>
|
||||
<%= f.file_field :image %>
|
||||
</p>
|
||||
<%= submit_tag %>
|
||||
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<div>
|
||||
<ul>
|
||||
<% @desktopWidgets.each do |dw| %>
|
||||
<li> <%= dw.name %>
|
||||
<%= link_to "Delete", desktop_widget_path(dw), :method=>"delete", :confirm=>"Are you sure?" %>
|
||||
<%= link_to "Edit", edit_desktop_widget_path(dw) %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -3,6 +3,7 @@ defaults: &defaults
|
|||
store_ip: 'redmine.rulingcom.com:3001'
|
||||
orbit: 'Orbit'
|
||||
ruling_digital: 'RulingDigital'
|
||||
backup_keep_for_days: 30
|
||||
|
||||
development:
|
||||
<<: *defaults
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
PrototypeR4::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb
|
||||
|
||||
# The production environment is meant for finished, "live" apps.
|
||||
# Code is not reloaded between requests
|
||||
config.cache_classes = true
|
||||
|
||||
# Full error reports are disabled and caching is turned on
|
||||
config.consider_all_requests_local = false
|
||||
config.action_controller.perform_caching = true
|
||||
|
||||
# Specifies the header that your server uses for sending files
|
||||
config.action_dispatch.x_sendfile_header = "X-Sendfile"
|
||||
|
||||
# For nginx:
|
||||
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
|
||||
|
||||
# If you have no front-end server that supports something like X-Sendfile,
|
||||
# just comment this out and Rails will serve the files
|
||||
|
||||
# See everything in the log (default is :info)
|
||||
# config.log_level = :debug
|
||||
|
||||
# Use a different logger for distributed setups
|
||||
# config.logger = SyslogLogger.new
|
||||
|
||||
# Use a different cache store in production
|
||||
# config.cache_store = :mem_cache_store
|
||||
|
||||
# Disable Rails's static asset server
|
||||
# In production, Apache or nginx will already do this
|
||||
config.serve_static_assets = false
|
||||
|
||||
# Enable serving of images, stylesheets, and javascripts from an asset server
|
||||
# config.action_controller.asset_host = "http://assets.example.com"
|
||||
|
||||
# Disable delivery errors, bad email addresses will be ignored
|
||||
# config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Enable threaded mode
|
||||
# config.threadsafe!
|
||||
|
||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||
# the I18n.default_locale when a translation can not be found)
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# Send deprecation notices to registered listeners
|
||||
config.active_support.deprecation = :notify
|
||||
|
||||
|
||||
#compress both stylesheets and Javascripts
|
||||
config.assets.js_compressor = :uglifier
|
||||
config.assets.css_compressor = :scss
|
||||
end
|
||||
|
|
@ -3,7 +3,7 @@ require 'resque_scheduler/server'
|
|||
# require 'yaml'
|
||||
|
||||
Resque.redis = 'localhost:6379'
|
||||
Resque.redis.namespace = "resque"
|
||||
Resque.redis.namespace = Site.first.resque_namespace rescue APP_CONFIG['orbit']
|
||||
|
||||
# If you want to be able to dynamically change the schedule,
|
||||
# uncomment this line. A dynamic schedule can be updated via the
|
||||
|
|
|
|||
|
|
@ -272,6 +272,8 @@ en:
|
|||
setting: Mail settings
|
||||
tls: TLS
|
||||
user_name: User Name
|
||||
mail_cron: Scheduled Email
|
||||
mail_cron_log: Email Log
|
||||
manager: Manager
|
||||
markup: Markup
|
||||
markup_options: Markup options
|
||||
|
|
|
|||
|
|
@ -272,6 +272,8 @@ zh_tw:
|
|||
setting: 電子郵件設定
|
||||
tls: 電子郵件TLS
|
||||
user_name: 電子郵件帳號
|
||||
mail_cron: 待寄Email
|
||||
mail_cron_log: Email發送記錄
|
||||
manager: 管理者
|
||||
markup: 輸入模式
|
||||
markup_options: 標註選項
|
||||
|
|
|
|||
|
|
@ -9,9 +9,6 @@ defaults: &defaults
|
|||
development:
|
||||
<<: *defaults
|
||||
database: test_site
|
||||
|
||||
|
||||
|
||||
test:
|
||||
<<: *defaults
|
||||
database: test_site
|
||||
|
|
@ -24,4 +21,4 @@ production:
|
|||
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
||||
# database: <%= ENV['MONGOID_DATABASE'] %>
|
||||
<<: *defaults
|
||||
database: demo_site_production
|
||||
database: test_site
|
||||
|
|
|
|||
|
|
@ -1,3 +1,15 @@
|
|||
dashboard_counter_cache:
|
||||
cron: 0 * * * * *
|
||||
class: DashboardCounter
|
||||
args:
|
||||
description: DashboardCounterCache
|
||||
|
||||
backup_server:
|
||||
cron: 0 0 2 * * *
|
||||
class: BackupServer
|
||||
args:
|
||||
description: BackupServer and remove old backups
|
||||
|
||||
update_tag_cloud:
|
||||
cron: 0 0 [0,12] * * *
|
||||
class: UpdateTagCloud
|
||||
|
|
@ -8,4 +20,10 @@ generate_system_summary:
|
|||
cron: 0 0 12 * * *
|
||||
class: GenerateSystemSummary
|
||||
args:
|
||||
description: Generate the system status such as disk free space,package version list for showing at site tab
|
||||
description: Generate the system status such as disk free space,package version list for showing at site tab
|
||||
|
||||
email_cron:
|
||||
cron: 0 0 [10,16,22] * * *
|
||||
class: EmailCron
|
||||
args:
|
||||
description: EmailCron
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue