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
|
solr/data
|
||||||
tmp/**/*
|
tmp/**/*
|
||||||
uploads/**/*
|
uploads/**/*
|
||||||
|
config/*.god
|
||||||
|
log/*.gz
|
||||||
|
tmp/restart.txt
|
||||||
*.swp
|
*.swp
|
||||||
*.pid
|
*.pid
|
||||||
*.lck
|
*.lck
|
||||||
|
|
|
||||||
12
Gemfile
12
Gemfile
|
|
@ -14,7 +14,11 @@ gem 'execjs'
|
||||||
gem 'jquery-rails', '2.1.4'
|
gem 'jquery-rails', '2.1.4'
|
||||||
gem 'jquery-ui-rails'
|
gem 'jquery-ui-rails'
|
||||||
gem "select2-rails", '3.3.1'
|
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 "memcached", "~> 1.4.3"
|
||||||
# gem "memcache-client"
|
# gem "memcache-client"
|
||||||
|
|
@ -35,7 +39,7 @@ gem 'resque-scheduler' # job scheduling
|
||||||
gem 'resque-restriction'
|
gem 'resque-restriction'
|
||||||
#gem 'rb-readline'
|
#gem 'rb-readline'
|
||||||
# gem 'ruby-debug19'
|
# gem 'ruby-debug19'
|
||||||
gem 'rubyzip'
|
gem 'rubyzip','0.9.9'
|
||||||
|
|
||||||
gem 'sunspot_mongo'
|
gem 'sunspot_mongo'
|
||||||
gem 'sunspot_solr'
|
gem 'sunspot_solr'
|
||||||
|
|
@ -46,14 +50,14 @@ gem 'sinatra'
|
||||||
gem 'sprockets'
|
gem 'sprockets'
|
||||||
gem 'social-share-button'
|
gem 'social-share-button'
|
||||||
|
|
||||||
gem 'tinymce-rails'
|
gem 'tinymce-rails', '3.5.8.3'
|
||||||
gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux")
|
gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux")
|
||||||
gem 'libv8', '~> 3.11.8' if RUBY_PLATFORM.downcase.include?("linux")
|
gem 'libv8', '~> 3.11.8' if RUBY_PLATFORM.downcase.include?("linux")
|
||||||
gem 'mongoid-encryptor', :require => 'mongoid/encryptor'
|
gem 'mongoid-encryptor', :require => 'mongoid/encryptor'
|
||||||
gem 'rb-readline','~> 0.4.2' if RUBY_PLATFORM.downcase.include?("linux")
|
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 'contacts'
|
||||||
#gem 'event-calendar', :require => 'event_calendar'#, :git => 'git://github.com/elevation/event_calendar.git'
|
#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.form
|
||||||
//= require jquery.tinyscrollbar
|
//= require jquery.tinyscrollbar
|
||||||
//= require jquery.miniColors.min
|
//= require jquery.miniColors.min
|
||||||
//= require select2
|
|
||||||
//= require bootstrap
|
//= require bootstrap
|
||||||
//= require orbitdesktopAPI
|
//= require orbitdesktopAPI
|
||||||
//= require orbitTimeline
|
//= require orbitTimeline
|
||||||
//= require orbitdesktop
|
//= require orbitdesktop
|
||||||
//= require jquery.gridster
|
//= 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
|
//msg (string) : message to display
|
||||||
//type (string : success, imp, alert
|
//type (string : success, imp, alert
|
||||||
//time (int) : duration for notification in seconds
|
//time (int) : duration for notification in seconds
|
||||||
var $notify = $('#orbitnote'),
|
var $notify = $("#orbitnote");
|
||||||
ani_method = { direction: 'up',easing: 'easeInOutQuint' },
|
var img, n_height;
|
||||||
img, n_height;
|
|
||||||
if(!type)type="";
|
if(!type)type="";
|
||||||
switch(type){
|
switch(type){
|
||||||
case "alert":
|
case "alert":
|
||||||
img = "exclamation-sign";
|
img = "note_alert.png";
|
||||||
break;
|
break;
|
||||||
case "imp":
|
case "imp":
|
||||||
img = "warning-sign";
|
img = "note_imp.png";
|
||||||
break;
|
break;
|
||||||
case "success":
|
case "success":
|
||||||
img = "ok";
|
img = "note_success.png";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
img = "exclamation-sign";
|
img = "note_alert.png";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if( !time || time > 20) time = 5000; else time = time*1000;
|
$notify.find("img#note_img").attr("src",o.notifyImgPath+img);
|
||||||
|
$notify.find(".note_message").html(msg);
|
||||||
var sign = '<div class="note_type"><span class="sign icon-'+ img +'"></span></div>',
|
n_height = $notify.outerHeight();
|
||||||
message = '<div class="note_message">'+ msg +'</div>',
|
if(!time)time=5000; else time=time*1000;
|
||||||
item = '<div class="note_holder admbg">'+ sign + message +'</div>';
|
$notify
|
||||||
|
.css({'top':-n_height, 'display':'block', 'opacity':0})
|
||||||
$(item)
|
.animate({top:0,opacity:1},200)
|
||||||
.prependTo($notify)
|
|
||||||
.stop(1,1)
|
|
||||||
.toggle('slide', ani_method, 300)
|
|
||||||
.delay(time)
|
.delay(time)
|
||||||
.toggle('slide', ani_method, 800);
|
.animate({top:-n_height,opacity:0},200);
|
||||||
$notify.find('.note_holder:hidden').remove();
|
|
||||||
};
|
};
|
||||||
this.executeFunc = function(func,callbackFn){
|
this.executeFunc = function(func,callbackFn){
|
||||||
//takes 2 arguments
|
//takes 2 arguments
|
||||||
|
|
@ -72,7 +67,7 @@ var orbitDesktopAPI = function(){
|
||||||
this.changeWallpaper = function(wallpaper){
|
this.changeWallpaper = function(wallpaper){
|
||||||
//takes 1 parameter
|
//takes 1 parameter
|
||||||
//wallpaper (string): takes wallpaper and sets the wallpaper
|
//wallpaper (string): takes wallpaper and sets the wallpaper
|
||||||
$("#thmbackground").attr("src",o.wallpaperPath+wallpaper);
|
$("img#thmbackground").attr("src",o.wallpaperPath+wallpaper);
|
||||||
o.saveWallpaper(wallpaper);
|
o.saveWallpaper(wallpaper);
|
||||||
};
|
};
|
||||||
this.confirm = function(settings,callbackfn){
|
this.confirm = function(settings,callbackfn){
|
||||||
|
|
@ -116,35 +111,29 @@ var orbitDesktopAPI = function(){
|
||||||
})
|
})
|
||||||
return tempArray;
|
return tempArray;
|
||||||
};
|
};
|
||||||
this.appWindow = function(options,callbackfn){
|
this.appWindow = function(settings,callbackfn){
|
||||||
//takes set of arguments as array and gives callback
|
//takes set of arguments as array and gives callback
|
||||||
//settings.method (string) : like open and close
|
//settings.method (string) : like open and close
|
||||||
//settings.title (string) : the window title
|
//settings.title (string) : the window title
|
||||||
//settings.extUrl (boolean) : true for opening external url else false
|
//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.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
|
//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 = {
|
if(typeof settings == "undefined")settings = {};
|
||||||
method : "open",
|
|
||||||
extUrl : true,
|
|
||||||
title : "New Window"
|
|
||||||
}
|
|
||||||
$.extend(settings,options);
|
|
||||||
if(!settings.appid){
|
if(!settings.appid){
|
||||||
o.notify("Invalid AppID.","imp",3);
|
o.notify("Invalid AppID.","imp",3);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var isWindow = ($("div.app_frame[data-app="+settings.appid+"]").length > 0 ? $("div.app_frame[data-app="+settings.appid+"]") : null);
|
if(!settings.method)settings.method = "open";
|
||||||
if(isWindow){
|
if(!settings.extUrl)settings.extUrl = true;
|
||||||
o.minimizeBarManager.maximize(isWindow);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(settings.method == 'open'){
|
if(settings.method == 'open'){
|
||||||
var appurl = "http://www.rulingcom.com";
|
var appurl = "http://www.rulingcom.com";
|
||||||
o.windowcounter++;
|
o.windowcounter++;
|
||||||
|
if(!settings.title)settings.title = "New Window "+o.windowcounter;
|
||||||
if(settings.extUrl){
|
if(settings.extUrl){
|
||||||
if(settings.url){
|
if(settings.url){
|
||||||
|
|
||||||
if(settings.url.substr(0,4)!="http")settings.url = "http://"+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]+\.)");
|
var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.)");
|
||||||
if(urlregex.test(settings.url))
|
if(urlregex.test(settings.url))
|
||||||
appurl = settings.url;
|
appurl = settings.url;
|
||||||
|
|
@ -158,64 +147,20 @@ var orbitDesktopAPI = function(){
|
||||||
return;
|
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>');
|
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>');
|
||||||
$("body").append(whtml).css('overflow','hidden');
|
$(o.contentHolder).append(whtml);
|
||||||
var parentwindow = $("#app_frame_"+o.windowcounter);
|
var parentwindow = $(o.contentHolder).find("div#app_frame_"+o.windowcounter);
|
||||||
var app_holder_height = parentwindow.height() - 60;
|
var app_holder_height = parentwindow.height() - 72;
|
||||||
var app_holder_width = parentwindow.width();
|
var app_holder_width = parentwindow.width();
|
||||||
parentwindow.find("iframe").attr({"height":app_holder_height});
|
parentwindow.find("iframe").attr({"height":app_holder_height,"width":app_holder_width});
|
||||||
parentwindow.find(".app_holder").height(app_holder_height);
|
parentwindow.find("div.app_holder").height(app_holder_height);
|
||||||
parentwindow.find(".icon-remove").click(function(){
|
parentwindow.find("span.icon-remove").click(function(){
|
||||||
o.appWindow.close(parentwindow);
|
parentwindow.remove();
|
||||||
});
|
|
||||||
parentwindow.find(".icon-minus").click(function(){
|
|
||||||
o.appWindow.minimize(parentwindow);
|
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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"){
|
if(typeof callbackfn=="function"){
|
||||||
callbackfn.call(this,parentwindow);
|
callbackfn.call(this);
|
||||||
}
|
}
|
||||||
return parentwindow;
|
|
||||||
};
|
};
|
||||||
this.toolPopup = function(settings){
|
this.toolPopup = function(settings){
|
||||||
if(settings == "destroy"){
|
if(settings == "destroy"){
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,11 @@ function load_tinymce() {
|
||||||
theme_advanced_statusbar_location : "bottom",
|
theme_advanced_statusbar_location : "bottom",
|
||||||
theme_advanced_resizing : true,
|
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 options
|
||||||
skin : "o2k7",
|
skin : "o2k7",
|
||||||
skin_variant : "silver",
|
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_self
|
||||||
*= require social-share-button
|
*= require social-share-button
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,6 @@ $gray: #ddd;
|
||||||
font-family: "Source Sans Pro", Arial, sans-serif;
|
font-family: "Source Sans Pro", Arial, sans-serif;
|
||||||
font-size: #{$font-size}px;
|
font-size: #{$font-size}px;
|
||||||
}
|
}
|
||||||
@mixin font-icon($font-size) {
|
|
||||||
font-family: "FontAwesome";
|
|
||||||
font-size: #{$font-size}px;
|
|
||||||
}
|
|
||||||
@mixin transition-type($property, $sec) {
|
@mixin transition-type($property, $sec) {
|
||||||
-webkit-transition: #{$property} #{$sec}s ease;
|
-webkit-transition: #{$property} #{$sec}s ease;
|
||||||
-moz-transition: #{$property} #{$sec}s ease;
|
-moz-transition: #{$property} #{$sec}s ease;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
.noSelect, .noSelect * {
|
.noSelect {
|
||||||
-webkit-touch-callout: none;
|
-webkit-touch-callout: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
-khtml-user-select: none;
|
-khtml-user-select: none;
|
||||||
|
|
@ -50,14 +50,6 @@
|
||||||
width: 384px; }
|
width: 384px; }
|
||||||
.s_grid_row .s_grid_12 {
|
.s_grid_row .s_grid_12 {
|
||||||
width: 420px; }
|
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 {
|
.s_grid_row:last-child {
|
||||||
margin-bottom: 0; }
|
margin-bottom: 0; }
|
||||||
.s_grid_row .s_grid_h_1 {
|
.s_grid_row .s_grid_h_1 {
|
||||||
|
|
@ -101,7 +93,7 @@
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 60px;
|
top: 60px;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
min-width: 120px;
|
width: 120px;
|
||||||
border: solid 2px #dddddd;
|
border: solid 2px #dddddd;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
/* webkit */
|
/* webkit */
|
||||||
|
|
@ -136,7 +128,7 @@
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 36px; }
|
line-height: 36px; }
|
||||||
.s_menu li {
|
.s_menu li {
|
||||||
border-top: solid 1px #eaeaea; }
|
border-top: solid 1px #dddddd; }
|
||||||
.s_menu li:first-child {
|
.s_menu li:first-child {
|
||||||
border: none; }
|
border: none; }
|
||||||
.s_menu a {
|
.s_menu a {
|
||||||
|
|
@ -146,23 +138,31 @@
|
||||||
.s_tab {
|
.s_tab {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 36px; }
|
line-height: 36px; }
|
||||||
.s_tab ul {
|
|
||||||
|
.s_tab ul {
|
||||||
overflow: hidden; }
|
overflow: hidden; }
|
||||||
.s_tab li {
|
|
||||||
|
.s_tab li {
|
||||||
float: left; }
|
float: left; }
|
||||||
.s_tab a {
|
|
||||||
|
.s_tab a {
|
||||||
display: block; }
|
display: block; }
|
||||||
.s_tab .admbg {
|
|
||||||
|
.s_tab .admbg {
|
||||||
background-color: #f0f0f0; }
|
background-color: #f0f0f0; }
|
||||||
|
|
||||||
.st_c {
|
.st_c {
|
||||||
display: none; }
|
display: none; }
|
||||||
|
|
||||||
|
.st_c:first-child {
|
||||||
|
display: block; }
|
||||||
|
|
||||||
/* simple form */
|
/* simple form */
|
||||||
.s_form {
|
.s_form {
|
||||||
font-size: 15px; }
|
font-size: 15px; }
|
||||||
.s_form label {
|
.s_form label {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
font-weight: bold;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
|
|
@ -172,9 +172,6 @@
|
||||||
line-height: 32px; }
|
line-height: 32px; }
|
||||||
.s_form input[type=text],
|
.s_form input[type=text],
|
||||||
.s_form input[type=password],
|
.s_form input[type=password],
|
||||||
.s_form input[type=submit],
|
|
||||||
.s_form input[type=reset],
|
|
||||||
.s_form input[type=button],
|
|
||||||
.s_form select {
|
.s_form select {
|
||||||
height: 32px;
|
height: 32px;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
|
@ -205,6 +202,7 @@
|
||||||
.s_form input[type=text]:focus,
|
.s_form input[type=text]:focus,
|
||||||
.s_form input[type=password]:focus,
|
.s_form input[type=password]:focus,
|
||||||
.s_form textarea:focus {
|
.s_form textarea:focus {
|
||||||
|
background-color: #f7f7f7;
|
||||||
border-color: #c4c4c4; }
|
border-color: #c4c4c4; }
|
||||||
.s_form textarea {
|
.s_form textarea {
|
||||||
resize: none; }
|
resize: none; }
|
||||||
|
|
@ -220,10 +218,9 @@
|
||||||
.s_form .s_table td {
|
.s_form .s_table td {
|
||||||
vertical-align: middle; }
|
vertical-align: middle; }
|
||||||
.s_form .s_table thead th {
|
.s_form .s_table thead th {
|
||||||
border-bottom: solid 1px #eee; }
|
border-bottom: solid 1px #eeeeee; }
|
||||||
|
|
||||||
/* simple select */
|
.check_box_g {
|
||||||
.s_select_g {
|
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
/* webkit */
|
/* webkit */
|
||||||
|
|
@ -235,89 +232,22 @@
|
||||||
/* ie */
|
/* ie */
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
/* css3 */ }
|
/* css3 */ }
|
||||||
.s_select_g li {
|
.check_box_g li {
|
||||||
margin: 0 6px 6px 0;
|
margin: 0 6px 6px 0;
|
||||||
padding: 0; }
|
padding: 0; }
|
||||||
.s_select_g li,
|
.check_box_g li,
|
||||||
.s_select_g li > * {
|
.check_box_g li > * {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle; }
|
vertical-align: middle; }
|
||||||
.s_select_g label {
|
.check_box_g label {
|
||||||
width: auto;
|
width: auto;
|
||||||
margin: 0; }
|
margin: 0; }
|
||||||
.s_select_g > label {
|
.check_box_g > label {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
display: block;
|
display: block;
|
||||||
padding: 4px 0; }
|
padding: 4px 0; }
|
||||||
.s_select_g li label {
|
.check_box_g li label {
|
||||||
padding-left: 4px;
|
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; }
|
|
||||||
|
|
||||||
/* tool bar */
|
/* tool bar */
|
||||||
.toolbar {
|
.toolbar {
|
||||||
|
|
@ -325,7 +255,7 @@
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 99; }
|
z-index: 9; }
|
||||||
.toolbar .sdm, .toolbar .fn_g {
|
.toolbar .sdm, .toolbar .fn_g {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: top; }
|
vertical-align: top; }
|
||||||
|
|
@ -352,21 +282,16 @@
|
||||||
width: auto;
|
width: auto;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative; }
|
||||||
z-index: 10; }
|
|
||||||
.tinycanvas .overview {
|
.tinycanvas .overview {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
min-width: 100%;
|
||||||
height: 100%; }
|
height: 100%; }
|
||||||
.tinycanvas .overview:after {
|
|
||||||
content: "";
|
|
||||||
display: table;
|
|
||||||
width: 100%; }
|
|
||||||
.tinycanvas .overview > .column {
|
.tinycanvas .overview > .column {
|
||||||
float: left;
|
float: left;
|
||||||
border-right: solid 1px #eee;
|
border-right: solid 1px #eeeeee;
|
||||||
padding: 0 12px 0 0;
|
padding: 0 12px 0 0;
|
||||||
margin: 0 12px 0 0;
|
margin: 0 12px 0 0;
|
||||||
height: 100%; }
|
height: 100%; }
|
||||||
|
|
@ -422,7 +347,7 @@
|
||||||
width: 6px; }
|
width: 6px; }
|
||||||
.tinycanvas .scrollbar {
|
.tinycanvas .scrollbar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 11;
|
z-index: 9;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
-webkit-transition: opacity 0.3s ease;
|
-webkit-transition: opacity 0.3s ease;
|
||||||
|
|
@ -433,7 +358,7 @@
|
||||||
visibility: visible; }
|
visibility: visible; }
|
||||||
.tinycanvas .scrollbar.sb_h {
|
.tinycanvas .scrollbar.sb_h {
|
||||||
left: 0;
|
left: 0;
|
||||||
bottom: 0;
|
bottom: -6px;
|
||||||
height: 6px; }
|
height: 6px; }
|
||||||
.tinycanvas .scrollbar.sb_v {
|
.tinycanvas .scrollbar.sb_v {
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
@import "desktop-helper";
|
@import "desktop-helper";
|
||||||
|
|
||||||
.noSelect, .noSelect * {
|
.noSelect {
|
||||||
@include no-select;
|
@include no-select;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -19,11 +19,9 @@
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// fixed width column with 12px gutter
|
// fixed width column
|
||||||
// 276px width for 8 columns
|
// full width 420px
|
||||||
// 420px width for 12 columns
|
@for $i from 1 through 12 {
|
||||||
// 564px width for 16 columns
|
|
||||||
@for $i from 1 through 16 {
|
|
||||||
.s_grid_#{$i} {
|
.s_grid_#{$i} {
|
||||||
width: 36px * $i - 12px;
|
width: 36px * $i - 12px;
|
||||||
}
|
}
|
||||||
|
|
@ -40,7 +38,6 @@
|
||||||
height: 44px * $j - 12px;
|
height: 44px * $j - 12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* simple dropdown menu */
|
/* simple dropdown menu */
|
||||||
|
|
@ -61,7 +58,7 @@
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 60px;
|
top: 60px;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
min-width: 120px;
|
width: 120px;
|
||||||
border: solid 2px $gray;
|
border: solid 2px $gray;
|
||||||
@include box-sizing;
|
@include box-sizing;
|
||||||
|
|
||||||
|
|
@ -95,7 +92,7 @@
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
border-top: solid 1px lighten($gray, 5%);
|
border-top: solid 1px $gray;
|
||||||
}
|
}
|
||||||
li:first-child {
|
li:first-child {
|
||||||
border: none;
|
border: none;
|
||||||
|
|
@ -109,25 +106,27 @@
|
||||||
.s_tab {
|
.s_tab {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
|
|
||||||
ul {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
li {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.admbg {
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.stb_h {}
|
.stb_h {}
|
||||||
.stb_v {}
|
.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 {
|
.st_c {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
.st_c:first-child {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
/* simple form */
|
/* simple form */
|
||||||
.s_form {
|
.s_form {
|
||||||
|
|
@ -136,6 +135,7 @@
|
||||||
// basic style
|
// basic style
|
||||||
label {
|
label {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
font-weight: bold;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
|
|
@ -148,9 +148,6 @@
|
||||||
}
|
}
|
||||||
input[type=text],
|
input[type=text],
|
||||||
input[type=password],
|
input[type=password],
|
||||||
input[type=submit],
|
|
||||||
input[type=reset],
|
|
||||||
input[type=button],
|
|
||||||
select {
|
select {
|
||||||
height: 32px;
|
height: 32px;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
|
@ -172,7 +169,7 @@
|
||||||
@include box-sizing;
|
@include box-sizing;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
// background-color: lighten($gray, 10%);
|
background-color: lighten($gray, 10%);
|
||||||
border-color: darken($gray, 10%);
|
border-color: darken($gray, 10%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -201,8 +198,8 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* simple select */
|
|
||||||
.s_select_g {
|
.check_box_g {
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
// border: solid 1px $gray;
|
// border: solid 1px $gray;
|
||||||
@include box-sizing;
|
@include box-sizing;
|
||||||
|
|
@ -227,87 +224,6 @@
|
||||||
}
|
}
|
||||||
li label {
|
li label {
|
||||||
padding-left: 4px;
|
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;
|
font-size: 15px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 99;
|
z-index: 9;
|
||||||
|
|
||||||
.sdm, .fn_g {
|
.sdm, .fn_g {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|
@ -352,21 +268,14 @@
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 10;
|
|
||||||
}
|
}
|
||||||
.overview {
|
.overview {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
min-width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
&:after {
|
|
||||||
content: "";
|
|
||||||
display: table;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
> .column {
|
> .column {
|
||||||
float: left;
|
float: left;
|
||||||
border-right: solid 1px #eee;
|
border-right: solid 1px #eee;
|
||||||
|
|
@ -420,7 +329,7 @@
|
||||||
}
|
}
|
||||||
.scrollbar {
|
.scrollbar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 11;
|
z-index: 9;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
@include transition-type(opacity, 0.3);
|
@include transition-type(opacity, 0.3);
|
||||||
|
|
@ -431,7 +340,7 @@
|
||||||
}
|
}
|
||||||
&.sb_h {
|
&.sb_h {
|
||||||
left: 0;
|
left: 0;
|
||||||
bottom: 0;
|
bottom: -6px;
|
||||||
height: 6px;
|
height: 6px;
|
||||||
}
|
}
|
||||||
&.sb_v {
|
&.sb_v {
|
||||||
|
|
|
||||||
|
|
@ -72,12 +72,6 @@ a:focus {
|
||||||
content: '';
|
content: '';
|
||||||
clear: both; }
|
clear: both; }
|
||||||
|
|
||||||
.valign:before {
|
|
||||||
content: '';
|
|
||||||
height: 100%;
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle; }
|
|
||||||
|
|
||||||
.o-loading {
|
.o-loading {
|
||||||
font-size: 13px; }
|
font-size: 13px; }
|
||||||
.fullsize .o-loading {
|
.fullsize .o-loading {
|
||||||
|
|
@ -86,17 +80,14 @@ a:focus {
|
||||||
font-size: 20px; }
|
font-size: 20px; }
|
||||||
|
|
||||||
#thmbackground {
|
#thmbackground {
|
||||||
|
min-height: 100%;
|
||||||
|
min-width: 980px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: auto;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: -1;
|
z-index: -1; }
|
||||||
background-repeat: no-repeat;
|
|
||||||
-webkit-background-size: cover;
|
|
||||||
-moz-background-size: cover;
|
|
||||||
-o-background-size: cover;
|
|
||||||
background-size: cover; }
|
|
||||||
|
|
||||||
#bgover {
|
#bgover {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
|
@ -130,14 +121,13 @@ a:focus {
|
||||||
background-color: #fff; }
|
background-color: #fff; }
|
||||||
|
|
||||||
.admbg2 {
|
.admbg2 {
|
||||||
background-color: #dddddd; }
|
background-color: #ddd; }
|
||||||
|
|
||||||
.admtxt {
|
.admtxt {
|
||||||
color: #666; }
|
color: #666; }
|
||||||
|
|
||||||
a.admtxt.admbg2:hover {
|
.admtxt:hover {
|
||||||
color: #fff;
|
color: #666; }
|
||||||
background-color: #aaaaaa; }
|
|
||||||
|
|
||||||
.hfn {
|
.hfn {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
|
@ -157,15 +147,6 @@ a.admtxt.admbg2:hover {
|
||||||
.ini_input:focus {
|
.ini_input:focus {
|
||||||
outline: none; }
|
outline: none; }
|
||||||
|
|
||||||
.text_ofl {
|
|
||||||
overflow: hidden; }
|
|
||||||
.text_ofl span {
|
|
||||||
display: inline-block;
|
|
||||||
width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
-o-text-overflow: ellipsis; }
|
|
||||||
|
|
||||||
/* - Opacity */
|
/* - Opacity */
|
||||||
.op00 {
|
.op00 {
|
||||||
opacity: 0; }
|
opacity: 0; }
|
||||||
|
|
@ -257,15 +238,7 @@ a.admtxt.admbg2:hover {
|
||||||
.element {
|
.element {
|
||||||
margin: 0 12px 12px 0;
|
margin: 0 12px 12px 0;
|
||||||
float: left;
|
float: left;
|
||||||
position: relative;
|
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); }
|
|
||||||
|
|
||||||
.group {
|
.group {
|
||||||
float: left;
|
float: left;
|
||||||
|
|
@ -273,14 +246,12 @@ a.admtxt.admbg2:hover {
|
||||||
|
|
||||||
/* desktop layout */
|
/* desktop layout */
|
||||||
#container {
|
#container {
|
||||||
padding: 48px 0 0 156px;
|
padding: 48px 0 0 156px; }
|
||||||
min-width: 800px; }
|
|
||||||
|
|
||||||
#header {
|
#header {
|
||||||
padding: 0 0 12px 0;
|
padding: 0 0 12px 0;
|
||||||
height: 72px;
|
min-width: 800px;
|
||||||
position: relative;
|
height: 72px; }
|
||||||
z-index: 2; }
|
|
||||||
|
|
||||||
#side {
|
#side {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
|
|
@ -289,13 +260,12 @@ a.admtxt.admbg2:hover {
|
||||||
margin-right: 96px;
|
margin-right: 96px;
|
||||||
top: 120px;
|
top: 120px;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 13; }
|
z-index: 11; }
|
||||||
|
|
||||||
#holder {
|
#holder {
|
||||||
height: 516px;
|
height: 516px;
|
||||||
width: auto;
|
width: auto;
|
||||||
position: relative;
|
position: relative; }
|
||||||
z-index: 1; }
|
|
||||||
|
|
||||||
#rwidget {
|
#rwidget {
|
||||||
height: 516px; }
|
height: 516px; }
|
||||||
|
|
@ -368,59 +338,37 @@ a.admtxt.admbg2:hover {
|
||||||
|
|
||||||
/* panel */
|
/* panel */
|
||||||
#panel_l {
|
#panel_l {
|
||||||
background-color: #f7f7f7;
|
background-color: #f0f0f0;
|
||||||
float: left; }
|
float: left; }
|
||||||
|
|
||||||
#panel_r {
|
#panel_r {
|
||||||
background-color: #fff;
|
|
||||||
margin-left: 252px;
|
margin-left: 252px;
|
||||||
position: relative;
|
position: relative; }
|
||||||
width: auto; }
|
|
||||||
|
|
||||||
/* Desktop Notification */
|
/* Desktop Notification */
|
||||||
#orbitnote {
|
#orbitnote {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -200px;
|
margin-left: -206px;
|
||||||
z-index: 99999;
|
z-index: 99999;
|
||||||
width: 400px;
|
width: 400px;
|
||||||
-webkit-transition: height 2s ease;
|
padding: 0 6px 6px 6px;
|
||||||
-moz-transition: height 2s ease;
|
background-color: #000;
|
||||||
transition: height 2s ease; }
|
background-color: rgba(0, 0, 0, 0.6); }
|
||||||
#orbitnote .note_holder {
|
#orbitnote .note_holder {
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
border: solid 1px white;
|
||||||
|
border-top: none;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding: 36px;
|
padding: 24px 24px; }
|
||||||
border: solid 2px #dddddd;
|
|
||||||
border-top: 0;
|
|
||||||
display: none; }
|
|
||||||
#orbitnote .note_holder .note_type {
|
#orbitnote .note_holder .note_type {
|
||||||
display: inline-block;
|
float: left; }
|
||||||
vertical-align: middle;
|
#orbitnote .note_holder .note_type img {
|
||||||
width: 60px;
|
display: block; }
|
||||||
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; }
|
|
||||||
#orbitnote .note_holder .note_message {
|
#orbitnote .note_holder .note_message {
|
||||||
color: #333;
|
color: #333;
|
||||||
display: inline-block;
|
margin: 10px 0 0 48px;
|
||||||
vertical-align: middle;
|
|
||||||
word-wrap: break-word;
|
|
||||||
width: 240px;
|
|
||||||
margin: 0 0 0 20px;
|
|
||||||
font-size: 15px; }
|
font-size: 15px; }
|
||||||
|
|
||||||
/* Desktop Dialogue */
|
/* Desktop Dialogue */
|
||||||
|
|
@ -430,8 +378,7 @@ a.admtxt.admbg2:hover {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
z-index: 12;
|
z-index: 12; }
|
||||||
display: none; }
|
|
||||||
#orbitdiag .tile {
|
#orbitdiag .tile {
|
||||||
background-color: #000; }
|
background-color: #000; }
|
||||||
#orbitdiag .diag_holder {
|
#orbitdiag .diag_holder {
|
||||||
|
|
@ -455,7 +402,7 @@ a.admtxt.admbg2:hover {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 36px; }
|
line-height: 36px; }
|
||||||
#orbitdiag .diag_holder .diag_holder_inner .diag_btn:hover {
|
#orbitdiag .diag_holder .diag_holder_inner .diag_btn:hover {
|
||||||
outline: solid 2px #fff; }
|
outline: solid 2px white; }
|
||||||
|
|
||||||
/* Tile */
|
/* Tile */
|
||||||
.appname {
|
.appname {
|
||||||
|
|
@ -488,7 +435,7 @@ a.admtxt.admbg2:hover {
|
||||||
height: 60px;
|
height: 60px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
position: relative; }
|
position: relative; }
|
||||||
[data-sizex="1"] .appicon, .w1.h1 .appicon {
|
[data-sizex="1"] .appicon {
|
||||||
margin-top: 24px; }
|
margin-top: 24px; }
|
||||||
#sections .appicon {
|
#sections .appicon {
|
||||||
width: 30px;
|
width: 30px;
|
||||||
|
|
@ -533,11 +480,6 @@ a.admtxt.admbg2:hover {
|
||||||
cursor: move;
|
cursor: move;
|
||||||
overflow: hidden; }
|
overflow: hidden; }
|
||||||
|
|
||||||
.gs_w.dragging {
|
|
||||||
-webkit-transform: scale(0.92);
|
|
||||||
-moz-transform: scale(0.92);
|
|
||||||
transform: scale(0.92); }
|
|
||||||
|
|
||||||
/* header drop menu */
|
/* header drop menu */
|
||||||
.sdm_mdr .sdm_o {
|
.sdm_mdr .sdm_o {
|
||||||
top: 36px; }
|
top: 36px; }
|
||||||
|
|
@ -553,7 +495,7 @@ a.admtxt.admbg2:hover {
|
||||||
cursor: pointer; }
|
cursor: pointer; }
|
||||||
|
|
||||||
.theme_thumb, .stock_wallpaper img {
|
.theme_thumb, .stock_wallpaper img {
|
||||||
border: solid 1px #fff;
|
border: solid 1px white;
|
||||||
width: 120px;
|
width: 120px;
|
||||||
margin: 0 auto; }
|
margin: 0 auto; }
|
||||||
|
|
||||||
|
|
@ -606,9 +548,8 @@ a.admtxt.admbg2:hover {
|
||||||
padding: 24px 0;
|
padding: 24px 0;
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border-top: solid 1px #eee; }
|
border-top: solid 1px #eeeeee;
|
||||||
.s_action .setting_btn {
|
background-color: #fff; }
|
||||||
margin-left: 12px; }
|
|
||||||
|
|
||||||
.setting_btn {
|
.setting_btn {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
@ -618,76 +559,28 @@ a.admtxt.admbg2:hover {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 0; }
|
border: 0; }
|
||||||
|
|
||||||
/* Apps Manager */
|
.group_search {
|
||||||
#app_info {
|
|
||||||
float: left;
|
float: left;
|
||||||
width: 420px;
|
margin-right: 36px; }
|
||||||
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; }
|
|
||||||
|
|
||||||
.search_result {
|
.search_result {
|
||||||
float: left;
|
float: left;
|
||||||
overflow: hidden; }
|
margin-right: 24px;
|
||||||
.search_result .message {
|
max-width: 340px; }
|
||||||
font-size: 15px;
|
|
||||||
word-wrap: break-word; }
|
.g_sep {
|
||||||
.search_result .message b {
|
width: 12px;
|
||||||
font-size: 20px;
|
border-left: solid 1px white;
|
||||||
display: block;
|
-webkit-box-sizing: border-box;
|
||||||
margin-top: 12px; }
|
/* 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 {
|
.grp {
|
||||||
height: 528px;
|
height: 528px;
|
||||||
|
|
@ -715,10 +608,9 @@ a.admtxt.admbg2:hover {
|
||||||
overflow: hidden; }
|
overflow: hidden; }
|
||||||
|
|
||||||
.list_t_title {
|
.list_t_title {
|
||||||
padding-bottom: 6px;
|
margin-bottom: 6px;
|
||||||
color: #000;
|
color: #333;
|
||||||
font-size: 15px;
|
font-size: 15px; }
|
||||||
line-height: 1.3em; }
|
|
||||||
|
|
||||||
.list_t_des {
|
.list_t_des {
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
|
|
@ -726,34 +618,153 @@ a.admtxt.admbg2:hover {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
font-size: 13px; }
|
font-size: 13px; }
|
||||||
|
|
||||||
.list_item_function {
|
.list_item_function a {
|
||||||
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;
|
display: inline-block;
|
||||||
vertical-align: top;
|
padding: 4px;
|
||||||
margin-left: 4px;
|
|
||||||
padding: 0 6px;
|
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
-webkit-text-size-adjust: none; }
|
-webkit-text-size-adjust: none; }
|
||||||
.list_item_function a :first-child {
|
|
||||||
margin-left: 0; }
|
/* Journal Papers */
|
||||||
.datalist_item:hover .list_item_function {
|
[page-name="journal_p_list"] .list_t_item .inner {
|
||||||
bottom: 0; }
|
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 */
|
||||||
.app_frame {
|
.app_frame {
|
||||||
margin: 60px 0 48px 156px;
|
margin: 48px 96px 48px 156px;
|
||||||
min-width: 800px;
|
min-width: 800px;
|
||||||
min-height: 576px;
|
min-height: 588px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
|
@ -764,40 +775,17 @@ a.admtxt.admbg2:hover {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%; }
|
width: 100%; }
|
||||||
.app_frame .app_holder iframe {
|
.app_frame #header .icon-remove {
|
||||||
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;
|
display: block;
|
||||||
float: right;
|
float: right;
|
||||||
line-height: 60px;
|
line-height: 60px;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
cursor: pointer; }
|
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; }
|
|
||||||
|
|
||||||
/*Tooltip popup */
|
/*Tooltip popup */
|
||||||
.desktop_toolpopup {
|
.desktop_toolpopup {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 10;
|
z-index: 10px;
|
||||||
display: none;
|
display: none;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
|
|
|
||||||
|
|
@ -68,12 +68,6 @@ a:focus { outline: none; }
|
||||||
content: '';
|
content: '';
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
.valign:before {
|
|
||||||
content: '';
|
|
||||||
height: 100%;
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.o-loading {
|
.o-loading {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
// font-weight: normal;
|
// font-weight: normal;
|
||||||
|
|
@ -86,17 +80,14 @@ a:focus { outline: none; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#thmbackground {
|
#thmbackground {
|
||||||
|
min-height: 100%;
|
||||||
|
min-width: 980px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: auto;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
background-repeat: no-repeat;
|
|
||||||
-webkit-background-size: cover;
|
|
||||||
-moz-background-size: cover;
|
|
||||||
-o-background-size: cover;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
}
|
||||||
#bgover {
|
#bgover {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
|
@ -122,12 +113,9 @@ a:focus { outline: none; }
|
||||||
|
|
||||||
/* Desktop Global Style */
|
/* Desktop Global Style */
|
||||||
.admbg { background-color: #fff; }
|
.admbg { background-color: #fff; }
|
||||||
.admbg2 { background-color: $gray; }
|
.admbg2 { background-color: #ddd; }
|
||||||
.admtxt { color: #666; }
|
.admtxt { color: #666; }
|
||||||
a.admtxt.admbg2:hover {
|
.admtxt:hover { color: #666; }
|
||||||
color: #fff;
|
|
||||||
background-color: darken($gray, 20%);
|
|
||||||
}
|
|
||||||
.hfn {
|
.hfn {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
|
|
@ -142,17 +130,6 @@ a.admtxt.admbg2:hover {
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
.ini_input:focus { outline: none; }
|
.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 */
|
/* - Opacity */
|
||||||
@for $i from 0 through 10 {
|
@for $i from 0 through 10 {
|
||||||
|
|
@ -189,15 +166,7 @@ a.admtxt.admbg2:hover {
|
||||||
margin: 0 12px 12px 0;
|
margin: 0 12px 12px 0;
|
||||||
float: left;
|
float: left;
|
||||||
position: relative;
|
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{
|
.group{
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 24px;
|
margin-right: 24px;
|
||||||
|
|
@ -206,13 +175,11 @@ a.admtxt.admbg2:hover {
|
||||||
/* desktop layout */
|
/* desktop layout */
|
||||||
#container {
|
#container {
|
||||||
padding: 48px 0 0 156px;
|
padding: 48px 0 0 156px;
|
||||||
min-width: 800px;
|
|
||||||
}
|
}
|
||||||
#header {
|
#header {
|
||||||
padding: 0 0 12px 0;
|
padding: 0 0 12px 0;
|
||||||
|
min-width: 800px;
|
||||||
height: 72px;
|
height: 72px;
|
||||||
position: relative;
|
|
||||||
z-index: 2;
|
|
||||||
}
|
}
|
||||||
#side {
|
#side {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
|
|
@ -221,13 +188,12 @@ a.admtxt.admbg2:hover {
|
||||||
margin-right: 96px;
|
margin-right: 96px;
|
||||||
top: 120px;
|
top: 120px;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 13;
|
z-index: 11;
|
||||||
}
|
}
|
||||||
#holder {
|
#holder {
|
||||||
height: 516px;
|
height: 516px;
|
||||||
width: auto;
|
width: auto;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 1;
|
|
||||||
}
|
}
|
||||||
#rwidget {
|
#rwidget {
|
||||||
height: 516px;
|
height: 516px;
|
||||||
|
|
@ -316,14 +282,12 @@ a.admtxt.admbg2:hover {
|
||||||
}
|
}
|
||||||
/* panel */
|
/* panel */
|
||||||
#panel_l {
|
#panel_l {
|
||||||
background-color: lighten($gray, 10%);
|
background-color: #f0f0f0;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
#panel_r {
|
#panel_r {
|
||||||
background-color: #fff;
|
|
||||||
margin-left: 252px;
|
margin-left: 252px;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Desktop Notification */
|
/* Desktop Notification */
|
||||||
|
|
@ -331,46 +295,30 @@ a.admtxt.admbg2:hover {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -200px;
|
margin-left: -206px;
|
||||||
z-index: 99999;
|
z-index: 99999;
|
||||||
width: 400px;
|
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 {
|
.note_holder {
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
border: solid 1px #fff;
|
||||||
|
border-top: none;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding: 36px;
|
padding: 24px 24px;
|
||||||
border: solid 2px $gray;
|
|
||||||
border-top: 0;
|
|
||||||
display: none;
|
|
||||||
|
|
||||||
.note_type {
|
.note_type {
|
||||||
display: inline-block;
|
float: left;
|
||||||
vertical-align: middle;
|
|
||||||
width: 60px;
|
|
||||||
height: 60px;
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
.sign {
|
img {
|
||||||
display: block;
|
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 {
|
.note_message {
|
||||||
color: #333;
|
color: #333;
|
||||||
display: inline-block;
|
margin: 10px 0 0 48px;
|
||||||
vertical-align: middle;
|
|
||||||
word-wrap: break-word;
|
|
||||||
width: 240px;
|
|
||||||
margin: 0 0 0 20px;
|
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
// font-weight: normal;
|
// font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
@ -385,7 +333,6 @@ a.admtxt.admbg2:hover {
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
z-index: 12;
|
z-index: 12;
|
||||||
display: none;
|
|
||||||
|
|
||||||
.tile {
|
.tile {
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
|
|
@ -464,7 +411,7 @@ a.admtxt.admbg2:hover {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
[data-sizex="1"] &, .w1.h1 & {
|
[data-sizex="1"] & {
|
||||||
margin-top: 24px;
|
margin-top: 24px;
|
||||||
}
|
}
|
||||||
#sections & {
|
#sections & {
|
||||||
|
|
@ -513,11 +460,11 @@ a.admtxt.admbg2:hover {
|
||||||
cursor: move;
|
cursor: move;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.gs_w.dragging {
|
// .app.gs_w:active {
|
||||||
-webkit-transform: scale(0.92);
|
// -webkit-transform: scale(0.9);
|
||||||
-moz-transform: scale(0.92);
|
// -moz-transform: scale(0.9);
|
||||||
transform: scale(0.92);
|
// transform: scale(0.9);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/* header drop menu */
|
/* header drop menu */
|
||||||
.sdm_mdr .sdm_o { top: 36px; }
|
.sdm_mdr .sdm_o { top: 36px; }
|
||||||
|
|
@ -599,11 +546,7 @@ a.admtxt.admbg2:hover {
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border-top: solid 1px #eee;
|
border-top: solid 1px #eee;
|
||||||
// background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
||||||
.setting_btn {
|
|
||||||
margin-left: 12px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.setting_btn {
|
.setting_btn {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
@ -615,74 +558,21 @@ a.admtxt.admbg2:hover {
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Apps Manager */
|
|
||||||
#app_info {
|
.group_search{
|
||||||
float: left;
|
float: left;
|
||||||
width: 420px;
|
|
||||||
height: 516px;
|
|
||||||
margin-right: 36px;
|
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{
|
.search_result{
|
||||||
float: left;
|
float: left;
|
||||||
overflow: hidden;
|
margin-right: 24px;
|
||||||
|
max-width: 340px;
|
||||||
.message {
|
}
|
||||||
font-size: 15px;
|
.g_sep {
|
||||||
word-wrap: break-word;
|
width: 12px;
|
||||||
|
border-left: solid 1px #fff;
|
||||||
b {
|
@include box-sizing;
|
||||||
font-size: 20px;
|
|
||||||
display: block;
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -706,14 +596,11 @@ a.admtxt.admbg2:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* list item */
|
/* list item */
|
||||||
.list_t_item {
|
.list_t_item { overflow: hidden; }
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.list_t_title {
|
.list_t_title {
|
||||||
padding-bottom: 6px;
|
margin-bottom: 6px;
|
||||||
color: #000;
|
color: #333;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 1.3em;
|
|
||||||
// font-weight: normal;
|
// font-weight: normal;
|
||||||
}
|
}
|
||||||
.list_t_des {
|
.list_t_des {
|
||||||
|
|
@ -722,38 +609,164 @@ a.admtxt.admbg2:hover {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
.list_item_function {
|
.list_item_function a {
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
bottom: -30px;
|
|
||||||
width: 100%;
|
|
||||||
height: 30px;
|
|
||||||
line-height: 30px;
|
|
||||||
text-align: right;
|
|
||||||
@include transition-type(all,0.3);
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: top;
|
padding: 4px;
|
||||||
margin-left: 4px;
|
|
||||||
padding: 0 6px;
|
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
-webkit-text-size-adjust: none;
|
-webkit-text-size-adjust: none;
|
||||||
|
}
|
||||||
|
|
||||||
:first-child {
|
/* Journal Papers */
|
||||||
margin-left: 0;
|
[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; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.datalist_item:hover & {
|
|
||||||
bottom: 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 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 */
|
||||||
.app_frame {
|
.app_frame {
|
||||||
margin: 60px 0 48px 156px;
|
margin: 48px 96px 48px 156px;
|
||||||
min-width: 800px;
|
min-width: 800px;
|
||||||
min-height: 576px;
|
min-height: 588px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
|
@ -765,55 +778,20 @@ a.admtxt.admbg2:hover {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
iframe {
|
|
||||||
width: 100%;
|
|
||||||
}
|
}
|
||||||
}
|
#header .icon-remove {
|
||||||
.app_frame_header{
|
|
||||||
height: 60px;
|
|
||||||
|
|
||||||
.icon-remove, .icon-minus {
|
|
||||||
display: block;
|
display: block;
|
||||||
float: right;
|
float: right;
|
||||||
line-height: 60px;
|
line-height: 60px;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Minimize Section */
|
|
||||||
#minimizebar {
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
z-index: 14;
|
|
||||||
|
|
||||||
.minimize {
|
|
||||||
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 */
|
/*Tooltip popup */
|
||||||
.desktop_toolpopup {
|
.desktop_toolpopup {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 10;
|
z-index: 10px;
|
||||||
display: none;
|
display: none;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
@media only screen and (min-width: 1240px){
|
@media only screen and (min-width: 1240px){
|
||||||
|
|
||||||
/*#panel_r.pw { width: 800px; }*/
|
#panel_r.pw { width: 800px; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@media only screen and (min-width: 1900px){
|
@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 {
|
.select2-container.select2-container-disabled .select2-choice {
|
||||||
background-color: #f4f4f4;
|
background-color: #f4f4f4;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #dddddd;
|
||||||
cursor: default; }
|
cursor: default; }
|
||||||
|
|
||||||
.select2-container.select2-container-disabled .select2-choice div {
|
.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; }
|
background: white url("select2/spinner.gif") no-repeat 100% !important; }
|
||||||
|
|
||||||
.select2-default {
|
.select2-default {
|
||||||
color: #999 !important; }
|
color: #999999 !important; }
|
||||||
|
|
||||||
.select2-container-multi .select2-choices .select2-search-choice {
|
.select2-container-multi .select2-choices .select2-search-choice {
|
||||||
padding: 3px 5px 3px 18px;
|
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 {
|
.select2-container-multi.select2-container-disabled .select2-choices {
|
||||||
background-color: #f4f4f4;
|
background-color: #f4f4f4;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #dddddd;
|
||||||
cursor: default; }
|
cursor: default; }
|
||||||
|
|
||||||
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
|
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
|
||||||
padding: 3px 5px 3px 5px;
|
padding: 3px 5px 3px 5px;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #dddddd;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
background-color: #f4f4f4; }
|
background-color: #f4f4f4; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ Version: 3.3.1 Timestamp: Wed Feb 20 09:57:22 PST 2013
|
||||||
}
|
}
|
||||||
|
|
||||||
.select2-search input.select2-active {
|
.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,
|
.select2-container-active .select2-choice,
|
||||||
|
|
@ -273,7 +273,7 @@ disabled look for disabled choices in the results dropdown
|
||||||
}
|
}
|
||||||
|
|
||||||
.select2-more-results.select2-active {
|
.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 {
|
.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 {
|
.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 {
|
.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
|
end
|
||||||
|
|
||||||
def query_for_default_widget
|
def query_for_default_widget
|
||||||
|
|
||||||
@ori_class_name = @default_widget["query"].split('.')[0]
|
@ori_class_name = @default_widget["query"].split('.')[0]
|
||||||
result = nil
|
@result = eval(@default_widget["query"])
|
||||||
result_objects = nil
|
|
||||||
|
|
||||||
if !params["tag_id"].blank?
|
if !params["tag_id"].blank?
|
||||||
if params["category_id"].blank? #has tag no cate
|
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
|
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
|
end
|
||||||
elsif params["category_id"].blank? #no tag no cate
|
elsif params["category_id"].blank? #no tag no cate
|
||||||
result = eval(@default_widget["query"])
|
|
||||||
else #no tag has cate
|
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
|
end
|
||||||
result.available_for_lang(I18n.locale).can_display.desc(:is_top, :postdate)
|
eval("@result.#{@default_widget[:sorting_query]}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def search_result
|
def search_result
|
||||||
|
|
@ -40,9 +38,13 @@ class DefaultWidgetController< OrbitWidgetController
|
||||||
|
|
||||||
def default_widget
|
def default_widget
|
||||||
@search = params["search_query"].blank? ? false : true
|
@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
|
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}})")
|
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
|
else
|
||||||
@tag_class = nil
|
@tag_class = nil
|
||||||
@default_widget = @page_part.module_app.get_default_widget
|
@default_widget = @page_part.module_app.get_default_widget
|
||||||
|
|
@ -91,9 +93,9 @@ class DefaultWidgetController< OrbitWidgetController
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_category_field_name
|
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|
|
@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
|
end
|
||||||
nil
|
nil
|
||||||
end
|
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
|
render :layout => false
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_themes
|
def themes
|
||||||
@themes = DesktopTheme.all
|
@themes = DesktopTheme.all
|
||||||
# raise @themes.inspect
|
# raise @themes.inspect
|
||||||
render "desktop/settings/themes", :layout => false
|
render "desktop/settings/themes", :layout => false
|
||||||
|
|
@ -42,7 +42,6 @@ class DesktopController< ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def connections
|
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
|
render "desktop/settings/connections", :layout => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -108,19 +107,18 @@ class DesktopController< ApplicationController
|
||||||
def getgroups
|
def getgroups
|
||||||
@section = Section.find(params["sectionid"])
|
@section = Section.find(params["sectionid"])
|
||||||
@groups = @section.groups
|
@groups = @section.groups
|
||||||
|
|
||||||
gr = Array.new
|
gr = Array.new
|
||||||
@groups.each do |group|
|
@groups.each do |group|
|
||||||
a = Array.new
|
a = Array.new
|
||||||
@t = group.tiles
|
t = group.tiles
|
||||||
|
t.each do |tile|
|
||||||
@t.each do |tile|
|
|
||||||
data_content = ""
|
data_content = ""
|
||||||
jsfile = []
|
jsfile = []
|
||||||
cssfile = ""
|
cssfile = ""
|
||||||
shape = "w1 h1"
|
shape = "w1 h1"
|
||||||
link = ""
|
|
||||||
icon= ""
|
|
||||||
fullsize = false
|
fullsize = false
|
||||||
|
link = ""
|
||||||
if tile.data_category == "widget"
|
if tile.data_category == "widget"
|
||||||
widge = DesktopWidget.find(tile.desktop_widget_id.to_s)
|
widge = DesktopWidget.find(tile.desktop_widget_id.to_s)
|
||||||
# data_content = widge.widget_layout.file
|
# data_content = widge.widget_layout.file
|
||||||
|
|
@ -129,17 +127,21 @@ class DesktopController< ApplicationController
|
||||||
cssfile = widge.css_default.file.as_json[:file]
|
cssfile = widge.css_default.file.as_json[:file]
|
||||||
shape = widge.shape
|
shape = widge.shape
|
||||||
title = widge.name
|
title = widge.name
|
||||||
icon = widge.images.where(:name => widge.icon).first.file.url
|
|
||||||
# binding.pry
|
# binding.pry
|
||||||
|
if not widge.fullsize.nil?
|
||||||
fullsize = widge.fullsize
|
fullsize = widge.fullsize
|
||||||
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
|
|
||||||
|
|
||||||
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}
|
else
|
||||||
|
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}
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
@ -150,11 +152,9 @@ class DesktopController< ApplicationController
|
||||||
|
|
||||||
def widget_layout
|
def widget_layout
|
||||||
widget = DesktopWidget.find(params[:id])
|
widget = DesktopWidget.find(params[:id])
|
||||||
# link = '<link href="'+widget.css_default.file.to_s+'" media="screen" rel="stylesheet" type="text/css" />'
|
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>"
|
|
||||||
content = widget.widget_layout.body
|
content = widget.widget_layout.body
|
||||||
dhtml = css + content
|
dhtml = link + content
|
||||||
render :text => dhtml.html_safe
|
render :text => dhtml.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -195,46 +195,6 @@ class DesktopController< ApplicationController
|
||||||
render :json=>a.to_json
|
render :json=>a.to_json
|
||||||
end
|
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
|
def newpositions
|
||||||
@newpositions = params[:newpositions]
|
@newpositions = params[:newpositions]
|
||||||
|
|
||||||
|
|
@ -277,47 +237,4 @@ class DesktopController< ApplicationController
|
||||||
render :xml=>feed
|
render :xml=>feed
|
||||||
end
|
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
|
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'
|
require 'zip/zip'
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@desktopWidgets = DesktopWidget.all
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def upload
|
def upload
|
||||||
|
|
@ -22,19 +21,6 @@ class DesktopWidgetsController < OrbitBackendController
|
||||||
temp_file.close
|
temp_file.close
|
||||||
end
|
end
|
||||||
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)
|
def unzip_widget(file, zip_name)
|
||||||
Zip::ZipFile.open(file) { |zip_file|
|
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
|
def page
|
||||||
@page_title = t('mobile.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
|
end
|
||||||
|
|
||||||
def page_content
|
def page_content
|
||||||
|
|
@ -57,4 +57,12 @@ class MobileController < ApplicationController
|
||||||
@no_footer = true if request.path =~ /app/
|
@no_footer = true if request.path =~ /app/
|
||||||
end
|
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
|
end
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,10 @@ class OrbitFrontendComponentController< ApplicationController
|
||||||
@app_title = request.fullpath.split('/')[2]
|
@app_title = request.fullpath.split('/')[2]
|
||||||
end
|
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
|
end
|
||||||
|
|
@ -45,28 +45,12 @@ class PagesController < ApplicationController
|
||||||
#end
|
#end
|
||||||
end
|
end
|
||||||
|
|
||||||
def convert_array_param(key,array)
|
|
||||||
array.collect{|t| "#{key}[]=#{t}"}.join("&")
|
|
||||||
end
|
|
||||||
|
|
||||||
def index_from_link
|
def index_from_link
|
||||||
url = "/#{@item.path}"
|
url = "/#{@item.path}"
|
||||||
options = ''
|
options = ''
|
||||||
options << "#{options.blank? ? '?' : '&'}page_main=#{params[:page_main]}" unless params[:page_main].blank?
|
options << "#{options.blank? ? '?' : '&'}page_main=#{params[:page_main]}" unless params[:page_main].blank?
|
||||||
|
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('category_id', params[:category_id])}" unless params[:category_id].blank?
|
||||||
if params[:category_id].is_a? Array
|
options << "#{options.blank? ? '?' : '&'}#{convert_array_param('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?
|
|
||||||
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? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
|
options << "#{options.blank? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}name=#{params[:name]}" unless params[:name].blank?
|
options << "#{options.blank? ? '?' : '&'}name=#{params[:name]}" unless params[:name].blank?
|
||||||
uri = URI::escape(url + options)
|
uri = URI::escape(url + options)
|
||||||
|
|
@ -78,8 +62,8 @@ class PagesController < ApplicationController
|
||||||
url = "/#{@item.path}"
|
url = "/#{@item.path}"
|
||||||
options = ''
|
options = ''
|
||||||
options << "#{options.blank? ? '?' : '&'}id=#{params[:id]}" unless params[:id].blank?
|
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? ? '?' : '&'}#{convert_array_param('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('tag_id', params[:tag_id])}" unless params[:tag_id].blank?
|
||||||
options << "#{options.blank? ? '?' : '&'}preview=#{params[:preview]}" unless params[:preview].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? ? '?' : '&'}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?
|
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]
|
elsif params[:same_page_id]
|
||||||
@item = Item.find(params[:same_page_id])
|
@item = Item.find(params[:same_page_id])
|
||||||
else
|
else
|
||||||
category_ids = params[:category_id].is_a?(Array) ? params[:category_id] : [params[:category_id]]
|
category_ids = Array(params[:category_id]) unless params[:category_id].nil?
|
||||||
tag_ids = params[:tag_id].is_a?(Array) ? params[:tag_id] : [params[:tag_id]]
|
tag_ids = Array(params[:tag_id]) unless params[:tag_id].nil?
|
||||||
module_app = ModuleApp.first(:conditions => {:key => params[:app_name]})
|
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?
|
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.where(default_query.merge(specific_categories).merge(specific_tags)).first
|
||||||
@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(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?
|
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?
|
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
|
end
|
||||||
@item = Item.find(params[:orig_page]) unless @item || params[:orig_page].blank?
|
@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(default_query.merge(nil_categories).merge(nil_tags)).first unless @item
|
||||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: 'default_widget').first unless @item
|
@item = Item.where(default_query).first unless @item
|
||||||
@item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).first unless @item
|
|
||||||
end
|
end
|
||||||
raise PageError,'Missing Frontend Page' if @item.nil?
|
raise PageError, 'Missing Frontend Page' if @item.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
def save_from_no_lang_for_page
|
def save_from_no_lang_for_page
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
module ApplicationHelper
|
module ApplicationHelper
|
||||||
|
include OrbitApp::Module::VisitorCounter
|
||||||
FLASH_NOTICE_KEYS = [:error, :notice, :warning]
|
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('?')
|
request.referer.include?('?') ? [request.referer,param_hash.to_param].join('&') : [request.referer,param_hash.to_param].join('?')
|
||||||
end
|
end
|
||||||
|
|
||||||
def delayed_impressionist(object)
|
def delayed_impressionist(item)
|
||||||
# Resque.enqueue_at(1.minute.from_now,DelayedImpressionist,object)
|
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
|
||||||
|
|
||||||
def check_user_role_enable(attribute_fields)
|
def check_user_role_enable(attribute_fields)
|
||||||
|
|
@ -242,25 +243,27 @@ module ApplicationHelper
|
||||||
"#{t(:view_count)}: #{object.view_count}"
|
"#{t(:view_count)}: #{object.view_count}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def display_visitors(options={})
|
# def display_visitors(options={})
|
||||||
Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
# # Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
|
||||||
end
|
# impressions = Impression.where(options).and(:referrer.ne => nil)
|
||||||
|
# impressions.map{|i| i[:session_hash]}.uniq.count
|
||||||
|
# end
|
||||||
|
|
||||||
def display_visitors_today
|
# def display_visitors_today
|
||||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
|
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
|
||||||
end
|
# end
|
||||||
|
|
||||||
def display_visitors_this_week
|
# def display_visitors_this_week
|
||||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week})
|
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week})
|
||||||
end
|
# end
|
||||||
|
|
||||||
def display_visitors_this_month
|
# def display_visitors_this_month
|
||||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month})
|
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month})
|
||||||
end
|
# end
|
||||||
|
|
||||||
def display_visitors_this_year
|
# def display_visitors_this_year
|
||||||
display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
|
# display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
|
||||||
end
|
# end
|
||||||
|
|
||||||
def display_date_time(object)
|
def display_date_time(object)
|
||||||
object.strftime("%Y-%m-%d %H:%M")
|
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]}
|
link_to title, params.merge({direction: direction, sort: column, sort_options: column}), {:class => "#{css_class} sortable", :remote => options[:remote]}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def convert_array_param(key, array)
|
||||||
|
Array(array).collect{|t| "#{key}[]=#{t}"}.join("&")
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,13 @@ module DefaultWidgetHelper
|
||||||
I18n.t("#{@page_part.module_app.key}.default_widget.#{field}")
|
I18n.t("#{@page_part.module_app.key}.default_widget.#{field}")
|
||||||
end
|
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)
|
def link_to_field(row_data,field, switch, options=nil)
|
||||||
method_ary = @page_part.module_app.widget_fields_link_method
|
method_ary = @page_part.module_app.widget_fields_link_method
|
||||||
field = field.to_sym
|
field = field.to_sym
|
||||||
|
|
@ -77,4 +84,13 @@ module DefaultWidgetHelper
|
||||||
content_tag(:span,get_display(row_data,field_setting),:class=>field_setting[:class])
|
content_tag(:span,get_display(row_data,field_setting),:class=>field_setting[:class])
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
@ -2,16 +2,24 @@ class BackupServer
|
||||||
@queue = :high
|
@queue = :high
|
||||||
|
|
||||||
def self.perform()
|
def self.perform()
|
||||||
#CronMail.time_check("Going to backup Orbit").deliver
|
|
||||||
dbhost = Mongoid.config.database.connection.primary.join ':'
|
dbhost = Mongoid.config.database.connection.primary.join ':'
|
||||||
dbname = Mongoid.config.database.name
|
dbname = Mongoid.config.database.name
|
||||||
archive_db_list_path = OrbitSystemPreference::ArchiveDbListPath
|
archive_db_list_path = OrbitSystemPreference::ArchiveDbListPath
|
||||||
dbdirectory = "#{Rails.root}/tmp/#{dbname}-"+Time.now.strftime("%Y-%m-%d-%H-%M")
|
dbdirectory = "#{Rails.root}/tmp/#{dbname}-"+Time.now.strftime("%Y-%m-%d-%H-%M")
|
||||||
%x[mongodump -h #{dbhost} -d #{dbname} -o #{dbdirectory} ]
|
%x[mongodump -h #{dbhost} -d #{dbname} -o #{dbdirectory} ]
|
||||||
|
|
||||||
%x[rm #{archive_db_list_path}]
|
Dir.foreach('tmp') do |item|
|
||||||
%x[ls #{Rails.root}/tmp/#{dbname}* | du -h --max-depth=1 --block-size=1M |sort -h >> #{archive_db_list_path}]
|
date_str = item.to_s.gsub("#{dbname}-",'')
|
||||||
OrbitLogger.info "DB backup done Path:#{dbdirectory}"
|
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
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,36 +1,21 @@
|
||||||
class DashboardCounter < Resque::Plugins::RestrictionJob
|
class DashboardCounter < Resque::Plugins::RestrictionJob
|
||||||
|
extend OrbitApp::Module::VisitorCounterEval
|
||||||
|
|
||||||
@queue = :high
|
@queue = :high
|
||||||
|
|
||||||
def self.perform(*args)
|
def self.perform(*args)
|
||||||
site = Site.first
|
site = Site.first
|
||||||
obj = new(*args)
|
obj = new(*args)
|
||||||
site.dashboard_counter[:visitors_this_week] = obj.display_visitors_this_week
|
site.visitor_counters[:total] = display_visitors
|
||||||
site.dashboard_counter[:visitors_this_month] = obj.display_visitors_this_month
|
site.visitor_counters[:today] = display_visitors_today
|
||||||
site.dashboard_counter[:visitors_this_year] = obj.display_visitors_this_year
|
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
|
site.save
|
||||||
OrbitLogger.info "DashboardCounter done #{site.dashboard_counter.to_s}"
|
OrbitLogger.info "DashboardCounter done #{site.visitor_counters.to_s}"
|
||||||
end
|
|
||||||
|
|
||||||
|
#Notice this is mainly used at user dashbroad. however the code there is currentlly using realtime evaluation.
|
||||||
def display_visitors(options={})
|
#and the site model will need a field call dashboard_counter to complete this job.
|
||||||
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})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,51 @@
|
||||||
class DelayedImpressionist
|
class DelayedImpressionist
|
||||||
@queue = :low
|
def self.before_filter(*args)
|
||||||
def self.perform(object)
|
return
|
||||||
impressionist(object)
|
|
||||||
true
|
|
||||||
end
|
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
|
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()
|
def self.perform()
|
||||||
Tag.all.each do |tag|
|
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
|
end
|
||||||
OrbitLogger.info "UpdateTagCloud Done"
|
OrbitLogger.info "UpdateTagCloud Done"
|
||||||
end
|
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 :desktop_widget
|
||||||
|
|
||||||
belongs_to :css, polymorphic: true
|
belongs_to :css, polymorphic: true
|
||||||
def content
|
|
||||||
self.file.read.force_encoding("UTF-8") rescue ''
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ class Desktop
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
field :theme
|
field :theme, default: "4f8d3f533b67fcd05f08635a"
|
||||||
field :customtheme
|
field :customtheme
|
||||||
field :wallpaper
|
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
|
|
||||||
|
|
@ -4,60 +4,6 @@ class DesktopTheme
|
||||||
|
|
||||||
field :name
|
field :name
|
||||||
field :author
|
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,9 @@ class DesktopWidget
|
||||||
|
|
||||||
field :name
|
field :name
|
||||||
field :author
|
field :author
|
||||||
field :shape, default: "w1 h1"
|
field :shape
|
||||||
field :fullsize, :type => Boolean, default: false
|
field :fullsize, :type => Boolean
|
||||||
field :version, :type => String
|
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 :css_default, as: :css, :autosave => true, :dependent => :destroy
|
||||||
has_one :widget_layout, :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
|
before_create :initialize_tile
|
||||||
|
|
||||||
def 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: "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: "dailyenglish", position: 6, shape: "w1 h1", title: "Daily English Word")
|
||||||
widgets = self.section.desktop.desktop_widgets.collect{|widget| widget.id}
|
widgets = self.section.desktop.desktop_widgets.collect{|widget| widget.id}
|
||||||
widgets.each_with_index do |w,i|
|
for i in 0..3
|
||||||
self.tiles.build(data_category: "widget", position: i+1,desktop_widget_id: w)
|
self.tiles.build(data_category: "widget", position: i+1,desktop_widget_id: widgets[i])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,5 @@ class Tile
|
||||||
|
|
||||||
belongs_to :group
|
belongs_to :group
|
||||||
belongs_to :desktop_widget
|
belongs_to :desktop_widget
|
||||||
belongs_to :desktop_app
|
|
||||||
|
|
||||||
end
|
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
|
def sorted_tags_for_cloud
|
||||||
temp_tags = {}
|
temp_tags = {}
|
||||||
self.tags.each{ |tag|
|
self.tags.each{ |tag|
|
||||||
temp_tags.merge!({tag => Tag.get_impressionist(tag)})
|
temp_tags.merge!({tag => tag.cloud_view_count})
|
||||||
}
|
}
|
||||||
if !temp_tags.blank?
|
if !temp_tags.blank?
|
||||||
sorted_tags = temp_tags.sort{|a,b| a[1]<=>b[1]}.reverse
|
sorted_tags = temp_tags.sort{|a,b| a[1]<=>b[1]}.reverse
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ class Page < Item
|
||||||
include Impressionist::Impressionable
|
include Impressionist::Impressionable
|
||||||
include ParserFrontEnd
|
include ParserFrontEnd
|
||||||
|
|
||||||
is_impressionable :counter_cache => { :column_name => :view_count }
|
is_impressionable #:counter_cache => { :column_name => :view_count }
|
||||||
|
|
||||||
field :content, localize: true
|
field :content, localize: true
|
||||||
field :app_frontend_url
|
field :app_frontend_url
|
||||||
|
|
|
||||||
|
|
@ -51,8 +51,9 @@ class PrototypeAuth
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_operation(item,obj)
|
def remove_operation(item,obj)
|
||||||
if (self.send item).include? obj
|
item = (item.to_s.singularize == item.to_s) ? "#{item.to_s}_id" : "#{item.to_s.singularize}_ids"
|
||||||
(self.send item).delete obj
|
if (self.send item).include? obj.id
|
||||||
|
(self.send item).delete obj.id
|
||||||
self.save!
|
self.save!
|
||||||
else
|
else
|
||||||
false #should put error message for user not existed in list
|
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 :title_always_on, :type => Boolean, :default => false
|
||||||
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
||||||
field :mail_settings, :type => Hash
|
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 :disk_space, :type => String
|
||||||
field :system_package_info, :type => Hash,:default=>{}
|
field :system_package_info, :type => Hash,:default=>{}
|
||||||
|
|
@ -28,10 +29,11 @@ class Site
|
||||||
mount_uploader :default_image, ImageUploader
|
mount_uploader :default_image, ImageUploader
|
||||||
|
|
||||||
field :search,:type => Hash
|
field :search,:type => Hash
|
||||||
|
field :resque_namespace,:type => String, :default=>APP_CONFIG['orbit']
|
||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
field :footer, localize: true
|
field :footer, localize: true
|
||||||
field :sub_menu, 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
|
field :mobile_on, :type => Boolean, :default => false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class Tag
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
include Impressionist::Impressionable
|
include Impressionist::Impressionable
|
||||||
|
|
||||||
is_impressionable :counter_cache => { :column_name => :view_count }
|
is_impressionable #:counter_cache => { :column_name => :view_count }
|
||||||
|
|
||||||
field :name, localize: true
|
field :name, localize: true
|
||||||
field :view_count, :type => Integer, :default => 0
|
field :view_count, :type => Integer, :default => 0
|
||||||
|
|
@ -17,30 +17,6 @@ class Tag
|
||||||
belongs_to :module_tag, polymorphic: true
|
belongs_to :module_tag, polymorphic: true
|
||||||
has_many :taggings, dependent: :destroy
|
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
|
protected
|
||||||
|
|
||||||
def self.get_impressionist(item_tag = self)
|
def self.get_impressionist(item_tag = self)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ class User
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
|
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable #, :timeoutable
|
||||||
|
|
||||||
mount_uploader :avatar, AvatarUploader
|
mount_uploader :avatar, AvatarUploader
|
||||||
|
|
||||||
|
|
@ -26,7 +26,6 @@ class User
|
||||||
|
|
||||||
has_many :managing_apps,:class_name => "AppManager", :dependent => :destroy
|
has_many :managing_apps,:class_name => "AppManager", :dependent => :destroy
|
||||||
has_one :desktop, :autosave => true, :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 :other_accounts, :autosave => true, :dependent => :destroy
|
||||||
# has_many :journals, :autosave => true, :dependent => :destroy
|
# has_many :journals, :autosave => true, :dependent => :destroy
|
||||||
# has_many :papers, :autosave => true, :dependent => :destroy
|
# has_many :papers, :autosave => true, :dependent => :destroy
|
||||||
|
|
@ -43,7 +42,6 @@ class User
|
||||||
|
|
||||||
before_create :initialize_desktop
|
before_create :initialize_desktop
|
||||||
before_save :rebuild_status_record
|
before_save :rebuild_status_record
|
||||||
before_save :save_roles
|
|
||||||
scope :remote_account, where(:nccu_id.ne => nil)
|
scope :remote_account, where(:nccu_id.ne => nil)
|
||||||
scope :not_guest_user, all_of(:name.ne => "guest")
|
scope :not_guest_user, all_of(:name.ne => "guest")
|
||||||
|
|
||||||
|
|
@ -90,9 +88,9 @@ class User
|
||||||
var[:id].each do |id,val|
|
var[:id].each do |id,val|
|
||||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||||
if (val=="true")
|
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")
|
elsif(val=="false")
|
||||||
self.roles << Role.find(id)
|
self.role_ids += Array(id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -107,9 +105,9 @@ class User
|
||||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||||
|
|
||||||
if ( self.roles.include?(@roid) == false or val=="true")
|
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")
|
elsif(val=="false")
|
||||||
self.sub_roles << SubRole.find(id)
|
self.sub_role_ids += Array(id)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
@ -274,10 +272,6 @@ class User
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def save_roles
|
|
||||||
# self.roles = self.sub_roles.collect{|t| t.role}.uniq
|
|
||||||
self.roles = self.roles.uniq
|
|
||||||
end
|
|
||||||
|
|
||||||
def rebuild_status_record
|
def rebuild_status_record
|
||||||
self.status_record = {}
|
self.status_record = {}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,5 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div class="form-actions form-fixed pagination-right">
|
<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' %>
|
<%= 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>
|
</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(: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('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('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 -%>
|
||||||
|
|
||||||
<% 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">
|
<div class="default_widget_type_A">
|
||||||
<table class="default_widget_tb" border="0" cellpadding="0" cellspacing="0" >
|
<table class="default_widget_tb" border="0" cellpadding="0" cellspacing="0" >
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<% @frontend_field_names.each_with_index do |field,index|%>
|
<% @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?%>
|
<%= content_tag(:th, content_tag(:span, get_field_header(field), class: @frontend_classes[index])) unless field.blank? %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tbody>
|
||||||
<% @data.each do |row_data| %>
|
<% @data.each do |row_data| %>
|
||||||
<tr>
|
<tr class="<%= get_top_hot_class(row_data) %>">
|
||||||
<% @frontend_field_names.each_with_index do |field,index|%>
|
<% @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?%>
|
<%= 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 %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
</tbody>
|
||||||
</table>
|
</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">
|
<ul class="default_widget_list">
|
||||||
<% @data.each do |row_data| %>
|
<% @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">
|
<div class="img app-pic">
|
||||||
<%= image_tag row_data.send(@widget_image_field)%>
|
<%= image_tag row_data.send(@widget_image_field) %>
|
||||||
</div>
|
</div>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<% @frontend_field_names.each_with_index do |field,index|%>
|
<% @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(: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 %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
<%= content_tag :div,:class=>@tag_class do%>
|
<%= content_tag :div, class: @tag_class do %>
|
||||||
<div class="img app-pic">
|
<div class="img app-pic">
|
||||||
<%= image_tag @data.first.send(@widget_image_field)%>
|
<%= image_tag @data.first.send(@widget_image_field) %>
|
||||||
</div>
|
</div>
|
||||||
<ul class="default_widget_list">
|
<ul class="default_widget_list">
|
||||||
<% @data.each do |row_data| %>
|
<% @data.each do |row_data| %>
|
||||||
<%= content_tag(:li) do %>
|
<%= content_tag(:li, class: get_top_hot_class(row_data)) do %>
|
||||||
<% @frontend_field_names.each_with_index do |field,index|%>
|
<% @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(: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 %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="holder">
|
<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>
|
</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="" 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>
|
<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">
|
<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"/>
|
<input type="submit" class="ini_input submit thmc1" value="Submit"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="search_result" style="min-width:120px;">
|
||||||
|
|
||||||
|
</div>
|
||||||
<div id="holder">
|
<div id="holder">
|
||||||
<div id="group_wrapper" class="overview" content-layout="simple">
|
<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="group g_sep op03" id='seperator' style="height: 516px;display:none;"></div>
|
||||||
<div class="s_grid s_grid_3">
|
<div class="group_search" id="app_list">
|
||||||
<img class="app_info_icon" src="/assets/icons/wikibooks.png" alt="">
|
<!--<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>
|
||||||
<div class="s_grid s_grid_9 valign">
|
<div class="clear"></div>
|
||||||
<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>
|
|
||||||
<div class="search_result s_column"></div>
|
|
||||||
<div id="app_list" class="s_column"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,9 @@
|
||||||
<div class="dtitle w2 hh2 hp"><span class="thmtxth">Appname</span></div>
|
<div class="dtitle w2 hh2 hp"><span class="thmtxth">Appname</span></div>
|
||||||
<span class="icon-remove hh2 hp thmtxt"></span>
|
<span class="icon-remove hh2 hp thmtxt"></span>
|
||||||
</div>
|
</div>
|
||||||
<div id="holder" class="clear">
|
<div id="holder">
|
||||||
<!-- app content -->
|
<!-- app content -->
|
||||||
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<div id="desktop">
|
<div id="desktop">
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<div id="header" class="hh2">
|
<div id="header" class="hh2">
|
||||||
<div class="dtitle w2 hh2 hp sdm">
|
<div class="dtitle w2 hh2 hp sdm">
|
||||||
<div class="thmtxth sdm_t" id="section_heading"></div>
|
<div class="thmtxth sdm_t" id="section_heading"></div>
|
||||||
|
|
@ -14,9 +14,13 @@
|
||||||
<div class="scrollbar sb_h"><div class="track"><div class="thumb thmc2"><div class="end"></div></div></div></div>
|
<div class="scrollbar sb_h"><div class="track"><div class="thumb thmc2"><div class="end"></div></div></div></div>
|
||||||
<div class="viewport">
|
<div class="viewport">
|
||||||
<div id="group_wrapper" class="overview">
|
<div id="group_wrapper" class="overview">
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -2,8 +2,9 @@
|
||||||
<div id="rwidget" class="wh2 thmc4">
|
<div id="rwidget" class="wh2 thmc4">
|
||||||
<ul class="docklist">
|
<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>
|
<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;">
|
<ul class="dock_child hh2 thmc4" style="width: 180px;">
|
||||||
<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>
|
<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>
|
<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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -62,17 +63,23 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="container">
|
<div id="container">
|
||||||
|
|
||||||
<div id='ajax_container'>
|
<div id='ajax_container'>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--<div id="orbitbar"></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="bgover" ></div>
|
||||||
<div id="orbitnote"></div>
|
<div id="orbitnote" style="display:none;">
|
||||||
<div id="orbitdiag">
|
<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="tile op07"></div>
|
||||||
<div class="diag_holder">
|
<div class="diag_holder">
|
||||||
<div class="diag_holder_inner">
|
<div class="diag_holder_inner">
|
||||||
|
|
@ -93,12 +100,7 @@
|
||||||
orbitDesktop.prototype.currentUsername = "<%= @currentusername %>";
|
orbitDesktop.prototype.currentUsername = "<%= @currentusername %>";
|
||||||
//uselessfunction();
|
//uselessfunction();
|
||||||
var od = new orbitDesktop("#ajax_container");
|
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);
|
o.notify("Welcome "+o.currentUsername+"!!","alert",3);
|
||||||
</script>
|
</script>
|
||||||
|
<%= javascript_include_tag "personal_journal" %>
|
||||||
|
<%= javascript_include_tag "personal_conference" %>
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,10 @@
|
||||||
<div id="panel_l" class="ph">
|
<div id="panel_l" class="ph">
|
||||||
<div class="s_menu sm_v" content-type="menu">
|
<div class="s_menu sm_v" content-type="menu">
|
||||||
<ul id='setting_left_nav'>
|
<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="<%= 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_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>
|
<li><a href="<%= desktop_connections_path %>" callback-method="connection" class="admtxt hh1 w2 hp" onclick='return false;'>Connection</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
|
|
||||||
<div id="connection_setting" class="overview vp" content-layout="simple">
|
<div id="connection_setting" class="overview vp">
|
||||||
<a href="" onclick="window.open('<%= @url %>','login_window','height=250,width=400,titlebar=0,statusbar=0,location=0');return false;">Connect FaceBook</a>
|
<ul class="s_form w2 hp" id="facebook_connection">
|
||||||
|
|
||||||
<a href="/facebook/get_friends" ajax-remote="get" >Get Friends</a>
|
|
||||||
<!-- <ul class="s_form w2 hp" id="facebook_connection">
|
|
||||||
<li><span class="c_status">No Connection</span></li>
|
<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><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>
|
<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>
|
<a href="gmail" class="setting_btn thmc1 thmtxt hp" onclick="return false;" for="delete" style="display:none;">Remove</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul> -->
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div style="z-index:999;position:relative;"><button onclick="o.tempFunc()">Twitter</button> -->
|
<!-- <div style="z-index:999;position:relative;"><button onclick="o.tempFunc()">Twitter</button> -->
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
<div class="s_tab stb_h">
|
<div class="s_tab stb_h">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#st1" class="hh1 hp thmc2 thmtxt" data-active="true">Themes</a></li>
|
<li><a href="#st1" class="hh1 hp thmtxt thmc2">Select Theme</a></li>
|
||||||
<li><a href="#st2" class="hh1 hp admtxt admbg">Theme Color</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>
|
<li><a href="#st3" class="hh1 hp admtxt admbg">Wallpaper</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="overview tab_holder" content-layout="simple">
|
<div class="overview" content-layout="simple">
|
||||||
<div id="st1" class="st_c" style="display:block;">
|
<div id="st1" class="st_c">
|
||||||
<div class="theme_list ssl">
|
<div class="theme_list ssl">
|
||||||
<% @themes.each do |theme| %>
|
<% @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 %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</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'
|
store_ip: 'redmine.rulingcom.com:3001'
|
||||||
orbit: 'Orbit'
|
orbit: 'Orbit'
|
||||||
ruling_digital: 'RulingDigital'
|
ruling_digital: 'RulingDigital'
|
||||||
|
backup_keep_for_days: 30
|
||||||
|
|
||||||
development:
|
development:
|
||||||
<<: *defaults
|
<<: *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'
|
# require 'yaml'
|
||||||
|
|
||||||
Resque.redis = 'localhost:6379'
|
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,
|
# If you want to be able to dynamically change the schedule,
|
||||||
# uncomment this line. A dynamic schedule can be updated via the
|
# uncomment this line. A dynamic schedule can be updated via the
|
||||||
|
|
|
||||||
|
|
@ -272,6 +272,8 @@ en:
|
||||||
setting: Mail settings
|
setting: Mail settings
|
||||||
tls: TLS
|
tls: TLS
|
||||||
user_name: User Name
|
user_name: User Name
|
||||||
|
mail_cron: Scheduled Email
|
||||||
|
mail_cron_log: Email Log
|
||||||
manager: Manager
|
manager: Manager
|
||||||
markup: Markup
|
markup: Markup
|
||||||
markup_options: Markup options
|
markup_options: Markup options
|
||||||
|
|
|
||||||
|
|
@ -272,6 +272,8 @@ zh_tw:
|
||||||
setting: 電子郵件設定
|
setting: 電子郵件設定
|
||||||
tls: 電子郵件TLS
|
tls: 電子郵件TLS
|
||||||
user_name: 電子郵件帳號
|
user_name: 電子郵件帳號
|
||||||
|
mail_cron: 待寄Email
|
||||||
|
mail_cron_log: Email發送記錄
|
||||||
manager: 管理者
|
manager: 管理者
|
||||||
markup: 輸入模式
|
markup: 輸入模式
|
||||||
markup_options: 標註選項
|
markup_options: 標註選項
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,6 @@ defaults: &defaults
|
||||||
development:
|
development:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
database: test_site
|
database: test_site
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
database: test_site
|
database: test_site
|
||||||
|
|
@ -24,4 +21,4 @@ production:
|
||||||
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
||||||
# database: <%= ENV['MONGOID_DATABASE'] %>
|
# database: <%= ENV['MONGOID_DATABASE'] %>
|
||||||
<<: *defaults
|
<<: *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:
|
update_tag_cloud:
|
||||||
cron: 0 0 [0,12] * * *
|
cron: 0 0 [0,12] * * *
|
||||||
class: UpdateTagCloud
|
class: UpdateTagCloud
|
||||||
|
|
@ -9,3 +21,9 @@ generate_system_summary:
|
||||||
class: GenerateSystemSummary
|
class: GenerateSystemSummary
|
||||||
args:
|
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