Skip to content

Commit

Permalink
add new step to accomodate sponsorship agreement pre-filling data bas…
Browse files Browse the repository at this point in the history
…ed on sponsor posts on site
  • Loading branch information
timiwahalahti committed Sep 20, 2023
1 parent d480a70 commit 2f52e88
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,20 +86,36 @@ public static function form_handler() {

// Check selected template on any step.
$templates = self::get_templates();
$template = sanitize_text_field( $_POST['wcdocs_template'] );
if ( ! array_key_exists( $template, $templates ) )
$template_selected = sanitize_text_field( $_POST['wcdocs_template'] );
if ( ! array_key_exists( $template_selected, $templates ) )
return self::error( __( 'Selected template does not exist', 'wordcamporg' ) );

$template = $templates[ $template ];
$template = $templates[ $template_selected ];

switch ( $step ) {
case 1: // submitted step 1

// Nothing else to check on this step.
self::$step = 2;
if ( 'sponsorship-agreement' == $template_selected ) {
self::$step = 10;
} else {
// Nothing else to check on this step.
self::$step = 20;
}

break;

case 10; // submitted step 10
// Sanitize input
$data = $template->sanitize( $_POST );

if ( 'sponsorship-agreement' == $template_selected ) {
if ( 'wcb_sponsor' === get_post_type( $data['sponsor_id'] ) ) {
self::$step = 20;
}
}
break;

case 2: // submitted step 2
case 20: // submitted step 20

require_once( WORDCAMP_DOCS__PLUGIN_DIR . 'classes/class-wordcamp-docs-pdf-generator.php' );
$generator = new WordCamp_Docs_PDF_Generator;
Expand Down Expand Up @@ -166,12 +182,29 @@ public static function render_menu_page() {
</p>
</form>

<?php elseif ( self::$step == 2 ) : ?>
<?php elseif ( self::$step == 10 ) : ?>

<form method="POST">
<input type="hidden" name="wcdocs_submit" value="10" />
<input type="hidden" name="wcdocs_template" value="<?php echo esc_attr( $_POST['wcdocs_template'] ); ?>">
<?php wp_nonce_field( 'wcdocs_step_10' ); ?>

<?php
$template = self::get_template( $_POST['wcdocs_template'] );
$template->form_prefill_select( $_POST );
?>

<p class="submit">
<input type="submit" class="button-primary" value="Next &rarr;">
</p>
</form>

<?php elseif ( self::$step == 20 ) : ?>

<form method="POST">
<input type="hidden" name="wcdocs_submit" value="2" />
<input type="hidden" name="wcdocs_submit" value="20" />
<input type="hidden" name="wcdocs_template" value="<?php echo esc_attr( $_POST['wcdocs_template'] ); ?>">
<?php wp_nonce_field( 'wcdocs_step_2' ); ?>
<?php wp_nonce_field( 'wcdocs_step_20' ); ?>

<?php
$template = self::get_template( $_POST['wcdocs_template'] );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,80 @@
* Sponsorship Agreement Template
*/
class WordCamp_Docs_Template_Sponsorship_Agreement implements WordCamp_Docs_Template {
public function form_prefill_select( $data ) {
$sponsors = get_posts( array(
'post_type' => 'wcb_sponsor',
'post_status' => 'publish',
'posts_per_page' => 500,
) );
?>
<style>
.wcorg-sponsorship-agreement-form label {
display: block;
clear: both;
margin-top: 12px;
}

.wcorg-sponsorship-agreement-form input,
.wcorg-sponsorship-agreement-form textarea,
.wcorg-sponsorship-agreement-form select {
width: 360px;
}

.wcorg-sponsorship-agreement-form textarea {
height: 120px;
}

.wcorg-sponsorship-agreement-form .description {
display: block;
clear: both;
}
</style>

<div class="wcorg-sponsorship-agreement-form">
<label><?php _e( 'Sponsor:', 'wordcamporg' ); ?></label>
<select name="sponsor_id">
<?php foreach ( $sponsors as $sponsor ) : ?>
<option value="<?php echo esc_attr( $sponsor->ID ) ?>"><?php echo esc_html( get_the_title( $sponsor ) ) ?></option>
<?php endforeach; ?>
</select>
<span class="description"><?php _e( 'Sponsorship details will be pre-filled with the data on sponsor post.', 'wordcamporg' ); ?></span>

<label><?php _e( 'Sponsorship Benefits:', 'wordcamporg' ); ?></label>
<textarea name="sponsorship_benefits"><?php echo esc_textarea( $data['sponsorship_benefits'] ); ?></textarea>
<span class="description"><?php _e( 'Use multiple lines.', 'wordcamporg' ); ?></span>
</div>

<?php
}

public function form( $data ) {
$data = wp_parse_args( $data, array(
'sponsor_name' => '',
'sponsor_rep_name' => '',
'sponsor_rep_title' => '',
$date_format = get_option( 'date_format' );

'agreement_date' => '',
'wordcamp_location' => '',
'wordcamp_date' => '',
$sponsor_id = absint( $data['sponsor_id'] );
$sponsor_amount = get_post_meta( $sponsor_id, '_wcb_sponsor_amount', true );
$sponsor_currency = get_post_meta( $sponsor_id, '_wcb_sponsor_currency', true );

'sponsorship_amount' => '',
'sponsorship_amount_num' => '',
'sponsorship_benefits' => '',
$wordcamp = get_wordcamp_post();
$start_date = ! empty( $wordcamp->meta['Start Date (YYYY-mm-dd)'][0] ) ? date( $date_format, $wordcamp->meta['Start Date (YYYY-mm-dd)'][0] ) : '';
$end_date = ! empty( $wordcamp->meta['End Date (YYYY-mm-dd)'][0] ) ? date( $date_format, $wordcamp->meta['End Date (YYYY-mm-dd)'][0] ) : $start_date;

$number_formatter = new NumberFormatter( get_locale(), NumberFormatter::SPELLOUT );
$sponsorship_amount = $number_formatter->format( $sponsor_amount ) . " {$sponsor_currency}";

$number_formatter = new NumberFormatter( get_locale(), NumberFormatter::CURRENCY );
$sponsorship_amount_num = $number_formatter->formatCurrency( $sponsor_amount, $sponsor_currency );

$data = wp_parse_args( $data, array(
'sponsor_name' => get_the_title( $sponsor_id ),
'sponsor_rep_name' => get_post_meta( $sponsor_id, '_wcpt_sponsor_first_name', true ) . ' ' . get_post_meta( $sponsor_id, '_wcpt_sponsor_last_name', true ),
'sponsor_rep_title' => '',
'agreement_date' => wp_date( $date_format ),
'wordcamp_location' => $wordcamp->meta['Location'][0],
'wordcamp_date' => ( $start_date !== $end_date ) ? "{$start_date} - {$end_date}" : $start_date,
'sponsorship_amount' => $sponsorship_amount,
'sponsorship_amount_num' => $sponsorship_amount_num,
'sponsorship_benefits' => '',
) );
?>
<style>
Expand All @@ -28,7 +89,7 @@ public function form( $data ) {
.wcorg-sponsorship-agreement-form input,
.wcorg-sponsorship-agreement-form textarea,
.wcorg-sponsorship-agreement-form select {
width: 240px;
width: 360px;
}

.wcorg-sponsorship-agreement-form textarea {
Expand Down Expand Up @@ -262,6 +323,7 @@ public function render( $data ) {
public function sanitize( $input ) {
$output = array();
foreach ( array(
'sponsor_id',
'sponsor_name',
'sponsor_rep_name',
'sponsor_rep_title',
Expand Down

0 comments on commit 2f52e88

Please sign in to comment.