Compare commits

..
2 Commits
Author SHA1 Message Date
harrybomrah 8b1702f358 isotope embedded inside desktop kernel 2013-08-28 16:30:08 +08:00
harrybomrah 4a68b1edb6 file title translations fixed 2013-08-21 13:46:04 +08:00
529 changed files with 5709 additions and 11852 deletions

No files matched your search

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

-102
View File
@@ -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);
})
+21 -33
View File
@@ -38,11 +38,7 @@ if($.support.touch) {
$checked.each(function() {
if(!$(this).closest('div').hasClass('togglebox')) {
$(this).wrap('<div class="toggle-control"/>');
if($(this).attr('type') == "hidden" && $(this).attr('value')) {
$(this).wrap('<div class="togglebox disabled" />');
} else {
$(this).wrap('<div class="togglebox" />');
}
$(this).wrap('<div class="togglebox" />');
$('<label><b></b></label>').insertAfter($(this));
if($(this).data().deploy) {
switch($(this).data().deploy) {
@@ -256,8 +252,8 @@ if($.support.touch) {
$arrow = $('.sub-nav-arrow'),
$wrap = $('#main-wrap'),
$wrapLeft = $wrap.css('margin-left'),
$position = $arrow.outerHeight(true)*-1,
$arrowHeightFormat = $arrow.outerHeight(true)/2;
$position = 0,
$arrowHeightFormat = $('.position').height()-8;
if($('#sidebar').length>0) {
$wrap.css({'margin-left': 61});
$wrapLeft = 61;
@@ -274,7 +270,7 @@ if($.support.touch) {
}
// 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({
'top': $position,
});
@@ -285,7 +281,7 @@ if($.support.touch) {
$el.on(mouseenterEvent, function(e) {
$block.siblings().removeClass('show').eq($(this).index()).addClass('show');
$arrow.stop(true, false).animate({
top: ($(this).position().top+$(this).height()/2)-$arrowHeightFormat+$('.scroller').position().top,
top: ($(this).offset().top-$(this).height()/2)+$arrowHeightFormat-$(document).scrollTop(),
},{
duration: 500,
easing: 'easeInOutBack',
@@ -329,7 +325,7 @@ if($.support.touch) {
})
};
// $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');
// });
$block.on({
@@ -376,9 +372,9 @@ if($.support.touch) {
if($elIndex === null) {
$position = $arrow.outerHeight(true)*-1;
$position = 0;
} 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({
top: $position,
@@ -413,8 +409,8 @@ if($.support.touch) {
});
// Sidebar Nav Drag
if(/MSIE 8.0/g.test($ua)){
$arrow.remove();
$sidebarMenu.addClass('nano')
.css({'position': 'relative', 'top': '0px'})
.children('.scroller')
.addClass('content')
.removeClass('scroller');
@@ -476,15 +472,6 @@ if($.support.touch) {
}(window.jQuery);
var ini = function() {
api = this
api.modal = function(e) {
$('#dialog a.delete-item').attr("href", e);
$('#dialog').modal('show');
}
}
var ini = function() {
api = this
api.modal = function(e) {
@@ -503,14 +490,15 @@ function openSlide() {
$(window).resize(function() {
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
})
if($('.item-groups').length) {
$os = $openSlide.not('.view-page');
$vp = $openSlide.filter('.view-page.open-slide');
$os.pageslide({ W: 624 });
$vp.pageslide({ W: $pageslideW, iframe: true });
} else {
$openSlide.pageslide();
};
$openSlide.each(function() {
if($(this).hasClass('view-page')) {
$(this).pageslide({ W: $pageslideW, iframe: true });
} else if($('.item-groups').length) {
$(this).pageslide({ W: 324 });
} else {
$(this).pageslide();
};
});
$('.bottomnav .open-slide').on('click', function() {
$('.table tr').removeClass('active');
$('.filter-item').removeClass('active')
@@ -518,8 +506,8 @@ function openSlide() {
}
function formTip() {
if($('.main-forms').length && $('.add-on').length || $('.phtot-action').length) {
$('.main-forms .add-on, .main-forms .file-link, .phtot-action li').tooltip({
if($('.main-forms').length && $('.add-on').length) {
$('.main-forms .add-on, .main-forms .file-link').tooltip({
position: {
my: "center bottom-4",
at: "center top"
@@ -577,7 +565,7 @@ $(function() {
if($('#sidebar').length) {
if(!/MSIE 8.0/g.test(navigator.userAgent)){
document.getElementById('sidebar').addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
}
};
}
if($('#pageslide').length) {
openSlide();
@@ -26,11 +26,10 @@ CKEDITOR.editorConfig = function( config ) {
// config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
// 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.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.filebrowserBrowseUrl = "<%= 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.
// config.stylesSet = [
-10
View File
@@ -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 jquery.isotope.min.js
//= require orbit_js_1.0.1-front-end
//= require ckeditor/init
//= require ckeditor/jquery-ckeditor
+15 -63
View File
@@ -20,7 +20,6 @@
//for forms
//form-type = "ajax_form" will turn form to ajax submit
//notification = string will display after the form is succesfully submitted
//response-type = "json"|"script"|"xml|html" default is json
//for layout tinyscrollbar
//content-layout="datalist|column|simple" datalist is for data list from database.. column is usually for forms and some other pages.. simple is without any columns, the page will be displayed as it is.. base width will be considered the default width for tinyscrollbar
@@ -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
//item=true this attribute should be present in the li tag. li with this attribute are considered as a separate item.
//enableLanguageSelect( dom ) children <a> will be binded with language, data-lang = string ex "en"|"zh_tw" will toggle all data-langunage throughout the page
//enableSharing( dom ) children <a> will be binded with share, data-mode = string ex "public"|"private" will change the mode for all the selected items. the dom with class should have data-link = url data-var = vaiable_name, default will be mode
$.extend($.expr[':'], {
'containsi': function (elem, i, match, array) {
@@ -226,8 +222,7 @@ var orbitDesktop = function(dom){
this.bindDesktopEvents = function(){ //this function will bind the global handlers to thd desktop, for example doc
$(".docklist a").click(function(){
if( !$( this ).parent().hasClass( 'disable' ) )
o.menu_item($(this));
o.menu_item($(this));
return false;
});
@@ -252,12 +247,16 @@ var orbitDesktop = function(dom){
$("body").on("submit","form[form-type=ajax_form]",function(){
var callback_method = $(this).attr("callback-method"),
dt = ($(this).attr("response-type") == null ? "json" : $(this).attr("response-type")),
dt = null,
notification = $(this).attr("notification");
dt = $(this).attr("response-type");
if(dt == null){
dt = "json";
}
var options = {
dataType : dt,
resetForm : false,
success: function(responseText, statusText, xhr, $form){
resetForm : true,
success:function(responseText, statusText, xhr, $form){
if(typeof callback_method != "undefined"){
if(callback_method != ""){
window.o[o.data_method][callback_method](responseText,statusText,xhr,$form);
@@ -266,7 +265,7 @@ var orbitDesktop = function(dom){
if(typeof notification == "string")
o.notify(notification,"success");
},
error: function(){
error:function(){
o.notify("Please try again later!","imp");
}
}
@@ -275,11 +274,10 @@ var orbitDesktop = function(dom){
});
$("body").on("click","*[ajax-remote]",function(){
var $e = $(this),
t = $e.attr("ajax-remote"),
classes_to_toggle = $e.attr("toggle-onclick"),
responsetype = $e.attr('response-type') ? $e.attr('response-type') : "html",
exe = $e.attr("callback-method"); // (typeof $e.attr("callback-method") == "function"? $e.attr("callback-method") : "");
var $e = $(this);
var t = $e.attr("ajax-remote");
var classes_to_toggle = $e.attr("toggle-onclick");
var exe = $e.attr("callback-method"); // (typeof $e.attr("callback-method") == "function"? $e.attr("callback-method") : "");
if(classes_to_toggle){
$e.toggleClass(classes_to_toggle);
}
@@ -291,9 +289,9 @@ var orbitDesktop = function(dom){
}
var ca = $e.attr("content-holder");
var a = function(){
$.ajax({
type : t,
dataType : responsetype,
url : $e.attr("href"),
success : function(data){
if(typeof data == "string"){
@@ -304,7 +302,6 @@ var orbitDesktop = function(dom){
// $("div[container=true]").html(data);
}
}
if(exe)
window.o[o.data_method][exe](data,$e);
if(t == "delete"){
@@ -454,7 +451,7 @@ var orbitDesktop = function(dom){
var ist = function(){
$('#holder').css('height', $('#container').height() - 72);
$('.tinycanvas').css('height', $('#holder').height() - 36);
$('.tinycanvas').css('height', $('#panel_r').height() - 36);
var dom = $("*[isotope=true]").isotope({
layoutMode: 'fitColumns',
onLayout: function($elems, instance){
@@ -701,15 +698,6 @@ var orbitDesktop = function(dom){
}
})
o.highlight_sub_menu_item(dom);
} else {
o.lastlink = dom.attr("href");
$.ajax({
url : dom.attr("href"),
type : "get",
success : function(data){
o.layout_data(data);
}
})
}
if(dom.length == 0)
o.layout_data(data);
@@ -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(){
var minimizedApps = [],
minimizeBar = $("#minimizebar");
@@ -7,29 +7,32 @@ function append_id(){
};
}
$(document).on('change', 'select', function(e) {
if(!e.target.className == 'widget_field_select') {
switch(e.target.id) {
case 'page_module_app_id':
$.getScript($(this).attr('rel') + '?module_app_id='+$(this).val() + append_id());
break;
case 'page_app_frontend_url':
case 'page_part_widget_path':
$.getScript($(this).attr('rel') +'?frontend=' + $(this).val() + '&module_app_id=' + $("#module_app_list select").val() + append_id() );
break;
case 'page_design':
$.getScript($(this).attr('rel') + '?design_id=' + $(this).val() + append_id());
break;
case 'page_part_public_r_tag':
$.getScript($(this).attr('rel') + '?type=' + $(this).val() + append_id());
break;
};
} else {
$.getScript($(this).attr('rel') + '?widget_field_value='+ $(this).val()+'&dom_id=' + $(this).attr("id") + '&field_seri=' +$(this).attr('field_seri')+ '&module_app_id=' +$("#page_module_app_id,page_part_module_app_id").val() + append_id() );
}
$("div.editable").live("mouseenter mouseleave", function (event) {
$(this).children('.edit_link').toggle();
});
$(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_' + $(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);
+41 -71
View File
@@ -12,14 +12,13 @@
!(function($){
// Convenience vars for accessing elements
var $body = $('#main-wrap'),
$bottomNav = $('.bottomnav'),
$pageslide = $('#pageslide'),
$viewPage = $('#view-page');
var _sliding = false, // Mutex to assist closing only once
_lastCaller; // Used to keep track of last element to trigger pageslide
// If the pageslide element doesn't exist, create it
// If the pageslide element doesn't exist, create it
if( $pageslide.length == 0 ) {
$pageslide = $('<div />').attr( 'id', 'pageslide' )
.css( 'display', 'none' )
@@ -29,12 +28,11 @@
/*
* Private methods
*/
function _load( url, useIframe, callback,element ) {
function _load( url, useIframe ) {
// Are we loading an element from the page or a URL?
if ( url.indexOf("#") === 0 ) {
// Load a page element
$(url).clone(true).appendTo( $pageslide.empty() ).show();
if(callback)callback.call(this,$pageslide,element);
} else {
// Load a URL. Into an iframe?
if( useIframe ) {
@@ -51,11 +49,9 @@
$viewPage.find('.content').html( iframe );
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
$viewPage.find('.content').empty();
if(callback)callback.call(this,$viewPage,element);
} else {
$viewPage.find('.content').load(url, function(){
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
if(callback)callback.call(this,$viewPage,element);
});
}
@@ -68,11 +64,10 @@
function _start( direction, speed ) {
var slideWidth = $pageslide.outerWidth( true ),
bodyAnimateIn = {},
bottomnavAnimateIn = {},
slideAnimateIn = {};
// If the slide is open or opening, just ignore the call
if( $pageslide.is(':visible') || _sliding ) return;
if( $pageslide.is(':visible') || _sliding ) return;
_sliding = true;
switch( direction ) {
@@ -88,7 +83,6 @@
$pageslide.css({ left: '-' + (slideWidth-61) + 'px', right: 'auto' });
};
bodyAnimateIn['margin-left'] = '+=' + slideWidth;
bottomnavAnimateIn['left'] = '+=' + slideWidth;
if($(window).width() <= 1440 && slideWidth > 963 ) {
bodyAnimateIn['width'] = $body.width();
}
@@ -98,7 +92,6 @@
// Animate the slide, and attach this slide's settings to the element
$body.animate(bodyAnimateIn, speed);
$bottomNav.animate(bottomnavAnimateIn, speed);
$pageslide.show().animate(slideAnimateIn, speed, function() {
_sliding = false;
$pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
@@ -115,7 +108,7 @@
$.fn.pageslide = function(options) {
var $elements = this;
// On click
$elements.bind(clickEvent, function(e) {
$elements.on(clickEvent, function(e) {
var $self = $(this),
settings = $.extend({ href: $self.attr('href') }, options);
@@ -128,7 +121,7 @@
$.pageslide.close();
} else {
// Open
$.pageslide( settings,$self );
$.pageslide( settings );
if($('.item-groups').length) {
$('.item-menu > a, .navbar-inner').removeClass("active");
@@ -147,16 +140,7 @@
$pageName = $self.parents('.item-title').children('a').text();
$('.page-name').text($pageName);
} else if($('.tags-groups').length) {
if($('.gallery').length) {
$(this).closest('.rgalbum').addClass('active-single').siblings().removeClass('active-single');
if($(this).closest('ul').hasClass('photo-action')) {
$('.checkbox').prop('checked', false);
$('.rgalbum').removeClass('active');
$('.deletephoto, .deselect, .addtags').addClass('hide');
}
} else {
$(this).closest('li').addClass("active").siblings().removeClass("active").parent('ul').siblings().children('li').removeClass("active");
}
$(this).parents('li').addClass("active").siblings().removeClass("active").parent('ul').siblings().children('li').removeClass("active");
} else {
$(this).parents("tr").addClass("active").siblings().removeClass("active");;
}
@@ -167,9 +151,9 @@
};
});
};
/*
};
/*
* Default settings
*/
$.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.
W: 264,
closeFn : null,
openFn : null,
loadComplete : null
openFn : null
};
/*
/*
* Public methods
*/
// Open the pageslide
$.pageslide = function( options,element ) {
// Extend the settings with those the user has provided
// Open the pageslide
$.pageslide = function( options ) {
// Extend the settings with those the user has provided
var settings = $.extend({}, $.fn.pageslide.defaults, options);
var convertToFunction = function(fn){
var x = new Function();
x = fn;
@@ -206,19 +190,16 @@
if(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) ) {
$.pageslide.close(function(){
$pageslide.css({'width': settings.W});
_load( settings.href, settings.iframe, settings.loadComplete, element );
_load( settings.href, settings.iframe );
_start( settings.direction, settings.speed );
});
} else {
_load( settings.href, settings.iframe, settings.loadComplete,element );
_load( settings.href, settings.iframe );
if( $pageslide.is(':hidden') ) {
$pageslide.css({'width': settings.W});
_start( settings.direction, settings.speed );
@@ -237,19 +218,18 @@
};
};
};
// Close the pageslide
$.pageslide.close = function( callback ) {
// Close the pageslide
$.pageslide.close = function( callback ) {
var $pageslide = $('#pageslide'),
slideWidth = $pageslide.outerWidth( true ),
speed = $pageslide.data( 'speed' ),
bodyAnimateIn = {},
bottomnavAnimateIn = {};
slideAnimateIn = {}
// If the slide isn't open, just ignore the call
if( $pageslide.is(':hidden') || _sliding ) return;
if( $pageslide.is(':hidden') || _sliding ) return;
_sliding = true;
switch( $pageslide.data( 'direction' ) ) {
@@ -259,10 +239,9 @@
break;
default:
bodyAnimateIn['margin-left'] = '-=' + slideWidth;
bottomnavAnimateIn['left'] = '-=' + slideWidth;
slideAnimateIn['left'] = '-=' + slideWidth;
if($pageslide.find('.preview').length) {
$pageslide.find('.preview').cycle('destroy');
// $pageslide.find('.preview').cycle('destroy');
$pageslide.find('.preview img').removeAttr('style');
}
break;
@@ -278,13 +257,11 @@
}
} else if($('.tags-groups').length) {
$('.tags-groups').children('li').removeClass("active");
$('.rgalbum').removeClass("active-single");
} else {
$("tr").removeClass("active");
};
$pageslide.animate(slideAnimateIn, speed);
$bottomNav.animate(bottomnavAnimateIn, speed);
$body.animate(bodyAnimateIn, speed, function() {
$pageslide.hide();
_sliding = false;
@@ -310,33 +287,26 @@
$.fn.pageslide.defaults.openFn = callback;
};
};
//data load complete callback
$.pageslide.loadComplete = function(callback) {
if(typeof callback === "function"){
$.fn.pageslide.defaults.loadComplete = callback;
};
};
/* Events */
// Don't let clicks to the pageslide close the window
/* Events */
// Don't let clicks to the pageslide close the window
$pageslide.click(function(e) {
e.stopPropagation();
});
// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
$(document).bind('click keyup', function(e) {
// If this is a keyup event, let's see if it's an ESC key
// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
$(document).bind('click keyup', function(e) {
// If this is a keyup event, let's see if it's an ESC key
if( e.type == "keyup" && e.keyCode != 27) return;
// Make sure it's visible, and we're not modal
if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {
$.pageslide.close();
}
});
// Make sure it's visible, and we're not modal
if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {
$.pageslide.close();
}
});
function setScroll(){
$pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true }); // set nano scroll
};
})(jQuery);
-106
View File
@@ -1,106 +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();
});
$("#dialog").on(clickEvent, '.delete-item', function() {
var _v = [],
_t = $t.attr("rel");
$("tbody .list-check:checked").each(function() {
_v.push(this.value);
});
$.ajax({
url : _t,
type:"get",
data : {"ids":_v},
dataType : "json",
success : function(){
actionSuccess(_data.checkAction);
}
})
$('#dialog').modal('hide');
$('.list-active-btn').addClass('disabled').data('actionable', false);
})
});
+35 -1
View File
@@ -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() {
$('.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();
});
})
+27 -30
View File
@@ -1,4 +1,3 @@
var H,P = [];
// Go to
!function ($) {
$.fn.goTo = function (){
@@ -14,45 +13,43 @@ var H,P = [];
}
}(window.jQuery);
function checkHeight() {
// if($('#member-module').height() > $(window).height()) {
// H = $(window).height()-
// parseInt($('.wrap-inner').css('padding-top'))+
// parseInt($('.wrap-inner').css('padding-bottom'))-
// $('#orbit-bar').outerHeight(true);
// }else{
// H = $(window).height()-
// parseInt($('.wrap-inner').css('padding-top'))+
// parseInt($('.wrap-inner').css('padding-bottom'))-
// $('#filter').outerHeight()+
// parseInt($('#filter').css('margin-bottom'))-
// $('#orbit-bar').outerHeight(true);
// };
H = $(window).height()-
parseInt($('.wrap-inner').css('padding-top'))-
$('#orbit-bar').outerHeight(true);
if($('#member-module').height() > $(window).height()) {
H = $(window).height()-
parseInt($('.wrap-inner').css('padding-top'))+
parseInt($('.wrap-inner').css('padding-bottom'))-
$('#orbit-bar').outerHeight(true);
}else{
H = $(window).height()-
parseInt($('.wrap-inner').css('padding-top'))+
parseInt($('.wrap-inner').css('padding-bottom'))-
$('#filter').outerHeight()+
parseInt($('#filter').css('margin-bottom'))-
$('#orbit-bar').outerHeight(true);
};
$('#basic-info').height(H);
$('#member-roles').height(H-$('.member-avatar').outerHeight(true)-parseInt($('#member-roles').css('margin-top'))+20);
$('#module-content').height(H-$('#module-navbar .navbar').outerHeight(true)-$('.bottomnav').innerHeight());
$('#member-roles').height(H-$('.member-avatar').outerHeight(true)-parseInt($('#member-roles').css('margin-top')))
};
$(function() {
var H;
checkHeight();
$('.wrap-inner').css('padding-bottom', 0);
$(window).resize(checkHeight);
$(window).resize(function() {
checkHeight();
// setModuleBlockWidth();
});
$('#member-roles h4 > span').each(function() {
$(this).css('margin-left',function() {
return $(this).innerWidth()/2*-1;
})
})
// $('#basic-info').scrollToFixed({
// marginTop: $('#orbit-bar').outerHeight(true)+20,
// });
// $('#module-navbar').scrollToFixed({
// marginTop: $('#orbit-bar').outerHeight(true),
// });
$('#basic-info').scrollToFixed({
marginTop: $('#orbit-bar').outerHeight(true)+20,
});
$('#module-navbar').scrollToFixed({
marginTop: $('#orbit-bar').outerHeight(true),
});
// $('.member-avatar').imagesLoaded(function() {
// $('#basic-info .member-avatar img').muImageResize({width: 100, height:100});
// });
$('.member-avatar').rsImg();
$('#member-roles, #module-content .nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
});
$('#member-roles').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
})
@@ -191,17 +191,12 @@ function returnAddressForm(element, decide) {
$(function() {
appendIndex = null;
if($('#user-forms').length) {
if($('#new-user-forms').length) {
addressVal = [];
addressArray = [];
addressInputId = [];
roleType = null;
returnDecide = false;
$('.attributes').each(function() {
if($(this).find('.toggle-check').attr('value') == "true") {
$(this).addClass('disabled').children('.attributes-body').hide();
}
});
$('.returnDecide').on(clickEvent, function() {
returnDecide = true;
})
@@ -220,21 +215,21 @@ $(function() {
});
$('#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('disabled')) {
$(this).find('.toggle-check')
.attr('value', 'false')
.closest('.attributes')
.removeClass('disabled')
.children('.attributes-body')
.find('.attributes-body')
.fadeIn(300);
} else {
$(this).find('.toggle-check')
.attr('value', 'true')
.closest('.attributes')
.addClass('disabled')
.children('.attributes-body')
.find('.attributes-body')
.fadeOut(300);
}
$(this).toggleClass('disabled');
@@ -427,13 +422,12 @@ $(function() {
if($(this).hasClass('trigger')) {
// appendIndex = $(this).closest('.controls').find('.input-append').length;
appendIndex = $(this).closest('.controls').find('.input-append:last-child').children('input:first-child').attr('name');
// appendIndex = appendIndex.split("][");
// appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
appendIndex = parseInt(appendIndex.match(/[^[\D\]]+(?=])/g)[1])+1;
console.log(appendIndex)
appendIndex = appendIndex.split("][");
appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
attributeIndex = $(this).closest('.attributes').index();
templateType = $(this).closest('.attributes').find('.dataType').children("option:selected").attr('ref');
$("#template-input-append").tmpl(setData(attributeIndex, templateType, appendIndex)).appendTo($(this).closest('.controls').find('.add-target'));
inputAppendLength();
};
if($(this).hasClass('remove-input')) {
@@ -1,4 +1,4 @@
function textareaResizable() {
$(function() {
var $btnW = null,
$textareaLangBtnGroup = $('.textarea-lang > .btn-group'),
$textareaLang = $('.textarea-lang'),
@@ -8,12 +8,12 @@ function textareaResizable() {
$btnW = 4
$(this).find('.btn').each(function() {
$btnW += $(this).outerWidth(true);
$(this).on(clickEvent, function() {
$(this).on('click', function() {
var $id = $($(this).attr('href'));
if($id.find('.ui-wrapper').height() < 96) {
$id.find('.ui-wrapper').height(96)
};
});
}
})
});
});
$textarea.each(function() {
@@ -26,7 +26,4 @@ function textareaResizable() {
minWidth: $btnW+114,
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);
});
});
+29 -158
View File
@@ -83,7 +83,6 @@ legend {
min-width: 61px;
z-index: 1030;
position: fixed;
padding-top: 40px;
background-color: #171717;
-webkit-box-shadow: inset -1px 0px 10px #000000;
-moz-box-shadow: inset -1px 0px 10px #000000;
@@ -92,14 +91,12 @@ legend {
}
#sidebar #sidebar-menu {
position: absolute;
top: 85px;
top: 88px;
bottom: 0;
z-index: 0;
z-index: 1;
display: block;
width: 61px;
}
#sidebar #sidebar-menu.nano {
top: 0;
/*overflow: auto;*/
}
#sidebar .scroller {
position: absolute;
@@ -123,12 +120,16 @@ legend {
list-style: none;
}
#sidebar > h2.position {
top: 40px;
margin: 0;
width: 61px;
color: #FFFFFF;
font-weight: normal;
font-size: 2.4em;
line-height: 47px;
line-height: 46px\9;
text-align: center;
position: relative;
position: absolute;
background-color: #08c;
background-image: -moz-linear-gradient(top, #08c, #006091);
background-image: -ms-linear-gradient(top, #08c, #006091);
@@ -157,20 +158,24 @@ legend {
}
#sidebar > h2.position a {
color: #FFFFFF;
padding: 6px 6px 5px;
text-decoration: none;
display: inline-block;
-webkit-text-shadow: 0px -1px 0px #333333;
-moz-text-shadow: 0px -1px 0px #333333;
-o-text-shadow: 0px -1px 0px #333333;
text-shadow: 0px -1px 0px #333333;
}
#sidebar > h2.position a i {
line-height: 45px;
}
#sidebar .sidebar-nav > li {
min-width: 61px;
height: 45px;
}
#sidebar .sidebar-nav > li.active 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;
cursor: pointer;
-webkit-text-shadow: 0px -1px 0px #636363;
@@ -178,7 +183,8 @@ legend {
-o-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;
display: block;
-webkit-text-shadow: 0px 1px 0px #000000;
@@ -186,15 +192,8 @@ legend {
-o-text-shadow: 0px 1px 0px #000000;
text-shadow: 0px 1px 0px #000000;
}
#sidebar .sidebar-nav > li a {
display: block;
}
#sidebar .sidebar-nav > li i {
font-size: 1.6em;
line-height: 45px;
}
#sidebar .sidebar-nav > li.active i {
font-size: 2.2em;
#sidebar .sidebar-nav > li > a > span > i {
font-size: 1.7em;
}
#sidebar .sub-nav-block-list {
top: 40px;
@@ -275,7 +274,7 @@ legend {
}
#sidebar .sub-nav-arrow {
left: 53px;
top: -16px;
top: -10px;
width: 0px;
height: 0px;
z-index: -1;
@@ -283,6 +282,7 @@ legend {
border-style: solid;
border-width: 8px 8px 8px 0;
border-color: transparent #0088CC transparent transparent;
display: none\9; /* 用IE的去死 */
}
@@ -300,15 +300,14 @@ legend {
position: absolute;
z-index: 100;
width: 100%;
border-radius: 50%/1px;
background-color: rgba(0, 136, 204, .6);
border-radius: 1px;
background-color: rgba(0, 136, 204, .3);
}
/* Main Wrap */
#main-wrap {
padding-top: 40px;
position: relative;
}
#main-wrap .wrap-inner {
padding: 60px 20px 20px;
@@ -420,7 +419,6 @@ legend {
/* Search Clear */
.searchClear {
position: relative;
display: inline-block;
}
.searchClear .icon-search {
position: absolute;
@@ -522,9 +520,10 @@ legend {
padding: 0px 5px;
position: absolute;
z-index: 9999;
max-width: 300px;
max-width: 500px;
border-radius: 3px;
background-color: #0088CC;
white-space: nowrap;
}
#sideset .ui-tooltip.sidebar-tooltip:after {
display: none;
@@ -534,9 +533,10 @@ legend {
padding: 0px 5px;
position: absolute;
z-index: 9999;
max-width: 300px;
max-width: 500px;
border-radius: 3px;
background-color: #000000;
white-space: nowrap;
}
.ui-tooltip:after {
content: '';
@@ -551,135 +551,6 @@ legend {
border-color: #000000 transparent transparent transparent;
}
/* Sign In */
#sign-in {
background-color: #F3F3F3;
background-repeat: no-repeat;
background : -webkit-radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
background : -moz-radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
background : -o-radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
background : -ms-radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
background : -radial-gradient(center center,circle cover, #F3F3F3 10%, #DBDBDB 100%);
}
.sign-in {
text-align: center;
position: relative;
width: 300px;
margin: 150px auto 0;
}
.sign-in .other-sign-in {
display: none;
}
.sign-in .login-logo {
margin: 0;
padding-bottom: 15px;
border-bottom: 1px solid #ededed;
}
.sign-in .alert {
box-shadow: 0 3px 10px #CBCBCB;
text-align: left;
}
.sign-in .form {
background-color: #FFF;
box-shadow: 0 10px 20px #CBCBCB;
padding: 15px;
margin-bottom: 20px;
}
.sign-in .form-block {
overflow: hidden;
}
.sign-in .form-list {
width: 555px;
}
.sign-in .content {
float: left;
margin-bottom: 0;
position: relative;
}
.sign-in .content + .content {
margin-left: 15px;
}
.sign-in .control-group {
position: relative;
width: 270px;
margin: 0;
}
.sign-in .control-group label {
position: absolute;
top: 0;
left: 0;
width: 39px;
height: 40px;
line-height: 40px;
margin: 0;
color: #5C5C5C;
}
.sign-in .control-group input {
width: 222px;
height: 30px;
padding: 4px 6px 4px 40px;
margin-bottom: 25px;
}
.sign-in .btn {
padding: 4px 0;
display: block;
width: 100%;
margin-bottom: 10px;
}
.sign-in .other-sign-in {
position: relative;
margin-top: 20px;
margin-bottom: 30px;
padding-bottom: 20px;
border-bottom: 1px solid #ededed;
}
.sign-in .other-sign-in p {
position: absolute;
width: 30px;
height: 30px;
background-color: #FFF;
padding: 0 10px;
margin-bottom: 0;
margin-left: -25px;
line-height: 30px;
left: 50%;
bottom: -15px;
font-size: 1.3em;
color: #b1b1b1;
}
.sign-in .checkbox {
position: absolute;
text-align: left;
bottom: 37px;
}
.sign-in .switchboard {
color: #08C;
cursor: pointer;
}
.sign-in .switchboard span,
.sign-in .switchboard.active i {
display: inline;
}
.sign-in .switchboard.active span,
.sign-in .switchboard i {
display: none;
}
.register {
box-shadow: inset 0 5px 5px #E0E0E0;
background-color: #eee;
padding: 15px;
margin: 15px -15px -15px;
}
.register .btn {
margin: 0;
}
.have-other-sign-in {
margin: 80px auto 0;
}
.have-other-sign-in .other-sign-in {
display: block;
}
/* IE go die */
:root #sidebar .sub-nav-block:before {
display: block\9;
@@ -19,18 +19,6 @@
margin-left: 0;
}
}
.form_fix {
textarea {
margin-bottom: 12px;
}
input[type="text"] {
margin-left: 0;
margin-top: 0;
}
input[type="text"] + input {
margin-top: 12px;
}
}
// fixed width column with 12px gutter
// 276px width for 8 columns
// 420px width for 12 columns
@@ -323,29 +323,6 @@ a.admtxt.admbg2:hover {
float: left; }
.docklist .d_cate:hover .dock_child {
display: block; }
.disable {
opacity: .3;
}
.disable a {
cursor: not-allowed;
}
.private {
position: relative;
padding-right: 10px;
width: 300px;
opacity: .3 !important;
}
.private:after {
content: "\e073";
display: inline-block;
font-family: 'entypo';
font-size: 1.5em;
position: absolute;
right: 0;
text-align: center;
text-decoration: inherit;
top: 5px;
}
.fn_des.admtxt {
line-height: 60px;
@@ -737,8 +714,7 @@ a.admtxt.admbg2:hover {
/* list item */
.list_t_item {
overflow: hidden;
height: 100px; }
overflow: hidden; }
.list_t_title {
padding-bottom: 6px;
@@ -772,8 +748,7 @@ a.admtxt.admbg2:hover {
-webkit-text-size-adjust: none; }
.list_item_function a :first-child {
margin-left: 0; }
.datalist_item:hover .list_item_function,
.list_t_item:hover .list_item_function {
.datalist_item:hover .list_item_function {
bottom: 0; }
/* App */
-28
View File
@@ -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;
}
+2 -13
View File
@@ -280,17 +280,6 @@
line-height: 26px;
margin: 0;
}
.main-forms .attributes-header h4 b {
padding: 0 1px;
border-style: dotted;
border-width: 0 2px;
border-color: #AAA;
margin-right: 5px;
cursor: move;
}
.main-forms .attributes-header h4 i {
cursor: pointer;
}
.main-forms .field-type {
background-color: #f5f5f5;
border-radius: 5px;
@@ -318,7 +307,7 @@
.main-forms .field-type .control-group:last-child {
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 {
display: block;
margin-bottom: 10px;
@@ -335,7 +324,7 @@
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;
}
-7
View File
@@ -39,13 +39,6 @@
.main-list td {
background-color: #FFFFFF;
}
.main-list td input[type="text"] {
margin-bottom: 0;
margin-left: -.4em;
margin-right: 3px;
padding: 0 .3em;
width: 4em;
}
.main-list td.action {
vertical-align: middle;
text-align: right;
+30 -85
View File
@@ -2,11 +2,6 @@
#list-view h4 a {
color: #000;
text-decoration: none;
display: block;
width: 100%;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
/* List */
@@ -111,31 +106,10 @@
#list-view #member-abstract .member-avatar .action > a.trash {
background-color: #b94a48;
}
/*#list-view #member-abstract .member-avatar:after {
content: "";
#list-view #member-abstract .member-avatar > span {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: block;
margin: 0;
background-color: #000000;
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}*/
#list-view #member-abstract > li .member-avatar:after {
-webkit-backface-visibility: hidden;
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 250px;
height: 120px;
display: block;
margin: 0;
background-color: #000000;
@@ -146,8 +120,7 @@
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}
#list-view #member-abstract > li:hover .member-avatar:after {
-webkit-backface-visibility: hidden;
#list-view #member-abstract > li:hover .member-avatar > span {
opacity: .4;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
filter: alpha(opacity=40);
@@ -186,6 +159,11 @@
float: left;
position: relative;
}
#list-view #member-card > li:hover .member-avatar > span {
opacity: 0.4;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
filter: alpha(opacity=40);
}
#list-view #member-card > li:hover .member-avatar .action {
visibility: visible;
}
@@ -205,37 +183,14 @@
#list-view #member-card .member-avatar.gender-woman {
border-color: #FF3196;
}
#list-view #member-card .member-avatar.gender-nene {
#list-view #member-card .member-avatar.gender-none {
border-color: #DDDDDD;
}
#list-view #member-card .member-avatar img {
/*width: 100%;*/
max-width: none;
}
#list-view #member-card > li .member-avatar:after {
-webkit-backface-visibility: hidden;
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: block;
margin: 0;
background-color: #000000;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
border-radius: 50%;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
}
#list-view #member-card > li:hover .member-avatar:after {
opacity: .4;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
filter: alpha(opacity=40);
}
/*#list-view #member-card .member-avatar > span {
#list-view #member-card .member-avatar > span {
position: absolute;
width: 150px;
height: 150px;
@@ -248,7 +203,7 @@
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}*/
}
#list-view #member-card .member-avatar .action {
position: absolute;
z-index: 1;
@@ -307,25 +262,22 @@
margin-top: 20px;
}
#profile #basic-info .member-avatar {
width: 103px;
height: 103px;
width: 106px;
height: 106px;
float: left;
}
#profile #basic-info .member-avatar img {
border: 3px solid #ffffff;
-webkit-border-radius: 9px;
-moz-border-radius: 9px;
border-radius: 9px;
width: 100%;
max-width: none;
}
#profile #basic-info .member-avatar:after {
content: "";
-webkit-backface-visibility: hidden;
}
#profile #basic-info .member-avatar.gender-man {
#profile #basic-info .member-avatar.gender-man img {
border-color: #34ADFF;
}
#profile #basic-info .member-avatar.gender-woman {
#profile #basic-info .member-avatar.gender-woman img {
border-color: #FF3196;
}
#profile #basic-info .member-avatar.gender-none {
#profile #basic-info .member-avatar.gender-none img {
border-color: #DDDDDD;
}
#profile #member-roles {
@@ -361,28 +313,21 @@
#profile #member-roles .roles dd {
color: #999999;
}
#profile #module-navbar {
margin-left: 10px;
}
#profile #module-navbar .navbar {
margin-bottom: 15px;
}
#profile #member-module {
margin-left: 360px;
}
#profile #member-module #module-navbar.scroll-to-fixed-fixed {
background-color: #F3F3F3;
padding-top: 20px;
}
#profile #member-module #module-navbar.scroll-to-fixed-fixed .navbar {
margin-bottom: 10px;
}
#profile #member-module #module-content {
padding: 0 0 0 10px;
}
#profile #member-module #module-content .content {
right: 10px;
padding-bottom: 10px;
outline: none;
}
#profile #member-module #module-content .list-active {
padding-bottom: 8px;
/*border-bottom: 1px solid #DDD;*/
padding: 0 10px;
}
/* Responsive */
@media (max-width: 979px) {
#profile #member-info {
+21 -21
View File
@@ -6,22 +6,22 @@
.tags .lead .badge {
margin-top: 5px;
}
.tags-groups {
.tags .tags-groups {
list-style: none;
margin: 0 0 20px;
padding: 0;
}
.tags-groups:after {
.tags .tags-groups:after {
content: "";
clear: both;
height: 0;
display: block;
visibility: hidden;
}
.tags-groups.module-tags li.default a {
.tags .tags-groups.module-tags li.default a {
margin-left: 5px;
}
.tags-groups li {
.tags .tags-groups li {
overflow: hidden;
float: left;
width: auto;
@@ -39,7 +39,7 @@
-o-transition: all .2s linear;
transition: all .2s linear;
}
.tags-groups li.mark {
.tags .tags-groups li.mark {
width: 0;
height: 0;
padding: 0;
@@ -49,28 +49,28 @@
opacity: 0;
visibility: hidden;
}
.tags-groups li.active {
.tags .tags-groups li.active {
background-color: #3a87ad;
}
.tags-groups li.active .amount {
.tags .tags-groups li.active .amount {
color: #8cb8be;
}
.tags-groups li a {
.tags .tags-groups li a {
text-decoration: none;
color: #ededed;
}
.tags-groups li .amount {
.tags .tags-groups li .amount {
color: #fdcf3b;
float: right;
margin-left: 15px;
}
.tags-groups li .card {
.tags .tags-groups li .card {
position: relative;
margin: 0;
width: 18px;
height: 18px;
}
.tags-groups li .card:after {
.tags .tags-groups li .card:after {
font-family: FontAwesome;
content: '\f111';
color: #fdcf3b;
@@ -82,13 +82,13 @@
left: 0;
top: 0;
}
.tags-groups li .card.active:after {
.tags .tags-groups li .card.active:after {
content: '\f058';
font-size: 18px;
left: -2px;
top: 1px;
}
.tags-groups li .card input {
.tags .tags-groups li .card input {
position: absolute;
top: 0;
left: 0;
@@ -110,10 +110,10 @@
#tags-merger form {
margin-bottom: 0;
}
#tags-merger .tags-groups li {
#tags-merger .tags .tags-groups li {
cursor: pointer;
}
#tags-merger .tags-groups li.def {
#tags-merger .tags .tags-groups li.def {
background-color: #468847;
}
#tags-merger .modal-body .pull-left {
@@ -127,22 +127,22 @@
.tags-groups li.default {
.tags .tags-groups li.default {
background-color: #468847;
}
.tags-groups li.default.active {
.tags .tags-groups li.default.active {
background-color: #3a87ad;
}
.tags-groups li.default .amount {
.tags .tags-groups li.default .amount {
color: #8cbe9a;
}
.tags-groups li.default.active .amount {
.tags .tags-groups li.default.active .amount {
color: #8cb8be;
}
.tags-groups li.default .card:after {
.tags .tags-groups li.default .card:after {
color: #8cbe9a;
}
.tags-groups li.active .card:after {
.tags .tags-groups li.active .card:after {
color: #8cb8be;
}
-13
View File
@@ -26,9 +26,6 @@
margin-top: 4px;
margin-left: 10px;
}
.topnav .btn-group {
margin-left: 0;
}
/* Bottom Nav */
.bottomnav {
@@ -44,16 +41,6 @@
.bottomnav .action {
margin-bottom: 6px;
}
.bottomnav .divider {
display: inline-block;
position: relative;
margin: 0 5px;
background-color: #E0E0E0;
width: 1px;
height: 16px;
top: 5px;
box-shadow: 1px 0 0 #FFF;
}
.bottomnav .pagination {
margin: 0;
}
@@ -1,7 +1,10 @@
class Admin::AdBannersController < OrbitBackendController
open_for_visitor :only => [:index, :show]
open_for_manager :except => [:index,:show,:update,:realtime_preview]
open_for_sub_manager :except => [:index, :show]
before_filter :force_order_for_visitor,:only=>[:index, :show]
before_filter :force_order_for_user,:except => [:index, :show]
before_filter :for_app_sub_manager,:except => [:index, :show]
before_filter :for_app_manager,:except => [:index,:show,:update,:realtime_preview]
def rename
@ad_banner = AdBanner.find(params[:id])
@@ -57,7 +60,6 @@ class Admin::AdBannersController < OrbitBackendController
def index
@ad_banners = AdBanner.all
@active = @ad_banners.first
@tags = get_tags
end
end
+14 -37
View File
@@ -3,17 +3,7 @@ class Admin::AssetsController < OrbitBackendController
before_filter :setup_vars
def index
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.desc(:created_at).page(params[:page]).per(10)
if params[:type] == "images"
@assets = @assets.where(:content_type => /^image/)
end
@tag = ModuleTag.new
@module_app = ModuleApp.find(params[:module_app_id]) rescue nil
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
@module_app_id = @module_app.id rescue nil
render :layout => "assets"
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.page(params[:page]).per(10)
end
def show
@@ -32,8 +22,12 @@ class Admin::AssetsController < OrbitBackendController
def edit
@asset = Asset.find(params[:id])
@asset_categories = AssetCategory.all
@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
def create
@@ -70,7 +64,10 @@ class Admin::AssetsController < OrbitBackendController
def update
@asset = Asset.find(params[:id])
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
flash[:error] = t('update.fail')
@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])
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
@files = params['files']
a = Array.new
@files.each do |file|
@asset = current_user.assets.new
@asset.data = file
@asset.title_translations = {:en => file.original_filename, :zh_tw => file.original_filename}
# @asset.title_translations[:zh_tw] = file.original_filename
@asset.save!
a << {"url"=>@asset.data.url}
end
render :json=>{"files"=>a}.to_json
@asset = Asset.new
@asset_categories = AssetCategory.all
@tags = get_tags
render :layout => false
end
def file_select
@@ -1,13 +1,13 @@
class Admin::AuthorizationsController < OrbitBackendController
prepend_before_filter :admin_or_manager
before_filter :admin_or_manager
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 @type
case @type
when 'category_authorization', 'category_approval'
when 'category', 'approval'
if @module_app.has_category
@objects = @module_app.categories
else
@@ -18,12 +18,12 @@ class Admin::AuthorizationsController < OrbitBackendController
end
unless @objects.blank?
@object ||= @objects.first
@users = @object.get_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
@error = t(:no_data)
end
else
@users = @module_app.managers
@users = @module_app.managing_users
end
elsif @module_apps
@module_app = @module_apps.first
@@ -33,42 +33,35 @@ class Admin::AuthorizationsController < OrbitBackendController
end
end
def add_roles
roles = Role.find(params[:role_ids]) rescue []
users = []
roles.each do |role|
users += role.users.all.entries
def add(users)
unless users.blank?
if @type
if @object
object_auth = @object.get_object_auth_by_title("#{@type}_#{@module_app.key}")
add_users_to_object_auth(object_auth, users)
else
@error = t(:no_data)
end
else
add_managers(users) unless users.blank?
end
end
unless roles.blank?
authorization = get_or_create_authorization
add_roles_to_auth(authorization, roles) unless @error
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
end
def add_sub_roles
sub_roles = SubRole.find(params[:sub_role_ids]) rescue []
users = []
sub_roles.each do |sub_role|
users += sub_role.users.all.entries
end
unless sub_roles.blank?
authorization = get_or_create_authorization
add_sub_roles_to_auth(authorization, sub_roles) unless @error
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
@users = users
render 'admin/authorizations/insert_users'
end
def add_users
users = User.find(params[:user_ids]) rescue []
unless users.blank?
authorization = get_or_create_authorization
add_users_to_auth(authorization, users) unless @error
add(users)
end
def add_roles
roles = Role.find(params[:role_ids]) rescue []
users = roles.inject([]) do |users, role|
users += role.users.all.entries
users
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
add(users)
end
def modal_select
@@ -77,111 +70,63 @@ class Admin::AuthorizationsController < OrbitBackendController
if @type
@object_id = @object.id if @object
@sorted_users = roles.inject({}) do |users, role|
users[role] = role.users.where(admin: false) - existing_users - @module_app.managers
users[role] = role.users.where(admin: false).not_guest_user - existing_users - @module_app.managing_users
users
end
else
@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
end
end
end
def remove_roles
roles = Role.find(params[:role_ids]) rescue []
unless roles.blank?
authorization = get_or_create_authorization
remove_roles_form_auth(authorization, roles)
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
end
def remove_sub_roles
sub_roles = SubRole.find(params[:sub_role_ids]) rescue []
unless sub_roles.blank?
authorization = get_or_create_authorization
remove_sub_roles_from_auth(authorization, sub_roles)
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
end
def remove_users
@users = User.find(params[:ids]) rescue []
unless @users.blank?
authorization = get_or_create_authorization
remove_users_from_auth(authorization, @users)
if @type
if @object
object_auth = @object.get_object_auth_by_title("#{@type}_#{@module_app.key}")
remove_users_form_object_auth(object_auth, @users)
else
@error = t(:no_data)
end
else
remove_managers(@users)
end
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
render 'admin/authorizations/remove_users'
end
protected
def add_managers_to_auth(users)
@module_app.add_managers(users)
end
def add_roles_to_auth(authorization, roles)
authorization.add_roles(roles)
end
def add_sub_roles_to_auth(authorization, sub_roles)
authorization.add_sub_roles(sub_roles)
end
def add_users_to_auth(authorization, users)
authorization.add_users(users)
end
def get_or_create_authorization
case @type
when 'category_approval'
if @object
@object.auth_approval || @object.create_auth_approval(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}")
else
@error = t(:no_data)
end
when 'category_authorization'
if @object
@object.auth_sub_manager || @object.create_auth_sub_manager(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}")
else
@error = t(:no_data)
end
when nil
@module_app.auth_manager || @module_app.create_auth_manager(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}")
else
auth = @object.get_authorization_by_title("#{@type}_#{@module_app.key}")
unless auth
auth = @object.create_auth_approval(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}") if @type.include?('approval')
auth = @object.create_auth_sub_manager(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}") if @type.include?('authorization')
end
auth
def add_managers(users)
users.each do |user|
@module_app.assign_manager(user, current_user)
end
end
def remove_managers_from_auth(users)
@module_app.remove_manager(users)
def add_users_to_object_auth(object_auth, users)
users.each do |user|
object_auth.add_user_to_privilege_list(user)
end
end
def remove_roles_form_auth(authorization, roles)
authorization.remove_roles(roles)
def remove_managers(users)
users.each do |user|
@module_app.remove_manager(user)
end
end
def remove_sub_roles_from_auth(authorization, sub_roles)
authorization.remove_sub_roles(sub_roles)
end
def remove_users_from_auth(authorization, users)
authorization.remove_users(users)
def remove_users_form_object_auth(object_auth, users)
users.each do |user|
object_auth.remove_user_from_privilege_list(user)
end
end
private
def admin_or_manager
@override_can_use = true
setup_vars
authenticate_user!
user_is_manager?
@@ -191,7 +136,7 @@ class Admin::AuthorizationsController < OrbitBackendController
@module_app = ModuleApp.first(conditions: {:key => params[:module]} ) if params[:module]
@type = params[:type].underscore if params[:type]
if @type
@klass = @type.gsub('_authorization', '').gsub('_approval', '').classify.constantize rescue nil
@klass = @type.classify.constantize rescue nil
@object = @klass.find(params[:id]) rescue nil
end
end
@@ -1,6 +1,8 @@
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"
@@ -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
+9 -9
View File
@@ -4,19 +4,19 @@ class Admin::PluginsController < ApplicationController
def index
@plugins = OrbitApp::Plugin::Registration.all
@plugins = OrbitApp::Plugin::Registration.all
if(!params[:show_plugin_profile].nil?)
@right_partial = OrbitApp::Plugin::Registration.find_by_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?
respond_to do |format|
format.html { redirect_to( @right_partial ) }
end
else
@right_partial = ""
end
if !@right_partial.blank?
respond_to do |format|
format.html { redirect_to( @right_partial ) }
end
else
@right_partial = ""
end
else
@right_partial = ""
@@ -55,15 +55,6 @@ class Admin::SitesController < OrbitBackendController
end
def search_engine
end
def preference
end
def ui_theme
end
+3
View File
@@ -1,5 +1,8 @@
class Admin::TagsController < OrbitBackendController
include OrbitTag::Merging
before_filter :force_order_for_visitor, only: [:index]
before_filter :force_order_for_user, except: [:index]
def index
@tags = @module_app.module_tags
@@ -1,10 +1,19 @@
class Admin::UsersNewInterfaceController < OrbitMemberController
helper MemberHelper
helper OrbitBackendHelper
# before_filter :authenticate_user!
# before_filter :set_attribute, :only => [:index, :show, :new, :edit]
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
before_filter :set_attribute,:except => [:index,:show]
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
get_tags
@@ -17,64 +26,50 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
@filter = params[:filter]
@mq = params[:mq]
@new_filter = params[:new_filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && @new_filter
if @filter.has_key?(@new_filter[:type]) && @filter[@new_filter[:type]].include?(@new_filter[:id].to_s)
@filter[@new_filter[:type]].delete(@new_filter[:id].to_s)
elsif @filter.has_key?(@new_filter[:type])
@filter[@new_filter[:type]] << @new_filter[:id].to_s
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({@new_filter[:type] => [@new_filter[:id].to_s]})
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif @new_filter
@filter = {@new_filter[:type] => [@new_filter[:id].to_s]}
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
if @filter.blank? and @mq.blank?
if @filter.blank?
render case params[:at]
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"
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"
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"
end
elsif @filter.blank? and !@mq.blank?
else
render case params[:at]
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"
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"
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')
"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')
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(10).asc("_id").includes('avatar')
"index"
end
@@ -83,18 +78,9 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
end
def show
@user = User.find(params[:id])
@plugins = OrbitApp::Plugin::Registration.all
@ppname = Array.new
@plugins.each do |aa|
@ppname << [aa.sort_number.to_i, [aa.name, aa.app_name, aa.intro_app_name, aa.front_partial_path]]
end
@plugin_shows = @ppname.sort.collect {|v| {"name"=>v[1][0],"app_name"=>v[1][1],"intro_app_name"=>v[1][2],"front_partial_path"=>v[1][3]} }
@profile_data = []
@teacher_data = []
@student_data = []
@@ -107,11 +93,9 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
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'
@plugin_app_name = OrbitApp::Plugin::Registration.find_by_app_name(params[:show_plugin_profile]).name rescue nil
@right_partial = OrbitApp::Plugin::Registration.find_by_key(params[:show_plugin_profile]).profile_partial_path rescue 'plugin_summary'
else
@right_partial = "plugin_summary"
@plugin_app_name = ''
end
# @user.attribute_values.each{|att_val|
@@ -241,39 +225,7 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
@user.destroy
end
# 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
@users = User.not_guest_user
end
def update_order
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
redirect_to :action => :index
end
protected
+1 -4
View File
@@ -145,14 +145,11 @@ class ApplicationController < ActionController::Base
condition = VALID_LOCALES.include?(session[:locale])
elsif session[:locale]
condition = @site.in_use_locales.include?(session[:locale])
elsif @site.default_locale.present?
default_locale = @site.default_locale
condition = @site.valid_locales.include?(default_locale)
else
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first rescue nil
condition = @site.in_use_locales.include?(browser_locale)
end
session[:locale] = condition ? (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
@site_in_use_locales = site_locales_default_head(@site.in_use_locales)
@site_valid_locales = site_locales_default_head(@site.valid_locales)
+1 -12
View File
@@ -1,16 +1,12 @@
class DesktopController< ApplicationController
layout 'desktop'
before_filter :authenticate_user!
before_filter :check_desktop_open, :only => [:index,:show]
#to load pages...
# caches_page :index
def index
@desktop = current_user.desktop
@currentusername = current_user.name
@currentname = current_user.first_name + current_user.last_name
@title = "Desktop - " + @currentusername
@section = @desktop.sections.first
end
@@ -339,14 +335,7 @@ class DesktopController< ApplicationController
b = {"success"=>"true"}
render :json=>b.to_json
end
private
def check_desktop_open
if Me.desktop_closed && current_user.nil? #Need to be change
redirect_to '/admin/dashboards'
end
end
end
+1 -1
View File
@@ -1,4 +1,4 @@
class DesktopThemesController < ApplicationController
class DesktopThemesController < OrbitBackendController
require "net/http"
require "uri"
require 'zip/zip'
+1 -1
View File
@@ -73,7 +73,7 @@ class FrontController < ApplicationController
res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page))
res << "'>"
root = "/"
res << "<a href='#{(page.class.to_s.eql?('Page') ? root + page.path : page.url)}' 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
res << "<span class='dot'></span>"
res << menu_level(page, current_page, current + 1, menu)
+31 -1
View File
@@ -1,6 +1,7 @@
class OrbitBackendController < ApplicationController
include OrbitCategory::Categorizing
include OrbitCoreLib::Authorization
include OrbitCoreLib::AppBackendUtility
include OrbitCoreLib::PermissionUtility
include OrbitTag::Tagging
include AdminHelper
include ApplicationHelper
@@ -9,6 +10,12 @@ class OrbitBackendController < ApplicationController
layout "back_end"
def setup_vars
@app_title ||= controller_path.split('/')[1].singularize
@module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
end
def get_statuses
status = []
status << 'is_top'
@@ -21,4 +28,27 @@ class OrbitBackendController < ApplicationController
end
status
end
private
def force_order_for_visitor
check_backend_openness
setup_vars
set_current_user
end
def force_order_for_user
setup_vars
set_current_user
authenticate_user!
check_user_can_use
end
def check_user_can_use
unless check_permission
#redirect_to polymorphic_path(['panel',@app_title,'back_end','public'])
redirect_to root_url
end
end
end
+31 -1
View File
@@ -1,6 +1,7 @@
class OrbitMemberController < ApplicationController
include OrbitCategory::Categorizing
include OrbitCoreLib::Authorization
include OrbitCoreLib::AppBackendUtility
include OrbitCoreLib::PermissionUtility
include OrbitTag::Tagging
include AdminHelper
include ApplicationHelper
@@ -9,6 +10,12 @@ class OrbitMemberController < ApplicationController
layout "member"
def setup_vars
@app_title ||= controller_path.split('/')[1].singularize
@module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
end
def get_statuses
status = []
status << 'is_top'
@@ -21,4 +28,27 @@ class OrbitMemberController < ApplicationController
end
status
end
private
def force_order_for_visitor
check_backend_openness
setup_vars
set_current_user
end
def force_order_for_user
setup_vars
set_current_user
authenticate_user!
check_user_can_use
end
def check_user_can_use
unless check_permission
#redirect_to polymorphic_path(['panel',@app_title,'back_end','public'])
redirect_to root_url
end
end
end
+6 -6
View File
@@ -4,6 +4,12 @@ class PagesController < ApplicationController
before_filter :check_frontend_open, :only => [:index,:show]
# caches_page :index
def check_frontend_open
if Me.frontend_closed and current_user.nil? #Need to be change
redirect_to '/admin/dashboards'
end
end
def index
@item = Page.find_by_name('home')
@@ -111,12 +117,6 @@ class PagesController < ApplicationController
end
raise PageError,'Missing Frontend Page' if @item.nil?
end
def check_frontend_open
if Me.frontend_closed && current_user.nil? #Need to be change
redirect_to '/admin/dashboards'
end
end
def save_from_no_lang_for_page
if @item.nil? or !@item.enabled_for_lang(I18n.locale.to_s)
+1 -1
View File
@@ -7,5 +7,5 @@ module Admin::AssetsHelper
end
a.join(' - ')
end
end
+5 -1
View File
@@ -271,7 +271,11 @@ module ApplicationHelper
end
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
# NTU link
+5 -6
View File
@@ -34,8 +34,7 @@ module AttributeFieldsHelper
value = (can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value) rescue nil
key_field = can_muti_lang_input? ? "[#{key}]" : ""
place_holder= @panel_setting["placeholder"][key] rescue ''
# result = text_area_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
result = text_field_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}))
add_ext= @attribute_value.address_ext[key] rescue {}
@@ -182,7 +181,7 @@ protected
def lang_panel_tabbable_wrapper(add_more_params,&block)
add_more_counter = ''
if self.markup=='text_area' #or self.markup=='address'
if self.markup=='text_area' or self.markup=='address'
tmp1 = VALID_LOCALES.collect do |key|
value = @prefiled_value[key] rescue nil
@@ -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)
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.join.html_safe
end # of content ul
@@ -358,7 +357,7 @@ protected
# address = content_tag :div,:class=>"multipleInput editMore" do
address = content_tag :div,:class=>"control-group" do
label + content_tag(:div, controls_wrapper(&block), :class=>'controls add-input')
label + content_tag(:div, controls_wrapper(&block), :class=>'controls')
end # of div multipleInput editMore
result = address
@@ -453,7 +452,7 @@ protected
def gen_modal_dialog
render_anywhere("shared/attribute_field/address_modal_dialog",{
:field_name=>title,
:html_id=>"address-field",
:html_id=>"#{get_pairing_tab_class({})}_m_window",
:btn_class => "#{get_pairing_tab_class({})}",
:field_name_basic => get_basic_field_name_base
}
+2 -2
View File
@@ -321,9 +321,9 @@ module OrbitBackendHelper
def is_authorized(object)
autorized = @module_app.authorizable_models.inject(false) do |autorized, klass|
if object.is_a?(klass.constantize)
autorized ||= object.user_can_sub_manage?(current_user)
autorized ||= object.cur_user_is_sub_manager_of("#{klass.underscore}_#{@module_app.key}")
else
autorized ||= object.category.user_can_sub_manage?(current_user)
autorized ||= object.category.cur_user_is_sub_manager_of("category_#{@module_app.key}")
end
autorized
end
+6 -10
View File
@@ -34,8 +34,8 @@ module OrbitFormHelper
def date_picker(object_name, method, options)
custom = {}
custom[:format] = options[:format] || 'yyyy/MM'
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
custom[:format] = 'yyyy-MM-dd'
custom[:value] = display_date(options[:value]) if options[:value]
custom[:picker_class] = 'date_picker'
custom[:label] = options[:label] || I18n.t('datetime_picker.date.label')
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.date.placeholder')
@@ -44,8 +44,8 @@ module OrbitFormHelper
def default_picker(object_name, method, options)
custom = {}
custom[:format] = options[:format] || 'yyyy/MM/dd hh:mm'
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
custom[:format] = 'yyyy-MM-dd hh:mm'
custom[:value] = display_date_time(options[:value]) if options[:value]
custom[:picker_class] = 'default_picker'
custom[:label] = options[:label] || I18n.t('datetime_picker.default.label')
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.default.placeholder')
@@ -54,8 +54,8 @@ module OrbitFormHelper
def time_picker(object_name, method, options)
custom = {}
custom[:format] = options[:format] || 'hh:mm'
custom[:value] = format_value(options[:value], custom[:format]) if options[:value]
custom[:format] = 'hh:mm'
custom[:value] = display_time(options[:value]) if options[:value]
custom[:picker_class] = 'time_picker'
custom[:label] = options[:label] || I18n.t('datetime_picker.time.label')
custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.time.placeholder')
@@ -93,10 +93,6 @@ module OrbitFormHelper
end
end
def format_value(value, format)
value.strftime(format.gsub('yyyy', '%Y').gsub('MM', '%m').gsub('dd', '%d').gsub('hh', '%H').gsub('mm', '%M'))
end
end
module Orbit::FormBuilder
+1 -12
View File
@@ -5,16 +5,13 @@ class Asset
include OrbitTag::Taggable
mount_uploader :data, FileAssetUploader
before_save :update_asset_attributes
field :filename
field :description, localize: true
field :title, localize: true
field :content_type
field :file_size
validates :title, :at_least_one => true
validates :description, :at_least_one => true
validates_presence_of :data
@@ -24,14 +21,6 @@ class Asset
before_save :clean_tags
protected
def update_asset_attributes
if data.present? && data_changed?
self.content_type = data.file.content_type
self.file_size = data.file.size
end
end
def clean_tags
self.tagged_ids.delete('')
-6
View File
@@ -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
-4
View File
@@ -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
-6
View File
@@ -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
-108
View File
@@ -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 -1
View File
@@ -1,7 +1,7 @@
class Category
include Mongoid::Document
include Mongoid::Timestamps
include OrbitModel::Authorizable
include OrbitCoreLib::ObjectAuthable
field :disable, type: Boolean, default: false
field :title, localize: true
+7
View File
@@ -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
+7
View File
@@ -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
+7
View File
@@ -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
+2 -80
View File
@@ -1,26 +1,16 @@
class ModuleApp
include Mongoid::Document
include Mongoid::Timestamps
# include OrbitCoreLib::ObjectTokenUtility
# include OrbitApp::ModuleAppMembershipTools
include OrbitCoreLib::ObjectTokenUtility
include OrbitApp::ModuleAppMembershipTools
field :auth_approval_users, type: Array, default: nil
field :auth_manager_users, type: Array, default: nil
field :auth_sub_manager_users, type: Array, default: nil
field :key
field :title
field :sidebar_order,type: Integer,default: 0
has_one :auth_manager, dependent: :destroy
has_many :auth_approvals, dependent: :destroy
has_many :auth_sub_managers, dependent: :destroy
has_many :categories, dependent: :destroy
has_many :module_tags, dependent: :destroy
has_many :approvals #to remove
delegate :authorized_users, to: :auth_manager, prefix: true, allow_nil: true
def refetch_setting!(reg)
# %w{module_label category base_url version organization author intro update_info create_date}.each do |field|
# self[field.to_sym] = reg.send field
@@ -34,7 +24,6 @@ class ModuleApp
self[:has_category] = reg.get_has_category
self[:is_approvable] = reg.get_is_approvable
self[:is_authorizable] = reg.get_is_authorizable
self[:approvable_models] = reg.get_approvable_models
self[:authorizable_models] = reg.get_authorizable_models
end
@@ -179,71 +168,4 @@ class ModuleApp
self.module_tags.map{|t| t.tag }
end
# authorization
def update_auth_approval_users
user_ids = self.auth_approvals.inject([]) do |users, auth|
users += auth.authorized_users.map{|user| user.id}
end
self.update_attribute(:auth_approval_users, user_ids.uniq)
end
def update_auth_manager_users
self.update_attribute(:auth_manager_users, self.auth_manager_authorized_users.map{|user| user.id})
end
def update_auth_sub_manager_users
user_ids = self.auth_sub_managers.inject([]) do |users, auth|
users += auth.authorized_users.map{|user| user.id}
end
self.update_attribute(:auth_sub_manager_users, user_ids.uniq)
end
def managers
auth_manager_authorized_users || []
end
def user_can_manage?(user)
managers.include?(user)
end
def add_managers(users)
users = Array(users)
if auth_manager = self.auth_manager
auth_manager.update_attribute(:authorized_users, (auth_manager.authorized_users + users).uniq)
else
self.create_auth_manager(authorized_users: users)
end
end
def remove_managers(users)
users = Array(users)
users = users.delete_if{|user| user == current_user || is_admin?}
self.auth_manager.update_attribute(:authorized_users, auth_manager.authorized_users - users)
end
def is_manager?(user)
if user && !auth_manager_users.blank?
auth_manager_users.include?(user.id)
else
false
end
end
def is_sub_manager?(user)
if user && !auth_sub_manager_users.blank?
auth_sub_manager_users.include?(user.id)
else
false
end
end
def can_approve?(user)
if user && !auth_approval_users.blank?
auth_approval_users.include?(user.id)
else
false
end
end
end
+1 -6
View File
@@ -14,12 +14,10 @@ class Site
field :frontend_closed, :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 :dashbroad_allow_visitor, :type => Boolean, :default => false
field :mail_settings, :type => Hash
field :enabled_for, :type => Array, :default => nil
field :disk_space, :type => String
field :system_package_info, :type => Hash,:default=>{}
@@ -34,12 +32,9 @@ class Site
field :title, localize: true
field :footer, 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
belongs_to :design
has_many :site_metas, :autosave => true, :dependent => :destroy
-28
View File
@@ -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
+8 -18
View File
@@ -1,15 +1,13 @@
class User
include Mongoid::Document
include Mongoid::Tree
include Mongoid::Tree::Ordering # use mongoid-tree because mongoid-ordering needs mongoid(~>3.0)
include Mongoid::Timestamps
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :validatable #, :timeoutable
mount_uploader :avatar, AvatarUploader
field :admin, :type => Boolean, :default => false
field :admin, :type => Boolean, :default => true
field :active_role
field :user_id
field :sid
@@ -21,34 +19,26 @@ class User
field :cache_dept,type: Hash
field :status_record,type: Hash
has_and_belongs_to_many :approving_apps, class_name: 'AuthApproval', inverse_of: 'authorized_users'
has_and_belongs_to_many :managing_apps, class_name: 'AuthManager', inverse_of: 'authorized_users'
has_and_belongs_to_many :sub_managing_apps, class_name: 'AuthSubManager', inverse_of: 'authorized_users'
has_many :attribute_values, :autosave => true, :dependent => :destroy
has_many :app_auths,as: :privilege_apps,:inverse_of => :privilege_lists
has_many :blocked_apps, :inverse_of => :blocked_users, :class_name => "AppAuth", :dependent => :destroy
has_many :privilege_apps, :inverse_of => :privilege_users, :class_name => "AppAuth", :dependent => :destroy
# has_many :managing_apps,:class_name => "AppManager", :dependent => :destroy
has_many :managing_apps,:class_name => "AppManager", :dependent => :destroy
has_one :desktop, :autosave => true, :dependent => :destroy
has_one :facebook, :autosave => true, :dependent => :destroy
has_many :other_accounts, :autosave => true, :dependent => :destroy
has_many :assets, as: :assetable
# has_many :journals, :autosave => true, :dependent => :destroy
# has_many :papers, :autosave => true, :dependent => :destroy
has_and_belongs_to_many :sub_role_tags
has_many :user_actions, :dependent => :destroy
has_many :personal_plugin_intro
# has_and_belongs_to_many :statuses
has_and_belongs_to_many :roles
has_and_belongs_to_many :sub_roles
has_and_belongs_to_many :role_statuses
has_and_belongs_to_many :role_categorys
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
before_create :initialize_desktop
@@ -99,9 +89,9 @@ class User
var[:id].each do |id,val|
# binding.pry if id == '5052c5b22b5c49ab02000004'
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")
self.role_ids += Array(id)
self.roles << Role.find(id)
end
end
end
@@ -116,9 +106,9 @@ class User
# binding.pry if id == '5052c5b22b5c49ab02000004'
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")
self.sub_role_ids += Array(id)
self.sub_roles << SubRole.find(id)
end
end
@@ -283,8 +273,8 @@ class User
end
def managed_module_apps
self.managing_apps.inject([]) do |managed_apps, auth_manager|
managed_apps << auth_manager.module_app
self.managing_apps.inject([]) do |managed_apps, app_manager|
managed_apps << app_manager.managing_app unless app_manager.managing_app.blank?
managed_apps
end
end
-3
View File
@@ -21,9 +21,6 @@ class AvatarUploader < CarrierWave::Uploader::Base
# def default_url
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
# 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 :scale => [200, 300]
+13 -17
View File
@@ -1,23 +1,16 @@
<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>
<%= 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>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<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><%= 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>
</ul>
</div>
</td> -->
<!-- <td><%#= asset.data.file.content_type rescue nil %></td> -->
</td>
<td><%= asset.data.file.content_type rescue nil %></td>
<td><%= number_to_human_size(asset.data.file.file_length) rescue nil %></td>
<td><%= asset.description rescue nil %></td>
<td>
@@ -29,7 +22,10 @@
</div>
</div>
</td>
<td>
<a href="<%= edit_admin_asset_path(asset) %>" class="editform">Edit</a>
</td>
</tr>
</tr>
<script type="text/javascript">
$('.img-peview').popover({
delay: { show: 100, hide: 300 }
});
</script>
+16 -13
View File
@@ -1,15 +1,18 @@
<%= flash_messages %>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3><%= t('editing.asset') %></h3>
</div>
<%= form_for @asset, :url => admin_asset_path(@asset), :remote => true do |f| %>
<div class="modal-body" id="modal_body">
<div id='pop_up_content' class="main2">
<h1><%= t('editing.asset') %></h1>
<%= flash_messages %>
<%= form_for @asset, :url => admin_asset_path(@asset), :html => {:id => (is_html ? nil : 'ajaxForm'), :multipart => true } do |f| %>
<%= f.error_messages %>
<%= render :partial => "form", :locals => { :f => f } %>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
<%= f.submit t('submit'), class: 'btn btn-primary' %>
</div>
<% end %>
<div class="button_bar">
<% if is_html %>
<%= link_back %>
<%= f.submit t(:edit) %>
<% else %>
<a id='ajax_form_submit' class="btn btn-primary"><%= t(:update_) %></a>
<% end %>
</div>
<% end %>
</div>
+30 -38
View File
@@ -1,46 +1,38 @@
<div class="control-group">
<ul class="nav nav-pills language-nav">
<% @site_valid_locales.each_with_index do |locale, i| %>
<li <%= ( i == 0 ) ? "class=active" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
<% end %>
</ul>
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<div class="control-group input-title">
<%= 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 %>
<label for="title" class="control-label"><%= t :title %></label>
<div class="controls">
<%= f.fields_for :title_translations do |f| %>
<% @site_valid_locales.each do |locale| %>
<%= content_tag :label do -%>
<div>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class => "input-large", :value => (@asset.title_translations[locale] rescue nil) %>
</div>
</div>
<div class="control-group input-content">
<%= 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 %>
<% end %>
</div>
</div>
</div>
<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">
<%= f.file_field :data, :class => 'upload' %>
</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 %>
+25
View File
@@ -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} %>");
+8
View File
@@ -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} %>
+23 -375
View File
@@ -1,382 +1,30 @@
<style>
/* File Upload */
#upload-panel {
clear: both;
}
#upload-panel iframe {
width: 100%;
border: none;
}
#fileupload {
position: relative;
clear: both;
overflow: hidden;
margin: 40px 0 15px;
height: 254px;
border: 1px solid #d4d4d4;
border-radius: 4px;
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;
}
<%= render 'filter' %>
<table id="asset_sort_list" class="table main-list">
<thead>
<tr>
<th class="span1"></th>
<th class="span4"></th>
<th class="span1-2"></th>
<th class="span1-2"></th>
<th class="span1-2"></th>
<th class="span1-2"></th>
<th class="span1-2"></th>
</tr>
</thead>
<tbody id="tbody_assets" class="sort-holder">
<%= render :partial => 'asset', :collection => @assets %>
</tbody>
</table>
#fileupload .fileupload-progress .progress {
position: absolute;
right: 0;
left: 0;
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 class="form-actions form-fixed pagination-right">
<%= 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' %>
<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 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="&#xe0a3;"></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>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "file-upload/vendor/jquery.ui.widget.js" %>
<%= javascript_include_tag "file-upload/tmpl.min.js" %>
<%= 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" %>
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
<%= javascript_include_tag "inc/modal-preview" %>
<% 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>
+4
View File
@@ -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
View File
@@ -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>
<%= image_tag (user.avatar? ? user.avatar.thumb : 'menber-pic.png'), :class => "user-pic" %>
<span class="user-name"><%= user.name %></span>
<span><%= get_user_module_role(user) %></span>
</label>
<% unless user == current_user || user.admin %>
<% unless user == current_user || is_admin? %>
<input type="checkbox">
<% end %>
</li>
@@ -13,13 +13,11 @@
</div>
</div>
<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| %>
<%= 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") %>
<% 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") %>
<%= 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 %>
<%= link_to t(:approval_), admin_authorizations_path(@module_app.key, type: 'approval') if @module_app.is_approvable %>
<% if @error %>
<%= @error %>
<% else %>
@@ -0,0 +1,2 @@
$("#card-list").append("<%= j render partial: 'user', collection: @users %>");
$("#member-filter").modal('hide');
@@ -1,2 +0,0 @@
$("#card-list").html("<%= j render partial: 'user', collection: @users %>");
$("#member-filter").modal('hide');
@@ -10,7 +10,7 @@
<li><%= link_to show_toggle_archive_btn(category) , toggle_admin_module_app_category_path(@module_app_id, category), method: :post, remote: true, class: "archive_toggle" %></li>
<% end %>
<% if is_manager? || is_admin? %>
<li><%= link_to t(:category_auth), admin_authorizations_path(@module_app.key, 'category_authorization', category.id) %></li>
<li><%= link_to t(:category_auth), admin_authorizations_path(@module_app.key, 'category', category.id) %></li>
<% end %>
</ul>
</div>
@@ -32,6 +32,7 @@
</div>
<% end %>
<% end %>
<%= index_table %>
<%= @index_footer %>
@@ -0,0 +1,5 @@
<%= render_sort_bar(true, delete_admin_designs_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
['title', 'title','span2', :title],
['', '', 'span1', :default],
['intro', 'intro', 'span7', :intro],
['author', 'author', 'span2', :author]).html_safe %>
+9 -17
View File
@@ -14,23 +14,15 @@
<div id="sidebar-menu">
<div class="scroller">
<ul class="sidebar-nav no-sub-nav">
<li title="Structure"><%= link_to admin_items_path do %><span><i class="icons-flow-tree"></i></span><%end%></li>
<li title="Site Map"><%= link_to admin_site_sitemap_path(@site), :class => active_for_action('sites', 'sitemap') do %><span><i class="icons-directions"></i></span><%end%></li>
<li title="Modules"><%= link_to admin_module_store_path, :class => active_for_action('module_store', 'index') do %><span><i class="icons-layout"></i></span><%end%></li>
<li title="Templates"><%= link_to admin_designs_path, :class => active_for_action('template_store', 'index') do %><span><i class="icons-brush"></i></span><%end%></li>
<li title="Site Info"><%= link_to admin_site_site_info_path(@site), :class => active_for_action('sites', 'site_info') do %><span><i class="icons-browser"></i></span><%end%></li>
<li title="Search Engine"><%= link_to admin_site_search_engine_path(@site), :class => active_for_action('sites', 'site_info') do %><span><i class="icons-search"></i></span><%end%></li>
<li title="Preference"><%= link_to admin_site_preference_path(@site), :class => active_for_action('sites', 'preference') do %><span><i class="icons-cog"></i></span><%end%></li>
<!-- <li title="System Info"><a href="/orbit_4.0.1/admin/system_info/index.shtml?sidebarNavList=8&amp;subNavBlockList=0"><span><i class="icons-info-2"></i></span></a></li>
--> </ul>
<li title="Structure"><a href="/orbit_4.0.1/admin/items/items.shtml?sidebarNavList=0&amp;subNavBlockList=0"><span><i class="icons-flow-tree"></i></span></a></li>
<li title="Site Map"><a href="/orbit_4.0.1/admin/sitemap/sitemap.shtml?sidebarNavList=1&amp;subNavBlockList=0"><span><i class="icons-directions"></i></span></a></li>
<li title="Modules"><a href="/orbit_4.0.1/admin/modules/all.shtml?sidebarNavList=2&amp;subNavBlockList=0"><span><i class="icons-layout"></i></span></a></li>
<li title="Templates"><a href="/orbit_4.0.1/admin/templates/all.shtml?sidebarNavList=3&amp;subNavBlockList=0"><span><i class="icons-brush"></i></span></a></li>
<li title="Site Info"><a href="/orbit_4.0.1/admin/site_info/index.shtml?sidebarNavList=4&amp;subNavBlockList=0"><span><i class="icons-browser"></i></span></a></li>
<li title="Search Engine"><a href="/orbit_4.0.1/admin/search_engine/index.shtml?sidebarNavList=5&amp;subNavBlockList=0"><span><i class="icons-search"></i></span></a></li>
<li title="Preference"><a href="/orbit_4.0.1/admin/preference/index.shtml?sidebarNavList=7&amp;subNavBlockList=0"><span><i class="icons-cog"></i></span></a></li>
<li title="System Info"><a href="/orbit_4.0.1/admin/system_info/index.shtml?sidebarNavList=8&amp;subNavBlockList=0"><span><i class="icons-info-2"></i></span></a></li>
</ul>
</div>
</div>
<div class="sub-nav-arrow"></div>
+9 -1
View File
@@ -4,6 +4,14 @@
<%= render 'node_and_children', node: node %>
</ol>
<%= render 'layouts/delete_modal', delete_options: {remote: true} %>
<%= render 'layouts/delete_modal' %>
<div id="view-page" class="nano" style="display:none">
<div class="page-info clearfix">
<a class="pull-right" href="javascript:$.pageslide.close()"><i class="icons-arrow-left-2"></i></a>
<h3 class="page-name"></h3>
</div>
<div class="content">
</div>
</div>
<%= javascript_include_tag "lib/jquery.pageslide.js" %>
@@ -3,6 +3,7 @@
<input id="filter-input" class="search-query input-medium" type="text" placeholder="<%= t('search.tags') %>" value="">
</div>
<% end %>
<div id="tags_index">
<%= render 'index' %>
</div>
@@ -9,6 +9,12 @@
$('#app_page_url').html("<div class='well'><%= t('default_widget.no_support_setting')%></div>");
<% end %>
<% if @app_frontend_urls.first =='default_widget' %>
$('#app_page_frontend_style').html("<%= escape_javascript(select 'page', 'frontend_style', @selected[:module_app].widgets[@selected[:app_frontend_url]]) %>");
<% else %>
$('#app_page_frontend_style').html("<%= t('default_widget.no_support_setting')%>");
<% end %>
<% if show_default_widget_setting_panel %>
$('#app_page_tag').html("<%= j render :partial => 'admin/page_parts/widget_data_source_tag',:locals=>{:object=>@item} %>");
@@ -1,117 +0,0 @@
<% # encoding: utf-8 %>
<% content_for :side_bar do %>
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t(:user), :link_url => admin_site_site_info_path(@site), :icon => 'icons-users', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
<% end %>
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag "lib/main-forms" %>
<%= stylesheet_link_tag "lib/fileupload" %>
<%= stylesheet_link_tag "lib/main-list" %>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "lib/bootstrap-fileupload" %>
<%= javascript_include_tag "lib/file-type" %>
<% end %>
<%= form_for(:plugin_intro, :url => @url, :method => @verb, html: {class: "form-horizontal main-forms previewable"} ) do |f| %>
<%= f.error_messages %>
<fieldset>
<!-- Input Area -->
<div class="input-area">
<!-- Module Tabs -->
<div class="nav-name"><strong><%= I18n.t("module_name.#{@app_type_name}") %></strong></div>
<ul class="nav nav-pills module-nav">
<li></li>
<li class="active">
<a href="#basic" data-toggle="tab"><%= t(:basic) %></a>
</li>
</ul>
<!-- Module -->
<div class="tab-content module-area">
<!-- Basic Module -->
<div class="tab-pane fade in active" id="basic">
<% if !params[:user_id].blank? %>
<div class="control-group">
<label class="control-label muted"><%= t("personal_plugins.author") %></label>
<div class="controls">
<%= User.from_id(params[:user_id]).name rescue ''%>
</div>
</div>
<% end %>
<!-- frontend_page -->
<div class="control-group">
<label class="control-label muted"><%= t("personal_plugins.frontend_page") %></label>
<div class="controls">
<%= f.check_box :brief_intro, :checked => @set_type.brief_intro %> <%= t("personal_plugins.brief_intro") %>
<%= f.check_box :complete_list, :checked => @set_type.complete_list %> <%= t("personal_plugins.complete_list") %>
</div>
</div>
</div>
</div>
<!-- Language Tabs -->
<div class="nav-name"><strong><%= t(:language) %></strong></div>
<ul class="nav nav-pills language-nav">
<% @site_valid_locales.each_with_index do |locale, i| %>
<li class="<%= 'active' if i == 0 %>">
<a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a>
</li>
<% end %>
</ul>
<!-- Language -->
<div class="tab-content language-area">
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> tab-pane fade <%= ( i == 0 ) ? "in active" : '' %>">
<!-- Content -->
<div class="control-group input-content">
<label class="control-label muted"><%= t(:content) %></label>
<div class="controls">
<div class="textarea">
<%= f.fields_for :text_translations do |f| %>
<%= f.cktext_area locale, rows: 5, class: "input-block-level", :value => (@set_type.text_translations[locale] rescue nil) %>
<% end %>
</div>
</div>
</div>
</div>
<% end %>
</div>
</div>
<!-- Form Actions -->
<div class="form-actions">
<%= f.hidden_field :user_id, :value => params[:user_id] if !params[:user_id].blank? %>
<%= f.submit t('submit'), class: 'btn btn-primary' %>
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
</div>
</fieldset>
<% end %>
@@ -7,8 +7,8 @@
<%= link_to t(:all_plugin_summary)%>
<% end -%>
<% @plugins.each do |plugin| %>
<%= content_tag :li, :class=>(params[:show_plugin_profile] == plugin.app_name ? "active" : nil) do %>
<%= link_to plugin.name, admin_plugins_path(:show_plugin_profile => plugin.app_name) %>
<%= content_tag :li, :class=>(params[:show_plugin_profile] == plugin.name ? "active" : nil) do %>
<%= link_to plugin.name, admin_plugins_path(:show_plugin_profile => plugin.name) %>
<% end -%>
<% end -%>
+22 -22
View File
@@ -1,26 +1,26 @@
<nav id="sidebar">
<h2 class="position"><a href="#"><i class="icons-cog"></i></a></h2>
<div id="sidebar-menu">
<div class="scroller">
<ul class="sidebar-nav no-sub-nav">
<li title="Structure"><%= link_to admin_items_path do %><span><i class="icons-flow-tree"></i></span><%end%></li>
<%= content_tag :li, :class => active_for_controllers('sites') do -%>
<%= link_to content_tag(:i, nil, :class => 'icons-cog') + content_tag(:span, t('site.settings')), admin_site_site_info_path(@site) %>
<li title="Site Map"><%= link_to admin_site_sitemap_path(@site), :class => active_for_action('sites', 'sitemap') do %><span><i class="icons-directions"></i></span><%end%></li>
<%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('sites')) do -%>
<%= content_tag :li, link_to(t('site.info'), admin_site_site_info_path(@site)), :class => active_for_action('sites', 'site_info') %>
<%#= content_tag :li, link_to(t(:system_info), admin_site_system_info_path(@site)), :class => active_for_action('sites', 'system_info') %>
<%#= content_tag :li, link_to(t('site.language'), admin_site_language_path(@site)), :class => active_for_action('sites', 'language') %>
<%= content_tag :li, link_to(t('mail.setting'), admin_site_mail_setting_path(@site)), :class => active_for_action('sites', 'mail_setting') %>
<%#= content_tag :li, link_to(t(:theme), admin_site_ui_theme_path(@site)), :class => active_for_action('sites', 'ui_theme') %>
<%= content_tag :li, link_to(t('sitemap'), admin_site_sitemap_path(@site)), :class => active_for_action('sites', 'sitemap') %>
<%= content_tag :li, link_to(t('user_actions'), admin_user_actions_path), :class => active_for_action('user_actions', 'index') %>
<% end -%>
<li title="Modules"><%= link_to admin_module_store_path, :class => active_for_action('module_store', 'index') do %><span><i class="icons-layout"></i></span><%end%></li>
<% end -%>
<li title="Templates"><%= link_to admin_designs_path, :class => active_for_action('template_store', 'index') do %><span><i class="icons-brush"></i></span><%end%></li>
<%= content_tag :li, :class => active_for_controllers('designs') do -%>
<%= link_to content_tag(:i, nil, :class => 'icons-brush') + content_tag(:span, t(:template)), admin_designs_path %>
<% end -%>
<li title="Site Info"><%= link_to admin_site_site_info_path(@site), :class => active_for_action('sites', 'site_info') do %><span><i class="icons-browser"></i></span><%end%></li>
<li title="Search Engine"><%= link_to admin_site_search_engine_path(@site), :class => active_for_action('sites', 'search_engine') do %><span><i class="icons-search"></i></span><%end%></li>
<li title="Preference"><%= link_to admin_site_preference_path(@site), :class => active_for_action('sites', 'preference') do %><span><i class="icons-cog"></i></span><%end%></li>
<!-- <li title="System Info"><a href="/orbit_4.0.1/admin/system_info/index.shtml?sidebarNavList=8&amp;subNavBlockList=0"><span><i class="icons-info-2"></i></span></a></li>
--> </ul>
</div>
</div>
<div class="sub-nav-arrow"></div>
</nav>
<%= content_tag :li, :class => active_for_controllers('template_store', 'module_store') do -%>
<%= link_to content_tag(:i, nil, :class => 'icons-cart') + content_tag(:span, t(:purchase)), admin_purchases_path %>
<%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('template_store', 'module_store')) do -%>
<%= content_tag :li, link_to(t('store.template'), admin_template_store_path), :class => active_for_action('template_store', 'index') %>
<%= content_tag :li, link_to(t('store.module'), admin_module_store_path), :class => active_for_action('module_store', 'index') %>
<% end %>
<% end -%>
+14 -8
View File
@@ -1,10 +1,16 @@
<% sitemap_block.children.each_with_index do |child, i| %>
<li "<%= 'disabled' if !child.show_in_sitemap_for(temp_locale) %>">
<h6>
<%= content_tag :button, :id => child.id, :temp_locale => temp_locale, :disabled => !child.show_in_sitemap_for(temp_locale) do %>
<div class="map-block <%= 'disabled' if !sitemap_block.show_in_sitemap_for(temp_locale) %>">
<h4>
<button id="<%= sitemap_block.id %>" class="onoff pull-right" temp_locale="<%= temp_locale %>"><%= sitemap_block.show_in_sitemap_for(temp_locale) ? t('on_upcase') : t('off_upcase') %></button>
<span><%= sitemap_block_counter + 1 %> <%= sitemap_block.title_translations[temp_locale] %></span>
</h4>
<ul>
<% sitemap_block.children.each_with_index do |child, i| %>
<li class="clear <%= 'disabled' if !child.show_in_sitemap_for(temp_locale) %>">
<%= content_tag :button, :id => child.id, :class => "onoff pull-right", :temp_locale => temp_locale, :disabled => !child.show_in_sitemap_for(temp_locale) do %>
<%= child.show_in_sitemap_for(temp_locale) ? t('on_upcase') : t('off_upcase') %>
<% end %>
<input type="checkbox" class="toggle-check" data-deploy="right">
<span><%= "#{sitemap_block_counter + 1}-#{i + 1}" %> <%= child.title_translations[temp_locale] %></span>
</h6>
</li>
<span><%= "#{sitemap_block_counter + 1}-#{i + 1}" %> <%= child.title_translations[temp_locale] %></span>
</li>
<% end if sitemap_block.children %>
</ul>
</div>
-217
View File
@@ -1,217 +0,0 @@
<% content_for :side_bar do %>
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
<% end %>
<head>
<%= stylesheet_link_tag "lib/wrap-nav"%>
<%= stylesheet_link_tag "lib/main-forms"%>
<%= stylesheet_link_tag "lib/fileupload"%>
<%= stylesheet_link_tag "lib/togglebox"%>
<%= javascript_include_tag 'lib/bootstrap-fileupload' %>
<%= javascript_include_tag 'lib/site_set' %>
</head>
<%= form_for @site, :url => admin_site_path(@site), :html => {:class => "form-horizontal main-forms"} do |f| %>
<fieldset>
<!-- Input Area -->
<div class="input-area">
<div class="nav-name"><strong>Classification</strong></div>
<ul class="nav nav-pills language-nav">
<li class="active">
<a href="#sidebar-nav" data-toggle="tab">Sidebar Nav</a>
</li>
<li>
<a href="#system-email" data-toggle="tab">System Email</a>
</li>
<li>
<a href="#openness" data-toggle="tab">Openness</a>
</li>
<li>
<a href="#language-set" data-toggle="tab">Language</a>
</li>
<li>
<a href="#orbitBar-them" data-toggle="tab">OrbitBar Theme</a>
</li>
</ul>
<div class="tab-content">
<!-- Sidebar Nav -->
<div id="sidebar-nav" class="tab-pane fade in active">
<div class="control-group">
<label class="control-label muted">Enable Sidebar Sub Nav</label>
<div class="controls">
<input type="checkbox" class="toggle-check set-sidebar-state" data-disabled="true">
</div>
</div>
</div>
<!-- System Email -->
<%= f.fields_for :site_settings, @site['site_settings'] do |f| %>
<div id="system-email" class="tab-pane fade">
<div class="control-group">
<label class="control-label muted"><%= t 'mail.address' %></label>
<div class="controls">
<%= f.text_field :address, :value => (@site['site_settings']['address'] rescue nil), :class=>"input-large", :placeholder=>"Email Address" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.domain' %></label>
<div class="controls">
<%= f.text_field :port, :value => (@site['site_settings']['port'] rescue nil), :class=>"input-large", :placeholder=>"Domain" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.authentication' %></label>
<div class="controls">
<%= f.text_field :authentication, :value => (@site['site_settings']['authentication'] rescue nil), :class=>"input-large", :placeholder =>"Authentication" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.user_name' %></label>
<div class="controls">
<%= f.text_field :user_name, :value => (@site['site_settings']['user_name'] rescue nil), :class=>"input-large", :placeholder=>"User Name" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.password' %></label>
<div class="controls">
<%= f.text_field :password, :value => (@site['site_settings']['password'] rescue nil), :class=>"input-large", :placeholder=>"Password" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.port' %></label>
<div class="controls">
<%= f.text_field :port, :value => (@site['site_settings']['port'] rescue nil),:placeholder=>"Port", :class=>"input-mini" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.tls' %></label>
<div class="controls">
<%= f.check_box :tls, :checked => (@site['site_settings']['tls'].eql?('1') rescue false),:class=>"toggle-check" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.enable_starttls_auto' %></label>
<div class="controls">
<%= f.check_box 'enable_starttls_auto', :checked => (@site['site_settings']['enable_starttls_auto'].eql?('1') rescue false), :class=>"toggle-check" %>
</div>
</div>
</div>
<% end %>
<!-- Openness -->
<div id="openness" class="tab-pane fade">
<div class="control-group">
<label class="control-label muted"><%= I18n.t('site.frontend_closed')%></label>
<div class="controls">
<%= f.check_box :frontend_closed , :class=>"toggle-check"%>
<span class="help-block">Only can be viewed by users logged in</span>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= I18n.t('site.backend_openness_on') %></label>
<div class="controls">
<%= f.check_box :backend_openness_on , :class=>"toggle-check" %>
<span class="help-block">All users can visit backend pages</span>
</div>
</div>
<div class="control-group">
<label class="control-label muted">Disable personal desktop</label>
<div class="controls">
<%= f.check_box :desktop_closed , :class=>"toggle-check" %>
</div>
</div>
</div>
<!-- Language -->
<div id="language-set" class="tab-pane fade">
<!-- <div class="control-group">
<label class="control-label muted">Enable User Language Detection</label>
<div class="controls">
<input type="checkbox" class="toggle-check" data-disabled="true">
</div>
</div> -->
<div class="control-group">
<label class="control-label muted">Default Language</label>
<div class="controls">
<% @site_in_use_locales.each do |locale| %>
<%= check_box_tag :default_locale, locale, (@site.enabled_for.nil?), :class=>"toggle-check" %>
<%= I18nVariable.from_locale(locale) %>
<% end %>
</div>
</div>
<div class="control-group">
<label class="control-label muted">Enable Language</label>
<div class="controls">
<% @site_valid_locales.each do |valid_locale| %>
<%= check_box_tag 'site[enabled_for][]', valid_locale, (@site.enabled_for.nil?), :class=>"toggle-check" %>
<%= I18nVariable.from_locale(valid_locale) %>
<% end %>
<%= hidden_field_tag 'site[enabled_for][]', '' %>
</div>
</div>
</div>
<!-- OrbitBar Them -->
<div id="orbitBar-them" class="tab-pane fade">
<div class="control-group">
<label class="control-label muted">OrbitBar Logo Icon</label>
<div class="controls">
<!-- if this page editing please add class "fileupload-edit" -->
<div class="fileupload fileupload-new clearfix" data-provides="fileupload">
<div class="fileupload-new thumbnail pull-left">
<% if @site.default_image %>
<%= image_tag( @site.default_image, :size=>"120x120") rescue ''%>
<% else %>
<img class="pull-left upload-picture" src="/assets/default-img.png" />
<% end %>
</div>
<div class="fileupload-preview fileupload-exists thumbnail pull-left"></div>
<span class="btn btn-file">
<% if @site.default_image.file.present?%>
<%= f.file_field :default_image, :id => "input-upload", :class => 'fileupload-new', :onchange => "document.getElementById('fu').innerHTML = this.form.fu.value = this.value;" %>Change
<%else%>
<%= f.file_field :default_image, :id => "input-upload", :class => 'fileupload-new', :onchange => "document.getElementById('fu').innerHTML = this.form.fu.value = this.value;" %>Select Image
<%end%>
</span>
<a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Cancel</a>
<div class="controls" data-toggle="buttons-checkbox">
<label class="checkbox inline btn btn-danger fileupload-remove">
<% if @site.default_image.file %>
<label class="checkbox">
<%= check_box_tag 'site[remove_default_image]' %>
<%= t(:delete_) %>
</label>
<% end %>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Form Actions -->
<div class="form-actions">
<%= f.submit t("submit"), :class => "btn btn-primary" %>
<%= f.submit t("cancel"), :class => "btn ", :type => 'reset' %>
</div>
</fieldset>
<%end%>
@@ -1,96 +0,0 @@
<% # encoding: utf-8 %>
<% content_for :side_bar do %>
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
<% end %>
<head>
<%= stylesheet_link_tag "lib/wrap-nav"%>
<%= stylesheet_link_tag "lib/main-forms"%>
<%= stylesheet_link_tag "lib/togglebox"%>
<%= javascript_include_tag 'lib/ckeditor/ckeditor' %>
<%= javascript_include_tag 'lib/ckeditor/replace/site_info' %>
<%= javascript_include_tag 'lib/site_set' %>
</head>
<%= form_for @site, :url => admin_site_path(@site), :html => {:class => "form-horizontal main-forms"} do |f| %>
<fieldset>
<!-- Input Area -->
<div class="input-area">
<!-- Title-->
<div class="control-group input-title">
<label class="control-label muted">Google Search Syntax</label>
<div class="controls">
<%= text_field_tag 'site[search][sitesearch]',(@site.search["sitesearch"] rescue nil),{ :class => "input-block-level" ,:placeholder => t("search.sitesearch") }%>
</div>
</div>
<!-- CKeditor Site Header -->
<div class="control-group input-content">
<label class="control-label muted">Google Analytics Code</label>
<div class="controls">
<div class="textarea">
<%= f.text_area :google_analytics, :class => "input-block-level"%>
</div>
</div>
</div>
<hr>
<!-- Description -->
<div class="control-group">
<label class="control-label muted">Keywords</label>
<div class="controls">
<div class="tab-content textarea-lang">
<div class="btn-group" data-toggle="buttons-radio">
<% @site_valid_locales.each_with_index do |locale, i| %>
<a class="btn <%= ( i == 0 ) ? "active" : '' %>" href="#textarea_<%= locale %>_0" data-toggle="tab"><%= I18nVariable.from_locale(locale) %></a>
<% end %>
</div>
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="tab-pane fade in <%= ( i == 0 ) ? "active" : '' %>" id="textarea_<%= locale %>_0">
<%= f.fields_for :keywords do |f| %>
<%= f.text_area locale, :class=>'resizable', :value => (@site.keywords(locale) rescue nil), :placeholder => I18nVariable.from_locale(locale), :rows=>"3" %>
<% end %>
</div>
<% end %>
</div>
</div>
</div>
<div class="control-group">
<label class="control-label muted">Description</label>
<div class="controls">
<div class="tab-content textarea-lang">
<div class="btn-group" data-toggle="buttons-radio">
<% @site_valid_locales.each_with_index do |locale, i| %>
<a class="btn <%= ( i == 0 ) ? "active" : '' %>" href="#textarea_<%= locale %>_0" data-toggle="tab"><%= I18nVariable.from_locale(locale) %></a>
<% end %>
</div>
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="tab-pane fade in <%= ( i == 0 ) ? "active" : '' %>" id="textarea_<%= locale %>_0">
<%= f.fields_for :description do |f| %>
<%= f.text_area locale, :class=>'resizable', :value => (@site.description(locale) rescue nil), :placeholder => I18nVariable.from_locale(locale), :rows=>"3" %>
<% end %>
</div>
<% end %>
</div>
</div>
</div>
</div>
<!-- Form Actions -->
<div class="form-actions">
<%= f.submit t("submit"), :class => "btn btn-primary" %>
<%= f.submit t("cancel"), :class => "btn ", :type => 'reset' %>
</div>
</fieldset>
<% end %>
+122 -111
View File
@@ -4,116 +4,127 @@
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
<% end %>
<head>
<%= stylesheet_link_tag "lib/wrap-nav"%>
<%= stylesheet_link_tag "lib/main-forms"%>
<%= stylesheet_link_tag "lib/togglebox"%>
<%= javascript_include_tag 'lib/ckeditor/ckeditor' %>
<%= javascript_include_tag 'lib/ckeditor/replace/site_info' %>
<%= javascript_include_tag 'lib/site_set' %>
</head>
<%= form_for @site, :url => admin_site_path(@site), :html => {:class => "form-horizontal main-forms"} do |f| %>
<fieldset>
<!-- Input Area -->
<div class="input-area">
<!-- Language Tabs -->
<div class="nav-name"><strong>Language</strong></div>
<ul class="nav nav-pills language-nav">
<% @site_valid_locales.each do |locale|%>
<%#= raise @site_valid_locales.inspect %>
<%= content_tag :li, link_to(I18nVariable.from_locale(locale), ".#{locale}", :data => {:toggle => "tab"}), :class => (active_when_current_locale_eq locale) %>
<% end %>
</ul>
<!-- Language -->
<div class="tab-content language-area">
<% @site_valid_locales.each do |locale|%>
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
<div class="control-group input-title">
<label class="control-label muted"><%= t 'site.title' %></label>
<div class="controls">
<%= f.fields_for :title_translations do |f| %>
<%= f.text_field locale, :class => "input-xxlarge", :value => (@site.title_translations[locale] rescue nil) %>
<% end %>
</div>
</div>
<% end %>
<% end %>
<!-- Always shoe in the title bar -->
<div class="control-group">
<label class="control-label muted">Always show in the title bar
</label>
<div class="controls">
<%= f.check_box :title_always_on, :class => "toggle-check" %>
</div>
</div>
<hr>
<!-- CKeditor Site Header -->
<% @site_valid_locales.each do |locale|%>
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
<label class="control-label muted"><%= t('site.header')%></label>
<div class="controls">
<div class="textarea">
<%= f.fields_for :sub_menu_translations do |f| %>
<%= f.text_area locale, :class => "ckeditor input-block-level", :value => (@site.sub_menu_translations[locale] rescue nil) %>
<% end %>
</div>
</div>
<%end%>
<%end%>
<!-- Sitemap menu in Header -->
<div class="control-group">
<label class="control-label muted">Sitemap menu in header
</label>
<div class="controls">
<input type="checkbox" class="toggle-check" data-disabled="true">
</div>
</div>
<hr>
<!-- Terms of Use -->
<div class="control-group">
<label class="control-label muted">Terms of Use
</label>
<div class="controls">
<input type="checkbox" class="toggle-check terms" data-disabled="true" checked="checked">
</div>
</div>
<!-- CKeditor Default Terms of Use -->
<div class="control-group input-content hide">
<% @site_valid_locales.each do |locale|%>
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
<label class="control-label muted">Default Terms of Use</label>
<div class="controls">
<div class="textarea">
<%= f.fields_for :terms_of_user_translations do |f| %>
<%= f.text_area locale, :class => "ckeditor input-block-level", :value => (@site.terms_of_user_translations[locale] rescue nil) %>
<% end %>
</div>
</div>
</div>
<%end%>
<%end%>
</div>
<!-- Form Actions -->
<div class="form-actions">
<%= f.submit t("submit"), :class => "btn btn-primary" %>
<%= f.submit t("cancel"), :class => "btn ", :type => 'reset' %>
</div>
<div id="poststuff">
<%= form_for @site, :url => admin_site_path(@site), :html => {:class => "clear"} do |f| %>
<div id="post-body">
<div id="post-body-content" class="clear">
<ul class="nav nav-tabs">
<% @site_valid_locales.each do |locale|%>
<%#= raise @site_valid_locales.inspect %>
<%= content_tag :li, link_to(I18nVariable.from_locale(locale), ".#{locale}", :data => {:toggle => "tab"}), :class => (active_when_current_locale_eq locale) %>
<% end %>
</ul>
<div class="tab-content form-horizontal">
<div class="control-group" style="margin-bottom: 0;">
<div class="controls">
<label class="checkbox">
<%= f.check_box :title_always_on %> <%= t :always_display_title %>
</label>
</div>
</div>
<% @site_valid_locales.each do |locale|%>
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
<div class="control-group">
<label class="control-label"><%= t 'site.title' %></label>
<div class="controls">
<%= f.fields_for :title_translations do |f| %>
<%= f.text_field locale, :class => "input-xxlarge", :value => (@site.title_translations[locale] rescue nil) %>
<% end %>
<p class="help-block"><%= (t 'site.title_help').html_safe %></p>
</div>
</div>
<% end %>
<% end %>
<div class="control-group">
<label class="control-label"><%= t 'site.openness' %></label>
<div class="controls">
<%= f.check_box :frontend_closed %><%= I18n.t('site.frontend_closed') %><br/>
<%= f.check_box :backend_openness_on %><%= I18n.t('site.backend_openness_on') %>
<p class="help-block"><%= (t 'site.search_help').html_safe %></p>
</div>
</div>
<div class="control-group">
<label class="control-label"><%= t 'site.search' %></label>
<div class="controls">
<%= text_field_tag 'site[search][domains]',(@site.search["domains"] rescue nil), {:class => "input-xxlarge" ,:placeholder => t("search.domains") }%>
<%= text_field_tag 'site[search][sitesearch]',(@site.search["sitesearch"] rescue nil),{ :class => "input-xxlarge" ,:placeholder => t("search.sitesearch") }%>
<p class="help-block"><%= (t 'site.search_help').html_safe %></p>
</div>
</div>
</fieldset>
<% end %>
<% @site_valid_locales.each do |locale|%>
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
<div class="control-group">
<label class="control-label"><%= t 'site.keywords' %></label>
<div class="controls">
<%= f.fields_for :keywords do |f| %>
<%= f.text_area locale, :class => "input-xxlarge textarea-height-s", :value => (@site.keywords(locale) rescue nil) %>
<% end %>
<p class="help-block"><%= (t 'site.keywords_help').html_safe %></p>
</div>
</div>
<div class="control-group">
<label class="control-label"><%= t 'site.description' %></label>
<div class="controls">
<%= f.fields_for :description do |f| %>
<%= f.text_area locale, :class => "input-xxlarge textarea-height-s", :value => (@site.description(locale) rescue nil) %>
<% end %>
<p class="help-block"><%= (t 'site.description_help').html_safe %></p>
</div>
</div>
<div class="control-group">
<label class="control-label"><%= t 'site.header' %></label>
<div class="controls">
<%= f.fields_for :sub_menu_translations do |f| %>
<%= f.text_area locale, :class => "tinymce_textarea input-xxlarge", :value => (@site.sub_menu_translations[locale] rescue nil) %>
<% end %>
</div>
</div>
<div class="control-group">
<label class="control-label"><%= t 'site.footer' %></label>
<div class="controls">
<%= f.fields_for :footer_translations do |f| %>
<%= f.text_area locale, :class => "tinymce_textarea input-xxlarge", :value => (@site.footer_translations[locale] rescue nil) %>
<% end %>
<p class="help-block"><%= (t 'site.footer_help').html_safe %></p>
</div>
</div>
<div class="control-group">
<label class="control-label"><%= t 'site.default_image' %></label>
<div class="controls">
<%= f.file_field :default_image, :id => "input-upload", :class => 'upload', :onchange => "document.getElementById('fu').innerHTML = this.form.fu.value = this.value;" %>
<span id='fu' class="file-name"></span>
<!--請程式務必將圖片尺寸加入到行內裡-->
<% if @site.default_image %>
<%= image_tag( @site.default_image, :size=>"120x120") rescue ''%>
<% else %>
<img class="pull-left upload-picture" src="/assets/default-img.png" />
<% end %>
<br>
<% if @site.default_image.file %>
<label class="checkbox">
<%= check_box_tag 'site[remove_default_image]' %>
<%= t(:delete_) %>
</label>
<% end %>
</div>
</div>
<% end %>
<% end %>
<div class="control-group" style="margin-bottom: 0;">
<label class="control-label"><%= t 'site.mobile_version' %></label>
<div class="controls">
<label class="checkbox">
<%= f.check_box :mobile_on %>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="form-actions">
<%= f.submit t("submit"), :class => "btn btn-primary" %>
<%= f.submit t("cancel"), :class => "btn ", :type => 'reset' %>
</div>
<% end %>
</div>
+15 -48
View File
@@ -1,23 +1,21 @@
<head>
<!-- Meta -->
<!--#include virtual="/orbit_4.0.1/include/meta.html"-->
<!-- Basic CSS -->
<!--#include virtual="/orbit_4.0.1/include/basic_css.html"-->
<%= stylesheet_link_tag "lib/wrap-nav"%>
<%= stylesheet_link_tag "lib/filter"%>
<%= stylesheet_link_tag "lib/sitemap"%>
<%= stylesheet_link_tag "lib/togglebox"%>
<%= javascript_include_tag 'lib/sitemap' %>
<%= javascript_include_tag 'lib/masonry.pkgd.min' %>
</head>
<% content_for :side_bar do %>
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
<% end %>
<ul class="nav nav-tabs">
<% @site_valid_locales.each_with_index do |locale, i| %>
<li <%= ( i == 0 ) ? " class=active" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
<% end %>
</ul>
<div class="tab-content">
<% @site_valid_locales.each_with_index do |temp_locale, i| %>
<div class="tab-pane site-map <%= temp_locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<%= render :partial => 'sitemap_block', :collection => @items, :locals => {:temp_locale => temp_locale} %>
</div>
<% end %>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "lib/jquery.masonry.min.js" %>
<script>
@@ -58,35 +56,4 @@
$.getScript('<%= admin_sites_path %>' + '/' + $(this).attr('id') + '/sitemap_toggle?parent=true&temp_locale=' + $(this).attr('temp_locale'));
});
</script>
<% end %>
<section id="main-wrap">
<div class="wrap-inner">
<div id="sitemap">
<ul id="map-tree-language" class="nav nav-pills">
<% @site_valid_locales.each_with_index do |locale, i| %>
<li <%= ( i == 0 ) ? " class=active" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
<% end %>
</ul>
<% @site_valid_locales.each_with_index do |temp_locale, i| %>
<div class="tab-content map-tree-content">
<div class="line"></div>
<ul id="<%= temp_locale %>" class="map-tree tab-pane fade <%= ( i == 0 ) ? "in active" : '' %>">
<%= render :partial => 'sitemap_block', :collection => @items, :locals => {:temp_locale => temp_locale} %>
</ul>
<% end %>
<br/><br/><br/>
<% @site_valid_locales.each_with_index do |temp_locale, i| %>
<div class="tab-pane site-map <%= temp_locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<%= render :partial => 'sitemap_block', :collection => @items, :locals => {:temp_locale => temp_locale} %>
</div>
<% end %>
</div>
</div>
</div>
</section>
<% end %>
@@ -4,7 +4,7 @@
<div class="accordion-inner pagination-right" data-toggle="buttons-checkbox">
<% @roles.each do |role| %>
<%#= link_to role.title, url_for(:filter => @filter, :new_filter => {:type => 'role', :id => role.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn btn-small #{is_filter_active?('role', role.id)}" %>
<%= link_to role.title, url_for(:at=>params[:at],:filter => @filter, :new_filter => {:type => 'role', :id => role.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn btn-small #{' active' if (@filter['role'].include?(role.id) rescue nil)}" %>
<%= link_to role.title, url_for(:filter => @filter, :new_filter => {:type => 'role', :id => role.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn btn-small #{' active' if (@filter['role'].include?(role.id) rescue nil)}" %>
<% end %>
<%= render :partial => 'clear_filters', :locals => {:type => 'role'} %>
@@ -1,10 +1,8 @@
<%= render :partial=>"infos"%>
<div id="roles-area" class="input-area">
<%= render :partial=>"roles"%>
</div>
<% content_for :page_specific_javascript do -%>
Loaded 100 of 529 files, more files were not shown because too many files have changed in this diff. Show more