Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6525f60c2 | ||
|
|
96c3be68f7 | ||
|
|
5fb3731430 | ||
|
|
fb34dc673f | ||
|
|
14ea611f8c | ||
|
|
4f04eca74f | ||
|
|
4120be6f8e | ||
|
|
ae66e7257f | ||
|
|
55fa1cef4f | ||
|
|
5c8a57e700 | ||
|
|
7ef2dacf00 | ||
|
|
08a8d668ec | ||
|
|
b4f5fddc5c | ||
|
|
315a24556c | ||
|
|
cce68beff1 | ||
|
|
cf7f7aa29c | ||
|
|
5328a26440 | ||
|
|
fe1869199e | ||
|
|
061225f56c | ||
|
|
b3e16ce23b | ||
|
|
fad191aefe | ||
|
|
2f866891b1 | ||
|
|
48aa7ed638 | ||
|
|
21db2a2cba | ||
|
|
1194bdd9b4 | ||
|
|
831bd722b8 | ||
|
|
940a915125 | ||
|
|
792785f7ba | ||
|
|
43cf6b70b7 | ||
|
|
ba8da9b6bb | ||
|
|
ff93670949 | ||
|
|
f85354c2b6 | ||
|
|
06c48524fd | ||
|
|
31ef12b3da | ||
|
|
08907aa8c1 | ||
|
|
31b55a0635 | ||
|
|
433c8d5da6 | ||
|
|
b18e61a6c0 | ||
|
|
4fe2e31f0e | ||
|
|
31e4fb9f39 | ||
|
|
9bdb633157 | ||
|
|
caca264b50 | ||
|
|
9a0e9ddc82 | ||
|
|
9f490c87d2 | ||
|
|
a9431ad17e | ||
|
|
d9ac24470f | ||
|
|
2f673b20ad | ||
|
|
0a9fd6a4b5 | ||
|
|
74ca99a581 | ||
|
|
dfec6f7642 | ||
|
|
9186978551 | ||
|
|
622534e5db | ||
|
|
52c896d8c5 | ||
|
|
028c689739 | ||
|
|
f81894af90 | ||
|
|
dc3593c162 | ||
|
|
16c26e3273 | ||
|
|
5332162646 | ||
|
|
1d0ea6718f | ||
|
|
04ff345b94 | ||
|
|
58fb2d1c73 | ||
|
|
a067bcd304 | ||
|
|
b487740035 | ||
|
|
1e3cffee0a | ||
|
|
e4a16eab3a | ||
|
|
e45b7e09a0 | ||
|
|
bd3462df7f | ||
|
|
f5f1822f0a | ||
|
|
d532ded8e4 | ||
|
|
8456a91968 | ||
|
|
ba7ac5d954 | ||
|
|
9cc1e95cb1 | ||
|
|
c1cbfddf4b | ||
|
|
3595c59810 | ||
|
|
789e02e313 | ||
|
|
bb8bc9a529 | ||
|
|
6430e60577 | ||
|
|
17d7912e07 | ||
|
|
911cfdc980 | ||
|
|
579bc3c245 | ||
|
|
8c98645a69 | ||
|
|
9e10a3c944 | ||
|
|
f920a4f6ba | ||
|
|
3328a41b55 | ||
|
|
06203d27b9 | ||
|
|
865be29b37 | ||
|
|
0eeb7db1a8 | ||
|
|
7216676c40 | ||
|
|
fa857cfeea | ||
|
|
a3f1b8d54a | ||
|
|
e9d6fa8787 | ||
|
|
6e032a8757 | ||
|
|
1558cfdb4e | ||
|
|
9e4686a565 | ||
|
|
fef7cc4ed2 | ||
|
|
7f0821ea84 | ||
|
|
2c0761aafb | ||
|
|
1e5ad750cd | ||
|
|
335991e152 | ||
|
|
131dd3fea8 | ||
|
|
6d8698af63 | ||
|
|
00ddd94314 | ||
|
|
8045a18230 | ||
|
|
81a89d2d7c | ||
|
|
4209356e9d | ||
|
|
3123c5de0a | ||
|
|
82b6be483a | ||
|
|
ff64fb5230 | ||
|
|
2bc9d3424a | ||
|
|
5591b06ee6 | ||
|
|
b970ea1e0e | ||
|
|
155722519b | ||
|
|
45e987d6f5 | ||
|
|
399dfad392 | ||
|
|
53e5c57970 | ||
|
|
e75873273c | ||
|
|
4c217ec12f | ||
|
|
452da1b8ec | ||
|
|
ec40591489 | ||
|
|
4078d426a6 | ||
|
|
c474fa063f | ||
|
|
d24bd176cc |
No files matched your search
@@ -18,6 +18,7 @@ gem 'kaminari'
|
||||
gem 'time_difference'
|
||||
gem "acts_as_unvlogable"
|
||||
gem 'youtube_it'
|
||||
gem 'gotcha'
|
||||
|
||||
# gem "memcached", "~> 1.4.3"
|
||||
# gem "memcache-client"
|
||||
@@ -38,7 +39,7 @@ gem 'resque-scheduler' # job scheduling
|
||||
gem 'resque-restriction'
|
||||
#gem 'rb-readline'
|
||||
# gem 'ruby-debug19'
|
||||
gem 'rubyzip'
|
||||
gem 'rubyzip', '< 1.0.0'
|
||||
|
||||
gem 'sunspot_mongo'
|
||||
gem 'sunspot_solr'
|
||||
@@ -97,6 +98,8 @@ group :test, :development do
|
||||
gem "watchr"
|
||||
gem "spork"
|
||||
gem "capybara"
|
||||
#gem 'rack-mini-profiler'
|
||||
gem "better_errors"
|
||||
# gem 'yard'
|
||||
# gem "bluecloth"
|
||||
end
|
||||
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 78 B |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,102 @@
|
||||
!function ($) {
|
||||
$.fn.checkListLength = function (param){
|
||||
_defaultSettings = {
|
||||
onlyOne: null,
|
||||
};
|
||||
_set = $.extend(_defaultSettings, param);
|
||||
$this = this;
|
||||
$li = this.children('li');
|
||||
$dropzone = $('#dropzone');
|
||||
if(($li.length - _set.onlyOne) == 0) {
|
||||
$('#dropzone').fadeIn(300);
|
||||
} else {
|
||||
$('#dropzone').fadeOut(300);
|
||||
};
|
||||
$('#file-list').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
||||
}
|
||||
}(window.jQuery);
|
||||
$(function () {
|
||||
'use strict';
|
||||
// Initialize the jQuery File Upload widget:
|
||||
$('#fileupload').fileupload({
|
||||
maxFileSize: 5000000,
|
||||
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|pdf|doc|docx|ppt|pptx|xls|xlsx)$/i,
|
||||
dropZone: $('#dropzone'),
|
||||
headers:{
|
||||
'X-CSRF-Token': $('meta[name="csrf-token"]').attr("content")
|
||||
}
|
||||
}).bind('fileuploadstop', function (e, data) {
|
||||
window.location.reload();
|
||||
});
|
||||
});
|
||||
$(document).ready(function(){
|
||||
var insertBtn = $("#insert_btn"),
|
||||
deleteBtn = $("#delete_btn"),
|
||||
url = null;
|
||||
|
||||
$("#asset_sort_list").on(clickEvent,"input[type=checkbox]",function(){
|
||||
if($("#asset_sort_list input[type=checkbox]:checked").length == 1){
|
||||
url = window.location.protocol + "//" + window.location.host + $("#url_" + $("input[type=checkbox]:checked").val()).val();
|
||||
insertBtn.show();
|
||||
}else{
|
||||
insertBtn.hide();
|
||||
url = null;
|
||||
}
|
||||
if($("#asset_sort_list input[type=checkbox]:checked").length)
|
||||
deleteBtn.show();
|
||||
else
|
||||
deleteBtn.hide();
|
||||
})
|
||||
insertBtn.bind(clickEvent,function(){
|
||||
var alt_text = $("#"+language+"_desc_"+$("input[type=checkbox]:checked").val()).val();
|
||||
alt_text = (alt_text ? alt_text : "This is an image");
|
||||
if(url){
|
||||
window.opener.CKEDITOR.tools.callFunction( funcNum, url, function() {
|
||||
var element,
|
||||
dialog = this.getDialog();
|
||||
if ( dialog.getName() == 'image' ) {
|
||||
element = dialog.getContentElement( 'info', 'txtAlt' );
|
||||
if ( element )
|
||||
element.setValue( alt_text );
|
||||
}
|
||||
});
|
||||
window.close();
|
||||
}
|
||||
})
|
||||
deleteBtn.bind( clickEvent,function(){
|
||||
var items_to_delete = [],
|
||||
type = getUrlParam("type");
|
||||
$("input[type=checkbox]:checked").each(function(){
|
||||
items_to_delete.push($(this).val());
|
||||
})
|
||||
$.post("<%= delete_files_admin_assets_path %>",{"files":items_to_delete,"type":type},function(){
|
||||
deleteBtn.hide();
|
||||
})
|
||||
})
|
||||
var currentEdit = null;
|
||||
$(document).on("ajax:success","form[data-remote=true]",function(evt, data, xhr){
|
||||
currentEdit.replaceWith($(data));
|
||||
$("#editform").modal("hide");
|
||||
})
|
||||
|
||||
$("#asset_sort_list").on(clickEvent,".editform",function(){
|
||||
currentEdit = $(this).parent().parent();
|
||||
$.get($(this).attr("href"),function(data){
|
||||
$("#editform").html(data).modal("show");
|
||||
})
|
||||
return false;
|
||||
})
|
||||
|
||||
function getUrlParam( paramName ) {
|
||||
var reParam = new RegExp( '(?:[\?&]|&)' + paramName + '=([^&]+)', 'i' ) ;
|
||||
var match = window.location.search.match(reParam) ;
|
||||
|
||||
return ( match && match.length > 1 ) ? match[ 1 ] : null ;
|
||||
}
|
||||
var funcNum = getUrlParam( 'CKEditorFuncNum' ),
|
||||
t = getUrlParam('CKEditor').split("_"),
|
||||
language = t[t.length-1];
|
||||
|
||||
language = (language == "tw" ? "zh_tw" : language);
|
||||
|
||||
})
|
||||
@@ -38,7 +38,11 @@ if($.support.touch) {
|
||||
$checked.each(function() {
|
||||
if(!$(this).closest('div').hasClass('togglebox')) {
|
||||
$(this).wrap('<div class="toggle-control"/>');
|
||||
$(this).wrap('<div class="togglebox" />');
|
||||
if($(this).attr('type') == "hidden" && $(this).attr('value')) {
|
||||
$(this).wrap('<div class="togglebox disabled" />');
|
||||
} else {
|
||||
$(this).wrap('<div class="togglebox" />');
|
||||
}
|
||||
$('<label><b></b></label>').insertAfter($(this));
|
||||
if($(this).data().deploy) {
|
||||
switch($(this).data().deploy) {
|
||||
@@ -252,8 +256,8 @@ if($.support.touch) {
|
||||
$arrow = $('.sub-nav-arrow'),
|
||||
$wrap = $('#main-wrap'),
|
||||
$wrapLeft = $wrap.css('margin-left'),
|
||||
$position = 0,
|
||||
$arrowHeightFormat = $('.position').height()-8;
|
||||
$position = $arrow.outerHeight(true)*-1,
|
||||
$arrowHeightFormat = $arrow.outerHeight(true)/2;
|
||||
if($('#sidebar').length>0) {
|
||||
$wrap.css({'margin-left': 61});
|
||||
$wrapLeft = 61;
|
||||
@@ -270,7 +274,7 @@ if($.support.touch) {
|
||||
}
|
||||
|
||||
// Arrow defaults position
|
||||
$position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
|
||||
$position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
|
||||
$arrow.css({
|
||||
'top': $position,
|
||||
});
|
||||
@@ -281,7 +285,7 @@ if($.support.touch) {
|
||||
$el.on(mouseenterEvent, function(e) {
|
||||
$block.siblings().removeClass('show').eq($(this).index()).addClass('show');
|
||||
$arrow.stop(true, false).animate({
|
||||
top: ($(this).offset().top-$(this).height()/2)+$arrowHeightFormat-$(document).scrollTop(),
|
||||
top: ($(this).position().top+$(this).height()/2)-$arrowHeightFormat+$('.scroller').position().top,
|
||||
},{
|
||||
duration: 500,
|
||||
easing: 'easeInOutBack',
|
||||
@@ -325,7 +329,7 @@ if($.support.touch) {
|
||||
})
|
||||
};
|
||||
// $el.on('mouseleave', function() {
|
||||
// $el.hasClass('active') ? $position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop() : 0;
|
||||
// $el.hasClass('active') ? $position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
|
||||
// $(this).hasClass('active') ? '':$(this).children('span').removeClass('hover');
|
||||
// });
|
||||
$block.on({
|
||||
@@ -372,9 +376,9 @@ if($.support.touch) {
|
||||
|
||||
|
||||
if($elIndex === null) {
|
||||
$position = 0;
|
||||
$position = $arrow.outerHeight(true)*-1;
|
||||
} else {
|
||||
$position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
|
||||
$position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
|
||||
}
|
||||
$arrow.stop(true, false).animate({
|
||||
top: $position,
|
||||
@@ -409,8 +413,8 @@ if($.support.touch) {
|
||||
});
|
||||
// Sidebar Nav Drag
|
||||
if(/MSIE 8.0/g.test($ua)){
|
||||
$arrow.remove();
|
||||
$sidebarMenu.addClass('nano')
|
||||
.css({'position': 'relative', 'top': '0px'})
|
||||
.children('.scroller')
|
||||
.addClass('content')
|
||||
.removeClass('scroller');
|
||||
@@ -472,6 +476,15 @@ if($.support.touch) {
|
||||
}(window.jQuery);
|
||||
|
||||
|
||||
var ini = function() {
|
||||
api = this
|
||||
api.modal = function(e) {
|
||||
$('#dialog a.delete-item').attr("href", e);
|
||||
$('#dialog').modal('show');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var ini = function() {
|
||||
api = this
|
||||
api.modal = function(e) {
|
||||
@@ -490,15 +503,14 @@ function openSlide() {
|
||||
$(window).resize(function() {
|
||||
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
|
||||
})
|
||||
$openSlide.each(function() {
|
||||
if($(this).hasClass('view-page')) {
|
||||
$(this).pageslide({ W: $pageslideW, iframe: true });
|
||||
} else if($('.item-groups').length) {
|
||||
$(this).pageslide({ W: 324 });
|
||||
} else {
|
||||
$(this).pageslide();
|
||||
};
|
||||
});
|
||||
if($('.item-groups').length) {
|
||||
$os = $openSlide.not('.view-page');
|
||||
$vp = $openSlide.filter('.view-page.open-slide');
|
||||
$os.pageslide({ W: 624 });
|
||||
$vp.pageslide({ W: $pageslideW, iframe: true });
|
||||
} else {
|
||||
$openSlide.pageslide();
|
||||
};
|
||||
$('.bottomnav .open-slide').on('click', function() {
|
||||
$('.table tr').removeClass('active');
|
||||
$('.filter-item').removeClass('active')
|
||||
@@ -506,8 +518,8 @@ function openSlide() {
|
||||
}
|
||||
|
||||
function formTip() {
|
||||
if($('.main-forms').length && $('.add-on').length) {
|
||||
$('.main-forms .add-on, .main-forms .file-link').tooltip({
|
||||
if($('.main-forms').length && $('.add-on').length || $('.phtot-action').length) {
|
||||
$('.main-forms .add-on, .main-forms .file-link, .phtot-action li').tooltip({
|
||||
position: {
|
||||
my: "center bottom-4",
|
||||
at: "center top"
|
||||
@@ -565,7 +577,7 @@ $(function() {
|
||||
if($('#sidebar').length) {
|
||||
if(!/MSIE 8.0/g.test(navigator.userAgent)){
|
||||
document.getElementById('sidebar').addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
|
||||
};
|
||||
}
|
||||
}
|
||||
if($('#pageslide').length) {
|
||||
openSlide();
|
||||
|
||||
@@ -26,10 +26,11 @@ CKEDITOR.editorConfig = function( config ) {
|
||||
// config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
|
||||
// config.filebrowserUploadUrl = '/uploader/upload.php';
|
||||
|
||||
config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>"
|
||||
config.filebrowserUploadUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>"
|
||||
config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path %>?module_app_id=<%= ModuleApp.first(conditions: {title: 'Asset'}).id.to_s %>";
|
||||
config.filebrowserImageBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path %>?type=images&module_app_id=<%= ModuleApp.first(conditions: {title: 'Asset'}).id.to_s %>";
|
||||
// config.filebrowserUploadUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>";
|
||||
|
||||
config.contentsCss = '/orbit_4.0.1/assets/javascripts/lib/ckeditor/plugins/stylesheetparser/samples/assets/sample.css';
|
||||
// config.contentsCss = '/orbit_4.0.1/assets/javascripts/lib/ckeditor/plugins/stylesheetparser/samples/assets/sample.css';
|
||||
|
||||
// Load from a list of definitions.
|
||||
// config.stylesSet = [
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.md or http://ckeditor.com/license
|
||||
*/
|
||||
(function(a){CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;"undefined"!=typeof a&&(a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g))var k=d,d=g,g=k;var i=[],d=d||{};this.each(function(){var b=
|
||||
a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,j=new a.Deferred;i.push(j.promise());if(c&&!f)g&&g.apply(c,[this]),j.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),j.resolve()):setTimeout(arguments.callee,100)},0)},null,null,9999);else{if(d.autoUpdateElement||"undefined"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",
|
||||
!0);c=a(this).is("textarea")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data("ckeditorInstance",c);c.on("instanceReady",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on("dataReady",function(){b.trigger("dataReady.ckeditor",[e])});e.on("setData",function(a){b.trigger("setData.ckeditor",[e,a.data])});e.on("getData",function(a){b.trigger("getData.ckeditor",[e,a.data])},999);e.on("destroy",function(){b.trigger("destroy.ckeditor",[e])});e.on("save",function(){a(h.form).submit();
|
||||
return!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",c)})}e.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[e]);g&&g.apply(e,[h]);j.resolve()}else setTimeout(arguments.callee,
|
||||
100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,i).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}}),CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var k=this,i=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});i.push(f.promise());
|
||||
return!0}return g.call(b,d)});if(i.length){var b=new a.Deferred;a.when.apply(this,i).done(function(){b.resolveWith(k)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}})))})(window.jQuery);
|
||||
@@ -17,4 +17,8 @@
|
||||
//= require desktop/jquery.gridster
|
||||
//= require desktop/books_pages
|
||||
//= require select2
|
||||
//= require jquery.isotope.min.js
|
||||
//= require orbit_js_1.0.1-front-end
|
||||
//= require ckeditor/init
|
||||
//= require ckeditor/jquery-ckeditor
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
//for forms
|
||||
//form-type = "ajax_form" will turn form to ajax submit
|
||||
//notification = string will display after the form is succesfully submitted
|
||||
//response-type = "json"|"script"|"xml|html" default is json
|
||||
|
||||
//for layout tinyscrollbar
|
||||
//content-layout="datalist|column|simple" datalist is for data list from database.. column is usually for forms and some other pages.. simple is without any columns, the page will be displayed as it is.. base width will be considered the default width for tinyscrollbar
|
||||
@@ -28,6 +29,9 @@
|
||||
//column="true" this option is only for column layout... the columns will be formed on this column=true attribute and it should be a div
|
||||
//item=true this attribute should be present in the li tag. li with this attribute are considered as a separate item.
|
||||
|
||||
//enableLanguageSelect( dom ) children <a> will be binded with language, data-lang = string ex "en"|"zh_tw" will toggle all data-langunage throughout the page
|
||||
//enableSharing( dom ) children <a> will be binded with share, data-mode = string ex "public"|"private" will change the mode for all the selected items. the dom with class should have data-link = url data-var = vaiable_name, default will be mode
|
||||
|
||||
|
||||
$.extend($.expr[':'], {
|
||||
'containsi': function (elem, i, match, array) {
|
||||
@@ -222,7 +226,8 @@ var orbitDesktop = function(dom){
|
||||
|
||||
this.bindDesktopEvents = function(){ //this function will bind the global handlers to thd desktop, for example doc
|
||||
$(".docklist a").click(function(){
|
||||
o.menu_item($(this));
|
||||
if( !$( this ).parent().hasClass( 'disable' ) )
|
||||
o.menu_item($(this));
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -247,16 +252,12 @@ var orbitDesktop = function(dom){
|
||||
|
||||
$("body").on("submit","form[form-type=ajax_form]",function(){
|
||||
var callback_method = $(this).attr("callback-method"),
|
||||
dt = null,
|
||||
dt = ($(this).attr("response-type") == null ? "json" : $(this).attr("response-type")),
|
||||
notification = $(this).attr("notification");
|
||||
dt = $(this).attr("response-type");
|
||||
if(dt == null){
|
||||
dt = "json";
|
||||
}
|
||||
var options = {
|
||||
dataType : dt,
|
||||
resetForm : true,
|
||||
success:function(responseText, statusText, xhr, $form){
|
||||
resetForm : false,
|
||||
success: function(responseText, statusText, xhr, $form){
|
||||
if(typeof callback_method != "undefined"){
|
||||
if(callback_method != ""){
|
||||
window.o[o.data_method][callback_method](responseText,statusText,xhr,$form);
|
||||
@@ -265,7 +266,7 @@ var orbitDesktop = function(dom){
|
||||
if(typeof notification == "string")
|
||||
o.notify(notification,"success");
|
||||
},
|
||||
error:function(){
|
||||
error: function(){
|
||||
o.notify("Please try again later!","imp");
|
||||
}
|
||||
}
|
||||
@@ -274,10 +275,11 @@ var orbitDesktop = function(dom){
|
||||
});
|
||||
|
||||
$("body").on("click","*[ajax-remote]",function(){
|
||||
var $e = $(this);
|
||||
var t = $e.attr("ajax-remote");
|
||||
var classes_to_toggle = $e.attr("toggle-onclick");
|
||||
var exe = $e.attr("callback-method"); // (typeof $e.attr("callback-method") == "function"? $e.attr("callback-method") : "");
|
||||
var $e = $(this),
|
||||
t = $e.attr("ajax-remote"),
|
||||
classes_to_toggle = $e.attr("toggle-onclick"),
|
||||
responsetype = $e.attr('response-type') ? $e.attr('response-type') : "html",
|
||||
exe = $e.attr("callback-method"); // (typeof $e.attr("callback-method") == "function"? $e.attr("callback-method") : "");
|
||||
if(classes_to_toggle){
|
||||
$e.toggleClass(classes_to_toggle);
|
||||
}
|
||||
@@ -289,9 +291,9 @@ var orbitDesktop = function(dom){
|
||||
}
|
||||
var ca = $e.attr("content-holder");
|
||||
var a = function(){
|
||||
|
||||
$.ajax({
|
||||
type : t,
|
||||
dataType : responsetype,
|
||||
url : $e.attr("href"),
|
||||
success : function(data){
|
||||
if(typeof data == "string"){
|
||||
@@ -302,6 +304,7 @@ var orbitDesktop = function(dom){
|
||||
// $("div[container=true]").html(data);
|
||||
}
|
||||
}
|
||||
|
||||
if(exe)
|
||||
window.o[o.data_method][exe](data,$e);
|
||||
if(t == "delete"){
|
||||
@@ -330,13 +333,9 @@ var orbitDesktop = function(dom){
|
||||
});
|
||||
|
||||
$(window).resize(function(){
|
||||
// var ww = $(window).width();
|
||||
// $("img#thmbackground").attr({"width":ww});
|
||||
// if( $('.tinycanvas').length > 0 ){
|
||||
$('.tinycanvas').tinyscrollbar_update('relative');
|
||||
// }
|
||||
if($(o.contentHolder).find("div.app_frame").length > 0){
|
||||
$(o.contentHolder).find("div.app_frame").each(function(){
|
||||
$('.tinycanvas').tinyscrollbar_update('relative');
|
||||
if($("body").find("div.app_frame").length > 0){
|
||||
$("body").find("div.app_frame").each(function(){
|
||||
var app_holder_height = $(this).height() - 60;
|
||||
var app_holder_width = $(this).width();
|
||||
$(this).find("div.app_holder").height(app_holder_height);
|
||||
@@ -361,14 +360,6 @@ var orbitDesktop = function(dom){
|
||||
var extractLast = function( term ) {
|
||||
return split( term ).pop();
|
||||
}
|
||||
|
||||
|
||||
// $("body").on("keydown","*[autocomplete]", function( event ) {
|
||||
// var autocompleteList = $(this).attr("autocomplete-list");
|
||||
// console.log($(this));
|
||||
|
||||
// });
|
||||
//
|
||||
};
|
||||
|
||||
this.layout_data = function(h){
|
||||
@@ -460,13 +451,51 @@ var orbitDesktop = function(dom){
|
||||
$("div[container=true] div.overview").html(f.markup);
|
||||
var settings = {main : ".tinycanvas"};
|
||||
var tsettings = {};
|
||||
|
||||
var ist = function(){
|
||||
$('#holder').css('height', $('#container').height() - 72);
|
||||
$('.tinycanvas').css('height', $('#holder').height() - 36);
|
||||
var dom = $("*[isotope=true]").isotope({
|
||||
layoutMode: 'fitColumns',
|
||||
onLayout: function($elems, instance){
|
||||
$elems.width(base_width);
|
||||
setTimeout(function(){
|
||||
dom.isotope('reLayout',function(){
|
||||
$("div[container=true] div.overview").width(dom.width());
|
||||
o.tinyscrollbar.tinyscrollbar_update("relative");
|
||||
})
|
||||
},500);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$(window).resize(function(){
|
||||
if($("*[isotope=true]").length > 0){
|
||||
$('#holder').css('height', $('#container').height() - 72);
|
||||
$('.tinycanvas').css('height', $('#panel_r').height() - 36);
|
||||
$(".isotope").isotope('reLayout',function(){
|
||||
$("div[container=true] div.overview").width($(".isotope").width());
|
||||
o.tinyscrollbar.tinyscrollbar_update("relative");
|
||||
});
|
||||
}
|
||||
});
|
||||
$('.s_grid_h_full').parent().css('height','100%');
|
||||
|
||||
return dom;
|
||||
}
|
||||
|
||||
if($("*[isotope=true]").length > 0){
|
||||
var dom = ist();
|
||||
f.width = dom.width();
|
||||
}
|
||||
|
||||
if(f.width){
|
||||
settings.fill = f.width;
|
||||
}
|
||||
if(pagination_variable){
|
||||
var page_no = 1;
|
||||
tsettings.onMove = function(x){
|
||||
if(x < 50){
|
||||
tsettings.onMove = function(e){
|
||||
if(e < 50){
|
||||
if(!pagination_link)
|
||||
pagination_link = o.lastlink;
|
||||
if(o.paging){
|
||||
@@ -477,6 +506,8 @@ var orbitDesktop = function(dom){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// call other functions here
|
||||
o.tinyscrollbar_ext(settings,tsettings);
|
||||
o.simple_drop_down();
|
||||
@@ -484,6 +515,7 @@ var orbitDesktop = function(dom){
|
||||
o.use_select2();
|
||||
o.check_simple_layout();
|
||||
}
|
||||
|
||||
this.paging = true;
|
||||
this.pagination = function(link,variable,page_no){
|
||||
var retvalue = null;
|
||||
@@ -492,17 +524,31 @@ var orbitDesktop = function(dom){
|
||||
type : "get",
|
||||
success : function(html){
|
||||
var f = o.layout_data.generate_layout_html(html);
|
||||
// console.log(f.total)
|
||||
if(f.total > 0){
|
||||
$("div[container=true] .overview").append(f.markup);
|
||||
if(f.width){
|
||||
var w = $("div[container=true] .overview").width();
|
||||
$("div[container=true] .overview").width(w+f.width);
|
||||
if($("*[isotope=true]").length > 0){
|
||||
var $ul = $(f.markup),
|
||||
elems = $ul.children("li[item=true]");
|
||||
if(elems.length > 1)
|
||||
o.paging = true;
|
||||
else
|
||||
o.paging = false;
|
||||
$(".isotope").append(elems).isotope("appended",elems,function(){
|
||||
$(".isotope").isotope("reLayout",function(){
|
||||
$("div[container=true] div.overview").width($(".isotope").width()+50);
|
||||
o.tinyscrollbar.tinyscrollbar_update("relative");
|
||||
})
|
||||
});
|
||||
}else{
|
||||
if(f.total > 0){
|
||||
$("div[container=true] .overview").append(f.markup);
|
||||
if(f.width){
|
||||
var w = $("div[container=true] .overview").width();
|
||||
$("div[container=true] .overview").width(w+f.width);
|
||||
}
|
||||
o.tinyscrollbar.tinyscrollbar_update("relative");
|
||||
o.paging = true;
|
||||
} else {
|
||||
o.paging = false;
|
||||
}
|
||||
o.tinyscrollbar.tinyscrollbar_update("relative");
|
||||
o.paging = true;
|
||||
} else {
|
||||
o.paging = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -655,6 +701,15 @@ var orbitDesktop = function(dom){
|
||||
}
|
||||
})
|
||||
o.highlight_sub_menu_item(dom);
|
||||
} else {
|
||||
o.lastlink = dom.attr("href");
|
||||
$.ajax({
|
||||
url : dom.attr("href"),
|
||||
type : "get",
|
||||
success : function(data){
|
||||
o.layout_data(data);
|
||||
}
|
||||
})
|
||||
}
|
||||
if(dom.length == 0)
|
||||
o.layout_data(data);
|
||||
@@ -1825,6 +1880,42 @@ var orbitDesktop = function(dom){
|
||||
}
|
||||
}
|
||||
}
|
||||
this.enablelanguageSelect = function(){
|
||||
$(".language_select a").click(function(event) {
|
||||
$("*[data-language]").hide();
|
||||
$("*[data-language="+$(this).data("lang")+"]").show();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
this.enableSharing = function( dom ){
|
||||
var el = $( dom ),
|
||||
variable = ( el.data( 'var' ) ? el.data( "var" ) : "mode"),
|
||||
_url = el.data( 'link' ) + "?" + variable + "=",
|
||||
classes = [];
|
||||
|
||||
el.find( "a" ).each( function(){
|
||||
classes.push( $( this ).attr( "item-class" ) ? $( this ).attr( "item-class" ) : $( this ).data( 'mode' ) );
|
||||
})
|
||||
|
||||
el.find( "a" ).click( function(){
|
||||
var ids = [],
|
||||
mode = $( this ).data( 'mode' ),
|
||||
inject_class = $( this ).attr( 'item-class' ) ? $( this ).attr( 'item-class' ) : mode;
|
||||
|
||||
$( ".overview li[item=true] a.icon-check" ).each( function(){
|
||||
ids.push( $( this ).data( 'id' ) );
|
||||
$( "li[data-id="+ $( this ).data( 'id' ) +"]").removeClass( classes.join( " " ) ).addClass( inject_class );
|
||||
})
|
||||
$.ajax({
|
||||
url : _url + mode,
|
||||
data : {"ids" : ids},
|
||||
datatype : "json",
|
||||
})
|
||||
return false;
|
||||
})
|
||||
}
|
||||
|
||||
this.minimizeBarManager = function(){
|
||||
var minimizedApps = [],
|
||||
minimizeBar = $("#minimizebar");
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* Isotope v1.5.25
|
||||
* An exquisite jQuery plugin for magical layouts
|
||||
* http://isotope.metafizzy.co
|
||||
*
|
||||
* Commercial use requires one-time purchase of a commercial license
|
||||
* http://isotope.metafizzy.co/docs/license.html
|
||||
*
|
||||
* Non-commercial use is licensed under the MIT License
|
||||
*
|
||||
* Copyright 2013 Metafizzy
|
||||
*/
|
||||
(function(a,b,c){"use strict";var d=a.document,e=a.Modernizr,f=function(a){return a.charAt(0).toUpperCase()+a.slice(1)},g="Moz Webkit O Ms".split(" "),h=function(a){var b=d.documentElement.style,c;if(typeof b[a]=="string")return a;a=f(a);for(var e=0,h=g.length;e<h;e++){c=g[e]+a;if(typeof b[c]=="string")return c}},i=h("transform"),j=h("transitionProperty"),k={csstransforms:function(){return!!i},csstransforms3d:function(){var a=!!h("perspective");if(a){var c=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),d="@media ("+c.join("transform-3d),(")+"modernizr)",e=b("<style>"+d+"{#modernizr{height:3px}}"+"</style>").appendTo("head"),f=b('<div id="modernizr" />').appendTo("html");a=f.height()===3,f.remove(),e.remove()}return a},csstransitions:function(){return!!j}},l;if(e)for(l in k)e.hasOwnProperty(l)||e.addTest(l,k[l]);else{e=a.Modernizr={_version:"1.6ish: miniModernizr for Isotope"};var m=" ",n;for(l in k)n=k[l](),e[l]=n,m+=" "+(n?"":"no-")+l;b("html").addClass(m)}if(e.csstransforms){var o=e.csstransforms3d?{translate:function(a){return"translate3d("+a[0]+"px, "+a[1]+"px, 0) "},scale:function(a){return"scale3d("+a+", "+a+", 1) "}}:{translate:function(a){return"translate("+a[0]+"px, "+a[1]+"px) "},scale:function(a){return"scale("+a+") "}},p=function(a,c,d){var e=b.data(a,"isoTransform")||{},f={},g,h={},j;f[c]=d,b.extend(e,f);for(g in e)j=e[g],h[g]=o[g](j);var k=h.translate||"",l=h.scale||"",m=k+l;b.data(a,"isoTransform",e),a.style[i]=m};b.cssNumber.scale=!0,b.cssHooks.scale={set:function(a,b){p(a,"scale",b)},get:function(a,c){var d=b.data(a,"isoTransform");return d&&d.scale?d.scale:1}},b.fx.step.scale=function(a){b.cssHooks.scale.set(a.elem,a.now+a.unit)},b.cssNumber.translate=!0,b.cssHooks.translate={set:function(a,b){p(a,"translate",b)},get:function(a,c){var d=b.data(a,"isoTransform");return d&&d.translate?d.translate:[0,0]}}}var q,r;e.csstransitions&&(q={WebkitTransitionProperty:"webkitTransitionEnd",MozTransitionProperty:"transitionend",OTransitionProperty:"oTransitionEnd otransitionend",transitionProperty:"transitionend"}[j],r=h("transitionDuration"));var s=b.event,t=b.event.handle?"handle":"dispatch",u;s.special.smartresize={setup:function(){b(this).bind("resize",s.special.smartresize.handler)},teardown:function(){b(this).unbind("resize",s.special.smartresize.handler)},handler:function(a,b){var c=this,d=arguments;a.type="smartresize",u&&clearTimeout(u),u=setTimeout(function(){s[t].apply(c,d)},b==="execAsap"?0:100)}},b.fn.smartresize=function(a){return a?this.bind("smartresize",a):this.trigger("smartresize",["execAsap"])},b.Isotope=function(a,c,d){this.element=b(c),this._create(a),this._init(d)};var v=["width","height"],w=b(a);b.Isotope.settings={resizable:!0,layoutMode:"masonry",containerClass:"isotope",itemClass:"isotope-item",hiddenClass:"isotope-hidden",hiddenStyle:{opacity:0,scale:.001},visibleStyle:{opacity:1,scale:1},containerStyle:{position:"relative",overflow:"hidden"},animationEngine:"best-available",animationOptions:{queue:!1,duration:800},sortBy:"original-order",sortAscending:!0,resizesContainer:!0,transformsEnabled:!0,itemPositionDataEnabled:!1},b.Isotope.prototype={_create:function(a){this.options=b.extend({},b.Isotope.settings,a),this.styleQueue=[],this.elemCount=0;var c=this.element[0].style;this.originalStyle={};var d=v.slice(0);for(var e in this.options.containerStyle)d.push(e);for(var f=0,g=d.length;f<g;f++)e=d[f],this.originalStyle[e]=c[e]||"";this.element.css(this.options.containerStyle),this._updateAnimationEngine(),this._updateUsingTransforms();var h={"original-order":function(a,b){return b.elemCount++,b.elemCount},random:function(){return Math.random()}};this.options.getSortData=b.extend(this.options.getSortData,h),this.reloadItems(),this.offset={left:parseInt(this.element.css("padding-left")||0,10),top:parseInt(this.element.css("padding-top")||0,10)};var i=this;setTimeout(function(){i.element.addClass(i.options.containerClass)},0),this.options.resizable&&w.bind("smartresize.isotope",function(){i.resize()}),this.element.delegate("."+this.options.hiddenClass,"click",function(){return!1})},_getAtoms:function(a){var b=this.options.itemSelector,c=b?a.filter(b).add(a.find(b)):a,d={position:"absolute"};return c=c.filter(function(a,b){return b.nodeType===1}),this.usingTransforms&&(d.left=0,d.top=0),c.css(d).addClass(this.options.itemClass),this.updateSortData(c,!0),c},_init:function(a){this.$filteredAtoms=this._filter(this.$allAtoms),this._sort(),this.reLayout(a)},option:function(a){if(b.isPlainObject(a)){this.options=b.extend(!0,this.options,a);var c;for(var d in a)c="_update"+f(d),this[c]&&this[c]()}},_updateAnimationEngine:function(){var a=this.options.animationEngine.toLowerCase().replace(/[ _\-]/g,""),b;switch(a){case"css":case"none":b=!1;break;case"jquery":b=!0;break;default:b=!e.csstransitions}this.isUsingJQueryAnimation=b,this._updateUsingTransforms()},_updateTransformsEnabled:function(){this._updateUsingTransforms()},_updateUsingTransforms:function(){var a=this.usingTransforms=this.oLine truncated
|
||||
@@ -43,8 +43,14 @@ $(function(){
|
||||
placeholder: 'placeholder',
|
||||
startCollapsed: true,
|
||||
disableNesting: 'no-nest',
|
||||
stop: function(event, ui) {
|
||||
$.post("<%= Rails.application.routes.url_helpers.admin_update_position_path %>", { id: ui.item.attr('id'), parent_id: (ui.item.parent().closest('li').attr('id') || ui.item.parent().closest('ol').attr('id')), position: ui.item.index() } );
|
||||
update: function(event, ui) {
|
||||
var position = null;
|
||||
if($(ui.item).closest('ol').hasClass('item-groups')) {
|
||||
position = $(ui.item).index() - 1;
|
||||
} else {
|
||||
position = $(ui.item).index();
|
||||
};
|
||||
$.post("<%= Rails.application.routes.url_helpers.admin_update_position_path %>", { id: ui.item.attr('id'), parent_id: (ui.item.parent().closest('li').attr('id') || ui.item.parent().closest('ol').attr('id')), position: position } );
|
||||
}
|
||||
});
|
||||
$(".sortable").delegate(".brand, .delete", clickEvent, function(e){
|
||||
|
||||
@@ -7,32 +7,29 @@ function append_id(){
|
||||
};
|
||||
}
|
||||
|
||||
$("div.editable").live("mouseenter mouseleave", function (event) {
|
||||
$(this).children('.edit_link').toggle();
|
||||
$(document).on('change', 'select', function(e) {
|
||||
if(!e.target.className == 'widget_field_select') {
|
||||
switch(e.target.id) {
|
||||
case 'page_module_app_id':
|
||||
$.getScript($(this).attr('rel') + '?module_app_id='+$(this).val() + append_id());
|
||||
break;
|
||||
case 'page_app_frontend_url':
|
||||
case 'page_part_widget_path':
|
||||
$.getScript($(this).attr('rel') +'?frontend=' + $(this).val() + '&module_app_id=' + $("#module_app_list select").val() + append_id() );
|
||||
break;
|
||||
case 'page_design':
|
||||
$.getScript($(this).attr('rel') + '?design_id=' + $(this).val() + append_id());
|
||||
break;
|
||||
case 'page_part_public_r_tag':
|
||||
$.getScript($(this).attr('rel') + '?type=' + $(this).val() + append_id());
|
||||
break;
|
||||
};
|
||||
} else {
|
||||
$.getScript($(this).attr('rel') + '?widget_field_value='+ $(this).val()+'&dom_id=' + $(this).attr("id") + '&field_seri=' +$(this).attr('field_seri')+ '&module_app_id=' +$("#page_module_app_id,page_part_module_app_id").val() + append_id() );
|
||||
}
|
||||
});
|
||||
|
||||
$("#page_design").live('change', function() {
|
||||
$.getScript($(this).attr('rel') + '?design_id=' + $(this).val() + append_id());
|
||||
});
|
||||
|
||||
|
||||
$("#module_app_list select").live('change', function() {
|
||||
$.getScript($(this).attr('rel') + '?module_app_id='+$(this).val() + append_id());
|
||||
});
|
||||
|
||||
$("#widget_list select, #frontend_list select").live('change', function() {
|
||||
$.getScript($(this).attr('rel') +'?frontend=' + $(this).val() + '&module_app_id=' + $("#module_app_list select").val() + append_id() );
|
||||
});
|
||||
|
||||
$("#tag_list select").live('change', function() {
|
||||
$.getScript($(this).attr('rel') + '?type=' + $(this).val() + append_id() );
|
||||
});
|
||||
|
||||
$("select.widget_field_select").live('change', function() {
|
||||
$.getScript($(this).attr('rel') + '?widget_field_value='+ $(this).val()+'&dom_id=' + $(this).attr("id") + '&field_seri=' +$(this).attr('field_seri')+ '&module_app_id=' +$("#page_module_app_id,page_part_module_app_id").val() + append_id() );
|
||||
});
|
||||
|
||||
$('.part_kind').live('click', function() {
|
||||
$(document).on('click', '.part_kind', function(event) {
|
||||
$('.part_kind_partial').hide();
|
||||
$('#part_' + $(this).attr('value')).show();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,124 @@
|
||||
/* ===================================================
|
||||
* jquery-lite-image-resize v.1.0.1
|
||||
* https://github.com/RayChang/jquery-lite-image-resize
|
||||
* ===================================================
|
||||
* How to use ?
|
||||
*
|
||||
* HTML element closest to the image to add class "resizeimg".
|
||||
*
|
||||
* Example:
|
||||
* <div class="resizeimg">
|
||||
* <img src="images url" />
|
||||
* </div>
|
||||
*
|
||||
* Or you can use:
|
||||
* $('your class').rsImg();
|
||||
*
|
||||
* Note : HTML structure must be a structure like the example above.
|
||||
*
|
||||
*/
|
||||
|
||||
!function ($) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var ResizeImg = function(element) {
|
||||
this.element = $(element);
|
||||
this.element.data('exists', true);
|
||||
};
|
||||
ResizeImg.prototype.resize = function() {
|
||||
var $img = this.element.children('img').eq(0),
|
||||
elW = this.element.innerWidth(),
|
||||
elH = this.element.innerHeight(),
|
||||
elScale = elW/elH,
|
||||
image = document.createElement("img");
|
||||
image.src = $img.attr('src');
|
||||
this.element.css({
|
||||
'position': 'relative',
|
||||
'overflow': 'hidden',
|
||||
});
|
||||
function imageLoadComplete() {
|
||||
var imgW = image.width,
|
||||
imgH = image.height,
|
||||
imgScale = imgW/imgH,
|
||||
portrait = {
|
||||
'position': 'absolute',
|
||||
'height': '100%',
|
||||
'width': 'auto',
|
||||
'max-width': 'none',
|
||||
'left': '50%',
|
||||
'top': 0,
|
||||
'margin-left': imgW*(elH/imgH)/-2
|
||||
},
|
||||
landscape = {
|
||||
'position': 'absolute',
|
||||
'height': 'auto',
|
||||
'max-height': 'none',
|
||||
'width': '100%',
|
||||
'left': 0,
|
||||
'top': '50%',
|
||||
'margin-top': imgH*(elW/imgW)/-2
|
||||
},
|
||||
center = {
|
||||
'position': 'absolute',
|
||||
'height': '100%',
|
||||
'width': '100%',
|
||||
'top': 0,
|
||||
'left': 0
|
||||
};
|
||||
if(imgScale < 1) {
|
||||
if(elScale < 1) {
|
||||
if(elScale > imgScale) {
|
||||
$img.css(landscape);
|
||||
} else {
|
||||
$img.css(portrait);
|
||||
};
|
||||
} else {
|
||||
$img.css(landscape);
|
||||
};
|
||||
};
|
||||
|
||||
if(imgScale > 1) {
|
||||
if(elScale > 1) {
|
||||
if(elScale > imgScale) {
|
||||
$img.css(landscape);
|
||||
} else {
|
||||
$img.css(portrait);
|
||||
};
|
||||
} else {
|
||||
$img.css(portrait);
|
||||
};
|
||||
};
|
||||
|
||||
if(imgScale == 1) {
|
||||
if(elScale < 1) {
|
||||
$img.css(portrait);
|
||||
} else if(elScale > 1) {
|
||||
$img.css(landscape);
|
||||
} else {
|
||||
$img.css(center);
|
||||
};
|
||||
};
|
||||
$img.fadeTo(500, 1);
|
||||
|
||||
}
|
||||
if(/MSIE 8.0/g.test($ua)) {
|
||||
imageLoadComplete();
|
||||
} else {
|
||||
image.onload = imageLoadComplete;
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.rsImg = function () {
|
||||
this.each(function () {
|
||||
if(!$(this).data('exists')) {
|
||||
$(this).children("img").fadeTo(0,0);
|
||||
new ResizeImg(this).resize();
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
$(function() {
|
||||
$('.resizeimg').rsImg();
|
||||
});
|
||||
}(window.jQuery);
|
||||
@@ -12,13 +12,14 @@
|
||||
!(function($){
|
||||
// Convenience vars for accessing elements
|
||||
var $body = $('#main-wrap'),
|
||||
$bottomNav = $('.bottomnav'),
|
||||
$pageslide = $('#pageslide'),
|
||||
$viewPage = $('#view-page');
|
||||
|
||||
var _sliding = false, // Mutex to assist closing only once
|
||||
_lastCaller; // Used to keep track of last element to trigger pageslide
|
||||
|
||||
// If the pageslide element doesn't exist, create it
|
||||
// If the pageslide element doesn't exist, create it
|
||||
if( $pageslide.length == 0 ) {
|
||||
$pageslide = $('<div />').attr( 'id', 'pageslide' )
|
||||
.css( 'display', 'none' )
|
||||
@@ -28,11 +29,12 @@
|
||||
/*
|
||||
* Private methods
|
||||
*/
|
||||
function _load( url, useIframe ) {
|
||||
function _load( url, useIframe, callback,element ) {
|
||||
// Are we loading an element from the page or a URL?
|
||||
if ( url.indexOf("#") === 0 ) {
|
||||
// Load a page element
|
||||
$(url).clone(true).appendTo( $pageslide.empty() ).show();
|
||||
if(callback)callback.call(this,$pageslide,element);
|
||||
} else {
|
||||
// Load a URL. Into an iframe?
|
||||
if( useIframe ) {
|
||||
@@ -49,9 +51,18 @@
|
||||
$viewPage.find('.content').html( iframe );
|
||||
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
|
||||
$viewPage.find('.content').empty();
|
||||
if(callback)callback.call(this,$viewPage,element);
|
||||
} else {
|
||||
$viewPage.find('.content').load(url, function(){
|
||||
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
|
||||
if($('#filter-default-tag').length) {
|
||||
$('#filter-default-tag').fastLiveFilter('.add-default-tags-list', '.filter-item', '.tag');
|
||||
addTagsTab();
|
||||
$('#view-page .card').cardCheck({
|
||||
item: $('#view-page input[type="checkbox"]'),
|
||||
});
|
||||
};
|
||||
if(callback)callback.call(this,$viewPage,element);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -64,10 +75,11 @@
|
||||
function _start( direction, speed ) {
|
||||
var slideWidth = $pageslide.outerWidth( true ),
|
||||
bodyAnimateIn = {},
|
||||
bottomnavAnimateIn = {},
|
||||
slideAnimateIn = {};
|
||||
|
||||
// If the slide is open or opening, just ignore the call
|
||||
if( $pageslide.is(':visible') || _sliding ) return;
|
||||
if( $pageslide.is(':visible') || _sliding ) return;
|
||||
_sliding = true;
|
||||
|
||||
switch( direction ) {
|
||||
@@ -83,6 +95,7 @@
|
||||
$pageslide.css({ left: '-' + (slideWidth-61) + 'px', right: 'auto' });
|
||||
};
|
||||
bodyAnimateIn['margin-left'] = '+=' + slideWidth;
|
||||
bottomnavAnimateIn['left'] = '+=' + slideWidth;
|
||||
if($(window).width() <= 1440 && slideWidth > 963 ) {
|
||||
bodyAnimateIn['width'] = $body.width();
|
||||
}
|
||||
@@ -92,6 +105,7 @@
|
||||
|
||||
// Animate the slide, and attach this slide's settings to the element
|
||||
$body.animate(bodyAnimateIn, speed);
|
||||
$bottomNav.animate(bottomnavAnimateIn, speed);
|
||||
$pageslide.show().animate(slideAnimateIn, speed, function() {
|
||||
_sliding = false;
|
||||
$pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
||||
@@ -108,7 +122,7 @@
|
||||
$.fn.pageslide = function(options) {
|
||||
var $elements = this;
|
||||
// On click
|
||||
$elements.on(clickEvent, function(e) {
|
||||
$elements.bind(clickEvent, function(e) {
|
||||
var $self = $(this),
|
||||
settings = $.extend({ href: $self.attr('href') }, options);
|
||||
|
||||
@@ -121,7 +135,7 @@
|
||||
$.pageslide.close();
|
||||
} else {
|
||||
// Open
|
||||
$.pageslide( settings );
|
||||
$.pageslide( settings,$self );
|
||||
|
||||
if($('.item-groups').length) {
|
||||
$('.item-menu > a, .navbar-inner').removeClass("active");
|
||||
@@ -140,7 +154,16 @@
|
||||
$pageName = $self.parents('.item-title').children('a').text();
|
||||
$('.page-name').text($pageName);
|
||||
} else if($('.tags-groups').length) {
|
||||
$(this).parents('li').addClass("active").siblings().removeClass("active").parent('ul').siblings().children('li').removeClass("active");
|
||||
if($('.gallery').length) {
|
||||
$(this).closest('.rgalbum').addClass('active-single').siblings().removeClass('active-single');
|
||||
if($(this).closest('ul').hasClass('photo-action')) {
|
||||
$('.checkbox').prop('checked', false);
|
||||
$('.rgalbum').removeClass('active');
|
||||
$('.deletephoto, .deselect, .addtags').addClass('hide');
|
||||
}
|
||||
} else {
|
||||
$(this).closest('li').addClass("active").siblings().removeClass("active").parent('ul').siblings().children('li').removeClass("active");
|
||||
}
|
||||
} else {
|
||||
$(this).parents("tr").addClass("active").siblings().removeClass("active");;
|
||||
}
|
||||
@@ -151,9 +174,9 @@
|
||||
};
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
/*
|
||||
};
|
||||
|
||||
/*
|
||||
* Default settings
|
||||
*/
|
||||
$.fn.pageslide.defaults = {
|
||||
@@ -164,18 +187,18 @@
|
||||
href: null, // Override the source of the content. Optional in most cases, but required when opening pageslide programmatically.
|
||||
W: 264,
|
||||
closeFn : null,
|
||||
openFn : null
|
||||
openFn : null,
|
||||
loadComplete : null
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
* Public methods
|
||||
*/
|
||||
|
||||
// Open the pageslide
|
||||
$.pageslide = function( options ) {
|
||||
// Extend the settings with those the user has provided
|
||||
|
||||
// Open the pageslide
|
||||
$.pageslide = function( options,element ) {
|
||||
// Extend the settings with those the user has provided
|
||||
var settings = $.extend({}, $.fn.pageslide.defaults, options);
|
||||
|
||||
var convertToFunction = function(fn){
|
||||
var x = new Function();
|
||||
x = fn;
|
||||
@@ -190,16 +213,19 @@
|
||||
if(settings.closeFn) {
|
||||
$.fn.pageslide.defaults.closeFn = convertToFunction(settings.closeFn);
|
||||
}
|
||||
|
||||
// Are we trying to open in different direction?
|
||||
if(settings.loadComplete) {
|
||||
$.fn.pageslide.defaults.loadComplete = convertToFunction(settings.loadComplete);
|
||||
}
|
||||
|
||||
// Are we trying to open in different direction?
|
||||
if( ($pageslide.is(':visible') && $pageslide.data( 'W' ) != settings.W) || ($pageslide.is(':visible') && $pageslide.data( 'direction' ) != settings.direction) ) {
|
||||
$.pageslide.close(function(){
|
||||
$pageslide.css({'width': settings.W});
|
||||
_load( settings.href, settings.iframe );
|
||||
_load( settings.href, settings.iframe, settings.loadComplete, element );
|
||||
_start( settings.direction, settings.speed );
|
||||
});
|
||||
} else {
|
||||
_load( settings.href, settings.iframe );
|
||||
_load( settings.href, settings.iframe, settings.loadComplete,element );
|
||||
if( $pageslide.is(':hidden') ) {
|
||||
$pageslide.css({'width': settings.W});
|
||||
_start( settings.direction, settings.speed );
|
||||
@@ -218,18 +244,19 @@
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
// Close the pageslide
|
||||
$.pageslide.close = function( callback ) {
|
||||
// Close the pageslide
|
||||
$.pageslide.close = function( callback ) {
|
||||
var $pageslide = $('#pageslide'),
|
||||
slideWidth = $pageslide.outerWidth( true ),
|
||||
speed = $pageslide.data( 'speed' ),
|
||||
bodyAnimateIn = {},
|
||||
bottomnavAnimateIn = {};
|
||||
slideAnimateIn = {}
|
||||
|
||||
|
||||
// If the slide isn't open, just ignore the call
|
||||
if( $pageslide.is(':hidden') || _sliding ) return;
|
||||
if( $pageslide.is(':hidden') || _sliding ) return;
|
||||
_sliding = true;
|
||||
|
||||
switch( $pageslide.data( 'direction' ) ) {
|
||||
@@ -239,9 +266,10 @@
|
||||
break;
|
||||
default:
|
||||
bodyAnimateIn['margin-left'] = '-=' + slideWidth;
|
||||
bottomnavAnimateIn['left'] = '-=' + slideWidth;
|
||||
slideAnimateIn['left'] = '-=' + slideWidth;
|
||||
if($pageslide.find('.preview').length) {
|
||||
// $pageslide.find('.preview').cycle('destroy');
|
||||
$pageslide.find('.preview').cycle('destroy');
|
||||
$pageslide.find('.preview img').removeAttr('style');
|
||||
}
|
||||
break;
|
||||
@@ -257,11 +285,13 @@
|
||||
}
|
||||
} else if($('.tags-groups').length) {
|
||||
$('.tags-groups').children('li').removeClass("active");
|
||||
$('.rgalbum').removeClass("active-single");
|
||||
} else {
|
||||
$("tr").removeClass("active");
|
||||
};
|
||||
|
||||
$pageslide.animate(slideAnimateIn, speed);
|
||||
$bottomNav.animate(bottomnavAnimateIn, speed);
|
||||
$body.animate(bodyAnimateIn, speed, function() {
|
||||
$pageslide.hide();
|
||||
_sliding = false;
|
||||
@@ -287,26 +317,33 @@
|
||||
$.fn.pageslide.defaults.openFn = callback;
|
||||
};
|
||||
};
|
||||
|
||||
/* Events */
|
||||
|
||||
// Don't let clicks to the pageslide close the window
|
||||
|
||||
//data load complete callback
|
||||
$.pageslide.loadComplete = function(callback) {
|
||||
if(typeof callback === "function"){
|
||||
$.fn.pageslide.defaults.loadComplete = callback;
|
||||
};
|
||||
};
|
||||
|
||||
/* Events */
|
||||
|
||||
// Don't let clicks to the pageslide close the window
|
||||
$pageslide.click(function(e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
|
||||
$(document).bind('click keyup', function(e) {
|
||||
// If this is a keyup event, let's see if it's an ESC key
|
||||
// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
|
||||
$(document).bind('click keyup', function(e) {
|
||||
// If this is a keyup event, let's see if it's an ESC key
|
||||
if( e.type == "keyup" && e.keyCode != 27) return;
|
||||
|
||||
// Make sure it's visible, and we're not modal
|
||||
if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {
|
||||
$.pageslide.close();
|
||||
}
|
||||
});
|
||||
|
||||
// Make sure it's visible, and we're not modal
|
||||
if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {
|
||||
$.pageslide.close();
|
||||
}
|
||||
});
|
||||
function setScroll(){
|
||||
$pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true }); // set nano scroll
|
||||
};
|
||||
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,101 @@
|
||||
var ListCheck = function(element) {
|
||||
this.element = $(element);
|
||||
this.element.data('exists', true);
|
||||
if(this.element.context.parentNode.tagName == "TD") {
|
||||
this.elementWrap = $(this.element.context.parentNode);
|
||||
this.elementWrap.addClass('listCheck');
|
||||
} else if(this.element.context.parentNode.tagName == "TH") {
|
||||
this.elementWrap = $(this.element.context.parentNode);
|
||||
this.elementWrap.addClass('listCheckHead');
|
||||
}
|
||||
this.element.before('<i class="icon-check-empty" />');
|
||||
};
|
||||
|
||||
$.fn.listCheck = function (callback) {
|
||||
this.each(function (i) {
|
||||
if(!$(this).data('exists')) {
|
||||
new ListCheck(this);
|
||||
};
|
||||
});
|
||||
this.on(clickEvent, function(e) {
|
||||
if($(this).prop('checked')) {
|
||||
$(this).siblings('i').addClass('icon-check').removeClass('icon-check-empty').closest('tr').addClass('checkHit');
|
||||
} else {
|
||||
$(this).siblings('i').addClass('icon-check-empty').removeClass('icon-check').closest('tr').removeClass('checkHit');
|
||||
};
|
||||
if ($(this).closest('.listCheckHead').length) {
|
||||
$('.listCheck .list-check').prop('checked', $(this).prop('checked'));
|
||||
if($(this).prop('checked')) {
|
||||
$('.listCheck i').addClass('icon-check').removeClass('icon-check-empty').closest('tr').addClass('checkHit');
|
||||
} else {
|
||||
$('.listCheck i').addClass('icon-check-empty').removeClass('icon-check').closest('tr').removeClass('checkHit');
|
||||
}
|
||||
};
|
||||
|
||||
var _isCheck = $('tbody .list-check').filter(':checked').length,
|
||||
_defaultLength = $('tbody .list-check').length;
|
||||
|
||||
if(_isCheck > 0 && _isCheck < _defaultLength) {
|
||||
$('.listCheckHead i').removeClass('icon-check-empty icon-check').addClass('icon-minus');
|
||||
} else if(!_isCheck) {
|
||||
$('.listCheckHead i').removeClass('icon-minus icon-check').addClass('icon-check-empty');
|
||||
} else {
|
||||
$('.listCheckHead i').removeClass('icon-check-empty icon-minus').addClass('icon-check');
|
||||
}
|
||||
_isCheck ? $('.list-active-btn').removeClass('disabled').data('actionable', true) : $('.list-active-btn').addClass('disabled').data('actionable', false);
|
||||
});
|
||||
};
|
||||
function clearCheck() {
|
||||
$('.list-check').each(function() {
|
||||
$(this).prop('checked', false);
|
||||
})
|
||||
}
|
||||
function actionSuccess(e) {
|
||||
$("tbody .list-check").each(function() {
|
||||
switch(e) {
|
||||
case 'list-be-hide':
|
||||
$(this).filter(':checked').closest('tr').addClass('checkHide');
|
||||
break;
|
||||
case 'list-be-show':
|
||||
$(this).filter(':checked').closest('tr').removeClass('checkHide');
|
||||
break;
|
||||
case 'list-be-remove':
|
||||
$(this).filter(':checked').closest('tr').fadeOut(300, function() {
|
||||
$(this).remove();
|
||||
});
|
||||
break;
|
||||
};
|
||||
$('.list-check').siblings('i').removeAttr('class').addClass('icon-check-empty').closest('tr').removeClass('checkHit');
|
||||
});
|
||||
clearCheck();
|
||||
}
|
||||
$(function() {
|
||||
var $t = null,
|
||||
_data = null;
|
||||
clearCheck();
|
||||
$('.list-check').listCheck();
|
||||
$('.list-active-btn').data('actionable', false).on(clickEvent, function(e) {
|
||||
$t = $(this)
|
||||
_data = $(this).data()
|
||||
_data.actionable ? $('#dialog').modal('show') : "";
|
||||
e.preventDefault();
|
||||
});
|
||||
$('.delete-item').on(clickEvent, function() {
|
||||
var _v = [];
|
||||
$("tbody .list-check").each(function() {
|
||||
this.checked && _v.push("ids[]="+this.value)
|
||||
});
|
||||
var _t = $t.attr("rel");
|
||||
if(_t.indexOf("?") > -1) {
|
||||
$.ajax(_t + "&" + _v.join("&")).done(function() {
|
||||
actionSuccess(_data.checkAction)
|
||||
});
|
||||
} else {
|
||||
$.ajax(_t + "?" + _v.join("&")).done(function() {
|
||||
actionSuccess(_data.checkAction)
|
||||
});
|
||||
}
|
||||
$('#dialog').modal('hide');
|
||||
$('.list-active-btn').addClass('disabled').data('actionable', false);
|
||||
});
|
||||
});
|
||||
@@ -1,37 +1,3 @@
|
||||
function loadViewPage(url, id) {
|
||||
var $listView = $(id);
|
||||
|
||||
$listView.empty().removeClass('in active');
|
||||
$listView.load(url, function(response, status, xhr) {
|
||||
$(this).addClass('in active');
|
||||
$('#member-card').imagesLoaded(function() {
|
||||
$('#member-card .member-avatar img').muImageResize({width: 150, height:150});
|
||||
});
|
||||
$('#member-abstract').imagesLoaded(function() {
|
||||
$('#member-abstract .member-avatar img').muImageResize({width: 250, height:120});
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$search = window.location.pathname.substring(1);
|
||||
$search = $search.split("/");
|
||||
$search = $search[$search.length-1];
|
||||
$viewType = window.localStorage.getItem('viewType') || '#member-list';
|
||||
$viewSwitchNo = window.localStorage.getItem('viewSwitchNo') || 0;
|
||||
if($search == 'users-registrant-list.shtml') {
|
||||
loadViewPage('member-registrant-list.html ' + $viewType, '#list-view');
|
||||
} else {
|
||||
loadViewPage('member-list.html ' + $viewType, '#list-view');
|
||||
};
|
||||
$('.view-switch').children('.btn').eq($viewSwitchNo).addClass('active');
|
||||
$('.view-switch').delegate(".btn", 'click', function(e){
|
||||
var url = $(this).attr('href'),
|
||||
ID = url.split("#"),
|
||||
ID = '#' + ID[ID.length-1];
|
||||
window.localStorage.setItem('viewType', ID);
|
||||
window.localStorage.setItem('viewSwitchNo', $(this).index());
|
||||
loadViewPage(url, '#list-view');
|
||||
e.preventDefault();
|
||||
});
|
||||
$('.member-avatar').rsImg();
|
||||
})
|
||||
@@ -1,3 +1,4 @@
|
||||
var H,P = [];
|
||||
// Go to
|
||||
!function ($) {
|
||||
$.fn.goTo = function (){
|
||||
@@ -13,43 +14,45 @@
|
||||
}
|
||||
}(window.jQuery);
|
||||
function checkHeight() {
|
||||
if($('#member-module').height() > $(window).height()) {
|
||||
H = $(window).height()-
|
||||
parseInt($('.wrap-inner').css('padding-top'))+
|
||||
parseInt($('.wrap-inner').css('padding-bottom'))-
|
||||
$('#orbit-bar').outerHeight(true);
|
||||
}else{
|
||||
H = $(window).height()-
|
||||
parseInt($('.wrap-inner').css('padding-top'))+
|
||||
parseInt($('.wrap-inner').css('padding-bottom'))-
|
||||
$('#filter').outerHeight()+
|
||||
parseInt($('#filter').css('margin-bottom'))-
|
||||
$('#orbit-bar').outerHeight(true);
|
||||
};
|
||||
// if($('#member-module').height() > $(window).height()) {
|
||||
// H = $(window).height()-
|
||||
// parseInt($('.wrap-inner').css('padding-top'))+
|
||||
// parseInt($('.wrap-inner').css('padding-bottom'))-
|
||||
// $('#orbit-bar').outerHeight(true);
|
||||
// }else{
|
||||
// H = $(window).height()-
|
||||
// parseInt($('.wrap-inner').css('padding-top'))+
|
||||
// parseInt($('.wrap-inner').css('padding-bottom'))-
|
||||
// $('#filter').outerHeight()+
|
||||
// parseInt($('#filter').css('margin-bottom'))-
|
||||
// $('#orbit-bar').outerHeight(true);
|
||||
// };
|
||||
H = $(window).height()-
|
||||
parseInt($('.wrap-inner').css('padding-top'))-
|
||||
$('#orbit-bar').outerHeight(true);
|
||||
$('#basic-info').height(H);
|
||||
$('#member-roles').height(H-$('.member-avatar').outerHeight(true)-parseInt($('#member-roles').css('margin-top')))
|
||||
$('#member-roles').height(H-$('.member-avatar').outerHeight(true)-parseInt($('#member-roles').css('margin-top'))+20);
|
||||
$('#module-content').height(H-$('#module-navbar .navbar').outerHeight(true)-$('.bottomnav').innerHeight());
|
||||
};
|
||||
|
||||
$(function() {
|
||||
var H;
|
||||
checkHeight();
|
||||
$(window).resize(function() {
|
||||
checkHeight();
|
||||
// setModuleBlockWidth();
|
||||
});
|
||||
$('.wrap-inner').css('padding-bottom', 0);
|
||||
$(window).resize(checkHeight);
|
||||
$('#member-roles h4 > span').each(function() {
|
||||
$(this).css('margin-left',function() {
|
||||
return $(this).innerWidth()/2*-1;
|
||||
})
|
||||
})
|
||||
$('#basic-info').scrollToFixed({
|
||||
marginTop: $('#orbit-bar').outerHeight(true)+20,
|
||||
});
|
||||
$('#module-navbar').scrollToFixed({
|
||||
marginTop: $('#orbit-bar').outerHeight(true),
|
||||
});
|
||||
// $('#basic-info').scrollToFixed({
|
||||
// marginTop: $('#orbit-bar').outerHeight(true)+20,
|
||||
// });
|
||||
// $('#module-navbar').scrollToFixed({
|
||||
// marginTop: $('#orbit-bar').outerHeight(true),
|
||||
// });
|
||||
// $('.member-avatar').imagesLoaded(function() {
|
||||
// $('#basic-info .member-avatar img').muImageResize({width: 100, height:100});
|
||||
// });
|
||||
$('#member-roles').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
||||
})
|
||||
$('.member-avatar').rsImg();
|
||||
$('#member-roles, #module-content .nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
||||
});
|
||||
@@ -191,12 +191,17 @@ function returnAddressForm(element, decide) {
|
||||
|
||||
$(function() {
|
||||
appendIndex = null;
|
||||
if($('#new-user-forms').length) {
|
||||
if($('#user-forms').length) {
|
||||
addressVal = [];
|
||||
addressArray = [];
|
||||
addressInputId = [];
|
||||
roleType = null;
|
||||
returnDecide = false;
|
||||
$('.attributes').each(function() {
|
||||
if($(this).find('.toggle-check').attr('value') == "true") {
|
||||
$(this).addClass('disabled').children('.attributes-body').hide();
|
||||
}
|
||||
});
|
||||
$('.returnDecide').on(clickEvent, function() {
|
||||
returnDecide = true;
|
||||
})
|
||||
@@ -215,21 +220,21 @@ $(function() {
|
||||
});
|
||||
$('#address-field').on('show', getAddressForm($trigger, $('#address-field'), true));
|
||||
});
|
||||
$('#new-user-forms').delegate('.togglebox, .delete, .trigger, .remove-input', clickEvent, function(event) {
|
||||
$('#user-forms').delegate('.togglebox, .delete, .trigger, .remove-input', clickEvent, function(event) {
|
||||
if($(this).hasClass('togglebox')) {
|
||||
if($(this).hasClass('disabled')) {
|
||||
$(this).find('.toggle-check')
|
||||
.attr('value', 'false')
|
||||
.closest('.attributes')
|
||||
.removeClass('disabled')
|
||||
.find('.attributes-body')
|
||||
.children('.attributes-body')
|
||||
.fadeIn(300);
|
||||
} else {
|
||||
$(this).find('.toggle-check')
|
||||
.attr('value', 'true')
|
||||
.closest('.attributes')
|
||||
.addClass('disabled')
|
||||
.find('.attributes-body')
|
||||
.children('.attributes-body')
|
||||
.fadeOut(300);
|
||||
}
|
||||
$(this).toggleClass('disabled');
|
||||
@@ -422,12 +427,13 @@ $(function() {
|
||||
if($(this).hasClass('trigger')) {
|
||||
// appendIndex = $(this).closest('.controls').find('.input-append').length;
|
||||
appendIndex = $(this).closest('.controls').find('.input-append:last-child').children('input:first-child').attr('name');
|
||||
appendIndex = appendIndex.split("][");
|
||||
appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
|
||||
// appendIndex = appendIndex.split("][");
|
||||
// appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
|
||||
appendIndex = parseInt(appendIndex.match(/[^[\D\]]+(?=])/g)[1])+1;
|
||||
console.log(appendIndex)
|
||||
attributeIndex = $(this).closest('.attributes').index();
|
||||
templateType = $(this).closest('.attributes').find('.dataType').children("option:selected").attr('ref');
|
||||
$("#template-input-append").tmpl(setData(attributeIndex, templateType, appendIndex)).appendTo($(this).closest('.controls').find('.add-target'));
|
||||
|
||||
inputAppendLength();
|
||||
};
|
||||
if($(this).hasClass('remove-input')) {
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
function dragMode() {
|
||||
$('#card-list').sortable({
|
||||
placeholder: "highlight",
|
||||
update: function( event, ui ) {
|
||||
var _userPosition = {};
|
||||
_userPosition.position = $(ui.item).index();
|
||||
_userPosition.id = $(ui.item).data('user-id');
|
||||
$.ajax({
|
||||
url: "<%= Rails.application.routes.url_helpers.update_order_card_admin_users_new_interface_index_path %>",
|
||||
type: 'POST',
|
||||
dataType: 'script',
|
||||
data: {users: _userPosition}
|
||||
});
|
||||
}
|
||||
});
|
||||
$('#card-list').disableSelection();
|
||||
}
|
||||
|
||||
function typeMode() {
|
||||
var _userPosition = [];
|
||||
$('#list-view tbody tr').each(function(i) {
|
||||
$(this).data('user-index', i);
|
||||
});
|
||||
|
||||
$('#member-list').on(clickEvent, '.edit_position', function(e){
|
||||
var $input = $('<input type="text">'),
|
||||
$cross = $('<a class="btn btn-mini"><i class="icons-cross"/></a>');
|
||||
if($(this).siblings('input').length) {
|
||||
$(this).siblings('input').attr('type', 'text').after($cross);
|
||||
} else {
|
||||
$(this).after($cross);
|
||||
$(this).after($input);
|
||||
}
|
||||
$(this).hide();
|
||||
$input.val($(this).text());
|
||||
e.preventDefault();
|
||||
$cross.click(function(event) {
|
||||
$input.remove();
|
||||
$(this).siblings('a').show().end().remove();
|
||||
});
|
||||
});
|
||||
|
||||
$('.bottomnav').on(clickEvent, '.btn', function(e) {
|
||||
_userPosition = [];
|
||||
$('#member-list tbody input').each(function(i) {
|
||||
_userPosition.push([$(this).val(), $(this).siblings('a').data('user-id')]);
|
||||
});
|
||||
$.ajax({
|
||||
url: "<%= Rails.application.routes.url_helpers.update_order_list_admin_users_new_interface_index_path %>",
|
||||
type: 'POST',
|
||||
dataType: 'script',
|
||||
data: {users: _userPosition}
|
||||
});
|
||||
e.preventDefault();
|
||||
});
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
$(function() {
|
||||
function textareaResizable() {
|
||||
var $btnW = null,
|
||||
$textareaLangBtnGroup = $('.textarea-lang > .btn-group'),
|
||||
$textareaLang = $('.textarea-lang'),
|
||||
@@ -8,12 +8,12 @@ $(function() {
|
||||
$btnW = 4
|
||||
$(this).find('.btn').each(function() {
|
||||
$btnW += $(this).outerWidth(true);
|
||||
$(this).on('click', function() {
|
||||
$(this).on(clickEvent, function() {
|
||||
var $id = $($(this).attr('href'));
|
||||
if($id.find('.ui-wrapper').height() < 96) {
|
||||
$id.find('.ui-wrapper').height(96)
|
||||
}
|
||||
})
|
||||
};
|
||||
});
|
||||
});
|
||||
});
|
||||
$textarea.each(function() {
|
||||
@@ -26,4 +26,7 @@ $(function() {
|
||||
minWidth: $btnW+114,
|
||||
handles: "se",
|
||||
});
|
||||
};
|
||||
$(function() {
|
||||
textareaResizable();
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
$(function() {
|
||||
$('.module-area [data-toggle=buttons-checkbox]').find('input[type="checkbox"]').each(function() {
|
||||
$(this).prop('checked') ? $(this).siblings('input[type="hidden"]').val(1) : $(this).siblings('input[type="hidden"]').val(0);
|
||||
});
|
||||
$('.module-area').delegate('input[type="checkbox"]', clickEvent, function(event) {
|
||||
$(this).prop('checked') ? $(this).siblings('input[type="hidden"]').val(1) : $(this).siblings('input[type="hidden"]').val(0);
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,5 @@
|
||||
//= require basic
|
||||
//= require lib/jquery-ui-1.10.2.custom.min.js
|
||||
//= require jquery.ui.sortable
|
||||
//= require lib/jquery.ui.touch-punch.min.js
|
||||
//= require lib/jquery.mjs.nestedSortable.js
|
||||
//= require lib/items/items
|
||||
|
||||
@@ -83,6 +83,7 @@ legend {
|
||||
min-width: 61px;
|
||||
z-index: 1030;
|
||||
position: fixed;
|
||||
padding-top: 40px;
|
||||
background-color: #171717;
|
||||
-webkit-box-shadow: inset -1px 0px 10px #000000;
|
||||
-moz-box-shadow: inset -1px 0px 10px #000000;
|
||||
@@ -91,12 +92,14 @@ legend {
|
||||
}
|
||||
#sidebar #sidebar-menu {
|
||||
position: absolute;
|
||||
top: 88px;
|
||||
top: 85px;
|
||||
bottom: 0;
|
||||
z-index: 1;
|
||||
z-index: 0;
|
||||
display: block;
|
||||
width: 61px;
|
||||
/*overflow: auto;*/
|
||||
}
|
||||
#sidebar #sidebar-menu.nano {
|
||||
top: 0;
|
||||
}
|
||||
#sidebar .scroller {
|
||||
position: absolute;
|
||||
@@ -120,16 +123,12 @@ legend {
|
||||
list-style: none;
|
||||
}
|
||||
#sidebar > h2.position {
|
||||
top: 40px;
|
||||
margin: 0;
|
||||
width: 61px;
|
||||
color: #FFFFFF;
|
||||
font-weight: normal;
|
||||
font-size: 2.4em;
|
||||
line-height: 47px;
|
||||
line-height: 46px\9;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
position: relative;
|
||||
background-color: #08c;
|
||||
background-image: -moz-linear-gradient(top, #08c, #006091);
|
||||
background-image: -ms-linear-gradient(top, #08c, #006091);
|
||||
@@ -158,24 +157,20 @@ legend {
|
||||
}
|
||||
#sidebar > h2.position a {
|
||||
color: #FFFFFF;
|
||||
padding: 6px 6px 5px;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
-webkit-text-shadow: 0px -1px 0px #333333;
|
||||
-moz-text-shadow: 0px -1px 0px #333333;
|
||||
-o-text-shadow: 0px -1px 0px #333333;
|
||||
text-shadow: 0px -1px 0px #333333;
|
||||
}
|
||||
#sidebar > h2.position a i {
|
||||
line-height: 45px;
|
||||
}
|
||||
#sidebar .sidebar-nav > li {
|
||||
min-width: 61px;
|
||||
height: 45px;
|
||||
}
|
||||
#sidebar .sidebar-nav > li.active {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
#sidebar .sidebar-nav > li.active .sub-nav-block {
|
||||
display: block;
|
||||
}
|
||||
#sidebar .sidebar-nav > li.active > a > span {
|
||||
#sidebar .sidebar-nav > li.active span {
|
||||
color: #FFFFFF;
|
||||
cursor: pointer;
|
||||
-webkit-text-shadow: 0px -1px 0px #636363;
|
||||
@@ -183,8 +178,7 @@ legend {
|
||||
-o-text-shadow: 0px -1px 0px #636363;
|
||||
text-shadow: 0px -1px 0px #636363;
|
||||
}
|
||||
#sidebar .sidebar-nav > li > a > span {
|
||||
padding: 10px;
|
||||
#sidebar .sidebar-nav > li span {
|
||||
color: #B0B0B0;
|
||||
display: block;
|
||||
-webkit-text-shadow: 0px 1px 0px #000000;
|
||||
@@ -192,8 +186,15 @@ legend {
|
||||
-o-text-shadow: 0px 1px 0px #000000;
|
||||
text-shadow: 0px 1px 0px #000000;
|
||||
}
|
||||
#sidebar .sidebar-nav > li > a > span > i {
|
||||
font-size: 1.7em;
|
||||
#sidebar .sidebar-nav > li a {
|
||||
display: block;
|
||||
}
|
||||
#sidebar .sidebar-nav > li i {
|
||||
font-size: 1.6em;
|
||||
line-height: 45px;
|
||||
}
|
||||
#sidebar .sidebar-nav > li.active i {
|
||||
font-size: 2.2em;
|
||||
}
|
||||
#sidebar .sub-nav-block-list {
|
||||
top: 40px;
|
||||
@@ -274,7 +275,7 @@ legend {
|
||||
}
|
||||
#sidebar .sub-nav-arrow {
|
||||
left: 53px;
|
||||
top: -10px;
|
||||
top: -16px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
z-index: -1;
|
||||
@@ -282,7 +283,6 @@ legend {
|
||||
border-style: solid;
|
||||
border-width: 8px 8px 8px 0;
|
||||
border-color: transparent #0088CC transparent transparent;
|
||||
display: none\9; /* 用IE的去死 */
|
||||
}
|
||||
|
||||
|
||||
@@ -300,14 +300,15 @@ legend {
|
||||
position: absolute;
|
||||
z-index: 100;
|
||||
width: 100%;
|
||||
border-radius: 1px;
|
||||
background-color: rgba(0, 136, 204, .3);
|
||||
border-radius: 50%/1px;
|
||||
background-color: rgba(0, 136, 204, .6);
|
||||
}
|
||||
|
||||
|
||||
/* Main Wrap */
|
||||
#main-wrap {
|
||||
padding-top: 40px;
|
||||
position: relative;
|
||||
}
|
||||
#main-wrap .wrap-inner {
|
||||
padding: 60px 20px 20px;
|
||||
@@ -419,6 +420,7 @@ legend {
|
||||
/* Search Clear */
|
||||
.searchClear {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
.searchClear .icon-search {
|
||||
position: absolute;
|
||||
@@ -520,10 +522,9 @@ legend {
|
||||
padding: 0px 5px;
|
||||
position: absolute;
|
||||
z-index: 9999;
|
||||
max-width: 500px;
|
||||
max-width: 300px;
|
||||
border-radius: 3px;
|
||||
background-color: #0088CC;
|
||||
white-space: nowrap;
|
||||
}
|
||||
#sideset .ui-tooltip.sidebar-tooltip:after {
|
||||
display: none;
|
||||
@@ -533,10 +534,9 @@ legend {
|
||||
padding: 0px 5px;
|
||||
position: absolute;
|
||||
z-index: 9999;
|
||||
max-width: 500px;
|
||||
max-width: 300px;
|
||||
border-radius: 3px;
|
||||
background-color: #000000;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.ui-tooltip:after {
|
||||
content: '';
|
||||
@@ -551,6 +551,135 @@ legend {
|
||||
border-color: #000000 transparent transparent transparent;
|
||||
}
|
||||
|
||||
/* Sign In */
|
||||
#sign-in {
|
||||
background-color: #F3F3F3;
|
||||
background-repeat: no-repeat;
|
||||
background : -webkit-radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
|
||||
background : -moz-radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
|
||||
background : -o-radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
|
||||
background : -ms-radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
|
||||
background : -radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
|
||||
}
|
||||
.sign-in {
|
||||
text-align: center;
|
||||
position: relative;
|
||||
width: 300px;
|
||||
margin: 150px auto 0;
|
||||
}
|
||||
.sign-in .other-sign-in {
|
||||
display: none;
|
||||
}
|
||||
.sign-in .login-logo {
|
||||
margin: 0;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: 1px solid #ededed;
|
||||
}
|
||||
.sign-in .alert {
|
||||
box-shadow: 0 3px 10px #CBCBCB;
|
||||
text-align: left;
|
||||
}
|
||||
.sign-in .form {
|
||||
background-color: #FFF;
|
||||
box-shadow: 0 10px 20px #CBCBCB;
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.sign-in .form-block {
|
||||
overflow: hidden;
|
||||
}
|
||||
.sign-in .form-list {
|
||||
width: 555px;
|
||||
}
|
||||
.sign-in .content {
|
||||
float: left;
|
||||
margin-bottom: 0;
|
||||
position: relative;
|
||||
}
|
||||
.sign-in .content + .content {
|
||||
margin-left: 15px;
|
||||
}
|
||||
.sign-in .control-group {
|
||||
position: relative;
|
||||
width: 270px;
|
||||
margin: 0;
|
||||
}
|
||||
.sign-in .control-group label {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 39px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
margin: 0;
|
||||
color: #5C5C5C;
|
||||
}
|
||||
.sign-in .control-group input {
|
||||
width: 222px;
|
||||
height: 30px;
|
||||
padding: 4px 6px 4px 40px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
.sign-in .btn {
|
||||
padding: 4px 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.sign-in .other-sign-in {
|
||||
position: relative;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 30px;
|
||||
padding-bottom: 20px;
|
||||
border-bottom: 1px solid #ededed;
|
||||
}
|
||||
.sign-in .other-sign-in p {
|
||||
position: absolute;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
background-color: #FFF;
|
||||
padding: 0 10px;
|
||||
margin-bottom: 0;
|
||||
margin-left: -25px;
|
||||
line-height: 30px;
|
||||
left: 50%;
|
||||
bottom: -15px;
|
||||
font-size: 1.3em;
|
||||
color: #b1b1b1;
|
||||
}
|
||||
.sign-in .checkbox {
|
||||
position: absolute;
|
||||
text-align: left;
|
||||
bottom: 37px;
|
||||
}
|
||||
.sign-in .switchboard {
|
||||
color: #08C;
|
||||
cursor: pointer;
|
||||
}
|
||||
.sign-in .switchboard span,
|
||||
.sign-in .switchboard.active i {
|
||||
display: inline;
|
||||
}
|
||||
.sign-in .switchboard.active span,
|
||||
.sign-in .switchboard i {
|
||||
display: none;
|
||||
}
|
||||
.register {
|
||||
box-shadow: inset 0 5px 5px #E0E0E0;
|
||||
background-color: #eee;
|
||||
padding: 15px;
|
||||
margin: 15px -15px -15px;
|
||||
}
|
||||
.register .btn {
|
||||
margin: 0;
|
||||
}
|
||||
.have-other-sign-in {
|
||||
margin: 80px auto 0;
|
||||
}
|
||||
.have-other-sign-in .other-sign-in {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* IE go die */
|
||||
:root #sidebar .sub-nav-block:before {
|
||||
display: block\9;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.noSelect {
|
||||
.noSelect, .noSelect * {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
@@ -220,7 +220,7 @@
|
||||
.s_form .s_table td {
|
||||
vertical-align: middle; }
|
||||
.s_form .s_table thead th {
|
||||
border-bottom: solid 1px #eeeeee; }
|
||||
border-bottom: solid 1px #eee; }
|
||||
|
||||
/* simple select */
|
||||
.s_select_g {
|
||||
@@ -311,7 +311,7 @@
|
||||
width: 16px;
|
||||
height: 20px;
|
||||
background-color: #000;
|
||||
border: solid 2px white;
|
||||
border: solid 2px #fff;
|
||||
cursor: pointer;
|
||||
-webkit-transition: left 0.3s ease;
|
||||
-moz-transition: left 0.3s ease;
|
||||
@@ -366,7 +366,7 @@
|
||||
width: 100%; }
|
||||
.tinycanvas .overview > .column {
|
||||
float: left;
|
||||
border-right: solid 1px #eeeeee;
|
||||
border-right: solid 1px #eee;
|
||||
padding: 0 12px 0 0;
|
||||
margin: 0 12px 0 0;
|
||||
height: 100%; }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@import "desktop-helper";
|
||||
|
||||
.noSelect {
|
||||
.noSelect, .noSelect * {
|
||||
@include no-select;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,18 @@
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
.form_fix {
|
||||
textarea {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
input[type="text"] {
|
||||
margin-left: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
input[type="text"] + input {
|
||||
margin-top: 12px;
|
||||
}
|
||||
}
|
||||
// fixed width column with 12px gutter
|
||||
// 276px width for 8 columns
|
||||
// 420px width for 12 columns
|
||||
|
||||
@@ -223,7 +223,8 @@ a.admtxt.admbg2:hover {
|
||||
width: 100%; }
|
||||
|
||||
.pw {
|
||||
width: 540px; }
|
||||
/*width: 540px;*/
|
||||
}
|
||||
|
||||
.h1 {
|
||||
height: 120px; }
|
||||
@@ -322,6 +323,29 @@ a.admtxt.admbg2:hover {
|
||||
float: left; }
|
||||
.docklist .d_cate:hover .dock_child {
|
||||
display: block; }
|
||||
.disable {
|
||||
opacity: .3;
|
||||
}
|
||||
.disable a {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.private {
|
||||
position: relative;
|
||||
padding-right: 10px;
|
||||
width: 300px;
|
||||
opacity: .3 !important;
|
||||
}
|
||||
.private:after {
|
||||
content: "\e073";
|
||||
display: inline-block;
|
||||
font-family: 'entypo';
|
||||
font-size: 1.5em;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
text-align: center;
|
||||
text-decoration: inherit;
|
||||
top: 5px;
|
||||
}
|
||||
|
||||
.fn_des.admtxt {
|
||||
line-height: 60px;
|
||||
@@ -375,7 +399,8 @@ a.admtxt.admbg2:hover {
|
||||
background-color: #fff;
|
||||
margin-left: 252px;
|
||||
position: relative;
|
||||
width: auto; }
|
||||
width: calc(100% - 272px);
|
||||
}
|
||||
|
||||
/* Desktop Notification */
|
||||
#orbitnote {
|
||||
@@ -712,7 +737,8 @@ a.admtxt.admbg2:hover {
|
||||
|
||||
/* list item */
|
||||
.list_t_item {
|
||||
overflow: hidden; }
|
||||
overflow: hidden;
|
||||
height: 100px; }
|
||||
|
||||
.list_t_title {
|
||||
padding-bottom: 6px;
|
||||
@@ -746,7 +772,8 @@ a.admtxt.admbg2:hover {
|
||||
-webkit-text-size-adjust: none; }
|
||||
.list_item_function a :first-child {
|
||||
margin-left: 0; }
|
||||
.datalist_item:hover .list_item_function {
|
||||
.datalist_item:hover .list_item_function,
|
||||
.list_t_item:hover .list_item_function {
|
||||
bottom: 0; }
|
||||
|
||||
/* App */
|
||||
@@ -798,7 +825,7 @@ a.admtxt.admbg2:hover {
|
||||
/*Tooltip popup */
|
||||
.desktop_toolpopup {
|
||||
position: absolute;
|
||||
z-index: 10px;
|
||||
z-index: 10;
|
||||
display: none;
|
||||
padding: 12px;
|
||||
cursor: default;
|
||||
|
||||
@@ -824,7 +824,7 @@ a:focus { outline: none; }
|
||||
/*Tooltip popup */
|
||||
.desktop_toolpopup {
|
||||
position: absolute;
|
||||
z-index: 10px;
|
||||
z-index: 10;
|
||||
display: none;
|
||||
padding: 12px;
|
||||
cursor: default;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
@media only screen and (min-width: 1240px){
|
||||
|
||||
#panel_r.pw { width: 800px; }
|
||||
/*#panel_r.pw { width: 800px; }*/
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 1900px){
|
||||
|
||||
#panel_r.pw { width: 1400px; }
|
||||
/*#panel_r.pw { width: 1400px; }*/
|
||||
|
||||
}
|
||||
@@ -14,4 +14,5 @@
|
||||
*= require desktop/desktop-media
|
||||
*= require desktop/desktop-select2
|
||||
*= require desktop/desktop-timeline
|
||||
*= require desktop/isotope.css
|
||||
*/
|
||||
@@ -0,0 +1,72 @@
|
||||
#side {
|
||||
height: auto;
|
||||
min-height: 516px;
|
||||
right: 0;
|
||||
bottom: 12px;
|
||||
}
|
||||
#rwidget {
|
||||
height: 100%;
|
||||
}
|
||||
#container {
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 12px;
|
||||
left: 0;
|
||||
min-height: 588px;
|
||||
}
|
||||
#panel_l, #panel_r {
|
||||
height: 100%;
|
||||
}
|
||||
.isotope {
|
||||
height: 100%;
|
||||
}
|
||||
.isotope .s_grid_row {
|
||||
width: 420px;
|
||||
margin: 0 24px 12px 0;
|
||||
}
|
||||
.s_grid_row .s_grid_h_full {
|
||||
height: 100%;
|
||||
}
|
||||
.list_t_item {
|
||||
float: left;
|
||||
display: inline;
|
||||
}
|
||||
.isotope,
|
||||
.isotope .isotope-item {
|
||||
/* change duration value to whatever you like */
|
||||
-webkit-transition-duration: 0.8s;
|
||||
-moz-transition-duration: 0.8s;
|
||||
-ms-transition-duration: 0.8s;
|
||||
-o-transition-duration: 0.8s;
|
||||
transition-duration: 0.8s;
|
||||
}
|
||||
|
||||
.isotope {
|
||||
-webkit-transition-property: height, width;
|
||||
-moz-transition-property: height, width;
|
||||
-ms-transition-property: height, width;
|
||||
-o-transition-property: height, width;
|
||||
transition-property: height, width;
|
||||
}
|
||||
|
||||
.isotope .isotope-item {
|
||||
-webkit-transition-property: -webkit-transform, opacity;
|
||||
-moz-transition-property: -moz-transform, opacity;
|
||||
-ms-transition-property: -ms-transform, opacity;
|
||||
-o-transition-property: -o-transform, opacity;
|
||||
transition-property: transform, opacity;
|
||||
}
|
||||
|
||||
/**** disabling Isotope CSS3 transitions ****/
|
||||
|
||||
.isotope.no-transition,
|
||||
.isotope.no-transition .isotope-item,
|
||||
.isotope .isotope-item.no-transition {
|
||||
-webkit-transition-duration: 0s;
|
||||
-moz-transition-duration: 0s;
|
||||
-ms-transition-duration: 0s;
|
||||
-o-transition-duration: 0s;
|
||||
transition-duration: 0s;
|
||||
}
|
||||
@@ -125,6 +125,14 @@
|
||||
}
|
||||
|
||||
|
||||
#list-view .checkbox-card li {
|
||||
-webkit-transition: none;
|
||||
-moz-transition: none;
|
||||
-o-transition: none;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 767px) {
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */
|
||||
|
||||
/*<!--breakpoint-->*/
|
||||
.breakpoints {width: .8em;}
|
||||
.breakpoint { color: #822; }
|
||||
|
||||
/*<!--match-->*/
|
||||
span.CodeMirror-matchhighlight { background: #494949 }
|
||||
.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; }
|
||||
|
||||
/*<!--activeline-->*/
|
||||
.activeline {background: #253540 !important;}
|
||||
|
||||
.cm-s-midnight.CodeMirror {
|
||||
background: #0F192A;
|
||||
color: #D1EDFF;
|
||||
}
|
||||
|
||||
.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
|
||||
|
||||
.cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;}
|
||||
.cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;}
|
||||
.cm-s-midnight .CodeMirror-linenumber {color: #D0D0D0;}
|
||||
.cm-s-midnight .CodeMirror-cursor {
|
||||
border-left: 1px solid #F8F8F0 !important;
|
||||
}
|
||||
|
||||
.cm-s-midnight span.cm-comment {color: #428BDD;}
|
||||
.cm-s-midnight span.cm-atom {color: #AE81FF;}
|
||||
.cm-s-midnight span.cm-number {color: #D1EDFF;}
|
||||
|
||||
.cm-s-midnight span.cm-property, .cm-s-tropicaleve span.cm-attribute {color: #A6E22E;}
|
||||
.cm-s-midnight span.cm-keyword {color: #E83737;}
|
||||
.cm-s-midnight span.cm-string {color: #1DC116;}
|
||||
|
||||
.cm-s-midnight span.cm-variable {color: #FFAA3E;}
|
||||
.cm-s-midnight span.cm-variable-2 {color: #FFAA3E;}
|
||||
.cm-s-midnight span.cm-def {color: #4DD;}
|
||||
.cm-s-midnight span.cm-error {background: #F92672; color: #F8F8F0;}
|
||||
.cm-s-midnight span.cm-bracket {color: #D1EDFF;}
|
||||
.cm-s-midnight span.cm-tag {color: #008;}
|
||||
.cm-s-midnight span.cm-link {color: #AE81FF;}
|
||||
|
||||
.cm-s-midnight .CodeMirror-matchingbracket {
|
||||
text-decoration: underline;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.typ { color: #FFAA3E; }
|
||||
.atn { color: #606; }
|
||||
.atv { color: #080; }
|
||||
.dec { color: #606; }
|
||||
@@ -1,21 +1,23 @@
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/ambiance-mobile.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/ambiance.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/blackboard.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/cobalt.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/eclipse.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/elegant.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/erlang-dark.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/midnight.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/monokai.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/neat.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/night.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/rubyblue.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/solarized.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/theme.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/twilight.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/vibrant-ink.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/xq-dark.css);
|
||||
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/xq-light.css);
|
||||
/*
|
||||
*= require 'lib/codemirror/theme/ambiance-mobile'
|
||||
*= require "lib/codemirror/theme/ambiance"
|
||||
*= require "lib/codemirror/theme/blackboard"
|
||||
*= require "lib/codemirror/theme/cobalt"
|
||||
*= require "lib/codemirror/theme/eclipse"
|
||||
*= require "lib/codemirror/theme/elegant"
|
||||
*= require "lib/codemirror/theme/erlang-dark"
|
||||
*= require "lib/codemirror/theme/midnight"
|
||||
*= require "lib/codemirror/theme/monokai"
|
||||
*= require "lib/codemirror/theme/neat"
|
||||
*= require "lib/codemirror/theme/night"
|
||||
*= require "lib/codemirror/theme/rubyblue"
|
||||
*= require "lib/codemirror/theme/solarized"
|
||||
*= require "lib/codemirror/theme/theme"
|
||||
*= require "lib/codemirror/theme/twilight"
|
||||
*= require "lib/codemirror/theme/vibrant-ink"
|
||||
*= require "lib/codemirror/theme/xq-dark"
|
||||
*= require "lib/codemirror/theme/xq-light"
|
||||
*/
|
||||
.cm-tab {
|
||||
border-left: 1px solid rgba(200, 200, 200, .2);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
.table .listCheckHead,
|
||||
.table .listCheck {
|
||||
width: 30px;
|
||||
vertical-align: middle;
|
||||
padding: 0 0 0 10px!important;
|
||||
}
|
||||
.listCheckHead .list-check,
|
||||
.listCheck .list-check {
|
||||
position: absolute;
|
||||
margin: -12px 0 0 -1px;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
|
||||
opacity: 0;
|
||||
}
|
||||
.listCheckHead i,
|
||||
.listCheck i {
|
||||
display: block;
|
||||
}
|
||||
.checkHide td {
|
||||
background-color: #E6E6E6 !important;
|
||||
color: #B9B9B9;
|
||||
}
|
||||
.checkHide a {
|
||||
color: #B9B9B9;
|
||||
}
|
||||
.checkHit td {
|
||||
background-color: #FFFEDB !important;
|
||||
}
|
||||
@@ -280,6 +280,17 @@
|
||||
line-height: 26px;
|
||||
margin: 0;
|
||||
}
|
||||
.main-forms .attributes-header h4 b {
|
||||
padding: 0 1px;
|
||||
border-style: dotted;
|
||||
border-width: 0 2px;
|
||||
border-color: #AAA;
|
||||
margin-right: 5px;
|
||||
cursor: move;
|
||||
}
|
||||
.main-forms .attributes-header h4 i {
|
||||
cursor: pointer;
|
||||
}
|
||||
.main-forms .field-type {
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 5px;
|
||||
@@ -307,7 +318,7 @@
|
||||
.main-forms .field-type .control-group:last-child {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#new-user-forms .control-group .add-target .input-append,
|
||||
#user-forms .control-group .add-target .input-append,
|
||||
.main-forms .field-type .control-group .add-target .input-append {
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
@@ -324,7 +335,7 @@
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
#new-user-forms .control-group .add-target .input-append input.last {
|
||||
#user-forms .control-group .add-target .input-append input.last {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,193 +0,0 @@
|
||||
/* Main List */
|
||||
.main-list {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.main-list tbody {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
.main-list thead {
|
||||
border: 1px solid #454545;
|
||||
}
|
||||
.main-list thead th {
|
||||
vertical-align: middle;
|
||||
background-color: #454545;
|
||||
white-space: nowrap;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.main-list tbody tr.disable td {
|
||||
color: #C5C5C5;
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
.main-list tbody tr.disable td .label-info {
|
||||
background-color: #999999;
|
||||
}
|
||||
.main-list tbody tr.active td:first-child {
|
||||
position: relative;
|
||||
}
|
||||
.main-list tbody tr.active td:first-child:before {
|
||||
content: "";
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
left: -21px;
|
||||
top: 50%;
|
||||
margin-top: -6px;
|
||||
position: absolute;
|
||||
border-style: solid;
|
||||
border-width: 6px 0 6px 6px;
|
||||
border-color: transparent transparent transparent #333333;
|
||||
}
|
||||
.main-list td {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.main-list td.action {
|
||||
vertical-align: middle;
|
||||
text-align: right;
|
||||
}
|
||||
.main-list td.preview img {
|
||||
width: 100%;
|
||||
}
|
||||
.main-list td .banner-link {
|
||||
width: 100px;
|
||||
max-width: 120px;
|
||||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
.main-list td .file-list {
|
||||
display: inline-block;
|
||||
margin: 0 0 -6px;
|
||||
}
|
||||
.main-list td .file-list:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: block;
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
.main-list td .file-type {
|
||||
position: relative;
|
||||
list-style: none;
|
||||
float: left;
|
||||
display: inline-block;
|
||||
}
|
||||
.main-list td .file-type a {
|
||||
background-color: #A6A6A6;
|
||||
color: #FFFFFF;
|
||||
margin-right: 10px;
|
||||
padding: 2px 5px 2px 3px;
|
||||
border-radius: 3px;
|
||||
text-decoration: none;
|
||||
text-shadow: 0px -1px 0px rgba(100, 100, 100, .6);
|
||||
}
|
||||
.main-list td .file-type i,
|
||||
.main-forms fieldset .input-area .controls .file-type i {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-bottom: -1px;
|
||||
display: inline-block;
|
||||
}
|
||||
.main-list td .file-type[class^="type-"] i,
|
||||
.main-list td .file-type[class*=" type-"] i,
|
||||
.main-forms fieldset .input-area .controls .file-type[class*=" type-"] i,
|
||||
.main-forms fieldset .input-area .controls .file-type[class^="type-"] i {
|
||||
background-image: url(/orbit_4.0.1/assets/images/file_type.png);
|
||||
}
|
||||
.file-type.type-pdf i {background-position: 0px 0px;}
|
||||
.file-type.type-psd i {background-position: -16px 0px;}
|
||||
.file-type.type-ai i {background-position: -32px 0px;}
|
||||
.file-type.type-fla i {background-position: -48px 0px;}
|
||||
.file-type.type-in i {background-position: -64px 0px;}
|
||||
.file-type.type-acc i {background-position: 0px -16px;}
|
||||
.file-type.type-do i {background-position: -16px -16px;}
|
||||
.file-type.type-xl i {background-position: -32px -16px;}
|
||||
.file-type.type-pp i {background-position: -48px -16px;}
|
||||
.file-type.type-zip i {background-position: -64px -16px;}
|
||||
.file-type.type-txt i {background-position: 0px -32px;}
|
||||
.file-type.type-jp i {background-position: -16px -32px;}
|
||||
.file-type.type-gif i {background-position: -32px -32px;}
|
||||
.file-type.type-png i {background-position: -48px -32px;}
|
||||
.file-type.type-audio i {background-position: -64px -32px;}
|
||||
|
||||
.main-list td .quick-edit {
|
||||
height: 24px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
.main-list td .quick-edit .nav {
|
||||
display: none;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.main-list tr:hover .quick-edit .nav {
|
||||
display: block;
|
||||
}
|
||||
.main-list td .quick-edit .nav > li > a {
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
border: 1px dotted #d1d1d1;
|
||||
}
|
||||
.main-list td .quick-edit .nav > li > a:hover {
|
||||
border: 1px dotted transparent;
|
||||
}
|
||||
.main-list thead tr.sort-header th a {
|
||||
padding: 8px;
|
||||
margin: -8px;
|
||||
display: block;
|
||||
color: #FFFFFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
.main-list thead tr.sort-header th.active a {
|
||||
padding-bottom: 4px;
|
||||
border-bottom: 4px solid #08c;
|
||||
}
|
||||
.main-list .footable-row-detail td {
|
||||
padding: 0;
|
||||
border-top: none;
|
||||
}
|
||||
.main-list .footable-row-detail td .footable-row-detail-inner {
|
||||
display: none;
|
||||
padding: 8px;
|
||||
position: relative;
|
||||
border-radius: 5px;
|
||||
margin: 0 8px 8px;
|
||||
background-color: #ededed;
|
||||
}
|
||||
.main-list .footable-row-detail td .footable-row-detail-inner:after {
|
||||
display: block;
|
||||
height: 0px;
|
||||
width: 0px;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 50%;
|
||||
margin-left: -3px;
|
||||
content: "";
|
||||
border-style: solid;
|
||||
border-width: 0 6px 6px 6px;
|
||||
border-color: transparent transparent #ededed transparent;
|
||||
}
|
||||
.main-list .footable-row-detail td .footable-row-detail-inner div {
|
||||
margin: 10px 0;
|
||||
}
|
||||
#preview .preview {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
|
||||
/* For Retina */
|
||||
@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2) {
|
||||
.main-list td .file-type[class^="type-"] i,
|
||||
.main-list td .file-type[class*=" type-"] i,
|
||||
.main-forms fieldset .input-area .controls .file-type[class*=" type-"] i,
|
||||
.main-forms fieldset .input-area .controls .file-type[class^="type-"] i {
|
||||
background-image: url(/orbit_4.0.1/assets/images/file_type@2x.png);
|
||||
background-size: 80px 48px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 480px) {
|
||||
.main-list td .quick-edit .nav {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,13 @@
|
||||
.main-list td {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.main-list td input[type="text"] {
|
||||
margin-bottom: 0;
|
||||
margin-left: -.4em;
|
||||
margin-right: 3px;
|
||||
padding: 0 .3em;
|
||||
width: 4em;
|
||||
}
|
||||
.main-list td.action {
|
||||
vertical-align: middle;
|
||||
text-align: right;
|
||||
|
||||
@@ -2,9 +2,20 @@
|
||||
#list-view h4 a {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* List */
|
||||
#list-view #member-list tr.highlight td {
|
||||
background-color: #FFFAE5;
|
||||
}
|
||||
#list-view #member-list tr.highlight td:first-child {
|
||||
padding: 0
|
||||
}
|
||||
#list-view #member-list .gender,
|
||||
#list-view #member-list td[class^="gender-"] {
|
||||
width: 5px;
|
||||
@@ -106,10 +117,31 @@
|
||||
#list-view #member-abstract .member-avatar .action > a.trash {
|
||||
background-color: #b94a48;
|
||||
}
|
||||
#list-view #member-abstract .member-avatar > span {
|
||||
/*#list-view #member-abstract .member-avatar:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 250px;
|
||||
height: 120px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
display: block;
|
||||
margin: 0;
|
||||
background-color: #000000;
|
||||
-webkit-border-radius: 5px 5px 0 0;
|
||||
-moz-border-radius: 5px 5px 0 0;
|
||||
border-radius: 5px 5px 0 0;
|
||||
opacity: 0;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
filter: alpha(opacity=0);
|
||||
}*/
|
||||
#list-view #member-abstract > li .member-avatar:after {
|
||||
-webkit-backface-visibility: hidden;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
display: block;
|
||||
margin: 0;
|
||||
background-color: #000000;
|
||||
@@ -120,7 +152,8 @@
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
filter: alpha(opacity=0);
|
||||
}
|
||||
#list-view #member-abstract > li:hover .member-avatar > span {
|
||||
#list-view #member-abstract > li:hover .member-avatar:after {
|
||||
-webkit-backface-visibility: hidden;
|
||||
opacity: .4;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
|
||||
filter: alpha(opacity=40);
|
||||
@@ -159,14 +192,13 @@
|
||||
float: left;
|
||||
position: relative;
|
||||
}
|
||||
#list-view #member-card > li:hover .member-avatar > span {
|
||||
opacity: 0.4;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
#list-view #member-card > li:hover .member-avatar .action {
|
||||
visibility: visible;
|
||||
}
|
||||
#list-view #member-card .highlight {
|
||||
background-color: #F0F0F0;
|
||||
outline: 1px dashed #9E9E9E;
|
||||
}
|
||||
#list-view #member-card .member-avatar {
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
@@ -183,14 +215,37 @@
|
||||
#list-view #member-card .member-avatar.gender-woman {
|
||||
border-color: #FF3196;
|
||||
}
|
||||
#list-view #member-card .member-avatar.gender-none {
|
||||
#list-view #member-card .member-avatar.gender-nene {
|
||||
border-color: #DDDDDD;
|
||||
}
|
||||
#list-view #member-card .member-avatar img {
|
||||
/*width: 100%;*/
|
||||
max-width: none;
|
||||
}
|
||||
#list-view #member-card .member-avatar > span {
|
||||
#list-view #member-card > li .member-avatar:after {
|
||||
-webkit-backface-visibility: hidden;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
display: block;
|
||||
margin: 0;
|
||||
background-color: #000000;
|
||||
-webkit-border-radius: 50%;
|
||||
-moz-border-radius: 50%;
|
||||
border-radius: 50%;
|
||||
opacity: 0;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
|
||||
filter: alpha(opacity=100);
|
||||
}
|
||||
#list-view #member-card > li:hover .member-avatar:after {
|
||||
opacity: .4;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
/*#list-view #member-card .member-avatar > span {
|
||||
position: absolute;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
@@ -203,7 +258,7 @@
|
||||
opacity: 0;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
filter: alpha(opacity=0);
|
||||
}
|
||||
}*/
|
||||
#list-view #member-card .member-avatar .action {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
@@ -262,22 +317,25 @@
|
||||
margin-top: 20px;
|
||||
}
|
||||
#profile #basic-info .member-avatar {
|
||||
width: 106px;
|
||||
height: 106px;
|
||||
width: 103px;
|
||||
height: 103px;
|
||||
float: left;
|
||||
}
|
||||
#profile #basic-info .member-avatar img {
|
||||
border: 3px solid #ffffff;
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
-webkit-border-radius: 9px;
|
||||
-moz-border-radius: 9px;
|
||||
border-radius: 9px;
|
||||
}
|
||||
#profile #basic-info .member-avatar.gender-man img {
|
||||
#profile #basic-info .member-avatar:after {
|
||||
content: "";
|
||||
-webkit-backface-visibility: hidden;
|
||||
}
|
||||
#profile #basic-info .member-avatar.gender-man {
|
||||
border-color: #34ADFF;
|
||||
}
|
||||
#profile #basic-info .member-avatar.gender-woman img {
|
||||
#profile #basic-info .member-avatar.gender-woman {
|
||||
border-color: #FF3196;
|
||||
}
|
||||
#profile #basic-info .member-avatar.gender-none img {
|
||||
#profile #basic-info .member-avatar.gender-none {
|
||||
border-color: #DDDDDD;
|
||||
}
|
||||
#profile #member-roles {
|
||||
@@ -313,20 +371,27 @@
|
||||
#profile #member-roles .roles dd {
|
||||
color: #999999;
|
||||
}
|
||||
#profile #module-navbar {
|
||||
margin-left: 10px;
|
||||
}
|
||||
#profile #module-navbar .navbar {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
#profile #member-module {
|
||||
margin-left: 360px;
|
||||
}
|
||||
#profile #member-module #module-navbar.scroll-to-fixed-fixed {
|
||||
background-color: #F3F3F3;
|
||||
padding-top: 20px;
|
||||
}
|
||||
#profile #member-module #module-navbar.scroll-to-fixed-fixed .navbar {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#profile #member-module #module-content {
|
||||
padding: 0 10px;
|
||||
padding: 0 0 0 10px;
|
||||
}
|
||||
#profile #member-module #module-content .content {
|
||||
right: 10px;
|
||||
padding-bottom: 10px;
|
||||
outline: none;
|
||||
}
|
||||
#profile #member-module #module-content .list-active {
|
||||
padding-bottom: 8px;
|
||||
/*border-bottom: 1px solid #DDD;*/
|
||||
}
|
||||
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 979px) {
|
||||
|
||||
@@ -6,22 +6,22 @@
|
||||
.tags .lead .badge {
|
||||
margin-top: 5px;
|
||||
}
|
||||
.tags .tags-groups {
|
||||
.tags-groups {
|
||||
list-style: none;
|
||||
margin: 0 0 20px;
|
||||
padding: 0;
|
||||
}
|
||||
.tags .tags-groups:after {
|
||||
.tags-groups:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
height: 0;
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
}
|
||||
.tags .tags-groups.module-tags li.default a {
|
||||
.tags-groups.module-tags li.default a {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.tags .tags-groups li {
|
||||
.tags-groups li {
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
width: auto;
|
||||
@@ -39,7 +39,7 @@
|
||||
-o-transition: all .2s linear;
|
||||
transition: all .2s linear;
|
||||
}
|
||||
.tags .tags-groups li.mark {
|
||||
.tags-groups li.mark {
|
||||
width: 0;
|
||||
height: 0;
|
||||
padding: 0;
|
||||
@@ -49,28 +49,28 @@
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
.tags .tags-groups li.active {
|
||||
.tags-groups li.active {
|
||||
background-color: #3a87ad;
|
||||
}
|
||||
.tags .tags-groups li.active .amount {
|
||||
.tags-groups li.active .amount {
|
||||
color: #8cb8be;
|
||||
}
|
||||
.tags .tags-groups li a {
|
||||
.tags-groups li a {
|
||||
text-decoration: none;
|
||||
color: #ededed;
|
||||
}
|
||||
.tags .tags-groups li .amount {
|
||||
.tags-groups li .amount {
|
||||
color: #fdcf3b;
|
||||
float: right;
|
||||
margin-left: 15px;
|
||||
}
|
||||
.tags .tags-groups li .card {
|
||||
.tags-groups li .card {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
.tags .tags-groups li .card:after {
|
||||
.tags-groups li .card:after {
|
||||
font-family: FontAwesome;
|
||||
content: '\f111';
|
||||
color: #fdcf3b;
|
||||
@@ -82,13 +82,13 @@
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.tags .tags-groups li .card.active:after {
|
||||
.tags-groups li .card.active:after {
|
||||
content: '\f058';
|
||||
font-size: 18px;
|
||||
left: -2px;
|
||||
top: 1px;
|
||||
}
|
||||
.tags .tags-groups li .card input {
|
||||
.tags-groups li .card input {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@@ -110,10 +110,10 @@
|
||||
#tags-merger form {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#tags-merger .tags .tags-groups li {
|
||||
#tags-merger .tags-groups li {
|
||||
cursor: pointer;
|
||||
}
|
||||
#tags-merger .tags .tags-groups li.def {
|
||||
#tags-merger .tags-groups li.def {
|
||||
background-color: #468847;
|
||||
}
|
||||
#tags-merger .modal-body .pull-left {
|
||||
@@ -127,22 +127,22 @@
|
||||
|
||||
|
||||
|
||||
.tags .tags-groups li.default {
|
||||
.tags-groups li.default {
|
||||
background-color: #468847;
|
||||
}
|
||||
.tags .tags-groups li.default.active {
|
||||
.tags-groups li.default.active {
|
||||
background-color: #3a87ad;
|
||||
}
|
||||
.tags .tags-groups li.default .amount {
|
||||
.tags-groups li.default .amount {
|
||||
color: #8cbe9a;
|
||||
}
|
||||
.tags .tags-groups li.default.active .amount {
|
||||
.tags-groups li.default.active .amount {
|
||||
color: #8cb8be;
|
||||
}
|
||||
.tags .tags-groups li.default .card:after {
|
||||
.tags-groups li.default .card:after {
|
||||
color: #8cbe9a;
|
||||
}
|
||||
.tags .tags-groups li.active .card:after {
|
||||
.tags-groups li.active .card:after {
|
||||
color: #8cb8be;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,12 @@
|
||||
margin-top: 4px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.topnav .btn-group {
|
||||
margin-left: 0;
|
||||
}
|
||||
.topnav .view-switch {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
/* Bottom Nav */
|
||||
.bottomnav {
|
||||
@@ -41,6 +47,16 @@
|
||||
.bottomnav .action {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.bottomnav .divider {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
margin: 0 5px;
|
||||
background-color: #E0E0E0;
|
||||
width: 1px;
|
||||
height: 16px;
|
||||
top: 5px;
|
||||
box-shadow: 1px 0 0 #FFF;
|
||||
}
|
||||
.bottomnav .pagination {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
|
||||
#orbit-bar {
|
||||
margin: 0;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-family: "Chivo";
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
color: #333333;
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
class Admin::AdBannersController < OrbitBackendController
|
||||
|
||||
before_filter :force_order_for_visitor,:only=>[:index, :show]
|
||||
before_filter :force_order_for_user,:except => [:index, :show]
|
||||
before_filter :for_app_sub_manager,:except => [:index, :show]
|
||||
before_filter :for_app_manager,:except => [:index,:show,:update,:realtime_preview]
|
||||
|
||||
open_for_visitor :only => [:index, :show]
|
||||
open_for_manager :except => [:index,:show,:update,:realtime_preview]
|
||||
open_for_sub_manager :except => [:index, :show]
|
||||
|
||||
def rename
|
||||
@ad_banner = AdBanner.find(params[:id])
|
||||
@@ -60,6 +57,7 @@ class Admin::AdBannersController < OrbitBackendController
|
||||
def index
|
||||
@ad_banners = AdBanner.all
|
||||
@active = @ad_banners.first
|
||||
@tags = get_tags
|
||||
end
|
||||
|
||||
end
|
||||
@@ -22,8 +22,10 @@ class Admin::AdImagesController < Admin::AdBannersController
|
||||
end
|
||||
|
||||
def update
|
||||
@ad_image = AdImage.find(params[:id])
|
||||
@ad_banner = AdBanner.find params[:ad_banner][:id]
|
||||
@ad_image = AdImage.find(params[:ad_image][:id])
|
||||
@ad_image.update_attributes(params[:ad_image])
|
||||
@ad_banner.ad_images << @ad_image
|
||||
redirect_to admin_ad_images_path
|
||||
end
|
||||
|
||||
@@ -38,10 +40,10 @@ class Admin::AdImagesController < Admin::AdBannersController
|
||||
end
|
||||
|
||||
def create
|
||||
# @ad_banner = AdBanner.find params[:ad_banner][:id]
|
||||
@ad_banner = AdBanner.find params[:ad_banner][:id]
|
||||
@ad_image = AdImage.new params[:ad_image]
|
||||
#@ad_image.to_save = true
|
||||
#@ad_banner.ad_images << ad_image
|
||||
@ad_image.to_save = true
|
||||
@ad_banner.ad_images << @ad_image
|
||||
|
||||
if @ad_image.save
|
||||
redirect_to admin_ad_images_path
|
||||
|
||||
@@ -3,7 +3,17 @@ class Admin::AssetsController < OrbitBackendController
|
||||
before_filter :setup_vars
|
||||
|
||||
def index
|
||||
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.page(params[:page]).per(10)
|
||||
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.desc(:created_at).page(params[:page]).per(10)
|
||||
if params[:type] == "images"
|
||||
@assets = @assets.where(:content_type => /^image/)
|
||||
end
|
||||
@tag = ModuleTag.new
|
||||
|
||||
@module_app = ModuleApp.find(params[:module_app_id]) rescue nil
|
||||
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
@module_app_id = @module_app.id rescue nil
|
||||
|
||||
render :layout => "assets"
|
||||
end
|
||||
|
||||
def show
|
||||
@@ -22,12 +32,8 @@ class Admin::AssetsController < OrbitBackendController
|
||||
|
||||
def edit
|
||||
@asset = Asset.find(params[:id])
|
||||
@asset_categories = AssetCategory.all
|
||||
@tags = get_tags
|
||||
respond_to do |format|
|
||||
format.html {}
|
||||
format.js { render 'js/show_pop_up', :locals => {:partial => 'admin/assets/edit'} }
|
||||
end
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def create
|
||||
@@ -64,10 +70,7 @@ class Admin::AssetsController < OrbitBackendController
|
||||
def update
|
||||
@asset = Asset.find(params[:id])
|
||||
if @asset.update_attributes(params[:asset])
|
||||
respond_to do |format|
|
||||
format.html { redirect_to admin_assets_url }
|
||||
format.js { render 'js/remove_pop_up_and_reload_content', :locals => {:function => 'replaceWith', :id => "asset_#{@asset.id}", :value => @asset, :values => nil, :partial => 'admin/assets/asset', :locals => nil} }
|
||||
end
|
||||
render layout: false
|
||||
else
|
||||
flash[:error] = t('update.fail')
|
||||
@asset_categories = AssetCategory.all
|
||||
@@ -95,11 +98,31 @@ class Admin::AssetsController < OrbitBackendController
|
||||
redirect_to assets_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||
end
|
||||
|
||||
def delete_files
|
||||
@files = params[:files]
|
||||
@files.each do |file|
|
||||
asset = Asset.find(file)
|
||||
asset.destroy
|
||||
end
|
||||
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.desc(:created_at).page(params[:page]).per(10)
|
||||
if params[:type] == "images"
|
||||
@assets = @assets.where(:content_type => /^image/)
|
||||
end
|
||||
# render :json =>{"success"=>true}.to_json
|
||||
end
|
||||
|
||||
def file_upload
|
||||
@asset = Asset.new
|
||||
@asset_categories = AssetCategory.all
|
||||
@tags = get_tags
|
||||
render :layout => false
|
||||
@files = params['files']
|
||||
a = Array.new
|
||||
@files.each do |file|
|
||||
@asset = current_user.assets.new
|
||||
@asset.data = file
|
||||
@asset.title_translations = {:en => file.original_filename, :zh_tw => file.original_filename}
|
||||
# @asset.title_translations[:zh_tw] = file.original_filename
|
||||
@asset.save!
|
||||
a << {"url"=>@asset.data.url}
|
||||
end
|
||||
render :json=>{"files"=>a}.to_json
|
||||
end
|
||||
|
||||
def file_select
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
class Admin::AuthorizationsController < OrbitBackendController
|
||||
|
||||
before_filter :admin_or_manager
|
||||
prepend_before_filter :admin_or_manager
|
||||
|
||||
def index
|
||||
@module_apps ||= ModuleApp.where(is_authorizable: true).order_by([:title, :asc])
|
||||
@module_apps ||= ModuleApp.any_of({is_authorizable: true}, {is_approvable: true}).order_by([:title, :asc])
|
||||
if @module_apps && @module_apps.include?(@module_app)
|
||||
if @type
|
||||
case @type
|
||||
when 'category', 'approval'
|
||||
when 'category_authorization', 'category_approval'
|
||||
if @module_app.has_category
|
||||
@objects = @module_app.categories
|
||||
else
|
||||
@@ -18,12 +18,12 @@ class Admin::AuthorizationsController < OrbitBackendController
|
||||
end
|
||||
unless @objects.blank?
|
||||
@object ||= @objects.first
|
||||
@users = @object.get_object_auth_by_title("#{@type}_#{@module_app.key}").auth_users
|
||||
@users = @object.get_authorization_by_title("#{@type}_#{@module_app.key}").authorized_users rescue nil
|
||||
else
|
||||
@error = t(:no_data)
|
||||
end
|
||||
else
|
||||
@users = @module_app.managing_users
|
||||
@users = @module_app.managers
|
||||
end
|
||||
elsif @module_apps
|
||||
@module_app = @module_apps.first
|
||||
@@ -33,35 +33,42 @@ class Admin::AuthorizationsController < OrbitBackendController
|
||||
end
|
||||
end
|
||||
|
||||
def add(users)
|
||||
unless users.blank?
|
||||
if @type
|
||||
if @object
|
||||
object_auth = @object.get_object_auth_by_title("#{@type}_#{@module_app.key}")
|
||||
add_users_to_object_auth(object_auth, users)
|
||||
else
|
||||
@error = t(:no_data)
|
||||
end
|
||||
else
|
||||
add_managers(users) unless users.blank?
|
||||
end
|
||||
def add_roles
|
||||
roles = Role.find(params[:role_ids]) rescue []
|
||||
users = []
|
||||
roles.each do |role|
|
||||
users += role.users.all.entries
|
||||
end
|
||||
@users = users
|
||||
render 'admin/authorizations/insert_users'
|
||||
unless roles.blank?
|
||||
authorization = get_or_create_authorization
|
||||
add_roles_to_auth(authorization, roles) unless @error
|
||||
end
|
||||
@users = authorization.authorized_users
|
||||
render 'admin/authorizations/reload_users'
|
||||
end
|
||||
|
||||
def add_sub_roles
|
||||
sub_roles = SubRole.find(params[:sub_role_ids]) rescue []
|
||||
users = []
|
||||
sub_roles.each do |sub_role|
|
||||
users += sub_role.users.all.entries
|
||||
end
|
||||
unless sub_roles.blank?
|
||||
authorization = get_or_create_authorization
|
||||
add_sub_roles_to_auth(authorization, sub_roles) unless @error
|
||||
end
|
||||
@users = authorization.authorized_users
|
||||
render 'admin/authorizations/reload_users'
|
||||
end
|
||||
|
||||
def add_users
|
||||
users = User.find(params[:user_ids]) rescue []
|
||||
add(users)
|
||||
end
|
||||
|
||||
def add_roles
|
||||
roles = Role.find(params[:role_ids]) rescue []
|
||||
users = roles.inject([]) do |users, role|
|
||||
users += role.users.all.entries
|
||||
users
|
||||
unless users.blank?
|
||||
authorization = get_or_create_authorization
|
||||
add_users_to_auth(authorization, users) unless @error
|
||||
end
|
||||
add(users)
|
||||
@users = authorization.authorized_users
|
||||
render 'admin/authorizations/reload_users'
|
||||
end
|
||||
|
||||
def modal_select
|
||||
@@ -70,63 +77,111 @@ class Admin::AuthorizationsController < OrbitBackendController
|
||||
if @type
|
||||
@object_id = @object.id if @object
|
||||
@sorted_users = roles.inject({}) do |users, role|
|
||||
users[role] = role.users.where(admin: false).not_guest_user - existing_users - @module_app.managing_users
|
||||
users[role] = role.users.where(admin: false) - existing_users - @module_app.managers
|
||||
users
|
||||
end
|
||||
else
|
||||
@sorted_users = roles.inject({}) do |users, role|
|
||||
users[role] = role.users.where(admin: false).not_guest_user - existing_users
|
||||
users[role] = role.users.where(admin: false) - existing_users
|
||||
users
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def remove_roles
|
||||
roles = Role.find(params[:role_ids]) rescue []
|
||||
unless roles.blank?
|
||||
authorization = get_or_create_authorization
|
||||
remove_roles_form_auth(authorization, roles)
|
||||
end
|
||||
@users = authorization.authorized_users
|
||||
render 'admin/authorizations/reload_users'
|
||||
end
|
||||
|
||||
def remove_sub_roles
|
||||
sub_roles = SubRole.find(params[:sub_role_ids]) rescue []
|
||||
unless sub_roles.blank?
|
||||
authorization = get_or_create_authorization
|
||||
remove_sub_roles_from_auth(authorization, sub_roles)
|
||||
end
|
||||
@users = authorization.authorized_users
|
||||
render 'admin/authorizations/reload_users'
|
||||
end
|
||||
|
||||
def remove_users
|
||||
@users = User.find(params[:ids]) rescue []
|
||||
unless @users.blank?
|
||||
if @type
|
||||
if @object
|
||||
object_auth = @object.get_object_auth_by_title("#{@type}_#{@module_app.key}")
|
||||
remove_users_form_object_auth(object_auth, @users)
|
||||
else
|
||||
@error = t(:no_data)
|
||||
end
|
||||
else
|
||||
remove_managers(@users)
|
||||
end
|
||||
authorization = get_or_create_authorization
|
||||
remove_users_from_auth(authorization, @users)
|
||||
end
|
||||
render 'admin/authorizations/remove_users'
|
||||
@users = authorization.authorized_users
|
||||
render 'admin/authorizations/reload_users'
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def add_managers(users)
|
||||
users.each do |user|
|
||||
@module_app.assign_manager(user, current_user)
|
||||
def add_managers_to_auth(users)
|
||||
@module_app.add_managers(users)
|
||||
end
|
||||
|
||||
def add_roles_to_auth(authorization, roles)
|
||||
authorization.add_roles(roles)
|
||||
end
|
||||
|
||||
def add_sub_roles_to_auth(authorization, sub_roles)
|
||||
authorization.add_sub_roles(sub_roles)
|
||||
end
|
||||
|
||||
def add_users_to_auth(authorization, users)
|
||||
authorization.add_users(users)
|
||||
end
|
||||
|
||||
def get_or_create_authorization
|
||||
case @type
|
||||
when 'category_approval'
|
||||
if @object
|
||||
@object.auth_approval || @object.create_auth_approval(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}")
|
||||
else
|
||||
@error = t(:no_data)
|
||||
end
|
||||
when 'category_authorization'
|
||||
if @object
|
||||
@object.auth_sub_manager || @object.create_auth_sub_manager(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}")
|
||||
else
|
||||
@error = t(:no_data)
|
||||
end
|
||||
when nil
|
||||
@module_app.auth_manager || @module_app.create_auth_manager(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}")
|
||||
else
|
||||
auth = @object.get_authorization_by_title("#{@type}_#{@module_app.key}")
|
||||
unless auth
|
||||
auth = @object.create_auth_approval(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}") if @type.include?('approval')
|
||||
auth = @object.create_auth_sub_manager(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}") if @type.include?('authorization')
|
||||
end
|
||||
auth
|
||||
end
|
||||
end
|
||||
|
||||
def add_users_to_object_auth(object_auth, users)
|
||||
users.each do |user|
|
||||
object_auth.add_user_to_privilege_list(user)
|
||||
end
|
||||
def remove_managers_from_auth(users)
|
||||
@module_app.remove_manager(users)
|
||||
end
|
||||
|
||||
def remove_managers(users)
|
||||
users.each do |user|
|
||||
@module_app.remove_manager(user)
|
||||
end
|
||||
def remove_roles_form_auth(authorization, roles)
|
||||
authorization.remove_roles(roles)
|
||||
end
|
||||
|
||||
def remove_users_form_object_auth(object_auth, users)
|
||||
users.each do |user|
|
||||
object_auth.remove_user_from_privilege_list(user)
|
||||
end
|
||||
def remove_sub_roles_from_auth(authorization, sub_roles)
|
||||
authorization.remove_sub_roles(sub_roles)
|
||||
end
|
||||
|
||||
def remove_users_from_auth(authorization, users)
|
||||
authorization.remove_users(users)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def admin_or_manager
|
||||
@override_can_use = true
|
||||
setup_vars
|
||||
authenticate_user!
|
||||
user_is_manager?
|
||||
@@ -136,7 +191,7 @@ class Admin::AuthorizationsController < OrbitBackendController
|
||||
@module_app = ModuleApp.first(conditions: {:key => params[:module]} ) if params[:module]
|
||||
@type = params[:type].underscore if params[:type]
|
||||
if @type
|
||||
@klass = @type.classify.constantize rescue nil
|
||||
@klass = @type.gsub('_authorization', '').gsub('_approval', '').classify.constantize rescue nil
|
||||
@object = @klass.find(params[:id]) rescue nil
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
class Admin::DashboardsController < OrbitBackendController
|
||||
|
||||
#before_filter :set_current_user
|
||||
#before_filter :authenticate_user!, :except => [:index]
|
||||
# before_filter :is_admin?
|
||||
open_for_visitor
|
||||
|
||||
layout "basic_back_end"
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ class Admin::ItemsController < OrbitBackendController
|
||||
|
||||
def update_position
|
||||
item = Item.find(params[:id])
|
||||
item.shift_to(params[:parent_id], params[:position])
|
||||
render :nothing => true
|
||||
item.shift_to(params[:parent_id], params[:position].to_i)
|
||||
render :nothing => true, status: 200
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,83 @@
|
||||
class Admin::PersonalPluginIntrosController < OrbitMemberController
|
||||
|
||||
include OrbitControllerLib::DivisionForDisable
|
||||
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
|
||||
|
||||
def index
|
||||
|
||||
get_types
|
||||
@plugin_intro = @types.where(:user_id => params[:user_id]).first
|
||||
|
||||
if @plugin_intro.blank?
|
||||
|
||||
@set_type = @types.new()
|
||||
@url = eval("panel_#{@app_type_name}_back_end_#{@app_type}s_path(:user_id=>params[:user_id])")
|
||||
@verb = :post
|
||||
|
||||
else
|
||||
|
||||
@set_type = @types.find(@plugin_intro.id)
|
||||
@url = polymorphic_path(["panel_#{@app_type_name}_back_end", @plugin_intro])
|
||||
@verb = :put
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def show
|
||||
|
||||
end
|
||||
|
||||
|
||||
def new
|
||||
end
|
||||
|
||||
|
||||
def edit
|
||||
end
|
||||
|
||||
def create
|
||||
|
||||
get_types
|
||||
|
||||
@plugin_intro = @types.new(params[:plugin_intro])
|
||||
|
||||
respond_to do |format|
|
||||
if @plugin_intro.save
|
||||
format.html { redirect_to(admin_users_new_interface_url(:id=>params[:plugin_intro][:user_id],:show_plugin_profile=>@reback_name)) }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def update
|
||||
|
||||
get_types
|
||||
|
||||
@plugin_intro = @types.find(params[:id])
|
||||
|
||||
respond_to do |format|
|
||||
|
||||
if @plugin_intro.update_attributes(params[:plugin_intro])
|
||||
format.html { redirect_to(admin_users_new_interface_url(:id=>params[:plugin_intro][:user_id],:show_plugin_profile=>@reback_name)) }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def destroy
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def get_types
|
||||
@types = @app_type.classify.constantize
|
||||
end
|
||||
|
||||
end
|
||||
@@ -4,19 +4,19 @@ class Admin::PluginsController < ApplicationController
|
||||
|
||||
def index
|
||||
|
||||
@plugins = OrbitApp::Plugin::Registration.all
|
||||
@plugins = OrbitApp::Plugin::Registration.all
|
||||
|
||||
if(!params[:show_plugin_profile].nil?)
|
||||
|
||||
@right_partial = OrbitApp::Plugin::Registration.find_by_key(params[:show_plugin_profile]).admin_partial_path
|
||||
@right_partial = OrbitApp::Plugin::Registration.find_by_app_name(params[:show_plugin_profile]).admin_partial_path
|
||||
|
||||
if !@right_partial.blank?
|
||||
respond_to do |format|
|
||||
format.html { redirect_to( @right_partial ) }
|
||||
end
|
||||
else
|
||||
@right_partial = ""
|
||||
end
|
||||
if !@right_partial.blank?
|
||||
respond_to do |format|
|
||||
format.html { redirect_to( @right_partial ) }
|
||||
end
|
||||
else
|
||||
@right_partial = ""
|
||||
end
|
||||
|
||||
else
|
||||
@right_partial = ""
|
||||
|
||||
@@ -55,6 +55,15 @@ class Admin::SitesController < OrbitBackendController
|
||||
|
||||
end
|
||||
|
||||
def search_engine
|
||||
|
||||
end
|
||||
|
||||
def preference
|
||||
|
||||
end
|
||||
|
||||
|
||||
def ui_theme
|
||||
|
||||
end
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
class Admin::TagsController < OrbitBackendController
|
||||
include OrbitTag::Merging
|
||||
|
||||
before_filter :force_order_for_visitor, only: [:index]
|
||||
before_filter :force_order_for_user, except: [:index]
|
||||
|
||||
def index
|
||||
@tags = @module_app.module_tags
|
||||
|
||||
@@ -1,19 +1,10 @@
|
||||
class Admin::UsersNewInterfaceController < OrbitMemberController
|
||||
|
||||
helper MemberHelper
|
||||
helper OrbitBackendHelper
|
||||
|
||||
# before_filter :authenticate_user!
|
||||
# before_filter :set_attribute, :only => [:index, :show, :new, :edit]
|
||||
|
||||
before_filter :force_order_for_visitor,:only=>[:index,:show]
|
||||
before_filter :force_order_for_user,:except => [:index,:show]
|
||||
before_filter :set_attribute,:except => [:index,:show]
|
||||
|
||||
def setup_vars
|
||||
# @app_title ||= controller_path.split('/')[1].singularize
|
||||
# @module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
|
||||
# raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
end
|
||||
open_for_visitor :only => [:index, :show]
|
||||
|
||||
def index
|
||||
get_tags
|
||||
@@ -26,50 +17,64 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
|
||||
|
||||
|
||||
@filter = params[:filter]
|
||||
new_filter = params[:new_filter]
|
||||
@mq = params[:mq]
|
||||
@new_filter = params[:new_filter]
|
||||
|
||||
if @filter && params[:clear]
|
||||
@filter.delete(params[:type])
|
||||
elsif @filter && new_filter
|
||||
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
|
||||
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
|
||||
elsif @filter.has_key?(new_filter[:type])
|
||||
@filter[new_filter[:type]] << new_filter[:id].to_s
|
||||
elsif @filter && @new_filter
|
||||
if @filter.has_key?(@new_filter[:type]) && @filter[@new_filter[:type]].include?(@new_filter[:id].to_s)
|
||||
@filter[@new_filter[:type]].delete(@new_filter[:id].to_s)
|
||||
elsif @filter.has_key?(@new_filter[:type])
|
||||
@filter[@new_filter[:type]] << @new_filter[:id].to_s
|
||||
else
|
||||
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
|
||||
@filter.merge!({@new_filter[:type] => [@new_filter[:id].to_s]})
|
||||
end
|
||||
elsif new_filter
|
||||
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
|
||||
elsif @new_filter
|
||||
@filter = {@new_filter[:type] => [@new_filter[:id].to_s]}
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
if @filter.blank?
|
||||
if @filter.blank? and @mq.blank?
|
||||
|
||||
render case params[:at]
|
||||
when 'summary'
|
||||
@users=User.not_guest_user.page(page_num).per(12).asc("_id").includes('avatar')
|
||||
@users=User.not_guest_user.page(page_num).per(12).desc("_id").includes('avatar')
|
||||
"index_summary"
|
||||
when 'thumbnail'
|
||||
@users=User.not_guest_user.page(page_num).per(36).asc("_id").includes('avatar')
|
||||
@users=User.not_guest_user.page(page_num).per(36).desc("_id").includes('avatar')
|
||||
"index_thumbnail"
|
||||
else
|
||||
@users=User.not_guest_user.page(page_num).per(10).asc("_id").includes('avatar')
|
||||
@users=User.not_guest_user.page(page_num).per(10).desc("_id").includes('avatar')
|
||||
"index"
|
||||
end
|
||||
|
||||
else
|
||||
elsif @filter.blank? and !@mq.blank?
|
||||
|
||||
render case params[:at]
|
||||
when 'summary'
|
||||
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(12).asc("_id").includes('avatar')
|
||||
@users=User.not_guest_user.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id").includes('avatar')
|
||||
"index_summary"
|
||||
when 'thumbnail'
|
||||
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(36).asc("_id").includes('avatar')
|
||||
@users=User.not_guest_user.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id").includes('avatar')
|
||||
"index_thumbnail"
|
||||
else
|
||||
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(10).asc("_id").includes('avatar')
|
||||
@users=User.not_guest_user.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id").includes('avatar')
|
||||
"index"
|
||||
end
|
||||
|
||||
elsif !@filter.blank? and @mq.blank?
|
||||
|
||||
render case params[:at]
|
||||
when 'summary'
|
||||
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(12).desc("_id").includes('avatar')
|
||||
"index_summary"
|
||||
when 'thumbnail'
|
||||
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(36).desc("_id").includes('avatar')
|
||||
"index_thumbnail"
|
||||
else
|
||||
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(10).desc("_id").includes('avatar')
|
||||
"index"
|
||||
end
|
||||
|
||||
@@ -78,9 +83,18 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
|
||||
end
|
||||
|
||||
def show
|
||||
|
||||
@user = User.find(params[:id])
|
||||
|
||||
@plugins = OrbitApp::Plugin::Registration.all
|
||||
|
||||
@ppname = Array.new
|
||||
@plugins.each do |aa|
|
||||
@ppname << [aa.sort_number.to_i, [aa.name, aa.app_name, aa.intro_app_name, aa.front_partial_path]]
|
||||
end
|
||||
@plugin_shows = @ppname.sort.collect {|v| {"name"=>v[1][0],"app_name"=>v[1][1],"intro_app_name"=>v[1][2],"front_partial_path"=>v[1][3]} }
|
||||
|
||||
|
||||
@profile_data = []
|
||||
@teacher_data = []
|
||||
@student_data = []
|
||||
@@ -93,9 +107,11 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
|
||||
|
||||
|
||||
if(!params[:show_plugin_profile].nil?)
|
||||
@right_partial = OrbitApp::Plugin::Registration.find_by_key(params[:show_plugin_profile]).profile_partial_path rescue 'plugin_summary'
|
||||
@right_partial = OrbitApp::Plugin::Registration.find_by_app_name(params[:show_plugin_profile]).profile_partial_path rescue 'plugin_summary'
|
||||
@plugin_app_name = OrbitApp::Plugin::Registration.find_by_app_name(params[:show_plugin_profile]).name rescue nil
|
||||
else
|
||||
@right_partial = "plugin_summary"
|
||||
@plugin_app_name = ''
|
||||
end
|
||||
|
||||
# @user.attribute_values.each{|att_val|
|
||||
@@ -225,7 +241,65 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
|
||||
@user.destroy
|
||||
end
|
||||
|
||||
redirect_to :action => :index
|
||||
# redirect_to :action => :index
|
||||
respond_to do |format|
|
||||
format.html { redirect_to(admin_users_new_interface_index_url(:at=>params[:at])) }
|
||||
# format.xml { head :ok }
|
||||
format.js
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def edit_order_card
|
||||
@users = User.not_guest_user
|
||||
@type = 'card'
|
||||
render 'edit_order'
|
||||
end
|
||||
|
||||
def edit_order_list
|
||||
@users = User.not_guest_user
|
||||
@type = 'list'
|
||||
render 'edit_order'
|
||||
end
|
||||
|
||||
def update_order_card
|
||||
@error = false
|
||||
if params[:users].present?
|
||||
to_go = params[:users][:position].to_i
|
||||
user_at_position = User.where(position: to_go).first
|
||||
user = User.find(params[:users][:id])
|
||||
if user_at_position
|
||||
if user.position > user_at_position.position
|
||||
user.move_above(user_at_position)
|
||||
else
|
||||
user.move_below(user_at_position)
|
||||
end
|
||||
end
|
||||
end
|
||||
render nothing: true, status: 200
|
||||
end
|
||||
|
||||
def update_order_list
|
||||
@error = []
|
||||
if params[:users].present?
|
||||
params[:users].values.sort.each do |pair|
|
||||
to_go = pair[0].to_i
|
||||
if to_go > 0
|
||||
user_at_position = User.where(position: to_go - 1).first
|
||||
user = User.find(pair[1])
|
||||
if user_at_position && !(user_at_position == user)
|
||||
if user.position > user_at_position.position
|
||||
user.move_above(user_at_position)
|
||||
else
|
||||
user.move_below(user_at_position)
|
||||
end
|
||||
elsif to_go > User.count
|
||||
user.move_to_bottom
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@users = User.not_guest_user
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
@@ -18,7 +18,7 @@ class ApplicationController < ActionController::Base
|
||||
helper_attr :site_valid_locales
|
||||
|
||||
def check_backend_openness
|
||||
if !Me.backend_openness_on
|
||||
if Site.first.backend_openness_on
|
||||
redirect_to '/users/sign_in' if not (authenticate_user! and is_member? )
|
||||
end
|
||||
end
|
||||
@@ -145,11 +145,14 @@ class ApplicationController < ActionController::Base
|
||||
condition = VALID_LOCALES.include?(session[:locale])
|
||||
elsif session[:locale]
|
||||
condition = @site.in_use_locales.include?(session[:locale])
|
||||
elsif @site.default_locale.present?
|
||||
default_locale = @site.default_locale
|
||||
condition = @site.valid_locales.include?(default_locale)
|
||||
else
|
||||
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first rescue nil
|
||||
condition = @site.in_use_locales.include?(browser_locale)
|
||||
end
|
||||
session[:locale] = condition ? (browser_locale || session[:locale]) : I18n.default_locale.to_s
|
||||
session[:locale] = condition ? (default_locale || browser_locale || session[:locale]) : I18n.default_locale.to_s
|
||||
I18n.locale = session[:locale].to_sym
|
||||
@site_in_use_locales = site_locales_default_head(@site.in_use_locales)
|
||||
@site_valid_locales = site_locales_default_head(@site.valid_locales)
|
||||
@@ -318,7 +321,7 @@ class ApplicationController < ActionController::Base
|
||||
a << object if (value.include?(object.category.id.to_s) rescue nil)
|
||||
end
|
||||
objects = a.uniq
|
||||
when 'tag'
|
||||
when 'tags'
|
||||
a = Array.new
|
||||
objects.each do |object|
|
||||
object.tags.each do |tag|
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class DesktopAppsController < OrbitBackendController
|
||||
class DesktopAppsController < ApplicationController
|
||||
require "net/http"
|
||||
require "uri"
|
||||
require 'zip/zip'
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
class DesktopController< ApplicationController
|
||||
layout 'desktop'
|
||||
before_filter :authenticate_user!
|
||||
before_filter :check_desktop_open, :only => [:index,:show]
|
||||
|
||||
#to load pages...
|
||||
|
||||
|
||||
# caches_page :index
|
||||
|
||||
def index
|
||||
@desktop = current_user.desktop
|
||||
@currentusername = current_user.name
|
||||
@currentname = current_user.first_name + current_user.last_name
|
||||
@title = "Desktop - " + @currentusername
|
||||
@section = @desktop.sections.first
|
||||
end
|
||||
@@ -335,7 +339,14 @@ class DesktopController< ApplicationController
|
||||
b = {"success"=>"true"}
|
||||
render :json=>b.to_json
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_desktop_open
|
||||
if Me.desktop_closed && current_user.nil? #Need to be change
|
||||
redirect_to '/admin/dashboards'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
class DesktopThemesController < OrbitBackendController
|
||||
class DesktopThemesController < ApplicationController
|
||||
require "net/http"
|
||||
require "uri"
|
||||
require 'zip/zip'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class DesktopWidgetsController < OrbitBackendController
|
||||
class DesktopWidgetsController < ApplicationController
|
||||
require "net/http"
|
||||
require "uri"
|
||||
require 'zip/zip'
|
||||
|
||||
@@ -12,7 +12,16 @@ class FrontController < ApplicationController
|
||||
end
|
||||
|
||||
def show_footer
|
||||
render :text => @site.footer
|
||||
@page = Page.find(:all, :conditions => {:name => /terms/i})
|
||||
@name = @page.first.name
|
||||
@url = "/#{@name}"
|
||||
|
||||
if !@site.enable_terms_of_use
|
||||
render :text => (@site.footer + "<a href='#{@url}'>Terms of Use</a>")
|
||||
else
|
||||
render :text => @site.footer
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def show_menu
|
||||
@@ -21,7 +30,15 @@ class FrontController < ApplicationController
|
||||
end
|
||||
|
||||
def show_site_sub_menu
|
||||
render :text => @site.sub_menu
|
||||
@page = Page.find(:all, :conditions => {:name => /sitemap/i})
|
||||
@name = @page.first.name
|
||||
@url = "/#{@name}"
|
||||
|
||||
if !@site.sitemap_menu_in_header
|
||||
render :text => (@site.sub_menu + "<a href='#{@url}'>Sitemap</a>")
|
||||
else
|
||||
render :text => @site.sub_menu
|
||||
end
|
||||
end
|
||||
|
||||
def show_sitemap
|
||||
@@ -43,6 +60,11 @@ class FrontController < ApplicationController
|
||||
@tags = module_app.sorted_tags_for_cloud
|
||||
end
|
||||
|
||||
def show_terms_of_use
|
||||
@site = Site.first rescue nil
|
||||
@terms = @site.terms_of_use
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def menu_level(page, current_page, current, menu)
|
||||
@@ -73,7 +95,7 @@ class FrontController < ApplicationController
|
||||
res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page))
|
||||
res << "'>"
|
||||
root = "/"
|
||||
res << "<a href='#{(page.class.to_s.eql?('Page') ? root + page.path : page.url)}'><span>#{page.title}</span></a>"
|
||||
res << "<a href='#{(page.class.to_s.eql?('Page') ? root + page.path : page.url)}' target=#{(page.class.to_s.eql?('Page') ? '_self' : '_blank')} ><span>#{page.title}</span></a>"
|
||||
if page.visible_children.size > 0 && current < menu.levels
|
||||
res << "<span class='dot'></span>"
|
||||
res << menu_level(page, current_page, current + 1, menu)
|
||||
|
||||
@@ -43,7 +43,7 @@ class MobileController < ApplicationController
|
||||
|
||||
def page
|
||||
@page_title = t('mobile.page')
|
||||
@page_contexts = PageContext.where(:archived => false).page(params[:page_main]).per(15)
|
||||
@page_contexts = get_sorted_page_from_structure
|
||||
end
|
||||
|
||||
def page_content
|
||||
@@ -57,4 +57,12 @@ class MobileController < ApplicationController
|
||||
@no_footer = true if request.path =~ /app/
|
||||
end
|
||||
|
||||
def get_sorted_page_from_structure
|
||||
page_contexts = Item.structure_ordered_items.inject([]){ |pages, page|
|
||||
pages << page.page_contexts.where(archived: false).limit(1)[0] if page.is_a?(Page) && !page.page_contexts.blank?
|
||||
pages
|
||||
}
|
||||
Kaminari.paginate_array(page_contexts).page(params[:page]).per(15)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,7 +1,6 @@
|
||||
class OrbitBackendController < ApplicationController
|
||||
include OrbitCategory::Categorizing
|
||||
include OrbitCoreLib::AppBackendUtility
|
||||
include OrbitCoreLib::PermissionUtility
|
||||
include OrbitCoreLib::Authorization
|
||||
include OrbitTag::Tagging
|
||||
include AdminHelper
|
||||
include ApplicationHelper
|
||||
@@ -10,12 +9,6 @@ class OrbitBackendController < ApplicationController
|
||||
|
||||
layout "back_end"
|
||||
|
||||
def setup_vars
|
||||
@app_title ||= controller_path.split('/')[1].singularize
|
||||
@module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
|
||||
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
end
|
||||
|
||||
def get_statuses
|
||||
status = []
|
||||
status << 'is_top'
|
||||
@@ -28,27 +21,4 @@ class OrbitBackendController < ApplicationController
|
||||
end
|
||||
status
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def force_order_for_visitor
|
||||
check_backend_openness
|
||||
setup_vars
|
||||
set_current_user
|
||||
end
|
||||
|
||||
|
||||
def force_order_for_user
|
||||
setup_vars
|
||||
set_current_user
|
||||
authenticate_user!
|
||||
check_user_can_use
|
||||
end
|
||||
|
||||
def check_user_can_use
|
||||
unless check_permission
|
||||
#redirect_to polymorphic_path(['panel',@app_title,'back_end','public'])
|
||||
redirect_to root_url
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,6 @@
|
||||
class OrbitMemberController < ApplicationController
|
||||
include OrbitCategory::Categorizing
|
||||
include OrbitCoreLib::AppBackendUtility
|
||||
include OrbitCoreLib::PermissionUtility
|
||||
include OrbitCoreLib::Authorization
|
||||
include OrbitTag::Tagging
|
||||
include AdminHelper
|
||||
include ApplicationHelper
|
||||
@@ -10,12 +9,6 @@ class OrbitMemberController < ApplicationController
|
||||
|
||||
layout "member"
|
||||
|
||||
def setup_vars
|
||||
@app_title ||= controller_path.split('/')[1].singularize
|
||||
@module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
|
||||
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
end
|
||||
|
||||
def get_statuses
|
||||
status = []
|
||||
status << 'is_top'
|
||||
@@ -28,27 +21,4 @@ class OrbitMemberController < ApplicationController
|
||||
end
|
||||
status
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def force_order_for_visitor
|
||||
check_backend_openness
|
||||
setup_vars
|
||||
set_current_user
|
||||
end
|
||||
|
||||
|
||||
def force_order_for_user
|
||||
setup_vars
|
||||
set_current_user
|
||||
authenticate_user!
|
||||
check_user_can_use
|
||||
end
|
||||
|
||||
def check_user_can_use
|
||||
unless check_permission
|
||||
#redirect_to polymorphic_path(['panel',@app_title,'back_end','public'])
|
||||
redirect_to root_url
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -4,18 +4,12 @@ class PagesController < ApplicationController
|
||||
before_filter :check_frontend_open, :only => [:index,:show]
|
||||
# caches_page :index
|
||||
|
||||
def check_frontend_open
|
||||
if Me.frontend_closed and current_user.nil? #Need to be change
|
||||
redirect_to '/admin/dashboards'
|
||||
end
|
||||
end
|
||||
|
||||
def index
|
||||
@item = Page.find_by_name('home')
|
||||
|
||||
if @item
|
||||
delayed_impressionist(@item)
|
||||
render_page
|
||||
render_page
|
||||
else
|
||||
redirect_to '/admin/dashboards',:notice=>t(:need_home)
|
||||
# render :text => t(:need_home)
|
||||
@@ -25,6 +19,7 @@ class PagesController < ApplicationController
|
||||
def show
|
||||
#begin
|
||||
@item = Item.first(:conditions => {:path => params[:page_name]})
|
||||
|
||||
if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s))
|
||||
delayed_impressionist(@item)
|
||||
case @item.class.to_s
|
||||
@@ -32,7 +27,7 @@ class PagesController < ApplicationController
|
||||
if params[:clicked_field_name]
|
||||
render_page({"clicked_field_name"=>params["clicked_field_name"]}) unless save_from_no_lang_for_page
|
||||
else
|
||||
render_page(params) unless save_from_no_lang_for_page
|
||||
render_page(params.except(:controller, :action, :page_name)) unless save_from_no_lang_for_page
|
||||
end
|
||||
when 'Link'
|
||||
redirect_to(@item[:url]) unless save_from_no_lang_for_page
|
||||
@@ -117,6 +112,12 @@ class PagesController < ApplicationController
|
||||
end
|
||||
raise PageError,'Missing Frontend Page' if @item.nil?
|
||||
end
|
||||
|
||||
def check_frontend_open
|
||||
if Site.first.frontend_open && current_user.nil? #Need to be change
|
||||
redirect_to '/admin/dashboards'
|
||||
end
|
||||
end
|
||||
|
||||
def save_from_no_lang_for_page
|
||||
if @item.nil? or !@item.enabled_for_lang(I18n.locale.to_s)
|
||||
|
||||
@@ -7,5 +7,5 @@ module Admin::AssetsHelper
|
||||
end
|
||||
a.join(' - ')
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
@@ -271,11 +271,7 @@ module ApplicationHelper
|
||||
end
|
||||
|
||||
def show_avatar(user)
|
||||
if (user.avatar? rescue false)
|
||||
image_tag(user.avatar.thumb.url)
|
||||
else
|
||||
image_tag "person.png"
|
||||
end
|
||||
image_tag(user.avatar.thumb.url)
|
||||
end
|
||||
|
||||
# NTU link
|
||||
|
||||
@@ -34,7 +34,8 @@ module AttributeFieldsHelper
|
||||
value = (can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value) rescue nil
|
||||
key_field = can_muti_lang_input? ? "[#{key}]" : ""
|
||||
place_holder= @panel_setting["placeholder"][key] rescue ''
|
||||
result = text_area_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
|
||||
# result = text_area_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
|
||||
result = text_field_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
|
||||
|
||||
add_ext= @attribute_value.address_ext[key] rescue {}
|
||||
|
||||
@@ -181,7 +182,7 @@ protected
|
||||
def lang_panel_tabbable_wrapper(add_more_params,&block)
|
||||
add_more_counter = ''
|
||||
|
||||
if self.markup=='text_area' or self.markup=='address'
|
||||
if self.markup=='text_area' #or self.markup=='address'
|
||||
|
||||
tmp1 = VALID_LOCALES.collect do |key|
|
||||
value = @prefiled_value[key] rescue nil
|
||||
@@ -261,7 +262,7 @@ protected
|
||||
link_to(I18nVariable.from_locale(key),link_entry,:data=>{:toggle=>"tab"},:class=>"btn #{(key == I18n.locale.to_s ? "active" : nil)}",:for=>key)
|
||||
end # of VALID_LOCALES.collect for tabs
|
||||
|
||||
buff2 << link_to((content_tag :i,'',:class=>'icon-edit'),"##{get_pairing_tab_class({})}_m_window", :role=>"button",:class=>'btn',:data=>{:toggle=>"modal"}) if self.markup == 'address'
|
||||
buff2 << link_to((content_tag :i,'',:class=>'icon-edit'),"#address-field", :role=>"button",:class=>'btn',:data=>{:toggle=>"modal"}) if self.markup == 'address'
|
||||
buff2 << link_to((content_tag :i,'',:class=>'icon-trash'),"#",:class=>"btn remove-input") if self.add_more
|
||||
buff2.join.html_safe
|
||||
end # of content ul
|
||||
@@ -357,7 +358,7 @@ protected
|
||||
|
||||
# address = content_tag :div,:class=>"multipleInput editMore" do
|
||||
address = content_tag :div,:class=>"control-group" do
|
||||
label + content_tag(:div, controls_wrapper(&block), :class=>'controls')
|
||||
label + content_tag(:div, controls_wrapper(&block), :class=>'controls add-input')
|
||||
end # of div multipleInput editMore
|
||||
|
||||
result = address
|
||||
@@ -452,7 +453,7 @@ protected
|
||||
def gen_modal_dialog
|
||||
render_anywhere("shared/attribute_field/address_modal_dialog",{
|
||||
:field_name=>title,
|
||||
:html_id=>"#{get_pairing_tab_class({})}_m_window",
|
||||
:html_id=>"address-field",
|
||||
:btn_class => "#{get_pairing_tab_class({})}",
|
||||
:field_name_basic => get_basic_field_name_base
|
||||
}
|
||||
|
||||
@@ -321,9 +321,9 @@ module OrbitBackendHelper
|
||||
def is_authorized(object)
|
||||
autorized = @module_app.authorizable_models.inject(false) do |autorized, klass|
|
||||
if object.is_a?(klass.constantize)
|
||||
autorized ||= object.cur_user_is_sub_manager_of("#{klass.underscore}_#{@module_app.key}")
|
||||
autorized ||= object.user_can_sub_manage?(current_user)
|
||||
else
|
||||
autorized ||= object.category.cur_user_is_sub_manager_of("category_#{@module_app.key}")
|
||||
autorized ||= object.category.user_can_sub_manage?(current_user)
|
||||
end
|
||||
autorized
|
||||
end
|
||||
|
||||
@@ -34,8 +34,8 @@ module OrbitFormHelper
|
||||
|
||||
def date_picker(object_name, method, options)
|
||||
custom = {}
|
||||
custom[:format] = 'yyyy-MM-dd'
|
||||
custom[:value] = display_date(options[:value]) if options[:value]
|
||||
custom[:format] = options[:format] || 'yyyy/MM'
|
||||
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
|
||||
custom[:picker_class] = 'date_picker'
|
||||
custom[:label] = options[:label] || I18n.t('datetime_picker.date.label')
|
||||
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.date.placeholder')
|
||||
@@ -44,8 +44,8 @@ module OrbitFormHelper
|
||||
|
||||
def default_picker(object_name, method, options)
|
||||
custom = {}
|
||||
custom[:format] = 'yyyy-MM-dd hh:mm'
|
||||
custom[:value] = display_date_time(options[:value]) if options[:value]
|
||||
custom[:format] = options[:format] || 'yyyy/MM/dd hh:mm'
|
||||
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
|
||||
custom[:picker_class] = 'default_picker'
|
||||
custom[:label] = options[:label] || I18n.t('datetime_picker.default.label')
|
||||
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.default.placeholder')
|
||||
@@ -54,8 +54,8 @@ module OrbitFormHelper
|
||||
|
||||
def time_picker(object_name, method, options)
|
||||
custom = {}
|
||||
custom[:format] = 'hh:mm'
|
||||
custom[:value] = display_time(options[:value]) if options[:value]
|
||||
custom[:format] = options[:format] || 'hh:mm'
|
||||
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
|
||||
custom[:picker_class] = 'time_picker'
|
||||
custom[:label] = options[:label] || I18n.t('datetime_picker.time.label')
|
||||
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.time.placeholder')
|
||||
@@ -93,6 +93,10 @@ module OrbitFormHelper
|
||||
end
|
||||
end
|
||||
|
||||
def format_value(value, format)
|
||||
value.strftime(format.gsub('yyyy', '%Y').gsub('MM', '%m').gsub('dd', '%d').gsub('hh', '%H').gsub('mm', '%M'))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
module Orbit::FormBuilder
|
||||
|
||||
@@ -5,13 +5,16 @@ class Asset
|
||||
include OrbitTag::Taggable
|
||||
|
||||
mount_uploader :data, FileAssetUploader
|
||||
before_save :update_asset_attributes
|
||||
|
||||
field :filename
|
||||
field :description, localize: true
|
||||
field :title, localize: true
|
||||
field :content_type
|
||||
field :file_size
|
||||
|
||||
validates :title, :at_least_one => true
|
||||
validates :description, :at_least_one => true
|
||||
|
||||
validates_presence_of :data
|
||||
|
||||
|
||||
@@ -21,6 +24,14 @@ class Asset
|
||||
before_save :clean_tags
|
||||
|
||||
protected
|
||||
|
||||
|
||||
def update_asset_attributes
|
||||
if data.present? && data_changed?
|
||||
self.content_type = data.file.content_type
|
||||
self.file_size = data.file.size
|
||||
end
|
||||
end
|
||||
|
||||
def clean_tags
|
||||
self.tagged_ids.delete('')
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
class AuthApproval < Authorization
|
||||
field :title
|
||||
|
||||
belongs_to :approval_authorizable, polymorphic: true
|
||||
has_and_belongs_to_many :authorized_users, class_name: 'User', inverse_of: 'approving_apps'
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
class AuthManager < Authorization
|
||||
# belongs_to :manager_authorizable, polymorphic: true
|
||||
has_and_belongs_to_many :authorized_users, class_name: 'User', inverse_of: 'managing_apps'
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
class AuthSubManager < Authorization
|
||||
field :title
|
||||
|
||||
belongs_to :sub_manager_authorizable, polymorphic: true
|
||||
has_and_belongs_to_many :authorized_users, class_name: 'User', inverse_of: 'sub_managing_apps'
|
||||
end
|
||||
@@ -0,0 +1,108 @@
|
||||
class Authorization
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :title
|
||||
|
||||
belongs_to :module_app
|
||||
|
||||
has_and_belongs_to_many :roles
|
||||
has_and_belongs_to_many :sub_roles
|
||||
|
||||
delegate :update_auth_approval_users, :update_auth_manager_users, :update_auth_sub_manager_users, to: :module_app, prefix: true, allow_nil: true
|
||||
|
||||
after_save :update_module_app
|
||||
|
||||
|
||||
def add_roles(roles)
|
||||
users = []
|
||||
roles = Array(roles)
|
||||
add_operation(:roles, roles)
|
||||
sub_roles = []
|
||||
roles.each{|role| role.sub_roles.each{|sub_role| sub_roles << sub_role.id}}
|
||||
add_operation(:sub_roles, sub_roles)
|
||||
roles.each{|role| role.users.where(admin: false).each{|user| users << user}}
|
||||
add_users(users, false)
|
||||
end
|
||||
|
||||
def add_sub_roles(sub_roles)
|
||||
users = []
|
||||
sub_roles = Array(sub_roles)
|
||||
add_operation(:sub_roles, sub_roles)
|
||||
sub_roles.each do |sub_role|
|
||||
self.roles << sub_role.role unless self.roles.include?(sub_role.role)
|
||||
sub_role.users.where(admin: false).each{|user| users << user}
|
||||
end
|
||||
add_users(users, false)
|
||||
end
|
||||
|
||||
def add_users(users, with_parents = true)
|
||||
users = Array(users)
|
||||
add_operation(:authorized_users, users)
|
||||
users.each do |user|
|
||||
user.roles.each do |role|
|
||||
self.roles << role unless self.roles.include?(role)
|
||||
end
|
||||
user.sub_roles.each do |sub_role|
|
||||
self.sub_roles << sub_role unless self.sub_roles.include?(sub_role)
|
||||
end
|
||||
end if with_parents
|
||||
self.save
|
||||
end
|
||||
|
||||
def remove_roles(roles)
|
||||
users = []
|
||||
sub_roles = []
|
||||
roles = Array(roles)
|
||||
remove_operation(:roles, roles)
|
||||
roles.each do |role|
|
||||
role.sub_roles.each{|sub_role| sub_roles << sub_role}
|
||||
role.users.where(admin: false).each{|user| users << user}
|
||||
end
|
||||
remove_operation(:sub_role_ids, sub_roles)
|
||||
remove_operation(:authorized_user_ids, users)
|
||||
add_roles(self.roles)
|
||||
end
|
||||
|
||||
def remove_sub_roles(sub_roles)
|
||||
users = []
|
||||
sub_roles = Array(sub_roles)
|
||||
remove_operation(:sub_roles, sub_roles)
|
||||
sub_roles.each do |sub_role|
|
||||
users << sub_role.users.where(admin: false)
|
||||
end
|
||||
remove_operation(:authorized_user_ids, users)
|
||||
add_roles(self.roles)
|
||||
end
|
||||
|
||||
def remove_users(users)
|
||||
users = Array(users)
|
||||
remove_operation(:authorized_user_ids, users)
|
||||
self.save
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def add_operation(db_field, objs)
|
||||
objs.each do |obj|
|
||||
self.send(db_field) << obj unless self.send(db_field).include?(obj)
|
||||
end
|
||||
end
|
||||
|
||||
def remove_operation(db_field, obj)
|
||||
self.write_attribute(db_field, self.send(db_field) - obj.map{|y| y.id})
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def update_module_app
|
||||
case self._type
|
||||
when "AuthApproval"
|
||||
self.module_app_update_auth_approval_users
|
||||
when "AuthManager"
|
||||
self.module_app_update_auth_manager_users
|
||||
when "AuthSubManager"
|
||||
self.module_app_update_auth_sub_manager_users
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,7 @@
|
||||
class Category
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
include OrbitCoreLib::ObjectAuthable
|
||||
include OrbitModel::Authorizable
|
||||
|
||||
field :disable, type: Boolean, default: false
|
||||
field :title, localize: true
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
class Ckeditor::Asset
|
||||
include Ckeditor::Orm::Mongoid::AssetBase
|
||||
|
||||
delegate :url, :current_path, :size, :content_type, :filename, :to => :data
|
||||
|
||||
validates_presence_of :data
|
||||
end
|
||||
@@ -1,7 +0,0 @@
|
||||
class Ckeditor::AttachmentFile < Ckeditor::Asset
|
||||
mount_uploader :data, CkeditorAttachmentFileUploader, :mount_on => :data_file_name
|
||||
|
||||
def url_thumb
|
||||
@url_thumb ||= Ckeditor::Utils.filethumb(filename)
|
||||
end
|
||||
end
|
||||
@@ -1,7 +0,0 @@
|
||||
class Ckeditor::Picture < Ckeditor::Asset
|
||||
mount_uploader :data, CkeditorPictureUploader, :mount_on => :data_file_name
|
||||
|
||||
def url_content
|
||||
url(:content)
|
||||
end
|
||||
end
|
||||
@@ -45,15 +45,18 @@ class Item
|
||||
end
|
||||
|
||||
def shift_to(new_parent, position)
|
||||
unless self.parent_id.to_s.eql?(new_parent) && self.position.eql?(position.to_i)
|
||||
new_parent = Item.find(new_parent)
|
||||
current_position_sibling = find_by_parent_and_position(new_parent, position.to_i)
|
||||
if current_position_sibling
|
||||
move_above(current_position_sibling)
|
||||
elsif self.parent != new_parent
|
||||
self.parent = new_parent
|
||||
save
|
||||
position = position.to_i
|
||||
new_parent = Item.find(new_parent)
|
||||
current_position_sibling = find_by_parent_and_position(new_parent, position)
|
||||
if current_position_sibling
|
||||
if self.position > current_position_sibling.position
|
||||
self.move_above(current_position_sibling)
|
||||
else
|
||||
self.move_below(current_position_sibling)
|
||||
end
|
||||
elsif self.parent != new_parent
|
||||
self.parent = new_parent
|
||||
save
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,16 +1,26 @@
|
||||
class ModuleApp
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
include OrbitCoreLib::ObjectTokenUtility
|
||||
include OrbitApp::ModuleAppMembershipTools
|
||||
# include OrbitCoreLib::ObjectTokenUtility
|
||||
# include OrbitApp::ModuleAppMembershipTools
|
||||
|
||||
field :auth_approval_users, type: Array, default: nil
|
||||
field :auth_manager_users, type: Array, default: nil
|
||||
field :auth_sub_manager_users, type: Array, default: nil
|
||||
field :key
|
||||
field :title
|
||||
field :sidebar_order,type: Integer,default: 0
|
||||
|
||||
has_one :auth_manager, dependent: :destroy
|
||||
has_many :auth_approvals, dependent: :destroy
|
||||
has_many :auth_sub_managers, dependent: :destroy
|
||||
has_many :categories, dependent: :destroy
|
||||
has_many :module_tags, dependent: :destroy
|
||||
|
||||
has_many :approvals #to remove
|
||||
|
||||
delegate :authorized_users, to: :auth_manager, prefix: true, allow_nil: true
|
||||
|
||||
def refetch_setting!(reg)
|
||||
# %w{module_label category base_url version organization author intro update_info create_date}.each do |field|
|
||||
# self[field.to_sym] = reg.send field
|
||||
@@ -24,6 +34,7 @@ class ModuleApp
|
||||
self[:has_category] = reg.get_has_category
|
||||
self[:is_approvable] = reg.get_is_approvable
|
||||
self[:is_authorizable] = reg.get_is_authorizable
|
||||
self[:approvable_models] = reg.get_approvable_models
|
||||
self[:authorizable_models] = reg.get_authorizable_models
|
||||
end
|
||||
|
||||
@@ -168,4 +179,71 @@ class ModuleApp
|
||||
self.module_tags.map{|t| t.tag }
|
||||
end
|
||||
|
||||
|
||||
# authorization
|
||||
def update_auth_approval_users
|
||||
user_ids = self.auth_approvals.inject([]) do |users, auth|
|
||||
users += auth.authorized_users.map{|user| user.id}
|
||||
end
|
||||
self.update_attribute(:auth_approval_users, user_ids.uniq)
|
||||
end
|
||||
|
||||
def update_auth_manager_users
|
||||
self.update_attribute(:auth_manager_users, self.auth_manager_authorized_users.map{|user| user.id})
|
||||
end
|
||||
|
||||
def update_auth_sub_manager_users
|
||||
user_ids = self.auth_sub_managers.inject([]) do |users, auth|
|
||||
users += auth.authorized_users.map{|user| user.id}
|
||||
end
|
||||
self.update_attribute(:auth_sub_manager_users, user_ids.uniq)
|
||||
end
|
||||
|
||||
def managers
|
||||
auth_manager_authorized_users || []
|
||||
end
|
||||
|
||||
def user_can_manage?(user)
|
||||
managers.include?(user)
|
||||
end
|
||||
|
||||
def add_managers(users)
|
||||
users = Array(users)
|
||||
if auth_manager = self.auth_manager
|
||||
auth_manager.update_attribute(:authorized_users, (auth_manager.authorized_users + users).uniq)
|
||||
else
|
||||
self.create_auth_manager(authorized_users: users)
|
||||
end
|
||||
end
|
||||
|
||||
def remove_managers(users)
|
||||
users = Array(users)
|
||||
users = users.delete_if{|user| user == current_user || is_admin?}
|
||||
self.auth_manager.update_attribute(:authorized_users, auth_manager.authorized_users - users)
|
||||
end
|
||||
|
||||
def is_manager?(user)
|
||||
if user && !auth_manager_users.blank?
|
||||
auth_manager_users.include?(user.id)
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
def is_sub_manager?(user)
|
||||
if user && !auth_sub_manager_users.blank?
|
||||
auth_sub_manager_users.include?(user.id)
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
def can_approve?(user)
|
||||
if user && !auth_approval_users.blank?
|
||||
auth_approval_users.include?(user.id)
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -12,12 +12,16 @@ class Site
|
||||
field :private_key, :type => Binary
|
||||
field :public_key, :type => Binary
|
||||
|
||||
field :frontend_closed, :type => Boolean, :default => false
|
||||
field :frontend_open, :type => Boolean, :default => true
|
||||
field :backend_openness_on, :type => Boolean, :default => false
|
||||
field :desktop_closed, :type => Boolean, :default => false
|
||||
field :sitemap_menu_in_header, :type => Boolean, :default => false
|
||||
field :enable_terms_of_use, :type => Boolean, :default => false
|
||||
|
||||
field :title_always_on, :type => Boolean, :default => false
|
||||
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
||||
field :mail_settings, :type => Hash
|
||||
field :enabled_for, :type => Array, :default => nil
|
||||
|
||||
field :disk_space, :type => String
|
||||
field :system_package_info, :type => Hash,:default=>{}
|
||||
@@ -32,9 +36,12 @@ class Site
|
||||
field :title, localize: true
|
||||
field :footer, localize: true
|
||||
field :sub_menu, localize: true
|
||||
field :terms_of_use, localize: true
|
||||
field :google_analytics
|
||||
field :default_locale
|
||||
|
||||
field :mobile_on, :type => Boolean, :default => false
|
||||
|
||||
|
||||
belongs_to :design
|
||||
has_many :site_metas, :autosave => true, :dependent => :destroy
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
class PersonalPluginIntro
|
||||
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
# include OrbitCoreLib::ObjectAuthable
|
||||
# include OrbitCoreLib::ObjectDisable
|
||||
|
||||
# has_and_belongs_to_many :users
|
||||
belongs_to :user
|
||||
|
||||
field :text, localize: true
|
||||
field :brief_intro, :type => Boolean, :default => false
|
||||
field :complete_list, :type => Boolean, :default => true
|
||||
|
||||
|
||||
def pp_object
|
||||
brief_intro
|
||||
end
|
||||
|
||||
def self.from_id(id)
|
||||
PersonalPluginIntro.find(id) rescue nil
|
||||
end
|
||||
|
||||
def self.is_localized?(field_name)
|
||||
self.fields[field_name.to_s].localized?
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,13 +1,15 @@
|
||||
class User
|
||||
|
||||
include Mongoid::Document
|
||||
include Mongoid::Tree
|
||||
include Mongoid::Tree::Ordering # use mongoid-tree because mongoid-ordering needs mongoid(~>3.0)
|
||||
include Mongoid::Timestamps
|
||||
|
||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
|
||||
|
||||
mount_uploader :avatar, AvatarUploader
|
||||
|
||||
field :admin, :type => Boolean, :default => true
|
||||
field :admin, :type => Boolean, :default => false
|
||||
field :active_role
|
||||
field :user_id
|
||||
field :sid
|
||||
@@ -19,29 +21,38 @@ class User
|
||||
field :cache_dept,type: Hash
|
||||
field :status_record,type: Hash
|
||||
|
||||
has_and_belongs_to_many :approving_apps, class_name: 'AuthApproval', inverse_of: 'authorized_users'
|
||||
has_and_belongs_to_many :managing_apps, class_name: 'AuthManager', inverse_of: 'authorized_users'
|
||||
has_and_belongs_to_many :sub_managing_apps, class_name: 'AuthSubManager', inverse_of: 'authorized_users'
|
||||
|
||||
has_many :attribute_values, :autosave => true, :dependent => :destroy
|
||||
has_many :app_auths,as: :privilege_apps,:inverse_of => :privilege_lists
|
||||
has_many :blocked_apps, :inverse_of => :blocked_users, :class_name => "AppAuth", :dependent => :destroy
|
||||
has_many :privilege_apps, :inverse_of => :privilege_users, :class_name => "AppAuth", :dependent => :destroy
|
||||
|
||||
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 :facebook, :autosave => true, :dependent => :destroy
|
||||
has_many :other_accounts, :autosave => true, :dependent => :destroy
|
||||
has_many :assets, as: :assetable
|
||||
# has_many :journals, :autosave => true, :dependent => :destroy
|
||||
# has_many :papers, :autosave => true, :dependent => :destroy
|
||||
has_and_belongs_to_many :sub_role_tags
|
||||
|
||||
has_many :user_actions, :dependent => :destroy
|
||||
|
||||
has_many :personal_plugin_intro
|
||||
|
||||
# has_and_belongs_to_many :statuses
|
||||
has_and_belongs_to_many :roles
|
||||
has_and_belongs_to_many :sub_roles
|
||||
has_and_belongs_to_many :role_statuses
|
||||
has_and_belongs_to_many :role_categorys
|
||||
|
||||
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
|
||||
|
||||
before_create :initialize_desktop
|
||||
before_save :assign_default_position, :if => :assign_default_position?
|
||||
before_save :rebuild_status_record
|
||||
scope :remote_account, where(:nccu_id.ne => nil)
|
||||
scope :not_guest_user, all_of(:name.ne => "guest")
|
||||
@@ -89,9 +100,9 @@ class User
|
||||
var[:id].each do |id,val|
|
||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||
if (val=="true")
|
||||
self.roles = self.roles.reject{|t| t.id.to_s==id}
|
||||
self.role_ids.reject!{|t| t.to_s == id}
|
||||
elsif(val=="false")
|
||||
self.roles << Role.find(id)
|
||||
self.role_ids += Array(id)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -106,9 +117,9 @@ class User
|
||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||
|
||||
if ( self.roles.include?(@roid) == false or val=="true")
|
||||
self.sub_roles = self.sub_roles.reject{|t| t.id.to_s==id}
|
||||
self.sub_role_ids.reject!{|t| t.to_s == id}
|
||||
elsif(val=="false")
|
||||
self.sub_roles << SubRole.find(id)
|
||||
self.sub_role_ids += Array(id)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -273,13 +284,13 @@ class User
|
||||
end
|
||||
|
||||
def managed_module_apps
|
||||
self.managing_apps.inject([]) do |managed_apps, app_manager|
|
||||
managed_apps << app_manager.managing_app unless app_manager.managing_app.blank?
|
||||
self.managing_apps.inject([]) do |managed_apps, auth_manager|
|
||||
managed_apps << auth_manager.module_app
|
||||
managed_apps
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
private
|
||||
|
||||
def rebuild_status_record
|
||||
self.status_record = {}
|
||||
@@ -289,4 +300,9 @@ class User
|
||||
end
|
||||
end
|
||||
|
||||
# override mongoid-tree's method
|
||||
def assign_default_position?
|
||||
!self['name'].eql?('guest') && (self.position.nil? || self.parent_id_changed?)
|
||||
end
|
||||
|
||||
end
|
||||