AP_Question_Meta_Box()
Description #
Meta box class.
Registers meta box for admin post edit screen.
Source #
File: admin/meta-box.php
class AP_Question_Meta_Box {
/**
* Initialize the class.
*/
public function __construct() {
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
}
/**
* Hook meta boxes in post edit screen.
*
* @param string $post_type Post type.
*/
public function add_meta_box( $post_type ) {
if ( 'question' === $post_type ) {
add_meta_box(
'ap_answers_meta_box',
// translators: %d is answers count of a question.
sprintf( __( ' %d Answers', 'anspress-question-answer' ), ap_get_answers_count() ),
array( $this, 'answers_meta_box_content' ),
$post_type,
'normal',
'high'
);
}
if ( 'question' === $post_type || 'answer' === $post_type ) {
add_meta_box( 'ap_question_meta_box', __( 'Question', 'anspress-question-answer' ), array( $this, 'question_meta_box_content' ), $post_type, 'side', 'high' );
}
}
/**
* Render Meta Box content.
*/
public function answers_meta_box_content() {
?>
<div id="answers-list" data-questionid="<?php the_ID(); ?>">
</div>
<br />
<a href="<?php echo esc_url( admin_url( 'post-new.php?post_type=answer&post_parent=' . get_the_ID() ) ); ?>" class="button add-answer"><?php esc_html_e( 'Add an answer', 'anspress-question-answer' ); ?></a>
<script type="text/html" id="ap-answer-template">
<div class="author">
<a href="#" class="ap-ansm-avatar">{{{avatar}}}</a>
<strong class="ap-ansm-name">{{author}}</strong>
</div>
<div class="ap-ansm-inner">
<div class="ap-ansm-meta">
<span class="post-status">{{status}}</span>
{{{activity}}}
</div>
<div class="ap-ansm-content">{{{content}}}</div>
<div class="answer-actions">
<span><a href="{{{editLink}}}"><?php esc_attr_e( 'Edit', 'anspress-question-answer' ); ?></a></span>
<span class="delete vim-d vim-destructive"> | <a href="{{{trashLink}}}"><?php esc_attr_e( 'Trash', 'anspress-question-answer' ); ?></a></span>
</div>
</div>
</script>
<?php
}
/**
* Question meta box.
*
* @param object|integer|null $_post Post.
*/
public function question_meta_box_content( $_post ) {
$ans_count = ap_get_answers_count( $_post->ID );
$vote_count = ap_get_votes_net( $_post );
?>
<ul class="ap-meta-list">
<?php if ( 'answer' !== $_post->post_type ) : ?>
<li>
<i class="apicon-answer"></i>
<?php
echo wp_kses_post(
sprintf(
// translators: %d is answers count of a question.
_n( '<strong>%d</strong> Answer', '<strong>%d</strong> Answers', $ans_count, 'anspress-question-answer' ),
$ans_count
)
);
?>
<a href="<?php echo esc_url( admin_url( 'post-new.php?post_type=answer&post_parent=' . get_the_ID() ) ); ?>" class="add-answer"><?php esc_attr_e( 'Add an answer', 'anspress-question-answer' ); ?></a>
</li>
<?php endif; ?>
<li>
<?php $nonce = wp_create_nonce( 'admin_vote' ); ?>
<i class="apicon-thumb-up"></i>
<?php
echo wp_kses_post(
// translators: %d is answers count of a question.
sprintf( _n( '<strong>%d</strong> Vote', '<strong>%d</strong> Votes', $vote_count, 'anspress-question-answer' ), $vote_count )
);
?>
<a id="ap-vote-down" href="#" class="vote button button-small ap-ajax-btn" data-query="ap_admin_vote::<?php echo esc_attr( $nonce ); ?>::<?php echo esc_attr( $_post->ID ); ?>::down" data-cb="replaceText">
<?php esc_html_e( '-', 'anspress-question-answer' ); ?>
</a>
<a id="ap-vote-up" href="#" class="vote button button-small ap-ajax-btn" data-query="ap_admin_vote::<?php echo esc_attr( $nonce ); ?>::<?php echo esc_attr( $_post->ID ); ?>::up" data-cb="replaceText">
<?php esc_attr_e( '+', 'anspress-question-answer' ); ?>
</a>
</li>
<li><?php $this->flag_meta_box( $_post ); ?> </li>
</ul>
<?php
}
/**
* Show flags and clear flag button in post edit screen.
*
* @param object $post Post.
*/
public function flag_meta_box( $post ) {
$args = array(
'action' => 'ap_ajax',
'ap_ajax_action' => 'ap_clear_flag',
'__nonce' => wp_create_nonce( 'clear_flag_' . $post->ID ),
'post_id' => $post->ID,
);
?>
<i class="apicon-flag"></i>
<strong class="ap-question-flag-count"><?php ap_post_field( 'flags', $post ); ?></strong> <?php esc_attr_e( 'Flag', 'anspress-question-answer' ); ?>
<a id="ap-clear-flag" href="#" data-query="<?php echo esc_js( wp_json_encode( $args ) ); ?>" class="flag-clear" data-cb="afterFlagClear"><?php esc_attr_e( 'Clear flag', 'anspress-question-answer' ); ?></a>
<script type="text/javascript">
jQuery(document).ready(function($){
$('#ap-clear-flag').on( 'click', function(e){
e.preventDefault();
var self = this;
var q = JSON.parse($(self).attr('data-query'));
$.ajax({
url: ajaxurl,
data: q,
type: 'POST',
success: function(data){
$('.ap-question-flag-count').text('0');
$('.column-flag .flag-count').removeClass('flagged');
$(self).remove();
}
});
})
});
</script>
<?php
}
}
Expand full source code Collapse full source code View on GitHub: admin/meta-box.php:22
Add your comment