Version Description
Download this release
Release Info
Developer | lucatume |
Plugin | Event Tickets |
Version | 4.2.2 |
Comparing to | |
See all releases |
Code changes from version 4.2.1.1 to 4.2.2
- common/src/Tribe/Exception.php +90 -0
- common/src/Tribe/Main.php +1 -1
- common/src/resources/css/tribe-common-admin.css +1 -0
- common/src/resources/postcss/tribe-common-admin.pcss +1 -0
- common/tribe-common.php +1 -1
- event-tickets.php +1 -1
- readme.txt +9 -1
- src/Tribe/Attendees_Table.php +8 -3
- src/Tribe/Main.php +2 -2
- src/Tribe/RSVP.php +152 -20
- src/Tribe/Tickets.php +18 -4
- src/admin-views/attendees.php +3 -3
- src/admin-views/list.php +0 -3
- src/admin-views/meta-box.php +1 -1
- src/resources/css/rsvp.css +12 -0
- src/resources/css/rsvp.min.css +1 -1
- src/resources/css/tickets-attendees.min.css +1 -1
- src/resources/js/frontend-ticket-form.min.js +1 -1
- src/resources/js/tickets-attendees.js +10 -0
- src/resources/js/tickets-attendees.min.js +1 -1
- src/resources/js/tickets.min.js +1 -1
- src/resources/postcss/rsvp.pcss +8 -0
- src/views/tickets/email-non-attendance.php +270 -0
- src/views/tickets/orders-rsvp.php +2 -1
common/src/Tribe/Exception.php
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class Tribe__Exception
|
6 |
+
*
|
7 |
+
* Handles exceptions to log when not in debug mode.
|
8 |
+
*/
|
9 |
+
class Tribe__Exception extends Exception {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @var Exception
|
13 |
+
*/
|
14 |
+
private $original_exception;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Tribe__Exception constructor.
|
18 |
+
*
|
19 |
+
* @param Exception $original_exception
|
20 |
+
*/
|
21 |
+
public function __construct( Exception $original_exception ) {
|
22 |
+
$this->original_exception = $original_exception;
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Handles the exception throwing the original when debugging (`WP_DEBUG` defined and `true`)
|
27 |
+
* or quietly logging when `WP_DEBUG` is `false` or not set.
|
28 |
+
*
|
29 |
+
* @return bool `true` if the message was logged, `false` otherwise.
|
30 |
+
*
|
31 |
+
* @throws Exception
|
32 |
+
*/
|
33 |
+
public function handle() {
|
34 |
+
$debug = defined( 'WP_DEBUG' ) && WP_DEBUG;
|
35 |
+
|
36 |
+
if ( $debug ) {
|
37 |
+
$this->throw_original_exception();
|
38 |
+
}
|
39 |
+
|
40 |
+
return $this->log_original_exception_message();
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* @return string
|
45 |
+
*/
|
46 |
+
private function get_log_type_for_exception_code( $code ) {
|
47 |
+
$map = array(
|
48 |
+
// @todo: let's add a decent exception code to log type map here
|
49 |
+
);
|
50 |
+
|
51 |
+
return isset( $map[ $code ] ) ? $map[ $code ] : Tribe__Log::ERROR;
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Throws the original exception.
|
56 |
+
*
|
57 |
+
* Provided as a manual override over the default `WP_DEBUG` dependent behaviour.
|
58 |
+
*
|
59 |
+
* @see Tribe__Exception::handle()
|
60 |
+
*
|
61 |
+
* @throws Exception
|
62 |
+
*/
|
63 |
+
public function throw_original_exception() {
|
64 |
+
throw $this->original_exception;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Logs the original exception message.
|
69 |
+
*
|
70 |
+
* Provided as a manual override over the default `WP_DEBUG` dependent behaviour.
|
71 |
+
*
|
72 |
+
* @see Tribe__Exception::handle()
|
73 |
+
*
|
74 |
+
* @return bool `true` if the message was logged, `false` otherwise.
|
75 |
+
*/
|
76 |
+
private function log_original_exception_message() {
|
77 |
+
if ( ! class_exists( 'Tribe__Log' ) ) {
|
78 |
+
return false;
|
79 |
+
}
|
80 |
+
|
81 |
+
$logger = new Tribe__Log();
|
82 |
+
$message = $this->original_exception->getMessage();
|
83 |
+
$log_type = $this->get_log_type_for_exception_code( $this->original_exception->getCode() );
|
84 |
+
$src = $this->original_exception->getFile() . ':' . $this->original_exception->getLine();
|
85 |
+
|
86 |
+
$logger->log( $message, $log_type, $src );
|
87 |
+
|
88 |
+
return true;
|
89 |
+
}
|
90 |
+
}
|
common/src/Tribe/Main.php
CHANGED
@@ -17,7 +17,7 @@ class Tribe__Main {
|
|
17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
19 |
|
20 |
-
const VERSION = '4.2.1
|
21 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
22 |
|
23 |
protected $plugin_context;
|
17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
19 |
|
20 |
+
const VERSION = '4.2.1';
|
21 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
22 |
|
23 |
protected $plugin_context;
|
common/src/resources/css/tribe-common-admin.css
CHANGED
@@ -729,6 +729,7 @@ table.plugins .tribe-plugin-update-message a {
|
|
729 |
.tribe_welcome_page h2,
|
730 |
.tribe_update_page h2 {
|
731 |
font-size: 30px;
|
|
|
732 |
margin-bottom: 20px;
|
733 |
}
|
734 |
.tribe_welcome_page h3,
|
729 |
.tribe_welcome_page h2,
|
730 |
.tribe_update_page h2 {
|
731 |
font-size: 30px;
|
732 |
+
line-height: 1.2;
|
733 |
margin-bottom: 20px;
|
734 |
}
|
735 |
.tribe_welcome_page h3,
|
common/src/resources/postcss/tribe-common-admin.pcss
CHANGED
@@ -808,6 +808,7 @@ only screen and (min-device-pixel-ratio: 2) {
|
|
808 |
.tribe_welcome_page h2,
|
809 |
.tribe_update_page h2 {
|
810 |
font-size: 30px;
|
|
|
811 |
margin-bottom: 20px;
|
812 |
}
|
813 |
|
808 |
.tribe_welcome_page h2,
|
809 |
.tribe_update_page h2 {
|
810 |
font-size: 30px;
|
811 |
+
line-height: 1.2;
|
812 |
margin-bottom: 20px;
|
813 |
}
|
814 |
|
common/tribe-common.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Description: An event settings framework for managing shared options
|
4 |
-
Version: 4.2.
|
5 |
Author: Modern Tribe, Inc.
|
6 |
Author URI: http://m.tri.be/1x
|
7 |
Text Domain: tribe-common
|
1 |
<?php
|
2 |
/*
|
3 |
Description: An event settings framework for managing shared options
|
4 |
+
Version: 4.2.1dev1
|
5 |
Author: Modern Tribe, Inc.
|
6 |
Author URI: http://m.tri.be/1x
|
7 |
Text Domain: tribe-common
|
event-tickets.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: Event Tickets
|
4 |
Description: Event Tickets allows your guests to RSVP from any post, page, or event.
|
5 |
-
Version: 4.2.
|
6 |
Author: Modern Tribe, Inc.
|
7 |
Author URI: http://m.tri.be/28
|
8 |
License: GPLv2 or later
|
2 |
/*
|
3 |
Plugin Name: Event Tickets
|
4 |
Description: Event Tickets allows your guests to RSVP from any post, page, or event.
|
5 |
+
Version: 4.2.2
|
6 |
Author: Modern Tribe, Inc.
|
7 |
Author URI: http://m.tri.be/28
|
8 |
License: GPLv2 or later
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Contributors: ModernTribe, borkweb, zbtirrell, barry.hughes, bordoni, brianjesse
|
|
4 |
Tags: events, add-on, ticket sales, tickets, calendar, community, registration, api, dates, date, posts, workshop, conference, meeting, seminar, concert, summit, The Events Calendar, Events Calendar PRO, ticket integration, event ticketing, RSVP, Event Tickets, Event Tickets Plus
|
5 |
Requires at least: 3.9
|
6 |
Tested up to: 4.5.3
|
7 |
-
Stable tag: 4.2.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -191,6 +191,14 @@ Our Premium Plugins:
|
|
191 |
|
192 |
== Changelog ==
|
193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
= [4.2.1.1] 2016-06-28 =
|
195 |
|
196 |
* Fix - Ensure translations load as expected with all supported versions of WordPress (thanks to @JacobALund for originally reporting this on .org forums)
|
4 |
Tags: events, add-on, ticket sales, tickets, calendar, community, registration, api, dates, date, posts, workshop, conference, meeting, seminar, concert, summit, The Events Calendar, Events Calendar PRO, ticket integration, event ticketing, RSVP, Event Tickets, Event Tickets Plus
|
5 |
Requires at least: 3.9
|
6 |
Tested up to: 4.5.3
|
7 |
+
Stable tag: 4.2.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
191 |
|
192 |
== Changelog ==
|
193 |
|
194 |
+
= [4.2.2] 2016-07-06 =
|
195 |
+
|
196 |
+
* Fix - Send an email acknowledgement, rather than a set of tickets, when a user confirms they will not attend an event (RSVPs) [62549]
|
197 |
+
* Tweak - Add a period to the ticket header image setting [44797]
|
198 |
+
* Fix - Removed the ticket description in the admin area to allow for more room for tickets sold notes [61962]
|
199 |
+
* Fix - Displays the name of the ticket for each attendee on the order confirmation page [62548]
|
200 |
+
* Fix - Fixed issue where front-end attendees table check-in state would not show the correct value [62692]
|
201 |
+
|
202 |
= [4.2.1.1] 2016-06-28 =
|
203 |
|
204 |
* Fix - Ensure translations load as expected with all supported versions of WordPress (thanks to @JacobALund for originally reporting this on .org forums)
|
src/Tribe/Attendees_Table.php
CHANGED
@@ -259,9 +259,14 @@ class Tribe__Tickets__Attendees_Table extends WP_List_Table {
|
|
259 |
|
260 |
return sprintf( $button_template, $item['order_id_link_src'], __( 'View order', 'event-tickets' ) );
|
261 |
}
|
262 |
-
|
263 |
-
|
264 |
-
|
|
|
|
|
|
|
|
|
|
|
265 |
|
266 |
return $checkin . $uncheckin;
|
267 |
}
|
259 |
|
260 |
return sprintf( $button_template, $item['order_id_link_src'], __( 'View order', 'event-tickets' ) );
|
261 |
}
|
262 |
+
if ( empty( $this->event ) ) {
|
263 |
+
$checkin = sprintf( '<a href="#" data-attendee-id="%d" data-provider="%s" class="button-secondary tickets_checkin">%s</a>', esc_attr( $item['attendee_id'] ), esc_attr( $item['provider'] ), esc_html__( 'Check in', 'event-tickets' ) );
|
264 |
+
$uncheckin = sprintf( '<span class="delete"><a href="#" data-attendee-id="%d" data-provider="%s" class="tickets_uncheckin">%s</a></span>', esc_attr( $item['attendee_id'] ), esc_attr( $item['provider'] ), esc_html__( 'Undo Check in', 'event-tickets' ) );
|
265 |
+
} else {
|
266 |
+
// add the additional `data-event-id` attribute if this is an event
|
267 |
+
$checkin = sprintf( '<a href="#" data-attendee-id="%d" data-event-id="%d" data-provider="%s" class="button-secondary tickets_checkin">%s</a>', esc_attr( $item['attendee_id'] ), esc_attr($this->event->ID), esc_attr( $item['provider'] ), esc_html__( 'Check in', 'event-tickets' ) );
|
268 |
+
$uncheckin = sprintf( '<span class="delete"><a href="#" data-attendee-id="%d" data-event-id="%d" data-provider="%s" class="tickets_uncheckin">%s</a></span>', esc_attr( $item['attendee_id'] ), esc_attr($this->event->ID), esc_attr( $item['provider'] ), esc_html__( 'Undo Check in', 'event-tickets' ) );
|
269 |
+
}
|
270 |
|
271 |
return $checkin . $uncheckin;
|
272 |
}
|
src/Tribe/Main.php
CHANGED
@@ -9,12 +9,12 @@ class Tribe__Tickets__Main {
|
|
9 |
/**
|
10 |
* Current version of this plugin
|
11 |
*/
|
12 |
-
const VERSION = '4.2.
|
13 |
|
14 |
/**
|
15 |
* Min required The Events Calendar version
|
16 |
*/
|
17 |
-
const MIN_TEC_VERSION = '4.2';
|
18 |
|
19 |
/**
|
20 |
* Name of the provider
|
9 |
/**
|
10 |
* Current version of this plugin
|
11 |
*/
|
12 |
+
const VERSION = '4.2.2';
|
13 |
|
14 |
/**
|
15 |
* Min required The Events Calendar version
|
16 |
*/
|
17 |
+
const MIN_TEC_VERSION = '4.2.2';
|
18 |
|
19 |
/**
|
20 |
* Name of the provider
|
src/Tribe/RSVP.php
CHANGED
@@ -29,6 +29,13 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
29 |
*/
|
30 |
const ATTENDEE_ORDER_KEY = '';
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
/**
|
33 |
*Name of the CPT that holds Tickets
|
34 |
*
|
@@ -157,6 +164,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
157 |
*/
|
158 |
add_action( 'template_redirect', array( $this, 'generate_tickets' ) );
|
159 |
add_action( 'event_tickets_attendee_update', array( $this, 'update_attendee_data' ), 10, 3 );
|
|
|
160 |
}
|
161 |
|
162 |
/**
|
@@ -167,6 +175,8 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
167 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_resources' ), 11 );
|
168 |
add_action( 'trashed_post', array( $this, 'maybe_redirect_to_attendees_report' ) );
|
169 |
add_filter( 'post_updated_messages', array( $this, 'updated_messages' ) );
|
|
|
|
|
170 |
}
|
171 |
|
172 |
/**
|
@@ -270,7 +280,15 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
270 |
}
|
271 |
|
272 |
/**
|
273 |
-
* Update the RSVP values for this user
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
*/
|
275 |
public function update_attendee_data( $data, $order_id, $event_id ) {
|
276 |
$user_id = get_current_user_id();
|
@@ -325,6 +343,35 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
325 |
}
|
326 |
}
|
327 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
328 |
/**
|
329 |
* Generate and store all the attendees information for a new order.
|
330 |
*/
|
@@ -412,20 +459,20 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
412 |
/**
|
413 |
* RSVP specific action fired when a RSVP-driven attendee ticket for an event is generated
|
414 |
*
|
415 |
-
* @
|
416 |
-
* @
|
417 |
-
* @
|
418 |
-
* @
|
419 |
*/
|
420 |
do_action( 'event_tickets_rsvp_attendee_created', $attendee_id, $event_id, $order_id );
|
421 |
|
422 |
/**
|
423 |
* Action fired when an RSVP attendee ticket is created
|
424 |
*
|
425 |
-
* @
|
426 |
-
* @
|
427 |
-
* @
|
428 |
-
* @
|
429 |
*/
|
430 |
do_action( 'event_tickets_rsvp_ticket_created', $attendee_id, $event_id, $product_id, $order_attendee_id );
|
431 |
|
@@ -436,9 +483,9 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
436 |
/**
|
437 |
* Action fired when an RSVP has had attendee tickets generated for it
|
438 |
*
|
439 |
-
* @
|
440 |
-
* @
|
441 |
-
* @
|
442 |
*/
|
443 |
do_action( 'event_tickets_rsvp_tickets_generated_for_product', $product_id, $order_id, $qty );
|
444 |
|
@@ -448,14 +495,19 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
448 |
}
|
449 |
|
450 |
/**
|
451 |
-
*
|
452 |
*
|
453 |
-
* @
|
|
|
|
|
454 |
*/
|
455 |
-
do_action( 'event_tickets_rsvp_tickets_generated', $order_id );
|
456 |
|
457 |
-
if
|
|
|
458 |
$this->send_tickets_email( $order_id ) ;
|
|
|
|
|
459 |
}
|
460 |
|
461 |
// Redirect to the same page to prevent double purchase on refresh
|
@@ -468,6 +520,69 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
468 |
}
|
469 |
|
470 |
public function send_tickets_email( $order_id ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
471 |
$attendees = $this->get_attendees_by_transaction( $order_id );
|
472 |
|
473 |
if ( empty( $attendees ) ) {
|
@@ -481,12 +596,17 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
481 |
return;
|
482 |
}
|
483 |
|
484 |
-
$content = apply_filters( 'tribe_rsvp_email_content', $this->generate_tickets_email_content( $attendees ) );
|
485 |
$headers = apply_filters( 'tribe_rsvp_email_headers', array( 'Content-type: text/html' ) );
|
486 |
$attachments = apply_filters( 'tribe_rsvp_email_attachments', array() );
|
487 |
$to = apply_filters( 'tribe_rsvp_email_recipient', $to );
|
488 |
$subject = apply_filters( 'tribe_rsvp_email_subject',
|
489 |
-
sprintf( __( '
|
|
|
|
|
|
|
|
|
|
|
|
|
490 |
|
491 |
wp_mail( $to, $subject, $content, $headers, $attachments );
|
492 |
}
|
@@ -516,6 +636,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
516 |
'qr_ticket_id' => $post->ID,
|
517 |
'security_code' => get_post_meta( $post->ID, $this->security_code, true ),
|
518 |
'optout' => (bool) get_post_meta( $post->ID, self::ATTENDEE_OPTOUT_KEY, true ),
|
|
|
519 |
);
|
520 |
}
|
521 |
|
@@ -860,14 +981,14 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
860 |
$status = get_post_meta( $attendee->ID, self::ATTENDEE_RSVP_KEY, true );
|
861 |
$status_label = Tribe__Tickets__Tickets_View::instance()->get_rsvp_options( $status );
|
862 |
$user_id = get_post_meta( $attendee->ID, self::ATTENDEE_USER_ID, true );
|
|
|
863 |
|
864 |
if ( empty( $product_id ) ) {
|
865 |
continue;
|
866 |
}
|
867 |
|
868 |
$product = get_post( $product_id );
|
869 |
-
$product_title = ( ! empty( $product ) ) ? $product->post_title : get_post_meta( $attendee->ID, $this->deleted_product,
|
870 |
-
true ) . ' ' . __( '(deleted)', 'event-tickets' );
|
871 |
|
872 |
$attendee_data = array_merge(
|
873 |
$this->get_order_data( $attendee->ID ),
|
@@ -881,6 +1002,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
881 |
'order_status' => $status,
|
882 |
'order_status_label' => $status_label,
|
883 |
'user_id' => $user_id,
|
|
|
884 |
)
|
885 |
);
|
886 |
|
@@ -940,6 +1062,16 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
940 |
return $data;
|
941 |
}
|
942 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
943 |
|
944 |
/**
|
945 |
* Marks an attendee as checked in for an event
|
29 |
*/
|
30 |
const ATTENDEE_ORDER_KEY = '';
|
31 |
|
32 |
+
/**
|
33 |
+
* Indicates if a ticket for this attendee was sent out via email.
|
34 |
+
*
|
35 |
+
* @var boolean
|
36 |
+
*/
|
37 |
+
const ATTENDEE_TICKET_SENT = '_tribe_rsvp_attendee_ticket_sent';
|
38 |
+
|
39 |
/**
|
40 |
*Name of the CPT that holds Tickets
|
41 |
*
|
164 |
*/
|
165 |
add_action( 'template_redirect', array( $this, 'generate_tickets' ) );
|
166 |
add_action( 'event_tickets_attendee_update', array( $this, 'update_attendee_data' ), 10, 3 );
|
167 |
+
add_action( 'event_tickets_after_attendees_update', array( $this, 'maybe_send_tickets_after_status_change' ) );
|
168 |
}
|
169 |
|
170 |
/**
|
175 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_resources' ), 11 );
|
176 |
add_action( 'trashed_post', array( $this, 'maybe_redirect_to_attendees_report' ) );
|
177 |
add_filter( 'post_updated_messages', array( $this, 'updated_messages' ) );
|
178 |
+
add_action( 'rsvp_checkin', array( $this, 'purge_attendees_transient' ) );
|
179 |
+
add_action( 'rsvp_uncheckin', array( $this, 'purge_attendees_transient' ) );
|
180 |
}
|
181 |
|
182 |
/**
|
280 |
}
|
281 |
|
282 |
/**
|
283 |
+
* Update the RSVP values for this user.
|
284 |
+
*
|
285 |
+
* Note that, within this method, $order_id refers to the attendee or ticket ID
|
286 |
+
* (it does not refer to an "order" in the sense of a transaction that may include
|
287 |
+
* multiple tickets, as is the case in some other methods for instance).
|
288 |
+
*
|
289 |
+
* @param array $data
|
290 |
+
* @param int $order_id
|
291 |
+
* @param int $event_id
|
292 |
*/
|
293 |
public function update_attendee_data( $data, $order_id, $event_id ) {
|
294 |
$user_id = get_current_user_id();
|
343 |
}
|
344 |
}
|
345 |
|
346 |
+
/**
|
347 |
+
* Triggers the sending of ticket emails after RSVP information is updated.
|
348 |
+
*
|
349 |
+
* This is useful if a user initially suggests they will not be attending
|
350 |
+
* an event (in which case we do not send tickets out) but where they
|
351 |
+
* incrementally amend the status of one or more of those tickets to
|
352 |
+
* attending, at which point we should send tickets out for any of those
|
353 |
+
* newly attending persons.
|
354 |
+
*
|
355 |
+
* @param $event_id
|
356 |
+
*/
|
357 |
+
public function maybe_send_tickets_after_status_change( $event_id ) {
|
358 |
+
$transaction_ids = array();
|
359 |
+
|
360 |
+
foreach ( $this->get_event_attendees( $event_id ) as $attendee ) {
|
361 |
+
$transaction = get_post_meta( $attendee[ 'attendee_id' ], $this->order_key, true );
|
362 |
+
|
363 |
+
if ( ! empty( $transaction ) ) {
|
364 |
+
$transaction_ids[ $transaction ] = $transaction;
|
365 |
+
}
|
366 |
+
}
|
367 |
+
|
368 |
+
foreach ( $transaction_ids as $transaction ) {
|
369 |
+
// This method takes care of intelligently sending out emails only when
|
370 |
+
// required, for attendees that have not yet received their tickets
|
371 |
+
$this->send_tickets_email( $transaction );
|
372 |
+
}
|
373 |
+
}
|
374 |
+
|
375 |
/**
|
376 |
* Generate and store all the attendees information for a new order.
|
377 |
*/
|
459 |
/**
|
460 |
* RSVP specific action fired when a RSVP-driven attendee ticket for an event is generated
|
461 |
*
|
462 |
+
* @param $attendee_id ID of attendee ticket
|
463 |
+
* @param $event_id ID of event
|
464 |
+
* @param $order_id RSVP order ID
|
465 |
+
* @param $product_id RSVP product ID
|
466 |
*/
|
467 |
do_action( 'event_tickets_rsvp_attendee_created', $attendee_id, $event_id, $order_id );
|
468 |
|
469 |
/**
|
470 |
* Action fired when an RSVP attendee ticket is created
|
471 |
*
|
472 |
+
* @param $attendee_id ID of the attendee post
|
473 |
+
* @param $event_id Event post ID
|
474 |
+
* @param $product_id RSVP ticket post ID
|
475 |
+
* @param $order_attendee_id Attendee # for order
|
476 |
*/
|
477 |
do_action( 'event_tickets_rsvp_ticket_created', $attendee_id, $event_id, $product_id, $order_attendee_id );
|
478 |
|
483 |
/**
|
484 |
* Action fired when an RSVP has had attendee tickets generated for it
|
485 |
*
|
486 |
+
* @param $product_id RSVP ticket post ID
|
487 |
+
* @param $order_id ID of the RSVP order
|
488 |
+
* @param $qty Quantity ordered
|
489 |
*/
|
490 |
do_action( 'event_tickets_rsvp_tickets_generated_for_product', $product_id, $order_id, $qty );
|
491 |
|
495 |
}
|
496 |
|
497 |
/**
|
498 |
+
* Fires when an RSVP attendee tickets have been generated.
|
499 |
*
|
500 |
+
* @param int $order_id ID of the RSVP order
|
501 |
+
* @param int $event_id ID of the event the order was placed for
|
502 |
+
* @param string $attendee_order_status 'yes' if the user indicated they will attend
|
503 |
*/
|
504 |
+
do_action( 'event_tickets_rsvp_tickets_generated', $order_id, $event_id, $attendee_order_status );
|
505 |
|
506 |
+
// No point sending tickets if their current intention is not to attend
|
507 |
+
if ( $has_tickets && 'yes' === $attendee_order_status ) {
|
508 |
$this->send_tickets_email( $order_id ) ;
|
509 |
+
} elseif ( $has_tickets ) {
|
510 |
+
$this->send_non_attendance_confirmation( $order_id, $event_id );
|
511 |
}
|
512 |
|
513 |
// Redirect to the same page to prevent double purchase on refresh
|
520 |
}
|
521 |
|
522 |
public function send_tickets_email( $order_id ) {
|
523 |
+
$all_attendees = $this->get_attendees_by_transaction( $order_id );
|
524 |
+
$to_send = array();
|
525 |
+
|
526 |
+
if ( empty( $all_attendees ) ) {
|
527 |
+
return;
|
528 |
+
}
|
529 |
+
|
530 |
+
// Look at each attendee and check if a ticket was sent: in each case where a ticket
|
531 |
+
// has not yet been sent we should a) send the ticket out by email and b) record the
|
532 |
+
// fact it was sent
|
533 |
+
foreach ( $all_attendees as $single_attendee ) {
|
534 |
+
// Do not add those attendees/tickets marked as not attending (note that despite the name
|
535 |
+
// 'qr_ticket_id', this key is not QR code specific, it's simply the attendee post ID)
|
536 |
+
if ( 'yes' !== get_post_meta( $single_attendee[ 'qr_ticket_id' ], self::ATTENDEE_RSVP_KEY, true ) ) {
|
537 |
+
continue;
|
538 |
+
}
|
539 |
+
|
540 |
+
// Only add those attendees/tickets that haven't already been sent
|
541 |
+
if ( empty( $single_attendee[ 'ticket_sent' ] ) ) {
|
542 |
+
$to_send[] = $single_attendee;
|
543 |
+
update_post_meta( $single_attendee[ 'qr_ticket_id' ], self::ATTENDEE_TICKET_SENT, true );
|
544 |
+
}
|
545 |
+
}
|
546 |
+
|
547 |
+
/**
|
548 |
+
* Controls the list of tickets which will be emailed out.
|
549 |
+
*
|
550 |
+
* @param array $to_send list of tickets to be sent out by email
|
551 |
+
* @param array $all_attendees list of all attendees/tickets, including those already sent out
|
552 |
+
* @param int $order_id
|
553 |
+
*
|
554 |
+
*/
|
555 |
+
$to_send = (array) apply_filters( 'tribe_tickets_rsvp_tickets_to_send', $to_send, $all_attendees, $order_id );
|
556 |
+
|
557 |
+
if ( empty( $to_send ) ) {
|
558 |
+
return;
|
559 |
+
}
|
560 |
+
|
561 |
+
// For now all ticket holders in an order share the same email
|
562 |
+
$to = $all_attendees['0']['holder_email'];
|
563 |
+
|
564 |
+
if ( ! is_email( $to ) ) {
|
565 |
+
return;
|
566 |
+
}
|
567 |
+
|
568 |
+
$content = apply_filters( 'tribe_rsvp_email_content', $this->generate_tickets_email_content( $to_send ) );
|
569 |
+
$headers = apply_filters( 'tribe_rsvp_email_headers', array( 'Content-type: text/html' ) );
|
570 |
+
$attachments = apply_filters( 'tribe_rsvp_email_attachments', array() );
|
571 |
+
$to = apply_filters( 'tribe_rsvp_email_recipient', $to );
|
572 |
+
$subject = apply_filters( 'tribe_rsvp_email_subject',
|
573 |
+
sprintf( __( 'Your tickets from %s', 'event-tickets' ), get_bloginfo( 'name' ) ) );
|
574 |
+
|
575 |
+
wp_mail( $to, $subject, $content, $headers, $attachments );
|
576 |
+
}
|
577 |
+
|
578 |
+
/**
|
579 |
+
* Dispatches a confirmation email that acknowledges the user has RSVP'd
|
580 |
+
* in cases where they have indicated that they will *not* be attending.
|
581 |
+
*
|
582 |
+
* @param int $order_id
|
583 |
+
* @param int $event_id
|
584 |
+
*/
|
585 |
+
public function send_non_attendance_confirmation( $order_id, $event_id ) {
|
586 |
$attendees = $this->get_attendees_by_transaction( $order_id );
|
587 |
|
588 |
if ( empty( $attendees ) ) {
|
596 |
return;
|
597 |
}
|
598 |
|
|
|
599 |
$headers = apply_filters( 'tribe_rsvp_email_headers', array( 'Content-type: text/html' ) );
|
600 |
$attachments = apply_filters( 'tribe_rsvp_email_attachments', array() );
|
601 |
$to = apply_filters( 'tribe_rsvp_email_recipient', $to );
|
602 |
$subject = apply_filters( 'tribe_rsvp_email_subject',
|
603 |
+
sprintf( __( 'You confirmed you will not be attending %s', 'event-tickets' ), get_the_title( $event_id ) )
|
604 |
+
);
|
605 |
+
|
606 |
+
$template_data = array( 'event_id' => $event_id, 'order_id' => $order_id, 'attendees' => $attendees );
|
607 |
+
$content = apply_filters( 'tribe_rsvp_email_content',
|
608 |
+
tribe_tickets_get_template_part( 'tickets/email-non-attendance', null, $template_data, false )
|
609 |
+
);
|
610 |
|
611 |
wp_mail( $to, $subject, $content, $headers, $attachments );
|
612 |
}
|
636 |
'qr_ticket_id' => $post->ID,
|
637 |
'security_code' => get_post_meta( $post->ID, $this->security_code, true ),
|
638 |
'optout' => (bool) get_post_meta( $post->ID, self::ATTENDEE_OPTOUT_KEY, true ),
|
639 |
+
'ticket_sent' => (bool) get_post_meta( $post->ID, self::ATTENDEE_TICKET_SENT, true ),
|
640 |
);
|
641 |
}
|
642 |
|
981 |
$status = get_post_meta( $attendee->ID, self::ATTENDEE_RSVP_KEY, true );
|
982 |
$status_label = Tribe__Tickets__Tickets_View::instance()->get_rsvp_options( $status );
|
983 |
$user_id = get_post_meta( $attendee->ID, self::ATTENDEE_USER_ID, true );
|
984 |
+
$ticket_sent = (bool) get_post_meta( $attendee->ID, self::ATTENDEE_TICKET_SENT, true );
|
985 |
|
986 |
if ( empty( $product_id ) ) {
|
987 |
continue;
|
988 |
}
|
989 |
|
990 |
$product = get_post( $product_id );
|
991 |
+
$product_title = ( ! empty( $product ) ) ? $product->post_title : get_post_meta( $attendee->ID, $this->deleted_product, true ) . ' ' . __( '(deleted)', 'event-tickets' );
|
|
|
992 |
|
993 |
$attendee_data = array_merge(
|
994 |
$this->get_order_data( $attendee->ID ),
|
1002 |
'order_status' => $status,
|
1003 |
'order_status_label' => $status_label,
|
1004 |
'user_id' => $user_id,
|
1005 |
+
'ticket_sent' => $ticket_sent,
|
1006 |
)
|
1007 |
);
|
1008 |
|
1062 |
return $data;
|
1063 |
}
|
1064 |
|
1065 |
+
/**
|
1066 |
+
* Remove the Post Transients when a Shopp Ticket is bought
|
1067 |
+
*
|
1068 |
+
* @param int $attendee_id
|
1069 |
+
* @return void
|
1070 |
+
*/
|
1071 |
+
public function purge_attendees_transient( $attendee_id ) {
|
1072 |
+
$event_id = get_post_meta( $attendee_id, self::ATTENDEE_EVENT_KEY, true );
|
1073 |
+
Tribe__Post_Transient::instance()->delete( $event_id, Tribe__Tickets__Tickets::ATTENDEES_CACHE );
|
1074 |
+
}
|
1075 |
|
1076 |
/**
|
1077 |
* Marks an attendee as checked in for an event
|
src/Tribe/Tickets.php
CHANGED
@@ -469,9 +469,11 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
469 |
$order_id = $_POST['order_ID'];
|
470 |
|
471 |
// Pass the control to the child object
|
472 |
-
$
|
473 |
|
474 |
-
$this->
|
|
|
|
|
475 |
}
|
476 |
|
477 |
/**
|
@@ -497,9 +499,11 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
497 |
$order_id = $_POST['order_ID'];
|
498 |
|
499 |
// Pass the control to the child object
|
500 |
-
$
|
|
|
|
|
501 |
|
502 |
-
$this->ajax_ok( $
|
503 |
}
|
504 |
|
505 |
/**
|
@@ -1389,5 +1393,15 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
1389 |
*/
|
1390 |
return apply_filters( 'tribe_tickets_ticket_login_url', $login_url );
|
1391 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1392 |
}
|
1393 |
}
|
469 |
$order_id = $_POST['order_ID'];
|
470 |
|
471 |
// Pass the control to the child object
|
472 |
+
$did_checkin = $this->checkin( $order_id );
|
473 |
|
474 |
+
$this->maybe_update_attendees_cache( $did_checkin );
|
475 |
+
|
476 |
+
$this->ajax_ok( $did_checkin );
|
477 |
}
|
478 |
|
479 |
/**
|
499 |
$order_id = $_POST['order_ID'];
|
500 |
|
501 |
// Pass the control to the child object
|
502 |
+
$did_uncheckin = $this->uncheckin( $order_id );
|
503 |
+
|
504 |
+
$this->maybe_update_attendees_cache( $did_uncheckin );
|
505 |
|
506 |
+
$this->ajax_ok( $did_uncheckin );
|
507 |
}
|
508 |
|
509 |
/**
|
1393 |
*/
|
1394 |
return apply_filters( 'tribe_tickets_ticket_login_url', $login_url );
|
1395 |
}
|
1396 |
+
|
1397 |
+
/**
|
1398 |
+
* @param $operation_did_complete
|
1399 |
+
*/
|
1400 |
+
private function maybe_update_attendees_cache( $operation_did_complete ) {
|
1401 |
+
if ( $operation_did_complete && ! empty( $_POST['event_ID'] ) && tribe_is_event( $_POST['event_ID'] ) ) {
|
1402 |
+
$post_transient = Tribe__Post_Transient::instance();
|
1403 |
+
$post_transient->delete( $_POST['event_ID'], self::ATTENDEES_CACHE );
|
1404 |
+
}
|
1405 |
+
}
|
1406 |
}
|
1407 |
}
|
src/admin-views/attendees.php
CHANGED
@@ -110,9 +110,9 @@ $total_deleted = Tribe__Tickets__Attendance::instance( $event_id )->get_delete
|
|
110 |
<?php do_action( 'tribe_events_tickets_attendees_event_summary_table_after', $event_id ); ?>
|
111 |
|
112 |
<form id="topics-filter" method="post">
|
113 |
-
<input type="hidden" name="page" value="<?php echo esc_attr( isset( $_GET['page'] ) ? $_GET['page'] : '' ); ?>" />
|
114 |
-
<input type="hidden" name="event_id" id="event_id" value="<?php echo esc_attr( $event_id ); ?>" />
|
115 |
-
<input type="hidden" name="post_type" value="<?php echo esc_attr( $event->post_type ); ?>" />
|
116 |
<?php $this->attendees_table->display() ?>
|
117 |
</form>
|
118 |
</div>
|
110 |
<?php do_action( 'tribe_events_tickets_attendees_event_summary_table_after', $event_id ); ?>
|
111 |
|
112 |
<form id="topics-filter" method="post">
|
113 |
+
<input type="hidden" name="<?php echo esc_attr( is_admin() ? 'page' : 'tribe[page]' ); ?>" value="<?php echo esc_attr( isset( $_GET['page'] ) ? $_GET['page'] : '' ); ?>" />
|
114 |
+
<input type="hidden" name="<?php echo esc_attr( is_admin() ? 'event_id' : 'tribe[event_id]' ); ?>" id="event_id" value="<?php echo esc_attr( $event_id ); ?>" />
|
115 |
+
<input type="hidden" name="<?php echo esc_attr( is_admin() ? 'post_type' : 'tribe[post_type]' ); ?>" value="<?php echo esc_attr( $event->post_type ); ?>" />
|
116 |
<?php $this->attendees_table->display() ?>
|
117 |
</form>
|
118 |
</div>
|
src/admin-views/list.php
CHANGED
@@ -113,9 +113,6 @@
|
|
113 |
<td nowrap="nowrap">
|
114 |
<?php echo tribe_tickets_get_ticket_stock_message( $ticket ); ?>
|
115 |
</td>
|
116 |
-
<td width="40%" valign="top">
|
117 |
-
<?php echo esc_html( $ticket->description ); ?>
|
118 |
-
</td>
|
119 |
</tr>
|
120 |
<?php
|
121 |
$count ++;
|
113 |
<td nowrap="nowrap">
|
114 |
<?php echo tribe_tickets_get_ticket_stock_message( $ticket ); ?>
|
115 |
</td>
|
|
|
|
|
|
|
116 |
</tr>
|
117 |
<?php
|
118 |
$count ++;
|
src/admin-views/meta-box.php
CHANGED
@@ -39,7 +39,7 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
39 |
<table class="eventtable ticket_list eventForm">
|
40 |
<tr class="tribe-tickets-image-upload">
|
41 |
<td>
|
42 |
-
<?php esc_html_e( 'Upload image for the ticket header', 'event-tickets' ); ?>
|
43 |
<p class="description"><?php esc_html_e( 'The maximum image size in the email will be 580px wide by any height, and then scaled for mobile. If you would like "retina" support use an image sized to 1160px wide.', 'event-tickets' ); ?></p>
|
44 |
</td>
|
45 |
<td>
|
39 |
<table class="eventtable ticket_list eventForm">
|
40 |
<tr class="tribe-tickets-image-upload">
|
41 |
<td>
|
42 |
+
<?php esc_html_e( 'Upload image for the ticket header.', 'event-tickets' ); ?>
|
43 |
<p class="description"><?php esc_html_e( 'The maximum image size in the email will be 580px wide by any height, and then scaled for mobile. If you would like "retina" support use an image sized to 1160px wide.', 'event-tickets' ); ?></p>
|
44 |
</td>
|
45 |
<td>
|
src/resources/css/rsvp.css
CHANGED
@@ -139,6 +139,18 @@
|
|
139 |
margin: 0 0 .5em 0;
|
140 |
}
|
141 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
.tribe-answer select {
|
143 |
background: white;
|
144 |
border: 1px solid #ddd;
|
139 |
margin: 0 0 .5em 0;
|
140 |
}
|
141 |
|
142 |
+
.tribe-answer {
|
143 |
+
line-height: 2;
|
144 |
+
}
|
145 |
+
|
146 |
+
.tribe-answer .type-label {
|
147 |
+
padding-right: .5em;
|
148 |
+
}
|
149 |
+
|
150 |
+
.tribe-answer label {
|
151 |
+
display: block;
|
152 |
+
}
|
153 |
+
|
154 |
.tribe-answer select {
|
155 |
background: white;
|
156 |
border: 1px solid #ddd;
|
src/resources/css/rsvp.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.tribe-rsvp{padding:20px 0}.tribe-tickets-meta-row{display:none}.tribe-tickets-has-rsvp .tribe-tickets-meta-row{display:table-row}.tribe-tickets-attendee{padding:10px}.tribe-events-tickets td{padding:8px 10px}.tribe-events-style-full .tribe-events-tickets .tribe-tickets-attendee table,.tribe-events-style-full .tribe-events-tickets .tribe-tickets-attendee td,.tribe-events-style-full .tribe-events-tickets .tribe-tickets-attendee tr,.tribe-events-tickets .tribe-tickets-attendee table,.tribe-events-tickets .tribe-tickets-attendee td,.tribe-events-tickets .tribe-tickets-attendee tr{border:0}.tribe-rsvp-message-display .tribe-rsvp-messages{display:block}.tribe-rsvp-messages{display:none;padding:10px 10px 5px}.tribe-rsvp-message{border-radius:3px;border-style:solid;border-width:1px;font-size:12px;margin:0 0 5px;padding:0 .6em}.tribe-rsvp-message-success{background-color:#ffffe0;border-color:#e6db55}.tribe-rsvp-message-error{background-color:#ffebe8;border-color:#c00}.tribe-ticket-quantity{width:100%}.tickets-unavailable{font-style:italic}.tribe-rsvp-list{list-style:none;padding:0;margin:0}.tribe-rsvp-list>.tribe-item{padding:20px;border:1px solid #ededed;border-bottom:0}.tribe-rsvp-list>.tribe-item:last-child{border-bottom:1px solid #ededed;margin-bottom:20px}.tribe-rsvp-list>.tribe-item.tribe-disabled{background-color:#efefef;border-color:#ddd;color:#717171}.tribe-rsvp-list>.tribe-item.tribe-disabled:last-child{border-bottom-color:#ddd}.tribe-rsvp-list>.tribe-item .tribe-answer{float:right;display:inline-block}.tribe-rsvp-list>.tribe-item table{border:0;margin:0}.tribe-rsvp-list>.tribe-item td{border:0}.list-attendee{color:#999;display:inline-block;letter-spacing:1px;text-transform:uppercase}.tribe-link-tickets-message{text-align:center;padding:20px;border:1px solid #ededed}.tribe-submit-tickets-form{margin-top:20px}.user-details{margin:0 0 1.5em}.user-details p{margin:0 0 .5em}.tribe-answer select{background:#fff;border:1px solid #ddd}.tribe-rsvp h2{margin-bottom:20px;line-height:1.2}.event-tickets-meta-label{font-weight:700;margin:0 1em 0 0}.tribe-theme-parent-twentysixteen .comment-content a,.tribe-theme-parent-twentysixteen .entry-content a,.tribe-theme-parent-twentysixteen .entry-footer a:hover,.tribe-theme-parent-twentysixteen .entry-summary a,.tribe-theme-parent-twentysixteen .logged-in-as a,.tribe-theme-parent-twentysixteen .pingback .comment-body>a,.tribe-theme-parent-twentysixteen .site-info a:hover,.tribe-theme-parent-twentysixteen .taxonomy-description a,.tribe-theme-parent-twentysixteen .textwidget a,.tribe-theme-twentysixteen .comment-content a,.tribe-theme-twentysixteen .entry-content a,.tribe-theme-twentysixteen .entry-footer a:hover,.tribe-theme-twentysixteen .entry-summary a,.tribe-theme-twentysixteen .logged-in-as a,.tribe-theme-twentysixteen .pingback .comment-body>a,.tribe-theme-twentysixteen .site-info a:hover,.tribe-theme-twentysixteen .taxonomy-description a,.tribe-theme-twentysixteen .textwidget a{box-shadow:none}
|
1 |
+
.tribe-rsvp{padding:20px 0}.tribe-tickets-meta-row{display:none}.tribe-tickets-has-rsvp .tribe-tickets-meta-row{display:table-row}.tribe-tickets-attendee{padding:10px}.tribe-events-tickets td{padding:8px 10px}.tribe-events-style-full .tribe-events-tickets .tribe-tickets-attendee table,.tribe-events-style-full .tribe-events-tickets .tribe-tickets-attendee td,.tribe-events-style-full .tribe-events-tickets .tribe-tickets-attendee tr,.tribe-events-tickets .tribe-tickets-attendee table,.tribe-events-tickets .tribe-tickets-attendee td,.tribe-events-tickets .tribe-tickets-attendee tr{border:0}.tribe-rsvp-message-display .tribe-rsvp-messages{display:block}.tribe-rsvp-messages{display:none;padding:10px 10px 5px}.tribe-rsvp-message{border-radius:3px;border-style:solid;border-width:1px;font-size:12px;margin:0 0 5px;padding:0 .6em}.tribe-rsvp-message-success{background-color:#ffffe0;border-color:#e6db55}.tribe-rsvp-message-error{background-color:#ffebe8;border-color:#c00}.tribe-ticket-quantity{width:100%}.tickets-unavailable{font-style:italic}.tribe-rsvp-list{list-style:none;padding:0;margin:0}.tribe-rsvp-list>.tribe-item{padding:20px;border:1px solid #ededed;border-bottom:0}.tribe-rsvp-list>.tribe-item:last-child{border-bottom:1px solid #ededed;margin-bottom:20px}.tribe-rsvp-list>.tribe-item.tribe-disabled{background-color:#efefef;border-color:#ddd;color:#717171}.tribe-rsvp-list>.tribe-item.tribe-disabled:last-child{border-bottom-color:#ddd}.tribe-rsvp-list>.tribe-item .tribe-answer{float:right;display:inline-block}.tribe-rsvp-list>.tribe-item table{border:0;margin:0}.tribe-rsvp-list>.tribe-item td{border:0}.list-attendee{color:#999;display:inline-block;letter-spacing:1px;text-transform:uppercase}.tribe-link-tickets-message{text-align:center;padding:20px;border:1px solid #ededed}.tribe-submit-tickets-form{margin-top:20px}.user-details{margin:0 0 1.5em}.user-details p{margin:0 0 .5em}.tribe-answer{line-height:2}.tribe-answer .type-label{padding-right:.5em}.tribe-answer label{display:block}.tribe-answer select{background:#fff;border:1px solid #ddd}.tribe-rsvp h2{margin-bottom:20px;line-height:1.2}.event-tickets-meta-label{font-weight:700;margin:0 1em 0 0}.tribe-theme-parent-twentysixteen .comment-content a,.tribe-theme-parent-twentysixteen .entry-content a,.tribe-theme-parent-twentysixteen .entry-footer a:hover,.tribe-theme-parent-twentysixteen .entry-summary a,.tribe-theme-parent-twentysixteen .logged-in-as a,.tribe-theme-parent-twentysixteen .pingback .comment-body>a,.tribe-theme-parent-twentysixteen .site-info a:hover,.tribe-theme-parent-twentysixteen .taxonomy-description a,.tribe-theme-parent-twentysixteen .textwidget a,.tribe-theme-twentysixteen .comment-content a,.tribe-theme-twentysixteen .entry-content a,.tribe-theme-twentysixteen .entry-footer a:hover,.tribe-theme-twentysixteen .entry-summary a,.tribe-theme-twentysixteen .logged-in-as a,.tribe-theme-twentysixteen .pingback .comment-body>a,.tribe-theme-twentysixteen .site-info a:hover,.tribe-theme-twentysixteen .taxonomy-description a,.tribe-theme-twentysixteen .textwidget a{box-shadow:none}
|
src/resources/css/tickets-attendees.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#tribe-attendees-summary{padding-bottom:10px;position:relative}#tribe-attendees-summary .about-description,#tribe-attendees-summary h3{width:66%}#tribe-attendees-summary .about-description a{color:inherit}#tribe-attendees-summary .welcome-panel-column-container{position:static
|
1 |
+
#tribe-attendees-summary{padding-bottom:10px;position:relative}#tribe-attendees-summary .about-description,#tribe-attendees-summary h3{width:66%}#tribe-attendees-summary .about-description a{color:inherit}#tribe-attendees-summary .welcome-panel-column-container{position:static}#tribe-attendees-summary .welcome-panel-column li{line-height:1.4em;margin-bottom:2px}#tribe-attendees-summary .welcome-panel-last{border-left:1px solid #eee;bottom:0;padding:10px 20px 5px;position:absolute;right:0;top:0;width:200px}#tribe-attendees-summary .welcome-panel-last h4{font-size:1.5em;text-align:center}#tribe-attendees-summary .welcome-panel-last li{font-size:1.2em}.tribe-attendees-page a.tickets_uncheckin{display:none}.tribe-attendees-page .tickets_checked td{opacity:.7;text-decoration:line-through}.tribe-attendees-page .tickets_checked a.tickets_checkin{display:none}.tribe-attendees-page .tickets_checked td.column-check_in{text-decoration:none!important}.tribe-attendees-page .tickets_checked a.tickets_uncheckin{display:block}.tribe-attendees-page .column-attendee_id,.tribe-attendees-page .column-order_id{width:70px}.tribe-attendees-page .email,.tribe-attendees-page .export,.tribe-attendees-page .print{margin:1px 8px 0 0}.tribe-attendees-email .tribe-attendees-email-message{float:left;margin:0}.tribe-attendees-email .button-primary{margin-top:3px}.tribe-attendees-email-message ul{font-size:13px;line-height:1.5;margin:.5em 0;padding:2px}.tribe-attendees-email-message ul li:last-child{margin-bottom:0}#attendees_email_wrapper{margin-top:10px;overflow:hidden;padding:20px}#attendees_email_wrapper label{display:block}#attendees_email_wrapper label span{display:inline-block;width:105px}#attendees_email_wrapper input[type=text],#attendees_email_wrapper select{width:285px}#attendees_email_wrapper .attendees_or{display:block;font-size:20px;margin:20px 0;text-align:center}@media screen and (max-width:870px){#tribe-attendees-summary .about-description,#tribe-attendees-summary h3{width:100%}#tribe-attendees-summary .welcome-panel-column-container{margin-bottom:115px}#tribe-attendees-summary .welcome-panel-column li{display:list-item}#tribe-attendees-summary .welcome-panel-last{border-left:0;border-top:1px solid #eee;bottom:0;left:0;right:0;top:auto;width:100%}#tribe-attendees-summary .welcome-panel-last ul{float:left;width:50%}}@media screen and (min-width:870px){#tribe-attendees-summary .welcome-panel-last ul:first-child{margin-bottom:0}#tribe-attendees-summary .welcome-panel-last ul:last-child{margin-top:0}}@media screen and (max-width:782px){.tribe-attendees-email-message .notice-dismiss{padding:9px}}
|
src/resources/js/frontend-ticket-form.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var tribe_tickets_ticket_form={};!function(t,e){var _,c;e.init=function(){_=t(".tribe-events-tickets"),c=_.find(".quantity").find(".qty"),c.on("change",e.on_quantity_change)},e.on_quantity_change=function(){var _=t(this),c=e.get_matching_ticket_id(this);e.ticket_uses_global_stock(c)?e.global_stock_quantity_changed(_,c):e.normal_stock_quantity_changed(_,c)},e.global_stock_quantity_changed=function(t,_){var c=t.val(),i=e.get_event_id(_),a=e.get_cap(_),o=e.get_global_stock(i),n=e.currently_requested_global_event_stock(i);n>o&&(c-=n-o),e.stock_mode_is_capped(_)&&c>a&&(c=a),0>=c&&(c=0),t.val(c),e.update_available_stock_counts(i)},e.normal_stock_quantity_changed=function(t,c){var i,a=t.val(),o=e.get_single_stock(c);a>o&&(a=o),t.val(a),i=o-a,_.find(".available-stock[data-product-id="+c+"]").html(i)},e.update_available_stock_counts=function(c){var i=e.get_tickets_of(c),a=e.get_global_stock(c)-e.currently_requested_global_event_stock(c);for(var o in i)if(i.hasOwnProperty(o)){0
|
1 |
+
var tribe_tickets_ticket_form={};!function(t,e){var _,c;e.init=function(){_=t(".tribe-events-tickets"),c=_.find(".quantity").find(".qty"),c.on("change",e.on_quantity_change)},e.on_quantity_change=function(){var _=t(this),c=e.get_matching_ticket_id(this);e.ticket_uses_global_stock(c)?e.global_stock_quantity_changed(_,c):e.normal_stock_quantity_changed(_,c)},e.global_stock_quantity_changed=function(t,_){var c=t.val(),i=e.get_event_id(_),a=e.get_cap(_),o=e.get_global_stock(i),n=e.currently_requested_global_event_stock(i);n>o&&(c-=n-o),e.stock_mode_is_capped(_)&&c>a&&(c=a),0>=c&&(c=0),t.val(c),e.update_available_stock_counts(i)},e.normal_stock_quantity_changed=function(t,c){var i,a=t.val(),o=e.get_single_stock(c);a>o&&(a=o),t.val(a),i=o-a,_.find(".available-stock[data-product-id="+c+"]").html(i)},e.update_available_stock_counts=function(c){var i=e.get_tickets_of(c),a=e.get_global_stock(c)-e.currently_requested_global_event_stock(c);for(var o in i)if(i.hasOwnProperty(o)){a<0&&(a=0);var n=i[o];if("global"===n.mode&&_.find(".available-stock[data-product-id="+o+"]").html(a),"capped"===n.mode){var r=Math.min(a,n.cap),s=parseInt(t("[data-product-id="+o+"]").find("input").val(),10),d=n.cap-s;d<0?d=0:d>r&&(d=r),_.find(".available-stock[data-product-id="+o+"]").html(d)}}},e.get_matching_ticket_id=function(e){var _=t(e).closest("[data-product-id]");if(_.length)return _.data("product-id")},e.get_ticket_property=function(t,e){if("object"!=typeof tribe_tickets_stock_data)return!1;var _=tribe_tickets_stock_data.tickets[t];return"undefined"!==tribe_tickets_stock_data.tickets[t]&&_[e]},e.get_tickets_of=function(t){if("object"!=typeof tribe_tickets_stock_data)return!1;var e=[];for(var _ in tribe_tickets_stock_data.tickets){var c=tribe_tickets_stock_data.tickets[_];t===c.event_id&&(e[_]=c)}return e},e.currently_requested_global_event_stock=function(t){var c=0,i=e.get_tickets_of(t);for(var a in i)switch(tribe_tickets_stock_data.tickets[a].mode){case"global":case"capped":c+=parseInt(_.find("[data-product-id="+a+"]").find(".qty").val(),10)}return c},e.get_event_property=function(t,e){if("object"!=typeof tribe_tickets_stock_data)return!1;var _=tribe_tickets_stock_data.events[t];return"undefined"!==tribe_tickets_stock_data.events[t]&&_[e]},e.stock_mode_is_global=function(t){return"global"===e.get_mode(t)},e.stock_mode_is_capped=function(t){return"capped"===e.get_mode(t)},e.ticket_uses_global_stock=function(t){return e.stock_mode_is_capped(t)||e.stock_mode_is_global(t)},e.get_mode=function(t){return e.get_ticket_property(t,"mode")},e.get_event_id=function(t){return e.get_ticket_property(t,"event_id")},e.get_cap=function(t){return e.get_ticket_property(t,"cap")},e.get_global_stock=function(t){return e.get_event_property(t,"stock")},e.get_single_stock=function(t){return e.get_ticket_property(t,"stock")},t(function(){e.init()})}(jQuery,tribe_tickets_ticket_form);
|
src/resources/js/tickets-attendees.js
CHANGED
@@ -88,6 +88,11 @@ jQuery( document ).ready( function( $ ) {
|
|
88 |
order_ID: obj.attr( 'data-attendee-id' ),
|
89 |
nonce : Attendees.checkin_nonce
|
90 |
};
|
|
|
|
|
|
|
|
|
|
|
91 |
|
92 |
$.post(
|
93 |
ajaxurl,
|
@@ -117,6 +122,11 @@ jQuery( document ).ready( function( $ ) {
|
|
117 |
nonce : Attendees.uncheckin_nonce
|
118 |
};
|
119 |
|
|
|
|
|
|
|
|
|
|
|
120 |
$.post(
|
121 |
ajaxurl,
|
122 |
params,
|
88 |
order_ID: obj.attr( 'data-attendee-id' ),
|
89 |
nonce : Attendees.checkin_nonce
|
90 |
};
|
91 |
+
|
92 |
+
// add event_ID information if available
|
93 |
+
if ( obj.attr( 'data-event-id' ) ) {
|
94 |
+
params.event_ID = obj.attr( 'data-event-id' );
|
95 |
+
}
|
96 |
|
97 |
$.post(
|
98 |
ajaxurl,
|
122 |
nonce : Attendees.uncheckin_nonce
|
123 |
};
|
124 |
|
125 |
+
// add event_ID information if available
|
126 |
+
if ( obj.attr( 'data-event-id' ) ) {
|
127 |
+
params.event_ID = obj.attr( 'data-event-id' );
|
128 |
+
}
|
129 |
+
|
130 |
$.post(
|
131 |
ajaxurl,
|
132 |
params,
|
src/resources/js/tickets-attendees.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(e){if("undefined"!=typeof AttendeesPointer&&null!==AttendeesPointer){options=e.extend(AttendeesPointer.options,{close:function(){e.post(ajaxurl,{pointer:AttendeesPointer.pointer_id,action:"dismiss-wp-pointer"})},open:function(e,t){t.pointer.css({top:parseInt(t.pointer.css("top").replace("px",""),10)+5}).find(".wp-pointer-arrow").css({right:"50px",left:"auto"}),t.element.on({click:function(){t.element.pointer("close")}})}});e(AttendeesPointer.target).pointer(options).pointer("open").pointer("widget")}e("input.print").on("click",function(e){window.print()});var t=e(document.getElementById("filter_attendee"));t.on("keydown",function(e){
|
1 |
+
jQuery(document).ready(function(e){if("undefined"!=typeof AttendeesPointer&&null!==AttendeesPointer){options=e.extend(AttendeesPointer.options,{close:function(){e.post(ajaxurl,{pointer:AttendeesPointer.pointer_id,action:"dismiss-wp-pointer"})},open:function(e,t){t.pointer.css({top:parseInt(t.pointer.css("top").replace("px",""),10)+5}).find(".wp-pointer-arrow").css({right:"50px",left:"auto"}),t.element.on({click:function(){t.element.pointer("close")}})}});e(AttendeesPointer.target).pointer(options).pointer("open").pointer("widget")}e("input.print").on("click",function(e){window.print()});var t=e(document.getElementById("filter_attendee"));t.on("keydown",function(e){if(13===e.keyCode)return!1}),t.on("keyup paste",function(){var t=jQuery(this).val().toLowerCase();e("#the-list").find("tr").each(function(n,i){var r=e(i),o=r.children("td.order_id").children("a").text(),a=r.children("td.attendee_id").text(),d=r.children("td.security").text(),c=0===a.indexOf(t)||0===o.indexOf(t)||0===d.indexOf(t),s=r.children("td.purchaser_name").text().toLowerCase(),p=0===s.indexOf(t)||s.indexOf(" "+t)>1;c||p?r.show():r.hide()})}),e(".tribe-attendees-email").on({submit:function(t){e(".tribe-attendees-email").hide(),e(document.getElementById("tribe-loading")).show()}}),e(".tickets_checkin").click(function(t){var n=jQuery(this),i={action:"tribe-ticket-checkin-"+n.attr("data-provider"),provider:n.attr("data-provider"),order_ID:n.attr("data-attendee-id"),nonce:Attendees.checkin_nonce};n.attr("data-event-id")&&(i.event_ID=n.attr("data-event-id")),e.post(ajaxurl,i,function(t){t.success&&(n.parent("td").parent("tr").addClass("tickets_checked"),e("#total_checkedin").text(parseInt(e("#total_checkedin").text())+1))},"json"),t.preventDefault()}),e(".tickets_uncheckin").click(function(t){var n=jQuery(this),i={action:"tribe-ticket-uncheckin-"+n.attr("data-provider"),provider:n.attr("data-provider"),order_ID:n.attr("data-attendee-id"),nonce:Attendees.uncheckin_nonce};n.attr("data-event-id")&&(i.event_ID=n.attr("data-event-id")),e.post(ajaxurl,i,function(t){t.success&&(n.parent("span").parent("td").parent("tr").removeClass("tickets_checked"),e("#total_checkedin").text(parseInt(e("#total_checkedin").text())-1))},"json"),t.preventDefault()})});
|
src/resources/js/tickets.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var ticketHeaderImage=window.ticketHeaderImage||{};!function(t,e,i){"use strict";ticketHeaderImage={uploader:function(){var t=wp.media({title:HeaderImageData.title,multiple:!1,library:{type:"image"},button:{text:HeaderImageData.button}});return t.on("close",function(){var e=t.state().get("selection").toJSON();e.length&&ticketHeaderImage.render(e[0])}),t.open(),!1},render:function(t){e("#tribe_ticket_header_preview").html(ticketHeaderImage.imgHTML(t)),e("#tribe_ticket_header_image_id").val(t.id),e("#tribe_ticket_header_remove").show()},imgHTML:function(t){var e='<img src="'+t.url+'" ';return e+='width="'+t.width+'" ',e+='height="'+t.height+'" ',e+="/>"}},e(document).ready(function(){function i(){return s.prop("checked")}function a(){l=!0,c.trigger("set-global-stock-fields.tribe")}function r(){e("tr.ticket_advanced").hide(),e("tr.ticket_advanced_"+n()+":not(.sale_price)").show(),c.trigger("set-advanced-fields.tribe"),e(document.getElementById("tribetickets")).trigger("ticket-provider-changed.tribe")}function n(){var t=e('input[name="ticket_provider"]:checked');return t.length>0?t[0].value:""}var d=e("#tribe-event-datepickers"),c=e("#tribetickets"),o=e("#event_tickets"),s=e("#tribe-tickets-enable-global-stock"),_=e("#tribe-tickets-global-stock-level"),l=!1,k=e("html, body"),g=0;c.on({"spin.tribe":function(t,i){("undefined"==typeof i||e.inArray(i,["start","stop"]))&&(i="stop"),"stop"===i?o.css("opacity","1").find("#tribe-loading").hide():o.css("opacity","0.5").find("#tribe-loading").show()},"clear.tribe":function(){var t=e(this),i=t.find("#ticket_form"),a=i.find("tr:not(.event-wide-settings)");t.find("a#ticket_form_toggle").show(),a.find('input:not(:button):not(:radio):not(:checkbox):not([type="hidden"]), textarea').val(""),a.find("input:checkbox").attr("checked",!1),a.find("#ticket_id").val(""),t.find('#ticket_form input[name="show_attendee_info"]').prop("checked",!1).change(),t.find("input[data-default-value]").each(function(){var t=e(this);t.val(t.data("default-value"))}),t.find("#ticket_start_date").datepicker("option","maxDate",null),t.find("#ticket_end_date").datepicker("option","minDate",null),t.find(".ticket_start_time, .ticket_end_time, .ticket.sale_price").hide(),t.find("#ticket_price").removeProp("disabled").siblings(".no-update-message").html("").hide().end().siblings(".description").show(),e("#tribe-tickets-attendee-sortables").empty(),e(".tribe-tickets-attendee-saved-fields").show(),i.hide()},"focus.tribe":function(){k.animate({scrollTop:o.offset().top-50},500)},"set-advanced-fields.tribe":function(){var t=e(this),i=t.find("#ticket_form"),a=i.find("tr.ticket_advanced:not(.ticket_advanced_meta)").find("input, select, textarea"),r=i.find("#ticket_provider:checked").val();a.each(function(){var t=e(this);t.attr("name")&&t.data("name",t.attr("name")).attr({name:"",id:""}),t.closest("tr").hasClass("ticket_advanced_"+r)&&t.data("name")&&0===t.attr("name").length&&t.attr({name:t.data("name"),id:t.data("name")})}),c.trigger("set-global-stock-fields.tribe"),e("#ticket_global_stock").change(function(){c.trigger("set-global-stock-fields.tribe")})},"set-global-stock-fields.tribe":function(){var t=n(),a=e(this).find("#ticket_form").find(".ticket_advanced_"+t);if(!(a.length<1)){var r=a.filter(".stock"),d=a.filter(".global-stock-mode"),c=d.filter(".sales-cap-field"),o=e("#ticket_global_stock").val(),s=i();if(_.toggle(s),d.toggle(i()),r.toggle(!s),s)switch(o){case"global":c.hide(),r.hide();break;case"capped":c.show(),r.hide();break;case"own":c.hide(),r.show()}}}}),d.length&&(g=d.data("startofweek"));var p={dateFormat:"yy-mm-dd",showAnim:"fadeIn",changeMonth:!0,changeYear:!0,numberOfMonths:3,firstDay:g,showButtonPanel:!0,onChange:function(){},onSelect:function(t,i){var a=e.datepicker.parseDate("yy-mm-dd",t);"ticket_start_date"===i.id?(e("#ticket_end_date").datepicker("option","minDate",a),a?e(".ticket_start_time").show():e(".ticket_start_time").hide()):(e("#ticket_start_date").datepicker("option","maxDate",a),a?e(".ticket_end_time").show():e(".ticket_end_time").hide())}};e("#ticket_start_date").datepicker(p).keyup(function(t){8!==t.keyCode&&46!==t.keyCode||e.datepicker._clearDate(this)}),e("#ticket_end_date").datepicker(p).keyup(function(t){8!==t.keyCode&&46!==t.keyCode||e.datepicker._clearDate(this)}),s.change(a),s.trigger("change"),l=!1,e("input[name=ticket_provider]:radio").change(function(){r()}),e("input[name=ticket_provider]:checked").each(function(){r()}),e("a#ticket_form_toggle").click(function(t){e("h4.ticket_form_title_edit").hide(),e("h4.ticket_form_title_add").show(),e(this).hide(),c.trigger("clear.tribe").trigger("set-advanced-fields.tribe").trigger("focus.tribe"),e("#ticket_form").show(),e(document.getElementById("tribetickets")).trigger("ticket-provider-changed.tribe"),t.preventDefault()}),e("#ticket_form_cancel").click(function(){c.trigger("clear.tribe").trigger("set-advanced-fields.tribe").trigger("focus.tribe")}),e("#ticket_form_save").click(function(t){var i=e("#ticket_form_table"),a=i.find("#ticket_provider:checked").val(),r=i.find(".ticket, .ticket_advanced_meta, .ticket_advanced_"+a);c.trigger("save-ticket.tribe",t).trigger("spin.tribe","start");var n={action:"tribe-ticket-add-"+e("input[name=ticket_provider]:checked").val(),formdata:r.find(".ticket_field").serialize(),post_ID:e("#post_ID").val(),nonce:TribeTickets.add_ticket_nonce};e.post(ajaxurl,n,function(t){c.trigger("saved-ticket.tribe",t),t.success&&(c.trigger("clear.tribe"),e("td.ticket_list_container").empty().html(t.data.html),e(".ticket_time").hide())},"json").complete(function(){c.trigger("spin.tribe","stop").trigger("focus.tribe")})}),c.on("click",".ticket_delete",function(t){t.preventDefault(),c.trigger("delete-ticket.tribe",t).trigger("spin.tribe","start");var i={action:"tribe-ticket-delete-"+e(this).attr("attr-provider"),post_ID:e("#post_ID").val(),ticket_id:e(this).attr("attr-ticket-id"),nonce:TribeTickets.remove_ticket_nonce};e.post(ajaxurl,i,function(t){c.trigger("deleted-ticket.tribe",t),t.success&&(c.trigger("clear.tribe"),e("td.ticket_list_container").empty().html(t.data))},"json").complete(function(){c.trigger("spin.tribe","stop")})}),c.on("click",".ticket_edit",function(t){t.preventDefault(),e("h4.ticket_form_title_edit").show(),e("h4.ticket_form_title_add").hide(),c.trigger("spin.tribe","start");var i={action:"tribe-ticket-edit-"+e(this).attr("attr-provider"),post_ID:e("#post_ID").val(),ticket_id:e(this).attr("attr-ticket-id"),nonce:TribeTickets.edit_ticket_nonce};e.post(ajaxurl,i,function(t){c.trigger("clear.tribe").trigger("set-advanced-fields.tribe").trigger("edit-ticket.tribe",t);var i=t.data.price,a=i,r=!1;"undefined"!=typeof t.data.on_sale&&t.data.on_sale&&(r=!0,i=t.data.regular_price),e("#ticket_id").val(t.data.ID),e("#ticket_name").val(t.data.name),e("#ticket_description").val(t.data.description),r&&e(".ticket_advanced_"+t.data.provider_class+".sale_price").show();var n=t.data.start_date.substring(0,10),d=t.data.end_date.substring(0,10);e("#ticket_start_date").val(n),e("#ticket_end_date").val(d);var o=e(document.getElementById("ticket_start_meridian")),s=e(document.getElementById("ticket_end_meridian"));if(t.data.start_date){var _=parseInt(t.data.start_date.substring(11,13)),l="am";_>12&&o.length&&(l="pm",_=parseInt(_)-12,_=("0"+_).slice(-2)),12===_&&(l="pm"),0===_&&"am"===l&&(_=12),_=_.toString(),1===_.length&&(_="0"+_),e("#ticket_start_hour").val(_),e("#ticket_start_meridian").val(l),e(".ticket_start_time").show()}if(t.data.end_date){var k=parseInt(t.data.end_date.substring(11,13)),g="am";k>12&&s.length&&(g="pm",k=parseInt(k)-12,k=("0"+k).slice(-2)),12===k&&(g="pm"),0===k&&"am"===g&&(k=12),k=k.toString(),1===k.length&&(k="0"+k),e("#ticket_end_hour").val(k),e("#ticket_end_meridian").val(g),e("#ticket_start_minute").val(t.data.start_date.substring(14,16)),e("#ticket_end_minute").val(t.data.end_date.substring(14,16)),e(".ticket_end_time").show()}var p=e("tr.ticket_advanced input");p.data("name",p.attr("name")).attr({name:"",id:""}),e("tr.ticket_advanced").remove(),e("tr.ticket.bottom").before(t.data.advanced_fields),e("input:radio[name=ticket_provider]").filter("[value="+t.data.provider_class+"]").click(),e("input[name=ticket_provider]:radio").change();var m=c.find("#ticket_price");m.val(i),"undefined"!=typeof t.data.disallow_update_price_message?m.siblings(".no-update-message").html(t.data.disallow_update_price_message):m.siblings(".no-update-message").html(""),"undefined"==typeof t.data.can_update_price||t.data.can_update_price?(m.removeProp("disabled"),m.siblings(".description").show(),m.siblings(".no-update-message").hide()):(m.prop("disabled","disabled"),m.siblings(".description").hide(),m.siblings(".no-update-message").show());var f=c.find("#ticket_sale_price");r?f.val(a).closest("tr").show():f.closest("tr").hide(),"undefined"!=typeof t.data.purchase_limit&&t.data.purchase_limit&&e("#ticket_purchase_limit").val(t.data.purchase_limit),c.find(".bumpdown-trigger").bumpdown(),c.find(".bumpdown").hide(),e("a#ticket_form_toggle").hide(),e("#ticket_form").show(),c.trigger("set-advanced-fields.tribe").trigger("edit-ticket.tribe")},"json").complete(function(){c.trigger("spin.tribe","stop").trigger("focus.tribe")})}).on("click","#tribe_ticket_header_image",function(t){t.preventDefault(),ticketHeaderImage.uploader("","")});var m=e("#tribe_ticket_header_remove"),f=e("#tribe_ticket_header_preview");if(f.find("img").length&&m.show(),_.change(function(){l=!0}),e('input[type="submit"]').click(function(){l=!1}),e(t).on("beforeunload",function(){return
|
1 |
+
var ticketHeaderImage=window.ticketHeaderImage||{};!function(t,e,i){"use strict";ticketHeaderImage={uploader:function(){var t=wp.media({title:HeaderImageData.title,multiple:!1,library:{type:"image"},button:{text:HeaderImageData.button}});return t.on("close",function(){var e=t.state().get("selection").toJSON();e.length&&ticketHeaderImage.render(e[0])}),t.open(),!1},render:function(t){e("#tribe_ticket_header_preview").html(ticketHeaderImage.imgHTML(t)),e("#tribe_ticket_header_image_id").val(t.id),e("#tribe_ticket_header_remove").show()},imgHTML:function(t){var e='<img src="'+t.url+'" ';return e+='width="'+t.width+'" ',e+='height="'+t.height+'" ',e+="/>"}},e(document).ready(function(){function i(){return s.prop("checked")}function a(){l=!0,c.trigger("set-global-stock-fields.tribe")}function r(){e("tr.ticket_advanced").hide(),e("tr.ticket_advanced_"+n()+":not(.sale_price)").show(),c.trigger("set-advanced-fields.tribe"),e(document.getElementById("tribetickets")).trigger("ticket-provider-changed.tribe")}function n(){var t=e('input[name="ticket_provider"]:checked');return t.length>0?t[0].value:""}var d=e("#tribe-event-datepickers"),c=e("#tribetickets"),o=e("#event_tickets"),s=e("#tribe-tickets-enable-global-stock"),_=e("#tribe-tickets-global-stock-level"),l=!1,k=e("html, body"),g=0;c.on({"spin.tribe":function(t,i){("undefined"==typeof i||e.inArray(i,["start","stop"]))&&(i="stop"),"stop"===i?o.css("opacity","1").find("#tribe-loading").hide():o.css("opacity","0.5").find("#tribe-loading").show()},"clear.tribe":function(){var t=e(this),i=t.find("#ticket_form"),a=i.find("tr:not(.event-wide-settings)");t.find("a#ticket_form_toggle").show(),a.find('input:not(:button):not(:radio):not(:checkbox):not([type="hidden"]), textarea').val(""),a.find("input:checkbox").attr("checked",!1),a.find("#ticket_id").val(""),t.find('#ticket_form input[name="show_attendee_info"]').prop("checked",!1).change(),t.find("input[data-default-value]").each(function(){var t=e(this);t.val(t.data("default-value"))}),t.find("#ticket_start_date").datepicker("option","maxDate",null),t.find("#ticket_end_date").datepicker("option","minDate",null),t.find(".ticket_start_time, .ticket_end_time, .ticket.sale_price").hide(),t.find("#ticket_price").removeProp("disabled").siblings(".no-update-message").html("").hide().end().siblings(".description").show(),e("#tribe-tickets-attendee-sortables").empty(),e(".tribe-tickets-attendee-saved-fields").show(),i.hide()},"focus.tribe":function(){k.animate({scrollTop:o.offset().top-50},500)},"set-advanced-fields.tribe":function(){var t=e(this),i=t.find("#ticket_form"),a=i.find("tr.ticket_advanced:not(.ticket_advanced_meta)").find("input, select, textarea"),r=i.find("#ticket_provider:checked").val();a.each(function(){var t=e(this);t.attr("name")&&t.data("name",t.attr("name")).attr({name:"",id:""}),t.closest("tr").hasClass("ticket_advanced_"+r)&&t.data("name")&&0===t.attr("name").length&&t.attr({name:t.data("name"),id:t.data("name")})}),c.trigger("set-global-stock-fields.tribe"),e("#ticket_global_stock").change(function(){c.trigger("set-global-stock-fields.tribe")})},"set-global-stock-fields.tribe":function(){var t=n(),a=e(this).find("#ticket_form").find(".ticket_advanced_"+t);if(!(a.length<1)){var r=a.filter(".stock"),d=a.filter(".global-stock-mode"),c=d.filter(".sales-cap-field"),o=e("#ticket_global_stock").val(),s=i();if(_.toggle(s),d.toggle(i()),r.toggle(!s),s)switch(o){case"global":c.hide(),r.hide();break;case"capped":c.show(),r.hide();break;case"own":c.hide(),r.show()}}}}),d.length&&(g=d.data("startofweek"));var p={dateFormat:"yy-mm-dd",showAnim:"fadeIn",changeMonth:!0,changeYear:!0,numberOfMonths:3,firstDay:g,showButtonPanel:!0,onChange:function(){},onSelect:function(t,i){var a=e.datepicker.parseDate("yy-mm-dd",t);"ticket_start_date"===i.id?(e("#ticket_end_date").datepicker("option","minDate",a),a?e(".ticket_start_time").show():e(".ticket_start_time").hide()):(e("#ticket_start_date").datepicker("option","maxDate",a),a?e(".ticket_end_time").show():e(".ticket_end_time").hide())}};e("#ticket_start_date").datepicker(p).keyup(function(t){8!==t.keyCode&&46!==t.keyCode||e.datepicker._clearDate(this)}),e("#ticket_end_date").datepicker(p).keyup(function(t){8!==t.keyCode&&46!==t.keyCode||e.datepicker._clearDate(this)}),s.change(a),s.trigger("change"),l=!1,e("input[name=ticket_provider]:radio").change(function(){r()}),e("input[name=ticket_provider]:checked").each(function(){r()}),e("a#ticket_form_toggle").click(function(t){e("h4.ticket_form_title_edit").hide(),e("h4.ticket_form_title_add").show(),e(this).hide(),c.trigger("clear.tribe").trigger("set-advanced-fields.tribe").trigger("focus.tribe"),e("#ticket_form").show(),e(document.getElementById("tribetickets")).trigger("ticket-provider-changed.tribe"),t.preventDefault()}),e("#ticket_form_cancel").click(function(){c.trigger("clear.tribe").trigger("set-advanced-fields.tribe").trigger("focus.tribe")}),e("#ticket_form_save").click(function(t){var i=e("#ticket_form_table"),a=i.find("#ticket_provider:checked").val(),r=i.find(".ticket, .ticket_advanced_meta, .ticket_advanced_"+a);c.trigger("save-ticket.tribe",t).trigger("spin.tribe","start");var n={action:"tribe-ticket-add-"+e("input[name=ticket_provider]:checked").val(),formdata:r.find(".ticket_field").serialize(),post_ID:e("#post_ID").val(),nonce:TribeTickets.add_ticket_nonce};e.post(ajaxurl,n,function(t){c.trigger("saved-ticket.tribe",t),t.success&&(c.trigger("clear.tribe"),e("td.ticket_list_container").empty().html(t.data.html),e(".ticket_time").hide())},"json").complete(function(){c.trigger("spin.tribe","stop").trigger("focus.tribe")})}),c.on("click",".ticket_delete",function(t){t.preventDefault(),c.trigger("delete-ticket.tribe",t).trigger("spin.tribe","start");var i={action:"tribe-ticket-delete-"+e(this).attr("attr-provider"),post_ID:e("#post_ID").val(),ticket_id:e(this).attr("attr-ticket-id"),nonce:TribeTickets.remove_ticket_nonce};e.post(ajaxurl,i,function(t){c.trigger("deleted-ticket.tribe",t),t.success&&(c.trigger("clear.tribe"),e("td.ticket_list_container").empty().html(t.data))},"json").complete(function(){c.trigger("spin.tribe","stop")})}),c.on("click",".ticket_edit",function(t){t.preventDefault(),e("h4.ticket_form_title_edit").show(),e("h4.ticket_form_title_add").hide(),c.trigger("spin.tribe","start");var i={action:"tribe-ticket-edit-"+e(this).attr("attr-provider"),post_ID:e("#post_ID").val(),ticket_id:e(this).attr("attr-ticket-id"),nonce:TribeTickets.edit_ticket_nonce};e.post(ajaxurl,i,function(t){c.trigger("clear.tribe").trigger("set-advanced-fields.tribe").trigger("edit-ticket.tribe",t);var i=t.data.price,a=i,r=!1;"undefined"!=typeof t.data.on_sale&&t.data.on_sale&&(r=!0,i=t.data.regular_price),e("#ticket_id").val(t.data.ID),e("#ticket_name").val(t.data.name),e("#ticket_description").val(t.data.description),r&&e(".ticket_advanced_"+t.data.provider_class+".sale_price").show();var n=t.data.start_date.substring(0,10),d=t.data.end_date.substring(0,10);e("#ticket_start_date").val(n),e("#ticket_end_date").val(d);var o=e(document.getElementById("ticket_start_meridian")),s=e(document.getElementById("ticket_end_meridian"));if(t.data.start_date){var _=parseInt(t.data.start_date.substring(11,13)),l="am";_>12&&o.length&&(l="pm",_=parseInt(_)-12,_=("0"+_).slice(-2)),12===_&&(l="pm"),0===_&&"am"===l&&(_=12),_=_.toString(),1===_.length&&(_="0"+_),e("#ticket_start_hour").val(_),e("#ticket_start_meridian").val(l),e(".ticket_start_time").show()}if(t.data.end_date){var k=parseInt(t.data.end_date.substring(11,13)),g="am";k>12&&s.length&&(g="pm",k=parseInt(k)-12,k=("0"+k).slice(-2)),12===k&&(g="pm"),0===k&&"am"===g&&(k=12),k=k.toString(),1===k.length&&(k="0"+k),e("#ticket_end_hour").val(k),e("#ticket_end_meridian").val(g),e("#ticket_start_minute").val(t.data.start_date.substring(14,16)),e("#ticket_end_minute").val(t.data.end_date.substring(14,16)),e(".ticket_end_time").show()}var p=e("tr.ticket_advanced input");p.data("name",p.attr("name")).attr({name:"",id:""}),e("tr.ticket_advanced").remove(),e("tr.ticket.bottom").before(t.data.advanced_fields),e("input:radio[name=ticket_provider]").filter("[value="+t.data.provider_class+"]").click(),e("input[name=ticket_provider]:radio").change();var m=c.find("#ticket_price");m.val(i),"undefined"!=typeof t.data.disallow_update_price_message?m.siblings(".no-update-message").html(t.data.disallow_update_price_message):m.siblings(".no-update-message").html(""),"undefined"==typeof t.data.can_update_price||t.data.can_update_price?(m.removeProp("disabled"),m.siblings(".description").show(),m.siblings(".no-update-message").hide()):(m.prop("disabled","disabled"),m.siblings(".description").hide(),m.siblings(".no-update-message").show());var f=c.find("#ticket_sale_price");r?f.val(a).closest("tr").show():f.closest("tr").hide(),"undefined"!=typeof t.data.purchase_limit&&t.data.purchase_limit&&e("#ticket_purchase_limit").val(t.data.purchase_limit),c.find(".bumpdown-trigger").bumpdown(),c.find(".bumpdown").hide(),e("a#ticket_form_toggle").hide(),e("#ticket_form").show(),c.trigger("set-advanced-fields.tribe").trigger("edit-ticket.tribe")},"json").complete(function(){c.trigger("spin.tribe","stop").trigger("focus.tribe")})}).on("click","#tribe_ticket_header_image",function(t){t.preventDefault(),ticketHeaderImage.uploader("","")});var m=e("#tribe_ticket_header_remove"),f=e("#tribe_ticket_header_preview");if(f.find("img").length&&m.show(),_.change(function(){l=!0}),e('input[type="submit"]').click(function(){l=!1}),e(t).on("beforeunload",function(){if(l)return tribe_global_stock_admin_ui.nav_away_msg}),e("body").on("click","#tribe_ticket_header_remove",function(t){t.preventDefault(),f.html(""),m.hide(),e("#tribe_ticket_header_image_id").val("")}),e("#tribe_ticket_header_preview img").length){var h=e("#tribe_ticket_header_preview img");h.removeAttr("width").removeAttr("height"),c.width()<h.width()&&h.css("width","95%")}})}(window,jQuery);
|
src/resources/postcss/rsvp.pcss
CHANGED
@@ -130,6 +130,14 @@
|
|
130 |
}
|
131 |
|
132 |
.tribe-answer {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
select {
|
134 |
background: white;
|
135 |
border: 1px solid #ddd;
|
130 |
}
|
131 |
|
132 |
.tribe-answer {
|
133 |
+
line-height: 2;
|
134 |
+
|
135 |
+
.type-label {
|
136 |
+
padding-right: .5em;
|
137 |
+
}
|
138 |
+
label {
|
139 |
+
display: block;
|
140 |
+
}
|
141 |
select {
|
142 |
background: white;
|
143 |
border: 1px solid #ddd;
|
src/views/tickets/email-non-attendance.php
ADDED
@@ -0,0 +1,270 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Email used to notify someone that their RSVP was received.
|
4 |
+
*
|
5 |
+
* This email is used on those occasions where the user noted
|
6 |
+
* that they would *not* be attending. You may override this
|
7 |
+
* template in your own theme by creating a file at:
|
8 |
+
*
|
9 |
+
* [your-theme]/tribe-events/tickets/email-non-attendance.php
|
10 |
+
*
|
11 |
+
* @var int $event_id
|
12 |
+
* @var int $order_id
|
13 |
+
* @var array $attendees
|
14 |
+
*
|
15 |
+
* @version 4.2.2
|
16 |
+
*/
|
17 |
+
|
18 |
+
$start_date = tribe_get_start_date( $event_id );
|
19 |
+
?>
|
20 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
21 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
22 |
+
<head>
|
23 |
+
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
|
24 |
+
<title><?php esc_html_e( 'Your tickets', 'event-tickets' ); ?></title>
|
25 |
+
<meta name="viewport" content="width=device-width" />
|
26 |
+
<style type="text/css">
|
27 |
+
h1, h2, h3, h4, h5, h6 {
|
28 |
+
color : #0a0a0e;
|
29 |
+
}
|
30 |
+
|
31 |
+
a, img {
|
32 |
+
border : 0;
|
33 |
+
outline : 0;
|
34 |
+
}
|
35 |
+
|
36 |
+
#outlook a {
|
37 |
+
padding : 0;
|
38 |
+
}
|
39 |
+
|
40 |
+
.ReadMsgBody, .ExternalClass {
|
41 |
+
width : 100%
|
42 |
+
}
|
43 |
+
|
44 |
+
.yshortcuts, a .yshortcuts, a .yshortcuts:hover, a .yshortcuts:active, a .yshortcuts:focus {
|
45 |
+
background-color : transparent !important;
|
46 |
+
border : none !important;
|
47 |
+
color : inherit !important;
|
48 |
+
}
|
49 |
+
|
50 |
+
body {
|
51 |
+
background : #ffffff;
|
52 |
+
min-height : 1000px;
|
53 |
+
font-family : sans-serif;
|
54 |
+
font-size : 14px;
|
55 |
+
}
|
56 |
+
|
57 |
+
.appleLinks a {
|
58 |
+
color : #006caa;
|
59 |
+
text-decoration : underline;
|
60 |
+
}
|
61 |
+
|
62 |
+
@media only screen and (max-width: 480px) {
|
63 |
+
body, table, td, p, a, li, blockquote {
|
64 |
+
-webkit-text-size-adjust : none !important;
|
65 |
+
}
|
66 |
+
|
67 |
+
body {
|
68 |
+
width : 100% !important;
|
69 |
+
min-width : 100% !important;
|
70 |
+
}
|
71 |
+
|
72 |
+
body[yahoo] h2 {
|
73 |
+
line-height : 120% !important;
|
74 |
+
font-size : 28px !important;
|
75 |
+
margin : 15px 0 10px 0 !important;
|
76 |
+
}
|
77 |
+
|
78 |
+
table.content,
|
79 |
+
table.wrapper,
|
80 |
+
table.inner-wrapper {
|
81 |
+
width : 100% !important;
|
82 |
+
}
|
83 |
+
|
84 |
+
table.ticket-content {
|
85 |
+
width : 90% !important;
|
86 |
+
padding : 20px 0 !important;
|
87 |
+
}
|
88 |
+
|
89 |
+
table.ticket-details {
|
90 |
+
position : relative;
|
91 |
+
padding-bottom : 100px !important;
|
92 |
+
}
|
93 |
+
|
94 |
+
table.ticket-break {
|
95 |
+
width : 100% !important;
|
96 |
+
}
|
97 |
+
|
98 |
+
td.wrapper {
|
99 |
+
width : 100% !important;
|
100 |
+
}
|
101 |
+
|
102 |
+
td.ticket-content {
|
103 |
+
width : 100% !important;
|
104 |
+
}
|
105 |
+
|
106 |
+
td.ticket-image img {
|
107 |
+
max-width : 100% !important;
|
108 |
+
width : 100% !important;
|
109 |
+
height : auto !important;
|
110 |
+
}
|
111 |
+
|
112 |
+
td.ticket-details {
|
113 |
+
width : 33% !important;
|
114 |
+
padding-right : 10px !important;
|
115 |
+
border-top : 1px solid #ddd !important;
|
116 |
+
}
|
117 |
+
|
118 |
+
td.ticket-details h6 {
|
119 |
+
margin-top : 20px !important;
|
120 |
+
}
|
121 |
+
|
122 |
+
td.ticket-details.new-row {
|
123 |
+
width : 50% !important;
|
124 |
+
height : 80px !important;
|
125 |
+
border-top : 0 !important;
|
126 |
+
position : absolute !important;
|
127 |
+
bottom : 0 !important;
|
128 |
+
display : block !important;
|
129 |
+
}
|
130 |
+
|
131 |
+
td.ticket-details.new-left-row {
|
132 |
+
left : 0 !important;
|
133 |
+
}
|
134 |
+
|
135 |
+
td.ticket-details.new-right-row {
|
136 |
+
right : 0 !important;
|
137 |
+
}
|
138 |
+
|
139 |
+
table.ticket-venue {
|
140 |
+
position : relative !important;
|
141 |
+
width : 100% !important;
|
142 |
+
padding-bottom : 150px !important;
|
143 |
+
}
|
144 |
+
|
145 |
+
td.ticket-venue,
|
146 |
+
td.ticket-organizer,
|
147 |
+
td.ticket-qr {
|
148 |
+
width : 100% !important;
|
149 |
+
border-top : 1px solid #ddd !important;
|
150 |
+
}
|
151 |
+
|
152 |
+
td.ticket-venue h6,
|
153 |
+
td.ticket-organizer h6 {
|
154 |
+
margin-top : 20px !important;
|
155 |
+
}
|
156 |
+
|
157 |
+
td.ticket-qr {
|
158 |
+
text-align : left !important
|
159 |
+
}
|
160 |
+
|
161 |
+
td.ticket-qr img {
|
162 |
+
float : none !important;
|
163 |
+
margin-top : 20px !important
|
164 |
+
}
|
165 |
+
|
166 |
+
td.ticket-organizer,
|
167 |
+
td.ticket-qr {
|
168 |
+
position : absolute;
|
169 |
+
display : block;
|
170 |
+
left : 0;
|
171 |
+
bottom : 0;
|
172 |
+
}
|
173 |
+
|
174 |
+
td.ticket-organizer {
|
175 |
+
bottom : 0px;
|
176 |
+
height : 100px !important;
|
177 |
+
}
|
178 |
+
|
179 |
+
td.ticket-venue-child {
|
180 |
+
width : 50% !important;
|
181 |
+
}
|
182 |
+
|
183 |
+
table.venue-details {
|
184 |
+
position : relative !important;
|
185 |
+
width : 100% !important;
|
186 |
+
}
|
187 |
+
|
188 |
+
a[href^="tel"], a[href^="sms"] {
|
189 |
+
text-decoration : none;
|
190 |
+
color : black;
|
191 |
+
pointer-events : none;
|
192 |
+
cursor : default;
|
193 |
+
}
|
194 |
+
|
195 |
+
.mobile_link a[href^="tel"], .mobile_link a[href^="sms"] {
|
196 |
+
text-decoration : default;
|
197 |
+
color : #006caa !important;
|
198 |
+
pointer-events : auto;
|
199 |
+
cursor : default;
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
@media only screen and (max-width: 320px) {
|
204 |
+
td.ticket-venue h6,
|
205 |
+
td.ticket-organizer h6,
|
206 |
+
td.ticket-details h6 {
|
207 |
+
font-size : 12px !important;
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
@media print {
|
212 |
+
.ticket-break {
|
213 |
+
page-break-before : always !important;
|
214 |
+
}
|
215 |
+
}
|
216 |
+
|
217 |
+
<?php do_action( 'tribe_tickets_ticket_email_styles' );?>
|
218 |
+
|
219 |
+
</style>
|
220 |
+
</head>
|
221 |
+
<body yahoo="fix" alink="#006caa" link="#006caa" text="#000000" bgcolor="#ffffff" style="width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0 auto; padding:20px 0 0 0; background:#ffffff; min-height:1000px;">
|
222 |
+
<div style="margin:0; padding:0; width:100% !important; font-family: 'Helvetica Neue', Helvetica, sans-serif; font-size:14px; line-height:145%; text-align:left;">
|
223 |
+
<center>
|
224 |
+
<?php
|
225 |
+
/**
|
226 |
+
* Fires immediately before the main body of content within ticket emails
|
227 |
+
* is rendered.
|
228 |
+
*/
|
229 |
+
do_action( 'tribe_tickets_ticket_email_top' );
|
230 |
+
?>
|
231 |
+
|
232 |
+
<table class="content" align="center" width="620" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" style="margin:0 auto; padding:0;<?php echo $break; ?>;">
|
233 |
+
<tr>
|
234 |
+
<td align="center" valign="top" class="wrapper" width="620">
|
235 |
+
<h2 style="color:#0a0a0e; margin:0 0 10px 0 !important; font-family: 'Helvetica Neue', Helvetica, sans-serif; font-style:normal; font-weight:700; font-size:28px; letter-spacing:normal; line-height: 100%; text-align:left;">
|
236 |
+
<span style="color:#0a0a0e !important">
|
237 |
+
<?php echo esc_html( get_the_title( $event_id ) ); ?>
|
238 |
+
</span>
|
239 |
+
</h2>
|
240 |
+
|
241 |
+
<?php if ( ! empty( $start_date ) ): ?>
|
242 |
+
<h4 style="color:#0a0a0e; margin:0 !important; font-family: 'Helvetica Neue', Helvetica, sans-serif; font-style:normal; font-weight:700; font-size:15px; letter-spacing:normal; line-height: 100%; text-align:left;">
|
243 |
+
<span style="color:#0a0a0e !important"><?php echo $start_date; ?></span>
|
244 |
+
</h4>
|
245 |
+
<?php endif; ?>
|
246 |
+
|
247 |
+
<p style="text-align:left;">
|
248 |
+
<?php _e( 'Thank you for confirming that you will not be attending the above event.', 'event-tickets' ); ?>
|
249 |
+
</p>
|
250 |
+
|
251 |
+
<p>
|
252 |
+
<a href="<?php echo esc_url( get_permalink( $event_id ) ); ?>"><?php echo esc_html( get_the_title( $event_id ) ); ?></a>
|
253 |
+
<a href="<?php echo esc_url( get_home_url() ); ?>"><?php echo esc_html( get_bloginfo( 'name' ) ); ?></a>
|
254 |
+
</p>
|
255 |
+
</td>
|
256 |
+
</tr>
|
257 |
+
</table>
|
258 |
+
|
259 |
+
<?php
|
260 |
+
/**
|
261 |
+
* Fires immediately after the main body of content within ticket emails
|
262 |
+
* is rendered.
|
263 |
+
*/
|
264 |
+
do_action( 'tribe_tickets_ticket_email_bottom' );
|
265 |
+
?>
|
266 |
+
|
267 |
+
</center>
|
268 |
+
</div>
|
269 |
+
</body>
|
270 |
+
</html>
|
src/views/tickets/orders-rsvp.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/orders-rsvp.php
|
6 |
*
|
7 |
* @package TribeEventsCalendar
|
8 |
-
* @version 4.2
|
9 |
*
|
10 |
*/
|
11 |
|
@@ -68,6 +68,7 @@ $attendee_groups = $view->get_event_rsvp_attendees_by_purchaser( $post_id, $user
|
|
68 |
<?php esc_html_e( 'RSVP: ', 'event-tickets' ); ?>
|
69 |
<?php $view->render_rsvp_selector( "attendee[{$key}][order_status]", $attendee['order_status'], $post_id, $attendee['product_id'] ); ?>
|
70 |
</label>
|
|
|
71 |
</div>
|
72 |
<?php
|
73 |
/**
|
5 |
* Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/orders-rsvp.php
|
6 |
*
|
7 |
* @package TribeEventsCalendar
|
8 |
+
* @version 4.2.2
|
9 |
*
|
10 |
*/
|
11 |
|
68 |
<?php esc_html_e( 'RSVP: ', 'event-tickets' ); ?>
|
69 |
<?php $view->render_rsvp_selector( "attendee[{$key}][order_status]", $attendee['order_status'], $post_id, $attendee['product_id'] ); ?>
|
70 |
</label>
|
71 |
+
<div class="ticket-type"><span class="type-label"><?php esc_html_e( 'Type: ', 'event-tickets' );?></span><?php esc_html_e( $attendee['ticket'] );?></div>
|
72 |
</div>
|
73 |
<?php
|
74 |
/**
|