예제 #1
0
/**
 * Output the redemption code for this achievement.
 *
 * @param int $achievement_id Optional. Achievement ID
 * @since Achievements (3.1)
 */
function dpa_achievement_redemption_code($achievement_id = 0)
{
    echo esc_html(dpa_get_achievement_redemption_code($achievement_id));
}
예제 #2
0
/**
 * Achievements metabox
 *
 * Contains fields to set the karma points, pick between action/event, and the list of events.
 *
 * @param WP_Post $post The post being added or edited
 * @since Achievements (3.0)
 */
function dpa_achievement_metabox(WP_Post $post)
{
    // Get all events grouped by the extension which provided them
    $events = dpa_get_all_events_details();
    // Get existing values (if this is an edit)
    $existing_points = dpa_get_achievement_points($post->ID);
    $existing_target = dpa_get_achievement_target($post->ID);
    $existing_events = wp_get_post_terms($post->ID, dpa_get_event_tax_id(), array('fields' => 'ids'));
    $existing_type = empty($existing_events) && !empty($_GET['action']) && 'edit' === $_GET['action'] ? 'award' : 'event';
    $existing_code = dpa_get_achievement_redemption_code($post->ID);
    // Ensure sane defaults
    if (empty($existing_points)) {
        $existing_points = 0;
    }
    if (empty($existing_target)) {
        $existing_target = 1;
    }
    ?>

	<div class="misc-pub-section dpa-karma">
		<label for="dpa-points"><?php 
    _e('Karma points:', 'achievements');
    ?>
</label>
		<input type="number" name="dpa_points" id="dpa-points" value="<?php 
    echo esc_attr($existing_points);
    ?>
" />
	</div>

	<div class="misc-pub-section dpa-type">
		<label for="dpa_type"><?php 
    _ex('Type:', 'type of achievement', 'achievements');
    ?>
</label>
		<input type="radio" name="dpa_type" id="dpa-type-award" value="award" <?php 
    checked($existing_type, 'award');
    ?>
><?php 
    _ex('&nbsp;Award', 'type of achievement', 'achievements');
    ?>
</input>
		<input type="radio" name="dpa_type" id="dpa-type-event" value="event" <?php 
    checked($existing_type, 'event');
    ?>
><?php 
    _ex('&nbsp;Event', 'type of achievement', 'achievements');
    ?>
</input>

		<p class="hint"><?php 
    _e("An <em>award</em> is given by a site admin, whereas an <em>event</em> is unlocked automatically when its criteria have been met.", 'achievements');
    ?>
</p>

		<select id="dpa-event" name="dpa_event[]" style="visibility: hidden" data-placeholder="<?php 
    esc_attr_e('Press here to pick events', 'achievements');
    ?>
" class="chzn-select <?php 
    if (is_rtl()) {
        echo 'chzn-rtl';
    }
    ?>
" multiple="multiple">
			<option value=""></option>

			<?php 
    foreach ($events as $extension => $extension_events) {
        ?>
				<optgroup label="<?php 
        echo esc_attr($extension);
        ?>
">

				<?php 
        foreach ($extension_events as $event) {
            ?>
					<option value="<?php 
            echo esc_attr($event['id']);
            ?>
" <?php 
            selected(in_array($event['id'], $existing_events), true);
            ?>
><?php 
            echo esc_html($event['description']);
            ?>
</option>
				<?php 
        }
        ?>

				</optgroup>
			<?php 
    }
    ?>

		</select>
	</div>

	<div class="misc-pub-section dpa-target">
		<label for="dpa_target"><?php 
    _ex('Events repeat:', "Number of times an achievement&#8217;s events need to repeat before the achievement is awarded", 'achievements');
    ?>
</label>
		<input type="number" name="dpa_target" id="dpa-target" min="1" value="<?php 
    echo esc_attr($existing_target);
    ?>
" />

		<p class="hint"><?php 
    _e("Number of times the events need to repeat before the achievement is awarded.", 'achievements');
    ?>
</p>
	</div>

	<div class="misc-pub-section dpa-redemption-code">
		<label for="dpa-code"><?php 
    _e('Redemption code:', 'achievements');
    ?>
</label>
		<input id="dpa-code" value="<?php 
    echo esc_attr($existing_code);
    ?>
" name="dpa_code" type="text" />

		<p class="hint"><?php 
    _e("Users can enter this code into the Redemption widget to unlock the achievement.", 'achievements');
    ?>
</p>
	</div>

	<?php 
    wp_nonce_field('dpa_achievement_metabox_save', 'dpa_achievement_metabox');
    do_action('dpa_achievement_metabox');
}