Skip to content

Instantly share code, notes, and snippets.

@joshfeck
Last active November 30, 2016 22:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joshfeck/1e1b43a47a6034b768d6ba125dd53fdf to your computer and use it in GitHub Desktop.
Save joshfeck/1e1b43a47a6034b768d6ba125dd53fdf to your computer and use it in GitHub Desktop.
Instructions on how to modify the EE Attendee Mover plugin's event selector to include day, month, and year of the events.

Step one

Set up a site specific plugin.

Step two

Add a /js/ folder to your plugin, then place the included custom-attendee-mover-event-selector.js file into that folder.

Step three

Add the included PHP code to your custom plugin's PHP file

Step four

Activate the plugin on your WordPress > Plugins page.

function EE_Attendee_Mover_Event_Select2( data_interface_args ) {
this.default_query_params = data_interface_args.default_query_params || {};
this.items_per_page = this.default_query_params.limit || 10;
this.nonce = data_interface_args.nonce;
this.locale = data_interface_args.locale;
/**
* Changes the request params set by select2 and prepares them for an EE4 REST request
* @param {object} params
* @returns object
*/
this.prepData = function ( params ) {
params.page = params.page || 1;
var new_params = this.default_query_params;
new_params.limit = [
( params.page - 1 ) * this.items_per_page,
this.items_per_page
];
if( typeof new_params.where === 'undefined' ) {
new_params.where = {};
}
var search_term = params.term || '';
new_params.where.EVT_name= [ 'like', '%' + search_term + '%' ];
new_params.include='EVT_ID, EVT_name, Datetime.DTT_name, Datetime.DTT_EVT_start, Datetime.DTT_EVT_end, Datetime.DTT_is_primary, Datetime.DTT_reg_limit, Datetime.DTT_sold';
new_params._wpnonce = this.nonce;
// console_log_object( 'new_params', new_params, 0 );
return new_params;
};
/**
* Sets the wp nonce header for authentication
* @param {object} xhr
* @returns void
*/
this.beforeSend = function( xhr ) {
xhr.setRequestHeader( 'X-WP-Nonce', this.nonce );
};
/**
* Takes incoming EE4 REST API response and turns into a data format select2 can handle
* @param {object} data
* @param {object} params
* @returns object
*/
this.processResults = function ( data, params ){
// console_log( 'processResults', '', true );
// console_log_object( 'data', data, 0 );
// console_log_object( 'params', params, 0 );
var formatted_results = [];
for( var i=0; i<data.length; i++ ) {
//find the primary datetime's name
var preferred_datetime_text = '';
var secs = 0;
var start_date = null;
var start_date_string = '';
var end_date = null;
var end_date_string = '';
var reg_limit = 999999;
var sold = 0;
moment.locale( this.locale );
for( var j=0; j<data[i].datetimes.length; j++) {
if( data[i].datetimes[j].DTT_is_primary || preferred_datetime_text == '' ) {
if( data[i].datetimes[j].DTT_name !== '' ) {
preferred_datetime_text = data[ i ].datetimes[ j ].DTT_name + ': ';
}
// console_log_object( 'DTT_EVT_start', data[ i ].datetimes[ j ].DTT_EVT_start, 0 );
// console_log_object( 'DTT_EVT_end', data[ i ].datetimes[ j ].DTT_EVT_end, 0 );
secs = Date.parse( data[i].datetimes[j].DTT_EVT_start );
// start date
start_date = moment( new Date( secs ) );
start_date_string = start_date.format( "DD MMM YYYY" );
preferred_datetime_text += start_date_string;
// end date
secs = Date.parse( data[ i ].datetimes[ j ].DTT_EVT_end );
end_date = moment( new Date( secs ) );
end_date_string = end_date.format( "DD MMM YYYY" );
if ( end_date_string !== start_date_string ) {
preferred_datetime_text += ' - ' + end_date_string;
}
reg_limit = parseInt( data[ i ].datetimes[ j ].DTT_reg_limit );
sold = parseInt( data[ i ].datetimes[ j ].DTT_sold );
if ( reg_limit <= sold ) {
preferred_datetime_text += ' : ' + eei18n.attendee_mover_sold_out_datetime;
}
}
}
formatted_results.push(
{
id: data[i]['EVT_ID'],
text: data[i]['EVT_name'] + ' ( ' + preferred_datetime_text + ' )'
}
);
}
params.page = params.page || 1;
return {
results: formatted_results,
pagination: {
more: data.length == this.items_per_page
}
}
};
}
<?php
/*
Plugin Name: Site plugin for myexamplesite.com
Description: Site specific code for myexamplesite.com
*/
/* Begin Adding Functions Below This Line; Do not include an opening PHP tag as this sample code already includes one! */
add_action( 'admin_enqueue_scripts', 'custom_attendee_mover_select_event' );
function custom_attendee_mover_select_event() {
wp_dequeue_script( 'eea-attendee-mover-select-event' );
wp_enqueue_script(
'custom-attendee-mover-select-event',
plugins_url( 'js/custom-attendee-mover-event-selector.js', __FILE__ ),
array( 'form_section_select2_init', 'ee-moment' ),
false,
true
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment