JAVASCRIPT   48

cc-page.js

Guest on 3rd August 2021 01:43:09 AM

  1. (function( $ ) {
  2.         jQuery.fn.CTCTHide = function(speed) {
  3.                 if(typeof(speed) === 'undefined') { speed = 'fast'; }
  4.                 this.fadeOut(speed, function() { $(this).addClass('idx-closed'); });
  5.         };
  6.         jQuery.fn.CTCTShow = function(speed) {
  7.                 if(typeof(speed) === 'undefined') { speed = 'fast'; }
  8.                 this.fadeIn(speed, function() { $(this).removeClass('idx-closed'); });
  9.         };
  10. })( jQuery );
  11.  
  12. jQuery(document).ready(function($) {
  13.  
  14.         $('body').on('click', '.kwslog-toggle', function(e) {
  15.                 $('.data', $(this).parents('.kwslog-debug')).toggle();
  16.                 return false;
  17.         });
  18.  
  19.         /**
  20.          * Select the text of an input field on click
  21.          * @filter default text
  22.          * @action default text
  23.          * @param  {[type]}    e     [description]
  24.          * @return {[type]}          [description]
  25.          */
  26.         function ctct_select_text(e) {
  27.             e.preventDefault();
  28.  
  29.             $(this).focus().select();
  30.  
  31.             return false;
  32.         }
  33.  
  34.         $('.ctct_table input[readonly], input[readonly].select-text').on('click', ctct_select_text );
  35.  
  36.         function ctct_pointers(target) {
  37.  
  38.         if(typeof CTCT == 'undefined' || !CTCT || !CTCT.pointers || !CTCT.pointers.pointers) { return; }
  39.  
  40.         CTCT.pointers.pointers.forEach(function(pointer, index, array) {
  41.                         ctct_pointer(pointer);
  42.         });
  43.     }
  44.  
  45.     function ctct_pointer(pointer) {
  46.  
  47.         hide_pointers = $.cookie('ctct_hide_pointers');
  48.         hide_pointers_array = hide_pointers ? hide_pointers.split(/,/) : [];
  49.  
  50.         if($.inArray(pointer.pointer_id, hide_pointers_array) >= 0) { return; }
  51.  
  52.                 options = $.extend( pointer.options, {
  53.             close: function(event) {
  54.  
  55.                 hide_pointers_array.push(pointer.pointer_id);
  56.  
  57.                 $.cookie('ctct_hide_pointers', hide_pointers_array.join(','));
  58.  
  59.                 $.post( ajaxurl, {
  60.                     pointer: pointer.pointer_id,
  61.                     action: 'dismiss-wp-pointer'
  62.                 });
  63.             }
  64.         });
  65.  
  66.         $(pointer.target).data('pointer_id', pointer.pointer_id).pointer( options );
  67.  
  68.                 if($(pointer.target).is(':visible')) {
  69.                 $(pointer.target).pointer('open');
  70.         } else {
  71.                 $(pointer.target).pointer('destroy');
  72.         }
  73.  
  74.     }
  75.  
  76.     /**
  77.      * Toggle the WP help menu tab by linking to them
  78.      */
  79.     $('body').on('click', 'a[rel="wp-help"]', function() {
  80.  
  81.         if($('#screen-meta').is(':hidden')) {
  82.                 $('#contextual-help-link').click();
  83.         }
  84.  
  85.         $('#screen-meta a[href*="' + $(this).attr('href').replace('#', '') +'"]').click();
  86.  
  87.         return false;
  88.     });
  89.  
  90.         // Fix the issue caused by having plugin status down there.
  91.         $('#wpbody').css('padding-bottom', $('#wpfooter').height());
  92.  
  93.         $('a[rel~=external]').attr('target', '_blank');
  94.  
  95.         $('.tablink').click(function(e) {
  96.                 e.preventDefault();
  97.                 $($(this).attr('href') + '-link').click();
  98.                 return false;
  99.         });
  100.  
  101.         $('.confirm').click(function() {
  102.  
  103.                 var confirm1 = confirm($(this).data('confirm'));
  104.                 var confirm2 = $(this).data('confirm-again');
  105.  
  106.                 if(confirm1) {
  107.                         if(confirm2) { return confirm(confirm2); }
  108.                         return true;
  109.                 } else {
  110.                         return false;
  111.                 }
  112.         });
  113.  
  114.         $('#constant-contact_page_constant-contact-forms').ready(function() {
  115.                 ctct_pointers();
  116.         });
  117.  
  118.         $('#ctct-settings-tabs').tabs({
  119.                 show: false,
  120.                 create: function(event, ui) {
  121.                         ctct_pointers();
  122.                         ctct_set_referrer();
  123.                 },
  124.                 activate: function(event, ui) {
  125.                         ctct_pointers();
  126.  
  127.                         $(this).addClass('size-'+$('.ui-tabs-nav', $(this)).length);
  128.                         event.preventDefault();
  129.  
  130.                         var hash = $('a', ui.newTab).attr('href').replace( /^#/, '' );
  131.                         var fx, node = $( '#' + hash );
  132.  
  133.                         if ( node.length ) {
  134.                                 node.attr( 'id', '' );
  135.  
  136.                                 fx = $( '<div></div>' )
  137.                                         .css({
  138.                                                 position:'absolute',
  139.                                                 visibility:'hidden',
  140.                                                 top: $(document).scrollTop() + 'px'
  141.                                         })
  142.                                         .attr( 'id', hash )
  143.                                         .prependTo( $('body') );
  144.                         }
  145.  
  146.                         document.location.hash = hash;
  147.  
  148.                         if ( node.length ) {
  149.                                 fx.remove();
  150.                                 node.attr( 'id', hash );
  151.                         }
  152.  
  153.                         ctct_set_referrer();
  154.  
  155.                         return false;
  156.                 },
  157.                 cookie: { expires: 1 }
  158.         });
  159.  
  160.         function ctct_set_referrer() {
  161.  
  162.                 var $referrer = $('input[name=_wp_http_referer]', '.toplevel_page_constant-contact-api');
  163.  
  164.                 if($referrer.length) {
  165.                         $referrer.val($referrer.val().replace(/(#.+)$/gi, '') + document.location.hash);
  166.                 }
  167.         }
  168.  
  169.         $('.inline-edit-update').on('click submit', function() {
  170.                 $(this).parent('span').addClass('submitting-in-progress');
  171.         });
  172.  
  173.         /**
  174.          * Inline Edit
  175.          * @see KWSAjax::processAjax()
  176.          */
  177.         $('.editable').attr('title', CTCT.text.editable ).inlineEdit({
  178.                 buttons: '<button class="save button button-primary inline-edit-update">Update</button> <button class="cancel button button-secondary">Cancel</button>',
  179.                 cancelOnBlur: true,
  180.                 placeholder: CTCT.text.editable,
  181.                 editInProgress: 'edit-in-progress',
  182.                 save: function(event, data, widget ) {
  183.                         var $that = $(this);
  184.  
  185.                         $that.removeClass("edit-in-progress").addClass('saving-in-progress');
  186.  
  187.                         ctct_ajax(data, $that).done(function ( success ) {
  188.  
  189.                                 $that.removeClass('saving-in-progress');
  190.  
  191.                                 if(success) {
  192.                                         $that.effect("highlight", {color: '#e99e23'}, 3000);
  193.                                 } else {
  194.                                         $that.effect("highlight", {color: 'red'}, 3000);
  195.                                 }
  196.                         });
  197.                 }
  198.         });
  199.  
  200.         $('.constant-contact_page_constant-contact-contacts .ctct-lists').on('change', function() {
  201.  
  202.                 // If we're on add/edit, don't run this AJAX stuff.
  203.                 if($('.edit-new-h2').length === 0) { return; }
  204.  
  205.                 var data = {
  206.                         value : $('input', $(this)).serializeArray(),
  207.                         field : 'lists'
  208.                 };
  209.  
  210.                 ctct_ajax(data, $(this));
  211.  
  212.         });
  213.  
  214.         function ctct_ajax(data, $object) {
  215.  
  216.                 var id = ( typeof( CTCT ) !== 'undefined' && CTCT.id ) ? CTCT.id : $object.data('id');
  217.                 var field = $object.data('name') ? $object.data('name') : data.field;
  218.                 var parent = $object.data('parent') ? $object.data('parent') : data.parent;
  219.  
  220.  
  221.                 var result = $.Deferred();
  222.  
  223.                 $.ajax({
  224.                         url: ajaxurl,
  225.                         method: 'POST',
  226.                         async: true,
  227.                         isLocal: true,
  228.                         timeout: 15000, // 15 seconds is way more time than should be necessary.
  229.                         data: {
  230.                                 'action': 'ctct_ajax',
  231.                                 '_wpnonce': CTCT._wpnonce,
  232.                                 'value': data.value,
  233.                                 'id': id,
  234.                                 'component': CTCT.component,
  235.                                 'field': field,
  236.                                 'parent': parent
  237.                         }
  238.                 })
  239.                 .done( function ( data, textStatus, jqXHR ) {
  240.  
  241.                         var message = CTCT.text.request_nothing_changed;
  242.  
  243.                         // Content has changed.
  244.                         if( 'nocontent' !== textStatus ) {
  245.                                 var responseText = $.parseJSON( data );
  246.                                 message = responseText.message;
  247.                         }
  248.  
  249.                         // Just a friendly note it went well.
  250.                         alertify.log( message );
  251.  
  252.                         result.resolve( true );
  253.                 })
  254.                 .fail( function ( data, textStatus, jqXHR ) {
  255.  
  256.                         var responseText = $.parseJSON( data.responseText );
  257.  
  258.                         var error_template = '<h3>{heading}</h3><p>{error_message}</p>';
  259.  
  260.                         // If a CtctException, it's a message array. Otherwise, it's a string.
  261.                         var message = ( typeof( responseText.message ) === 'string' ) ? responseText.message : responseText.message[0].error_message.replace(/^.*?:/ig, '');
  262.                         var request_error = CTCT.text.request_error
  263.                                 .replace('{code}', responseText.code )
  264.                                 .replace('{message}', message );
  265.  
  266.                         error_template = error_template
  267.                                 .replace('{heading}', CTCT.text.request_failed_heading )
  268.                                 .replace('{error_message}', request_error );
  269.  
  270.                         // A full modal showing it didn't work.
  271.                         alertify.alert( error_template ).set('basic', true);
  272.  
  273.                         result.resolve( false );
  274.                 });
  275.  
  276.                 return result.promise();
  277.         }
  278.  
  279.         // Set up support tooltips
  280.         $('.cc_tip,.ctct_tip').each(function() {
  281.                 $(this).tooltip({
  282.                 content: function () {
  283.                     return $(this).prop('title');
  284.                 }
  285.             });
  286.      });
  287.  
  288.  
  289.         $( document ).on( 'ready', function (e ) {
  290.                 $('.constant-contact-api-toggle[rel][type=radio]').filter(':checked').trigger('ctct_ready');
  291.         } );
  292.  
  293.         $('.constant-contact-api-toggle[rel]').on('click ready ctct_ready save', function(e) {
  294.                 CTCTToggleVisibility($(this), e);
  295.         });
  296.  
  297.         function CTCTToggleVisibility($that, event) {
  298.                 var speed = 'fast';
  299.                 if(typeof(event) === 'object' && (event.type === 'save-widget' || event.type === 'ctct_ready')) { speed = 0; }
  300.  
  301.                 if($that.attr('rel') && $that.attr('rel') !== '') {
  302.  
  303.                         var rel = $that.attr( 'rel' );
  304.                         var type = $that.parents( '.form-table' ).length ? 'tr' : 'div.ctct_setting';
  305.                         var checked = $that.is( ':checked' );
  306.                         var visible = $that.is( ':visible' );
  307.                         var $row = $( '.toggle_' + rel );
  308.  
  309.                         if ( (checked && visible) || (checked && $that.parents( '.widget' ).length > 0) ) {
  310.  
  311.                                 if ( $that.attr( 'type' ) === 'radio' ) {
  312.                                         // Process all the radio options in the same <tr>
  313.                                         $( '.constant-contact-api-toggle', $that.parents( type ) ).each( function () {
  314.                                                 var $thisrel = $( '.toggle_' + $( this ).attr( 'rel' ) );
  315.                                                 var $thisrelparents = $thisrel.parents( type ).removeClass( 'ctct-closed' );
  316.                                                 if ( $( this ).attr( 'rel' ) !== 'false' ) {
  317.                                                         $thisrel.not( '.toggle_' + rel ).parents( type ).hide().addClass( 'ctct-closed' );
  318.                                                 }
  319.                                                 $thisrelparents.not( '.ctct-closed' ).CTCTShow( speed );
  320.                                         } );
  321.                                 } else {
  322.                                         $that.attr( 'rel', false );
  323.                                         $row.each( function () {
  324.                                                 var $thisrow = $( this );
  325.                                                 var show = true;
  326.                                                 // If the input is in multiple togglegroups, deal with that.
  327.                                                 var matches = $( this ).attr( 'class' ).match( /(toggle_.*?\b)+/gi );
  328.                                                 if ( matches && !$( 'body' ).hasClass( 'widgets-php' ) ) {
  329.                                                         $.each( matches, function ( k, v ) {
  330.                                                                 var $input = $( 'input[rel=' + v.replace( 'toggle_', '' ) + ']' );
  331.                                                                 if ( $input.length > 0 && !$input.attr( 'checked' ) ) {
  332.                                                                         show = false;
  333.                                                                 }
  334.                                                         } );
  335.                                                 }
  336.                                                 if ( show === true ) {
  337.                                                         $( this ).parents( type ).CTCTShow( speed );
  338.                                                 }
  339.                                         } );
  340.                                 }
  341.                         } else {
  342.                                 $row.each( function () {
  343.                                         $( this ).parents( type ).CTCTHide( speed );
  344.                                 } );
  345.                         }
  346.  
  347.                         $that.attr( 'rel', rel );
  348.                 }
  349.         }
  350.  
  351. });

Raw Paste


Login or Register to edit or fork this paste. It's free.