Plugin Directory

Changeset 3439578


Ignore:
Timestamp:
01/14/2026 01:41:17 PM (2 months ago)
Author:
davidfcarr
Message:

updated add/remove guest script

Location:
rsvpmaker
Files:
1094 added
6 edited

Legend:

Unmodified
Added
Removed
  • rsvpmaker/trunk/README.txt

    r3428416 r3439578  
    99Requires at least: 5.0
    1010Tested up to: 6.9
    11 Stable tag: 11.7.2
     11Stable tag: 11.7.3
    1212
    1313Event and email marketing. Register guests and collect payment by PayPal or Stripe. Send invitations and newsletters.
     
    130130== Changelog ==
    131131
     132= 11.7.3 =
     133
     134* Changed scripts for adding and removing guests.
     135
    132136= 11.7 =
    133137
     
    159163
    160164* Streamlined queries, new caching strategy
    161 
    162 = 11.4.9 =
    163 
    164 * Update to stay in sync with Stripe requirements.
    165 
    166 = 11.4.8 =
    167 
    168 * Search transaction log by email, with link from RSVP Report
    169 * Bug fixes for mailing list maintenance, paypal webhook api endpoint
    170 
    171 = 11.4.5 =
    172 
    173 * Tweaks to screen for viewing / restoring emails on unsubscribe list.
    174 * View / restore RSVP registrations that were dropped from list for nonpayment.
    175 
    176 = 11.4.4 =
    177 
    178 * Contact form improvements. Payment options for contact form.
    179 * Contact form can serve as an order form for gift certificates that can be redeemed against events.
    180 
    181 = 11.4.2 =
    182 
    183 * Eliminate one stray use of PHP short tags not supported in some configs of PHP 8
  • rsvpmaker/trunk/rsvpmaker-form.php

    r3419017 r3439578  
    315315    $shared = '';
    316316
    317     $label = ( isset( $atts['label'] ) ) ? $atts['label'] : __( 'Guest', 'rsvpmaker' );
     317    $label = ( isset( $atts['label'] ) ) ? $atts['label'] : '#';
    318318    $max_party = ( isset( $atts['max_party'] ) ) ? (int) $atts['max_party'] : 0;
    319     $count = ($master_rsvp) ? $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM %i WHERE master_rsvp=",$wpdb->prefix . 'rsvpmaker', $master_rsvp)) : 0;
     319    $count = ($master_rsvp) ? $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM %i WHERE master_rsvp=%d",$wpdb->prefix . 'rsvpmaker', $master_rsvp)) : 0;
    320320    $max_guests = $blanks_allowed + $count;
    321321
     
    330330        }
    331331    }
    332     $template = '<input type="hidden" id="max_guests" value="' . $max_guests . '" />'."\n";
    333 
    334     $template .= '<div class="guest_blank" id="first_blank" style="display:none"><p><strong>' . __( 'Guest', 'rsvpmaker' ) . ' ###</strong></p>' . $shared . $content . '</div>';// fields shared from master form, plus added fields
    335 
    336     $addmore = ( isset( $atts['addmore'] ) ) ? $atts['addmore'] : __( 'Add Guests', 'rsvpmaker' );
    337     // $master_rsvp = 4;//test data
    338 
    339     $wpdb->show_errors();
    340 
    341     $output = '';
     332    $output = '<input type="hidden" id="max_guests" value="' . $max_guests . '" />'."\n";
     333
     334    $output .= '<div class="guest_blank" id="guest_blank_template" style="display:none"><p><strong># ###</strong></p>' . $shared . $content . '</div>';// fields shared from master form, plus added fields
    342335
    343336    $count = 1; // reserve 0 for host
     
    353346            foreach ( $results as $row ) {
    354347
    355                 $output .= sprintf( '<div class="guest_blank"><p><strong>%s %d</strong></p>', $label, $count ) . "\n";
     348                $count++;
     349
     350                $output .= sprintf( '<div class="guest_blank" id="guest_blank_%d"><p><strong>%s %d</strong></p>', $count, $label, $count ) . "\n";
    356351
    357352                $gprofile = rsvp_row_to_profile( $row );
     
    377372                $output = str_replace( '[]', '[' . $count . ']', $output );
    378373
    379                 $output .= sprintf( '<div><input type="checkbox" name="guestdelete[%s]" value="%s" /> ' . __( 'Delete Guest', 'rsvpmaker' ) . ' %d</div><input type="hidden" name="guest[id][%s]" value="%s">', esc_attr( $row['id'] ), esc_attr( $row['id'] ), $count, $count, esc_attr( $row['id'] ) );
    380 
    381                 $count++;
     374                $output .= '</div>';
     375
     376                $output .= sprintf( '<input type="hidden" name="guest[id][%s]" value="%s">', $count, esc_attr( $row['id'] ) );
    382377
    383378            }
     
    385380    }
    386381
    387     $output .= $template;
     382    //$output .= $template;
    388383
    389384    $max_guests = $blanks_allowed + $count;
     
    409404        }   
    410405    }
     406    if ( !strpos($post->post_type,'svpmaker') || $max_guests > ( $count + 1 ) || $is_rsvp_report ) {
     407        $output = '<h3>'.esc_html__('Add Guests','rsvpmaker').'</h3><p><input type="hidden" id="starting_count" value="'.esc_attr($count).'" /> <input type="number" id="people_in_party" name="people_in_party" min="1" value="'.esc_attr($count).'" style="width: 50px;" > '.__('People in party').'</p><p><strong id="rsvphost"># 1 (You)</strong></p>'."\n".$output;
     408    }
    411409
    412410    $output = '<div id="guest_section" tabindex="-1">' . "\n" . $output . '</div>' . '<!-- end of guest section-->';
    413411
    414     if ( !strpos($post->post_type,'svpmaker') || $max_guests > ( $count + 1 ) || $is_rsvp_report ) {
    415 
    416         $output .= '<p><span class="plusguests">+</span> <input type="number" id="number_to_add" name="number_to_add" min="1" value="1" style="width: 50px;" > <a href="#guest_section" id="add_guests" class="add_guests_button" name="add_guests">' . $addmore . '</a> <!-- end of guest section--></p>'."\n";
    417     }
    418 
    419     $output .= sprintf('<p><strong>%s: <span id="totalparty">%d</span></strong><input type="hidden" id="guestcount" value="%d" /></p>',__('Total party (including you)','rsvpmaker'),$count,$count);//'<script type="text/javascript"> var guestcount =' . $count . '; </script>';
     412    $output .= sprintf('<input type="hidden" id="guestcount" value="%d" />',$count);//'<script type="text/javascript"> var guestcount =' . $count . '; </script>';
    420413
    421414    return $output;
  • rsvpmaker/trunk/rsvpmaker-quick-playground.php

    r3419017 r3439578  
    2323add_filter('qckply_qckply_clone_posts','qckply_qckply_clone_rsvpmakers', 10, 2);
    2424function qckply_qckply_clone_rsvpmakers($clone, $settings) {
     25    global $rsvp_options;
     26    //todo: import rsvpmaker_template and rsvpmaker_form posts as well
     27    $rsvp_posts = [];
    2528    error_log('qckply_qckply_clone_rsvpmakers copy events '.intval($settings['copy_events']));
    2629    $was = sizeof($clone['posts']);
     
    3437            foreach($rsvpmakers as $r) {
    3538                $clone['ids'][] = $r->ID;
     39                $rsvp_posts[] = $r->ID;
    3640                $post = array(
    3741                    'ID' => $r->ID,
     
    5660        $r = intval($r);
    5761        if($post = get_post($r)) {
     62        if(!in_array($r->ID,$rsvp_posts))
     63            $rsvp_posts[] = $r;
    5864        $clone['ids'][] = $r;
    5965        $post = (array) $post;
     
    6369    }
    6470}
     71   
     72    $id = get_option('rsvpmaker_link_template_post');       
     73    if($id) {
     74        if(!in_array($id,$clone['ids']) && $post = get_post($id)) {
     75        $clone['ids'][] = $id;
     76        $post = (array) $post;
     77        $post['post_status'] = 'publish'; // ensure post status is set to publish
     78        $clone['posts'][] = $post;
     79        }
     80    }
     81
     82    $id = $rsvp_options['rsvp_form'];
     83    if($id) {
     84        if(!in_array($id,$clone['ids']) && $post = get_post($id)) {
     85        $clone['ids'][] = $id;
     86        $post = (array) $post;
     87        $post['post_status'] = 'publish'; // ensure post status is set to publish
     88        $clone['posts'][] = $post;
     89        }
     90    }
     91
     92    foreach($rsvp_posts as $post_id) {
     93        if($id = get_post_meta($post_id,'_meet_recur',true))
     94        {
     95            if(!in_array($id,$clone['ids']) && $post = get_post($id)) {
     96            $clone['ids'][] = $id;
     97            $post = (array) $post;
     98            $post['post_status'] = 'publish'; // ensure post status is set to publish
     99            $clone['posts'][] = $post;
     100            }
     101        }
     102        if($id = get_post_meta($post_id,'_rsvp_form',true)) {
     103            if(!in_array($id,$clone['ids']) && $post = get_post($id)) {
     104            $clone['ids'][] = $id;
     105            $post = (array) $post;
     106            $post['post_status'] = 'publish'; // ensure post status is set to publish
     107            $clone['posts'][] = $post;
     108            }
     109        }
     110    }
    65111    $diff = sizeof($clone['posts']) - $was;
    66112    error_log('added '.$diff.' rsvpmaker posts ');
     
    116162    if(function_exists('rsvpmaker_get_future_events')) {
    117163        $settings_list[] = 'RSVPMAKER_Options';
     164        $settings_list[] = 'rsvpmaker_link_template_post';
    118165    }
    119166    return $settings_list;
  • rsvpmaker/trunk/rsvpmaker.js

    r3371475 r3439578  
    4545    var max_guests = $('#max_guests').val();
    4646    console.log('max guests ',max_guests);
    47     var last;
    48     var blank = $('#first_blank').html();
     47    let first;
     48    let last;
     49    var blank = $('#guest_blank_template').html();
     50    $('#guest_blank_template').remove();
    4951    console.log('initial blank',blank);
    50     var firstblank_hidden = true;
    51     let number_to_add = 0;
     52    let newcount;
    5253    let guestline = '';
    53     $('#add_guests').click(function(event){
    54         event.preventDefault();
    55         number_to_add = parseInt($('#number_to_add').val());
    56         console.log('number_to_add',number_to_add);
     54    console.log('starting guestcount',guestcount);
     55    $('#people_in_party').change(function(event){
     56        first = $('#first').val();
    5757        last = $('#last').val();
    58         console.log('number to add',number_to_add);
    59         console.log('guestcount',guestcount);
    60         if(firstblank_hidden) {
    61             firstblank_hidden = false;
    62             let firstblank = blank.replace(/\[\]/g,'['+guestcount+']').replace('###',guestcount);
    63             let defaultlast = (last != '') ? last : 'TBD';
    64             firstblank = firstblank.replace(/\[first\][^\>]+value="/,'$&Guest '+guestcount).replace(/\[last\][^\>]+value="/,'$&'+defaultlast);
    65             $('#first_blank').html(firstblank);
    66             $('#first_blank').show();
     58        $('#rsvphost').html('# 1 '+first+' '+last);
     59        newcount = parseInt($('#people_in_party').val());
     60        if(newcount < 1)
     61            return;
     62        if(!is_admin && (newcount > max_guests))
     63        {
     64        $('#guest_section').append('<p><em>Guest limit reached</em></p>');
     65        return;
     66        }
     67        if(newcount > guestcount) {
     68            while(guestcount < newcount) {
    6769            guestcount++;
    68             $('#totalparty').html(guestcount); // +1 for the person filling out the form
    69             number_to_add--;
    70             if(!number_to_add)
    71                 return;
    72         }
    73     for(let i = 0; i < number_to_add; i++) {
    74         if(!is_admin && (guestcount > max_guests))
    75         {
    76         console.log('guest limit reached');
    77         console.log('guest count',guestcount);
    78         console.log('max_guests',max_guests);
    79         $('#first_blank').append('<p><em>Guest limit reached</em></p>');
    80         return;
    81         }
    82     console.log('guestline loop',i);
    83     console.log('guestline number to add',number_to_add);
    84     console.log('guestline guestcount',guestcount);
    85     guestline = '<div class="guest_blank">' +
    86         blank.replace(/\[\]/g,'['+guestcount+']').replace('###',guestcount).replace(/\[first\][^\>]+value="/,'$&Guest '+guestcount).replace(/\[last\][^\>]+value="/,'$&'+last) +
    87         '</div>';
    88     guestcount++;
    89     $('#first_blank').append(guestline);
    90     }
     70            guestline = '<div class="guest_blank" id="guest_blank_'+guestcount+'">' +
     71                blank.replace(/\[\]/g,'['+guestcount+']').replace('###',guestcount).replace(/\[first\][^\>]+value="/,'$&Guest '+guestcount).replace(/\[last\][^\>]+value="/,'$&'+last) +
     72                '</div>';
     73            $('#guest_section').append(guestline);
     74            }
     75        }
     76        else if (newcount < guestcount) {
     77            for(guestcount; guestcount > newcount; guestcount--) {
     78            $('#guest_blank_'+guestcount).remove();
     79            }
     80        }
     81    });
    9182
    9283    if(hide)
     
    10192    });
    10293    }
    103 
    104     });
    10594
    10695        jQuery("#rsvpform").submit(function() {
  • rsvpmaker/trunk/rsvpmaker.min.js

    r3371475 r3439578  
    1 function showMessage(e){appslug=document.getElementById("appslug").value,console.log("appslug for message: "+appslug),document.getElementById("flexible-form-"+appslug).innerHTML="",document.getElementById("flexform-result-"+appslug).innerHTML=e.message}jQuery(document).ready(function(e){function t(n="",s=!0){e(".tz_converter").each(function(){var a=e(this).attr("id"),l=e(this).attr("time"),o=e(this).attr("end"),r=e(this).attr("format"),i=e(this).attr("post_id"),c=e(this).attr("server_timezone"),d=e(this).attr("timezone_abbrev"),p=e(this).attr("tz_url"),u=e(this).attr("nofluxbutton");console.log("post "+a+" noflux "+u),console.log(d);var v={},m={};if(s&&n==c){if(u)return;return e(this).css("display","inline-block"),m[a]=document.createElement("A"),m[a].innerHTML="Show in My Timezone",m[a].href=p,m[a].className="tzbutton",m[a].style.fontSize="small",document.getElementById(a).appendChild(m[a]),void m[a].addEventListener("click",e=>{e.preventDefault(),m[a].style.display="none";var n=jstz.determine(),s=n.name();t(s,!1)})}var h={time:l,end:o,tzstring:n,format:r,post_id:i,timezone_abbrev:d};console.log(h),jQuery.post(rsvpmaker_rest.rest_url+"rsvpmaker/v1/flux_capacitor",h,function(n){console.log(n),e("#"+a).html(n.content+" "),v[a]=document.createElement("SELECT"),v[a].innerHTML=n.tzoptions,v[a].className="tzselect",v[a].style.display="none",document.getElementById(a).appendChild(v[a]),v[a].addEventListener("change",e=>{var n=e.target.value;t(n,!1)}),m[a]=document.createElement("A"),m[a].innerHTML="Switch Timzeone?",m[a].className="tzswitch",m[a].style.fontSize="small",document.getElementById(a).appendChild(m[a]),m[a].addEventListener("click",e=>{v[a].style.display="block",m[a].style.display="none"})})})}function n(e){(e.first||e.last)&&(p=p.concat("<h3>"+e.first),e.last&&(p=p.concat(" "+e.last)),p=p.concat("</h3>\n"),e.note&&(p=p.concat("<p>"+e.note+"</p>")))}function s(t){var s=rsvpmaker_rest.rsvpmaker_json_url+"guestlist/"+t;fetch(s).then(e=>e.json()).then(s=>{Array.isArray(s)&&(s.forEach(n),""==p&&(p="<div>?</div>"),e("#attendees-"+t).html(p))}).catch(n=>{console.log(n),e("#attendees-"+t).html("Error fetching guestlist from "+s)})}if(e.ajaxSetup({headers:{"X-WP-Nonce":rsvpmaker_rest.nonce}}),e("#formvars")){const t=e("#formvars").attr("hide"),n=(e("#formvars").attr("events_to_add"),e("#formvars").attr("options"),e("#formvars").attr("is_admin")),s=e("#formvars").attr("email_lookup");let c=parseInt(e("#guestcount").val());e(".multieventhide").hide(),e("#rsvp_more_events_click").click(()=>{e(".multieventhide").show()}),e("#coupon_field").hide(),e("#coupon_field_add").click(()=>{e("#coupon_field").show(),e("#coupon_field_prompt").hide()}),e("#guest_count_pricing select").change(function(){e("#rsvpform input").prop("disabled",!1),e("#rsvpform select").prop("disabled",!1),e("#rsvpform div").show(),e("#rsvpform p").show();var n=e(this).val(),s=t[n];e.each(s,function(t,n){e("div."+n).hide(),e("p."+n).hide(),e("."+n).prop("disabled",!0)})});var a,l=e("#max_guests").val();console.log("max guests ",l);var o=e("#first_blank").html();console.log("initial blank",o);var r=!0;let d=0,p="";e("#add_guests").click(function(s){if(s.preventDefault(),d=parseInt(e("#number_to_add").val()),console.log("number_to_add",d),a=e("#last").val(),console.log("number to add",d),console.log("guestcount",c),r){r=!1;let t=o.replace(/\[\]/g,"["+c+"]").replace("###",c),n=""!=a?a:"TBD";if(t=t.replace(/\[first\][^\>]+value="/,"$&Guest "+c).replace(/\[last\][^\>]+value="/,"$&"+n),e("#first_blank").html(t),e("#first_blank").show(),c++,e("#totalparty").html(c),d--,!d)return}for(let t=0;t<d;t++){if(!n&&c>l)return console.log("guest limit reached"),console.log("guest count",c),console.log("max_guests",l),void e("#first_blank").append("<p><em>Guest limit reached</em></p>");console.log("guestline loop",t),console.log("guestline number to add",d),console.log("guestline guestcount",c),p='<div class="guest_blank">'+o.replace(/\[\]/g,"["+c+"]").replace("###",c).replace(/\[first\][^\>]+value="/,"$&Guest "+c).replace(/\[last\][^\>]+value="/,"$&"+a)+"</div>",c++,e("#first_blank").append(p)}if(t){var i=e("#guest_count_pricing select").val(),u=t[i];e.each(u,function(t,n){e("div."+n).hide(),e("p."+n).hide(),e("."+n).prop("disabled",!0)})}}),jQuery("#rsvpform").submit(function(){var t="",n=jQuery("#required").val(),s=n.split(",");return e.each(s,function(e,n){"privacy_consent"==n?jQuery("#privacy_consent:checked").val()||(t+='<div class="rsvp_missing">privacy policy consent checkbox</div>'):""===jQuery("#"+n).val()&&(t=t+'<div class="rsvp_missing">'+n+"</div>")}),""==t||(jQuery("#jqerror").html('<div class="rsvp_validation_error">Required fields left blank:\n'+t+"</div>"),!1)});var i=null;e(function(){var t=3;e("#email").keyup(function(){value=e(this).val();var n=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;e("#event").val();if(value.length>=t&&value.match(n)){null!=i&&i.abort();var a={email_search:value};jQuery.get(s,a,function(t){e("#rsvp_email_lookup").html('<div style="border: medium solid red; padding: 5px; background-color:#fff; color: red;">'+t+"</div>")})}})})}e(".wp-block-rsvpmaker-formfield input").change(function(){let t=e(this).val(),n=t.includes("//");console.log(t+" "+n),n&&(t=t.replace(/[a-z]{0,8}:{0,1}\/\//,""),console.log("strip prefix"),e(this).val(t))}),e(".rsvpmaker-schedule-detail").hide(),e(".rsvpmaker-schedule-button").click(function(t){var n=e(this).attr("id"),s=n.replace("button","detail");e("#"+n).hide(),e("#"+s).show()}),e(".wp-block-rsvpmaker-countdown").each(function(){var t=e(this).attr("event_id"),n=e(this).attr("id");if(""==t){var s=n.split("-");s[1]&&(t=s[1])}if(""==t)return;let a=rsvpmaker_rest.rest_url+"rsvpmaker/v1/time_and_zone/"+t;jQuery.get(a,null,function(t){let s=parseInt(t);if(Number.isNaN(s))return void e("#"+n).html("Event not found");let a=setInterval(function(){var t=(new Date).getTime(),l=s-t,o=Math.floor(l/864e5),r=Math.floor(l%864e5/36e5),i=r<10?"0":"",c=Math.floor(l%36e5/6e4),d=c<10?"0":"",p=Math.floor(l%6e4/1e3),u=p<10?"0":"";if(l<0){clearInterval(a),o=r=c=p="00";let t=e("#"+n).attr("expiration_display"),s=e("#"+n).attr("expiration_message"),l="";"stoppedclock"!=t&&"clockmessage"!=t||(l='<div class="countdowndigits-line"><div class="countdowndigits countdowndays">'+o+'</div> <span class="countdowndayslabel">days</span> <div class="countdowndigits countdownhours">'+r+'</div><span class="countdownspacer">:</span><div class="countdowndigits countdownminutes">'+c+'</div><span class="countdownspacer">:</span><div class="countdowndigits countdownseconds">'+p+"</div></div>"),"message"!=t&&"clockmessage"!=t||(l=l+'<p class="countdown_expiration_message">'+s+"</p>"),e("#"+n).html(l)}else e("#"+n).html('<div class="countdowndigits-line"><div class="countdowndigits countdowndays">'+o+'</div> <span class="countdowndayslabel">days</span> <div class="countdowndigits countdownhours">'+i+r+'</div><span class="countdownspacer">:</span><div class="countdowndigits countdownminutes">'+d+c+'</div><span class="countdownspacer">:</span><div class="countdowndigits countdownseconds">'+u+p+"</div></div>")},1e3)})}),e(".timezone_on").click(function(){var t=e(this).attr("utc"),n=e(this).attr("target"),s=n.replace("timezone_converted","tz_convert_to"),a=e(this).attr("event_tz");if(""!=a){var l=new Date(t);localstring=l.toString(),e("#"+n).html(localstring);var o=localstring.match(/\(([^)]+)/);e(this).attr("event_tz",""),e("#"+s).html("Converting to "+o[1]);var r,i=t.split(/T/);e(".tz-convert, .tz-convert table tr td, .tz-table1 table tr td:first-child, .tz-table2 table tr td:nth-child(2), .tz-table3 table tr td:nth-child(3)").each(function(){celltime=this.innerHTML.replace("&nbsp;"," "),celltime.search(/\d:\d\d/)>=0&&celltime.search("<")<0&&(0,r=i[0]+" "+celltime+" "+a,ts=Date.parse(r),Number.isNaN(ts)||(l.setTime(ts),r=l.toLocaleTimeString().replace(":00 "," "),this.innerHTML=r,e(this).css("font-weight","bold")))});var c=!0;e(".tz-table1 table tr td:first-child, .tz-table2 table tr td:nth-child(2), .tz-table3 table tr td:nth-child(3)").each(function(){c&&""!=this.innerHTML&&this.innerHTML.search(":")<0&&(this.innerHTML="<strong>Your TZ</strong>"),c=!1});var d={action:"rsvpmaker_localstring",localstring:localstring,timelord:rsvpmaker_rest.timelord};jQuery.post(rsvpmaker_rest.ajaxurl,d,function(t){e("#"+n).html(t)})}}),e(".signed_up_ajax").each(function(){var t=e(this).attr("post"),n={event:t,timelord:rsvpmaker_rest.timelord};jQuery.get(rsvpmaker_rest.rest_url+"rsvpmaker/v1/signed_up",n,function(n){e("#signed_up_"+t).html(n)})});var c=jstz.determine(),d=c.name();t(d);var p="";e(".rsvpmaker_show_attendees").click(function(t){var n=e(this).attr("post_id");p="",s(n)});const u=document.getElementsByClassName("rsvpmaker_menu_dropdown");if(u&&u.length){const e=[];let t=0;Array.prototype.filter.call(u,(n,s)=>{if(n.className.includes("rsvpmaker_menu_dropdown"))if(t++,console.log("dropdown",n),console.log("dropdown children",n.children),n.className.includes("rsvpmaker_menu_type")){const t=n.className.match(/rsvpmaker_menu_type_([^\s]+)/);t&&t[1]&&fetch("/wp-json/rsvpmaker/v1/type/"+t[1]).then(e=>e.json()).then(t=>{e.push(""),Array.isArray(t)&&t.forEach(t=>{e[e.length-1]+='<li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="'+t.permalink+'"><span class="wp-block-navigation-item__label">'+t.post_title+" - "+t.neatdate+"</span></a></li>"}),e[e.length-1]&&Array.prototype.filter.call(n.children,t=>{"UL"==t.nodeName&&(t.innerHTML=t.innerHTML+e[e.length-1])})})}else fetch("/wp-json/rsvpmaker/v1/future").then(e=>e.json()).then(t=>{e.push(""),console.log(t);let s=!1;Array.isArray(t)&&t.forEach((t,n)=>{n<12?e[e.length-1]+='<li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="'+t.permalink+'"><span class="wp-block-navigation-item__label">'+t.post_title+" - "+t.neatdate+"</span></a></li>":s=!0}),s&&(e[e.length-1]+='<li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="/rsvpmaker/page/2/"><span class="wp-block-navigation-item__label">More Events</span></a></li>'),e[e.length-1]&&Array.prototype.filter.call(n.children,t=>{"UL"==t.nodeName&&(t.innerHTML=t.innerHTML+e[e.length-1])})})})}});class RSVPJsonWidget{constructor(e,t,n,s=""){this.el=document.getElementById(e),this.url=t,this.limit=n,this.morelink=s;let a="";fetch(t).then(e=>e.json()).then(e=>{var t=!1;Array.isArray(e)?(n&&e.length>=n&&(e=e.slice(0,n),t=!0),e.forEach(function(e,t,n){if(!e.datetime)return"";new Date(e.datetime);a=a.concat('<li class="rsvpmaker-widget-li"><span class="rsvpmaker-widget-title"><a href="'+e.guid+'">'+e.post_title+'</a></span> - <span class="rsvpmaker-widget-date">'+e.date+"</span></li>")})):this.el.innerHTML="None found: "+e.code,""==a?this.el.innerHTML="No event listings found":(t&&""!=s&&(a=a.concat('<li><a href="'+s+'">More events</a></li>')),this.el.innerHTML='<ul class="eventslist rsvpmakerjson">'+a+"</ul>")}).catch(e=>{this.el.innerHTML="Error fetching events from "+this.url,console.log(e)})}}const flexforms=document.querySelectorAll(".rsvpmaker-flexible-form");flexforms.forEach(e=>{e.addEventListener("submit",function(e){e.preventDefault();const t=new FormData(this);console.log(t),fetch(rsvpmaker_rest.rest_url+"rsvpmaker/v1/flexform",{method:"POST",body:t}).then(e=>e.json()).then(e=>showMessage(e))})});
     1function showMessage(e){appslug=document.getElementById("appslug").value,console.log("appslug for message: "+appslug),document.getElementById("flexible-form-"+appslug).innerHTML="",document.getElementById("flexform-result-"+appslug).innerHTML=e.message}jQuery(document).ready(function(e){function t(n="",s=!0){e(".tz_converter").each(function(){var a=e(this).attr("id"),i=e(this).attr("time"),r=e(this).attr("end"),l=e(this).attr("format"),o=e(this).attr("post_id"),c=e(this).attr("server_timezone"),d=e(this).attr("timezone_abbrev"),p=e(this).attr("tz_url"),v=e(this).attr("nofluxbutton");console.log("post "+a+" noflux "+v),console.log(d);var u={},m={};if(s&&n==c){if(v)return;return e(this).css("display","inline-block"),m[a]=document.createElement("A"),m[a].innerHTML="Show in My Timezone",m[a].href=p,m[a].className="tzbutton",m[a].style.fontSize="small",document.getElementById(a).appendChild(m[a]),void m[a].addEventListener("click",e=>{e.preventDefault(),m[a].style.display="none";var n=jstz.determine(),s=n.name();t(s,!1)})}var h={time:i,end:r,tzstring:n,format:l,post_id:o,timezone_abbrev:d};console.log(h),jQuery.post(rsvpmaker_rest.rest_url+"rsvpmaker/v1/flux_capacitor",h,function(n){console.log(n),e("#"+a).html(n.content+" "),u[a]=document.createElement("SELECT"),u[a].innerHTML=n.tzoptions,u[a].className="tzselect",u[a].style.display="none",document.getElementById(a).appendChild(u[a]),u[a].addEventListener("change",e=>{var n=e.target.value;t(n,!1)}),m[a]=document.createElement("A"),m[a].innerHTML="Switch Timzeone?",m[a].className="tzswitch",m[a].style.fontSize="small",document.getElementById(a).appendChild(m[a]),m[a].addEventListener("click",e=>{u[a].style.display="block",m[a].style.display="none"})})})}function n(e){(e.first||e.last)&&(p=p.concat("<h3>"+e.first),e.last&&(p=p.concat(" "+e.last)),p=p.concat("</h3>\n"),e.note&&(p=p.concat("<p>"+e.note+"</p>")))}function s(t){var s=rsvpmaker_rest.rsvpmaker_json_url+"guestlist/"+t;fetch(s).then(e=>e.json()).then(s=>{Array.isArray(s)&&(s.forEach(n),""==p&&(p="<div>?</div>"),e("#attendees-"+t).html(p))}).catch(n=>{console.log(n),e("#attendees-"+t).html("Error fetching guestlist from "+s)})}if(e.ajaxSetup({headers:{"X-WP-Nonce":rsvpmaker_rest.nonce}}),e("#formvars")){const t=e("#formvars").attr("hide"),n=(e("#formvars").attr("events_to_add"),e("#formvars").attr("options"),e("#formvars").attr("is_admin")),s=e("#formvars").attr("email_lookup");let c=parseInt(e("#guestcount").val());e(".multieventhide").hide(),e("#rsvp_more_events_click").click(()=>{e(".multieventhide").show()}),e("#coupon_field").hide(),e("#coupon_field_add").click(()=>{e("#coupon_field").show(),e("#coupon_field_prompt").hide()}),e("#guest_count_pricing select").change(function(){e("#rsvpform input").prop("disabled",!1),e("#rsvpform select").prop("disabled",!1),e("#rsvpform div").show(),e("#rsvpform p").show();var n=e(this).val(),s=t[n];e.each(s,function(t,n){e("div."+n).hide(),e("p."+n).hide(),e("."+n).prop("disabled",!0)})});var a=e("#max_guests").val();let d,p;console.log("max guests ",a);var i=e("#guest_blank_template").html();let v;e("#guest_blank_template").remove(),console.log("initial blank",i);let u="";if(console.log("starting guestcount",c),e("#people_in_party").change(function(t){if(d=e("#first").val(),p=e("#last").val(),e("#rsvphost").html("# 1 "+d+" "+p),v=parseInt(e("#people_in_party").val()),!(v<1))if(!n&&v>a)e("#guest_section").append("<p><em>Guest limit reached</em></p>");else if(v>c)for(;c<v;)c++,u='<div class="guest_blank" id="guest_blank_'+c+'">'+i.replace(/\[\]/g,"["+c+"]").replace("###",c).replace(/\[first\][^\>]+value="/,"$&Guest "+c).replace(/\[last\][^\>]+value="/,"$&"+p)+"</div>",e("#guest_section").append(u);else if(v<c)for(;c>v;c--)e("#guest_blank_"+c).remove()}),t){var r=e("#guest_count_pricing select").val(),l=t[r];e.each(l,function(t,n){e("div."+n).hide(),e("p."+n).hide(),e("."+n).prop("disabled",!0)})}jQuery("#rsvpform").submit(function(){var t="",n=jQuery("#required").val(),s=n.split(",");return e.each(s,function(e,n){"privacy_consent"==n?jQuery("#privacy_consent:checked").val()||(t+='<div class="rsvp_missing">privacy policy consent checkbox</div>'):""===jQuery("#"+n).val()&&(t=t+'<div class="rsvp_missing">'+n+"</div>")}),""==t||(jQuery("#jqerror").html('<div class="rsvp_validation_error">Required fields left blank:\n'+t+"</div>"),!1)});var o=null;e(function(){var t=3;e("#email").keyup(function(){value=e(this).val();var n=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;e("#event").val();if(value.length>=t&&value.match(n)){null!=o&&o.abort();var a={email_search:value};jQuery.get(s,a,function(t){e("#rsvp_email_lookup").html('<div style="border: medium solid red; padding: 5px; background-color:#fff; color: red;">'+t+"</div>")})}})})}e(".wp-block-rsvpmaker-formfield input").change(function(){let t=e(this).val(),n=t.includes("//");console.log(t+" "+n),n&&(t=t.replace(/[a-z]{0,8}:{0,1}\/\//,""),console.log("strip prefix"),e(this).val(t))}),e(".rsvpmaker-schedule-detail").hide(),e(".rsvpmaker-schedule-button").click(function(t){var n=e(this).attr("id"),s=n.replace("button","detail");e("#"+n).hide(),e("#"+s).show()}),e(".wp-block-rsvpmaker-countdown").each(function(){var t=e(this).attr("event_id"),n=e(this).attr("id");if(""==t){var s=n.split("-");s[1]&&(t=s[1])}if(""==t)return;let a=rsvpmaker_rest.rest_url+"rsvpmaker/v1/time_and_zone/"+t;jQuery.get(a,null,function(t){let s=parseInt(t);if(Number.isNaN(s))return void e("#"+n).html("Event not found");let a=setInterval(function(){var t=(new Date).getTime(),i=s-t,r=Math.floor(i/864e5),l=Math.floor(i%864e5/36e5),o=l<10?"0":"",c=Math.floor(i%36e5/6e4),d=c<10?"0":"",p=Math.floor(i%6e4/1e3),v=p<10?"0":"";if(i<0){clearInterval(a),r=l=c=p="00";let t=e("#"+n).attr("expiration_display"),s=e("#"+n).attr("expiration_message"),i="";"stoppedclock"!=t&&"clockmessage"!=t||(i='<div class="countdowndigits-line"><div class="countdowndigits countdowndays">'+r+'</div> <span class="countdowndayslabel">days</span> <div class="countdowndigits countdownhours">'+l+'</div><span class="countdownspacer">:</span><div class="countdowndigits countdownminutes">'+c+'</div><span class="countdownspacer">:</span><div class="countdowndigits countdownseconds">'+p+"</div></div>"),"message"!=t&&"clockmessage"!=t||(i=i+'<p class="countdown_expiration_message">'+s+"</p>"),e("#"+n).html(i)}else e("#"+n).html('<div class="countdowndigits-line"><div class="countdowndigits countdowndays">'+r+'</div> <span class="countdowndayslabel">days</span> <div class="countdowndigits countdownhours">'+o+l+'</div><span class="countdownspacer">:</span><div class="countdowndigits countdownminutes">'+d+c+'</div><span class="countdownspacer">:</span><div class="countdowndigits countdownseconds">'+v+p+"</div></div>")},1e3)})}),e(".timezone_on").click(function(){var t=e(this).attr("utc"),n=e(this).attr("target"),s=n.replace("timezone_converted","tz_convert_to"),a=e(this).attr("event_tz");if(""!=a){var i=new Date(t);localstring=i.toString(),e("#"+n).html(localstring);var r=localstring.match(/\(([^)]+)/);e(this).attr("event_tz",""),e("#"+s).html("Converting to "+r[1]);var l,o=t.split(/T/);e(".tz-convert, .tz-convert table tr td, .tz-table1 table tr td:first-child, .tz-table2 table tr td:nth-child(2), .tz-table3 table tr td:nth-child(3)").each(function(){celltime=this.innerHTML.replace("&nbsp;"," "),celltime.search(/\d:\d\d/)>=0&&celltime.search("<")<0&&(0,l=o[0]+" "+celltime+" "+a,ts=Date.parse(l),Number.isNaN(ts)||(i.setTime(ts),l=i.toLocaleTimeString().replace(":00 "," "),this.innerHTML=l,e(this).css("font-weight","bold")))});var c=!0;e(".tz-table1 table tr td:first-child, .tz-table2 table tr td:nth-child(2), .tz-table3 table tr td:nth-child(3)").each(function(){c&&""!=this.innerHTML&&this.innerHTML.search(":")<0&&(this.innerHTML="<strong>Your TZ</strong>"),c=!1});var d={action:"rsvpmaker_localstring",localstring:localstring,timelord:rsvpmaker_rest.timelord};jQuery.post(rsvpmaker_rest.ajaxurl,d,function(t){e("#"+n).html(t)})}}),e(".signed_up_ajax").each(function(){var t=e(this).attr("post"),n={event:t,timelord:rsvpmaker_rest.timelord};jQuery.get(rsvpmaker_rest.rest_url+"rsvpmaker/v1/signed_up",n,function(n){e("#signed_up_"+t).html(n)})});var c=jstz.determine(),d=c.name();t(d);var p="";e(".rsvpmaker_show_attendees").click(function(t){var n=e(this).attr("post_id");p="",s(n)});const v=document.getElementsByClassName("rsvpmaker_menu_dropdown");if(v&&v.length){const e=[];let t=0;Array.prototype.filter.call(v,(n,s)=>{if(n.className.includes("rsvpmaker_menu_dropdown"))if(t++,console.log("dropdown",n),console.log("dropdown children",n.children),n.className.includes("rsvpmaker_menu_type")){const t=n.className.match(/rsvpmaker_menu_type_([^\s]+)/);t&&t[1]&&fetch("/wp-json/rsvpmaker/v1/type/"+t[1]).then(e=>e.json()).then(t=>{e.push(""),Array.isArray(t)&&t.forEach(t=>{e[e.length-1]+='<li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="'+t.permalink+'"><span class="wp-block-navigation-item__label">'+t.post_title+" - "+t.neatdate+"</span></a></li>"}),e[e.length-1]&&Array.prototype.filter.call(n.children,t=>{"UL"==t.nodeName&&(t.innerHTML=t.innerHTML+e[e.length-1])})})}else fetch("/wp-json/rsvpmaker/v1/future").then(e=>e.json()).then(t=>{e.push(""),console.log(t);let s=!1;Array.isArray(t)&&t.forEach((t,n)=>{n<12?e[e.length-1]+='<li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="'+t.permalink+'"><span class="wp-block-navigation-item__label">'+t.post_title+" - "+t.neatdate+"</span></a></li>":s=!0}),s&&(e[e.length-1]+='<li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="/rsvpmaker/page/2/"><span class="wp-block-navigation-item__label">More Events</span></a></li>'),e[e.length-1]&&Array.prototype.filter.call(n.children,t=>{"UL"==t.nodeName&&(t.innerHTML=t.innerHTML+e[e.length-1])})})})}});class RSVPJsonWidget{constructor(e,t,n,s=""){this.el=document.getElementById(e),this.url=t,this.limit=n,this.morelink=s;let a="";fetch(t).then(e=>e.json()).then(e=>{var t=!1;Array.isArray(e)?(n&&e.length>=n&&(e=e.slice(0,n),t=!0),e.forEach(function(e,t,n){if(!e.datetime)return"";new Date(e.datetime);a=a.concat('<li class="rsvpmaker-widget-li"><span class="rsvpmaker-widget-title"><a href="'+e.guid+'">'+e.post_title+'</a></span> - <span class="rsvpmaker-widget-date">'+e.date+"</span></li>")})):this.el.innerHTML="None found: "+e.code,""==a?this.el.innerHTML="No event listings found":(t&&""!=s&&(a=a.concat('<li><a href="'+s+'">More events</a></li>')),this.el.innerHTML='<ul class="eventslist rsvpmakerjson">'+a+"</ul>")}).catch(e=>{this.el.innerHTML="Error fetching events from "+this.url,console.log(e)})}}const flexforms=document.querySelectorAll(".rsvpmaker-flexible-form");flexforms.forEach(e=>{e.addEventListener("submit",function(e){e.preventDefault();const t=new FormData(this);console.log(t),fetch(rsvpmaker_rest.rest_url+"rsvpmaker/v1/flexform",{method:"POST",body:t}).then(e=>e.json()).then(e=>showMessage(e))})});
  • rsvpmaker/trunk/rsvpmaker.php

    r3428416 r3439578  
    1111* License:           GPL v2 or later
    1212* License URI:       https://www.gnu.org/licenses/gpl-2.0.html
    13 * Version: 11.7.2
     13* Version: 11.7.3
    1414*/
    1515
    1616function get_rsvpversion() {
    17     return '11.7.2';
     17    return '11.7.3';
    1818}
    1919
Note: See TracChangeset for help on using the changeset viewer.