diff --git a/changelog.txt b/changelog.txt
index b51f1659..49e4627d 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -3,6 +3,7 @@
### 1.0.8
* Fix - LSX tabs working integrated with TO tabs (dashboard settings)
* Fix - Fixed admin styles (help and add-on pages)
+* Fix - UIX framework saving all tabs
### 1.0.7
* Dev - Added .editorconfig file to help developers to maintain consistent coding styles between different editors and IDEs
diff --git a/classes/class-lsx-to-admin.php b/classes/class-lsx-to-admin.php
index 61450b22..6e8cf7ec 100644
--- a/classes/class-lsx-to-admin.php
+++ b/classes/class-lsx-to-admin.php
@@ -95,7 +95,7 @@ public function enqueue_admin_stylescripts( $hook ) {
}
wp_enqueue_media();
- wp_enqueue_script( 'tour-operator-admin-script', LSX_TO_URL . 'assets/js/admin' . $min . '.js', array( 'jquery' ), LSX_TO_VER, true );
+ wp_enqueue_script( 'tour-operator-admin-script', LSX_TO_URL . 'assets/js/admin.min.js', array( 'jquery' ), LSX_TO_VER, true );
wp_enqueue_style( 'tour-operator-admin-style', LSX_TO_URL . 'assets/css/admin.css', array(), LSX_TO_VER );
wp_style_add_data( 'tour-operator-admin-style', 'rtl', 'replace' );
diff --git a/readme.txt b/readme.txt
index 9af4c2e9..cc4597df 100644
--- a/readme.txt
+++ b/readme.txt
@@ -67,6 +67,7 @@ Yes you can! Join in on our [GitHub repository](https://github.com/lightspeeddev
= 1.0.8 =
* Fix - LSX tabs working integrated with TO tabs (dashboard settings)
* Fix - Fixed admin styles (help and add-on pages)
+* Fix - UIX framework saving all tabs
= 1.0.7 =
* Dev - Added .editorconfig file to help developers to maintain consistent coding styles between different editors and IDEs
diff --git a/vendor/uix/assets/css/admin.css b/vendor/uix/assets/css/admin.css
index 5f1e73f4..a644e909 100644
--- a/vendor/uix/assets/css/admin.css
+++ b/vendor/uix/assets/css/admin.css
@@ -1,6 +1,6 @@
.uix-tab-canvas {
padding: 0 20px;
-
+ display: none;
}
.uix-field-wrapper{
min-height: 100px;
diff --git a/vendor/uix/assets/css/admin.min.css b/vendor/uix/assets/css/admin.min.css
index 8030233a..ef03121e 100644
--- a/vendor/uix/assets/css/admin.min.css
+++ b/vendor/uix/assets/css/admin.min.css
@@ -1 +1 @@
-.uix-tab-canvas{padding:0 20px}.uix-field-wrapper{min-height:100px}.spinner.uix-save-spinner{float:none;margin:-2px 4px 0 5px;visibility:visible;display:none}.ui-tab-nav{margin:0 0 8px}.page-title-action.button-primary{margin:20px}.save-confirm{color:#10af10;display:none}.save-confirm .dashicons{font-size:30px}.uix-footer-bar{padding:0 19px}
\ No newline at end of file
+.uix-tab-canvas{padding:0 20px;display:none}.uix-field-wrapper{min-height:100px}.spinner.uix-save-spinner{float:none;margin:-2px 4px 0 5px;visibility:visible;display:none}.ui-tab-nav{margin:0 0 8px}.page-title-action.button-primary{margin:20px}.save-confirm{color:#10af10;display:none}.save-confirm .dashicons{font-size:30px}.uix-footer-bar{padding:0 19px}
\ No newline at end of file
diff --git a/vendor/uix/assets/js/uix-core.js b/vendor/uix/assets/js/uix-core.js
new file mode 100644
index 00000000..b56a1a58
--- /dev/null
+++ b/vendor/uix/assets/js/uix-core.js
@@ -0,0 +1,601 @@
+/*!
+ This is a prototype of conduit. It still needs a full refactoring.
+ This is simply to get the concepts into working order. So ye, I need to work on this still.
+ */
+var conduitApp = {},
+ coduitTemplates = {},
+ conduitRegisterApps,
+ conduitModal,
+ conduitModalSave,
+ conduitGenID,
+ conduitSaveObject,
+ conduitGetData;
+
+!( jQuery( function($){
+
+
+ var currentAjaxProcess = null;
+
+ conduitException = function( message ){
+ this.message = message;
+ this.name = "ConduitException";
+ }
+
+ $.fn.conduitTrigger = function( obj ){
+ var defaults = {
+ method : 'GET',
+ url : ajaxurl
+ };
+
+ $.extend(true, defaults, obj);
+
+ $.ajax( defaults ).success( function(){
+ //console.log( arguments );
+ } );
+
+
+ return this;
+ }
+
+ $.fn.getObject = function( forex ){
+ var element = $(this);
+
+ var fields = element.find('[name]'),
+ obj = {},
+ arraynames = {};
+ for( var v = 0; v < fields.length; v++){
+ var field = $( fields[v] ),
+ name = field.prop('name').replace(/\]/gi,'').split('['),
+ value = field.val(),
+ lineconf = {};
+
+ if( forex ){
+ if( name.indexOf('_id') >= 0 || name.indexOf('_node_point') >= 0 ){
+ continue;
+ }
+ }
+
+ if( field.is(':radio') || field.is(':checkbox') ){
+ if( !field.is(':checked') ){
+ continue;
+ }
+ }
+ if( field.prop('required') && ! field.val().length ){
+ field.focus();
+ throw new conduitException('requiredfield');
+ }
+ for(var i = name.length-1; i >= 0; i--){
+ var nestname = name[i];
+ if( typeof nestname === 'undefined' ){
+ nestname = '';
+ }
+ if(nestname.length === 0){
+ lineconf = [];
+ if( typeof arraynames[name[i-1]] === 'undefined'){
+ arraynames[name[i-1]] = 0;
+ }else{
+ arraynames[name[i-1]] += 1;
+ }
+ nestname = arraynames[name[i-1]];
+ }
+ if(i === name.length-1){
+ if( value ){
+ if( value === 'true' ){
+ value = true;
+ }else if( value === 'false' ){
+ value = false;
+ }else if( !isNaN( parseFloat( value ) ) && parseFloat( value ).toString() === value ){
+ value = parseFloat( value );
+ }else if( typeof value === 'string' && ( value.substr(0,1) === '{' || value.substr(0,1) === '[' ) ){
+ try {
+ value = JSON.parse( value );
+
+ } catch (e) {
+
+ }
+ }
+ }
+ lineconf[nestname] = value;
+ }else{
+ var newobj = lineconf;
+ lineconf = {};
+ lineconf[nestname] = newobj;
+ }
+ }
+ $.extend(true, obj, lineconf);
+ };
+
+ return obj;
+ }
+ conduitGeneralBaldrick = function(){
+ // initialise general triggers
+ $('.wp-trigger').conduitTrigger({
+ method : 'POST',
+ before : function( el ){
+ var trigger = $( el ),
+ app = trigger.closest('[data-app]');
+ if( app.length ){
+ trigger.data('data', JSON.stringify( conduitBuildData( app.data('app') ) ) );
+ }else{
+ if( trigger.data('data') ){
+ trigger.data('data', JSON.stringify( conduitBuildData( trigger.data('data') ) ) );
+ }
+ }
+ }
+ });
+ }
+ conduitSaveObject = function( app ){
+ var obj;
+ if( true === app ){
+ obj = conduitPrepObject();
+ }else{
+ obj = conduitPrepObject( app );
+ }
+ var data = {
+ action : uix.slug + "_save_config",
+ uix_setup : $('#uix_setup').val(),
+ page_slug : uix.page_slug,
+ config : JSON.stringify( obj ),
+ autosave : true
+ };
+ if( uix.save_params ){
+ data.params = uix.save_params;
+ }
+
+ $( window ).trigger('uix.saving');
+ if( currentAjaxProcess ){
+ currentAjaxProcess.abort();
+ }
+ currentAjaxProcess = $.post( ajaxurl, data, function(response) {
+ $( window ).trigger('uix.saved');
+ currentAjaxProcess = null;
+ });
+ }
+ conduitPrepObject = function(){
+ var obj = {};
+ for( var app in conduitApp ){
+ if( conduitApp[ app ].app ){
+ if( conduitApp[ app ].app.is(':visible') ){
+ // capture current changes
+ obj[ app ] = conduitBuildData( app );
+ }else{
+ // changes should have been captured already
+ obj[ app ] = conduitApp[ app ].data;
+ }
+ }
+ if( obj[ app ]._tab ){
+ delete obj[ app ]._tab;
+ }
+ }
+ return obj;
+ }
+
+ conduitModalFooter = function( opts ){
+ var buttons = opts.buttons ? opts.buttons.split(' ') : ["save"],
+ points = opts.modal.split('.'),
+ app = opts.app ? opts.app : opts.trigger.closest('[data-app]').data('app'),
+ data = { "__node_path" : points.join('.') },
+ template_str = '',
+ template;
+
+ data.__app = app;
+ if( opts.trigger.data('before') ){
+ data.__before = opts.trigger.data('before');
+ }
+ if( opts.trigger.data('callback') ){
+ data.__callback = opts.trigger.data('callback');
+ }
+
+ for( var i = 0; i < buttons.length; i ++){
+ template_str += $( '#__partial_' + buttons[ i ] ).length ? $( '#__partial_' + buttons[ i ] ).html() : '';
+ }
+
+ template = Handlebars.compile( template_str, { data : true } );
+
+ return template( data );
+ }
+
+ conduitModal = function( opts, modal ){
+ var points = opts.modal.split('.'),
+ app = opts.app ? opts.app : opts.trigger.closest('[data-app]').data('app'),
+ hasDefault = opts.default ? opts.default : null,
+ template = Handlebars.compile( "
{{> " + opts.template + "}}
", { data : true } );
+ data = {};
+
+ // fetch latest data object
+ conduitBuildData( app );
+
+ if( conduitApp[ app ] ){
+ var tmp = conduitApp[ app ].data;
+ if( hasDefault !== null ){
+ data = hasDefault;
+ }else{
+ for( var i = 0; i < points.length; i++ ){
+ if( tmp[ points[ i ] ] ){
+ tmp = tmp[ points[ i ] ];
+ }else{
+ tmp = {};
+ }
+ }
+ data = tmp;
+ }
+ }
+
+ data.__node_path = opts.points;
+ data.__app = app;
+
+ conduitApp[ opts.template ] = {
+ app : modal.content,
+ data : data
+ };
+ coduitTemplates[ opts.template ] = template;
+
+ return template( data );
+
+ }
+
+ conduitGetData = function( tr ){
+
+ var id = tr.trigger.data('app'),
+ data = {};
+
+ if( conduitApp[ id ] && conduitApp[ id ].data ){
+ return conduitApp[ id ].data;
+ }
+ return data;
+ }
+
+ conduitBuildData = function( app ){
+ if( conduitApp[ app ] && conduitApp[ app ].app ){
+ try{
+ conduitApp[ app ].data = conduitApp[ app ].app.getObject();
+ }catch (e){
+ return false;
+ }
+
+ }
+ if( conduitApp[ app ].data._tab ){
+ delete conduitApp[ app ].data._tab;
+ }
+ return conduitApp[ app ].data;
+ }
+
+
+ conduitSyncData = function( app ){
+ conduitBuildData( app );
+ //conduitBuildUI( app );
+ }
+
+ conduitRegisterApps = function(){
+
+ var apps = $('[data-app]').not('._bound_app');
+ if( ! apps.length ){return;}
+
+ apps.each( function(){
+
+ var appWrapper = $( this ),
+ app = appWrapper.data('app');
+
+ conduitApp[ app ] = {
+ app : appWrapper,
+ data : ( uix.config[ app ] ? uix.config[ app ] : {} )
+ };
+
+ appWrapper.addClass('_bound_app');
+ conduitBuildUI( app );
+ })
+
+ if( uix.tabs ){
+ for( var tab in uix.tabs ){
+ if( uix.tabs[ tab ].default ){
+ $('[data-tab="' + tab + '"]').trigger('click');
+ break;
+ }
+ }
+ }
+ }
+
+ conduitBuildUI = function( app ){
+ if( conduitApp[ app ] ){
+ var data = conduitApp[ app ].data;
+ data._tab = {};
+ for( var sub_app in conduitApp ){
+ if( sub_app === app ){ continue; }
+ data._tab[ sub_app ] = conduitApp[ sub_app ].data;
+ }
+ conduitApp[ app ].app.html( coduitTemplates[ app ]( data ) );
+ }
+
+ // sortables
+ if( $('.uix-sortable').length ){
+ $('.uix-sortable').each( function(){
+ var sort = $(this),
+ options = {
+ forcePlaceholderSize : true,
+ placeholder: "uix-sortable-placeholder"
+ };
+
+ options = $.extend({}, options, sort.data() );
+ $(this).sortable( options );
+ });
+ }
+
+ $(window).trigger('uix.init');
+ $(window).trigger('modal.init');
+ }
+
+ conduitSetNode = function( node, app, data ){
+ var nodes = node.split('.');
+
+ var node_string = '{ "' + nodes.join( '": { "') + '" : ' + JSON.stringify( data );
+ for( var cls = 0; cls < nodes.length; cls++){
+ node_string += '}';
+ }
+ var new_nodes = JSON.parse( node_string );
+ $.extend( true, conduitApp[ app ].data, new_nodes );
+ conduitBuildUI( app );
+ }
+ conduitGenID = function(){
+ var d = new Date().getTime();
+ var id = 'ndxxxxxxxx'.replace(/[xy]/g, function(c) {
+ var r = (d + Math.random()*16)%16 | 0;
+ d = Math.floor(d/16);
+ return (c=='x' ? r : (r&0x3|0x8)).toString(16);
+ });
+ return id;
+ }
+ conduitAddNode = function( node, app, data ){
+
+ var id = conduitGenID(),
+ newnode = { "_id" : id },
+ nodes = node.data ? node.data('addNode').split('.') : node.split('.'),
+ node_default = data ? data : node.data('nodeDefault'),
+ node_point_record = nodes.join('.') + '.' + id,
+ node_defaults = JSON.parse( '{ "_id" : "' + id + '", "_node_point" : "' + node_point_record + '" }' )
+ node_point_wrappers = $('[data-node-point="' + nodes.join('.') + '"]');
+
+ if( node_default && typeof node_default === 'object' ){
+ $.extend( true, node_defaults, node_default );
+ }
+ var node_string = '{ "' + nodes.join( '": { "') + '" : { "' + id + '" : ' + JSON.stringify( node_defaults );
+ for( var cls = 0; cls <= nodes.length; cls++){
+ node_string += '}';
+ }
+ var new_nodes = JSON.parse( node_string );
+
+ conduitBuildData( app );
+
+ $.extend( true, conduitApp[ app ].data, new_nodes );
+
+ if( node_point_wrappers.length && node_point_wrappers.data('template') ){
+ node_point_wrappers.each( function(){
+ var wrapper = $(this),
+ template = wrapper.data('template');
+ if( template && coduitTemplates[ '__partial_' + template ] ){
+ wrapper.append( coduitTemplates[ '__partial_' + template ]( node_defaults ) );
+ }
+ });
+
+ }else{
+ // rebuild all
+ conduitBuildUI( app );
+ }
+ };
+
+
+ // bind slugs
+ $(document).on('keyup change', '[data-format="slug"]', function(e){
+
+ var input = $(this);
+
+ if( input.data('master') && input.prop('required') && this.value.length <= 0 && e.type === "change" ){
+ this.value = $(input.data('master')).val().replace(/[^a-z0-9]/gi, '_').toLowerCase();
+ if( this.value.length ){
+ input.trigger('change');
+ }
+ return;
+ }
+
+ this.value = this.value.replace(/[^a-z0-9]/gi, '_').toLowerCase();
+ });
+
+ // bind label update
+ $(document).on('keyup change', '[data-sync]', function(){
+ var input = $(this),
+ syncs = $(input.data('sync'));
+
+ syncs.each(function(){
+ var sync = $(this);
+
+ if( sync.is('input') ){
+ sync.val( input.val() ).trigger('change');
+ }else{
+ sync.text(input.val());
+ }
+ });
+ });
+
+ // add node
+ $(document).on('click', '[data-add-node]', function(e){
+ var click = $( this ),
+ app = click.closest('[data-app]').data('app');
+ if( app && typeof conduitApp[ app ] === 'object' ){
+ e.preventDefault();
+ conduitAddNode( click, app );
+ }
+ });
+ // row remover global neeto
+ $(document).on('click', '[data-remove-element]', function(e){
+ var click = $(this),
+ app = click.closest('[data-app]').data('app'),
+ elements = $(click.data('removeElement'));
+ if( click.data('confirm') ){
+ if( !confirm(click.data('confirm')) ){
+ return;
+ }
+ }
+ elements.remove();
+ conduitSyncData( app );
+ });
+
+ $(document).on('click', '[data-save-object]', function(e){
+ e.preventDefault();
+ var clicked = $( this ),
+ app = $( this ).data('saveObject'),
+ spinner = $('.uix-save-spinner'),
+ confirm = $('.save-confirm'),
+ sub_nav = $('.uix-sub-nav'),
+ obj;
+
+ //$('.uix-notice .notice-dismiss').trigger('click');
+
+ if( true === app ){
+ obj = conduitPrepObject();
+ }else{
+ obj = conduitPrepObject( app );
+ }
+
+ clicked.addClass('saving');
+ confirm.hide();
+ spinner.css({ visibility: "visible", opacity:1, display : "inline-block"});
+ var data = {
+ action : uix.slug + "_save_config",
+ uix_setup : $('#uix_setup').val(),
+ page_slug : uix.page_slug,
+ config : JSON.stringify( obj ),
+ };
+ if( uix.save_params ){
+ data.params = uix.save_params;
+ }
+ $.post( ajaxurl, data, function(response) {
+
+ spinner.css({ visibility: '', opacity:0, display: 'none'});
+ confirm.fadeIn();
+ setTimeout( function(){ confirm.fadeOut( 800 );}, 2000 );
+ clicked.removeClass('saving');
+ //var notice = $( coduitTemplates.__notice( response ) );
+ //notice.hide().insertAfter( sub_nav ).slideDown( 200 );
+
+ $( window ).trigger('uix.saved');
+ });
+
+ });
+
+ // initialize live sync rebuild
+ $(document).on('change', '[data-live-sync]', function(e){
+ var app = $(this).closest('[data-app]').data('app');
+ conduitSyncData( app );
+ });
+ $(document).on('click', 'button[data-live-sync]', function(e){
+ var app = $(this).closest('[data-app]').data('app');
+ conduitSyncData( app );
+ });
+ $(document).on('click', '.uix-notice .notice-dismiss', function(){
+ var parent = $( this ).closest( '.uix-notice' );
+ parent.slideUp(200, function(){
+ parent.remove();
+ });
+ });
+
+ $(document).on( 'click', '[data-tab]', function( e ){
+
+ e.preventDefault();
+
+ var clicked = $( this ),
+ tab = clicked.data('tab'),
+ active = $('.current[data-tab]').data('tab')
+
+ if( active ){
+ conduitBuildData( active );
+ if( active === tab ){
+ return;
+ }
+ $('[data-app="' + active + '"]').empty().hide();
+ }
+
+ $('[data-tab]').removeClass('current');
+ $('[data-app="' + tab + '"]').show();
+ clicked.addClass('current');
+ conduitBuildUI( tab );
+ } );
+
+ $('script[data-template]').each( function(){
+
+ var element = $(this),
+ app = element.data('template');
+
+ coduitTemplates[ app ] = Handlebars.compile( element.html(), { data : true } );
+ });
+ // init partials
+ $('script[data-handlebars-partial]').each( function(){
+ var partial = $( this );
+ Handlebars.registerPartial( partial.data('handlebarsPartial'), partial.html() );
+ coduitTemplates[ '__partial_' + partial.data('handlebarsPartial') ] = Handlebars.compile( partial.html(), { data : true } );
+ });
+ // modal capture
+ $(document).on( 'click', '[data-modal-node]', function( e ) {
+
+ var clicked = $( this ),
+ nodes = clicked.data('modal-node').split('.'),
+ app = clicked.data('app') ? clicked.data('app') : nodes.shift(),
+ type = clicked.data('type') ? clicked.data('type') : 'save',
+ data;
+
+ if( clicked.data('before') ){
+ if( typeof clicked.data('before') === 'function' ){
+ clicked.data('before')( clicked );
+ }else if( typeof window[ clicked.data('before') ] === 'function' ){
+ window[ clicked.data('before') ]( clicked );
+ }
+ }
+
+
+ if( type !== 'delete' ){
+ try{
+ data = clicked.closest('.uix-modal-wrap').getObject();
+ }catch (e){
+ return;
+ }
+ }
+
+ if( type === 'add' ){
+ conduitAddNode( nodes.join('.'), app, data );
+ }else if( type === 'delete' ){
+
+ var selector = nodes.shift();
+ if( nodes.length ){
+ selector += '[' + nodes.join('][') + ']';
+ }
+ $( '[name^="' + selector + '"]' ).remove();
+ conduitBuildData( app );
+ conduitBuildUI( app );
+ }else{
+ conduitSetNode( nodes.join('.'), app, data );
+ }
+ $( window ).trigger('close.modal');
+ if( clicked.data('callback') ){
+ if( typeof clicked.data('callback') === 'function' ){
+ clicked.data('callback')( data, clicked );
+ }else if( typeof window[ clicked.data('callback') ] === 'function' ){
+ window[ clicked.data('callback') ]( data, clicked );
+ }
+ }
+ })
+ $(window).on('close.modal', function( e ){
+ //console.log( e );
+ var active = $('.current[data-tab]').data('tab')
+ if( active ){
+ conduitBuildUI( active );
+ }
+ });
+
+ // register apps
+ conduitRegisterApps();
+
+ window.onbeforeunload = function(){
+ if( currentAjaxProcess ){
+ return false;
+ }
+ };
+
+}) );
\ No newline at end of file
diff --git a/vendor/uix/assets/js/uix-core.min.js b/vendor/uix/assets/js/uix-core.min.js
index 3da64223..42d2da64 100644
--- a/vendor/uix/assets/js/uix-core.min.js
+++ b/vendor/uix/assets/js/uix-core.min.js
@@ -1,208 +1 @@
-var conduitApp = {}, coduitTemplates = {}, conduitRegisterApps, conduitModal, conduitModalSave, conduitGenID,
- conduitSaveObject, conduitGetData;
-!jQuery(function (a) {
- var b = null;
- conduitException = function (a) {
- this.message = a, this.name = "ConduitException"
- }, a.fn.conduitTrigger = function (b) {
- var c = {method: "GET", url: ajaxurl};
- return a.extend(!0, c, b), a.ajax(c).success(function () {
- }), this
- }, a.fn.getObject = function () {
- for (var b = a(this), c = b.find("[name]"), d = {}, e = {}, f = 0; f < c.length; f++) {
- var g = a(c[f]), h = g.prop("name").replace(/\]/gi, "").split("["), i = g.val(), j = {};
- if (!g.is(":radio") && !g.is(":checkbox") || g.is(":checked")) {
- if (g.prop("required") && !g.val().length)throw g.focus(), new conduitException("requiredfield");
- for (var k = h.length - 1; k >= 0; k--) {
- var l = h[k];
- if ("undefined" == typeof l && (l = ""), 0 === l.length && (j = [], "undefined" == typeof e[h[k - 1]] ? e[h[k - 1]] = 0 : e[h[k - 1]] += 1, l = e[h[k - 1]]), k === h.length - 1) {
- if (i)if ("true" === i) i = !0; else if ("false" === i) i = !1; else if (isNaN(parseFloat(i)) || parseFloat(i).toString() !== i) {
- if ("string" == typeof i && ("{" === i.substr(0, 1) || "[" === i.substr(0, 1)))try {
- i = JSON.parse(i)
- } catch (m) {
- }
- } else i = parseFloat(i);
- j[l] = i
- } else {
- var n = j;
- j = {}, j[l] = n
- }
- }
- a.extend(!0, d, j)
- }
- }
- return d
- }, conduitGeneralBaldrick = function () {
- a(".wp-trigger").conduitTrigger({
- method: "POST", before: function (b) {
- var c = a(b), d = c.closest("[data-app]");
- d.length ? c.data("data", JSON.stringify(conduitBuildData(d.data("app")))) : c.data("data") && c.data("data", JSON.stringify(conduitBuildData(c.data("data"))))
- }
- })
- }, conduitSaveObject = function (c) {
- var d;
- d = !0 === c ? conduitPrepObject() : conduitPrepObject(c);
- var e = {
- action: uix.slug + "_save_config",
- uix_setup: a("#uix_setup").val(),
- page_slug: uix.page_slug,
- config: JSON.stringify(d),
- autosave: !0
- };
- uix.save_params && (e.params = uix.save_params), a(window).trigger("uix.saving"), b && b.abort(), b = a.post(ajaxurl, e, function (c) {
- a(window).trigger("uix.saved"), b = null
- })
- }, conduitPrepObject = function () {
- var a = {};
- for (var b in conduitApp)conduitApp[b].app && (conduitApp[b].app.is(":visible") ? a[b] = conduitBuildData(b) : a[b] = conduitApp[b].data);
- return a
- }, conduitModalFooter = function (b) {
- var c, d = b.buttons ? b.buttons.split(" ") : ["save"], e = b.modal.split("."),
- f = b.app ? b.app : b.trigger.closest("[data-app]").data("app"), g = {__node_path: e.join(".")}, h = "";
- g.__app = f, b.trigger.data("callback") && (g.__callback = b.trigger.data("callback"));
- for (var i = 0; i < d.length; i++)h += a("#__partial_" + d[i]).length ? a("#__partial_" + d[i]).html() : "";
- return (c = Handlebars.compile(h, {data: !0}))(g)
- }, conduitModal = function (a, b) {
- var c = a.modal.split("."), d = a.app ? a.app : a.trigger.closest("[data-app]").data("app"),
- e = a["default"] ? a["default"] : null,
- f = Handlebars.compile('{{> ' + a.template + "}}
", {data: !0});
- if (data = {}, conduitBuildData(d), conduitApp[d]) {
- var g = conduitApp[d].data;
- if (null !== e) data = e; else {
- for (var h = 0; h < c.length; h++)g = g[c[h]] ? g[c[h]] : {};
- data = g
- }
- }
- return data.__node_path = a.points, data.__app = d, conduitApp[a.template] = {
- app: b.content,
- data: data
- }, coduitTemplates[a.template] = f, f(data)
- }, conduitGetData = function (a) {
- var b = a.trigger.data("app"), c = {};
- return conduitApp[b] && conduitApp[b].data ? conduitApp[b].data : c
- }, conduitBuildData = function (a) {
- if (conduitApp[a] && conduitApp[a].app)try {
- conduitApp[a].data = conduitApp[a].app.getObject()
- } catch (b) {
- return !1
- }
- return conduitApp[a].data
- }, conduitSyncData = function (a) {
- conduitBuildData(a), conduitBuildUI(a)
- }, conduitRegisterApps = function () {
- var b = a("[data-app]").not("._bound_app");
- if (b.length && (b.each(function () {
- var b = a(this), c = b.data("app");
- conduitApp[c] = {app: b, data: uix.config[c] ? uix.config[c] : {}}, b.addClass("_bound_app")
- }), uix.tabs))for (var c in uix.tabs)if (uix.tabs[c]["default"]) {
- a('[data-tab="' + c + '"]').trigger("click");
- break
- }
- }, conduitBuildUI = function (b) {
- if (conduitApp[b]) {
- var c = conduitApp[b].data;
- c._tab = {};
- for (var d in conduitApp)d !== b && (c._tab[d] = conduitApp[d].data);
- conduitApp[b].app.html(coduitTemplates[b](c))
- }
- a(window).trigger("uix.init"), a(window).trigger("modal.init")
- }, conduitSetNode = function (b, c, d) {
- for (var e = b.split("."), f = '{ "' + e.join('": { "') + '" : ' + JSON.stringify(d), g = 0; g < e.length; g++)f += "}";
- var h = JSON.parse(f);
- a.extend(!0, conduitApp[c].data, h), conduitBuildUI(c)
- }, conduitGenID = function () {
- var a = (new Date).getTime(), b = "ndxxxxxxxx".replace(/[xy]/g, function (b) {
- var c = (a + 16 * Math.random()) % 16 | 0;
- return a = Math.floor(a / 16), ("x" == b ? c : 3 & c | 8).toString(16)
- });
- return b
- }, conduitAddNode = function (b, c, d) {
- var e = conduitGenID(), f = b.data ? b.data("addNode").split(".") : b.split("."),
- g = d ? d : b.data("nodeDefault"), h = f.join(".") + "." + e,
- i = JSON.parse('{ "_id" : "' + e + '", "_node_point" : "' + h + '" }');
- g && "object" == typeof g && a.extend(!0, i, g);
- for (var j = '{ "' + f.join('": { "') + '" : { "' + e + '" : ' + JSON.stringify(i), k = 0; k <= f.length; k++)j += "}";
- var l = JSON.parse(j);
- conduitBuildData(c), a.extend(!0, conduitApp[c].data, l), conduitBuildUI(c)
- }, a(document).on("click", ".cf-reports-card-actions .confirm a", function (b) {
- b.preventDefault();
- var c = a(this).closest(".cf-reports-card-content");
- actions = c.find(".row-actions"), actions.slideToggle(300)
- }), a(document).on("keyup change", '[data-format="slug"]', function (b) {
- var c = a(this);
- return c.data("master") && c.prop("required") && this.value.length <= 0 && "change" === b.type ? (this.value = a(c.data("master")).val().replace(/[^a-z0-9]/gi, "_").toLowerCase(), void(this.value.length && c.trigger("change"))) : void(this.value = this.value.replace(/[^a-z0-9]/gi, "_").toLowerCase())
- }), a(document).on("keyup change", "[data-sync]", function () {
- var b = a(this), c = a(b.data("sync"));
- c.each(function () {
- var c = a(this);
- c.is("input") ? c.val(b.val()).trigger("change") : c.text(b.val())
- })
- }), a(document).on("click", "[data-add-node]", function (b) {
- var c = a(this), d = c.closest("[data-app]").data("app");
- d && "object" == typeof conduitApp[d] && (b.preventDefault(), conduitAddNode(c, d))
- }), a(document).on("click", "[data-remove-element]", function (b) {
- var c = a(this), d = c.closest("[data-app]").data("app"), e = a(c.data("removeElement"));
- (!c.data("confirm") || confirm(c.data("confirm"))) && (e.remove(), conduitSyncData(d))
- }), a(document).on("click", "[data-save-object]", function (b) {
- b.preventDefault();
- var c, d = a(this), e = a(this).data("saveObject"), f = a(".uix-save-spinner"), g = a(".uix-sub-nav");
- a(".uix-notice .notice-dismiss").trigger("click"), c = !0 === e ? conduitPrepObject() : conduitPrepObject(e), d.addClass("saving"), a(".save-confirm").hide(),f.slideDown(100);
- var h = {
- action: uix.slug + "_save_config",
- uix_setup: a("#uix_setup").val(),
- page_slug: uix.page_slug,
- config: JSON.stringify(c)
- };
- uix.save_params && (h.params = uix.save_params), a.post(ajaxurl, h, function (b) {
- f.slideUp(100, function(){
- a(".save-confirm").fadeIn(200);
- setTimeout(function(){a(".save-confirm").fadeOut(200);}, 1000);
- }), d.removeClass("saving");
- var c = a(coduitTemplates.__notice(b));
- c.hide().insertAfter(g).slideDown(200), a(window).trigger("uix.saved")
- })
- }), a(document).on("change", "[data-live-sync]", function (b) {
- var c = a(this).closest("[data-app]").data("app");
- conduitSyncData(c)
- }), a(document).on("click", "button[data-live-sync]", function (b) {
- var c = a(this).closest("[data-app]").data("app");
- conduitSyncData(c)
- }), a(document).on("click", ".uix-notice .notice-dismiss", function () {
- var b = a(this).closest(".uix-notice");
- b.slideUp(200, function () {
- b.remove()
- })
- }), a(document).on("click", "[data-tab]", function (b) {
- b.preventDefault();
- var c = a(this), d = c.data("tab"), e = a(".current[data-tab]").data("tab");
- if (e) {
- if (conduitBuildData(e), e === d)return;
- a('[data-app="' + e + '"]').empty().hide()
- }
- a("[data-tab]").removeClass("current"), a('[data-app="' + d + '"]').show(), c.addClass("current"), conduitBuildUI(d)
- }), a("script[data-template]").each(function () {
- var b = a(this), c = b.data("template");
- coduitTemplates[c] = Handlebars.compile(b.html(), {data: !0})
- }), a("script[data-handlebars-partial]").each(function () {
- var b = a(this);
- Handlebars.registerPartial(b.data("handlebarsPartial"), b.html())
- }), a(document).on("click", "[data-modal-node]", function (b) {
- var c, d = a(this), e = d.data("modal-node").split("."), f = d.data("app") ? d.data("app") : e.shift(),
- g = d.data("type") ? d.data("type") : "save";
- if ("delete" !== g)try {
- c = d.closest(".uix-modal-wrap").getObject()
- } catch (b) {
- return
- }
- if ("add" === g) conduitAddNode(e.join("."), f, c); else if ("delete" === g) {
- var h = e.shift();
- e.length && (h += "[" + e.join("][") + "]"), a('[name^="' + h + '"]').remove(), conduitBuildData(f), conduitBuildUI(f)
- } else conduitSetNode(e.join("."), f, c);
- a(window).trigger("close.modal"), d.data("callback") && ("function" == typeof d.data("callback") ? d.data("callback")(c, d) : "function" == typeof window[d.data("callback")] && window[d.data("callback")](c, d))
- }), a(window).on("close.modal", function (b) {
- var c = a(".current[data-tab]").data("tab");
- c && conduitBuildUI(c)
- }), conduitRegisterApps(), window.onbeforeunload = function () {
- return b ? !1 : void 0
- }
-});
\ No newline at end of file
+var conduitApp={},coduitTemplates={},conduitRegisterApps,conduitModal,conduitModalSave,conduitGenID,conduitSaveObject,conduitGetData;!jQuery(function($){var currentAjaxProcess=null;conduitException=function(message){this.message=message;this.name="ConduitException"};$.fn.conduitTrigger=function(obj){var defaults={method:"GET",url:ajaxurl};$.extend(true,defaults,obj);$.ajax(defaults).success(function(){});return this};$.fn.getObject=function(forex){var element=$(this);var fields=element.find("[name]"),obj={},arraynames={};for(var v=0;v=0||name.indexOf("_node_point")>=0){continue}}if(field.is(":radio")||field.is(":checkbox")){if(!field.is(":checked")){continue}}if(field.prop("required")&&!field.val().length){field.focus();throw new conduitException("requiredfield")}for(var i=name.length-1;i>=0;i--){var nestname=name[i];if(typeof nestname==="undefined"){nestname=""}if(nestname.length===0){lineconf=[];if(typeof arraynames[name[i-1]]==="undefined"){arraynames[name[i-1]]=0}else{arraynames[name[i-1]]+=1}nestname=arraynames[name[i-1]]}if(i===name.length-1){if(value){if(value==="true"){value=true}else if(value==="false"){value=false}else if(!isNaN(parseFloat(value))&&parseFloat(value).toString()===value){value=parseFloat(value)}else if(typeof value==="string"&&(value.substr(0,1)==="{"||value.substr(0,1)==="[")){try{value=JSON.parse(value)}catch(e){}}}lineconf[nestname]=value}else{var newobj=lineconf;lineconf={};lineconf[nestname]=newobj}}$.extend(true,obj,lineconf)}return obj};conduitGeneralBaldrick=function(){$(".wp-trigger").conduitTrigger({method:"POST",before:function(el){var trigger=$(el),app=trigger.closest("[data-app]");if(app.length){trigger.data("data",JSON.stringify(conduitBuildData(app.data("app"))))}else{if(trigger.data("data")){trigger.data("data",JSON.stringify(conduitBuildData(trigger.data("data"))))}}}})};conduitSaveObject=function(app){var obj;if(true===app){obj=conduitPrepObject()}else{obj=conduitPrepObject(app)}var data={action:uix.slug+"_save_config",uix_setup:$("#uix_setup").val(),page_slug:uix.page_slug,config:JSON.stringify(obj),autosave:true};if(uix.save_params){data.params=uix.save_params}$(window).trigger("uix.saving");if(currentAjaxProcess){currentAjaxProcess.abort()}currentAjaxProcess=$.post(ajaxurl,data,function(response){$(window).trigger("uix.saved");currentAjaxProcess=null})};conduitPrepObject=function(){var obj={};for(var app in conduitApp){if(conduitApp[app].app){if(conduitApp[app].app.is(":visible")){obj[app]=conduitBuildData(app)}else{obj[app]=conduitApp[app].data}}if(obj[app]._tab){delete obj[app]._tab}}return obj};conduitModalFooter=function(opts){var buttons=opts.buttons?opts.buttons.split(" "):["save"],points=opts.modal.split("."),app=opts.app?opts.app:opts.trigger.closest("[data-app]").data("app"),data={__node_path:points.join(".")},template_str="",template;data.__app=app;if(opts.trigger.data("before")){data.__before=opts.trigger.data("before")}if(opts.trigger.data("callback")){data.__callback=opts.trigger.data("callback")}for(var i=0;i{{> '+opts.template+"}}",{data:true});data={};conduitBuildData(app);if(conduitApp[app]){var tmp=conduitApp[app].data;if(hasDefault!==null){data=hasDefault}else{for(var i=0;i