From 3b89403e083fd09947ed5cd4d7cddf830ba3b7c5 Mon Sep 17 00:00:00 2001 From: Gilles FELIX Date: Fri, 7 Jun 2013 09:31:50 +0200 Subject: [PATCH] Refacotring wysiwyg config mechanism --- .../noviusos_page/static/config/form.js | 5 -- .../views/admin/page_form.view.php | 10 +--- .../classes/controller/admin/wysiwyg.ctrl.php | 27 --------- framework/classes/renderer/wysiwyg.php | 24 +------- framework/classes/tools/wysiwyg.php | 58 +++++++++++++++++++ framework/config/wysiwyg.config.php | 7 ++- static/admin/bundle/nos.min.js | 2 +- .../novius-os/js/jquery.novius-os.wysiwyg.js | 35 +++-------- 8 files changed, 78 insertions(+), 90 deletions(-) diff --git a/framework/applications/noviusos_page/static/config/form.js b/framework/applications/noviusos_page/static/config/form.js index 40c78adb5..c5be15658 100644 --- a/framework/applications/noviusos_page/static/config/form.js +++ b/framework/applications/noviusos_page/static/config/form.js @@ -94,11 +94,6 @@ define( $wysiwyg.append(bloc); // The bottom row from TinyMCE is roughly 21px $wysiwyg.find('[name="wysiwyg[' + i + ']"]').wysiwyg($.extend({}, wysiwyg_options, { - urlEnhancers : true, - container: { - model: 'Nos\\Page\\Model_Page', - id: $page_id.val() - }, height: (coords[3] / data.rows * ratio) - 21, content_css: data.content_css || '' })); diff --git a/framework/applications/noviusos_page/views/admin/page_form.view.php b/framework/applications/noviusos_page/views/admin/page_form.view.php index 4290c8a0b..17bc09855 100644 --- a/framework/applications/noviusos_page/views/admin/page_form.view.php +++ b/framework/applications/noviusos_page/views/admin/page_form.view.php @@ -8,17 +8,13 @@ * @link http://www.novius-os.org */ -\Config::load('wysiwyg', true); -empty($options) and $options = \Config::get('wysiwyg.default_setup', 'default'); -is_string($options) and $options = \Config::get('wysiwyg.setups.'.$options, array()); -$wysiwyg_options = array_merge(\Config::get('wysiwyg.default', array()), $options); - -$item->event('wysiwygOptions', array(&$wysiwyg_options)); +$wysiwyg_options = \Nos\Tools_Wysiwyg::jsOptions(null, $fieldset->getInstance(), true); ?> diff --git a/framework/classes/controller/admin/wysiwyg.ctrl.php b/framework/classes/controller/admin/wysiwyg.ctrl.php index acbb768bb..4fa0a412d 100644 --- a/framework/classes/controller/admin/wysiwyg.ctrl.php +++ b/framework/classes/controller/admin/wysiwyg.ctrl.php @@ -26,31 +26,4 @@ public function action_link($edit = false) return $view; } - - public function action_enhancers() - { - $urlEnhancers = \Input::get('urlEnhancers', false); - $container = \Input::get('container', array()); - - $enhancers = \Nos\Config_Data::get('enhancers', array()); - - if (!$urlEnhancers) { - $enhancers = array_filter($enhancers, function($enhancer) { - return empty($enhancer['urlEnhancer']); - }); - } - - foreach ($enhancers as $key => $enhancer) { - if (empty($enhancer['iconUrl']) && !empty($enhancer['application'])) { - $enhancers[$key]['iconUrl'] = \Config::icon($enhancer['application'], 16); - } - if (!empty($enhancer['check_container']) && is_callable($enhancer['check_container']) && - !call_user_func($enhancer['check_container'], $enhancer, $container)) { - - unset($enhancers[$key]); - } - } - - \Response::json($enhancers); - } } diff --git a/framework/classes/renderer/wysiwyg.php b/framework/classes/renderer/wysiwyg.php index 5cff74e7f..463b19b90 100644 --- a/framework/classes/renderer/wysiwyg.php +++ b/framework/classes/renderer/wysiwyg.php @@ -12,14 +12,7 @@ class Renderer_Wysiwyg extends \Fieldset_Field { - protected static $DEFAULT_RENDERER_OPTIONS = array(); - - public static function _init() - { - \Config::load('wysiwyg', true); - static::$DEFAULT_RENDERER_OPTIONS = \Config::get('wysiwyg.default'); - parent::_init(); - } + protected static $DEFAULT_RENDERER_OPTIONS = 'default'; public function __construct($name, $label = '', array $renderer = array(), array $rules = array(), \Fuel\Core\Fieldset $fieldset = null) { @@ -63,15 +56,7 @@ public function build() parent::build(); $this->fieldset()->append(static::js_init($this->get_attribute('id'))); - $item = $this->fieldset()->getInstance(); - $model = get_class($item); - $pk = \Arr::get($model::primary_key(), 0); - $this->options['container'] = array( - 'model' => $model, - 'id' => $item->{$pk}, - ); - - $item->event('wysiwygOptions', array(&$this->options)); + $this->options = Tools_Wysiwyg::jsOptions($this->options, $this->fieldset()->getInstance()); $this->value = Tools_Wysiwyg::prepare_renderer($this->value); $this->set_attribute('data-wysiwyg-options', htmlspecialchars(\Format::forge()->to_json($this->options))); @@ -95,11 +80,8 @@ protected static function parse_options($renderer = array()) $renderer['id'] = uniqid('wysiwyg_'); } - empty($options) and $options = \Config::get('wysiwyg.default_setup', 'default'); - is_string($options) and $options = \Config::get('wysiwyg.setups.'.$options, array()); - // Default options of the renderer - $renderer_options = array_merge(static::$DEFAULT_RENDERER_OPTIONS, $options); + $renderer_options = Tools_Wysiwyg::jsOptions(static::$DEFAULT_RENDERER_OPTIONS); if (!empty($renderer['renderer_options'])) { $renderer_options = \Arr::merge($renderer_options, $renderer['renderer_options']); diff --git a/framework/classes/tools/wysiwyg.php b/framework/classes/tools/wysiwyg.php index 701fe57e4..a9a7e6893 100644 --- a/framework/classes/tools/wysiwyg.php +++ b/framework/classes/tools/wysiwyg.php @@ -12,6 +12,14 @@ class Tools_Wysiwyg { + protected static $_options = array(); + + public static function _init() + { + \Config::load('wysiwyg', true); + static::$_options = \Config::get('wysiwyg.default'); + } + public static function prepare_renderer($content) { $replaces = array(); @@ -57,4 +65,54 @@ public static function parse_medias(&$content, $closure) } } } + + /** + * Return an array of options for the initialisation of wysiwyg + * + * @param mixed $options Can be a string (the name of the default setup) or an array of options to merge with. + * @param Orm\Model $item Model instance of the container of the wysiwyg + * @param bool $urlEnhancers If true, the wysiwyg will accept URL enhancers in applications selector. + * @return array Options for wysiwyg + */ + public static function jsOptions($options = null, Orm\Model $item = null, $urlEnhancers = false) + { + empty($options) and $options = \Config::get('wysiwyg.default_setup', 'default'); + is_string($options) and $options = \Config::get('wysiwyg.setups.'.$options, array()); + + $options = array_merge(static::$_options, $options); + + if (!empty($item)) { + $model = get_class($item); + $pk = \Arr::get($model::primary_key(), 0); + $options['container'] = array( + 'model' => $model, + 'id' => $item->{$pk}, + ); + + $enhancers = Config_Data::get('enhancers', array()); + + if (!$urlEnhancers) { + $enhancers = array_filter($enhancers, function($enhancer) { + return empty($enhancer['urlEnhancer']); + }); + } + + foreach ($enhancers as $key => $enhancer) { + if (empty($enhancer['iconUrl']) && !empty($enhancer['application'])) { + $enhancers[$key]['iconUrl'] = \Config::icon($enhancer['application'], 16); + } + if (!empty($enhancer['check_container']) && is_callable($enhancer['check_container']) && + !call_user_func($enhancer['check_container'], $enhancer, $item)) { + + unset($enhancers[$key]); + } + } + + $options['theme_nos_enhancers'] = $enhancers; + + $item->event('wysiwygOptions', array(&$options)); + } + + return $options; + } } diff --git a/framework/config/wysiwyg.config.php b/framework/config/wysiwyg.config.php index 7199a922c..3ed5e11e4 100644 --- a/framework/config/wysiwyg.config.php +++ b/framework/config/wysiwyg.config.php @@ -10,7 +10,12 @@ return array( 'default' => array( - 'language' => '', + // IE 10 bugfix to make div:hover working in CSS (to show enhancer actions) + 'doctype' => '', + 'theme' => 'nos', + 'skin' => 'bootstrap', + 'plugins' => 'spellchecker,xhtmlxtras,style,table,advlist,inlinepopups,media,searchreplace,paste,noneditable,visualchars,nonbreaking', + 'paste_text_use_dialog' => true, ), 'default_setup' => 'default', diff --git a/static/admin/bundle/nos.min.js b/static/admin/bundle/nos.min.js index 286d6542f..7175961f0 100644 --- a/static/admin/bundle/nos.min.js +++ b/static/admin/bundle/nos.min.js @@ -7,7 +7,7 @@ * @link http://www.novius-os.org */ define("jquery-nos-validate",["jquery","jquery.validate","wijmo.wijtooltip"],function(b){var a=function(g,h){var d=this;if(!d.counter){d.counter=1}var c=b(g);var e=this.errorsFor(g);if(e.length){e.removeClass(this.settings.validClass).addClass(this.settings.errorClass);e.closest(".wijmo-wijaccordion-content").prev().addClass(this.settings.errorClass)}else{e=b("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(g),generated:true}).addClass(this.settings.errorClass).css({background:"transparent",border:"0",padding:"0 4px",width:"32px",verticalAlign:"middle"}).html('');e.wijtooltip({group:"group_"+d.counter++,showCallout:false,calloutFilled:true,closeBehavior:"sticky",position:{my:"right top",at:"center bottom",offset:"0 0"},triggers:"click",content:h,showing:function(l,k){b(k.element).addClass("ui-state-error")}});if(!this.labelContainer.append(e).length){this.settings.errorPlacement?this.settings.errorPlacement(e,b(g)):e.insertAfter(g)}var f=e.data("wijmo-wijtooltip");f._tooltipCache._$tooltip.addClass("nos-tooltip-error");var i=f._tooltipCache._$tooltip;i.find(".wijmo-wijtooltip-close").click(function(){e.data("wijtooltip-manuallyclosed",true)}).removeClass("wijmo-wijtooltip-close").css({background:"none",border:"none",display:"block",height:"16px",position:"absolute",right:"3px",top:"3px",width:"16px"}).parent().removeClass("ui-state-default").addClass("ui-state-error");i.find(".wijmo-wijtooltip-container").addClass("ui-state-error ui-corner-all");e.click(function(){if(i.is(":hidden")&&!c.is(".media")){e.data("wijtooltip-manuallyclosed",false);e.wijtooltip("show")}else{e.data("wijtooltip-manuallyclosed",true);e.wijtooltip("hide")}});var j=b(g).closest(".wijmo-wijaccordion-content").prev().addClass(this.settings.errorClass).removeClass(this.settings.validClass);if(c.hasClass("media")){e.insertAfter(c.closest(".ui-inputfilethumb"));c.closest(".ui-inputfilethumb").find(".ui-inputfilethumb-thumb").addClass(this.settings.errorClass).removeClass(this.settings.validClass);c.bind("change.validation",function(){b(this).valid()})}j.closest(".wijmo-wijaccordion").unbind("wijaccordionselectedindexchanged").bind("wijaccordionselectedindexchanged",function(n,l){var m=b(this).find(".wijmo-wijaccordion-content");var k=m.eq(l.newIndex).find("label[generated=true]");if(k.data("wijtooltip-manuallyclosed")){}else{k.wijtooltip("show")}});j.closest(".wijmo-wijaccordion").bind("wijaccordionbeforeselectedindexchanged",function(m,k){var l=b(this).find(".wijmo-wijaccordion-content");l.eq(k.prevIndex).find("label[generated=true]").wijtooltip("hide")});if(e.is(":visible")){e.wijtooltip("show")}else{e.wijtooltip("hide")}}if(!h&&this.settings.success){e.wijtooltip("hide");e.wijtooltip("destroy");e.closest(".wijmo-wijaccordion-content").prev().addClass(this.settings.validClass).removeClass(this.settings.errorClass);if(c.hasClass("media")){c.closest(".ui-inputfilethumb").find(".ui-inputfilethumb-thumb").addClass(this.settings.validClass).removeClass(this.settings.errorClass);c.unbind("change.validation")}e.removeClass(this.settings.errorClass).addClass(this.settings.validClass);e.remove()}this.toShow=this.toShow.add(e)};b.extend(b.validator.prototype,{showLabel:a,optional:function(c){return !b.validator.methods.required.call(this,b.trim(c.value),c)}})}); -define("jquery-nos-wysiwyg",["module","jquery-nos","jquery","tinymce"],function(a,b){b.fn.wysiwyg=function(d){var c=b(this);d=b.extend({urlEnhancers:null,container:null},d||{});b.ajax({dataType:"json",url:"admin/nos/wysiwyg/enhancers",data:{urlEnhancers:d.urlEnhancers,container:d.container},success:function(e){var f=b("base").attr("href");d=b.extend({document_base_url:f,language:b.nosLang.substr(0,2),script_url:f+"static/novius-os/admin/vendor/tinymce/tiny_mce_jquery"+(a.config().minified?"":"_src")+".js",doctype:'',theme:"nos",skin:"bootstrap",plugins:"spellchecker,xhtmlxtras,style,table,advlist,inlinepopups,media,searchreplace,paste,noneditable,visualchars,nonbreaking",paste_text_use_dialog:true,theme_nos_enhancers:e},d||{});b(c).tinymce(d)}})};return b}); +define("jquery-nos-wysiwyg",["module","jquery-nos","jquery","tinymce"],function(a,b){b.fn.wysiwyg=function(d){var c=b(this);var e=b("base").attr("href");d=b.extend({document_base_url:e,language:b.nosLang.substr(0,2),script_url:e+"static/novius-os/admin/vendor/tinymce/tiny_mce_jquery"+(a.config().minified?"":"_src")+".js"},d||{});b(c).tinymce(d)};return b}); define("jquery-nos",["jquery","jquery-nos-validate","jquery-form","jquery-ui.button","wijmo.wijexpander","wijmo.wijaccordion","wijmo.wijdialog"],function(e){var g=void (0),f=window.$nos=e,b=g,a=false,c=function(){if(b===g){b=e(".nos-ostabs")}return b},d={dialogOpened:[],dialogFocused:-1,open:function(k){var h=this,j=k.data("callbacks.nosdialog"),i=e.inArray(k[0],h.dialogOpened);if(i===-1){h.dialogOpened.push(k[0])}if(!e.isPlainObject(j)){k.data("callbacks.nosdialog",{})}},focus:function(k){var h=this,j=k.data("callbacks.nosdialog"),i=e.inArray(k[0],h.dialogOpened);if(i!==-1){h.dialogOpened.splice(i,1)}h.dialogOpened.push(k[0]);h.dialogFocused=k[0];if(e.isPlainObject(j)){e.each(j,function(l,m){h.fireDialogEvent(k,m)});k.data("callbacks.nosdialog",{})}},close:function(j){var h=this,i=e.inArray(j[0],h.dialogOpened);if(i!==-1){h.dialogOpened.splice(i,1)}if(i>0){h.focus(e(h.dialogOpened[i-1]))}},fireDialogEvent:function(i,h){var k=i.find("> iframe");if(k.size()){if(k[0].contentDocument.$){k[0].contentDocument.$("body").trigger(h)}}else{try{i.trigger(h)}catch(j){log("fireDialogEvent error",j,h)}}},dispatchEvent:function(i){var h=this;e.each(h.dialogOpened,function(){var k=e(this);if(this===h.dialogFocused){h.fireDialogEvent(k,i)}else{var j=k.data("callbacks.nosdialog");if(e.isPlainObject(j)){j[i.type+(i.namespace?"."+i.namespace:"")]=i}}})}};e.extend({nosTexts:{chooseMediaFile:"Choose a media file",chooseMediaImage:"Choose a image",errorImageNotfind:"We’re afraid we cannot find this image."},nosContext:function(h){h=e.extend({locales:{},sites:{},contexts:{}},h||{});return{locales:h.locales,sites:h.sites,contexts:h.contexts,label:function(i){if(e.type(i)==="string"){i={defaultLabel:i}}i=e.extend({oneLocale:i.allContexts,oneSite:i.allContexts},i);if(Object.keys(this.sites).length===1){return i.oneSite}else{if(Object.keys(this.locales).length===1){return i.oneLocale}}return i.defaultLabel},siteLabel:function(j,i){i=e.extend({"short":false},i||{});if(e.type(j)!=="object"){j=this.site(j)}j=e.extend({alias:j},j);if(i["short"]){return''+j.alias+""}else{return j.title}},localeLabel:function(i,j){j=e.extend({"short":false},j||{});if(e.type(i)!=="object"){i=this.locale(i)}i=e.extend({flag:i.code.substr(0,2).toLowerCase()},i);if(j["short"]){return''}else{return i.title+' '}},contextLabel:function(m,l){var k=this.site(m),i=this.locale(m),j;l=e.extend({"short":false,template:"{site} {locale}"},l||{});if(Object.keys(this.sites).length===1){j=this.localeLabel(i,l)}else{if(Object.keys(this.locales).length===1){j=this.siteLabel(k,l)}else{j=l.template.replace("{locale}",this.localeLabel(i,{"short":true})).replace("{site}",this.siteLabel(k,l))}}return j},localeCode:function(j){var i=j.split("::",2);if(!i[1]){return j}return i[1]},locale:function(i){var j=this.localeCode(i);if(!this.locales[j]){return{code:j,title:j,flag:j.substr(0,2).toLowerCase()}}return e.extend({code:j},this.locales[j])},siteCode:function(j){var i=j.split("::",2);return i[0]},site:function(j){var i=this.siteCode(j);if(!this.sites[i]){return{code:i,title:i,alias:i}}return e.extend({code:i},this.sites[i])}}},nosDispatchEvent:function(i){if(window.parent!=window&&window.parent.$nos){return window.parent.$nos.nosDispatchEvent(i)}var h=c(),j=e.Event("noviusos",{noviusos:i});h.ostabs("dispatchEvent",j);d.dispatchEvent(j);return e},nosNotify:function(h,i){if(window.parent!=window&&window.parent.$nos){return window.parent.$nos.nosNotify(h,i)}if(!e.isPlainObject(h)){h={title:h}}if(i!==g){e.extend(h,e.isPlainObject(i)?i:{type:i})}if(e.isPlainObject(h)){require(["link!static/novius-os/admin/vendor/jquery/pnotify/jquery.pnotify.default.css","static/novius-os/admin/vendor/jquery/pnotify/jquery.pnotify"],function(){return e.pnotify(e.extend({styling:"jqueryui",history:false,addclass:"nos-notification"},h))})}return false},nosMediaVisualise:function(i){if(!i.image){window.open(i.path);return}var h=this.offset();h={top:h.top+this.height()/2-16,left:h.left+this.width()/2};require(["wijmo.wijlightbox"],function(){var j=new Image();j.onerror=function(){e.nosNotify(e.nosTexts.errorImageNotfind,"error")};j.onload=function(){var k=e("
").find("a").attr({href:i.path,rel:"wijlightbox"}).find("img").attr({src:i.path,title:i.title}).css({width:0,height:0}).end().end().css({position:"absolute",width:0,height:0}).css(h).appendTo(document.body).wijlightbox({zIndex:1201,textPosition:"outside",player:"img",dialogButtons:"fullsize",modal:true,open:function(){e(".wijmo-wijlightbox-overlay").css("z-index",1200)},close:function(l){k.wijlightbox("destroy");k.remove()}});k.find("a").triggerHandler("click")};j.src=i.path})},nosUIElement:function(k,l){var j,m,h,i;k=e.extend({type:"button",bind:{}},k);if(k.action){k.bind.click=e.extend(true,{},k.action);delete k.action}switch(k.type){case"button":i=e("").data(k);if(k.label){i.html(k.label)}break;case"link":if(k.iconClasses){h=k.iconClasses}else{if(k.icon){h="nos-inline-icon16 ui-icon ui-icon-"+k.icon}}i=(h?' ':"");i+=''+k.label+"";i=e('').css({display:"inline-block"}).html(i);if(k.red){i.addClass("ui-state-error")}break}if(k.disabled&&k.disabled!==false){switch(k.type){case"button":i.attr("disabled",true);break;case"link":i.addClass("faded");break}if(e.type(k.disabled)==="string"){i.attr("title",k.disabled)}}if(i){e.each(k.bind,function(n,o){i.bind(n,function(p){p.preventDefault();if(!k.disabled){i.nosAction(o,l)}})});if(k.menu){j=new Date();m=j.getDate()+"_"+j.getHours()+"_"+j.getMinutes()+"_"+j.getSeconds()+"_"+j.getMilliseconds();i.attr("id",m).nosOnShow("one",function(){var n=e("");e.each(k.menu.menus,function(){var p=this,o=e("
  • ").data("action",p.action).appendTo(n).find("a");if(p.content){o.append(p.content)}else{if(p.icon){e("").addClass("ui-icon wijmo-wijmenu-icon-left ui-icon-"+p.icon).appendTo(o)}else{if(p.iconClasses){e("").addClass("wijmo-wijmenu-icon-left "+p.iconClasses).appendTo(o)}else{if(p.iconUrl){e("").addClass("wijmo-wijmenu-icon-left nos-icon16").css("backgroundImage","url("+p.iconUrl+")").appendTo(o)}}}if(p.label){e("").addClass("wijmo-wijmenu-text").html(p.label).appendTo(o)}}});n.insertAfter(i).wijmenu(e.extend(true,{orientation:"vertical",animation:{animated:"slide",option:{direction:"up"},duration:50,easing:null},hideAnimation:{animated:"slide",option:{direction:"up"},duration:0,easing:null}},k.menu.options||{},{trigger:"#"+m,select:function(p,o){var q=e(o.item.element);q.nosAction(q.data("action"))}}))})}}return i},nosDataReplace:function(i,h){if(e.type(i)==="string"){return i.replace(/{{([\w]+)}}/g,function(m,l,k,j){return h[l]||""}).replace(/{{urlencode:([\w]+)}}/g,function(m,l,k,j){return encodeURIComponent(h[l]||"")}).replace(/{{htmlspecialchars:([\w]+)}}/g,function(m,l,k,j){return(h[l]||"").replace(/0&&e.inArray(h[0],["one","bind","show"])!==-1){j=h.shift()}switch(j){case"one":case"bind":var i=h[0];if(!e.isFunction(i)){return}this.each(function(){var l=e(this),k=l.data("nos-on-show")||0;l.addClass("nos-on-show").data("nos-on-show",k+(j==="bind"?1:0))[j]("nos-on-show",i);if(l.is(":visible")){l.nosOnShow()}});break;case"show":this.not(".nos-on-show-exec").addClass("nos-on-show-exec").each(function(){var l=e(this),k=l.data("nos-on-show")||0;if(l.is(".nos-on-show")){l.css("display","block")}if(!l.is(":visible")){return true}if(l.is(".nos-on-show")){if(!k){l.removeClass("nos-on-show")}l.trigger("nos-on-show")}l.find(".nos-on-show").not(".nos-on-show-exec").nosOnShow()}).removeClass("nos-on-show-exec");break}return this},nosDialog:function(){var l=Array.prototype.slice.call(arguments),h="open";if(l.length>0&&e.inArray(l[0],["open","close"])!==-1){h=l.shift()}switch(h){case"open":if(this.is(".ui-dialog-content")){this.closest(".ui-dialog").show().appendTo("body");this.wijdialog("open");return this}var p=l[0]||{},q=e.extend(true,{},{destroyOnClose:true,width:window.innerWidth-200,height:window.innerHeight-100,modal:true,captionButtons:{pin:{visible:false},refresh:{visible:p.contentUrl!=null&&!p.ajax},toggle:{visible:false},minimize:{visible:false},maximize:{visible:false}}},p),m={open:q.open,close:q.close,focus:q.focus},n=this.closest(".nos-dispatcher, body"),o=this,i=e("
    ").addClass("nos-dispatcher").appendTo(n);e.extend(q,{close:function(s,r){d.close(i);if(e.isFunction(m.close)){m.close.apply(i,arguments)}if(q.destroyOnClose){i.wijdialog("destroy").remove()}else{i.closest(".ui-dialog").hide().appendTo(n)}},focus:function(s,r){d.focus(i);if(e.isFunction(m.focus)){m.focus.apply(i,arguments)}},open:function(s,r){d.open(i);if(e.isFunction(m.open)){m.open.apply(i,arguments)}}});if(q.content!==g){i.append(q.content)}if(q["class"]!==g){i.addClass(q["class"])}if(q.title){q.title=e.nosCleanupTranslation(q.title)}var k=true;if(q.ajax&&q.contentUrl){var j=q.contentUrl;delete q.contentUrl;q.autoOpen=false;i.wijdialog(q);i.nosAjax({url:j,type:"GET",dataType:"html",data:q.ajaxData||{},complete:function(t,r,u){u=t.responseText;if(t.state()==="resolved"){t.done(function(w){u=w});try{var s=e.parseJSON(u);k=false}catch(v){}if(k){i.wijdialog("open").html(u);e.isFunction(q.dialogRendered)&&q.dialogRendered(i)}else{i.empty().wijdialog("destroy").remove();o.nosAjaxSuccess(s)}}}})}else{i.wijdialog(q);e.isFunction(q.dialogRendered)&&q.dialogRendered(i)}if(k&&e.isFunction(q.onLoad)){q.onLoad()}return i;break;case"close":this.closest(":wijmo-wijdialog").wijdialog("close");break}return this},nosListenEvent:function(h,m,k){var i=this,l=this.closest(".nos-dispatcher, body"),j=l.data("noviusos-listens");k=k||null;if(!e.isArray(j)){l.on("noviusos",function(n){n.noviusos=n.noviusos||{};e.each(l.data("noviusos-listens"),function(r,q){var p=q.json_match,s=q.callback,o=false;e.each(p,function(t,u){var v=true;e.each(u,function(x,y){if(!e.isArray(n.noviusos[x])&&!e.isArray(y)){v=n.noviusos[x]===y}else{if(e.isArray(n.noviusos[x])&&!e.isArray(y)){v=e.inArray(y,n.noviusos[x])!==-1}else{if(!e.isArray(n.noviusos[x])&&e.isArray(y)){v=e.inArray(n.noviusos[x],y)!==-1}else{if(e.isArray(n.noviusos[x])&&e.isArray(y)){var w=false;e.each(y,function(z,A){w=e.inArray(A,n.noviusos[x])!==-1;return !w});v=w}}}}return v});if(v){o=true;return false}});if(o){s(n.noviusos)}})})}j=e.isArray(j)?j:[];j.push({caller:k,json_match:e.isArray(h)?h:[h],callback:m});l.data("noviusos-listens",j);return i},nosUnlistenEvent:function(j){var h=this,k=this.closest(".nos-dispatcher, body"),i=k.data("noviusos-listens");if(e.isArray(i)){i=e.extend(true,[],i);for(var l=0;l0&&e.inArray(i[0],["open","close","add","update","init","current"])!==-1){k=i.shift()}switch(k){case"open":(function(){var o=i[0]||{},n=i[1]||{},m=h.closest(".ui-dialog-content").size();if(m){h.nosDialog(e.extend({contentUrl:o.url,ajax:!o.iframe,title:o.label},n))}else{if(window.parent!=window&&window.parent.$nos){window.parent.$nos(window.frameElement).nosTabs("open",o,n)}else{if(c().length){var l=c().ostabs("tabs"),p=false;e.each(l,function(r,q){if(q.url===o.url){p=r;return false}});if(p!==false){return c().ostabs("select",p+1)}else{h.nosTabs("add",o)}}else{if(o.url){window.open(o.url)}}}}})();break;case"add":(function(){var p=i[0],o=i[1]||{},n=h.closest(".ui-dialog-content").size(),l=i[2]||"end";if(n){h.nosDialog(e.extend({contentUrl:p.url,ajax:!p.iframe,title:p.label},o))}else{if(window.parent!=window&&window.parent.$nos){window.parent.$nos(window.frameElement).nosTabs("add",p,l)}else{var m;if(e.inArray(l,["before","after"])!==-1){m=j(h)+(l==="before"?-1:1)}if(c().length){m=c().ostabs("add",p,m);c().ostabs("select",m)}else{if(p.url){window.open(p.url)}}}}})();break;case"close":(function(){var m=h.closest(":wijmo-wijdialog");if(m.size()){h.nosDialog("close")}else{if(window.parent!=window&&window.parent.$nos){window.parent.$nos(window.frameElement).nosTabs("close")}else{var l=j(h);if(c().length){c().ostabs("remove",l)}}}})();break;case"update":(function(){var m=i[0];if(window.parent!=window&&window.parent.$nos){window.parent.$nos(window.frameElement).nosTabs("update",m)}else{if(h.size()&&!h.closest(".ui-dialog-content").size()&&c().length){var l=j(h);c().ostabs("update",l,m)}}})();break;case"current":return(function(){if(window.parent!=window&&window.parent.$nos){return window.parent.$nos(window.frameElement).nosTabs("current")}else{if(c().length){return c().ostabs("current")}}return null})();break;case"init":(function(){var n=i[0],m=false,l=function(){if(c().length){if(m){clearTimeout(m)}m=setTimeout(function(){c().nosSaveUserConfig("tabs",{selected:c().ostabs("option","selected"),tabs:c().ostabs("tabs")})},500)}};b=h;e.extend(n,{add:l,remove:l,select:l,show:l,drag:l,update:l});if(n.user_configuration["tabs"]){if(!n.options){n.options={}}n.initTabs=n.user_configuration["tabs"]["tabs"];n.selected=n.user_configuration["tabs"]["selected"]}b.ostabs(n)})();break}return this},nosToolbar:function(){var i=Array.prototype.slice.call(arguments),j="add",h=this;if(i.length>0&&e.inArray(i[0],["create","add"])!==-1){j=i.shift()}switch(j){case"create":return(function(){var k=e('
    ').addClass("nos-toolbar ui-widget-header").insertBefore(h);h.addClass("nos-toolbar-target fill-parent nos-fixed-content").parent().addClass("nos-toolbar-parent");return k})();break;case"add":return(function(){var n=i[0],l=i[1],k=h.closest(".nos-toolbar-target"),m,o;if(!k.size()){h.nosToolbar("create");k=h}m=k.prev();o=e(n);e("").append(o).appendTo(m.find("tr.nos-toolbar-"+(l?"right":"left"))).nosFormUI();k.css({top:m.outerHeight(),bottom:0,height:"auto"});return o})();break}return this}});e.widget("wijmo.wijtextbox",{});e.widget("wijmo.wijradio",{});e.widget("wijmo.wijcheckbox",{});e.widget("wijmo.wijdropdown",{});return e}); define("jquery-nos-loadspinner",["jquery","jquery-nos","jquery-ui.widget"],function(a){a.widget("nos.loadspinner",{options:{diameter:40,color:null,density:40,range:1.3,scaling:false,fading:true,shape:"circle",speed:2,fps:24},shapes:["circle","square","rectangle","roundedRectangle"],colorReg:/^\#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,colorRgb:/^rgb\((\d+)[ \,]+(\d+)[ \,]+(\d+)\)$/,UISpinnerCanvas:null,UISpinnerContext:null,UISpinnerCacheCanvas:null,UISpinnerCacheContext:null,running:false,ready:false,timer:null,activeId:0,colorRGB:null,_create:function(){this.UISpinnerCanvas=a("").attr("id","CanvasLoader").get(0);this.UISpinnerContext=this.UISpinnerCanvas.getContext("2d");this.element.append(this.UISpinnerCanvas);this.UISpinnerCanvas.width=this.UISpinnerCanvas.height=this.options.diameter;this.UISpinnerCacheCanvas=a("").get(0);a("body").append(this.UISpinnerCacheCanvas);this.UISpinnerCacheContext=this.UISpinnerCacheCanvas.getContext("2d");this.UISpinnerCacheCanvas.width=this.UISpinnerCacheCanvas.height=this.options.diameter;a(this.UISpinnerCacheCanvas).hide()},_init:function(){if(!this.options.color){this.options.color=this.element.css("color")}this._setOption("color",this.options.color);this.ready=true;this._draw();this.start()},_setOption:function(c,d){var b=this;switch(c){case"diameter":if(isNaN(d)){return}d=Math.round(Math.abs(d));break;case"color":this.colorRGB=this._RGB(d);break;case"shape":if(a.inArray(d,this.shapes)==-1){return}break;case"density":if(isNaN(d)){return}d=Math.round(Math.abs(d));break;case"range":if(isNaN(d)){return}d=Math.abs(d);break;case"speed":if(isNaN(d)&&Math.abs(d)>0){return}d=Math.round(Math.abs(d));break;case"fps":if(isNaN(d)){return}d=Math.round(Math.abs(d));break}a.Widget.prototype._setOption.apply(b,arguments);if(a.inArray(c,["diameter","color","shape","density","range","scaling","fading"])!=-1){this._redraw()}else{if(a.inArray(c,["speed","fps"])!=-1){this._reset()}}},_RGB:function(c){var b={};if(this.colorReg.test(c)){c=c.charAt(0)==="#"?c.substring(1,7):c;if(c.length==3){c=c+c}b.r=parseInt(c.substring(0,2),16);b.g=parseInt(c.substring(2,4),16);b.b=parseInt(c.substring(4,6),16)}else{if(this.colorRgb.exec(c)){b.r=parseInt(RegExp.$1);b.g=parseInt(RegExp.$2);b.b=parseInt(RegExp.$3)}else{b.r=0;b.g=0;b.b=0}}return b},_draw:function(){var e=0,o=this.options.diameter*0.07,d,k,n,j,m,l,c,g=0.1,b=Math.round(this.options.density*this.options.range),f;this.UISpinnerCacheContext.clearRect(0,0,this.UISpinnerCacheCanvas.width,this.UISpinnerCacheCanvas.height);this.UISpinnerCanvas.width=this.UISpinnerCanvas.height=this.UISpinnerCacheCanvas.width=this.UISpinnerCacheCanvas.height=this.options.diameter;switch(this.options.shape){case this.shapes[0]:while(e360?this.options.density/360:360/this.options.density;c*=this.options.speed;if(!b){this.activeId+=c}if(this.activeId>360){this.activeId-=360}this.UISpinnerContext.clearRect(0,0,this.options.diameter,this.options.diameter);this.UISpinnerContext.save();this.UISpinnerContext.translate(this.options.diameter*0.5,this.options.diameter*0.5);this.UISpinnerContext.rotate(Math.PI/180*this.activeId);this.UISpinnerContext.translate(-this.options.diameter*0.5,-this.options.diameter*0.5);this.UISpinnerContext.drawImage(this.UISpinnerCacheCanvas,0,0,this.options.diameter,this.options.diameter);this.UISpinnerContext.restore();return this},start:function(){if(!this.running){this.running=true;var b=this;this.timer=window.setInterval(function(){b._tick()},Math.round(1000/this.options.fps))}return this},stop:function(){if(this.running){this.running=false;clearInterval(this.timer);this.timer=null;delete this.timer}return this},destroy:function(){if(this.running){this.stop()}a(this.UISpinnerCanvas).remove();a(this.UISpinnerCacheCanvas).remove();a.Widget.prototype.destroy.apply(this);return this}});return a}); define("jquery-nos-ostabs",["jquery","jquery-nos","jquery-ui.widget","jquery-nos-loadspinner","jquery-ui.sortable","wijmo.wijsuperpanel","wijmo.wijmenu","modernizr"],function(a){var b=void (0);a.widget("nos.ostabs",{options:{initTabs:[],newTab:"appsTab",trayView:[],appsTab:{},fx:null,labelMinWidth:100,labelMaxWidth:200,selected:null,texts:{newTab:"New tab",closeTab:"Close tab",closeTabs:"Close all tabs",closeOtherTabs:"Close all other tabs",confirmCloseOtherTabs:"Are you sure to want to close all other tabs?",confirmCloseTabs:"Are you sure to want to close all tabs?",reloadTab:"Reload tab"},add:null,remove:null,select:null,show:null,drag:null},tabId:0,openRank:0,_create:function(){var c=this,d=c.options;c._tabify(true);a(window).resize(function(){if(d.selected){c._firePanelEvent(c.panels.eq(d.selected),a.Event("resizePanel"))}})},_setOption:function(d,e){var c=this;if(d=="selected"){c.select(e)}else{c.options[d]=e;c._tabify()}},_getNextTabId:function(){var c=this;return ++c.tabId},_tabId:function(c){var d=this;return a(c).data("panelid.tabs")||"nos-ostabs-"+d._getNextTabId()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_ui:function(c,d){var e=this,f=e.lis.index(c);if(d===b){d=e.element.find(e._sanitizeSelector(a(e.anchors[f]).data("anchor.tabs")))[0]}return{tab:c,panel:d,index:f}},_cleanup:function(){var c=this;c.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span.nos-ostabs-icon").removeClass("nos-ostabs-loader").each(function(){if(a.isFunction(a.fn.loadspinner)){a(this).loadspinner("destroy")}}).html(" ");return c},_tabify:function(p){var q=this,f=q.options,d=/^#.+/;if(p){q.element.addClass("nos-ostabs ui-widget ui-widget-content"+(Modernizr.touch?" nos-ostabs-touch":""));q.uiOstabsHeader=a("
    ").addClass("nos-ostabs-header").appendTo(q.element);q.uiOstabsSuperPanel=a("
    ").addClass("nos-ostabs-tabs").appendTo(q.uiOstabsHeader);q.uiOstabsTray=a("
    ").addClass("nos-ostabs-tray nos-ostabs-nav");if(f.trayView!==null){q.uiOstabsTray.html(f.trayView)}q.uiOstabsTray.prependTo(q.uiOstabsHeader);q.uiOstabsTray.find("#menu").wijmenu();if(a.isPlainObject(f.appsTab)){q.uiOstabsAppsTab=a("
      ").addClass("nos-ostabs-appstab nos-ostabs-nav").prependTo(q.uiOstabsHeader);q._add(f.appsTab,q.uiOstabsAppsTab,true).addClass("nos-ostabs-appstab").removeClass("ui-state-default")}else{q.uiOstabsAppsTab=a("
        ")}q.uiOstabsSuperPanel.css("left",q.uiOstabsAppsTab.outerWidth(true)+25).css("right",q.uiOstabsTray.outerWidth(true)+35).wijsuperpanel({allowResize:false,autoRefresh:true,hScroller:{scrollBarVisibility:"hidden",scrollMode:"buttons",increaseButtonPosition:{my:"left bottom",at:"right bottom"},decreaseButtonPosition:{my:"right bottom",at:"left bottom"}},vScroller:{scrollBarVisibility:"hidden"},showRounder:false}).removeClass("ui-widget ui-widget-content").css("overflow","visible");q.uiOstabsSuperPanelContent=q.uiOstabsSuperPanel.wijsuperpanel("getContentElement");q.uiOstabsTabs=a("
          ").appendTo(q.uiOstabsSuperPanelContent);if(a.isArray(f.initTabs)){a.each(f.initTabs,function(o,r){q._add(r)})}var e=f.newTab;if(a.isPlainObject(e)){e=a.extend({label:f.texts.newTab,iconClasses:"ui-icon ui-icon-circle-plus"},e)}else{if(e&&a.isPlainObject(f.appsTab)){e=a.extend({},f.appsTab,{label:f.texts.newTab,iconClasses:"ui-icon ui-icon-circle-plus",iconUrl:"",iconSize:16})}else{e=false}}if(e){q.uiOstabsNewTab=q._add(e,null,true).addClass("nos-ostabs-newtab")}else{q.uiOstabsNewTab=a("
        • /
        • ")}q.uiOstabsNewTab.hover(function(){a(this).find(".nos-ostabs-label").css("display","inline-block");q._tabsWidth()},function(){a(this).find(".nos-ostabs-label").css("display","none");q._tabsWidth()});q.uiOstabsTabs.sortable({items:"li:not(.nos-ostabs-newtab)",appendTo:q.uiOstabsSuperPanelContent,cursor:"move",delay:250,scroll:false,helper:"clone",tolerance:"pointer",axis:"x",zIndex:100000,placeholder:"ui-state-highlight",forcePlaceholderSize:true,start:function(){q.sorting=true},stop:function(){q.sorting=false},update:function(){q._trigger("drag",null);q.lis=q.uiOstabsAppsTab.add(q.uiOstabsTabs).find("li");q.anchors=q.lis.map(function(r){var o=a("a",this)[0];q.element.find(q._sanitizeSelector(a(o).data("anchor.tabs"))).find(".nos-ostabs-panel-content").data("nos-ostabs-index",r);return o});q._tabsWidth()}});q.tabsWidth=q.uiOstabsSuperPanelContent.width();q.labelWidth=f.labelMaxWidth;q.uiOstabsTabs.width(q.tabsWidth)}var l=[];q.lis=q.uiOstabsAppsTab.add(q.uiOstabsTabs).find("li").each(function(o){var s=a(this),r=s.data("ui-ostab")||{};if(!s.hasClass("nos-ostabs-appstab")&&r.openRank!==false){l[r.openRank]=s}});q.openRank=1;a.each(l,function(o,s){if(s){var r=s.data("ui-ostab")||{};r.openRank=q.openRank++}});q.anchors=q.lis.map(function(){return a("a",this)[0]});q.panels=a([]);q.anchors.each(function(v,x){var t=a(x),o=t.attr("href"),u=t.data("anchor.tabs");if(!o&&u){x.href=u;o=u}var w=o.split("#")[0],y,z;if(w&&(w===location.toString().split("#")[0]||(y=a("base")[0])&&w===y.href)){o=x.hash;x.href=o}if(d.test(o)){z=q.element.find(q._sanitizeSelector(o));q.panels=q.panels.add(z)}else{if(o&&o!=="#"){t.data("href.tabs",o);t.data("load.tabs",o.replace(/#.*$/,""));var r=q._tabId(x);x.href="#"+r;z=q.element.find("#"+r);if(!z.length){var s=q.lis.eq(v).data("ui-ostab");z=a("
          ").attr("id",r).addClass("nos-ostabs-panel ui-widget-content ui-corner-bottom nos-ostabs-hide").appendTo(q.element);q._actions(z,v)}q.panels=q.panels.add(z)}}t.data("anchor.tabs",x.hash).removeAttr("href");z.find(".nos-ostabs-panel-content").data("nos-ostabs-index",v)});if(p){q.uiOstabsTray.add(q.uiOstabsAppsTab).addClass("nos-ostabs-nav ui-helper-reset ui-helper-clearfix");q.lis.addClass("ui-corner-top");q.panels.addClass("nos-ostabs-panel ui-widget-content");if(f.selected===b){if(location.hash){q.anchors.each(function(r,o){if(a(o).data("anchor.tabs")==location.hash){f.selected=r;return false}})}if(typeof f.selected!=="number"&&q.lis.filter(".nos-ostabs-selected").length){f.selected=q.lis.index(q.lis.filter(".nos-ostabs-selected"))}f.selected=f.selected||(q.lis.length?0:-1)}f.selected=((f.selected>=0&&q.anchors[f.selected])||f.selected<0)?f.selected:0;q.panels.addClass("nos-ostabs-hide");q.lis.removeClass("nos-ostabs-selected ui-state-active");if(f.selected>=0&&q.anchors.length){q.element.find(q._sanitizeSelector(a(q.anchors[f.selected]).data("anchor.tabs"))).removeClass("nos-ostabs-hide");q.lis.eq(f.selected).addClass("nos-ostabs-selected ui-state-active ui-state-open");q.element.queue("tabs",function(){q._trigger("show",null,q._ui(q.lis[f.selected]))});q.title(f.selected,q.title(f.selected));q._load(f.selected)}a(window).bind("unload",function(){q.lis.add(q.anchors).unbind(".tabs");q.lis=q.anchors=q.panels=null})}else{f.selected=q.lis.index(q.lis.filter(".nos-ostabs-selected"))}q.anchors.removeData("cache.tabs");q.lis.add(q.anchors).unbind(".tabs");var h=function(r,o){o.addClass("ui-state-"+r)};var k=function(r,o){o.removeClass("ui-state-"+r)};q.lis.bind("mouseover.tabs",function(){h("hover",a(this))});q.lis.bind("mouseout.tabs",function(){k("hover",a(this))});q.anchors.bind("focus.tabs",function(){h("focus",a(this).closest("li"))});q.anchors.bind("blur.tabs",function(){k("focus",a(this).closest("li"))});var c,i;if(f.fx){if(a.isArray(f.fx)){c=f.fx[0];i=f.fx[1]}else{c=i=f.fx}}function g(o,r){o.css("display","");if(!a.support.opacity&&r.opacity){o[0].style.removeAttribute("filter")}}function j(s){var r=s.data("callbacks.ostabs"),o=s.find(".nos-dispatcher");if(a.isPlainObject(r)){a.each(r,function(t,u){q._firePanelEvent(o,u)});r={}}}var m=i?function(o,r){var s=a(o).closest("li").addClass("nos-ostabs-selected ui-state-active");q._tabsWidth();r.hide().removeClass("nos-ostabs-hide").animate(i,i.duration||"normal",function(){if(s.hasClass("nos-ostabs-newtab")){q._tabsWidth()}q.uiOstabsSuperPanel.wijsuperpanel("scrollChildIntoView",s.find("a"));g(r,i);j(r);q._firePanelEvent(r,a.Event("showPanel"))})}:function(o,r){var s=a(o).closest("li");if(s.hasClass("nos-ostabs-newtab")){q._tabsWidth()}q.uiOstabsSuperPanel.wijsuperpanel("scrollChildIntoView",s.find("a"));s.addClass("nos-ostabs-selected ui-state-active");q._tabsWidth();r.removeClass("nos-ostabs-hide");j(r);q._firePanelEvent(r,a.Event("showPanel"))};var n=c?function(r,o){o.animate(c,c.duration||"normal",function(){if(q.uiOstabsNewTab.hasClass("ui-state-active")){q._tabsWidth()}q.lis.removeClass("nos-ostabs-selected ui-state-active");q._tabsWidth();o.addClass("nos-ostabs-hide");g(o,c);q.element.dequeue("tabs");o.trigger("hidePanel.ostabs")})}:function(r,o){if(q.uiOstabsNewTab.hasClass("ui-state-active")){q._tabsWidth()}q.lis.removeClass("nos-ostabs-selected ui-state-active");q._tabsWidth();o.addClass("nos-ostabs-hide");q.element.dequeue("tabs");o.trigger("hidePanel.ostabs")};q.anchors.bind("click.tabs",function(){var t=this,v=a(t).closest("li"),o=q.panels.filter(":not(.nos-ostabs-hide)"),u=q.element.find(q._sanitizeSelector(a(t).data("anchor.tabs"))),s=v.data("ui-ostab");v.addClass("ui-state-open");q.uiOstabsNewTab.removeClass("ui-state-open");f.selected=q.anchors.index(this);if(v.hasClass("nos-ostabs-selected")||v.hasClass("ui-state-processing")||q.panels.filter(":animated").length||q._trigger("select",null,q._ui(v[0],u[0]))===false){this.blur();return false}q._abort();if(u.length){if(o.length){q.element.queue("tabs",function(){n(t,o)})}q.element.queue("tabs",function(){if(!v.hasClass("nos-ostabs-appstab")){s.openRank=q.openRank++}m(t,u)});a("title").html(v.find(".nos-ostabs-label").html());var r=encodeURIComponent(s.url).replace(/%2F/g,"/");if("replaceState" in window.history){window.history.replaceState({},"",document.location.pathname+"?tab="+r)}else{document.location.hash="tab="+r}q._load(q.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}this.blur()}).bind("mousedown.tabs",function(s){if(s.which===2){var r=this,t=a(r).closest("li"),o=t.not(".nos-ostabs-appstab").length;if(o){q.remove(q.lis.index(t),!t.hasClass("nos-ostabs-selected"))}}});q.anchors.bind("click.tabs",function(){return false});q._tabsWidth()},_getIndex:function(d){var c=this;if(typeof d=="string"){c.anchors.each(function(e){if(a(this).data("anchor.tabs")===d){d=e;return false}})}return d},_actions:function(m,f){var l=this,c=l.options,j=l.lis.eq(f),h=l.anchors.eq(f),k=j.not(".nos-ostabs-appstab").length,e=h.data("iframe.tabs"),d=[],g,i;m.find(".nos-ostabs-actions").remove();g=a("
          ").addClass("nos-ostabs-actions ui-state-active").prependTo(m);if(!Modernizr.touch&&!k){return}if(k){d.push({classes:"nos-ostabs-close",click:function(){l.remove(l.lis.index(j));return false},label:c.texts.closeTab,iconClass:"ui-icon-closethick",iconUrl:"static/novius-os/admin/novius-os/img/16/close.png"},{classes:"nos-ostabs-close-allothers",click:function(){if(confirm(a.nosCleanupTranslation(c.texts.confirmCloseOtherTabs))){l.lis.not(".nos-ostabs-appstab").not(".nos-ostabs-newtab").each(function(){var n=this;if(n!==j[0]){l.remove(l.lis.index(n))}})}return false},label:c.texts.closeOtherTabs,iconClass:"ui-icon-closethick",iconUrl:"static/novius-os/admin/novius-os/img/16/close.png"})}if(!Modernizr.touch||!k){d.push({classes:"nos-ostabs-close-all",click:function(){if(confirm(a.nosCleanupTranslation(c.texts.confirmCloseTabs))){l.lis.not(".nos-ostabs-appstab").not(".nos-ostabs-newtab").each(function(){l.remove(l.lis.index(this))})}return false},label:c.texts.closeTabs,iconClass:"ui-icon-closethick",iconUrl:"static/novius-os/admin/novius-os/img/16/close.png"})}if(e){d.push({classes:"nos-ostabs-reload",click:function(){var n=m.find("iframe.nos-ostabs-panel-content");if(n!==b){n.attr("src",n.attr("src"))}return false},label:c.texts.reloadTab,iconClass:"ui-icon-refresh",iconUrl:"static/novius-os/admin/novius-os/img/16/refresh.png"})}if(Modernizr.touch){i=a("
          ").addClass("nos-ostabs-actions-links").prependTo(g);a.each(d,function(){var o=this,n=a('').addClass(o.classes).click(function(){return o.click()}).appendTo(i);a("").addClass("ui-icon "+o.iconClass).html(o.label).appendTo(n);a("").html(o.label).appendTo(n)})}else{if(("HTMLMenuItemElement" in window)&&("HTMLCommandElement" in window)){l.element.find("#"+m.attr("id")+"-menucontext").remove();i=a("").attr({type:"context",id:m.attr("id")+"-menucontext"}).prependTo(l.element);a.each(d,function(){var n=this;a("").attr({label:"Novius OS - "+n.label,icon:n.iconUrl}).click(function(){return n.click()}).appendTo(i)});j.attr("contextmenu",m.attr("id")+"-menucontext")}else{j.off("contextmenu.nosostabs").on("contextmenu.nosostabs",function(o){var n;o.preventDefault();o.stopPropagation();l.element.find("ul.nos-ostabs-menuactions").remove();n=a("
            ").addClass("nos-ostabs-menuactions").prependTo(l.element);a.each(d,function(){var p=this,q=a('
          • ').appendTo(n).find("a").click(function(){n.remove();return p.click()});a("").addClass("ui-icon wijmo-wijmenu-icon-left "+p.iconClass).appendTo(q);a("").addClass("wijmo-wijmenu-text").html(p.label).appendTo(q)});n.wijmenu({orientation:"vertical"}).closest(".wijmo-wijmenu").position({my:"center top",at:"center bottom",of:j});setTimeout(function(){a(document).on("click.nosostabs",function(p){a(document).off("click.nosostabs");n.remove()})},500)})}}},_tabsWidth:function(){var c=this,g=c.options,e=0;c.uiOstabsTabs.width(10000000);c.uiOstabsTabs.find("li").each(function(){e+=a(this).outerWidth(true)});c.uiOstabsTabs.width(e);var d=c.uiOstabsTabs.find(".nos-ostabs-label:visible").length,f;if(c.tabsWidthg.labelMinWidth){f=c.labelWidth-g.labelMinWidth;f=f>10?10:f;e=e-d*f;c.uiOstabsTabs.width(e);c.labelWidth=c.labelWidth-f;a("head .tabswidth").remove();a('").appendTo("head")}}else{do{f=g.labelMaxWidth-c.labelWidth;f=f>10?10:f;if(c.tabsWidth>(e+d*10)){e=e+d*f;c.uiOstabsTabs.width(e);c.labelWidth=c.labelWidth+f;a("head .tabswidth").remove();a('").appendTo("head")}}while(c.tabsWidth>(e+d*10)&&c.labelWidth=k.openRank){k.openRank=d.openRank+1}i=a('');if(d.iframe){i.data("iframe.tabs",true)}if(d.panelId){i.data("panelid.tabs",d.panelId)}g=k._icon(d).appendTo(i);h=a("").addClass("nos-ostabs-label").html(d.label?d.label.replace(/").append(i).attr("title",h.text()).addClass("ui-corner-top ui-state-default").data("ui-ostab",d).appendTo(f);if(!Modernizr.touch&&!e){a("").addClass("nos-ostabs-closetab").attr("title",c.texts.closeTab).click(function(m){var l=this,n=a(l).closest("li");m.preventDefault();k.remove(k.lis.index(n),!n.hasClass("nos-ostabs-selected"))}).find("span").addClass("ui-icon ui-icon-closethick").text(c.texts.closeTab).end().appendTo(j)}if(!isNaN(d.iconSize)&&d.iconSize!==16&&f!==k.uiOstabsTabs){j.css({height:(d.iconSize+4)+"px",bottom:(d.iconSize-35)+"px"});g.css("top","2px")}return j},remove:function(e,f){var k=this;f=f||false;e=k._getIndex(e);var h=k.lis.eq(e),d=k.anchors.eq(e),l=k.element.find(k._sanitizeSelector(a(k.anchors[e]).data("anchor.tabs"))),i=0,j=0;if(e==0&&!h.hasClass("nos-ostabs-selected")){var g=k.lis.filter(".nos-ostabs-newtab");if(g.hasClass("nos-ostabs-selected")){h=g}}if(h.not(".nos-ostabs-appstab").not(".nos-ostabs-newtab").length){h.remove();l.remove()}else{var c=h.data("ui-ostab");c.openRank=false;h.data("ui-ostab",c)}h.removeClass("ui-state-active ui-state-open");if(!f){i=e>2?e-1:(k.lis.length>3?1:0);k.lis.each(function(n){var m=a(this),o=m.data("ui-ostab")||{};if(m[0]!=h[0]&&o.openRank&&o.openRank>j){j=o.openRank;i=n}});i=k.anchors.eq(i).data("anchor.tabs")}if(h.not(".nos-ostabs-appstab").not(".nos-ostabs-newtab").length){a("> *",l).not(".nos-ostabs-actions").remove()}l.addClass("nos-ostabs-hide").removeData("callbacks.ostabs");h.removeClass("nos-ostabs-selected");k._tabify();k._trigger("remove",null,k._ui(h[0],l[0]));if(!f){k.select(i)}return k},title:function(d,f){var c=this,e=c.options;d=c._getIndex(d);var g=c.lis.eq(d);if(f===b){return g.find(".nos-ostabs-label").text()}else{g.find(".nos-ostabs-label").html(f.replace(/").addClass("nos-ostabs-icon");if(d.iconUrl){c.css("background-image",'url("'+d.iconUrl+'")')}else{c.addClass(d.iconClasses)}if(!isNaN(d.iconSize)&&d.iconSize!==16){c.css({width:d.iconSize+"px",height:d.iconSize+"px",lineHeight:d.iconSize+"px",top:(d.iconSize>22?22-d.iconSize:10-d.iconSize/2)+"px"})}return c},select:function(d){var c=this;d=c._getIndex(d);if(d==-1){return c}c.anchors.eq(d).trigger("click.tabs");return c},_load:function(g){var e=this;g=e._getIndex(g);var j=e.options,d=e.anchors.eq(g)[0],f=a.data(d,"load.tabs"),h=a.data(d,"iframe.tabs");e._abort();if((!f&&h)||e.element.queue("tabs").length!==0&&a.data(d,"cache.tabs")){e.element.dequeue("tabs");return}var c=e.element.find(e._sanitizeSelector(a(d).data("anchor.tabs"))),i=a("> *",c).not(".nos-ostabs-actions").length;if(i!==0){e.element.dequeue("tabs");return}e.lis.eq(g).addClass("ui-state-processing");if(a.isFunction(a.fn.loadspinner)){a("span.nos-ostabs-icon",d).each(function(){var k=a(this);k.addClass("ui-state-processing").loadspinner({diameter:k.width(),scaling:true})})}if(!h){e.xhr=a.ajax({url:f,success:function(m,l,o){var k;a("
            ").addClass("nos-ostabs-panel-content nos-dispatcher").data("nos-ostabs-index",g).prependTo(c.data("callbacks.ostabs",{})).html(m);a.data(d,"cache.tabs",true);try{k=a.parseJSON(o.responseText);e.element.nosAjaxSuccess(k)}catch(n){}},complete:function(k){e._cleanup();e._trigger("load",null,e._ui(e.lis[g]))},error:function(l,k){e.remove(g);e.element.nosAjaxError(l,k)}})}else{a("').data("nos-ostabs-index",g).addClass("nos-ostabs-panel-content nos-dispatcher").bind("load",function(){e._cleanup();e._trigger("load",null,e._ui(e.lis[g]))}).prependTo(c.data("callbacks.ostabs",{}));a.data(d,"cache.tabs",true)}e.element.dequeue("tabs");return e},_abort:function(){var c=this;c.element.queue([]);c.panels.stop(false,true);c.element.queue("tabs",c.element.queue("tabs").splice(-2,2));c._cleanup();return c},tabs:function(){var c=this,d=[];c.uiOstabsTabs.find("li:not(.nos-ostabs-newtab)").each(function(){var e=a.extend({},a(this).data("ui-ostab"));delete e.openRank;d.push(e)});return d},dispatchEvent:function(d){var c=this,e=c.options;a.each(c.panels,function(f){var h=a(this);if(f===e.selected){c._firePanelEvent(h,d)}else{var g=h.data("callbacks.ostabs");if(a.isPlainObject(g)){g[d.type+(d.namespace?"."+d.namespace:"")]=d}}});return c},_firePanelEvent:function(c,d){c=c.is(".nos-dispatcher")?c:c.find(".nos-dispatcher");if(c.is("iframe")){if(c[0].contentDocument.$){c[0].contentDocument.$("body").trigger(d)}}else{try{c.trigger(d)}catch(f){log("_firePanelEvent error",f,d)}}},current:function(){var c=this,d=c.options;return{tab:a(c.lis.get(d.selected)),panel:a(c.panels.get(d.selected)),index:d.selected}}});return a}); diff --git a/static/admin/novius-os/js/jquery.novius-os.wysiwyg.js b/static/admin/novius-os/js/jquery.novius-os.wysiwyg.js index 65ba6d8a4..ba89b232c 100644 --- a/static/admin/novius-os/js/jquery.novius-os.wysiwyg.js +++ b/static/admin/novius-os/js/jquery.novius-os.wysiwyg.js @@ -16,37 +16,16 @@ define('jquery-nos-wysiwyg', function(module, $) { $.fn.wysiwyg = function(options) { var self = $(this); + + var base_url = $('base').attr('href'); options = $.extend({ - urlEnhancers: null, - container: null + // Location of TinyMCE script + document_base_url : base_url, + language : $.nosLang.substr(0, 2), + script_url : base_url + 'static/novius-os/admin/vendor/tinymce/tiny_mce_jquery' + (module.config().minified ? '' : '_src') + '.js' }, options || {}); - $.ajax({ - dataType: 'json', - url: 'admin/nos/wysiwyg/enhancers', - data : { - urlEnhancers: options.urlEnhancers, - container: options.container - }, - success: function(enhancers) { - var base_url = $('base').attr('href'); - options = $.extend({ - // Location of TinyMCE script - document_base_url : base_url, - language : $.nosLang.substr(0, 2), - script_url : base_url + 'static/novius-os/admin/vendor/tinymce/tiny_mce_jquery' + (module.config().minified ? '' : '_src') + '.js', - // IE 10 bugfix to make div:hover working in CSS (to show enhancer actions) - doctype : '', - theme : 'nos', - skin : "bootstrap", - plugins : 'spellchecker,xhtmlxtras,style,table,advlist,inlinepopups,media,searchreplace,paste,noneditable,visualchars,nonbreaking', - paste_text_use_dialog : true, - theme_nos_enhancers : enhancers - }, options || {}); - - $(self).tinymce(options); - } - }); + $(self).tinymce(options); }; return $; });