balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

redux-change.js (4507B)


      1 /* jshint unused:false */
      2 /* global redux */
      3 
      4 var confirmOnPageExit = function( e ) {
      5 
      6 	// Return; // ONLY FOR DEBUGGING.
      7 	// If we haven't been passed the event get the window.event.
      8 	'use strict';
      9 
     10 	var message;
     11 
     12 	e = e || window.event;
     13 
     14 	message = redux.optName.args.save_pending;
     15 
     16 	// For IE6-8 and Firefox prior to version 4.
     17 	if ( e ) {
     18 		e.returnValue = message;
     19 	}
     20 
     21 	window.onbeforeunload = null;
     22 
     23 	// For Chrome, Safari, IE8+ and Opera 12+.
     24 	return message;
     25 };
     26 
     27 function redux_change( variable ) {
     28 	'use strict';
     29 
     30 	(function( $ ) {
     31 		var rContainer;
     32 		var opt_name;
     33 		var parentID;
     34 		var id;
     35 		var th;
     36 		var subParent;
     37 		var errorCount;
     38 		var errorsLeft;
     39 		var warningCount;
     40 		var warningsLeft;
     41 
     42 		variable = $( variable );
     43 
     44 		rContainer = $( variable ).parents( '.redux-container:first' );
     45 
     46 		if ( redux.customizer ) {
     47 			opt_name = $( '.redux-customizer-opt-name' ).data( 'opt-name' );
     48 		} else {
     49 			opt_name = $.redux.getOptName( rContainer );
     50 		}
     51 
     52 		$( 'body' ).trigger( 'check_dependencies', variable );
     53 
     54 		if ( variable.hasClass( 'compiler' ) ) {
     55 			$( '#redux-compiler-hook' ).val( 1 );
     56 		}
     57 
     58 		parentID = $( variable ).closest( '.redux-group-tab' ).attr( 'id' );
     59 
     60 		// Let's count down the errors now. Fancy.  ;).
     61 		id = parentID.split( '_' );
     62 
     63 		id = id[0];
     64 
     65 		th        = rContainer.find( '.redux-group-tab-link-a[data-key="' + id + '"]' ).parents( '.redux-group-tab-link-li:first' );
     66 		subParent = $( '#' + parentID + '_li' ).parents( '.hasSubSections:first' );
     67 
     68 		if ( $( variable ).parents( 'fieldset.redux-field:first' ).hasClass( 'redux-field-error' ) ) {
     69 			$( variable ).parents( 'fieldset.redux-field:first' ).removeClass( 'redux-field-error' );
     70 			$( variable ).parent().find( '.redux-th-error' ).slideUp();
     71 
     72 			errorCount = ( parseInt( rContainer.find( '.redux-field-errors span' ).text(), 0 ) - 1 );
     73 
     74 			if ( errorCount <= 0 ) {
     75 				$( '#' + parentID + '_li .redux-menu-error' ).fadeOut( 'fast' ).remove();
     76 				$( '#' + parentID + '_li .redux-group-tab-link-a' ).removeClass( 'hasError' );
     77 				$( '#' + parentID + '_li' ).parents( '.inside:first' ).find( '.redux-field-errors' ).slideUp();
     78 				$( variable ).parents( '.redux-container:first' ).find( '.redux-field-errors' ).slideUp();
     79 				$( '#redux_metaboxes_errors' ).slideUp();
     80 			} else {
     81 				errorsLeft = ( parseInt( th.find( '.redux-menu-error:first' ).text(), 0 ) - 1 );
     82 
     83 				if ( errorsLeft <= 0 ) {
     84 					th.find( '.redux-menu-error:first' ).fadeOut().remove();
     85 				} else {
     86 					th.find( '.redux-menu-error:first' ).text( errorsLeft );
     87 				}
     88 
     89 				rContainer.find( '.redux-field-errors span' ).text( errorCount );
     90 			}
     91 
     92 			if ( 0 !== subParent.length ) {
     93 				if ( 0 === subParent.find( '.redux-menu-error' ).length ) {
     94 					subParent.find( '.hasError' ).removeClass( 'hasError' );
     95 				}
     96 			}
     97 		}
     98 
     99 		if ( $( variable ).parents( 'fieldset.redux-field:first' ).hasClass( 'redux-field-warning' ) ) {
    100 			$( variable ).parents( 'fieldset.redux-field:first' ).removeClass( 'redux-field-warning' );
    101 			$( variable ).parent().find( '.redux-th-warning' ).slideUp();
    102 
    103 			warningCount = ( parseInt( rContainer.find( '.redux-field-warnings span' ).text(), 0 ) - 1 );
    104 
    105 			if ( warningCount <= 0 ) {
    106 				$( '#' + parentID + '_li .redux-menu-warning' ).fadeOut( 'fast' ).remove();
    107 				$( '#' + parentID + '_li .redux-group-tab-link-a' ).removeClass( 'hasWarning' );
    108 				$( '#' + parentID + '_li' ).parents( '.inside:first' ).find( '.redux-field-warnings' ).slideUp();
    109 				$( variable ).parents( '.redux-container:first' ).find( '.redux-field-warnings' ).slideUp();
    110 				$( '#redux_metaboxes_warnings' ).slideUp();
    111 			} else {
    112 
    113 				// Let's count down the warnings now. Fancy.  ;).
    114 				warningsLeft = ( parseInt( th.find( '.redux-menu-warning:first' ).text(), 0 ) - 1 );
    115 
    116 				if ( warningsLeft <= 0 ) {
    117 					th.find( '.redux-menu-warning:first' ).fadeOut().remove();
    118 				} else {
    119 					th.find( '.redux-menu-warning:first' ).text( warningsLeft );
    120 				}
    121 
    122 				rContainer.find( '.redux-field-warning span' ).text( warningCount );
    123 			}
    124 
    125 			if ( 0 !== subParent.length ) {
    126 				if ( 0 === subParent.find( '.redux-menu-warning' ).length ) {
    127 					subParent.find( '.hasWarning' ).removeClass( 'hasWarning' );
    128 				}
    129 			}
    130 		}
    131 
    132 		// Don't show the changed value notice while save_notice is visible.
    133 		if ( rContainer.find( '.saved_notice:visible' ).length > 0 ) {
    134 			return;
    135 		}
    136 
    137 		if ( ! redux.optName.args.disable_save_warn ) {
    138 			rContainer.find( '.redux-save-warn' ).slideDown();
    139 			window.onbeforeunload = confirmOnPageExit;
    140 		}
    141 	})( jQuery );
    142 }