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 }