| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- ( function( $ ) {
- 'use strict';
- if ( typeof wpcf7 === 'undefined' || wpcf7 === null ) {
- return;
- }
- $( function() {
- var welcomePanel = $( '#welcome-panel' );
- var updateWelcomePanel;
- updateWelcomePanel = function( visible ) {
- $.post( ajaxurl, {
- action: 'wpcf7-update-welcome-panel',
- visible: visible,
- welcomepanelnonce: $( '#welcomepanelnonce' ).val()
- } );
- };
- $( 'a.welcome-panel-close', welcomePanel ).click( function( event ) {
- event.preventDefault();
- welcomePanel.addClass( 'hidden' );
- updateWelcomePanel( 0 );
- } );
- $( '#contact-form-editor' ).tabs( {
- active: wpcf7.activeTab,
- activate: function( event, ui ) {
- $( '#active-tab' ).val( ui.newTab.index() );
- }
- } );
- $( '#contact-form-editor-tabs' ).focusin( function( event ) {
- $( '#contact-form-editor .keyboard-interaction' ).css(
- 'visibility', 'visible' );
- } ).focusout( function( event ) {
- $( '#contact-form-editor .keyboard-interaction' ).css(
- 'visibility', 'hidden' );
- } );
- wpcf7.toggleMail2( 'input:checkbox.toggle-form-table' );
- $( 'input:checkbox.toggle-form-table' ).click( function( event ) {
- wpcf7.toggleMail2( this );
- } );
- if ( '' === $( '#title' ).val() ) {
- $( '#title' ).focus();
- }
- wpcf7.titleHint();
- $( '.contact-form-editor-box-mail span.mailtag' ).click( function( event ) {
- var range = document.createRange();
- range.selectNodeContents( this );
- window.getSelection().addRange( range );
- } );
- wpcf7.updateConfigErrors();
- $( '[data-config-field]' ).change( function() {
- var postId = $( '#post_ID' ).val();
- if ( ! postId || -1 == postId ) {
- return;
- }
- var data = [];
- $( this ).closest( 'form' ).find( '[data-config-field]' ).each( function() {
- data.push( {
- 'name': $( this ).attr( 'name' ).replace( /^wpcf7-/, '' ).replace( /-/g, '_' ),
- 'value': $( this ).val()
- } );
- } );
- data.push( { 'name': 'context', 'value': 'dry-run' } );
- $.ajax( {
- method: 'POST',
- url: wpcf7.apiSettings.getRoute( '/contact-forms/' + postId ),
- beforeSend: function( xhr ) {
- xhr.setRequestHeader( 'X-WP-Nonce', wpcf7.apiSettings.nonce );
- },
- data: data
- } ).done( function( response ) {
- wpcf7.configValidator.errors = response.config_errors;
- wpcf7.updateConfigErrors();
- } );
- } );
- $( window ).on( 'beforeunload', function( event ) {
- var changed = false;
- $( '#wpcf7-admin-form-element :input[type!="hidden"]' ).each( function() {
- if ( $( this ).is( ':checkbox, :radio' ) ) {
- if ( this.defaultChecked != $( this ).is( ':checked' ) ) {
- changed = true;
- }
- } else if ( $( this ).is( 'select' ) ) {
- $( this ).find( 'option' ).each( function() {
- if ( this.defaultSelected != $( this ).is( ':selected' ) ) {
- changed = true;
- }
- } );
- } else {
- if ( this.defaultValue != $( this ).val() ) {
- changed = true;
- }
- }
- } );
- if ( changed ) {
- event.returnValue = wpcf7.saveAlert;
- return wpcf7.saveAlert;
- }
- } );
- $( '#wpcf7-admin-form-element' ).submit( function() {
- if ( 'copy' != this.action.value ) {
- $( window ).off( 'beforeunload' );
- }
- if ( 'save' == this.action.value ) {
- $( '#publishing-action .spinner' ).addClass( 'is-active' );
- }
- } );
- } );
- wpcf7.toggleMail2 = function( checkbox ) {
- var $checkbox = $( checkbox );
- var $fieldset = $( 'fieldset',
- $checkbox.closest( '.contact-form-editor-box-mail' ) );
- if ( $checkbox.is( ':checked' ) ) {
- $fieldset.removeClass( 'hidden' );
- } else {
- $fieldset.addClass( 'hidden' );
- }
- };
- wpcf7.updateConfigErrors = function() {
- var errors = wpcf7.configValidator.errors;
- var errorCount = { total: 0 };
- $( '[data-config-field]' ).each( function() {
- $( this ).removeAttr( 'aria-invalid' );
- $( this ).next( 'ul.config-error' ).remove();
- var section = $( this ).attr( 'data-config-field' );
- if ( errors[ section ] ) {
- var $list = $( '<ul></ul>' ).attr( {
- 'role': 'alert',
- 'class': 'config-error'
- } );
- $.each( errors[ section ], function( i, val ) {
- var $li = $( '<li></li>' ).append(
- wpcf7.iconInCircle( '!' )
- ).append(
- $( '<span class="screen-reader-text"></span>' ).text( wpcf7.configValidator.iconAlt )
- ).append( ' ' );
- if ( val.link ) {
- $li.append(
- $( '<a></a>' ).attr( 'href', val.link ).text( val.message )
- );
- } else {
- $li.text( val.message );
- }
- $li.appendTo( $list );
- var tab = section
- .replace( /^mail_\d+\./, 'mail.' ).replace( /\..*$/, '' );
- if ( ! errorCount[ tab ] ) {
- errorCount[ tab ] = 0;
- }
- errorCount[ tab ] += 1;
- errorCount.total += 1;
- } );
- $( this ).after( $list ).attr( { 'aria-invalid': 'true' } );
- }
- } );
- $( '#contact-form-editor-tabs > li' ).each( function() {
- var $item = $( this );
- $item.find( '.icon-in-circle' ).remove();
- var tab = $item.attr( 'id' ).replace( /-panel-tab$/, '' );
- $.each( errors, function( key, val ) {
- key = key.replace( /^mail_\d+\./, 'mail.' );
- if ( key.replace( /\..*$/, '' ) == tab.replace( '-', '_' ) ) {
- var $mark = wpcf7.iconInCircle( '!' );
- $item.find( 'a.ui-tabs-anchor' ).first().append( $mark );
- return false;
- }
- } );
- var $tabPanelError = $( '#' + tab + '-panel > div.config-error:first' );
- $tabPanelError.empty();
- if ( errorCount[ tab.replace( '-', '_' ) ] ) {
- $tabPanelError.append( wpcf7.iconInCircle( '!' ) );
- if ( 1 < errorCount[ tab.replace( '-', '_' ) ] ) {
- var manyErrorsInTab = wpcf7.configValidator.manyErrorsInTab
- .replace( '%d', errorCount[ tab.replace( '-', '_' ) ] );
- $tabPanelError.append( manyErrorsInTab );
- } else {
- $tabPanelError.append( wpcf7.configValidator.oneErrorInTab );
- }
- }
- } );
- $( '#misc-publishing-actions .misc-pub-section.config-error' ).remove();
- if ( errorCount.total ) {
- var $warning = $( '<div></div>' )
- .addClass( 'misc-pub-section config-error' )
- .append( wpcf7.iconInCircle( '!' ) );
- if ( 1 < errorCount.total ) {
- $warning.append(
- wpcf7.configValidator.manyErrors.replace( '%d', errorCount.total )
- );
- } else {
- $warning.append( wpcf7.configValidator.oneError );
- }
- $warning.append( '<br />' ).append(
- $( '<a></a>' )
- .attr( 'href', wpcf7.configValidator.docUrl )
- .text( wpcf7.configValidator.howToCorrect )
- );
- $( '#misc-publishing-actions' ).append( $warning );
- }
- };
- /**
- * Copied from wptitlehint() in wp-admin/js/post.js
- */
- wpcf7.titleHint = function() {
- var $title = $( '#title' );
- var $titleprompt = $( '#title-prompt-text' );
- if ( '' === $title.val() ) {
- $titleprompt.removeClass( 'screen-reader-text' );
- }
- $titleprompt.click( function() {
- $( this ).addClass( 'screen-reader-text' );
- $title.focus();
- } );
- $title.blur( function() {
- if ( '' === $(this).val() ) {
- $titleprompt.removeClass( 'screen-reader-text' );
- }
- } ).focus( function() {
- $titleprompt.addClass( 'screen-reader-text' );
- } ).keydown( function( e ) {
- $titleprompt.addClass( 'screen-reader-text' );
- $( this ).unbind( e );
- } );
- };
- wpcf7.iconInCircle = function( icon ) {
- var $span = $( '<span class="icon-in-circle" aria-hidden="true"></span>' );
- return $span.text( icon );
- };
- wpcf7.apiSettings.getRoute = function( path ) {
- var url = wpcf7.apiSettings.root;
- url = url.replace(
- wpcf7.apiSettings.namespace,
- wpcf7.apiSettings.namespace + path );
- return url;
- };
- } )( jQuery );
|