Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b1702f358 | ||
|
|
4a68b1edb6 |
No files matched your search
@@ -38,7 +38,7 @@ gem 'resque-scheduler' # job scheduling
|
|||||||
gem 'resque-restriction'
|
gem 'resque-restriction'
|
||||||
#gem 'rb-readline'
|
#gem 'rb-readline'
|
||||||
# gem 'ruby-debug19'
|
# gem 'ruby-debug19'
|
||||||
gem 'rubyzip', '< 1.0.0'
|
gem 'rubyzip'
|
||||||
|
|
||||||
gem 'sunspot_mongo'
|
gem 'sunspot_mongo'
|
||||||
gem 'sunspot_solr'
|
gem 'sunspot_solr'
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 78 B |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
@@ -1,102 +0,0 @@
|
|||||||
!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,11 +38,7 @@ if($.support.touch) {
|
|||||||
$checked.each(function() {
|
$checked.each(function() {
|
||||||
if(!$(this).closest('div').hasClass('togglebox')) {
|
if(!$(this).closest('div').hasClass('togglebox')) {
|
||||||
$(this).wrap('<div class="toggle-control"/>');
|
$(this).wrap('<div class="toggle-control"/>');
|
||||||
if($(this).attr('type') == "hidden" && $(this).attr('value')) {
|
$(this).wrap('<div class="togglebox" />');
|
||||||
$(this).wrap('<div class="togglebox disabled" />');
|
|
||||||
} else {
|
|
||||||
$(this).wrap('<div class="togglebox" />');
|
|
||||||
}
|
|
||||||
$('<label><b></b></label>').insertAfter($(this));
|
$('<label><b></b></label>').insertAfter($(this));
|
||||||
if($(this).data().deploy) {
|
if($(this).data().deploy) {
|
||||||
switch($(this).data().deploy) {
|
switch($(this).data().deploy) {
|
||||||
@@ -256,8 +252,8 @@ if($.support.touch) {
|
|||||||
$arrow = $('.sub-nav-arrow'),
|
$arrow = $('.sub-nav-arrow'),
|
||||||
$wrap = $('#main-wrap'),
|
$wrap = $('#main-wrap'),
|
||||||
$wrapLeft = $wrap.css('margin-left'),
|
$wrapLeft = $wrap.css('margin-left'),
|
||||||
$position = $arrow.outerHeight(true)*-1,
|
$position = 0,
|
||||||
$arrowHeightFormat = $arrow.outerHeight(true)/2;
|
$arrowHeightFormat = $('.position').height()-8;
|
||||||
if($('#sidebar').length>0) {
|
if($('#sidebar').length>0) {
|
||||||
$wrap.css({'margin-left': 61});
|
$wrap.css({'margin-left': 61});
|
||||||
$wrapLeft = 61;
|
$wrapLeft = 61;
|
||||||
@@ -274,7 +270,7 @@ if($.support.touch) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Arrow defaults position
|
// Arrow defaults position
|
||||||
$position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
|
$position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
|
||||||
$arrow.css({
|
$arrow.css({
|
||||||
'top': $position,
|
'top': $position,
|
||||||
});
|
});
|
||||||
@@ -285,7 +281,7 @@ if($.support.touch) {
|
|||||||
$el.on(mouseenterEvent, function(e) {
|
$el.on(mouseenterEvent, function(e) {
|
||||||
$block.siblings().removeClass('show').eq($(this).index()).addClass('show');
|
$block.siblings().removeClass('show').eq($(this).index()).addClass('show');
|
||||||
$arrow.stop(true, false).animate({
|
$arrow.stop(true, false).animate({
|
||||||
top: ($(this).position().top+$(this).height()/2)-$arrowHeightFormat+$('.scroller').position().top,
|
top: ($(this).offset().top-$(this).height()/2)+$arrowHeightFormat-$(document).scrollTop(),
|
||||||
},{
|
},{
|
||||||
duration: 500,
|
duration: 500,
|
||||||
easing: 'easeInOutBack',
|
easing: 'easeInOutBack',
|
||||||
@@ -329,7 +325,7 @@ if($.support.touch) {
|
|||||||
})
|
})
|
||||||
};
|
};
|
||||||
// $el.on('mouseleave', function() {
|
// $el.on('mouseleave', function() {
|
||||||
// $el.hasClass('active') ? $position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
|
// $el.hasClass('active') ? $position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop() : 0;
|
||||||
// $(this).hasClass('active') ? '':$(this).children('span').removeClass('hover');
|
// $(this).hasClass('active') ? '':$(this).children('span').removeClass('hover');
|
||||||
// });
|
// });
|
||||||
$block.on({
|
$block.on({
|
||||||
@@ -376,9 +372,9 @@ if($.support.touch) {
|
|||||||
|
|
||||||
|
|
||||||
if($elIndex === null) {
|
if($elIndex === null) {
|
||||||
$position = $arrow.outerHeight(true)*-1;
|
$position = 0;
|
||||||
} else {
|
} else {
|
||||||
$position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
|
$position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
|
||||||
}
|
}
|
||||||
$arrow.stop(true, false).animate({
|
$arrow.stop(true, false).animate({
|
||||||
top: $position,
|
top: $position,
|
||||||
@@ -413,8 +409,8 @@ if($.support.touch) {
|
|||||||
});
|
});
|
||||||
// Sidebar Nav Drag
|
// Sidebar Nav Drag
|
||||||
if(/MSIE 8.0/g.test($ua)){
|
if(/MSIE 8.0/g.test($ua)){
|
||||||
$arrow.remove();
|
|
||||||
$sidebarMenu.addClass('nano')
|
$sidebarMenu.addClass('nano')
|
||||||
|
.css({'position': 'relative', 'top': '0px'})
|
||||||
.children('.scroller')
|
.children('.scroller')
|
||||||
.addClass('content')
|
.addClass('content')
|
||||||
.removeClass('scroller');
|
.removeClass('scroller');
|
||||||
@@ -476,15 +472,6 @@ if($.support.touch) {
|
|||||||
}(window.jQuery);
|
}(window.jQuery);
|
||||||
|
|
||||||
|
|
||||||
var ini = function() {
|
|
||||||
api = this
|
|
||||||
api.modal = function(e) {
|
|
||||||
$('#dialog a.delete-item').attr("href", e);
|
|
||||||
$('#dialog').modal('show');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
var ini = function() {
|
var ini = function() {
|
||||||
api = this
|
api = this
|
||||||
api.modal = function(e) {
|
api.modal = function(e) {
|
||||||
@@ -503,14 +490,15 @@ function openSlide() {
|
|||||||
$(window).resize(function() {
|
$(window).resize(function() {
|
||||||
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
|
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
|
||||||
})
|
})
|
||||||
if($('.item-groups').length) {
|
$openSlide.each(function() {
|
||||||
$os = $openSlide.not('.view-page');
|
if($(this).hasClass('view-page')) {
|
||||||
$vp = $openSlide.filter('.view-page.open-slide');
|
$(this).pageslide({ W: $pageslideW, iframe: true });
|
||||||
$os.pageslide({ W: 624 });
|
} else if($('.item-groups').length) {
|
||||||
$vp.pageslide({ W: $pageslideW, iframe: true });
|
$(this).pageslide({ W: 324 });
|
||||||
} else {
|
} else {
|
||||||
$openSlide.pageslide();
|
$(this).pageslide();
|
||||||
};
|
};
|
||||||
|
});
|
||||||
$('.bottomnav .open-slide').on('click', function() {
|
$('.bottomnav .open-slide').on('click', function() {
|
||||||
$('.table tr').removeClass('active');
|
$('.table tr').removeClass('active');
|
||||||
$('.filter-item').removeClass('active')
|
$('.filter-item').removeClass('active')
|
||||||
@@ -518,8 +506,8 @@ function openSlide() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function formTip() {
|
function formTip() {
|
||||||
if($('.main-forms').length && $('.add-on').length || $('.phtot-action').length) {
|
if($('.main-forms').length && $('.add-on').length) {
|
||||||
$('.main-forms .add-on, .main-forms .file-link, .phtot-action li').tooltip({
|
$('.main-forms .add-on, .main-forms .file-link').tooltip({
|
||||||
position: {
|
position: {
|
||||||
my: "center bottom-4",
|
my: "center bottom-4",
|
||||||
at: "center top"
|
at: "center top"
|
||||||
@@ -577,7 +565,7 @@ $(function() {
|
|||||||
if($('#sidebar').length) {
|
if($('#sidebar').length) {
|
||||||
if(!/MSIE 8.0/g.test(navigator.userAgent)){
|
if(!/MSIE 8.0/g.test(navigator.userAgent)){
|
||||||
document.getElementById('sidebar').addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
|
document.getElementById('sidebar').addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
if($('#pageslide').length) {
|
if($('#pageslide').length) {
|
||||||
openSlide();
|
openSlide();
|
||||||
|
|||||||
@@ -26,11 +26,10 @@ CKEDITOR.editorConfig = function( config ) {
|
|||||||
// config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
|
// config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
|
||||||
// config.filebrowserUploadUrl = '/uploader/upload.php';
|
// config.filebrowserUploadUrl = '/uploader/upload.php';
|
||||||
|
|
||||||
config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path %>?module_app_id=<%= ModuleApp.first(conditions: {title: 'Asset'}).id.to_s %>";
|
config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>"
|
||||||
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.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.
|
// Load from a list of definitions.
|
||||||
// config.stylesSet = [
|
// config.stylesSet = [
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
/*
|
|
||||||
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);
|
|
||||||
@@ -19,6 +19,3 @@
|
|||||||
//= require select2
|
//= require select2
|
||||||
//= require jquery.isotope.min.js
|
//= require jquery.isotope.min.js
|
||||||
//= require orbit_js_1.0.1-front-end
|
//= require orbit_js_1.0.1-front-end
|
||||||
//= require ckeditor/init
|
|
||||||
//= require ckeditor/jquery-ckeditor
|
|
||||||
|
|
||||||
@@ -20,7 +20,6 @@
|
|||||||
//for forms
|
//for forms
|
||||||
//form-type = "ajax_form" will turn form to ajax submit
|
//form-type = "ajax_form" will turn form to ajax submit
|
||||||
//notification = string will display after the form is succesfully submitted
|
//notification = string will display after the form is succesfully submitted
|
||||||
//response-type = "json"|"script"|"xml|html" default is json
|
|
||||||
|
|
||||||
//for layout tinyscrollbar
|
//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
|
//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
|
||||||
@@ -29,9 +28,6 @@
|
|||||||
//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
|
//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.
|
//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[':'], {
|
$.extend($.expr[':'], {
|
||||||
'containsi': function (elem, i, match, array) {
|
'containsi': function (elem, i, match, array) {
|
||||||
@@ -226,8 +222,7 @@ var orbitDesktop = function(dom){
|
|||||||
|
|
||||||
this.bindDesktopEvents = function(){ //this function will bind the global handlers to thd desktop, for example doc
|
this.bindDesktopEvents = function(){ //this function will bind the global handlers to thd desktop, for example doc
|
||||||
$(".docklist a").click(function(){
|
$(".docklist a").click(function(){
|
||||||
if( !$( this ).parent().hasClass( 'disable' ) )
|
o.menu_item($(this));
|
||||||
o.menu_item($(this));
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -252,12 +247,16 @@ var orbitDesktop = function(dom){
|
|||||||
|
|
||||||
$("body").on("submit","form[form-type=ajax_form]",function(){
|
$("body").on("submit","form[form-type=ajax_form]",function(){
|
||||||
var callback_method = $(this).attr("callback-method"),
|
var callback_method = $(this).attr("callback-method"),
|
||||||
dt = ($(this).attr("response-type") == null ? "json" : $(this).attr("response-type")),
|
dt = null,
|
||||||
notification = $(this).attr("notification");
|
notification = $(this).attr("notification");
|
||||||
|
dt = $(this).attr("response-type");
|
||||||
|
if(dt == null){
|
||||||
|
dt = "json";
|
||||||
|
}
|
||||||
var options = {
|
var options = {
|
||||||
dataType : dt,
|
dataType : dt,
|
||||||
resetForm : false,
|
resetForm : true,
|
||||||
success: function(responseText, statusText, xhr, $form){
|
success:function(responseText, statusText, xhr, $form){
|
||||||
if(typeof callback_method != "undefined"){
|
if(typeof callback_method != "undefined"){
|
||||||
if(callback_method != ""){
|
if(callback_method != ""){
|
||||||
window.o[o.data_method][callback_method](responseText,statusText,xhr,$form);
|
window.o[o.data_method][callback_method](responseText,statusText,xhr,$form);
|
||||||
@@ -266,7 +265,7 @@ var orbitDesktop = function(dom){
|
|||||||
if(typeof notification == "string")
|
if(typeof notification == "string")
|
||||||
o.notify(notification,"success");
|
o.notify(notification,"success");
|
||||||
},
|
},
|
||||||
error: function(){
|
error:function(){
|
||||||
o.notify("Please try again later!","imp");
|
o.notify("Please try again later!","imp");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -275,11 +274,10 @@ var orbitDesktop = function(dom){
|
|||||||
});
|
});
|
||||||
|
|
||||||
$("body").on("click","*[ajax-remote]",function(){
|
$("body").on("click","*[ajax-remote]",function(){
|
||||||
var $e = $(this),
|
var $e = $(this);
|
||||||
t = $e.attr("ajax-remote"),
|
var t = $e.attr("ajax-remote");
|
||||||
classes_to_toggle = $e.attr("toggle-onclick"),
|
var classes_to_toggle = $e.attr("toggle-onclick");
|
||||||
responsetype = $e.attr('response-type') ? $e.attr('response-type') : "html",
|
var exe = $e.attr("callback-method"); // (typeof $e.attr("callback-method") == "function"? $e.attr("callback-method") : "");
|
||||||
exe = $e.attr("callback-method"); // (typeof $e.attr("callback-method") == "function"? $e.attr("callback-method") : "");
|
|
||||||
if(classes_to_toggle){
|
if(classes_to_toggle){
|
||||||
$e.toggleClass(classes_to_toggle);
|
$e.toggleClass(classes_to_toggle);
|
||||||
}
|
}
|
||||||
@@ -291,9 +289,9 @@ var orbitDesktop = function(dom){
|
|||||||
}
|
}
|
||||||
var ca = $e.attr("content-holder");
|
var ca = $e.attr("content-holder");
|
||||||
var a = function(){
|
var a = function(){
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : t,
|
type : t,
|
||||||
dataType : responsetype,
|
|
||||||
url : $e.attr("href"),
|
url : $e.attr("href"),
|
||||||
success : function(data){
|
success : function(data){
|
||||||
if(typeof data == "string"){
|
if(typeof data == "string"){
|
||||||
@@ -304,7 +302,6 @@ var orbitDesktop = function(dom){
|
|||||||
// $("div[container=true]").html(data);
|
// $("div[container=true]").html(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(exe)
|
if(exe)
|
||||||
window.o[o.data_method][exe](data,$e);
|
window.o[o.data_method][exe](data,$e);
|
||||||
if(t == "delete"){
|
if(t == "delete"){
|
||||||
@@ -454,7 +451,7 @@ var orbitDesktop = function(dom){
|
|||||||
|
|
||||||
var ist = function(){
|
var ist = function(){
|
||||||
$('#holder').css('height', $('#container').height() - 72);
|
$('#holder').css('height', $('#container').height() - 72);
|
||||||
$('.tinycanvas').css('height', $('#holder').height() - 36);
|
$('.tinycanvas').css('height', $('#panel_r').height() - 36);
|
||||||
var dom = $("*[isotope=true]").isotope({
|
var dom = $("*[isotope=true]").isotope({
|
||||||
layoutMode: 'fitColumns',
|
layoutMode: 'fitColumns',
|
||||||
onLayout: function($elems, instance){
|
onLayout: function($elems, instance){
|
||||||
@@ -701,15 +698,6 @@ var orbitDesktop = function(dom){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
o.highlight_sub_menu_item(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)
|
if(dom.length == 0)
|
||||||
o.layout_data(data);
|
o.layout_data(data);
|
||||||
@@ -1880,42 +1868,6 @@ 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(){
|
this.minimizeBarManager = function(){
|
||||||
var minimizedApps = [],
|
var minimizedApps = [],
|
||||||
minimizeBar = $("#minimizebar");
|
minimizeBar = $("#minimizebar");
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ $(function(){
|
|||||||
placeholder: 'placeholder',
|
placeholder: 'placeholder',
|
||||||
startCollapsed: true,
|
startCollapsed: true,
|
||||||
disableNesting: 'no-nest',
|
disableNesting: 'no-nest',
|
||||||
update: function(event, ui) {
|
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() } );
|
$.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() } );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -7,29 +7,32 @@ function append_id(){
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('change', 'select', function(e) {
|
$("div.editable").live("mouseenter mouseleave", function (event) {
|
||||||
if(!e.target.className == 'widget_field_select') {
|
$(this).children('.edit_link').toggle();
|
||||||
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() );
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('click', '.part_kind', function(event) {
|
$("#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() {
|
||||||
$('.part_kind_partial').hide();
|
$('.part_kind_partial').hide();
|
||||||
$('#part_' + $(this).attr('value')).show();
|
$('#part_' + $(this).attr('value')).show();
|
||||||
});
|
});
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
/* ===================================================
|
|
||||||
* 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,14 +12,13 @@
|
|||||||
!(function($){
|
!(function($){
|
||||||
// Convenience vars for accessing elements
|
// Convenience vars for accessing elements
|
||||||
var $body = $('#main-wrap'),
|
var $body = $('#main-wrap'),
|
||||||
$bottomNav = $('.bottomnav'),
|
|
||||||
$pageslide = $('#pageslide'),
|
$pageslide = $('#pageslide'),
|
||||||
$viewPage = $('#view-page');
|
$viewPage = $('#view-page');
|
||||||
|
|
||||||
var _sliding = false, // Mutex to assist closing only once
|
var _sliding = false, // Mutex to assist closing only once
|
||||||
_lastCaller; // Used to keep track of last element to trigger pageslide
|
_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 ) {
|
if( $pageslide.length == 0 ) {
|
||||||
$pageslide = $('<div />').attr( 'id', 'pageslide' )
|
$pageslide = $('<div />').attr( 'id', 'pageslide' )
|
||||||
.css( 'display', 'none' )
|
.css( 'display', 'none' )
|
||||||
@@ -29,12 +28,11 @@
|
|||||||
/*
|
/*
|
||||||
* Private methods
|
* Private methods
|
||||||
*/
|
*/
|
||||||
function _load( url, useIframe, callback,element ) {
|
function _load( url, useIframe ) {
|
||||||
// Are we loading an element from the page or a URL?
|
// Are we loading an element from the page or a URL?
|
||||||
if ( url.indexOf("#") === 0 ) {
|
if ( url.indexOf("#") === 0 ) {
|
||||||
// Load a page element
|
// Load a page element
|
||||||
$(url).clone(true).appendTo( $pageslide.empty() ).show();
|
$(url).clone(true).appendTo( $pageslide.empty() ).show();
|
||||||
if(callback)callback.call(this,$pageslide,element);
|
|
||||||
} else {
|
} else {
|
||||||
// Load a URL. Into an iframe?
|
// Load a URL. Into an iframe?
|
||||||
if( useIframe ) {
|
if( useIframe ) {
|
||||||
@@ -51,11 +49,9 @@
|
|||||||
$viewPage.find('.content').html( iframe );
|
$viewPage.find('.content').html( iframe );
|
||||||
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
|
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
|
||||||
$viewPage.find('.content').empty();
|
$viewPage.find('.content').empty();
|
||||||
if(callback)callback.call(this,$viewPage,element);
|
|
||||||
} else {
|
} else {
|
||||||
$viewPage.find('.content').load(url, function(){
|
$viewPage.find('.content').load(url, function(){
|
||||||
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
|
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
|
||||||
if(callback)callback.call(this,$viewPage,element);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,11 +64,10 @@
|
|||||||
function _start( direction, speed ) {
|
function _start( direction, speed ) {
|
||||||
var slideWidth = $pageslide.outerWidth( true ),
|
var slideWidth = $pageslide.outerWidth( true ),
|
||||||
bodyAnimateIn = {},
|
bodyAnimateIn = {},
|
||||||
bottomnavAnimateIn = {},
|
|
||||||
slideAnimateIn = {};
|
slideAnimateIn = {};
|
||||||
|
|
||||||
// If the slide is open or opening, just ignore the call
|
// 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;
|
_sliding = true;
|
||||||
|
|
||||||
switch( direction ) {
|
switch( direction ) {
|
||||||
@@ -88,7 +83,6 @@
|
|||||||
$pageslide.css({ left: '-' + (slideWidth-61) + 'px', right: 'auto' });
|
$pageslide.css({ left: '-' + (slideWidth-61) + 'px', right: 'auto' });
|
||||||
};
|
};
|
||||||
bodyAnimateIn['margin-left'] = '+=' + slideWidth;
|
bodyAnimateIn['margin-left'] = '+=' + slideWidth;
|
||||||
bottomnavAnimateIn['left'] = '+=' + slideWidth;
|
|
||||||
if($(window).width() <= 1440 && slideWidth > 963 ) {
|
if($(window).width() <= 1440 && slideWidth > 963 ) {
|
||||||
bodyAnimateIn['width'] = $body.width();
|
bodyAnimateIn['width'] = $body.width();
|
||||||
}
|
}
|
||||||
@@ -98,7 +92,6 @@
|
|||||||
|
|
||||||
// Animate the slide, and attach this slide's settings to the element
|
// Animate the slide, and attach this slide's settings to the element
|
||||||
$body.animate(bodyAnimateIn, speed);
|
$body.animate(bodyAnimateIn, speed);
|
||||||
$bottomNav.animate(bottomnavAnimateIn, speed);
|
|
||||||
$pageslide.show().animate(slideAnimateIn, speed, function() {
|
$pageslide.show().animate(slideAnimateIn, speed, function() {
|
||||||
_sliding = false;
|
_sliding = false;
|
||||||
$pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
$pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
||||||
@@ -115,7 +108,7 @@
|
|||||||
$.fn.pageslide = function(options) {
|
$.fn.pageslide = function(options) {
|
||||||
var $elements = this;
|
var $elements = this;
|
||||||
// On click
|
// On click
|
||||||
$elements.bind(clickEvent, function(e) {
|
$elements.on(clickEvent, function(e) {
|
||||||
var $self = $(this),
|
var $self = $(this),
|
||||||
settings = $.extend({ href: $self.attr('href') }, options);
|
settings = $.extend({ href: $self.attr('href') }, options);
|
||||||
|
|
||||||
@@ -128,7 +121,7 @@
|
|||||||
$.pageslide.close();
|
$.pageslide.close();
|
||||||
} else {
|
} else {
|
||||||
// Open
|
// Open
|
||||||
$.pageslide( settings,$self );
|
$.pageslide( settings );
|
||||||
|
|
||||||
if($('.item-groups').length) {
|
if($('.item-groups').length) {
|
||||||
$('.item-menu > a, .navbar-inner').removeClass("active");
|
$('.item-menu > a, .navbar-inner').removeClass("active");
|
||||||
@@ -147,16 +140,7 @@
|
|||||||
$pageName = $self.parents('.item-title').children('a').text();
|
$pageName = $self.parents('.item-title').children('a').text();
|
||||||
$('.page-name').text($pageName);
|
$('.page-name').text($pageName);
|
||||||
} else if($('.tags-groups').length) {
|
} else if($('.tags-groups').length) {
|
||||||
if($('.gallery').length) {
|
$(this).parents('li').addClass("active").siblings().removeClass("active").parent('ul').siblings().children('li').removeClass("active");
|
||||||
$(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 {
|
} else {
|
||||||
$(this).parents("tr").addClass("active").siblings().removeClass("active");;
|
$(this).parents("tr").addClass("active").siblings().removeClass("active");;
|
||||||
}
|
}
|
||||||
@@ -167,9 +151,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default settings
|
* Default settings
|
||||||
*/
|
*/
|
||||||
$.fn.pageslide.defaults = {
|
$.fn.pageslide.defaults = {
|
||||||
@@ -180,18 +164,18 @@
|
|||||||
href: null, // Override the source of the content. Optional in most cases, but required when opening pageslide programmatically.
|
href: null, // Override the source of the content. Optional in most cases, but required when opening pageslide programmatically.
|
||||||
W: 264,
|
W: 264,
|
||||||
closeFn : null,
|
closeFn : null,
|
||||||
openFn : null,
|
openFn : null
|
||||||
loadComplete : null
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Public methods
|
* Public methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Open the pageslide
|
// Open the pageslide
|
||||||
$.pageslide = function( options,element ) {
|
$.pageslide = function( options ) {
|
||||||
// Extend the settings with those the user has provided
|
// Extend the settings with those the user has provided
|
||||||
var settings = $.extend({}, $.fn.pageslide.defaults, options);
|
var settings = $.extend({}, $.fn.pageslide.defaults, options);
|
||||||
|
|
||||||
var convertToFunction = function(fn){
|
var convertToFunction = function(fn){
|
||||||
var x = new Function();
|
var x = new Function();
|
||||||
x = fn;
|
x = fn;
|
||||||
@@ -206,19 +190,16 @@
|
|||||||
if(settings.closeFn) {
|
if(settings.closeFn) {
|
||||||
$.fn.pageslide.defaults.closeFn = convertToFunction(settings.closeFn);
|
$.fn.pageslide.defaults.closeFn = convertToFunction(settings.closeFn);
|
||||||
}
|
}
|
||||||
if(settings.loadComplete) {
|
|
||||||
$.fn.pageslide.defaults.loadComplete = convertToFunction(settings.loadComplete);
|
// Are we trying to open in different direction?
|
||||||
}
|
|
||||||
|
|
||||||
// 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) ) {
|
if( ($pageslide.is(':visible') && $pageslide.data( 'W' ) != settings.W) || ($pageslide.is(':visible') && $pageslide.data( 'direction' ) != settings.direction) ) {
|
||||||
$.pageslide.close(function(){
|
$.pageslide.close(function(){
|
||||||
$pageslide.css({'width': settings.W});
|
$pageslide.css({'width': settings.W});
|
||||||
_load( settings.href, settings.iframe, settings.loadComplete, element );
|
_load( settings.href, settings.iframe );
|
||||||
_start( settings.direction, settings.speed );
|
_start( settings.direction, settings.speed );
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
_load( settings.href, settings.iframe, settings.loadComplete,element );
|
_load( settings.href, settings.iframe );
|
||||||
if( $pageslide.is(':hidden') ) {
|
if( $pageslide.is(':hidden') ) {
|
||||||
$pageslide.css({'width': settings.W});
|
$pageslide.css({'width': settings.W});
|
||||||
_start( settings.direction, settings.speed );
|
_start( settings.direction, settings.speed );
|
||||||
@@ -237,19 +218,18 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Close the pageslide
|
// Close the pageslide
|
||||||
$.pageslide.close = function( callback ) {
|
$.pageslide.close = function( callback ) {
|
||||||
var $pageslide = $('#pageslide'),
|
var $pageslide = $('#pageslide'),
|
||||||
slideWidth = $pageslide.outerWidth( true ),
|
slideWidth = $pageslide.outerWidth( true ),
|
||||||
speed = $pageslide.data( 'speed' ),
|
speed = $pageslide.data( 'speed' ),
|
||||||
bodyAnimateIn = {},
|
bodyAnimateIn = {},
|
||||||
bottomnavAnimateIn = {};
|
|
||||||
slideAnimateIn = {}
|
slideAnimateIn = {}
|
||||||
|
|
||||||
// If the slide isn't open, just ignore the call
|
// If the slide isn't open, just ignore the call
|
||||||
if( $pageslide.is(':hidden') || _sliding ) return;
|
if( $pageslide.is(':hidden') || _sliding ) return;
|
||||||
_sliding = true;
|
_sliding = true;
|
||||||
|
|
||||||
switch( $pageslide.data( 'direction' ) ) {
|
switch( $pageslide.data( 'direction' ) ) {
|
||||||
@@ -259,10 +239,9 @@
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
bodyAnimateIn['margin-left'] = '-=' + slideWidth;
|
bodyAnimateIn['margin-left'] = '-=' + slideWidth;
|
||||||
bottomnavAnimateIn['left'] = '-=' + slideWidth;
|
|
||||||
slideAnimateIn['left'] = '-=' + slideWidth;
|
slideAnimateIn['left'] = '-=' + slideWidth;
|
||||||
if($pageslide.find('.preview').length) {
|
if($pageslide.find('.preview').length) {
|
||||||
$pageslide.find('.preview').cycle('destroy');
|
// $pageslide.find('.preview').cycle('destroy');
|
||||||
$pageslide.find('.preview img').removeAttr('style');
|
$pageslide.find('.preview img').removeAttr('style');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -278,13 +257,11 @@
|
|||||||
}
|
}
|
||||||
} else if($('.tags-groups').length) {
|
} else if($('.tags-groups').length) {
|
||||||
$('.tags-groups').children('li').removeClass("active");
|
$('.tags-groups').children('li').removeClass("active");
|
||||||
$('.rgalbum').removeClass("active-single");
|
|
||||||
} else {
|
} else {
|
||||||
$("tr").removeClass("active");
|
$("tr").removeClass("active");
|
||||||
};
|
};
|
||||||
|
|
||||||
$pageslide.animate(slideAnimateIn, speed);
|
$pageslide.animate(slideAnimateIn, speed);
|
||||||
$bottomNav.animate(bottomnavAnimateIn, speed);
|
|
||||||
$body.animate(bodyAnimateIn, speed, function() {
|
$body.animate(bodyAnimateIn, speed, function() {
|
||||||
$pageslide.hide();
|
$pageslide.hide();
|
||||||
_sliding = false;
|
_sliding = false;
|
||||||
@@ -310,33 +287,26 @@
|
|||||||
$.fn.pageslide.defaults.openFn = callback;
|
$.fn.pageslide.defaults.openFn = callback;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
//data load complete callback
|
/* Events */
|
||||||
$.pageslide.loadComplete = function(callback) {
|
|
||||||
if(typeof callback === "function"){
|
// Don't let clicks to the pageslide close the window
|
||||||
$.fn.pageslide.defaults.loadComplete = callback;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Events */
|
|
||||||
|
|
||||||
// Don't let clicks to the pageslide close the window
|
|
||||||
$pageslide.click(function(e) {
|
$pageslide.click(function(e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
|
// 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) {
|
$(document).bind('click keyup', function(e) {
|
||||||
// If this is a keyup event, let's see if it's an ESC key
|
// If this is a keyup event, let's see if it's an ESC key
|
||||||
if( e.type == "keyup" && e.keyCode != 27) return;
|
if( e.type == "keyup" && e.keyCode != 27) return;
|
||||||
|
|
||||||
// Make sure it's visible, and we're not modal
|
// Make sure it's visible, and we're not modal
|
||||||
if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {
|
if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {
|
||||||
$.pageslide.close();
|
$.pageslide.close();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
function setScroll(){
|
function setScroll(){
|
||||||
$pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true }); // set nano scroll
|
$pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true }); // set nano scroll
|
||||||
};
|
};
|
||||||
|
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
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,3 +1,37 @@
|
|||||||
|
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() {
|
$(function() {
|
||||||
$('.member-avatar').rsImg();
|
$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();
|
||||||
|
});
|
||||||
})
|
})
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
var H,P = [];
|
|
||||||
// Go to
|
// Go to
|
||||||
!function ($) {
|
!function ($) {
|
||||||
$.fn.goTo = function (){
|
$.fn.goTo = function (){
|
||||||
@@ -14,45 +13,43 @@ var H,P = [];
|
|||||||
}
|
}
|
||||||
}(window.jQuery);
|
}(window.jQuery);
|
||||||
function checkHeight() {
|
function checkHeight() {
|
||||||
// if($('#member-module').height() > $(window).height()) {
|
if($('#member-module').height() > $(window).height()) {
|
||||||
// H = $(window).height()-
|
H = $(window).height()-
|
||||||
// parseInt($('.wrap-inner').css('padding-top'))+
|
parseInt($('.wrap-inner').css('padding-top'))+
|
||||||
// parseInt($('.wrap-inner').css('padding-bottom'))-
|
parseInt($('.wrap-inner').css('padding-bottom'))-
|
||||||
// $('#orbit-bar').outerHeight(true);
|
$('#orbit-bar').outerHeight(true);
|
||||||
// }else{
|
}else{
|
||||||
// H = $(window).height()-
|
H = $(window).height()-
|
||||||
// parseInt($('.wrap-inner').css('padding-top'))+
|
parseInt($('.wrap-inner').css('padding-top'))+
|
||||||
// parseInt($('.wrap-inner').css('padding-bottom'))-
|
parseInt($('.wrap-inner').css('padding-bottom'))-
|
||||||
// $('#filter').outerHeight()+
|
$('#filter').outerHeight()+
|
||||||
// parseInt($('#filter').css('margin-bottom'))-
|
parseInt($('#filter').css('margin-bottom'))-
|
||||||
// $('#orbit-bar').outerHeight(true);
|
$('#orbit-bar').outerHeight(true);
|
||||||
// };
|
};
|
||||||
H = $(window).height()-
|
|
||||||
parseInt($('.wrap-inner').css('padding-top'))-
|
|
||||||
$('#orbit-bar').outerHeight(true);
|
|
||||||
$('#basic-info').height(H);
|
$('#basic-info').height(H);
|
||||||
$('#member-roles').height(H-$('.member-avatar').outerHeight(true)-parseInt($('#member-roles').css('margin-top'))+20);
|
$('#member-roles').height(H-$('.member-avatar').outerHeight(true)-parseInt($('#member-roles').css('margin-top')))
|
||||||
$('#module-content').height(H-$('#module-navbar .navbar').outerHeight(true)-$('.bottomnav').innerHeight());
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
|
var H;
|
||||||
checkHeight();
|
checkHeight();
|
||||||
$('.wrap-inner').css('padding-bottom', 0);
|
$(window).resize(function() {
|
||||||
$(window).resize(checkHeight);
|
checkHeight();
|
||||||
|
// setModuleBlockWidth();
|
||||||
|
});
|
||||||
$('#member-roles h4 > span').each(function() {
|
$('#member-roles h4 > span').each(function() {
|
||||||
$(this).css('margin-left',function() {
|
$(this).css('margin-left',function() {
|
||||||
return $(this).innerWidth()/2*-1;
|
return $(this).innerWidth()/2*-1;
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
// $('#basic-info').scrollToFixed({
|
$('#basic-info').scrollToFixed({
|
||||||
// marginTop: $('#orbit-bar').outerHeight(true)+20,
|
marginTop: $('#orbit-bar').outerHeight(true)+20,
|
||||||
// });
|
});
|
||||||
// $('#module-navbar').scrollToFixed({
|
$('#module-navbar').scrollToFixed({
|
||||||
// marginTop: $('#orbit-bar').outerHeight(true),
|
marginTop: $('#orbit-bar').outerHeight(true),
|
||||||
// });
|
});
|
||||||
// $('.member-avatar').imagesLoaded(function() {
|
// $('.member-avatar').imagesLoaded(function() {
|
||||||
// $('#basic-info .member-avatar img').muImageResize({width: 100, height:100});
|
// $('#basic-info .member-avatar img').muImageResize({width: 100, height:100});
|
||||||
// });
|
// });
|
||||||
$('.member-avatar').rsImg();
|
$('#member-roles').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
||||||
$('#member-roles, #module-content .nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
})
|
||||||
});
|
|
||||||
@@ -191,17 +191,12 @@ function returnAddressForm(element, decide) {
|
|||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
appendIndex = null;
|
appendIndex = null;
|
||||||
if($('#user-forms').length) {
|
if($('#new-user-forms').length) {
|
||||||
addressVal = [];
|
addressVal = [];
|
||||||
addressArray = [];
|
addressArray = [];
|
||||||
addressInputId = [];
|
addressInputId = [];
|
||||||
roleType = null;
|
roleType = null;
|
||||||
returnDecide = false;
|
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').on(clickEvent, function() {
|
||||||
returnDecide = true;
|
returnDecide = true;
|
||||||
})
|
})
|
||||||
@@ -220,21 +215,21 @@ $(function() {
|
|||||||
});
|
});
|
||||||
$('#address-field').on('show', getAddressForm($trigger, $('#address-field'), true));
|
$('#address-field').on('show', getAddressForm($trigger, $('#address-field'), true));
|
||||||
});
|
});
|
||||||
$('#user-forms').delegate('.togglebox, .delete, .trigger, .remove-input', clickEvent, function(event) {
|
$('#new-user-forms').delegate('.togglebox, .delete, .trigger, .remove-input', clickEvent, function(event) {
|
||||||
if($(this).hasClass('togglebox')) {
|
if($(this).hasClass('togglebox')) {
|
||||||
if($(this).hasClass('disabled')) {
|
if($(this).hasClass('disabled')) {
|
||||||
$(this).find('.toggle-check')
|
$(this).find('.toggle-check')
|
||||||
.attr('value', 'false')
|
.attr('value', 'false')
|
||||||
.closest('.attributes')
|
.closest('.attributes')
|
||||||
.removeClass('disabled')
|
.removeClass('disabled')
|
||||||
.children('.attributes-body')
|
.find('.attributes-body')
|
||||||
.fadeIn(300);
|
.fadeIn(300);
|
||||||
} else {
|
} else {
|
||||||
$(this).find('.toggle-check')
|
$(this).find('.toggle-check')
|
||||||
.attr('value', 'true')
|
.attr('value', 'true')
|
||||||
.closest('.attributes')
|
.closest('.attributes')
|
||||||
.addClass('disabled')
|
.addClass('disabled')
|
||||||
.children('.attributes-body')
|
.find('.attributes-body')
|
||||||
.fadeOut(300);
|
.fadeOut(300);
|
||||||
}
|
}
|
||||||
$(this).toggleClass('disabled');
|
$(this).toggleClass('disabled');
|
||||||
@@ -427,13 +422,12 @@ $(function() {
|
|||||||
if($(this).hasClass('trigger')) {
|
if($(this).hasClass('trigger')) {
|
||||||
// appendIndex = $(this).closest('.controls').find('.input-append').length;
|
// appendIndex = $(this).closest('.controls').find('.input-append').length;
|
||||||
appendIndex = $(this).closest('.controls').find('.input-append:last-child').children('input:first-child').attr('name');
|
appendIndex = $(this).closest('.controls').find('.input-append:last-child').children('input:first-child').attr('name');
|
||||||
// appendIndex = appendIndex.split("][");
|
appendIndex = appendIndex.split("][");
|
||||||
// appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
|
appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
|
||||||
appendIndex = parseInt(appendIndex.match(/[^[\D\]]+(?=])/g)[1])+1;
|
|
||||||
console.log(appendIndex)
|
|
||||||
attributeIndex = $(this).closest('.attributes').index();
|
attributeIndex = $(this).closest('.attributes').index();
|
||||||
templateType = $(this).closest('.attributes').find('.dataType').children("option:selected").attr('ref');
|
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'));
|
$("#template-input-append").tmpl(setData(attributeIndex, templateType, appendIndex)).appendTo($(this).closest('.controls').find('.add-target'));
|
||||||
|
|
||||||
inputAppendLength();
|
inputAppendLength();
|
||||||
};
|
};
|
||||||
if($(this).hasClass('remove-input')) {
|
if($(this).hasClass('remove-input')) {
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
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 textareaResizable() {
|
$(function() {
|
||||||
var $btnW = null,
|
var $btnW = null,
|
||||||
$textareaLangBtnGroup = $('.textarea-lang > .btn-group'),
|
$textareaLangBtnGroup = $('.textarea-lang > .btn-group'),
|
||||||
$textareaLang = $('.textarea-lang'),
|
$textareaLang = $('.textarea-lang'),
|
||||||
@@ -8,12 +8,12 @@ function textareaResizable() {
|
|||||||
$btnW = 4
|
$btnW = 4
|
||||||
$(this).find('.btn').each(function() {
|
$(this).find('.btn').each(function() {
|
||||||
$btnW += $(this).outerWidth(true);
|
$btnW += $(this).outerWidth(true);
|
||||||
$(this).on(clickEvent, function() {
|
$(this).on('click', function() {
|
||||||
var $id = $($(this).attr('href'));
|
var $id = $($(this).attr('href'));
|
||||||
if($id.find('.ui-wrapper').height() < 96) {
|
if($id.find('.ui-wrapper').height() < 96) {
|
||||||
$id.find('.ui-wrapper').height(96)
|
$id.find('.ui-wrapper').height(96)
|
||||||
};
|
}
|
||||||
});
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$textarea.each(function() {
|
$textarea.each(function() {
|
||||||
@@ -26,7 +26,4 @@ function textareaResizable() {
|
|||||||
minWidth: $btnW+114,
|
minWidth: $btnW+114,
|
||||||
handles: "se",
|
handles: "se",
|
||||||
});
|
});
|
||||||
};
|
|
||||||
$(function() {
|
|
||||||
textareaResizable();
|
|
||||||
});
|
});
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
$(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 basic
|
||||||
//= require jquery.ui.sortable
|
//= require lib/jquery-ui-1.10.2.custom.min.js
|
||||||
//= require lib/jquery.ui.touch-punch.min.js
|
//= require lib/jquery.ui.touch-punch.min.js
|
||||||
//= require lib/jquery.mjs.nestedSortable.js
|
//= require lib/jquery.mjs.nestedSortable.js
|
||||||
//= require lib/items/items
|
//= require lib/items/items
|
||||||
|
|||||||
@@ -83,7 +83,6 @@ legend {
|
|||||||
min-width: 61px;
|
min-width: 61px;
|
||||||
z-index: 1030;
|
z-index: 1030;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding-top: 40px;
|
|
||||||
background-color: #171717;
|
background-color: #171717;
|
||||||
-webkit-box-shadow: inset -1px 0px 10px #000000;
|
-webkit-box-shadow: inset -1px 0px 10px #000000;
|
||||||
-moz-box-shadow: inset -1px 0px 10px #000000;
|
-moz-box-shadow: inset -1px 0px 10px #000000;
|
||||||
@@ -92,14 +91,12 @@ legend {
|
|||||||
}
|
}
|
||||||
#sidebar #sidebar-menu {
|
#sidebar #sidebar-menu {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 85px;
|
top: 88px;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
z-index: 0;
|
z-index: 1;
|
||||||
display: block;
|
display: block;
|
||||||
width: 61px;
|
width: 61px;
|
||||||
}
|
/*overflow: auto;*/
|
||||||
#sidebar #sidebar-menu.nano {
|
|
||||||
top: 0;
|
|
||||||
}
|
}
|
||||||
#sidebar .scroller {
|
#sidebar .scroller {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -123,12 +120,16 @@ legend {
|
|||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
#sidebar > h2.position {
|
#sidebar > h2.position {
|
||||||
|
top: 40px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
width: 61px;
|
width: 61px;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
|
font-size: 2.4em;
|
||||||
|
line-height: 47px;
|
||||||
|
line-height: 46px\9;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
position: absolute;
|
||||||
background-color: #08c;
|
background-color: #08c;
|
||||||
background-image: -moz-linear-gradient(top, #08c, #006091);
|
background-image: -moz-linear-gradient(top, #08c, #006091);
|
||||||
background-image: -ms-linear-gradient(top, #08c, #006091);
|
background-image: -ms-linear-gradient(top, #08c, #006091);
|
||||||
@@ -157,20 +158,24 @@ legend {
|
|||||||
}
|
}
|
||||||
#sidebar > h2.position a {
|
#sidebar > h2.position a {
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
|
padding: 6px 6px 5px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
display: inline-block;
|
|
||||||
-webkit-text-shadow: 0px -1px 0px #333333;
|
-webkit-text-shadow: 0px -1px 0px #333333;
|
||||||
-moz-text-shadow: 0px -1px 0px #333333;
|
-moz-text-shadow: 0px -1px 0px #333333;
|
||||||
-o-text-shadow: 0px -1px 0px #333333;
|
-o-text-shadow: 0px -1px 0px #333333;
|
||||||
text-shadow: 0px -1px 0px #333333;
|
text-shadow: 0px -1px 0px #333333;
|
||||||
}
|
}
|
||||||
#sidebar > h2.position a i {
|
|
||||||
line-height: 45px;
|
|
||||||
}
|
|
||||||
#sidebar .sidebar-nav > li {
|
#sidebar .sidebar-nav > li {
|
||||||
min-width: 61px;
|
min-width: 61px;
|
||||||
|
height: 45px;
|
||||||
}
|
}
|
||||||
#sidebar .sidebar-nav > li.active span {
|
#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 {
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
-webkit-text-shadow: 0px -1px 0px #636363;
|
-webkit-text-shadow: 0px -1px 0px #636363;
|
||||||
@@ -178,7 +183,8 @@ legend {
|
|||||||
-o-text-shadow: 0px -1px 0px #636363;
|
-o-text-shadow: 0px -1px 0px #636363;
|
||||||
text-shadow: 0px -1px 0px #636363;
|
text-shadow: 0px -1px 0px #636363;
|
||||||
}
|
}
|
||||||
#sidebar .sidebar-nav > li span {
|
#sidebar .sidebar-nav > li > a > span {
|
||||||
|
padding: 10px;
|
||||||
color: #B0B0B0;
|
color: #B0B0B0;
|
||||||
display: block;
|
display: block;
|
||||||
-webkit-text-shadow: 0px 1px 0px #000000;
|
-webkit-text-shadow: 0px 1px 0px #000000;
|
||||||
@@ -186,15 +192,8 @@ legend {
|
|||||||
-o-text-shadow: 0px 1px 0px #000000;
|
-o-text-shadow: 0px 1px 0px #000000;
|
||||||
text-shadow: 0px 1px 0px #000000;
|
text-shadow: 0px 1px 0px #000000;
|
||||||
}
|
}
|
||||||
#sidebar .sidebar-nav > li a {
|
#sidebar .sidebar-nav > li > a > span > i {
|
||||||
display: block;
|
font-size: 1.7em;
|
||||||
}
|
|
||||||
#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 {
|
#sidebar .sub-nav-block-list {
|
||||||
top: 40px;
|
top: 40px;
|
||||||
@@ -275,7 +274,7 @@ legend {
|
|||||||
}
|
}
|
||||||
#sidebar .sub-nav-arrow {
|
#sidebar .sub-nav-arrow {
|
||||||
left: 53px;
|
left: 53px;
|
||||||
top: -16px;
|
top: -10px;
|
||||||
width: 0px;
|
width: 0px;
|
||||||
height: 0px;
|
height: 0px;
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
@@ -283,6 +282,7 @@ legend {
|
|||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-width: 8px 8px 8px 0;
|
border-width: 8px 8px 8px 0;
|
||||||
border-color: transparent #0088CC transparent transparent;
|
border-color: transparent #0088CC transparent transparent;
|
||||||
|
display: none\9; /* 用IE的去死 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -300,15 +300,14 @@ legend {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-radius: 50%/1px;
|
border-radius: 1px;
|
||||||
background-color: rgba(0, 136, 204, .6);
|
background-color: rgba(0, 136, 204, .3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Main Wrap */
|
/* Main Wrap */
|
||||||
#main-wrap {
|
#main-wrap {
|
||||||
padding-top: 40px;
|
padding-top: 40px;
|
||||||
position: relative;
|
|
||||||
}
|
}
|
||||||
#main-wrap .wrap-inner {
|
#main-wrap .wrap-inner {
|
||||||
padding: 60px 20px 20px;
|
padding: 60px 20px 20px;
|
||||||
@@ -420,7 +419,6 @@ legend {
|
|||||||
/* Search Clear */
|
/* Search Clear */
|
||||||
.searchClear {
|
.searchClear {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
|
||||||
}
|
}
|
||||||
.searchClear .icon-search {
|
.searchClear .icon-search {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -522,9 +520,10 @@ legend {
|
|||||||
padding: 0px 5px;
|
padding: 0px 5px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
max-width: 300px;
|
max-width: 500px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
background-color: #0088CC;
|
background-color: #0088CC;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
#sideset .ui-tooltip.sidebar-tooltip:after {
|
#sideset .ui-tooltip.sidebar-tooltip:after {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -534,9 +533,10 @@ legend {
|
|||||||
padding: 0px 5px;
|
padding: 0px 5px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
max-width: 300px;
|
max-width: 500px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
background-color: #000000;
|
background-color: #000000;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.ui-tooltip:after {
|
.ui-tooltip:after {
|
||||||
content: '';
|
content: '';
|
||||||
@@ -551,135 +551,6 @@ legend {
|
|||||||
border-color: #000000 transparent transparent transparent;
|
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 */
|
/* IE go die */
|
||||||
:root #sidebar .sub-nav-block:before {
|
:root #sidebar .sub-nav-block:before {
|
||||||
display: block\9;
|
display: block\9;
|
||||||
|
|||||||
@@ -19,18 +19,6 @@
|
|||||||
margin-left: 0;
|
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
|
// fixed width column with 12px gutter
|
||||||
// 276px width for 8 columns
|
// 276px width for 8 columns
|
||||||
// 420px width for 12 columns
|
// 420px width for 12 columns
|
||||||
|
|||||||
@@ -323,29 +323,6 @@ a.admtxt.admbg2:hover {
|
|||||||
float: left; }
|
float: left; }
|
||||||
.docklist .d_cate:hover .dock_child {
|
.docklist .d_cate:hover .dock_child {
|
||||||
display: block; }
|
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 {
|
.fn_des.admtxt {
|
||||||
line-height: 60px;
|
line-height: 60px;
|
||||||
@@ -737,8 +714,7 @@ a.admtxt.admbg2:hover {
|
|||||||
|
|
||||||
/* list item */
|
/* list item */
|
||||||
.list_t_item {
|
.list_t_item {
|
||||||
overflow: hidden;
|
overflow: hidden; }
|
||||||
height: 100px; }
|
|
||||||
|
|
||||||
.list_t_title {
|
.list_t_title {
|
||||||
padding-bottom: 6px;
|
padding-bottom: 6px;
|
||||||
@@ -772,8 +748,7 @@ a.admtxt.admbg2:hover {
|
|||||||
-webkit-text-size-adjust: none; }
|
-webkit-text-size-adjust: none; }
|
||||||
.list_item_function a :first-child {
|
.list_item_function a :first-child {
|
||||||
margin-left: 0; }
|
margin-left: 0; }
|
||||||
.datalist_item:hover .list_item_function,
|
.datalist_item:hover .list_item_function {
|
||||||
.list_t_item:hover .list_item_function {
|
|
||||||
bottom: 0; }
|
bottom: 0; }
|
||||||
|
|
||||||
/* App */
|
/* App */
|
||||||
|
|||||||
@@ -125,14 +125,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#list-view .checkbox-card li {
|
|
||||||
-webkit-transition: none;
|
|
||||||
-moz-transition: none;
|
|
||||||
-o-transition: none;
|
|
||||||
transition: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Responsive */
|
/* Responsive */
|
||||||
@media (max-width: 767px) {
|
@media (max-width: 767px) {
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
/* 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,23 +1,21 @@
|
|||||||
/*
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/ambiance-mobile.css);
|
||||||
*= require 'lib/codemirror/theme/ambiance-mobile'
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/ambiance.css);
|
||||||
*= require "lib/codemirror/theme/ambiance"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/blackboard.css);
|
||||||
*= require "lib/codemirror/theme/blackboard"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/cobalt.css);
|
||||||
*= require "lib/codemirror/theme/cobalt"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/eclipse.css);
|
||||||
*= require "lib/codemirror/theme/eclipse"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/elegant.css);
|
||||||
*= require "lib/codemirror/theme/elegant"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/erlang-dark.css);
|
||||||
*= require "lib/codemirror/theme/erlang-dark"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/midnight.css);
|
||||||
*= require "lib/codemirror/theme/midnight"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/monokai.css);
|
||||||
*= require "lib/codemirror/theme/monokai"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/neat.css);
|
||||||
*= require "lib/codemirror/theme/neat"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/night.css);
|
||||||
*= require "lib/codemirror/theme/night"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/rubyblue.css);
|
||||||
*= require "lib/codemirror/theme/rubyblue"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/solarized.css);
|
||||||
*= require "lib/codemirror/theme/solarized"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/theme.css);
|
||||||
*= require "lib/codemirror/theme/theme"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/twilight.css);
|
||||||
*= require "lib/codemirror/theme/twilight"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/vibrant-ink.css);
|
||||||
*= require "lib/codemirror/theme/vibrant-ink"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/xq-dark.css);
|
||||||
*= require "lib/codemirror/theme/xq-dark"
|
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/xq-light.css);
|
||||||
*= require "lib/codemirror/theme/xq-light"
|
|
||||||
*/
|
|
||||||
.cm-tab {
|
.cm-tab {
|
||||||
border-left: 1px solid rgba(200, 200, 200, .2);
|
border-left: 1px solid rgba(200, 200, 200, .2);
|
||||||
}
|
}
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
.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,17 +280,6 @@
|
|||||||
line-height: 26px;
|
line-height: 26px;
|
||||||
margin: 0;
|
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 {
|
.main-forms .field-type {
|
||||||
background-color: #f5f5f5;
|
background-color: #f5f5f5;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -318,7 +307,7 @@
|
|||||||
.main-forms .field-type .control-group:last-child {
|
.main-forms .field-type .control-group:last-child {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
#user-forms .control-group .add-target .input-append,
|
#new-user-forms .control-group .add-target .input-append,
|
||||||
.main-forms .field-type .control-group .add-target .input-append {
|
.main-forms .field-type .control-group .add-target .input-append {
|
||||||
display: block;
|
display: block;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
@@ -335,7 +324,7 @@
|
|||||||
border-radius: 0 4px 4px 0;
|
border-radius: 0 4px 4px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#user-forms .control-group .add-target .input-append input.last {
|
#new-user-forms .control-group .add-target .input-append input.last {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,193 @@
|
|||||||
|
/* 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,13 +39,6 @@
|
|||||||
.main-list td {
|
.main-list td {
|
||||||
background-color: #FFFFFF;
|
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 {
|
.main-list td.action {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
|||||||
@@ -2,20 +2,9 @@
|
|||||||
#list-view h4 a {
|
#list-view h4 a {
|
||||||
color: #000;
|
color: #000;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* List */
|
/* 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 .gender,
|
||||||
#list-view #member-list td[class^="gender-"] {
|
#list-view #member-list td[class^="gender-"] {
|
||||||
width: 5px;
|
width: 5px;
|
||||||
@@ -117,31 +106,10 @@
|
|||||||
#list-view #member-abstract .member-avatar .action > a.trash {
|
#list-view #member-abstract .member-avatar .action > a.trash {
|
||||||
background-color: #b94a48;
|
background-color: #b94a48;
|
||||||
}
|
}
|
||||||
/*#list-view #member-abstract .member-avatar:after {
|
#list-view #member-abstract .member-avatar > span {
|
||||||
content: "";
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
width: 250px;
|
||||||
left: 0;
|
height: 120px;
|
||||||
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;
|
display: block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background-color: #000000;
|
background-color: #000000;
|
||||||
@@ -152,8 +120,7 @@
|
|||||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||||
filter: alpha(opacity=0);
|
filter: alpha(opacity=0);
|
||||||
}
|
}
|
||||||
#list-view #member-abstract > li:hover .member-avatar:after {
|
#list-view #member-abstract > li:hover .member-avatar > span {
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
opacity: .4;
|
opacity: .4;
|
||||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
|
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
|
||||||
filter: alpha(opacity=40);
|
filter: alpha(opacity=40);
|
||||||
@@ -192,13 +159,14 @@
|
|||||||
float: left;
|
float: left;
|
||||||
position: relative;
|
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 {
|
#list-view #member-card > li:hover .member-avatar .action {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
#list-view #member-card .highlight {
|
|
||||||
background-color: #F0F0F0;
|
|
||||||
outline: 1px dashed #9E9E9E;
|
|
||||||
}
|
|
||||||
#list-view #member-card .member-avatar {
|
#list-view #member-card .member-avatar {
|
||||||
width: 150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
@@ -215,37 +183,14 @@
|
|||||||
#list-view #member-card .member-avatar.gender-woman {
|
#list-view #member-card .member-avatar.gender-woman {
|
||||||
border-color: #FF3196;
|
border-color: #FF3196;
|
||||||
}
|
}
|
||||||
#list-view #member-card .member-avatar.gender-nene {
|
#list-view #member-card .member-avatar.gender-none {
|
||||||
border-color: #DDDDDD;
|
border-color: #DDDDDD;
|
||||||
}
|
}
|
||||||
#list-view #member-card .member-avatar img {
|
#list-view #member-card .member-avatar img {
|
||||||
/*width: 100%;*/
|
/*width: 100%;*/
|
||||||
max-width: none;
|
max-width: none;
|
||||||
}
|
}
|
||||||
#list-view #member-card > li .member-avatar:after {
|
#list-view #member-card .member-avatar > span {
|
||||||
-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;
|
position: absolute;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
@@ -258,7 +203,7 @@
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||||
filter: alpha(opacity=0);
|
filter: alpha(opacity=0);
|
||||||
}*/
|
}
|
||||||
#list-view #member-card .member-avatar .action {
|
#list-view #member-card .member-avatar .action {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
@@ -317,25 +262,22 @@
|
|||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
#profile #basic-info .member-avatar {
|
#profile #basic-info .member-avatar {
|
||||||
width: 103px;
|
width: 106px;
|
||||||
height: 103px;
|
height: 106px;
|
||||||
float: left;
|
float: left;
|
||||||
|
}
|
||||||
|
#profile #basic-info .member-avatar img {
|
||||||
border: 3px solid #ffffff;
|
border: 3px solid #ffffff;
|
||||||
-webkit-border-radius: 9px;
|
width: 100%;
|
||||||
-moz-border-radius: 9px;
|
max-width: none;
|
||||||
border-radius: 9px;
|
|
||||||
}
|
}
|
||||||
#profile #basic-info .member-avatar:after {
|
#profile #basic-info .member-avatar.gender-man img {
|
||||||
content: "";
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
}
|
|
||||||
#profile #basic-info .member-avatar.gender-man {
|
|
||||||
border-color: #34ADFF;
|
border-color: #34ADFF;
|
||||||
}
|
}
|
||||||
#profile #basic-info .member-avatar.gender-woman {
|
#profile #basic-info .member-avatar.gender-woman img {
|
||||||
border-color: #FF3196;
|
border-color: #FF3196;
|
||||||
}
|
}
|
||||||
#profile #basic-info .member-avatar.gender-none {
|
#profile #basic-info .member-avatar.gender-none img {
|
||||||
border-color: #DDDDDD;
|
border-color: #DDDDDD;
|
||||||
}
|
}
|
||||||
#profile #member-roles {
|
#profile #member-roles {
|
||||||
@@ -371,28 +313,21 @@
|
|||||||
#profile #member-roles .roles dd {
|
#profile #member-roles .roles dd {
|
||||||
color: #999999;
|
color: #999999;
|
||||||
}
|
}
|
||||||
#profile #module-navbar {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
#profile #module-navbar .navbar {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
#profile #member-module {
|
#profile #member-module {
|
||||||
margin-left: 360px;
|
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 {
|
#profile #member-module #module-content {
|
||||||
padding: 0 0 0 10px;
|
padding: 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 */
|
/* Responsive */
|
||||||
@media (max-width: 979px) {
|
@media (max-width: 979px) {
|
||||||
#profile #member-info {
|
#profile #member-info {
|
||||||
|
|||||||
@@ -6,22 +6,22 @@
|
|||||||
.tags .lead .badge {
|
.tags .lead .badge {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
.tags-groups {
|
.tags .tags-groups {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin: 0 0 20px;
|
margin: 0 0 20px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
.tags-groups:after {
|
.tags .tags-groups:after {
|
||||||
content: "";
|
content: "";
|
||||||
clear: both;
|
clear: both;
|
||||||
height: 0;
|
height: 0;
|
||||||
display: block;
|
display: block;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
.tags-groups.module-tags li.default a {
|
.tags .tags-groups.module-tags li.default a {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
.tags-groups li {
|
.tags .tags-groups li {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
float: left;
|
float: left;
|
||||||
width: auto;
|
width: auto;
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
-o-transition: all .2s linear;
|
-o-transition: all .2s linear;
|
||||||
transition: all .2s linear;
|
transition: all .2s linear;
|
||||||
}
|
}
|
||||||
.tags-groups li.mark {
|
.tags .tags-groups li.mark {
|
||||||
width: 0;
|
width: 0;
|
||||||
height: 0;
|
height: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -49,28 +49,28 @@
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
.tags-groups li.active {
|
.tags .tags-groups li.active {
|
||||||
background-color: #3a87ad;
|
background-color: #3a87ad;
|
||||||
}
|
}
|
||||||
.tags-groups li.active .amount {
|
.tags .tags-groups li.active .amount {
|
||||||
color: #8cb8be;
|
color: #8cb8be;
|
||||||
}
|
}
|
||||||
.tags-groups li a {
|
.tags .tags-groups li a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: #ededed;
|
color: #ededed;
|
||||||
}
|
}
|
||||||
.tags-groups li .amount {
|
.tags .tags-groups li .amount {
|
||||||
color: #fdcf3b;
|
color: #fdcf3b;
|
||||||
float: right;
|
float: right;
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
}
|
}
|
||||||
.tags-groups li .card {
|
.tags .tags-groups li .card {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
width: 18px;
|
width: 18px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
}
|
}
|
||||||
.tags-groups li .card:after {
|
.tags .tags-groups li .card:after {
|
||||||
font-family: FontAwesome;
|
font-family: FontAwesome;
|
||||||
content: '\f111';
|
content: '\f111';
|
||||||
color: #fdcf3b;
|
color: #fdcf3b;
|
||||||
@@ -82,13 +82,13 @@
|
|||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
.tags-groups li .card.active:after {
|
.tags .tags-groups li .card.active:after {
|
||||||
content: '\f058';
|
content: '\f058';
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
left: -2px;
|
left: -2px;
|
||||||
top: 1px;
|
top: 1px;
|
||||||
}
|
}
|
||||||
.tags-groups li .card input {
|
.tags .tags-groups li .card input {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -110,10 +110,10 @@
|
|||||||
#tags-merger form {
|
#tags-merger form {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
#tags-merger .tags-groups li {
|
#tags-merger .tags .tags-groups li {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
#tags-merger .tags-groups li.def {
|
#tags-merger .tags .tags-groups li.def {
|
||||||
background-color: #468847;
|
background-color: #468847;
|
||||||
}
|
}
|
||||||
#tags-merger .modal-body .pull-left {
|
#tags-merger .modal-body .pull-left {
|
||||||
@@ -127,22 +127,22 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
.tags-groups li.default {
|
.tags .tags-groups li.default {
|
||||||
background-color: #468847;
|
background-color: #468847;
|
||||||
}
|
}
|
||||||
.tags-groups li.default.active {
|
.tags .tags-groups li.default.active {
|
||||||
background-color: #3a87ad;
|
background-color: #3a87ad;
|
||||||
}
|
}
|
||||||
.tags-groups li.default .amount {
|
.tags .tags-groups li.default .amount {
|
||||||
color: #8cbe9a;
|
color: #8cbe9a;
|
||||||
}
|
}
|
||||||
.tags-groups li.default.active .amount {
|
.tags .tags-groups li.default.active .amount {
|
||||||
color: #8cb8be;
|
color: #8cb8be;
|
||||||
}
|
}
|
||||||
.tags-groups li.default .card:after {
|
.tags .tags-groups li.default .card:after {
|
||||||
color: #8cbe9a;
|
color: #8cbe9a;
|
||||||
}
|
}
|
||||||
.tags-groups li.active .card:after {
|
.tags .tags-groups li.active .card:after {
|
||||||
color: #8cb8be;
|
color: #8cb8be;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,12 +26,6 @@
|
|||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
.topnav .btn-group {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
.topnav .view-switch {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Bottom Nav */
|
/* Bottom Nav */
|
||||||
.bottomnav {
|
.bottomnav {
|
||||||
@@ -47,16 +41,6 @@
|
|||||||
.bottomnav .action {
|
.bottomnav .action {
|
||||||
margin-bottom: 6px;
|
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 {
|
.bottomnav .pagination {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,7 +223,7 @@
|
|||||||
|
|
||||||
#orbit-bar {
|
#orbit-bar {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: "Chivo";
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
class Admin::AdBannersController < OrbitBackendController
|
class Admin::AdBannersController < OrbitBackendController
|
||||||
open_for_visitor :only => [:index, :show]
|
|
||||||
open_for_manager :except => [:index,:show,:update,:realtime_preview]
|
before_filter :force_order_for_visitor,:only=>[:index, :show]
|
||||||
open_for_sub_manager :except => [: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]
|
||||||
|
|
||||||
|
|
||||||
def rename
|
def rename
|
||||||
@ad_banner = AdBanner.find(params[:id])
|
@ad_banner = AdBanner.find(params[:id])
|
||||||
@@ -57,7 +60,6 @@ class Admin::AdBannersController < OrbitBackendController
|
|||||||
def index
|
def index
|
||||||
@ad_banners = AdBanner.all
|
@ad_banners = AdBanner.all
|
||||||
@active = @ad_banners.first
|
@active = @ad_banners.first
|
||||||
@tags = get_tags
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -22,10 +22,8 @@ class Admin::AdImagesController < Admin::AdBannersController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@ad_banner = AdBanner.find params[:ad_banner][:id]
|
@ad_image = AdImage.find(params[:id])
|
||||||
@ad_image = AdImage.find(params[:ad_image][:id])
|
|
||||||
@ad_image.update_attributes(params[:ad_image])
|
@ad_image.update_attributes(params[:ad_image])
|
||||||
@ad_banner.ad_images << @ad_image
|
|
||||||
redirect_to admin_ad_images_path
|
redirect_to admin_ad_images_path
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -40,10 +38,10 @@ class Admin::AdImagesController < Admin::AdBannersController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create
|
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 = AdImage.new params[:ad_image]
|
||||||
@ad_image.to_save = true
|
#@ad_image.to_save = true
|
||||||
@ad_banner.ad_images << @ad_image
|
#@ad_banner.ad_images << ad_image
|
||||||
|
|
||||||
if @ad_image.save
|
if @ad_image.save
|
||||||
redirect_to admin_ad_images_path
|
redirect_to admin_ad_images_path
|
||||||
|
|||||||
@@ -3,17 +3,7 @@ class Admin::AssetsController < OrbitBackendController
|
|||||||
before_filter :setup_vars
|
before_filter :setup_vars
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.desc(:created_at).page(params[:page]).per(10)
|
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.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
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@@ -32,8 +22,12 @@ class Admin::AssetsController < OrbitBackendController
|
|||||||
|
|
||||||
def edit
|
def edit
|
||||||
@asset = Asset.find(params[:id])
|
@asset = Asset.find(params[:id])
|
||||||
|
@asset_categories = AssetCategory.all
|
||||||
@tags = get_tags
|
@tags = get_tags
|
||||||
render layout: false
|
respond_to do |format|
|
||||||
|
format.html {}
|
||||||
|
format.js { render 'js/show_pop_up', :locals => {:partial => 'admin/assets/edit'} }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@@ -70,7 +64,10 @@ class Admin::AssetsController < OrbitBackendController
|
|||||||
def update
|
def update
|
||||||
@asset = Asset.find(params[:id])
|
@asset = Asset.find(params[:id])
|
||||||
if @asset.update_attributes(params[:asset])
|
if @asset.update_attributes(params[:asset])
|
||||||
render layout: false
|
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
|
||||||
else
|
else
|
||||||
flash[:error] = t('update.fail')
|
flash[:error] = t('update.fail')
|
||||||
@asset_categories = AssetCategory.all
|
@asset_categories = AssetCategory.all
|
||||||
@@ -98,31 +95,11 @@ class Admin::AssetsController < OrbitBackendController
|
|||||||
redirect_to assets_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
redirect_to assets_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
||||||
end
|
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
|
def file_upload
|
||||||
@files = params['files']
|
@asset = Asset.new
|
||||||
a = Array.new
|
@asset_categories = AssetCategory.all
|
||||||
@files.each do |file|
|
@tags = get_tags
|
||||||
@asset = current_user.assets.new
|
render :layout => false
|
||||||
@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
|
end
|
||||||
|
|
||||||
def file_select
|
def file_select
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
class Admin::AuthorizationsController < OrbitBackendController
|
class Admin::AuthorizationsController < OrbitBackendController
|
||||||
|
|
||||||
prepend_before_filter :admin_or_manager
|
before_filter :admin_or_manager
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@module_apps ||= ModuleApp.any_of({is_authorizable: true}, {is_approvable: true}).order_by([:title, :asc])
|
@module_apps ||= ModuleApp.where(is_authorizable: true).order_by([:title, :asc])
|
||||||
if @module_apps && @module_apps.include?(@module_app)
|
if @module_apps && @module_apps.include?(@module_app)
|
||||||
if @type
|
if @type
|
||||||
case @type
|
case @type
|
||||||
when 'category_authorization', 'category_approval'
|
when 'category', 'approval'
|
||||||
if @module_app.has_category
|
if @module_app.has_category
|
||||||
@objects = @module_app.categories
|
@objects = @module_app.categories
|
||||||
else
|
else
|
||||||
@@ -18,12 +18,12 @@ class Admin::AuthorizationsController < OrbitBackendController
|
|||||||
end
|
end
|
||||||
unless @objects.blank?
|
unless @objects.blank?
|
||||||
@object ||= @objects.first
|
@object ||= @objects.first
|
||||||
@users = @object.get_authorization_by_title("#{@type}_#{@module_app.key}").authorized_users rescue nil
|
@users = @object.get_object_auth_by_title("#{@type}_#{@module_app.key}").auth_users
|
||||||
else
|
else
|
||||||
@error = t(:no_data)
|
@error = t(:no_data)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@users = @module_app.managers
|
@users = @module_app.managing_users
|
||||||
end
|
end
|
||||||
elsif @module_apps
|
elsif @module_apps
|
||||||
@module_app = @module_apps.first
|
@module_app = @module_apps.first
|
||||||
@@ -33,42 +33,35 @@ class Admin::AuthorizationsController < OrbitBackendController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_roles
|
def add(users)
|
||||||
roles = Role.find(params[:role_ids]) rescue []
|
unless users.blank?
|
||||||
users = []
|
if @type
|
||||||
roles.each do |role|
|
if @object
|
||||||
users += role.users.all.entries
|
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
|
||||||
end
|
end
|
||||||
unless roles.blank?
|
@users = users
|
||||||
authorization = get_or_create_authorization
|
render 'admin/authorizations/insert_users'
|
||||||
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
|
end
|
||||||
|
|
||||||
def add_users
|
def add_users
|
||||||
users = User.find(params[:user_ids]) rescue []
|
users = User.find(params[:user_ids]) rescue []
|
||||||
unless users.blank?
|
add(users)
|
||||||
authorization = get_or_create_authorization
|
end
|
||||||
add_users_to_auth(authorization, users) unless @error
|
|
||||||
|
def add_roles
|
||||||
|
roles = Role.find(params[:role_ids]) rescue []
|
||||||
|
users = roles.inject([]) do |users, role|
|
||||||
|
users += role.users.all.entries
|
||||||
|
users
|
||||||
end
|
end
|
||||||
@users = authorization.authorized_users
|
add(users)
|
||||||
render 'admin/authorizations/reload_users'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def modal_select
|
def modal_select
|
||||||
@@ -77,111 +70,63 @@ class Admin::AuthorizationsController < OrbitBackendController
|
|||||||
if @type
|
if @type
|
||||||
@object_id = @object.id if @object
|
@object_id = @object.id if @object
|
||||||
@sorted_users = roles.inject({}) do |users, role|
|
@sorted_users = roles.inject({}) do |users, role|
|
||||||
users[role] = role.users.where(admin: false) - existing_users - @module_app.managers
|
users[role] = role.users.where(admin: false).not_guest_user - existing_users - @module_app.managing_users
|
||||||
users
|
users
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@sorted_users = roles.inject({}) do |users, role|
|
@sorted_users = roles.inject({}) do |users, role|
|
||||||
users[role] = role.users.where(admin: false) - existing_users
|
users[role] = role.users.where(admin: false).not_guest_user - existing_users
|
||||||
users
|
users
|
||||||
end
|
end
|
||||||
end
|
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
|
def remove_users
|
||||||
@users = User.find(params[:ids]) rescue []
|
@users = User.find(params[:ids]) rescue []
|
||||||
unless @users.blank?
|
unless @users.blank?
|
||||||
authorization = get_or_create_authorization
|
if @type
|
||||||
remove_users_from_auth(authorization, @users)
|
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
|
||||||
end
|
end
|
||||||
@users = authorization.authorized_users
|
render 'admin/authorizations/remove_users'
|
||||||
render 'admin/authorizations/reload_users'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def add_managers_to_auth(users)
|
def add_managers(users)
|
||||||
@module_app.add_managers(users)
|
users.each do |user|
|
||||||
end
|
@module_app.assign_manager(user, current_user)
|
||||||
|
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_managers_from_auth(users)
|
def add_users_to_object_auth(object_auth, users)
|
||||||
@module_app.remove_manager(users)
|
users.each do |user|
|
||||||
|
object_auth.add_user_to_privilege_list(user)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_roles_form_auth(authorization, roles)
|
def remove_managers(users)
|
||||||
authorization.remove_roles(roles)
|
users.each do |user|
|
||||||
|
@module_app.remove_manager(user)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_sub_roles_from_auth(authorization, sub_roles)
|
def remove_users_form_object_auth(object_auth, users)
|
||||||
authorization.remove_sub_roles(sub_roles)
|
users.each do |user|
|
||||||
end
|
object_auth.remove_user_from_privilege_list(user)
|
||||||
|
end
|
||||||
def remove_users_from_auth(authorization, users)
|
|
||||||
authorization.remove_users(users)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def admin_or_manager
|
def admin_or_manager
|
||||||
@override_can_use = true
|
|
||||||
setup_vars
|
setup_vars
|
||||||
authenticate_user!
|
authenticate_user!
|
||||||
user_is_manager?
|
user_is_manager?
|
||||||
@@ -191,7 +136,7 @@ class Admin::AuthorizationsController < OrbitBackendController
|
|||||||
@module_app = ModuleApp.first(conditions: {:key => params[:module]} ) if params[:module]
|
@module_app = ModuleApp.first(conditions: {:key => params[:module]} ) if params[:module]
|
||||||
@type = params[:type].underscore if params[:type]
|
@type = params[:type].underscore if params[:type]
|
||||||
if @type
|
if @type
|
||||||
@klass = @type.gsub('_authorization', '').gsub('_approval', '').classify.constantize rescue nil
|
@klass = @type.classify.constantize rescue nil
|
||||||
@object = @klass.find(params[:id]) rescue nil
|
@object = @klass.find(params[:id]) rescue nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
class Admin::DashboardsController < OrbitBackendController
|
class Admin::DashboardsController < OrbitBackendController
|
||||||
|
|
||||||
open_for_visitor
|
#before_filter :set_current_user
|
||||||
|
#before_filter :authenticate_user!, :except => [:index]
|
||||||
|
# before_filter :is_admin?
|
||||||
|
|
||||||
layout "basic_back_end"
|
layout "basic_back_end"
|
||||||
|
|
||||||
|
|||||||
@@ -1,573 +0,0 @@
|
|||||||
# encoding: utf-8
|
|
||||||
|
|
||||||
require 'net/http'
|
|
||||||
require 'open-uri'
|
|
||||||
|
|
||||||
class Admin::ImportDataController < OrbitBackendController
|
|
||||||
helper Admin::PagePartsHelper
|
|
||||||
include Admin::FrontendWidgetInterface
|
|
||||||
|
|
||||||
def get_teacher_data
|
|
||||||
uri = URI("https://localhost:8000/teachers.xml")
|
|
||||||
|
|
||||||
#params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
|
|
||||||
#uri.query = URI.encode_www_form(params)
|
|
||||||
res = Net::HTTP.get_response(uri)
|
|
||||||
|
|
||||||
@teacher_data = Hash.from_xml(res.body)
|
|
||||||
@teachers = @teacher_data["objects"]
|
|
||||||
@i = 5000
|
|
||||||
@teachers.each do |hash|
|
|
||||||
# @roles = Role.skip(1).first
|
|
||||||
@roles = Role.all
|
|
||||||
@teacher = User.new
|
|
||||||
I18n.locale = :zh_tw
|
|
||||||
if !hash['teacher_zh_tw'].blank?
|
|
||||||
@teacher.first_name = hash['teacher_zh_tw']
|
|
||||||
elsif hash['teacher_zh_tw'].blank? && !hash['teacher_en'].blank?
|
|
||||||
@teacher.first_name = hash['teacher_en']
|
|
||||||
elsif hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank?
|
|
||||||
@teacher.first_name = "Please Fill the Name"
|
|
||||||
end
|
|
||||||
|
|
||||||
I18n.locale = :en
|
|
||||||
if !hash['teacher_en'].blank?
|
|
||||||
@teacher.first_name = hash['teacher_en']
|
|
||||||
elsif hash['teacher_en'].blank? && !hash['teacher_zh_tw'].blank?
|
|
||||||
@teacher.first_name = hash['teacher_zh_tw']
|
|
||||||
elsif hash['teacher_en'].blank? && hash['teacher_zh_tw'].blank?
|
|
||||||
@teacher.first_name = "Please Fill the Name"
|
|
||||||
end
|
|
||||||
|
|
||||||
#@teacher.first_name = hash['teacher_en']
|
|
||||||
@teacher.ntu_seq = hash['ntu_seq']
|
|
||||||
@teacher.sid = hash['ntu_seq']
|
|
||||||
@teacher.role_ids = ["#{@roles.skip(1).first.id}"]
|
|
||||||
@teacher.password = "testpass"
|
|
||||||
@i += 10
|
|
||||||
if !hash['email'].blank?
|
|
||||||
@user = User.where(email: "#{hash['email']}")
|
|
||||||
if @user.length == 0
|
|
||||||
@teacher.email = hash['email']
|
|
||||||
elsif @user.length > 0
|
|
||||||
@teacher.email = "#{@i}duplicate@ntu.edu.tw"
|
|
||||||
end
|
|
||||||
else
|
|
||||||
@teacher.email = "#{@i}@ntu.edu.tw"
|
|
||||||
end
|
|
||||||
|
|
||||||
if hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank?
|
|
||||||
@teacher.user_id = "defaultuser"
|
|
||||||
elsif hash['teacher_en'].blank?
|
|
||||||
@teacher.user_id = hash['teacher_zh_tw']
|
|
||||||
elsif hash['teacher_zh_tw']
|
|
||||||
@teacher.user_id = hash['teacher_en']
|
|
||||||
end
|
|
||||||
@teacher.save!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_book_data
|
|
||||||
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
|
|
||||||
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
|
|
||||||
uri.query = URI.encode_www_form(params)
|
|
||||||
res = Net::HTTP.get_response(uri)
|
|
||||||
|
|
||||||
teachers = User.all
|
|
||||||
|
|
||||||
teachers.each do |hash|
|
|
||||||
if hash.sid.present?
|
|
||||||
ntu_seq = hash.sid
|
|
||||||
books_xml = Nokogiri::XML( \
|
|
||||||
open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
|
|
||||||
@books = books_xml.xpath("//Book").map do |book_node|
|
|
||||||
{
|
|
||||||
author: (book_node>"Authors").text,
|
|
||||||
year: (book_node>"PublishYear").text,
|
|
||||||
title: (book_node>"DocTitle").text,
|
|
||||||
remarks: (book_node>"Remarks").text,
|
|
||||||
publisher: (book_node>"Publisher").text,
|
|
||||||
book_title: (book_node>"BookTitle").text
|
|
||||||
}
|
|
||||||
end
|
|
||||||
if @books.present?
|
|
||||||
@books.each do |b|
|
|
||||||
@book = WritingBook.new
|
|
||||||
I18n.locale = :zh_tw
|
|
||||||
@book.authors = b[:author]
|
|
||||||
@book.paper_title = b[:title]
|
|
||||||
@book.book_title = b[:book_title]
|
|
||||||
@book.note = b[:remarks]
|
|
||||||
@book.publisher = b[:publisher]
|
|
||||||
I18n.locale = :en
|
|
||||||
@book.authors = b[:author]
|
|
||||||
@book.paper_title = b[:title]
|
|
||||||
@book.book_title = b[:book_title]
|
|
||||||
@book.note = b[:remarks]
|
|
||||||
@book.publisher = b[:publisher]
|
|
||||||
@book.year = b[:year]
|
|
||||||
@book.create_user_id = hash.id
|
|
||||||
@book.save
|
|
||||||
end
|
|
||||||
else
|
|
||||||
puts "No books by Teacher"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_conference_data
|
|
||||||
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
|
|
||||||
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
|
|
||||||
uri.query = URI.encode_www_form(params)
|
|
||||||
res = Net::HTTP.get_response(uri)
|
|
||||||
|
|
||||||
teachers = User.all
|
|
||||||
|
|
||||||
teachers.each do |hash|
|
|
||||||
if hash.sid.present?
|
|
||||||
ntu_seq = hash.sid
|
|
||||||
conference_xml = Nokogiri::XML( \
|
|
||||||
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C"))
|
|
||||||
#open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
|
|
||||||
@conference_papers = conference_xml.xpath("//Paper").map do |cp_node|
|
|
||||||
{
|
|
||||||
author: (cp_node>"Authors").text,
|
|
||||||
year: (cp_node>"PublishYear").text,
|
|
||||||
title: (cp_node>"PaperTitle").text,
|
|
||||||
conference: (cp_node>"PublishOn").text,
|
|
||||||
date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
|
|
||||||
location: "#{(cp_node>"Country").text} #{(cp_node>"location").text}",
|
|
||||||
conference_title: (cp_node>"PublishOn").text,
|
|
||||||
remarks: (cp_node>"Remarks").text
|
|
||||||
}
|
|
||||||
end
|
|
||||||
if @conference_papers.present?
|
|
||||||
@conference_papers.each do |b|
|
|
||||||
@conference_paper = WritingConference.new
|
|
||||||
I18n.locale = :zh_tw
|
|
||||||
@conference_paper.authors = b[:author]
|
|
||||||
if b[:title].blank?
|
|
||||||
@conference_paper.paper_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@conference_paper.paper_title = b[:title]
|
|
||||||
end
|
|
||||||
if b[:conference_title].blank?
|
|
||||||
@conference_paper.conference_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@conference_paper.conference_title = b[:conference_title]
|
|
||||||
end
|
|
||||||
|
|
||||||
@conference_paper.note = b[:remarks]
|
|
||||||
I18n.locale = :en
|
|
||||||
@conference_paper.authors = b[:author]
|
|
||||||
if b[:title].blank?
|
|
||||||
@conference_paper.paper_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@conference_paper.paper_title = b[:title]
|
|
||||||
end
|
|
||||||
if b[:conference_title].blank?
|
|
||||||
@conference_paper.conference_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@conference_paper.conference_title = b[:conference_title]
|
|
||||||
end
|
|
||||||
@conference_paper.note = b[:remarks]
|
|
||||||
|
|
||||||
@conference_paper.location = b[:location]
|
|
||||||
@conference_paper.year = b[:year]
|
|
||||||
@conference_paper.create_user_id = hash.id
|
|
||||||
|
|
||||||
@conference_paper.save!
|
|
||||||
end
|
|
||||||
else
|
|
||||||
puts "No conference by Teacher"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def get_journal_paper_data
|
|
||||||
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
|
|
||||||
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
|
|
||||||
uri.query = URI.encode_www_form(params)
|
|
||||||
res = Net::HTTP.get_response(uri)
|
|
||||||
|
|
||||||
teachers = User.all
|
|
||||||
|
|
||||||
teachers.each do |hash|
|
|
||||||
if hash.sid.present?
|
|
||||||
ntu_seq = hash.sid
|
|
||||||
paper_xml = Nokogiri::XML( \
|
|
||||||
#open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml"))
|
|
||||||
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J"))
|
|
||||||
@journal_papers = paper_xml.xpath("//Paper").map do |paper_node|
|
|
||||||
{
|
|
||||||
author: (paper_node>"Authors").text,
|
|
||||||
year: (paper_node>"PublishYear").text,
|
|
||||||
title: (paper_node>"PaperTitle").text,
|
|
||||||
journal: (paper_node>"PublishOn").text,
|
|
||||||
volume:(paper_node>"Volume").text,
|
|
||||||
volumeno:(paper_node>"VolumeNo").text,
|
|
||||||
beginpage:(paper_node>"BeginPage").text,
|
|
||||||
endpage:(paper_node>"EndPage").text,
|
|
||||||
subgroup:(paper_node>"subgroup").text,
|
|
||||||
remarks: (paper_node>"Remarks").text,
|
|
||||||
cate: ((paper_node>"subgroup")>"Group").text
|
|
||||||
}
|
|
||||||
end
|
|
||||||
if @journal_papers.present?
|
|
||||||
@journal_papers.each do |b|
|
|
||||||
@journal_paper = WritingJournal.new
|
|
||||||
I18n.locale = :zh_tw
|
|
||||||
@journal_paper.authors = b[:author]
|
|
||||||
if b[:title].blank?
|
|
||||||
@journal_paper.paper_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@journal_paper.paper_title = b[:title]
|
|
||||||
end
|
|
||||||
@journal_paper.journal_title = b[:journal]
|
|
||||||
@journal_paper.note = b[:remarks]
|
|
||||||
I18n.locale = :en
|
|
||||||
@journal_paper.authors = b[:author]
|
|
||||||
if b[:title].blank?
|
|
||||||
@journal_paper.paper_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@journal_paper.paper_title = b[:title]
|
|
||||||
end
|
|
||||||
@journal_paper.journal_title = b[:journal]
|
|
||||||
@journal_paper.note = b[:remarks]
|
|
||||||
@journal_paper.year = b[:year]
|
|
||||||
@journal_paper.vol_no = b[:volumeno]
|
|
||||||
@journal_paper.form_to_start = b[:beginpage]
|
|
||||||
@journal_paper.form_to_end = b[:endpage]
|
|
||||||
if !b[:cate].blank?
|
|
||||||
@level_type = JournalLevelType.where(:key => b[:cate])
|
|
||||||
if @level_type.present?
|
|
||||||
@journal_paper.journal_level_type_ids = ["#{@level_type.first.id}"]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@journal_paper.create_user_id = hash.id
|
|
||||||
@journal_paper.save!
|
|
||||||
end
|
|
||||||
else
|
|
||||||
puts "No journal paper by Teacher"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def sync_conference_data
|
|
||||||
@conference_data = WritingConference.where(create_user_id: "#{params[:user_id]}")
|
|
||||||
@conference_data.delete_all
|
|
||||||
@user = User.find("#{params[:user_id]}")
|
|
||||||
|
|
||||||
# teachers.each do |hash|
|
|
||||||
if @user.sid.present?
|
|
||||||
ntu_seq = @user.sid
|
|
||||||
conference_xml = Nokogiri::XML( \
|
|
||||||
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C"))
|
|
||||||
#open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
|
|
||||||
@conference_papers = conference_xml.xpath("//Paper").map do |cp_node|
|
|
||||||
{
|
|
||||||
author: (cp_node>"Authors").text,
|
|
||||||
year: (cp_node>"PublishYear").text,
|
|
||||||
title: (cp_node>"PaperTitle").text,
|
|
||||||
conference: (cp_node>"PublishOn").text,
|
|
||||||
date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
|
|
||||||
location: "#{(cp_node>"Country").text} #{(cp_node>"location").text}",
|
|
||||||
conference_title: (cp_node>"PublishOn").text,
|
|
||||||
remarks: (cp_node>"Remarks").text
|
|
||||||
}
|
|
||||||
end
|
|
||||||
if @conference_papers.present?
|
|
||||||
@conference_papers.each do |b|
|
|
||||||
@conference_paper = WritingConference.new
|
|
||||||
I18n.locale = :zh_tw
|
|
||||||
@conference_paper.authors = b[:author]
|
|
||||||
if b[:title].blank?
|
|
||||||
@conference_paper.paper_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@conference_paper.paper_title = b[:title]
|
|
||||||
end
|
|
||||||
if b[:conference_title].blank?
|
|
||||||
@conference_paper.conference_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@conference_paper.conference_title = b[:conference_title]
|
|
||||||
end
|
|
||||||
|
|
||||||
@conference_paper.note = b[:remarks]
|
|
||||||
I18n.locale = :en
|
|
||||||
@conference_paper.authors = b[:author]
|
|
||||||
if b[:title].blank?
|
|
||||||
@conference_paper.paper_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@conference_paper.paper_title = b[:title]
|
|
||||||
end
|
|
||||||
if b[:conference_title].blank?
|
|
||||||
@conference_paper.conference_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@conference_paper.conference_title = b[:conference_title]
|
|
||||||
end
|
|
||||||
@conference_paper.note = b[:remarks]
|
|
||||||
|
|
||||||
@conference_paper.location = b[:location]
|
|
||||||
@conference_paper.year = b[:year]
|
|
||||||
@conference_paper.create_user_id = @user.id
|
|
||||||
|
|
||||||
@conference_paper.save!
|
|
||||||
end
|
|
||||||
else
|
|
||||||
puts "No conference by Teacher"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
respond_to do |format|
|
|
||||||
|
|
||||||
format.html
|
|
||||||
format.json { render json: {"success"=>true}.to_json}
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def sync_journal_paper_data
|
|
||||||
@journal_data = WritingJournal.where(create_user_id: "#{params[:user_id]}")
|
|
||||||
@journal_data.delete_all
|
|
||||||
@user = User.find("#{params[:user_id]}")
|
|
||||||
|
|
||||||
# teachers.each do |hash|
|
|
||||||
if @user.sid.present?
|
|
||||||
ntu_seq = @user.sid
|
|
||||||
paper_xml = Nokogiri::XML( \
|
|
||||||
#open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml"))
|
|
||||||
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J"))
|
|
||||||
@journal_papers = paper_xml.xpath("//Paper").map do |paper_node|
|
|
||||||
{
|
|
||||||
author: (paper_node>"Authors").text,
|
|
||||||
year: (paper_node>"PublishYear").text,
|
|
||||||
title: (paper_node>"PaperTitle").text,
|
|
||||||
journal: (paper_node>"PublishOn").text,
|
|
||||||
volume:(paper_node>"Volume").text,
|
|
||||||
volumeno:(paper_node>"VolumeNo").text,
|
|
||||||
beginpage:(paper_node>"BeginPage").text,
|
|
||||||
endpage:(paper_node>"EndPage").text,
|
|
||||||
subgroup:(paper_node>"subgroup").text,
|
|
||||||
remarks: (paper_node>"Remarks").text,
|
|
||||||
cate: ((paper_node>"subgroup")>"Group").text
|
|
||||||
}
|
|
||||||
end
|
|
||||||
if @journal_papers.present?
|
|
||||||
@journal_papers.each do |b|
|
|
||||||
@journal_paper = WritingJournal.new
|
|
||||||
I18n.locale = :zh_tw
|
|
||||||
@journal_paper.authors = b[:author]
|
|
||||||
|
|
||||||
if b[:title].blank?
|
|
||||||
@journal_paper.paper_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@journal_paper.paper_title = b[:title]
|
|
||||||
end
|
|
||||||
|
|
||||||
@journal_paper.journal_title = b[:journal]
|
|
||||||
@journal_paper.note = b[:remarks]
|
|
||||||
I18n.locale = :en
|
|
||||||
@journal_paper.authors = b[:author]
|
|
||||||
|
|
||||||
if b[:title].blank?
|
|
||||||
@journal_paper.paper_title = "No Title Present"
|
|
||||||
else
|
|
||||||
@journal_paper.paper_title = b[:title]
|
|
||||||
end
|
|
||||||
|
|
||||||
@journal_paper.journal_title = b[:journal]
|
|
||||||
@journal_paper.note = b[:remarks]
|
|
||||||
@journal_paper.year = b[:year]
|
|
||||||
@journal_paper.vol_no = b[:volumeno]
|
|
||||||
@journal_paper.form_to_start = b[:beginpage]
|
|
||||||
@journal_paper.form_to_end = b[:endpage]
|
|
||||||
|
|
||||||
if !b[:cate].blank?
|
|
||||||
@level_type = JournalLevelType.where(:key => b[:cate])
|
|
||||||
if @level_type.present?
|
|
||||||
@journal_paper.journal_level_type_ids = ["#{@level_type.first.id}"]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@journal_paper.create_user_id = @user.id
|
|
||||||
@journal_paper.save!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
respond_to do |format|
|
|
||||||
|
|
||||||
format.html
|
|
||||||
format.json { render json: {"success"=>true}.to_json}
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def sync_book_data
|
|
||||||
@books_data = WritingBook.where(create_user_id: "#{params[:user_id]}")
|
|
||||||
@books_data.delete_all
|
|
||||||
@user = User.find("#{params[:user_id]}")
|
|
||||||
|
|
||||||
# teachers.each do |hash|
|
|
||||||
if @user.sid.present?
|
|
||||||
ntu_seq = @user.sid
|
|
||||||
books_xml = Nokogiri::XML( \
|
|
||||||
open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
|
|
||||||
@books = books_xml.xpath("//Book").map do |book_node|
|
|
||||||
{
|
|
||||||
author: (book_node>"Authors").text,
|
|
||||||
year: (book_node>"PublishYear").text,
|
|
||||||
title: (book_node>"DocTitle").text,
|
|
||||||
remarks: (book_node>"Remarks").text,
|
|
||||||
publisher: (book_node>"Publisher").text,
|
|
||||||
book_title: (book_node>"BookTitle").text
|
|
||||||
}
|
|
||||||
end
|
|
||||||
if @books.present?
|
|
||||||
@books.each do |b|
|
|
||||||
@book = WritingBook.new
|
|
||||||
I18n.locale = :zh_tw
|
|
||||||
@book.authors = b[:author]
|
|
||||||
@book.paper_title = b[:title]
|
|
||||||
@book.book_title = b[:book_title]
|
|
||||||
@book.note = b[:remarks]
|
|
||||||
@book.publisher = b[:publisher]
|
|
||||||
I18n.locale = :en
|
|
||||||
@book.authors = b[:author]
|
|
||||||
@book.paper_title = b[:title]
|
|
||||||
@book.book_title = b[:book_title]
|
|
||||||
@book.note = b[:remarks]
|
|
||||||
@book.publisher = b[:publisher]
|
|
||||||
@book.year = b[:year]
|
|
||||||
@book.create_user_id = @user.id
|
|
||||||
@book.save
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
respond_to do |format|
|
|
||||||
|
|
||||||
format.html
|
|
||||||
format.json { render json: {"success"=>true}.to_json}
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def get_announcement_data
|
|
||||||
uri = URI("https://localhost:8000/announcements.xml")
|
|
||||||
|
|
||||||
#params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
|
|
||||||
#uri.query = URI.encode_www_form(params)
|
|
||||||
res = Net::HTTP.get_response(uri)
|
|
||||||
|
|
||||||
@announcement_data = Hash.from_xml(res.body)
|
|
||||||
@announcements = @announcement_data["objects"]
|
|
||||||
@announcements.each do |hash|
|
|
||||||
@bulletin = Bulletin.new
|
|
||||||
|
|
||||||
I18n.locale = :zh_tw
|
|
||||||
if hash['announcement_title_zh_tw'].blank?
|
|
||||||
@bulletin.title = hash['announcement_title_en']
|
|
||||||
@bulletin.text = hash['announcement_content_zh_tw']
|
|
||||||
elsif hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank?
|
|
||||||
@bulletin.title = "Please Fill the Name"
|
|
||||||
@bulletin.text = hash['announcement_content_zh_tw']
|
|
||||||
else
|
|
||||||
@bulletin.title = hash['announcement_title_zh_tw']
|
|
||||||
@bulletin.text = hash['announcement_content_zh_tw']
|
|
||||||
end
|
|
||||||
|
|
||||||
I18n.locale = :en
|
|
||||||
if hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank?
|
|
||||||
@bulletin.title = "Please Fill the Name"
|
|
||||||
@bulletin.text = hash['announcement_content_en']
|
|
||||||
|
|
||||||
elsif hash['announcement_title_en'].blank?
|
|
||||||
@bulletin.title = hash['announcement_zh_tw']
|
|
||||||
@bulletin.text = hash['announcement_content_en']
|
|
||||||
|
|
||||||
elsif hash['announcement_title_zh_tw'].blank?
|
|
||||||
@bulletin.title = hash['announcement_title_en']
|
|
||||||
@bulletin.text = hash['announcement_content_en']
|
|
||||||
end
|
|
||||||
@bulletin.category_id = "51d2a16438178423c2000001"
|
|
||||||
@bulletin.is_pending = true
|
|
||||||
|
|
||||||
@bulletin.save!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_page_data
|
|
||||||
f = File.open("/home/rwub/orbit-db/ntu_mb/pages/management_pages.xml")
|
|
||||||
page_xml = Nokogiri::XML(f)
|
|
||||||
#open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
|
|
||||||
@pages = page_xml.xpath("//management-page").map do |cp_node|
|
|
||||||
{
|
|
||||||
menu_title: (cp_node>"menu-title").text,
|
|
||||||
content: (cp_node>"content").text
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
if @pages.present?
|
|
||||||
@i=0
|
|
||||||
@pages.each do |b|
|
|
||||||
|
|
||||||
get_variables_for_new
|
|
||||||
@page = Page.new
|
|
||||||
|
|
||||||
@page.parent = "4f45f3b9e9d02c5db900005d"
|
|
||||||
@page.design = "50ac424983e75219d2000021"
|
|
||||||
@page.theme_id = "50ac424a83e75219d2000025"
|
|
||||||
@page.menu_enabled_for= ["en", "zh_tw", ""]
|
|
||||||
@page.enabled_for= ["en", "zh_tw", ""]
|
|
||||||
@page.is_published = false
|
|
||||||
if b[:menu_title].blank?
|
|
||||||
@page.title = 'No Title Present'
|
|
||||||
@i += 1
|
|
||||||
@page.name = "#{@i}Page"
|
|
||||||
else
|
|
||||||
@i += 1
|
|
||||||
@page.title = b[:menu_title]
|
|
||||||
@page.name = "#{@i}Page"
|
|
||||||
end
|
|
||||||
if b[:content].blank?
|
|
||||||
@page.content = "No Content Present"
|
|
||||||
else
|
|
||||||
@page.content = b[:content]
|
|
||||||
end
|
|
||||||
@page.save!
|
|
||||||
end
|
|
||||||
else
|
|
||||||
puts "No Page Data"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def get_variables_for_new
|
|
||||||
@designs = Design.all.entries
|
|
||||||
@themes = Design.first.themes
|
|
||||||
@module_apps = ModuleApp.for_frontend_select
|
|
||||||
@app_frontend_urls = nil
|
|
||||||
@categories = nil
|
|
||||||
@tags = nil
|
|
||||||
@page_frontend_data_counts = nil
|
|
||||||
@frontend_styles = nil
|
|
||||||
@selected={
|
|
||||||
:design => @designs.first,
|
|
||||||
:theme=> @themes.first,
|
|
||||||
:module_app=>nil,#@module_apps.first
|
|
||||||
:app_frontend_url=> nil, #@module_apps.first
|
|
||||||
:category=>nil,
|
|
||||||
:tag=>nil,
|
|
||||||
:page_frontend_data_count=>nil,
|
|
||||||
:frontend_style => nil
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -27,8 +27,8 @@ class Admin::ItemsController < OrbitBackendController
|
|||||||
|
|
||||||
def update_position
|
def update_position
|
||||||
item = Item.find(params[:id])
|
item = Item.find(params[:id])
|
||||||
item.shift_to(params[:parent_id], params[:position].to_i - 1)
|
item.shift_to(params[:parent_id], params[:position])
|
||||||
render :nothing => true, status: 200
|
render :nothing => true
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
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
|
def index
|
||||||
|
|
||||||
@plugins = OrbitApp::Plugin::Registration.all
|
@plugins = OrbitApp::Plugin::Registration.all
|
||||||
|
|
||||||
if(!params[:show_plugin_profile].nil?)
|
if(!params[:show_plugin_profile].nil?)
|
||||||
|
|
||||||
@right_partial = OrbitApp::Plugin::Registration.find_by_app_name(params[:show_plugin_profile]).admin_partial_path
|
@right_partial = OrbitApp::Plugin::Registration.find_by_key(params[:show_plugin_profile]).admin_partial_path
|
||||||
|
|
||||||
if !@right_partial.blank?
|
if !@right_partial.blank?
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { redirect_to( @right_partial ) }
|
format.html { redirect_to( @right_partial ) }
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@right_partial = ""
|
@right_partial = ""
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
@right_partial = ""
|
@right_partial = ""
|
||||||
|
|||||||
@@ -55,15 +55,6 @@ class Admin::SitesController < OrbitBackendController
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def search_engine
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
def preference
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def ui_theme
|
def ui_theme
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
class Admin::TagsController < OrbitBackendController
|
class Admin::TagsController < OrbitBackendController
|
||||||
include OrbitTag::Merging
|
include OrbitTag::Merging
|
||||||
|
|
||||||
|
before_filter :force_order_for_visitor, only: [:index]
|
||||||
|
before_filter :force_order_for_user, except: [:index]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@tags = @module_app.module_tags
|
@tags = @module_app.module_tags
|
||||||
|
|||||||
@@ -1,10 +1,19 @@
|
|||||||
class Admin::UsersNewInterfaceController < OrbitMemberController
|
class Admin::UsersNewInterfaceController < OrbitMemberController
|
||||||
|
|
||||||
helper MemberHelper
|
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]
|
before_filter :set_attribute,:except => [:index,:show]
|
||||||
open_for_visitor :only => [: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
|
||||||
|
|
||||||
def index
|
def index
|
||||||
get_tags
|
get_tags
|
||||||
@@ -17,64 +26,50 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
|
|||||||
|
|
||||||
|
|
||||||
@filter = params[:filter]
|
@filter = params[:filter]
|
||||||
@mq = params[:mq]
|
new_filter = params[:new_filter]
|
||||||
@new_filter = params[:new_filter]
|
|
||||||
|
|
||||||
if @filter && params[:clear]
|
if @filter && params[:clear]
|
||||||
@filter.delete(params[:type])
|
@filter.delete(params[:type])
|
||||||
elsif @filter && @new_filter
|
elsif @filter && new_filter
|
||||||
if @filter.has_key?(@new_filter[:type]) && @filter[@new_filter[:type]].include?(@new_filter[:id].to_s)
|
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)
|
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
|
||||||
elsif @filter.has_key?(@new_filter[:type])
|
elsif @filter.has_key?(new_filter[:type])
|
||||||
@filter[@new_filter[:type]] << @new_filter[:id].to_s
|
@filter[new_filter[:type]] << new_filter[:id].to_s
|
||||||
else
|
else
|
||||||
@filter.merge!({@new_filter[:type] => [@new_filter[:id].to_s]})
|
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
|
||||||
end
|
end
|
||||||
elsif @new_filter
|
elsif new_filter
|
||||||
@filter = {@new_filter[:type] => [@new_filter[:id].to_s]}
|
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if @filter.blank? and @mq.blank?
|
if @filter.blank?
|
||||||
|
|
||||||
render case params[:at]
|
render case params[:at]
|
||||||
when 'summary'
|
when 'summary'
|
||||||
@users=User.not_guest_user.page(page_num).per(12).desc("_id").includes('avatar')
|
@users=User.not_guest_user.page(page_num).per(12).asc("_id").includes('avatar')
|
||||||
"index_summary"
|
"index_summary"
|
||||||
when 'thumbnail'
|
when 'thumbnail'
|
||||||
@users=User.not_guest_user.page(page_num).per(36).desc("_id").includes('avatar')
|
@users=User.not_guest_user.page(page_num).per(36).asc("_id").includes('avatar')
|
||||||
"index_thumbnail"
|
"index_thumbnail"
|
||||||
else
|
else
|
||||||
@users=User.not_guest_user.page(page_num).per(10).desc("_id").includes('avatar')
|
@users=User.not_guest_user.page(page_num).per(10).asc("_id").includes('avatar')
|
||||||
"index"
|
"index"
|
||||||
end
|
end
|
||||||
|
|
||||||
elsif @filter.blank? and !@mq.blank?
|
else
|
||||||
|
|
||||||
render case params[:at]
|
render case params[:at]
|
||||||
when 'summary'
|
when 'summary'
|
||||||
@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')
|
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(12).asc("_id").includes('avatar')
|
||||||
"index_summary"
|
"index_summary"
|
||||||
when 'thumbnail'
|
when 'thumbnail'
|
||||||
@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')
|
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(36).asc("_id").includes('avatar')
|
||||||
"index_thumbnail"
|
"index_thumbnail"
|
||||||
else
|
else
|
||||||
@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')
|
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(10).asc("_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"
|
"index"
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -83,18 +78,9 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|
||||||
@user = User.find(params[:id])
|
@user = User.find(params[:id])
|
||||||
|
|
||||||
@plugins = OrbitApp::Plugin::Registration.all
|
@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 = []
|
@profile_data = []
|
||||||
@teacher_data = []
|
@teacher_data = []
|
||||||
@student_data = []
|
@student_data = []
|
||||||
@@ -107,11 +93,9 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
|
|||||||
|
|
||||||
|
|
||||||
if(!params[:show_plugin_profile].nil?)
|
if(!params[:show_plugin_profile].nil?)
|
||||||
@right_partial = OrbitApp::Plugin::Registration.find_by_app_name(params[:show_plugin_profile]).profile_partial_path rescue 'plugin_summary'
|
@right_partial = OrbitApp::Plugin::Registration.find_by_key(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
|
else
|
||||||
@right_partial = "plugin_summary"
|
@right_partial = "plugin_summary"
|
||||||
@plugin_app_name = ''
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# @user.attribute_values.each{|att_val|
|
# @user.attribute_values.each{|att_val|
|
||||||
@@ -241,67 +225,7 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
|
|||||||
@user.destroy
|
@user.destroy
|
||||||
end
|
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
|
|
||||||
elsif to_go > User.count
|
|
||||||
user.move_to_bottom
|
|
||||||
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
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class ApplicationController < ActionController::Base
|
|||||||
helper_attr :site_valid_locales
|
helper_attr :site_valid_locales
|
||||||
|
|
||||||
def check_backend_openness
|
def check_backend_openness
|
||||||
if Site.first.backend_openness_on
|
if !Me.backend_openness_on
|
||||||
redirect_to '/users/sign_in' if not (authenticate_user! and is_member? )
|
redirect_to '/users/sign_in' if not (authenticate_user! and is_member? )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -145,14 +145,11 @@ class ApplicationController < ActionController::Base
|
|||||||
condition = VALID_LOCALES.include?(session[:locale])
|
condition = VALID_LOCALES.include?(session[:locale])
|
||||||
elsif session[:locale]
|
elsif session[:locale]
|
||||||
condition = @site.in_use_locales.include?(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
|
else
|
||||||
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first rescue nil
|
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first rescue nil
|
||||||
condition = @site.in_use_locales.include?(browser_locale)
|
condition = @site.in_use_locales.include?(browser_locale)
|
||||||
end
|
end
|
||||||
session[:locale] = condition ? (default_locale || browser_locale || session[:locale]) : I18n.default_locale.to_s
|
session[:locale] = condition ? (browser_locale || session[:locale]) : I18n.default_locale.to_s
|
||||||
I18n.locale = session[:locale].to_sym
|
I18n.locale = session[:locale].to_sym
|
||||||
@site_in_use_locales = site_locales_default_head(@site.in_use_locales)
|
@site_in_use_locales = site_locales_default_head(@site.in_use_locales)
|
||||||
@site_valid_locales = site_locales_default_head(@site.valid_locales)
|
@site_valid_locales = site_locales_default_head(@site.valid_locales)
|
||||||
@@ -321,7 +318,7 @@ class ApplicationController < ActionController::Base
|
|||||||
a << object if (value.include?(object.category.id.to_s) rescue nil)
|
a << object if (value.include?(object.category.id.to_s) rescue nil)
|
||||||
end
|
end
|
||||||
objects = a.uniq
|
objects = a.uniq
|
||||||
when 'tags'
|
when 'tag'
|
||||||
a = Array.new
|
a = Array.new
|
||||||
objects.each do |object|
|
objects.each do |object|
|
||||||
object.tags.each do |tag|
|
object.tags.each do |tag|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
class DesktopAppsController < ApplicationController
|
class DesktopAppsController < OrbitBackendController
|
||||||
require "net/http"
|
require "net/http"
|
||||||
require "uri"
|
require "uri"
|
||||||
require 'zip/zip'
|
require 'zip/zip'
|
||||||
|
|||||||
@@ -1,16 +1,12 @@
|
|||||||
class DesktopController< ApplicationController
|
class DesktopController< ApplicationController
|
||||||
layout 'desktop'
|
layout 'desktop'
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
before_filter :check_desktop_open, :only => [:index,:show]
|
|
||||||
|
|
||||||
#to load pages...
|
#to load pages...
|
||||||
|
|
||||||
# caches_page :index
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@desktop = current_user.desktop
|
@desktop = current_user.desktop
|
||||||
@currentusername = current_user.name
|
@currentusername = current_user.name
|
||||||
@currentname = current_user.first_name + current_user.last_name
|
|
||||||
@title = "Desktop - " + @currentusername
|
@title = "Desktop - " + @currentusername
|
||||||
@section = @desktop.sections.first
|
@section = @desktop.sections.first
|
||||||
end
|
end
|
||||||
@@ -339,14 +335,7 @@ class DesktopController< ApplicationController
|
|||||||
b = {"success"=>"true"}
|
b = {"success"=>"true"}
|
||||||
render :json=>b.to_json
|
render :json=>b.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def check_desktop_open
|
|
||||||
if Me.desktop_closed && current_user.nil? #Need to be change
|
|
||||||
redirect_to '/admin/dashboards'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
class DesktopThemesController < ApplicationController
|
class DesktopThemesController < OrbitBackendController
|
||||||
require "net/http"
|
require "net/http"
|
||||||
require "uri"
|
require "uri"
|
||||||
require 'zip/zip'
|
require 'zip/zip'
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
class DesktopWidgetsController < ApplicationController
|
class DesktopWidgetsController < OrbitBackendController
|
||||||
require "net/http"
|
require "net/http"
|
||||||
require "uri"
|
require "uri"
|
||||||
require 'zip/zip'
|
require 'zip/zip'
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ class FrontController < ApplicationController
|
|||||||
res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page))
|
res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page))
|
||||||
res << "'>"
|
res << "'>"
|
||||||
root = "/"
|
root = "/"
|
||||||
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>"
|
res << "<a href='#{(page.class.to_s.eql?('Page') ? root + page.path : page.url)}'><span>#{page.title}</span></a>"
|
||||||
if page.visible_children.size > 0 && current < menu.levels
|
if page.visible_children.size > 0 && current < menu.levels
|
||||||
res << "<span class='dot'></span>"
|
res << "<span class='dot'></span>"
|
||||||
res << menu_level(page, current_page, current + 1, menu)
|
res << menu_level(page, current_page, current + 1, menu)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
class OrbitBackendController < ApplicationController
|
class OrbitBackendController < ApplicationController
|
||||||
include OrbitCategory::Categorizing
|
include OrbitCategory::Categorizing
|
||||||
include OrbitCoreLib::Authorization
|
include OrbitCoreLib::AppBackendUtility
|
||||||
|
include OrbitCoreLib::PermissionUtility
|
||||||
include OrbitTag::Tagging
|
include OrbitTag::Tagging
|
||||||
include AdminHelper
|
include AdminHelper
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
@@ -9,6 +10,12 @@ class OrbitBackendController < ApplicationController
|
|||||||
|
|
||||||
layout "back_end"
|
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
|
def get_statuses
|
||||||
status = []
|
status = []
|
||||||
status << 'is_top'
|
status << 'is_top'
|
||||||
@@ -21,4 +28,27 @@ class OrbitBackendController < ApplicationController
|
|||||||
end
|
end
|
||||||
status
|
status
|
||||||
end
|
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
|
end
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
class OrbitMemberController < ApplicationController
|
class OrbitMemberController < ApplicationController
|
||||||
include OrbitCategory::Categorizing
|
include OrbitCategory::Categorizing
|
||||||
include OrbitCoreLib::Authorization
|
include OrbitCoreLib::AppBackendUtility
|
||||||
|
include OrbitCoreLib::PermissionUtility
|
||||||
include OrbitTag::Tagging
|
include OrbitTag::Tagging
|
||||||
include AdminHelper
|
include AdminHelper
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
@@ -9,6 +10,12 @@ class OrbitMemberController < ApplicationController
|
|||||||
|
|
||||||
layout "member"
|
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
|
def get_statuses
|
||||||
status = []
|
status = []
|
||||||
status << 'is_top'
|
status << 'is_top'
|
||||||
@@ -21,4 +28,27 @@ class OrbitMemberController < ApplicationController
|
|||||||
end
|
end
|
||||||
status
|
status
|
||||||
end
|
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
|
end
|
||||||
@@ -4,6 +4,12 @@ class PagesController < ApplicationController
|
|||||||
before_filter :check_frontend_open, :only => [:index,:show]
|
before_filter :check_frontend_open, :only => [:index,:show]
|
||||||
# caches_page :index
|
# 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
|
def index
|
||||||
@item = Page.find_by_name('home')
|
@item = Page.find_by_name('home')
|
||||||
|
|
||||||
@@ -111,12 +117,6 @@ class PagesController < ApplicationController
|
|||||||
end
|
end
|
||||||
raise PageError,'Missing Frontend Page' if @item.nil?
|
raise PageError,'Missing Frontend Page' if @item.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_frontend_open
|
|
||||||
if !Site.first.frontend_closed && current_user.nil? #Need to be change
|
|
||||||
redirect_to '/admin/dashboards'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def save_from_no_lang_for_page
|
def save_from_no_lang_for_page
|
||||||
if @item.nil? or !@item.enabled_for_lang(I18n.locale.to_s)
|
if @item.nil? or !@item.enabled_for_lang(I18n.locale.to_s)
|
||||||
|
|||||||
@@ -7,5 +7,5 @@ module Admin::AssetsHelper
|
|||||||
end
|
end
|
||||||
a.join(' - ')
|
a.join(' - ')
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -271,7 +271,11 @@ module ApplicationHelper
|
|||||||
end
|
end
|
||||||
|
|
||||||
def show_avatar(user)
|
def show_avatar(user)
|
||||||
image_tag(user.avatar.thumb.url)
|
if (user.avatar? rescue false)
|
||||||
|
image_tag(user.avatar.thumb.url)
|
||||||
|
else
|
||||||
|
image_tag "person.png"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# NTU link
|
# NTU link
|
||||||
|
|||||||
@@ -34,8 +34,7 @@ module AttributeFieldsHelper
|
|||||||
value = (can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value) rescue nil
|
value = (can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value) rescue nil
|
||||||
key_field = can_muti_lang_input? ? "[#{key}]" : ""
|
key_field = can_muti_lang_input? ? "[#{key}]" : ""
|
||||||
place_holder= @panel_setting["placeholder"][key] rescue ''
|
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 {}
|
add_ext= @attribute_value.address_ext[key] rescue {}
|
||||||
|
|
||||||
@@ -182,7 +181,7 @@ protected
|
|||||||
def lang_panel_tabbable_wrapper(add_more_params,&block)
|
def lang_panel_tabbable_wrapper(add_more_params,&block)
|
||||||
add_more_counter = ''
|
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|
|
tmp1 = VALID_LOCALES.collect do |key|
|
||||||
value = @prefiled_value[key] rescue nil
|
value = @prefiled_value[key] rescue nil
|
||||||
@@ -262,7 +261,7 @@ protected
|
|||||||
link_to(I18nVariable.from_locale(key),link_entry,:data=>{:toggle=>"tab"},:class=>"btn #{(key == I18n.locale.to_s ? "active" : nil)}",:for=>key)
|
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
|
end # of VALID_LOCALES.collect for tabs
|
||||||
|
|
||||||
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-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-trash'),"#",:class=>"btn remove-input") if self.add_more
|
buff2 << link_to((content_tag :i,'',:class=>'icon-trash'),"#",:class=>"btn remove-input") if self.add_more
|
||||||
buff2.join.html_safe
|
buff2.join.html_safe
|
||||||
end # of content ul
|
end # of content ul
|
||||||
@@ -358,7 +357,7 @@ protected
|
|||||||
|
|
||||||
# address = content_tag :div,:class=>"multipleInput editMore" do
|
# address = content_tag :div,:class=>"multipleInput editMore" do
|
||||||
address = content_tag :div,:class=>"control-group" do
|
address = content_tag :div,:class=>"control-group" do
|
||||||
label + content_tag(:div, controls_wrapper(&block), :class=>'controls add-input')
|
label + content_tag(:div, controls_wrapper(&block), :class=>'controls')
|
||||||
end # of div multipleInput editMore
|
end # of div multipleInput editMore
|
||||||
|
|
||||||
result = address
|
result = address
|
||||||
@@ -453,7 +452,7 @@ protected
|
|||||||
def gen_modal_dialog
|
def gen_modal_dialog
|
||||||
render_anywhere("shared/attribute_field/address_modal_dialog",{
|
render_anywhere("shared/attribute_field/address_modal_dialog",{
|
||||||
:field_name=>title,
|
:field_name=>title,
|
||||||
:html_id=>"address-field",
|
:html_id=>"#{get_pairing_tab_class({})}_m_window",
|
||||||
:btn_class => "#{get_pairing_tab_class({})}",
|
:btn_class => "#{get_pairing_tab_class({})}",
|
||||||
:field_name_basic => get_basic_field_name_base
|
:field_name_basic => get_basic_field_name_base
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -321,9 +321,9 @@ module OrbitBackendHelper
|
|||||||
def is_authorized(object)
|
def is_authorized(object)
|
||||||
autorized = @module_app.authorizable_models.inject(false) do |autorized, klass|
|
autorized = @module_app.authorizable_models.inject(false) do |autorized, klass|
|
||||||
if object.is_a?(klass.constantize)
|
if object.is_a?(klass.constantize)
|
||||||
autorized ||= object.user_can_sub_manage?(current_user)
|
autorized ||= object.cur_user_is_sub_manager_of("#{klass.underscore}_#{@module_app.key}")
|
||||||
else
|
else
|
||||||
autorized ||= object.category.user_can_sub_manage?(current_user)
|
autorized ||= object.category.cur_user_is_sub_manager_of("category_#{@module_app.key}")
|
||||||
end
|
end
|
||||||
autorized
|
autorized
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ module OrbitFormHelper
|
|||||||
|
|
||||||
def date_picker(object_name, method, options)
|
def date_picker(object_name, method, options)
|
||||||
custom = {}
|
custom = {}
|
||||||
custom[:format] = options[:format] || 'yyyy/MM'
|
custom[:format] = 'yyyy-MM-dd'
|
||||||
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
|
custom[:value] = display_date(options[:value]) if options[:value]
|
||||||
custom[:picker_class] = 'date_picker'
|
custom[:picker_class] = 'date_picker'
|
||||||
custom[:label] = options[:label] || I18n.t('datetime_picker.date.label')
|
custom[:label] = options[:label] || I18n.t('datetime_picker.date.label')
|
||||||
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.date.placeholder')
|
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.date.placeholder')
|
||||||
@@ -44,8 +44,8 @@ module OrbitFormHelper
|
|||||||
|
|
||||||
def default_picker(object_name, method, options)
|
def default_picker(object_name, method, options)
|
||||||
custom = {}
|
custom = {}
|
||||||
custom[:format] = options[:format] || 'yyyy/MM/dd hh:mm'
|
custom[:format] = 'yyyy-MM-dd hh:mm'
|
||||||
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
|
custom[:value] = display_date_time(options[:value]) if options[:value]
|
||||||
custom[:picker_class] = 'default_picker'
|
custom[:picker_class] = 'default_picker'
|
||||||
custom[:label] = options[:label] || I18n.t('datetime_picker.default.label')
|
custom[:label] = options[:label] || I18n.t('datetime_picker.default.label')
|
||||||
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.default.placeholder')
|
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.default.placeholder')
|
||||||
@@ -54,8 +54,8 @@ module OrbitFormHelper
|
|||||||
|
|
||||||
def time_picker(object_name, method, options)
|
def time_picker(object_name, method, options)
|
||||||
custom = {}
|
custom = {}
|
||||||
custom[:format] = options[:format] || 'hh:mm'
|
custom[:format] = 'hh:mm'
|
||||||
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
|
custom[:value] = display_time(options[:value]) if options[:value]
|
||||||
custom[:picker_class] = 'time_picker'
|
custom[:picker_class] = 'time_picker'
|
||||||
custom[:label] = options[:label] || I18n.t('datetime_picker.time.label')
|
custom[:label] = options[:label] || I18n.t('datetime_picker.time.label')
|
||||||
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.time.placeholder')
|
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.time.placeholder')
|
||||||
@@ -93,10 +93,6 @@ module OrbitFormHelper
|
|||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
||||||
module Orbit::FormBuilder
|
module Orbit::FormBuilder
|
||||||
|
|||||||
@@ -5,16 +5,13 @@ class Asset
|
|||||||
include OrbitTag::Taggable
|
include OrbitTag::Taggable
|
||||||
|
|
||||||
mount_uploader :data, FileAssetUploader
|
mount_uploader :data, FileAssetUploader
|
||||||
before_save :update_asset_attributes
|
|
||||||
|
|
||||||
field :filename
|
field :filename
|
||||||
field :description, localize: true
|
field :description, localize: true
|
||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
field :content_type
|
|
||||||
field :file_size
|
|
||||||
|
|
||||||
validates :title, :at_least_one => true
|
validates :title, :at_least_one => true
|
||||||
|
validates :description, :at_least_one => true
|
||||||
validates_presence_of :data
|
validates_presence_of :data
|
||||||
|
|
||||||
|
|
||||||
@@ -24,14 +21,6 @@ class Asset
|
|||||||
before_save :clean_tags
|
before_save :clean_tags
|
||||||
|
|
||||||
protected
|
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
|
def clean_tags
|
||||||
self.tagged_ids.delete('')
|
self.tagged_ids.delete('')
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
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
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
class AuthManager < Authorization
|
|
||||||
# belongs_to :manager_authorizable, polymorphic: true
|
|
||||||
has_and_belongs_to_many :authorized_users, class_name: 'User', inverse_of: 'managing_apps'
|
|
||||||
end
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
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
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
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
|
class Category
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
include OrbitModel::Authorizable
|
include OrbitCoreLib::ObjectAuthable
|
||||||
|
|
||||||
field :disable, type: Boolean, default: false
|
field :disable, type: Boolean, default: false
|
||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class Ckeditor::Asset
|
||||||
|
include Ckeditor::Orm::Mongoid::AssetBase
|
||||||
|
|
||||||
|
delegate :url, :current_path, :size, :content_type, :filename, :to => :data
|
||||||
|
|
||||||
|
validates_presence_of :data
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class Ckeditor::Picture < Ckeditor::Asset
|
||||||
|
mount_uploader :data, CkeditorPictureUploader, :mount_on => :data_file_name
|
||||||
|
|
||||||
|
def url_content
|
||||||
|
url(:content)
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -45,10 +45,9 @@ class Item
|
|||||||
end
|
end
|
||||||
|
|
||||||
def shift_to(new_parent, position)
|
def shift_to(new_parent, position)
|
||||||
position = position.to_i
|
unless self.parent_id.to_s.eql?(new_parent) && self.position.eql?(position.to_i)
|
||||||
unless self.parent_id.to_s.eql?(new_parent) && self.position == position
|
|
||||||
new_parent = Item.find(new_parent)
|
new_parent = Item.find(new_parent)
|
||||||
current_position_sibling = find_by_parent_and_position(new_parent, position)
|
current_position_sibling = find_by_parent_and_position(new_parent, position.to_i)
|
||||||
if current_position_sibling
|
if current_position_sibling
|
||||||
move_above(current_position_sibling)
|
move_above(current_position_sibling)
|
||||||
elsif self.parent != new_parent
|
elsif self.parent != new_parent
|
||||||
|
|||||||
@@ -1,26 +1,16 @@
|
|||||||
class ModuleApp
|
class ModuleApp
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
# include OrbitCoreLib::ObjectTokenUtility
|
include OrbitCoreLib::ObjectTokenUtility
|
||||||
# include OrbitApp::ModuleAppMembershipTools
|
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 :key
|
||||||
field :title
|
field :title
|
||||||
field :sidebar_order,type: Integer,default: 0
|
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 :categories, dependent: :destroy
|
||||||
has_many :module_tags, 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)
|
def refetch_setting!(reg)
|
||||||
# %w{module_label category base_url version organization author intro update_info create_date}.each do |field|
|
# %w{module_label category base_url version organization author intro update_info create_date}.each do |field|
|
||||||
# self[field.to_sym] = reg.send field
|
# self[field.to_sym] = reg.send field
|
||||||
@@ -34,7 +24,6 @@ class ModuleApp
|
|||||||
self[:has_category] = reg.get_has_category
|
self[:has_category] = reg.get_has_category
|
||||||
self[:is_approvable] = reg.get_is_approvable
|
self[:is_approvable] = reg.get_is_approvable
|
||||||
self[:is_authorizable] = reg.get_is_authorizable
|
self[:is_authorizable] = reg.get_is_authorizable
|
||||||
self[:approvable_models] = reg.get_approvable_models
|
|
||||||
self[:authorizable_models] = reg.get_authorizable_models
|
self[:authorizable_models] = reg.get_authorizable_models
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -179,71 +168,4 @@ class ModuleApp
|
|||||||
self.module_tags.map{|t| t.tag }
|
self.module_tags.map{|t| t.tag }
|
||||||
end
|
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
|
end
|
||||||
@@ -14,12 +14,10 @@ class Site
|
|||||||
|
|
||||||
field :frontend_closed, :type => Boolean, :default => false
|
field :frontend_closed, :type => Boolean, :default => false
|
||||||
field :backend_openness_on, :type => Boolean, :default => false
|
field :backend_openness_on, :type => Boolean, :default => false
|
||||||
field :desktop_closed, :type => Boolean, :default => false
|
|
||||||
|
|
||||||
field :title_always_on, :type => Boolean, :default => false
|
field :title_always_on, :type => Boolean, :default => false
|
||||||
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
field :dashbroad_allow_visitor, :type => Boolean, :default => false
|
||||||
field :mail_settings, :type => Hash
|
field :mail_settings, :type => Hash
|
||||||
field :enabled_for, :type => Array, :default => nil
|
|
||||||
|
|
||||||
field :disk_space, :type => String
|
field :disk_space, :type => String
|
||||||
field :system_package_info, :type => Hash,:default=>{}
|
field :system_package_info, :type => Hash,:default=>{}
|
||||||
@@ -34,12 +32,9 @@ class Site
|
|||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
field :footer, localize: true
|
field :footer, localize: true
|
||||||
field :sub_menu, localize: true
|
field :sub_menu, localize: true
|
||||||
field :terms_of_user, localize: true
|
|
||||||
field :google_analytics
|
|
||||||
field :default_locale
|
|
||||||
|
|
||||||
field :mobile_on, :type => Boolean, :default => false
|
field :mobile_on, :type => Boolean, :default => false
|
||||||
|
|
||||||
belongs_to :design
|
belongs_to :design
|
||||||
has_many :site_metas, :autosave => true, :dependent => :destroy
|
has_many :site_metas, :autosave => true, :dependent => :destroy
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
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,15 +1,13 @@
|
|||||||
class User
|
class User
|
||||||
|
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Tree
|
|
||||||
include Mongoid::Tree::Ordering # use mongoid-tree because mongoid-ordering needs mongoid(~>3.0)
|
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
|
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
|
||||||
|
|
||||||
mount_uploader :avatar, AvatarUploader
|
mount_uploader :avatar, AvatarUploader
|
||||||
|
|
||||||
field :admin, :type => Boolean, :default => false
|
field :admin, :type => Boolean, :default => true
|
||||||
field :active_role
|
field :active_role
|
||||||
field :user_id
|
field :user_id
|
||||||
field :sid
|
field :sid
|
||||||
@@ -21,38 +19,29 @@ class User
|
|||||||
field :cache_dept,type: Hash
|
field :cache_dept,type: Hash
|
||||||
field :status_record,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 :attribute_values, :autosave => true, :dependent => :destroy
|
||||||
has_many :app_auths,as: :privilege_apps,:inverse_of => :privilege_lists
|
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 :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 :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 :desktop, :autosave => true, :dependent => :destroy
|
||||||
has_one :facebook, :autosave => true, :dependent => :destroy
|
has_one :facebook, :autosave => true, :dependent => :destroy
|
||||||
has_many :other_accounts, :autosave => true, :dependent => :destroy
|
has_many :other_accounts, :autosave => true, :dependent => :destroy
|
||||||
has_many :assets, as: :assetable
|
|
||||||
# has_many :journals, :autosave => true, :dependent => :destroy
|
# has_many :journals, :autosave => true, :dependent => :destroy
|
||||||
# has_many :papers, :autosave => true, :dependent => :destroy
|
# has_many :papers, :autosave => true, :dependent => :destroy
|
||||||
has_and_belongs_to_many :sub_role_tags
|
has_and_belongs_to_many :sub_role_tags
|
||||||
|
|
||||||
has_many :user_actions, :dependent => :destroy
|
has_many :user_actions, :dependent => :destroy
|
||||||
|
|
||||||
has_many :personal_plugin_intro
|
|
||||||
|
|
||||||
# has_and_belongs_to_many :statuses
|
# has_and_belongs_to_many :statuses
|
||||||
has_and_belongs_to_many :roles
|
has_and_belongs_to_many :roles
|
||||||
has_and_belongs_to_many :sub_roles
|
has_and_belongs_to_many :sub_roles
|
||||||
has_and_belongs_to_many :role_statuses
|
has_and_belongs_to_many :role_statuses
|
||||||
has_and_belongs_to_many :role_categorys
|
has_and_belongs_to_many :role_categorys
|
||||||
|
|
||||||
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
|
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
|
||||||
|
|
||||||
before_create :initialize_desktop
|
before_create :initialize_desktop
|
||||||
before_save :assign_default_position, :if => :assign_default_position?
|
|
||||||
before_save :rebuild_status_record
|
before_save :rebuild_status_record
|
||||||
scope :remote_account, where(:nccu_id.ne => nil)
|
scope :remote_account, where(:nccu_id.ne => nil)
|
||||||
scope :not_guest_user, all_of(:name.ne => "guest")
|
scope :not_guest_user, all_of(:name.ne => "guest")
|
||||||
@@ -100,9 +89,9 @@ class User
|
|||||||
var[:id].each do |id,val|
|
var[:id].each do |id,val|
|
||||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||||
if (val=="true")
|
if (val=="true")
|
||||||
self.role_ids.reject!{|t| t.to_s == id}
|
self.roles = self.roles.reject{|t| t.id.to_s==id}
|
||||||
elsif(val=="false")
|
elsif(val=="false")
|
||||||
self.role_ids += Array(id)
|
self.roles << Role.find(id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -117,9 +106,9 @@ class User
|
|||||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||||
|
|
||||||
if ( self.roles.include?(@roid) == false or val=="true")
|
if ( self.roles.include?(@roid) == false or val=="true")
|
||||||
self.sub_role_ids.reject!{|t| t.to_s == id}
|
self.sub_roles = self.sub_roles.reject{|t| t.id.to_s==id}
|
||||||
elsif(val=="false")
|
elsif(val=="false")
|
||||||
self.sub_role_ids += Array(id)
|
self.sub_roles << SubRole.find(id)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -284,13 +273,13 @@ class User
|
|||||||
end
|
end
|
||||||
|
|
||||||
def managed_module_apps
|
def managed_module_apps
|
||||||
self.managing_apps.inject([]) do |managed_apps, auth_manager|
|
self.managing_apps.inject([]) do |managed_apps, app_manager|
|
||||||
managed_apps << auth_manager.module_app
|
managed_apps << app_manager.managing_app unless app_manager.managing_app.blank?
|
||||||
managed_apps
|
managed_apps
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
protected
|
||||||
|
|
||||||
def rebuild_status_record
|
def rebuild_status_record
|
||||||
self.status_record = {}
|
self.status_record = {}
|
||||||
@@ -300,9 +289,4 @@ class User
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# override mongoid-tree's method
|
|
||||||
def assign_default_position?
|
|
||||||
!self['name'].eql?('guest') && (self.position.nil? || self.parent_id_changed?)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -21,9 +21,6 @@ class AvatarUploader < CarrierWave::Uploader::Base
|
|||||||
# def default_url
|
# def default_url
|
||||||
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
||||||
# end
|
# end
|
||||||
def default_url
|
|
||||||
[version_name, (Site.first.default_image.file.url rescue "person.png")].compact.join('_')
|
|
||||||
end
|
|
||||||
|
|
||||||
# Process files as they are uploaded:
|
# Process files as they are uploaded:
|
||||||
# process :scale => [200, 300]
|
# process :scale => [200, 300]
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label muted">Banner</label>
|
<label class="control-label muted">Banner</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= select_tag 'ad_banner[id]',options_from_collection_for_select(AdBanner.all, "id", "title", @ad_image.ad_banner_id) , :class=>"input-medium" %>
|
<%= select_tag 'ad_banner[id]',options_from_collection_for_select(AdBanner.all, "id", "title",params[:ad_banner_id]) , :class=>"input-medium" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -244,7 +244,6 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- Form Actions -->
|
<!-- Form Actions -->
|
||||||
<%= f.hidden_field :id, :value => @ad_image.id %>
|
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<%= f.submit t("submit"),:class=>"btn btn-primary" %>
|
<%= f.submit t("submit"),:class=>"btn btn-primary" %>
|
||||||
<%= f.submit t("cancel"),:class=>"btn ",:type => 'reset' %>
|
<%= f.submit t("cancel"),:class=>"btn ",:type => 'reset' %>
|
||||||
|
|||||||
@@ -1,23 +1,16 @@
|
|||||||
<tr id="asset_<%= asset.id %>" class="with_action">
|
<tr id="asset_<%= asset.id %>" class="with_action">
|
||||||
|
<td><%= check_box_tag 'to_delete[]', asset.id, false, :class => "checkbox_in_list" %></td>
|
||||||
|
<td><%= asset.title rescue nil %></td>
|
||||||
<td>
|
<td>
|
||||||
<%= check_box_tag 'files[]', asset.id, false, :class => "checkbox_in_list" %>
|
|
||||||
<input type="hidden" value="<%= asset.data.url %>" id="url_<%= asset.id %>" />
|
|
||||||
<% @site_valid_locales.each_with_index do |locale, i| %>
|
|
||||||
<input type="hidden" value="<%= asset.description_translations[locale] rescue nil %>" id="<%= locale %>_desc_<%= asset.id %>" />
|
|
||||||
<input type="hidden" value="<%= asset.title_translations[locale] rescue nil %>" id="<%= locale %>_title_<%= asset.id %>" />
|
|
||||||
<% end %>
|
|
||||||
</td>
|
|
||||||
<td><%= asset.title_translations[I18n.locale.to_s] rescue nil %></td>
|
|
||||||
<!-- <td>
|
|
||||||
<i class="icons-pictures img-peview" rel="popover" data-content="<img src='<%= asset.data.url %>' />" data-original-title="<%= asset.data.filename %>"></i>
|
<i class="icons-pictures img-peview" rel="popover" data-content="<img src='<%= asset.data.url %>' />" data-original-title="<%= asset.data.filename %>"></i>
|
||||||
<div class="quick-edit">
|
<div class="quick-edit">
|
||||||
<ul class="nav nav-pills hide">
|
<ul class="nav nav-pills hide">
|
||||||
<li><%#= link_to t(:edit), edit_admin_asset_path(asset), :remote => true, :class => 'edit' %></li>
|
<li><%= link_to t(:edit), edit_admin_asset_path(asset), :remote => true, :class => 'edit' %></li>
|
||||||
<li class="dropdown"><%#= link_to t(:delete_), admin_asset_path(asset), :confirm => t('sure?'), :method => :delete, :class => 'delete' %></li>
|
<li class="dropdown"><%= link_to t(:delete_), admin_asset_path(asset), :confirm => t('sure?'), :method => :delete, :class => 'delete' %></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</td> -->
|
</td>
|
||||||
<!-- <td><%#= asset.data.file.content_type rescue nil %></td> -->
|
<td><%= asset.data.file.content_type rescue nil %></td>
|
||||||
<td><%= number_to_human_size(asset.data.file.file_length) rescue nil %></td>
|
<td><%= number_to_human_size(asset.data.file.file_length) rescue nil %></td>
|
||||||
<td><%= asset.description rescue nil %></td>
|
<td><%= asset.description rescue nil %></td>
|
||||||
<td>
|
<td>
|
||||||
@@ -29,7 +22,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
</tr>
|
||||||
<a href="<%= edit_admin_asset_path(asset) %>" class="editform">Edit</a>
|
|
||||||
</td>
|
<script type="text/javascript">
|
||||||
</tr>
|
$('.img-peview').popover({
|
||||||
|
delay: { show: 100, hide: 300 }
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -1,15 +1,18 @@
|
|||||||
<%= flash_messages %>
|
<div id='pop_up_content' class="main2">
|
||||||
<div class="modal-header">
|
<h1><%= t('editing.asset') %></h1>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h3><%= t('editing.asset') %></h3>
|
<%= flash_messages %>
|
||||||
</div>
|
|
||||||
<%= form_for @asset, :url => admin_asset_path(@asset), :remote => true do |f| %>
|
<%= form_for @asset, :url => admin_asset_path(@asset), :html => {:id => (is_html ? nil : 'ajaxForm'), :multipart => true } do |f| %>
|
||||||
<div class="modal-body" id="modal_body">
|
|
||||||
<%= f.error_messages %>
|
<%= f.error_messages %>
|
||||||
<%= render :partial => "form", :locals => { :f => f } %>
|
<%= render :partial => "form", :locals => { :f => f } %>
|
||||||
</div>
|
<div class="button_bar">
|
||||||
<div class="modal-footer">
|
<% if is_html %>
|
||||||
<a href="#" class="btn" data-dismiss="modal">Close</a>
|
<%= link_back %>
|
||||||
<%= f.submit t('submit'), class: 'btn btn-primary' %>
|
<%= f.submit t(:edit) %>
|
||||||
</div>
|
<% else %>
|
||||||
<% end %>
|
<a id='ajax_form_submit' class="btn btn-primary"><%= t(:update_) %></a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
@@ -1,46 +1,38 @@
|
|||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<ul class="nav nav-pills language-nav">
|
<label for="title" class="control-label"><%= t :title %></label>
|
||||||
<% @site_valid_locales.each_with_index do |locale, i| %>
|
<div class="controls">
|
||||||
<li <%= ( i == 0 ) ? "class=active" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
|
<%= f.fields_for :title_translations do |f| %>
|
||||||
<% end %>
|
<% @site_valid_locales.each do |locale| %>
|
||||||
</ul>
|
<%= content_tag :label do -%>
|
||||||
<% @site_valid_locales.each_with_index do |locale, i| %>
|
<div>
|
||||||
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
|
<%= I18nVariable.from_locale(locale) %>
|
||||||
<div class="control-group input-title">
|
<%= f.text_field locale, :class => "input-large", :value => (@asset.title_translations[locale] rescue nil) %>
|
||||||
<%= f.label :title , t('asset.title'), :class=>"control-label muted" %>
|
|
||||||
<div class="controls">
|
|
||||||
<%= f.fields_for :title_translations do |f| %>
|
|
||||||
<%= f.text_field locale, :class=>'post-title', :value => (@asset.title_translations[locale] rescue nil) %>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<% end %>
|
||||||
<div class="control-group input-content">
|
<% end %>
|
||||||
<%= f.label :description ,t('asset.description'), :class => "control-label muted" %>
|
|
||||||
<%= f.fields_for :description_translations do |f| %>
|
|
||||||
<div class="controls">
|
|
||||||
<div class="textarea">
|
|
||||||
<%= f.text_area locale, :style=>"width:100%;height:100px", :class => '', :value => (@asset.description_translations[locale] rescue nil) %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label muted">Tag</label>
|
|
||||||
<div class="controls" data-toggle="buttons-checkbox">
|
|
||||||
<% @tags.each do |tag| %>
|
|
||||||
<label class="checkbox inline btn <%= 'active' if @asset.tag_ids.include?(tag.id) %>">
|
|
||||||
<%= check_box_tag 'asset[tag_ids][]', tag.id, @asset.tag_ids.include?(tag.id)%>
|
|
||||||
<%= tag.name %>
|
|
||||||
</label>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label muted"><%= f.label :data, t(:data) %></label>
|
<label class="control-label"><%= f.label :category, t(:category) %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.select :asset_category_id, @asset_categories.collect{|t| [ t.title, t.id ]}, {}, :class => "input-large" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label"><%= t :tags %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<% @tags.each do |tag| %>
|
||||||
|
<%= content_tag :label, :class => "checkbox inline" do -%>
|
||||||
|
<%= check_box_tag 'asset[tag_ids][]', tag.id, @asset.tag_ids.include?(tag.id) %>
|
||||||
|
<%= tag.name %>
|
||||||
|
<%= hidden_field_tag 'asset[tag_ids][]', '' %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label"><%= f.label :data, t(:data) %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= f.file_field :data, :class => 'upload' %>
|
<%= f.file_field :data, :class => 'upload' %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<%= render_sort_bar(true, delete_admin_assets_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]),
|
||||||
|
['title', 'title','span4', :title],
|
||||||
|
['description', 'description', 'span1-2', :data],
|
||||||
|
['intro', 'intro', 'span1-2', :type],
|
||||||
|
['intro', 'intro', 'span1-2', :size],
|
||||||
|
['intro', 'intro', 'span1-2', :description],
|
||||||
|
['intro', 'intro', 'span1-2', :tags]).html_safe %>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<% if !request.xhr? %>
|
||||||
|
<textarea>
|
||||||
|
<% end %>
|
||||||
|
var returnurl = "<%= @asset.data.url %>";
|
||||||
|
var returntitle = "<%= show_all_fields(@asset, 'title') %>";
|
||||||
|
var returndescription = "<%= show_all_fields(@asset, 'description') %>";
|
||||||
|
var win = tinyMCEPopup.getWindowArg("window");
|
||||||
|
win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = returnurl;
|
||||||
|
if(win.document.getElementById(tinyMCEPopup.getWindowArg("alt")))
|
||||||
|
win.document.getElementById(tinyMCEPopup.getWindowArg("alt")).value = returndescription;
|
||||||
|
|
||||||
|
win.document.getElementById(tinyMCEPopup.getWindowArg("title")).value = returntitle;
|
||||||
|
if (typeof(win.ImageDialog) != "undefined") {
|
||||||
|
// we are, so update image dimensions...
|
||||||
|
if (win.ImageDialog.getImageData)
|
||||||
|
win.ImageDialog.getImageData();
|
||||||
|
|
||||||
|
// ... and preview if necessary
|
||||||
|
if (win.ImageDialog.showPreviewImage)
|
||||||
|
win.ImageDialog.showPreviewImage(returnurl);
|
||||||
|
}
|
||||||
|
tinyMCEPopup.close();
|
||||||
|
<% if !request.xhr? %>
|
||||||
|
</textarea>
|
||||||
|
<% end %>
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
$("#tbody_assets").html("<%= j render :partial => 'asset', :collection => @assets %>");
|
|
||||||
$("#asset_pagination").html("<%= j paginate @assets, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
|
|
||||||
@@ -1 +1,9 @@
|
|||||||
|
<% content_for :secondary do %>
|
||||||
|
<div class="assets_setup">
|
||||||
|
<ul class="list">
|
||||||
|
<li><%= link_to t('new.asset'), new_admin_asset_path, :remote => true, :class => 'button positive' %></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
<%= render :partial => 'edit', :locals => {:is_html => true} %>
|
<%= render :partial => 'edit', :locals => {:is_html => true} %>
|
||||||
@@ -1,382 +1,30 @@
|
|||||||
<style>
|
<%= render 'filter' %>
|
||||||
/* File Upload */
|
<table id="asset_sort_list" class="table main-list">
|
||||||
#upload-panel {
|
<thead>
|
||||||
clear: both;
|
<tr>
|
||||||
}
|
<th class="span1"></th>
|
||||||
#upload-panel iframe {
|
<th class="span4"></th>
|
||||||
width: 100%;
|
<th class="span1-2"></th>
|
||||||
border: none;
|
<th class="span1-2"></th>
|
||||||
}
|
<th class="span1-2"></th>
|
||||||
#fileupload {
|
<th class="span1-2"></th>
|
||||||
position: relative;
|
<th class="span1-2"></th>
|
||||||
clear: both;
|
</tr>
|
||||||
overflow: hidden;
|
</thead>
|
||||||
margin: 40px 0 15px;
|
<tbody id="tbody_assets" class="sort-holder">
|
||||||
height: 254px;
|
<%= render :partial => 'asset', :collection => @assets %>
|
||||||
border: 1px solid #d4d4d4;
|
</tbody>
|
||||||
border-radius: 4px;
|
</table>
|
||||||
background-color: #FDFDFD;
|
|
||||||
/*-webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, .15) inset;
|
|
||||||
box-shadow: 0px 0px 10px rgba(0, 0, 0, .15) inset;*/
|
|
||||||
}
|
|
||||||
#fileupload table {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-buttonbar .navbar {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-buttonbar .navbar .add-photo {
|
|
||||||
border: none;
|
|
||||||
border-right: 1px solid #d4d4d4;
|
|
||||||
background-color: transparent;
|
|
||||||
padding: 10px 15px 10px;
|
|
||||||
color: #777777;
|
|
||||||
text-decoration: none;
|
|
||||||
text-shadow: 0 1px 0 #ffffff;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-buttonbar .navbar .add-photo:hover {
|
|
||||||
color: #333333;
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: #EDEDED;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-buttonbar .navbar .fileinput-button {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-buttonbar .navbar .fileinput-button input {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
margin: 0;
|
|
||||||
font-size: 23px;
|
|
||||||
opacity: 0;
|
|
||||||
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
|
||||||
filter: alpha(opacity=0);
|
|
||||||
cursor: pointer;
|
|
||||||
-webkit-transform: translate(-300px, 0) scale(4);
|
|
||||||
-moz-transform: translate(-300px, 0) scale(4);
|
|
||||||
-ms-transform: translate(-300px, 0) scale(4);
|
|
||||||
-o-transform: translate(-300px, 0) scale(4);
|
|
||||||
transform: translate(-300px, 0) scale(4);
|
|
||||||
direction: ltr;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-buttonbar .navbar-inner {
|
|
||||||
border-width: 0 0 1px;
|
|
||||||
border-radius: 4px 4px 0 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fileupload .fileupload-progress .progress {
|
<div class="form-actions form-fixed pagination-right">
|
||||||
position: absolute;
|
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:add), new_admin_asset_path, :remote => true, :class => 'btn btn-primary pull-right' %>
|
||||||
right: 0;
|
<div id="asset_pagination" class="paginationFixed">
|
||||||
left: 0;
|
<%= paginate @assets, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]}, :remote => true %>
|
||||||
margin-bottom: 0;
|
|
||||||
height: 5px;
|
|
||||||
border-radius: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-progress .progress-success.progress-striped .bar {
|
|
||||||
background-color: #0088CC;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-progress .progress-extended {
|
|
||||||
position: absolute;
|
|
||||||
top: 1px;
|
|
||||||
right: 0;
|
|
||||||
padding-right: 15px;
|
|
||||||
color: #0088CC;
|
|
||||||
text-align: right;
|
|
||||||
text-shadow: 0 1px 0 #ffffff;
|
|
||||||
letter-spacing: -0.1em;
|
|
||||||
font-size: 12px;
|
|
||||||
font-family: 'Varela Round', sans-serif;
|
|
||||||
line-height: 40px;
|
|
||||||
}
|
|
||||||
#fileupload .fileupload-buttonbar {
|
|
||||||
position: relative;
|
|
||||||
z-index: 3;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone {
|
|
||||||
margin: 15px 10px 10px;
|
|
||||||
padding: 30px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 2em;
|
|
||||||
font-family: 'Raleway';
|
|
||||||
line-height: 1.2em;
|
|
||||||
color: #e4e4e4;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone div[data-icons] {
|
|
||||||
font-size: 4em;
|
|
||||||
height: 70px;
|
|
||||||
padding-top: 30px;
|
|
||||||
text-shadow: 0px -1px 0px #ececec;
|
|
||||||
color: #f5f5f5;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone.drop {
|
|
||||||
position: absolute;
|
|
||||||
top: 37px;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
border: 2px dashed #0088CC;
|
|
||||||
border-radius: 10px;
|
|
||||||
color: #0088CC;
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone.fade {
|
|
||||||
opacity: .3;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone.in {
|
|
||||||
opacity: .7;
|
|
||||||
z-index: 2;
|
|
||||||
border-color: #faa732;
|
|
||||||
color: #faa732;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone.drop div[data-icons] {
|
|
||||||
text-shadow: 0px -1px 0px #0c5f80;
|
|
||||||
color: #0088CC;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone.in div[data-icons] {
|
|
||||||
text-shadow: 0px -1px 0px #a28a10;
|
|
||||||
color: #faa732;
|
|
||||||
}
|
|
||||||
#fileupload #file-list {
|
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
height: 209px;
|
|
||||||
margin: 2px 0;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .pane {
|
|
||||||
margin-right: 2px;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .files {
|
|
||||||
margin: 0;
|
|
||||||
padding: 10px 14px 10px 10px;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .files > li {
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .files > li:nth-child(even) {
|
|
||||||
background-color: #e9e9e9;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .files ul {
|
|
||||||
position: relative;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .files ul li {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .files ul li.action-bnt {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .preview {
|
|
||||||
width: 80px;
|
|
||||||
min-height: 1px;
|
|
||||||
margin-right: 10px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .name {
|
|
||||||
width: 150px;
|
|
||||||
max-width: 250px;
|
|
||||||
margin-left: 15px;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .progress {
|
|
||||||
position: absolute;
|
|
||||||
left: -5px;
|
|
||||||
right: -5px;
|
|
||||||
bottom: -5px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
height: 5px;
|
|
||||||
box-shadow: none;
|
|
||||||
background-color: transparent;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .size {
|
|
||||||
width: 80px;
|
|
||||||
}
|
|
||||||
#fileupload #file-list .action-bnt {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<ul class="nav nav-tabs module-nav">
|
|
||||||
<li class="active">
|
|
||||||
<a href="#filemanager" data-toggle="tab">File Manager</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#upload" data-toggle="tab">Upload</a></li>
|
|
||||||
</ul>
|
|
||||||
<div class="tab-pane fade in active" id="filemanager">
|
|
||||||
<a href="<%= admin_module_tags_path(:module_app_id => @module_app_id.to_s) %>"> Tag Management </a>
|
|
||||||
<div id="panel_l" style="width:200px;float:left;margin:5px 5px 5px 5px;">
|
|
||||||
preview is here
|
|
||||||
</div>
|
</div>
|
||||||
<div id="panel_r" class="tab-pane fade in active" style="width: 1200px;" >
|
|
||||||
<table id="asset_sort_list" class="table main-list">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th class="span1"></th>
|
|
||||||
<th class="span4">Name</th>
|
|
||||||
<th class="span1-2">Size</th>
|
|
||||||
<th class="span1-2">Description</th>
|
|
||||||
<th class="span2">Tags</th>
|
|
||||||
<th class="span1">Action</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody id="tbody_assets" class="sort-holder">
|
|
||||||
<%= render :partial => 'asset', :collection => @assets %>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="form-actions form-fixed pagination-right">
|
|
||||||
<button class="btn btn-primary" id="insert_btn" style="display:none;">Insert</button>
|
|
||||||
<button class="btn btn-primary" id="delete_btn" style="display:none;">Delete</button>
|
|
||||||
<div id="asset_pagination" class="paginationFixed">
|
|
||||||
<%= paginate @assets, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]}, :remote => true %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane fade" id="upload">
|
|
||||||
<form action="<%= file_upload_admin_assets_path %>", id='fileupload'>
|
|
||||||
<!-- Redirect browsers with JavaScript disabled to the origin page -->
|
|
||||||
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
|
|
||||||
<div class="fileupload-buttonbar">
|
|
||||||
<div class="navbar">
|
|
||||||
<div class="navbar-inner">
|
|
||||||
<ul class="nav">
|
|
||||||
<li>
|
|
||||||
<div class="fileinput-button add-photo">
|
|
||||||
<i class="icon-plus icon-white"></i>
|
|
||||||
<span>Add files...</span>
|
|
||||||
<input type="file" name="files[]" multiple>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<button type="submit" class="start add-photo">
|
|
||||||
<i class="icon-upload icon-white"></i>
|
|
||||||
<span>Start upload</span>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<button type="reset" class="cancel add-photo">
|
|
||||||
<i class="icon-ban-circle icon-white"></i>
|
|
||||||
<span>Cancel upload</span>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<!-- <li>
|
|
||||||
<button type="button" class="delete">
|
|
||||||
<i class="icons-trash icon-white"></i>
|
|
||||||
<span>Delete</span>
|
|
||||||
</button>
|
|
||||||
</li> -->
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- The global progress information -->
|
|
||||||
<div class="fileupload-progress">
|
|
||||||
<!-- The global progress bar -->
|
|
||||||
<div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
|
|
||||||
<div class="bar" style="width:0%;"></div>
|
|
||||||
</div>
|
|
||||||
<!-- The extended global progress information -->
|
|
||||||
<div class="progress-extended"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- Drop Zone -->
|
|
||||||
<div id="dropzone" class="drop">
|
|
||||||
<div data-icons=""></div>
|
|
||||||
Drop files here
|
|
||||||
</div>
|
|
||||||
<!-- The loading indicator is shown during file processing -->
|
|
||||||
<div class="fileupload-loading"></div>
|
|
||||||
<!-- The table listing the files available for upload/download -->
|
|
||||||
<div id="file-list" class="nano">
|
|
||||||
<div class="content">
|
|
||||||
<ul role="presentation" class="files clearfix">
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<div id="editform" class="modal hide fade">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% content_for :page_specific_javascript do %>
|
<% content_for :page_specific_javascript do %>
|
||||||
<%= javascript_include_tag "file-upload/vendor/jquery.ui.widget.js" %>
|
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
|
||||||
<%= javascript_include_tag "file-upload/tmpl.min.js" %>
|
<%= javascript_include_tag "inc/modal-preview" %>
|
||||||
<%= javascript_include_tag "file-upload/load-image.min.js" %>
|
|
||||||
<%= javascript_include_tag "file-upload/canvas-to-blob.min.js" %>
|
|
||||||
<%= javascript_include_tag "file-upload/jquery.iframe-transport.js" %>
|
|
||||||
<%= javascript_include_tag "file-upload/jquery.fileupload.js" %>
|
|
||||||
<%= javascript_include_tag "file-upload/jquery.fileupload-fp.js" %>
|
|
||||||
<%= javascript_include_tag "file-upload/jquery.fileupload-ui.js" %>
|
|
||||||
<%= javascript_include_tag "file-upload/drop-zone.js" %>
|
|
||||||
<%= javascript_include_tag "admin/filemanager.js" %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<script id="template-upload" type="text/x-tmpl">
|
|
||||||
{% for (var i=0, file; file=o.files[i]; i++) { %}
|
|
||||||
<li class="template-upload fade">
|
|
||||||
<ul class="clearfix">
|
|
||||||
<li class="action-bnt">
|
|
||||||
{% if (o.files.valid && !i) { %}
|
|
||||||
<div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
|
|
||||||
<div class="bar" style="width:0%;"></div>
|
|
||||||
</div>
|
|
||||||
{% if (!o.options.autoUpload) { %}
|
|
||||||
<button class="btn btn-primary start">
|
|
||||||
<i class="icon-upload icon-white"></i>
|
|
||||||
</button>
|
|
||||||
{% } %}
|
|
||||||
{% } %}
|
|
||||||
{% if (!i) { %}
|
|
||||||
<button class="btn btn-warning cancel">
|
|
||||||
<i class="icon-ban-circle icon-white"></i>
|
|
||||||
</button>
|
|
||||||
{% } %}
|
|
||||||
</li>
|
|
||||||
<li class="preview pull-left"><span class="fade"></span></li>
|
|
||||||
<li class="name-size">
|
|
||||||
<p>{%=file.name%}</p>
|
|
||||||
{% if (file.error) { %}
|
|
||||||
<p class="error"><span class="label label-important">Error</span> {%=file.error%}</p>
|
|
||||||
{% } else if (o.files.valid && !i) { %}
|
|
||||||
<p class="label label-info">{%=o.formatFileSize(file.size)%}</p>
|
|
||||||
{% } %}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
{% } %}
|
|
||||||
</script>
|
|
||||||
<!-- The template to display files available for download -->
|
|
||||||
<script id="template-download" type="text/x-tmpl">
|
|
||||||
{% for (var i=0, file; file=o.files[i]; i++) { %}
|
|
||||||
<li class="template-download fade">
|
|
||||||
<ul class="clearfix">
|
|
||||||
{% if (file.error) { %}
|
|
||||||
<li class="name-size">
|
|
||||||
<p>{%=file.name%}</p>
|
|
||||||
<p class="error"><span class="label label-important">Error</span> {%=file.error%}</p>
|
|
||||||
</li>
|
|
||||||
{% } else { %}
|
|
||||||
<li class="preview">
|
|
||||||
{% if (file.thumbnail_url) { %}
|
|
||||||
<a href="{%=file.url%}" title="{%=file.name%}" data-gallery="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
|
|
||||||
{% } %}
|
|
||||||
</li>
|
|
||||||
<li class="name-size">
|
|
||||||
<p><a href="{%=file.url%}" title="{%=file.name%}" data-gallery="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a></p>
|
|
||||||
<p ><span class="label label-success">Success</span> File uploaded successfully!</p>
|
|
||||||
<p class="label label-info">{%=o.formatFileSize(file.size)%}</p>
|
|
||||||
</li>
|
|
||||||
{% } %}
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
{% } %}
|
|
||||||
</script>
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
$("#delete_all").attr("action", "<%= delete_admin_assets_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>");
|
||||||
|
$("#sort_headers").html("<%= j render 'sort_headers' %>");
|
||||||
|
$("#tbody_assets").html("<%= j render :partial => 'asset', :collection => @assets %>");
|
||||||
|
$("#asset_pagination").html("<%= j paginate @assets, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
|
||||||
@@ -1 +0,0 @@
|
|||||||
<%= render :partial => 'asset', :object => @asset %>
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<li class="filter-item selected_user <%= 'check-item' unless user == current_user || user.admin %>" id="<%= user.id %>">
|
<li class="filter-item selected_user <%= 'check-item' unless user == current_user || is_admin? %>" id="<%= user.id %>">
|
||||||
<label>
|
<label>
|
||||||
<%= image_tag (user.avatar? ? user.avatar.thumb : 'menber-pic.png'), :class => "user-pic" %>
|
<%= image_tag (user.avatar? ? user.avatar.thumb : 'menber-pic.png'), :class => "user-pic" %>
|
||||||
<span class="user-name"><%= user.name %></span>
|
<span class="user-name"><%= user.name %></span>
|
||||||
<span><%= get_user_module_role(user) %></span>
|
<span><%= get_user_module_role(user) %></span>
|
||||||
</label>
|
</label>
|
||||||
<% unless user == current_user || user.admin %>
|
<% unless user == current_user || is_admin? %>
|
||||||
<input type="checkbox">
|
<input type="checkbox">
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
@@ -13,13 +13,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mini-layout-body span10">
|
<div class="mini-layout-body span10">
|
||||||
<%= link_to t(:module_authorization), admin_authorizations_path(@module_app.key) if @module_app.is_authorizable %>
|
<%= link_to t(:module_authorization), admin_authorizations_path(@module_app.key) %>
|
||||||
<% @module_app.authorizable_models.each do |authorizable_model| %>
|
<% @module_app.authorizable_models.each do |authorizable_model| %>
|
||||||
<%= link_to (authorizable_model.eql?('Category') ? t(:category_auth) : "#{authorizable_model.underscore.humanize.capitalize} #{t(:authorization_)}"), admin_authorizations_path(@module_app.key, type: "#{authorizable_model.underscore}_authorization") %>
|
<%= link_to (authorizable_model.eql?('Category') ? t(:category_auth) : "#{authorizable_model.underscore.humanize.capitalize} #{t(:authorization_)}"), admin_authorizations_path(@module_app.key, type: authorizable_model.underscore) %>
|
||||||
<% end %>
|
|
||||||
<% @module_app.approvable_models.each do |approvable_model| %>
|
|
||||||
<%= link_to (approvable_model.eql?('Category') ? t(:approval_) : "#{approvable_model.underscore.humanize.capitalize} #{t(:approval_)}"), admin_authorizations_path(@module_app.key, type: "#{approvable_model.underscore}_approval") %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<%= link_to t(:approval_), admin_authorizations_path(@module_app.key, type: 'approval') if @module_app.is_approvable %>
|
||||||
<% if @error %>
|
<% if @error %>
|
||||||
<%= @error %>
|
<%= @error %>
|
||||||
<% else %>
|
<% else %>
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
$("#card-list").append("<%= j render partial: 'user', collection: @users %>");
|
||||||
|
$("#member-filter").modal('hide');
|
||||||