first commit
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
// Silence is golden.
|
||||
@@ -0,0 +1,52 @@
|
||||
=== Absolute Reviews ===
|
||||
Tags: reviews, rating, review, schema.org
|
||||
Requires at least: 4.0
|
||||
Tested up to: 6.0
|
||||
Requires PHP: 5.4
|
||||
Stable tag: 1.1.1
|
||||
Contributors: codesupplyco
|
||||
License: GPLv2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
== Description ==
|
||||
|
||||
Add beautiful responsive and modern review boxes with valid JSON-LD schema to your posts with the “Advanced Reviews” plugin.
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.1.1 =
|
||||
* Added schema attributes to Review Block
|
||||
|
||||
= 1.1.0 =
|
||||
* Added compatibility with WordPress 5.9
|
||||
|
||||
= 1.0.9 =
|
||||
* Improved plugin security.
|
||||
|
||||
= 1.0.8 =
|
||||
* Improved the display of the panel in the admin
|
||||
|
||||
= 1.0.7 =
|
||||
* Compatibility fixes for WordPress 5.5
|
||||
|
||||
= 1.0.6 =
|
||||
* Improved google scheme.
|
||||
* Improved posts location.
|
||||
|
||||
= 1.0.5 =
|
||||
* Added support Post Views Counter.
|
||||
|
||||
= 1.0.4 =
|
||||
* Minor improvements.
|
||||
|
||||
= 1.0.3 =
|
||||
* Added css variables to styles.
|
||||
|
||||
= 1.0.2 =
|
||||
* Improve indicators.
|
||||
|
||||
= 1.0.1 =
|
||||
* Initial release.
|
||||
|
||||
= 1.0 =
|
||||
* Initial release.
|
||||
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Absolute Reviews
|
||||
* Description: Add beautiful responsive and modern review boxes with valid JSON-LD schema to your posts with the "Advanced Reviews" plugin.
|
||||
* Version: 1.1.1
|
||||
* Author: Code Supply Co.
|
||||
* Author URI: https://codesupply.co
|
||||
* License: GPL-2.0+
|
||||
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
||||
* Text Domain: absolute-reviews
|
||||
* Domain Path: /languages
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @package ABR
|
||||
*/
|
||||
|
||||
// If this file is called directly, abort.
|
||||
if ( ! defined( 'WPINC' ) ) {
|
||||
die;
|
||||
}
|
||||
|
||||
/**
|
||||
* Variables
|
||||
*/
|
||||
define( 'ABR_URL', plugin_dir_url( __FILE__ ) );
|
||||
define( 'ABR_PATH', plugin_dir_path( __FILE__ ) );
|
||||
|
||||
/**
|
||||
* Plugin Activation.
|
||||
*/
|
||||
function abr_activation() {
|
||||
do_action( 'abr_activation' );
|
||||
}
|
||||
register_activation_hook( __FILE__, 'abr_activation' );
|
||||
|
||||
/**
|
||||
* Plugin Deactivation.
|
||||
*/
|
||||
function abr_deactivation() {
|
||||
do_action( 'abr_deactivation' );
|
||||
}
|
||||
register_deactivation_hook( __FILE__, 'abr_deactivation' );
|
||||
|
||||
/**
|
||||
* The core plugin class that is used to define internationalization,
|
||||
* admin-specific hooks, and public-facing site hooks.
|
||||
*/
|
||||
require plugin_dir_path( __FILE__ ) . 'includes/class-absolute-reviews.php';
|
||||
|
||||
/**
|
||||
* Begins execution of the plugin.
|
||||
*
|
||||
* Since everything within the plugin is registered via hooks,
|
||||
* then kicking off the plugin from this point in the file does
|
||||
* not affect the page life cycle.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function abr_init() {
|
||||
|
||||
$plugin = new ABR();
|
||||
$plugin->run();
|
||||
|
||||
}
|
||||
abr_init();
|
||||
@@ -0,0 +1,922 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The admin-specific functionality of the plugin.
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/admin
|
||||
*/
|
||||
|
||||
/**
|
||||
* The admin-specific functionality of the plugin.
|
||||
*
|
||||
* Defines the plugin name, version, and two examples hooks for how to
|
||||
* enqueue the admin-specific stylesheet and JavaScript.
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/admin
|
||||
*/
|
||||
class ABR_Admin {
|
||||
|
||||
/**
|
||||
* The ID of this plugin.
|
||||
|
||||
* @access private
|
||||
* @var string $abr The ID of this plugin.
|
||||
*/
|
||||
private $abr;
|
||||
|
||||
/**
|
||||
* The version of this plugin.
|
||||
|
||||
* @access private
|
||||
* @var string $version The current version of this plugin.
|
||||
*/
|
||||
private $version;
|
||||
|
||||
/**
|
||||
* Initialize the class and set its properties.
|
||||
*
|
||||
* @param string $abr The name of this plugin.
|
||||
* @param string $version The version of this plugin.
|
||||
*/
|
||||
public function __construct( $abr, $version ) {
|
||||
$this->abr = $abr;
|
||||
$this->version = $version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register admin page
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function register_options_page() {
|
||||
add_options_page( esc_html__( 'Reviews', 'absolute-reviews' ), esc_html__( 'Reviews', 'absolute-reviews' ), 'manage_options', 'absolute-reviews', array( $this, 'build_options_page' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Build admin page
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function build_options_page() {
|
||||
|
||||
if ( ! current_user_can( 'manage_options' ) ) {
|
||||
wp_die( esc_html__( 'You do not have sufficient rights to view this page.', 'absolute-reviews' ) );
|
||||
}
|
||||
|
||||
$indicators = abr_default_indicators();
|
||||
|
||||
$this->save_options_page();
|
||||
?>
|
||||
|
||||
<div class="wrap abr-wrap">
|
||||
<h2><?php esc_html_e( 'Reviews Settings', 'absolute-reviews' ); ?></h2>
|
||||
|
||||
<div class="abr-settings">
|
||||
<form method="post">
|
||||
<h3><?php esc_html_e( 'Indicators of the progress bar', 'absolute-reviews' ); ?></h3>
|
||||
<table class="form-table">
|
||||
<tbody>
|
||||
<?php
|
||||
for ( $index = 1; $index <= 10; $index++ ) {
|
||||
?>
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<label for="abr_review_indicator_label_<?php echo esc_attr( $index ); ?>"><?php esc_html_e( 'Indicator', 'absolute-reviews' ); ?> <?php echo esc_attr( $index ); ?></label>
|
||||
<p class="description"><?php esc_html_e( 'Default:', 'absolute-reviews' ); ?> <?php echo esc_html( $indicators[ $index ]['name'] ); ?></p>
|
||||
</th>
|
||||
<td>
|
||||
<input class="regular-text" id="abr_review_indicator_label_<?php echo esc_attr( $index ); ?>" placeholder="<?php esc_html_e( 'Label', 'absolute-reviews' ); ?>" name="abr_review_indicator_label_<?php echo esc_attr( $index ); ?>" type="text" value="<?php echo esc_attr( get_option( "abr_review_indicator_label_{$index}", $indicators[ $index ]['name'] ) ); ?>"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<label for="abr_review_disable_indicators"><?php esc_html_e( 'Disable all indicators on the front end', 'absolute-reviews' ); ?></label>
|
||||
</th>
|
||||
<td>
|
||||
<input class="regular-text" id="abr_review_disable_indicators" name="abr_review_disable_indicators[]" type="checkbox" value="true" <?php checked( (bool) get_option( 'abr_review_disable_indicators', false ) ); ?>>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3><?php esc_html_e( 'Supported Post Types', 'absolute-reviews' ); ?></h3>
|
||||
|
||||
<table class="form-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<label for="abr_review_post_types"><?php esc_html_e( 'Enable reviews for the following post types', 'absolute-reviews' ); ?></label>
|
||||
</th>
|
||||
<td>
|
||||
<?php
|
||||
$post_types = get_post_types(
|
||||
array(
|
||||
'publicly_queryable' => 1,
|
||||
'_builtin' => false,
|
||||
)
|
||||
);
|
||||
|
||||
unset( $post_types['attachment'] );
|
||||
|
||||
// Merge post types.
|
||||
$post_types = array_merge( abr_default_post_types(), $post_types );
|
||||
|
||||
// Get types of option.
|
||||
$option_types = get_option( 'abr_review_post_types', abr_default_post_types() );
|
||||
|
||||
foreach ( $post_types as $post_type ) {
|
||||
?>
|
||||
<p>
|
||||
<label><input class="regular-text" id="abr_review_post_types" name="abr_review_post_types[]" type="checkbox" value="<?php echo esc_attr( $post_type ); ?>" <?php echo in_array( $post_type, $option_types, true ) ? 'checked' : ''; ?>> <?php echo esc_html( $post_type ); ?></label>
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<?php wp_nonce_field(); ?>
|
||||
|
||||
<p class="submit"><input class="button button-primary" name="save_settings" type="submit" value="<?php esc_html_e( 'Save changes', 'absolute-reviews' ); ?>" /></p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Settings save
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected function save_options_page() {
|
||||
if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'] ) ) { // Input var ok; sanitization ok.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isset( $_POST['save_settings'] ) ) { // Input var ok.
|
||||
for ( $index = 1; $index <= 10; $index++ ) {
|
||||
if ( isset( $_POST[ 'abr_review_indicator_label_' . $index ] ) ) { // Input var ok.
|
||||
update_option( "abr_review_indicator_label_{$index}", sanitize_text_field( wp_unslash( $_POST[ 'abr_review_indicator_label_' . $index ] ) ) ); // Input var ok.
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_post_types'] ) ) { // Input var ok; sanitization ok.
|
||||
|
||||
$post_types = is_array( $_POST['abr_review_post_types'] ) ? $_POST['abr_review_post_types'] : array(); // Input var ok; sanitization ok.
|
||||
|
||||
update_option( 'abr_review_post_types', array_map( 'sanitize_text_field', $post_types ) );
|
||||
} else {
|
||||
update_option( 'abr_review_post_types', array() );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_disable_indicators'] ) ) { // Input var ok.
|
||||
update_option( 'abr_review_disable_indicators', true );
|
||||
} else {
|
||||
update_option( 'abr_review_disable_indicators', false );
|
||||
}
|
||||
|
||||
printf( '<div id="message" class="updated fade"><p><strong>%s</strong></p></div>', esc_html__( 'Settings saved.', 'absolute-reviews' ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Addd new Meta Box for Review.
|
||||
*/
|
||||
public function metabox_review_register() {
|
||||
// Get types of option.
|
||||
$option_types = get_option( 'abr_review_post_types', abr_default_post_types() );
|
||||
|
||||
if ( $option_types ) {
|
||||
add_meta_box( 'abr_review_metabox', esc_html__( 'Review Options', 'absolute-reviews' ), array( $this, 'metabox_review_callback' ), $option_types, 'normal', 'high', null );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for Review Meta Box.
|
||||
*
|
||||
* @param object $post Object of post.
|
||||
*/
|
||||
public function metabox_review_callback( $post ) {
|
||||
|
||||
$review_settings = abr_get_post_metadata( $post->ID, '_abr_review_settings', true );
|
||||
$review_heading = abr_get_post_metadata( $post->ID, '_abr_review_heading', true );
|
||||
$review_desc = abr_get_post_metadata( $post->ID, '_abr_review_desc', true );
|
||||
$review_legend = abr_get_post_metadata( $post->ID, '_abr_review_legend', true );
|
||||
$review_type = abr_get_post_metadata( $post->ID, '_abr_review_type', true, 'percentage' );
|
||||
$review_items = abr_get_post_metadata( $post->ID, '_abr_review_items', true, array() );
|
||||
$review_main_scale = abr_get_post_metadata( $post->ID, '_abr_review_main_scale', true, true );
|
||||
$review_auto_score = abr_get_post_metadata( $post->ID, '_abr_review_auto_score', true, true );
|
||||
$review_total_score = abr_get_post_metadata( $post->ID, '_abr_review_total_score', true );
|
||||
$review_pros_heading = abr_get_post_metadata( $post->ID, '_abr_review_pros_heading', true );
|
||||
$review_pros_items = abr_get_post_metadata( $post->ID, '_abr_review_pros_items', true, array() );
|
||||
$review_cons_heading = abr_get_post_metadata( $post->ID, '_abr_review_cons_heading', true );
|
||||
$review_cons_items = abr_get_post_metadata( $post->ID, '_abr_review_cons_items', true, array() );
|
||||
$review_schema_heading = abr_get_post_metadata( $post->ID, '_abr_review_schema_heading', true );
|
||||
$review_schema_desc = abr_get_post_metadata( $post->ID, '_abr_review_schema_desc', true );
|
||||
$review_schema_author = abr_get_post_metadata( $post->ID, '_abr_review_schema_author', true );
|
||||
$review_schema_author_custom = abr_get_post_metadata( $post->ID, '_abr_review_schema_author_custom', true );
|
||||
?>
|
||||
<div class="abr-metabox-wrap review-wrap">
|
||||
<input type="hidden" name="abr_review_action" value="1">
|
||||
|
||||
<?php wp_nonce_field( 'abr_review_meta_nonce', 'abr_review_meta_nonce' ); ?>
|
||||
|
||||
<div class="abr-metabox-switcher">
|
||||
<input class="abr-metabox-checkbox" type="checkbox" name="abr_review_settings" value="1" <?php checked( $review_settings ); ?>>
|
||||
|
||||
<div class="abr-metabox-switch">
|
||||
<span class="abr-metabox-switch-on"></span>
|
||||
<span class="abr-metabox-switch-off"></span>
|
||||
<span class="abr-metabox-switch-slider"></span>
|
||||
</div>
|
||||
|
||||
<?php esc_html_e( 'Enable Review', 'absolute-reviews' ); ?>
|
||||
</div>
|
||||
|
||||
<div class="abr-metabox-tabs" <?php checked( $review_settings ); ?>>
|
||||
<ul class="abr-metabox-tabs-navigation">
|
||||
<li><a href="#review-tab-general"><?php esc_html_e( 'General', 'absolute-reviews' ); ?></a></li>
|
||||
<li><a href="#review-tab-criteria"><?php esc_html_e( 'Criteria', 'absolute-reviews' ); ?></a></li>
|
||||
<li><a href="#review-tab-pros-cons"><?php esc_html_e( 'Pros / Cons', 'absolute-reviews' ); ?></a></li>
|
||||
<li><a href="#review-tab-scheme"><?php esc_html_e( 'Schema Attributes', 'absolute-reviews' ); ?></a></li>
|
||||
</ul>
|
||||
<div class="abr-metabox-tabs-content">
|
||||
<div id="review-tab-general">
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_heading"><?php esc_html_e( 'Heading', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<input type="text" id="abr_review_heading" name="abr_review_heading" value="<?php echo esc_attr( $review_heading ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_desc"><?php esc_html_e( 'Description', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<textarea id="abr_review_desc" name="abr_review_desc" rows="6"><?php echo esc_html( $review_desc ); ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_legend"><?php esc_html_e( 'Legend', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<textarea id="abr_review_legend" name="abr_review_legend" rows="3"><?php echo wp_kses_post( $review_legend ); ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_type"><?php esc_html_e( 'Type', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<select id="abr_review_type" name="abr_review_type">
|
||||
<option value="percentage" <?php selected( $review_type, 'percentage' ); ?>><?php esc_html_e( 'Percentage (1-100%)', 'absolute-reviews' ); ?></option>
|
||||
<option value="point-5" <?php selected( $review_type, 'point-5' ); ?>><?php esc_html_e( 'Points (1-5)', 'absolute-reviews' ); ?></option>
|
||||
<option value="point-10" <?php selected( $review_type, 'point-10' ); ?>><?php esc_html_e( 'Points (1-10)', 'absolute-reviews' ); ?></option>
|
||||
<option value="star" <?php selected( $review_type, 'star' ); ?>><?php esc_html_e( 'Stars (1-5)', 'absolute-reviews' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_main_scale"><?php esc_html_e( 'Main Scale', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<label><input type="checkbox" id="abr_review_main_scale" name="abr_review_main_scale" value="1" <?php checked( $review_main_scale ); ?>></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field review-field-auto-score">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_auto_score"><?php esc_html_e( 'Auto Сalculate Total Score', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<label><input type="checkbox" id="abr_review_auto_score" name="abr_review_auto_score" value="1" <?php checked( $review_auto_score ); ?>></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field review-field-total-score" <?php checked( $review_auto_score ); ?>>
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_total_score"><?php esc_html_e( 'Total Score', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<input type="text" id="abr_review_total_score" name="abr_review_total_score" value="<?php echo esc_attr( $review_total_score ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="review-tab-criteria">
|
||||
<div class="abr-metabox-repeater">
|
||||
<table class="abr-metabox-repeater-table">
|
||||
<tbody>
|
||||
<tr class="row hidden">
|
||||
<td>
|
||||
<div class="row-content">
|
||||
<div class="row-topbar">
|
||||
<a href="#" class="btn-remove-row delete"><?php esc_html_e( 'Remove', 'absolute-reviews' ); ?></a>
|
||||
<div class="handlediv" title="<?php esc_html_e( 'Click to toggle', 'absolute-reviews' ); ?>"></div>
|
||||
<strong class="signature"><span><?php echo esc_html__( 'Criterion', 'absolute-reviews' ); ?></span></strong>
|
||||
</div>
|
||||
|
||||
<div class="row-fields">
|
||||
<div class="row-body review-field-grid">
|
||||
<p class="review-field-criterion-name">
|
||||
<label><?php esc_html_e( 'Name', 'absolute-reviews' ); ?>:<br>
|
||||
<input disabled type="text" class="attribute-name" name="abr_review_items[name][]" placeholder="<?php esc_html_e( 'Name', 'absolute-reviews' ); ?>" data-label="<?php esc_html_e( 'Criterion', 'absolute-reviews' ); ?>"></label>
|
||||
</p>
|
||||
|
||||
<p class="review-field-criterion-number">
|
||||
<label><?php esc_html_e( 'Value', 'absolute-reviews' ); ?>:<br>
|
||||
<input disabled type="number" name="abr_review_items[val][]" min="0" step="1"></label>
|
||||
</p>
|
||||
|
||||
<p class="review-field-criterion-desc">
|
||||
<label><?php esc_html_e( 'Description', 'absolute-reviews' ); ?>:<br>
|
||||
<textarea disabled name="abr_review_items[desc][]" placeholder="<?php esc_html_e( 'Description', 'absolute-reviews' ); ?>" row="4"></textarea>
|
||||
</label>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
if ( isset( $review_items['name'] ) && $review_items['name'] ) {
|
||||
foreach ( $review_items['name'] as $key => $name ) {
|
||||
?>
|
||||
<tr class="row">
|
||||
<td>
|
||||
<div class="row-content">
|
||||
<div class="row-topbar closed">
|
||||
<a href="#" class="btn-remove-row delete"><?php esc_html_e( 'Remove', 'absolute-reviews' ); ?></a>
|
||||
<div class="handlediv" title="<?php esc_html_e( 'Click to toggle', 'absolute-reviews' ); ?>"></div>
|
||||
<strong class="signature"><?php echo (string) $review_items['name'][ $key ] ? esc_html( $review_items['name'][ $key ] ) : '<span>' . esc_html__( 'Criterion', 'absolute-reviews' ) . '</span>'; ?></strong>
|
||||
</div>
|
||||
|
||||
<div class="row-fields" style="display:none">
|
||||
<div class="row-body review-field-grid">
|
||||
<p class="review-field-criterion-name">
|
||||
<label><?php esc_html_e( 'Name', 'absolute-reviews' ); ?>:<br>
|
||||
<input type="text" class="attribute-name" name="abr_review_items[name][]" placeholder="<?php esc_html_e( 'Name', 'absolute-reviews' ); ?>" data-label="<?php esc_html_e( 'Criterion', 'absolute-reviews' ); ?>" value="<?php echo esc_attr( $review_items['name'][ $key ] ); ?>"></label>
|
||||
</p>
|
||||
|
||||
<p class="review-field-criterion-number">
|
||||
<label><?php esc_html_e( 'Value', 'absolute-reviews' ); ?>:<br>
|
||||
<input type="number" name="abr_review_items[val][]" value="<?php echo esc_attr( $review_items['val'][ $key ] ); ?>" min="0" step="1"></label>
|
||||
</p>
|
||||
|
||||
<p class="review-field-criterion-desc">
|
||||
<label><?php esc_html_e( 'Description', 'absolute-reviews' ); ?>:<br>
|
||||
<textarea name="abr_review_items[desc][]" placeholder="<?php esc_html_e( 'Description', 'absolute-reviews' ); ?>" row="4"><?php echo esc_attr( $review_items['desc'][ $key ] ); ?></textarea>
|
||||
</label>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<a class="btn-add-row button button-primary" href="#" data-event="btn-add-row"><?php esc_html_e( 'Add new criterion', 'absolute-reviews' ); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="review-tab-pros-cons">
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_pros_heading"><?php esc_html_e( 'Pros Heading', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<input type="text" id="abr_review_pros_heading" name="abr_review_pros_heading" placeholder="<?php esc_html_e( 'The Good', 'absolute-reviews' ); ?>" value="<?php echo esc_attr( $review_pros_heading ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_pros_heading"><?php esc_html_e( 'Pros List', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<div class="abr-metabox-repeater">
|
||||
<table class="abr-metabox-repeater-table review-repeater-simple">
|
||||
<tbody>
|
||||
<tr class="row hidden">
|
||||
<td>
|
||||
<div class="row-content">
|
||||
<div class="row-fields">
|
||||
<div class="row-body">
|
||||
<div class="row-handle">
|
||||
<span class="dashicons dashicons-menu-alt"></span>
|
||||
</div>
|
||||
|
||||
<input disabled type="text" class="attribute-name" name="abr_review_pros_items[name][]" placeholder="<?php esc_html_e( 'Name', 'absolute-reviews' ); ?>" data-label="<?php esc_html_e( 'Item', 'absolute-reviews' ); ?>">
|
||||
|
||||
<a href="#" class="btn-remove-row delete">
|
||||
<span class="dashicons dashicons-no-alt"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
if ( isset( $review_pros_items['name'] ) && $review_pros_items['name'] ) {
|
||||
foreach ( $review_pros_items['name'] as $key => $name ) {
|
||||
?>
|
||||
<tr class="row">
|
||||
<td>
|
||||
<div class="row-content">
|
||||
<div class="row-fields">
|
||||
<div class="row-body">
|
||||
<div class="row-handle">
|
||||
<span class="dashicons dashicons-menu-alt"></span>
|
||||
</div>
|
||||
|
||||
<input type="text" class="attribute-name" name="abr_review_pros_items[name][]" placeholder="<?php esc_html_e( 'Name', 'absolute-reviews' ); ?>" data-label="<?php esc_html_e( 'Item', 'absolute-reviews' ); ?>" value="<?php echo esc_attr( $review_pros_items['name'][ $key ] ); ?>"></label>
|
||||
|
||||
<a href="#" class="btn-remove-row delete">
|
||||
<span class="dashicons dashicons-no-alt"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<a class="btn-add-row button button-primary" href="#" data-event="btn-add-row"><?php esc_html_e( 'Add new pros item', 'absolute-reviews' ); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br><hr><br>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_cons_heading"><?php esc_html_e( 'Cons Heading', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<input type="text" id="abr_review_cons_heading" name="abr_review_cons_heading" placeholder="<?php esc_html_e( 'The Bad', 'absolute-reviews' ); ?>" value="<?php echo esc_attr( $review_cons_heading ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_cons_heading"><?php esc_html_e( 'Cons List', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<div class="abr-metabox-repeater">
|
||||
<table class="abr-metabox-repeater-table review-repeater-simple">
|
||||
<tbody>
|
||||
<tr class="row hidden">
|
||||
<td>
|
||||
<div class="row-content">
|
||||
<div class="row-fields">
|
||||
<div class="row-body">
|
||||
<div class="row-handle">
|
||||
<span class="dashicons dashicons-menu-alt"></span>
|
||||
</div>
|
||||
|
||||
<input disabled type="text" class="attribute-name" name="abr_review_cons_items[name][]" placeholder="<?php esc_html_e( 'Name', 'absolute-reviews' ); ?>" data-label="<?php esc_html_e( 'Item', 'absolute-reviews' ); ?>">
|
||||
|
||||
<a href="#" class="btn-remove-row delete">
|
||||
<span class="dashicons dashicons-no-alt"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
if ( isset( $review_cons_items['name'] ) && $review_cons_items['name'] ) {
|
||||
foreach ( $review_cons_items['name'] as $key => $name ) {
|
||||
?>
|
||||
<tr class="row">
|
||||
<td>
|
||||
<div class="row-content">
|
||||
<div class="row-fields">
|
||||
<div class="row-body">
|
||||
<div class="row-handle">
|
||||
<span class="dashicons dashicons-menu-alt"></span>
|
||||
</div>
|
||||
|
||||
<input type="text" class="attribute-name" name="abr_review_cons_items[name][]" placeholder="<?php esc_html_e( 'Name', 'absolute-reviews' ); ?>" data-label="<?php esc_html_e( 'Item', 'absolute-reviews' ); ?>" value="<?php echo esc_attr( $review_cons_items['name'][ $key ] ); ?>"></label>
|
||||
|
||||
<a href="#" class="btn-remove-row delete">
|
||||
<span class="dashicons dashicons-no-alt"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<a class="btn-add-row button button-primary" href="#" data-event="btn-add-row"><?php esc_html_e( 'Add new cons item', 'absolute-reviews' ); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="review-tab-scheme">
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_schema_heading"><?php esc_html_e( 'Item Reviewed', 'absolute-reviews' ); ?></label>
|
||||
<p class="description"><?php esc_html_e( 'Heading will be used if blank.', 'absolute-reviews' ); ?></p>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<input type="text" id="abr_review_schema_heading" name="abr_review_schema_heading" value="<?php echo esc_attr( $review_schema_heading ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_schema_desc"><?php esc_html_e( 'Review Text', 'absolute-reviews' ); ?></label>
|
||||
<p class="description"><?php esc_html_e( 'Description will be used if blank.', 'absolute-reviews' ); ?></p>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<textarea id="abr_review_schema_desc" name="abr_review_schema_desc" rows="6"><?php echo esc_html( $review_schema_desc ); ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_schema_author"><?php esc_html_e( 'Review Author', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<select id="abr_review_schema_author" name="abr_review_schema_author">
|
||||
<?php
|
||||
$user = get_userdata( $post->post_author );
|
||||
|
||||
if ( $user->user_login ) {
|
||||
?>
|
||||
<option value="<?php echo esc_attr( $user->user_login ); ?>" <?php selected( $review_schema_author, $user->user_login ); ?>>
|
||||
<?php echo esc_html( $user->user_login ); ?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
|
||||
if ( $user->first_name ) {
|
||||
?>
|
||||
<option value="<?php echo esc_attr( $user->first_name ); ?>" <?php selected( $review_schema_author, $user->first_name ); ?>>
|
||||
<?php echo esc_html( $user->first_name ); ?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
|
||||
if ( $user->last_name ) {
|
||||
?>
|
||||
<option value="<?php echo esc_attr( $user->last_name ); ?>" <?php selected( $review_schema_author, $user->last_name ); ?>>
|
||||
<?php echo esc_html( $user->last_name ); ?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
|
||||
if ( $user->first_name && $user->last_name ) {
|
||||
$user_var_once = $user->first_name . ' ' . $user->last_name;
|
||||
$user_var_second = $user->last_name . ' ' . $user->first_name;
|
||||
?>
|
||||
<option value="<?php echo esc_attr( $user_var_once ); ?>" <?php selected( $review_schema_author, $user_var_once ); ?>>
|
||||
<?php echo esc_html( $user_var_once ); ?>
|
||||
</option>
|
||||
<option value="<?php echo esc_attr( $user_var_second ); ?>" <?php selected( $review_schema_author, $user_var_second ); ?>>
|
||||
<?php echo esc_html( $user_var_second ); ?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<option value="custom" <?php selected( $review_schema_author, 'custom' ); ?>><?php esc_html_e( 'Custom', 'absolute-reviews' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="abr-metabox-field review-field-schema-author-custom" <?php checked( $review_schema_author, 'custom' ); ?>">
|
||||
<div class="abr-metabox-label">
|
||||
<label for="abr_review_schema_author_custom"><?php esc_html_e( 'Custom Author', 'absolute-reviews' ); ?></label>
|
||||
</div>
|
||||
<div class="abr-metabox-input">
|
||||
<input type="text" id="abr_review_schema_author_custom" name="abr_review_schema_author_custom" value="<?php echo esc_attr( $review_schema_author_custom ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Save meta tags by post
|
||||
*
|
||||
* @param int $post_id Post ID.
|
||||
* @param object $post Post Object.
|
||||
*/
|
||||
public function metabox_review_save( $post_id, $post ) {
|
||||
|
||||
// Break if doing autosave.
|
||||
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Break if current user can't edit this post.
|
||||
if ( ! current_user_can( 'edit_post', $post_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Break if this post revision.
|
||||
if ( wp_is_post_revision( $post_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! isset( $_POST['abr_review_meta_nonce'] ) || ! wp_verify_nonce( $_POST['abr_review_meta_nonce'], 'abr_review_meta_nonce' ) ) { // Input var ok; sanitization ok.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! isset( $_POST['abr_review_action'] ) || 1 !== (int) $_POST['abr_review_action'] ) { // Input var ok; sanitization ok.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_settings'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_abr_review_settings', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_abr_review_settings', '' );
|
||||
}
|
||||
|
||||
// Check Switch Metabox.
|
||||
if ( isset( $_POST['abr_review_settings'] ) ) { // Input var ok; sanitization ok.
|
||||
|
||||
$review_type = null;
|
||||
$review_items = null;
|
||||
|
||||
if ( isset( $_POST['abr_review_heading'] ) ) {
|
||||
$review_heading = sanitize_text_field( $_POST['abr_review_heading'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_heading', $review_heading );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_type'] ) ) {
|
||||
$review_type = sanitize_text_field( $_POST['abr_review_type'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_type', $review_type );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_items'] ) ) { // Input var ok; sanitization ok.
|
||||
$review_items = map_deep( $_POST['abr_review_items'], 'sanitize_text_field' ); // Input var ok; sanitization ok.
|
||||
|
||||
if ( isset( $_POST['abr_review_type'] ) && isset( $review_items['val'] ) ) { // Input var ok; sanitization ok.
|
||||
switch ( $_POST['abr_review_type'] ) { // Input var ok; sanitization ok.
|
||||
case 'percentage':
|
||||
$max = '100';
|
||||
break;
|
||||
case 'point-5':
|
||||
$max = '5';
|
||||
break;
|
||||
case 'point-10':
|
||||
$max = '10';
|
||||
break;
|
||||
case 'star':
|
||||
$max = '5';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( $review_items['val'] ) {
|
||||
foreach ( $review_items['val'] as $key => $value ) {
|
||||
if ( $value > $max ) {
|
||||
$review_items['val'][ $key ] = $max;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_items', $review_items );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_abr_review_items', array() );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_main_scale'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_abr_review_main_scale', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_abr_review_main_scale', '' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_auto_score'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_abr_review_auto_score', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_abr_review_auto_score', '' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_total_score'] ) ) {
|
||||
$review_total_score = sanitize_text_field( $_POST['abr_review_total_score'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_total_score', $review_total_score );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_desc'] ) ) { // Input var ok; sanitization ok.
|
||||
$review_desc = sanitize_text_field( $_POST['abr_review_desc'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_desc', $review_desc );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_pros_heading'] ) ) {
|
||||
$review_pros_heading = sanitize_text_field( $_POST['abr_review_pros_heading'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_pros_heading', $review_pros_heading );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_pros_items'] ) ) { // Input var ok; sanitization ok.
|
||||
$review_pros_items = map_deep( $_POST['abr_review_pros_items'], 'sanitize_text_field' ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_pros_items', $review_pros_items );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_abr_review_pros_items', array() );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_cons_heading'] ) ) {
|
||||
$review_cons_heading = sanitize_text_field( $_POST['abr_review_cons_heading'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_cons_heading', $review_cons_heading );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_cons_items'] ) ) { // Input var ok; sanitization ok.
|
||||
$review_cons_items = map_deep( $_POST['abr_review_cons_items'], 'sanitize_text_field' ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_cons_items', $review_cons_items );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_abr_review_cons_items', array() );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_legend'] ) ) { // Input var ok; sanitization ok.
|
||||
$review_legend = sanitize_text_field( $_POST['abr_review_legend'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_legend', $review_legend );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_schema_heading'] ) ) {
|
||||
$review_schema_heading = sanitize_text_field( $_POST['abr_review_schema_heading'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_schema_heading', $review_schema_heading );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_schema_desc'] ) ) {
|
||||
$review_schema_desc = sanitize_text_field( $_POST['abr_review_schema_desc'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_schema_desc', $review_schema_desc );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_schema_author'] ) ) {
|
||||
$review_schema_author = sanitize_text_field( $_POST['abr_review_schema_author'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_schema_author', $review_schema_author );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['abr_review_schema_author_custom'] ) ) {
|
||||
$review_schema_author_custom = sanitize_text_field( $_POST['abr_review_schema_author_custom'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_schema_author_custom', $review_schema_author_custom );
|
||||
}
|
||||
|
||||
// Review total score.
|
||||
$total_score = (float) $this->calc_review_total_score( $post_id, $review_type, $review_items );
|
||||
|
||||
/* ------------------------ */
|
||||
|
||||
// Save total score number.
|
||||
$review_type = abr_get_post_metadata( $post_id, '_abr_review_type', true, 'percentage' );
|
||||
|
||||
$review_auto_score = abr_get_post_metadata( $post_id, '_abr_review_auto_score', true, true );
|
||||
|
||||
if ( empty( $review_auto_score ) ) {
|
||||
$total_score = (float) abr_get_post_metadata( $post_id, '_abr_review_total_score', true );
|
||||
}
|
||||
|
||||
// Vars.
|
||||
switch ( $review_type ) {
|
||||
case 'percentage':
|
||||
$max = 100;
|
||||
break;
|
||||
case 'point-5':
|
||||
$max = 5;
|
||||
break;
|
||||
case 'point-10':
|
||||
$max = 10;
|
||||
break;
|
||||
case 'star':
|
||||
$max = 5;
|
||||
break;
|
||||
}
|
||||
|
||||
// Validate value.
|
||||
switch ( $review_type ) {
|
||||
case 'percentage':
|
||||
case 'point-5':
|
||||
case 'point-10':
|
||||
$total_score = ( $total_score <= $max ) ? round( $total_score ) : $max;
|
||||
break;
|
||||
case 'star':
|
||||
$total_score = ( $total_score <= $max ) ? round( $total_score, 1 ) : $max;
|
||||
break;
|
||||
}
|
||||
|
||||
update_post_meta( $post_id, '_abr_review_total_score_number', (float) $total_score );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calc Total Score
|
||||
*
|
||||
* @param int $post_id Post ID.
|
||||
* @param string $review_type Type of review.
|
||||
* @param array $review_items Array list items.
|
||||
*/
|
||||
public function calc_review_total_score( $post_id, $review_type, $review_items ) {
|
||||
|
||||
/* Review Type */
|
||||
if ( $review_type ) {
|
||||
|
||||
/* Set Score */
|
||||
switch ( $review_type ) {
|
||||
case 'star':
|
||||
$stars_count = 5;
|
||||
break;
|
||||
case 'point-5':
|
||||
$points_count = 5;
|
||||
break;
|
||||
case 'point-10':
|
||||
$points_count = 10;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( isset( $review_items['name'] ) && $review_items['name'] ) {
|
||||
$average = 0;
|
||||
|
||||
$review_items_count = 0;
|
||||
|
||||
foreach ( $review_items['name'] as $key => $item_name ) {
|
||||
|
||||
if ( ! $item_name ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$item_value = floatval( $review_items['val'][ $key ] );
|
||||
|
||||
/* Get Item Value */
|
||||
switch ( $review_type ) {
|
||||
case 'star':
|
||||
$item_value = ( $item_value <= $stars_count ) ? $item_value : $stars_count;
|
||||
break;
|
||||
case 'point-5':
|
||||
case 'point-10':
|
||||
$item_value = ( $item_value <= $points_count ) ? $item_value : $points_count;
|
||||
break;
|
||||
}
|
||||
|
||||
$review_items_count++;
|
||||
|
||||
$average += floatval( $item_value );
|
||||
}
|
||||
|
||||
if ( $average > 0 ) {
|
||||
$average = $average / $review_items_count;
|
||||
|
||||
$average = round( $average, 1 );
|
||||
}
|
||||
|
||||
return $average;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the stylesheets and JavaScript for the admin area.
|
||||
*
|
||||
* @param string $page Current page.
|
||||
*/
|
||||
public function admin_enqueue_scripts( $page ) {
|
||||
|
||||
// Styles.
|
||||
wp_enqueue_style( $this->abr, abr_style( plugin_dir_url( __FILE__ ) . 'css/absolute-reviews-admin.css' ), array(), $this->version, 'all' );
|
||||
|
||||
if ( in_array( $page, array( 'post.php', 'post-new.php' ), true ) ) {
|
||||
|
||||
wp_enqueue_script( 'jquery-ui-sortable' );
|
||||
wp_enqueue_script( 'jquery-ui-tabs' );
|
||||
|
||||
// Scripts.
|
||||
wp_enqueue_script( $this->abr, plugin_dir_url( __FILE__ ) . 'js/absolute-reviews-admin.js', array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-sortable' ), $this->version, false );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,547 @@
|
||||
/**
|
||||
* All of the CSS for your admin-facing functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'absolute-reviews-icons';
|
||||
src: url("../../fonts/absolute-reviews-icons.woff") format("woff"), url("../../fonts/absolute-reviews-icons.ttf") format("truetype"), url("../../fonts/absolute-reviews-icons.svg") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
[class^="abr-icon-"],
|
||||
[class*=" abr-icon-"] {
|
||||
font-family: 'absolute-reviews-icons' !important;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.abr-icon-comment:before {
|
||||
content: "\e905";
|
||||
}
|
||||
|
||||
.abr-icon-eye:before {
|
||||
content: "\e903";
|
||||
}
|
||||
|
||||
.abr-icon-watch:before {
|
||||
content: "\e904";
|
||||
}
|
||||
|
||||
.abr-icon-funds-fill:before {
|
||||
content: "\e902";
|
||||
}
|
||||
|
||||
.abr-icon-x:before {
|
||||
content: "\e901";
|
||||
}
|
||||
|
||||
.abr-icon-check:before {
|
||||
content: "\e900";
|
||||
}
|
||||
|
||||
.abr-icon-star-half:before {
|
||||
content: "\e938";
|
||||
}
|
||||
|
||||
.abr-icon-star-full:before {
|
||||
content: "\e939";
|
||||
}
|
||||
|
||||
.abr-icon-star-empty:before {
|
||||
content: "\e93a";
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
/* Basic -------------------------------------------------------------- */
|
||||
.abr-metabox-wrap .abr-metabox-tabs {
|
||||
background: none;
|
||||
border: none;
|
||||
display: flex;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: none;
|
||||
border-left: 1px solid #eee;
|
||||
background: #FAFAFA;
|
||||
flex: 0 0 200px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li {
|
||||
display: block;
|
||||
background: transparent;
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
float: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li a {
|
||||
border: none;
|
||||
border-bottom: 1px solid #eee;
|
||||
position: relative;
|
||||
display: block;
|
||||
font-size: 0.8125rem;
|
||||
line-height: 1.25rem;
|
||||
padding: 0.625rem;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
color: #0073aa;
|
||||
float: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li a:hover {
|
||||
color: #00a0d2;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li.ui-tabs-active {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li.ui-tabs-active a {
|
||||
background-color: #eee;
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-content {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-content .ui-tabs-panel {
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.abr-metabox-wrap .abr-metabox-tabs {
|
||||
flex-direction: column;
|
||||
}
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field {
|
||||
display: flex;
|
||||
position: relative;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-label {
|
||||
position: relative;
|
||||
flex: 0 0 100%;
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 0.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-label label {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
line-height: 1.4em;
|
||||
margin: 0 0 3px;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input {
|
||||
position: relative;
|
||||
flex: 0 0 100%;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 0.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input input[type="number"],
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input input[type="text"],
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input select,
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input input[type="number"].short,
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input input[type="text"].short,
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input select.short,
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input textarea.short {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.abr-metabox-wrap .abr-metabox-field {
|
||||
flex-direction: row;
|
||||
}
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-label {
|
||||
flex: 0 0 20%;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input {
|
||||
flex: 0 0 80%;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: -2rem;
|
||||
left: 1rem;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-switch {
|
||||
border: 2px solid #555d66;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
height: 1.75rem;
|
||||
height: 18px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
width: 36px;
|
||||
margin-left: 0.5rem;
|
||||
border-radius: 9px;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-switch .abr-metabox-switch-on {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
z-index: 1;
|
||||
background: #6C7781;
|
||||
border-radius: 50%;
|
||||
transition: all 0s ease 0.25s;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-switch .abr-metabox-switch-off {
|
||||
border: 2px solid #6c7781;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-switch .abr-metabox-switch-slider {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
z-index: 1;
|
||||
background: #6C7781;
|
||||
border-radius: 50%;
|
||||
transition: all 0.25s ease;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox:checked + .abr-metabox-switch {
|
||||
border-color: #11A0D2;
|
||||
background: #11A0D2;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox:checked + .abr-metabox-switch .abr-metabox-switch-on {
|
||||
top: 4px;
|
||||
right: 6px;
|
||||
width: 2px;
|
||||
height: 6px;
|
||||
background: #FFFFFF;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox:checked + .abr-metabox-switch .abr-metabox-switch-off {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox:checked + .abr-metabox-switch .abr-metabox-switch-slider {
|
||||
background: #FFFFFF;
|
||||
top: 2px;
|
||||
right: calc(50% + 4px);
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table {
|
||||
width: 100%;
|
||||
border: none;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr {
|
||||
background: #FFFFFF;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr th {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr th,
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr td {
|
||||
border: none;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr.ui-sortable-helper {
|
||||
display: table;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr.ui-sortable-placeholder {
|
||||
background: #F9F9F9;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr.ui-state-highlight td {
|
||||
background: #F9F9F9;
|
||||
border: 1px dashed #D8D8D8;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .btn-add-row {
|
||||
margin: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-content input, .abr-metabox-wrap .abr-metabox-repeater .row-content textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-content input[type="number"] {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-content p {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar {
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EFEFEF;
|
||||
padding: 1rem 1.25rem;
|
||||
zoom: 1;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .handlediv {
|
||||
display: block !important;
|
||||
background-position: 6px 5px;
|
||||
visibility: hidden;
|
||||
width: 27px;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .handlediv:before {
|
||||
content: "\f142";
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font: 400 20px/1 Dashicons;
|
||||
line-height: .5;
|
||||
padding: 8px 10px;
|
||||
position: relative;
|
||||
left: 12px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar.closed .handlediv:before {
|
||||
content: "\f140";
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .delete {
|
||||
color: red;
|
||||
font-weight: 400;
|
||||
line-height: 26px;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
visibility: hidden;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .signature {
|
||||
display: inline-block;
|
||||
padding-left: 100px;
|
||||
line-height: 26px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .signature span {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar:hover .handlediv,
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar:hover .delete {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-fields {
|
||||
border-bottom: 1px solid #EFEFEF;
|
||||
background-color: #FDFDFD;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-body {
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
/* Reviews -------------------------------------------------------------- */
|
||||
#abr_review_metabox .handlediv {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .inside {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#abr_review_metabox .hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .handle-actions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .postbox-header {
|
||||
min-height: 44px;
|
||||
}
|
||||
|
||||
#abr_review_metabox .abr-metabox-tabs {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .abr-metabox-tabs[checked="checked"] {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .row-fields {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .row-body {
|
||||
position: relative;
|
||||
padding: 0.5rem 2rem;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .row-handle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 0;
|
||||
transform: translateY(-50%);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 0;
|
||||
font-size: 1rem;
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .btn-remove-row {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
transform: translateY(-50%);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 0;
|
||||
font-size: 1rem;
|
||||
color: #555d66;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .btn-remove-row:hover {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple + .btn-add-row {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
#abr_review_metabox .review-field-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-name {
|
||||
flex: 1 0 70%;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-number {
|
||||
flex: 1 0 30%;
|
||||
padding-right: 2rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-number input {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-desc {
|
||||
flex: 1 0 100%;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-desc textarea {
|
||||
min-height: 80px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Widget -------------------------------------------------------------- */
|
||||
.widget[id*="abr_reviews_posts_widget"] .widget-content fieldset {
|
||||
border: 1px solid #DDDDDD;
|
||||
margin-top: 0.5rem;
|
||||
padding: 0 0.75rem;
|
||||
}
|
||||
|
||||
.widget[id*="abr_reviews_posts_widget"] .abr-large-post,
|
||||
.widget[id*="abr_reviews_posts_widget"] .abr-small-post {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-3"] .abr-simple-post, .widget[id*="abr_reviews_posts_widget"][template="reviews-4"] .abr-simple-post, .widget[id*="abr_reviews_posts_widget"][template="reviews-5"] .abr-simple-post {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-3"] .abr-large-post,
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-3"] .abr-small-post, .widget[id*="abr_reviews_posts_widget"][template="reviews-4"] .abr-large-post,
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-4"] .abr-small-post, .widget[id*="abr_reviews_posts_widget"][template="reviews-5"] .abr-large-post,
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-5"] .abr-small-post {
|
||||
display: block;
|
||||
}
|
||||
@@ -0,0 +1,547 @@
|
||||
/**
|
||||
* All of the CSS for your admin-facing functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'absolute-reviews-icons';
|
||||
src: url("../../fonts/absolute-reviews-icons.woff") format("woff"), url("../../fonts/absolute-reviews-icons.ttf") format("truetype"), url("../../fonts/absolute-reviews-icons.svg") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
[class^="abr-icon-"],
|
||||
[class*=" abr-icon-"] {
|
||||
font-family: 'absolute-reviews-icons' !important;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.abr-icon-comment:before {
|
||||
content: "\e905";
|
||||
}
|
||||
|
||||
.abr-icon-eye:before {
|
||||
content: "\e903";
|
||||
}
|
||||
|
||||
.abr-icon-watch:before {
|
||||
content: "\e904";
|
||||
}
|
||||
|
||||
.abr-icon-funds-fill:before {
|
||||
content: "\e902";
|
||||
}
|
||||
|
||||
.abr-icon-x:before {
|
||||
content: "\e901";
|
||||
}
|
||||
|
||||
.abr-icon-check:before {
|
||||
content: "\e900";
|
||||
}
|
||||
|
||||
.abr-icon-star-half:before {
|
||||
content: "\e938";
|
||||
}
|
||||
|
||||
.abr-icon-star-full:before {
|
||||
content: "\e939";
|
||||
}
|
||||
|
||||
.abr-icon-star-empty:before {
|
||||
content: "\e93a";
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
/* Basic -------------------------------------------------------------- */
|
||||
.abr-metabox-wrap .abr-metabox-tabs {
|
||||
background: none;
|
||||
border: none;
|
||||
display: flex;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: none;
|
||||
border-right: 1px solid #eee;
|
||||
background: #FAFAFA;
|
||||
flex: 0 0 200px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li {
|
||||
display: block;
|
||||
background: transparent;
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
float: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li a {
|
||||
border: none;
|
||||
border-bottom: 1px solid #eee;
|
||||
position: relative;
|
||||
display: block;
|
||||
font-size: 0.8125rem;
|
||||
line-height: 1.25rem;
|
||||
padding: 0.625rem;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
color: #0073aa;
|
||||
float: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li a:hover {
|
||||
color: #00a0d2;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li.ui-tabs-active {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation li.ui-tabs-active a {
|
||||
background-color: #eee;
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-content {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-content .ui-tabs-panel {
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.abr-metabox-wrap .abr-metabox-tabs {
|
||||
flex-direction: column;
|
||||
}
|
||||
.abr-metabox-wrap .abr-metabox-tabs > .abr-metabox-tabs-navigation {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field {
|
||||
display: flex;
|
||||
position: relative;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-label {
|
||||
position: relative;
|
||||
flex: 0 0 100%;
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 0.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-label label {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
line-height: 1.4em;
|
||||
margin: 0 0 3px;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input {
|
||||
position: relative;
|
||||
flex: 0 0 100%;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 0.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input input[type="number"],
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input input[type="text"],
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input select,
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input input[type="number"].short,
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input input[type="text"].short,
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input select.short,
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input textarea.short {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.abr-metabox-wrap .abr-metabox-field {
|
||||
flex-direction: row;
|
||||
}
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-label {
|
||||
flex: 0 0 20%;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
.abr-metabox-wrap .abr-metabox-field .abr-metabox-input {
|
||||
flex: 0 0 80%;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: -2rem;
|
||||
right: 1rem;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-switch {
|
||||
border: 2px solid #555d66;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
height: 1.75rem;
|
||||
height: 18px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
width: 36px;
|
||||
margin-right: 0.5rem;
|
||||
border-radius: 9px;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-switch .abr-metabox-switch-on {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
z-index: 1;
|
||||
background: #6C7781;
|
||||
border-radius: 50%;
|
||||
transition: all 0s ease 0.25s;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-switch .abr-metabox-switch-off {
|
||||
border: 2px solid #6c7781;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 2px;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-switch .abr-metabox-switch-slider {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
z-index: 1;
|
||||
background: #6C7781;
|
||||
border-radius: 50%;
|
||||
transition: all 0.25s ease;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox:checked + .abr-metabox-switch {
|
||||
border-color: #11A0D2;
|
||||
background: #11A0D2;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox:checked + .abr-metabox-switch .abr-metabox-switch-on {
|
||||
top: 4px;
|
||||
left: 6px;
|
||||
width: 2px;
|
||||
height: 6px;
|
||||
background: #FFFFFF;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox:checked + .abr-metabox-switch .abr-metabox-switch-off {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-switcher .abr-metabox-checkbox:checked + .abr-metabox-switch .abr-metabox-switch-slider {
|
||||
background: #FFFFFF;
|
||||
top: 2px;
|
||||
left: calc(50% + 4px);
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table {
|
||||
width: 100%;
|
||||
border: none;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr {
|
||||
background: #FFFFFF;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr th {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr th,
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr td {
|
||||
border: none;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr.ui-sortable-helper {
|
||||
display: table;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr.ui-sortable-placeholder {
|
||||
background: #F9F9F9;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater > table tr.ui-state-highlight td {
|
||||
background: #F9F9F9;
|
||||
border: 1px dashed #D8D8D8;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .btn-add-row {
|
||||
margin: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-content input, .abr-metabox-wrap .abr-metabox-repeater .row-content textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-content input[type="number"] {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-content p {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar {
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EFEFEF;
|
||||
padding: 1rem 1.25rem;
|
||||
zoom: 1;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .handlediv {
|
||||
display: block !important;
|
||||
background-position: 6px 5px;
|
||||
visibility: hidden;
|
||||
width: 27px;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .handlediv:before {
|
||||
content: "\f142";
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font: 400 20px/1 Dashicons;
|
||||
line-height: .5;
|
||||
padding: 8px 10px;
|
||||
position: relative;
|
||||
right: 12px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar.closed .handlediv:before {
|
||||
content: "\f140";
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .delete {
|
||||
color: red;
|
||||
font-weight: 400;
|
||||
line-height: 26px;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
visibility: hidden;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .signature {
|
||||
display: inline-block;
|
||||
padding-right: 100px;
|
||||
line-height: 26px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar .signature span {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar:hover .handlediv,
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-topbar:hover .delete {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-fields {
|
||||
border-bottom: 1px solid #EFEFEF;
|
||||
background-color: #FDFDFD;
|
||||
}
|
||||
|
||||
.abr-metabox-wrap .abr-metabox-repeater .row-body {
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
/* Reviews -------------------------------------------------------------- */
|
||||
#abr_review_metabox .handlediv {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .inside {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#abr_review_metabox .hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .handle-actions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .postbox-header {
|
||||
min-height: 44px;
|
||||
}
|
||||
|
||||
#abr_review_metabox .abr-metabox-tabs {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .abr-metabox-tabs[checked="checked"] {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .row-fields {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .row-body {
|
||||
position: relative;
|
||||
padding: 0.5rem 2rem;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .row-handle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
transform: translateY(-50%);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 0;
|
||||
font-size: 1rem;
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .btn-remove-row {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 0;
|
||||
transform: translateY(-50%);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 0;
|
||||
font-size: 1rem;
|
||||
color: #555d66;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple .btn-remove-row:hover {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
#abr_review_metabox .review-repeater-simple + .btn-add-row {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
#abr_review_metabox .review-field-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-name {
|
||||
flex: 1 0 70%;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-number {
|
||||
flex: 1 0 30%;
|
||||
padding-left: 2rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-number input {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-desc {
|
||||
flex: 1 0 100%;
|
||||
}
|
||||
#abr_review_metabox .review-field-grid .review-field-criterion-desc textarea {
|
||||
min-height: 80px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Widget -------------------------------------------------------------- */
|
||||
.widget[id*="abr_reviews_posts_widget"] .widget-content fieldset {
|
||||
border: 1px solid #DDDDDD;
|
||||
margin-top: 0.5rem;
|
||||
padding: 0 0.75rem;
|
||||
}
|
||||
|
||||
.widget[id*="abr_reviews_posts_widget"] .abr-large-post,
|
||||
.widget[id*="abr_reviews_posts_widget"] .abr-small-post {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-3"] .abr-simple-post, .widget[id*="abr_reviews_posts_widget"][template="reviews-4"] .abr-simple-post, .widget[id*="abr_reviews_posts_widget"][template="reviews-5"] .abr-simple-post {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-3"] .abr-large-post,
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-3"] .abr-small-post, .widget[id*="abr_reviews_posts_widget"][template="reviews-4"] .abr-large-post,
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-4"] .abr-small-post, .widget[id*="abr_reviews_posts_widget"][template="reviews-5"] .abr-large-post,
|
||||
.widget[id*="abr_reviews_posts_widget"][template="reviews-5"] .abr-small-post {
|
||||
display: block;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php // Silence is golden
|
||||
@@ -0,0 +1,211 @@
|
||||
"use strict";
|
||||
|
||||
/* Basic -------------------------------------------------------------- */
|
||||
|
||||
(function($) {
|
||||
var abrMetabox = {};
|
||||
|
||||
( function() {
|
||||
var $this;
|
||||
|
||||
abrMetabox = {
|
||||
/*
|
||||
* Initialize
|
||||
*/
|
||||
init: function( e ) {
|
||||
$this = abrMetabox;
|
||||
|
||||
// Variables.
|
||||
$this.wrap = $( '.abr-metabox-wrap' );
|
||||
|
||||
// Init.
|
||||
$this.metaboxInit( e );
|
||||
|
||||
// Init events.
|
||||
$this.events( e );
|
||||
},
|
||||
|
||||
/*
|
||||
* Events
|
||||
*/
|
||||
events: function( e ) {
|
||||
|
||||
// Custom Events
|
||||
$this.wrap.on( 'click change keyup keydown', '.abr-metabox-repeater .attribute-name', $this.setSignature );
|
||||
$this.wrap.on( 'click', '.abr-metabox-repeater .row-topbar', $this.toggleItems );
|
||||
$this.wrap.on( 'click', '.abr-metabox-repeater .btn-remove-row', $this.removeRepeaterRow );
|
||||
$this.wrap.on( 'click', '.abr-metabox-repeater .btn-add-row', $this.addRepeaterRow );
|
||||
},
|
||||
|
||||
/*
|
||||
* Init metabox elements
|
||||
*/
|
||||
metaboxInit: function( e ) {
|
||||
// Add tabs for Meta Box (UI)
|
||||
$this.wrap.find( '.abr-metabox-tabs' ).tabs();
|
||||
|
||||
// Repeater sortable
|
||||
$this.wrap.find( '.abr-metabox-repeater tbody' ).sortable( {
|
||||
items: 'tr',
|
||||
placeholder: 'ui-state-highlight',
|
||||
handle: '.row-topbar, .row-handle',
|
||||
start: function( e, ui ) {
|
||||
ui.placeholder.height( ui.item.height() );
|
||||
},
|
||||
} );
|
||||
},
|
||||
|
||||
/*
|
||||
* Toggle items
|
||||
*/
|
||||
toggleItems: function() {
|
||||
if ( $( this ).hasClass( 'closed' ) ) {
|
||||
$( this ).removeClass( 'closed' );
|
||||
|
||||
$( this ).siblings( '.row-fields' ).slideDown();
|
||||
} else {
|
||||
$( this ).addClass( 'closed' );
|
||||
|
||||
$( this ).siblings( '.row-fields' ).slideUp();
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Set signature
|
||||
*/
|
||||
setSignature: function() {
|
||||
|
||||
var label = '<span>' + $( this ).data( 'label' ) + '</span>';
|
||||
|
||||
var value = $( this ).val() ? $( this ).val() : label;
|
||||
|
||||
$( this ).parents( '.row-content' ).find( '.signature' ).html( value );
|
||||
},
|
||||
|
||||
/*
|
||||
* Add repeater row
|
||||
*/
|
||||
addRepeaterRow: function() {
|
||||
|
||||
var repeater = $( this ).siblings( '.abr-metabox-repeater-table' )
|
||||
|
||||
// Get html row.
|
||||
var html = repeater.find( 'tbody tr.hidden' ).html();
|
||||
|
||||
// Add new row.
|
||||
repeater.find( 'tbody' ).append( '<tr class="row">' + html + '</tr>' );
|
||||
|
||||
// Visible all input and textarea.
|
||||
repeater.find( 'tr' ).not( '.hidden' ).find( 'input, textarea' ).removeAttr( 'disabled' );
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
/*
|
||||
* Remove repeater row
|
||||
*/
|
||||
removeRepeaterRow: function() {
|
||||
$( this ).parents( '.row' ).remove();
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
} )();
|
||||
|
||||
// Initialize.
|
||||
$( function() {
|
||||
abrMetabox.init();
|
||||
} );
|
||||
|
||||
})(jQuery);
|
||||
|
||||
/* Reviews -------------------------------------------------------------- */
|
||||
|
||||
(function($) {
|
||||
var abrReviews = {};
|
||||
|
||||
( function() {
|
||||
var $this;
|
||||
|
||||
abrReviews = {
|
||||
/*
|
||||
* Initialize
|
||||
*/
|
||||
init: function( e ) {
|
||||
$this = abrReviews;
|
||||
|
||||
// Variables.
|
||||
$this.wrap = $( '.review-wrap' );
|
||||
|
||||
// Init.
|
||||
$this.reviewsInit( e );
|
||||
|
||||
// Init events.
|
||||
$this.events( e );
|
||||
},
|
||||
|
||||
/*
|
||||
* Events
|
||||
*/
|
||||
events: function( e ) {
|
||||
// Custom Events
|
||||
$this.wrap.on( 'click', 'input[name="abr_review_settings"]', $this.toggleMetaBox );
|
||||
$this.wrap.on( 'click', 'input[name="abr_review_auto_score"]', $this.actionAutoScore );
|
||||
$this.wrap.on( 'change', 'select[name="abr_review_schema_author"]', $this.actionSchemaAuthor );
|
||||
},
|
||||
|
||||
/*
|
||||
* Init reviews elements
|
||||
*/
|
||||
reviewsInit: function( e ) {
|
||||
$this.actionAutoScore( 'input[name="abr_review_auto_score"]' );
|
||||
$this.actionSchemaAuthor( 'select[name="abr_review_schema_author"]' );
|
||||
},
|
||||
|
||||
/*
|
||||
* Toggle metabox view
|
||||
*/
|
||||
toggleMetaBox: function() {
|
||||
if ( $( this ).prop( 'checked' ) ) {
|
||||
$this.wrap.find( '.abr-metabox-tabs' ).attr( 'checked', 'checked' );
|
||||
} else {
|
||||
$this.wrap.find( '.abr-metabox-tabs' ).removeAttr( 'checked' );
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Action auto score
|
||||
*/
|
||||
actionAutoScore: function( e ) {
|
||||
let checked = $( typeof e === 'string' ? e : this ).prop('checked');
|
||||
|
||||
if ( checked ) {
|
||||
$( '.review-field-total-score' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.review-field-total-score' ).removeClass( 'hidden' );
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Action schema author
|
||||
*/
|
||||
actionSchemaAuthor: function( e ) {
|
||||
let val = $( typeof e === 'string' ? e : this ).val();
|
||||
|
||||
if ( 'custom' !== val ) {
|
||||
$( '.review-field-schema-author-custom' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.review-field-schema-author-custom' ).removeClass( 'hidden' );
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
} )();
|
||||
|
||||
// Initialize.
|
||||
$( function() {
|
||||
abrReviews.init();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="absolute-reviews-icons" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="check" d="M823.168 712.832l-439.168-439.168-183.168 183.168c-16.683 16.683-43.691 16.683-60.331 0s-16.683-43.691 0-60.331l213.333-213.333c16.683-16.683 43.691-16.683 60.331 0l469.333 469.333c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0z" />
|
||||
<glyph unicode="" glyph-name="x" d="M225.835 652.502l225.835-225.835-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0l225.835 225.835 225.835-225.835c16.683-16.683 43.691-16.683 60.331 0s16.683 43.691 0 60.331l-225.835 225.835 225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835-225.835 225.835c-16.683 16.683-43.691 16.683-60.331 0s-16.683-43.691 0-60.331z" />
|
||||
<glyph unicode="" glyph-name="funds-fill" d="M97.127 147.968l200.192 200.192 144.845-144.794 234.035 233.984 91.801-91.75v256h-256l91.802-91.802-161.638-161.638-144.794 144.845-253.235-253.235c-29.188 65.535-44.226 136.489-44.135 208.23 0 282.778 229.223 512 512 512s512-229.222 512-512c0-282.778-229.222-512-512-512-164.316-0.107-318.673 78.757-414.873 211.968z" />
|
||||
<glyph unicode="" glyph-name="eye" d="M4.523 445.739c-5.803-11.691-6.229-25.728 0-38.144 0 0 16.896-33.664 47.787-78.635 19.243-27.989 44.288-61.099 74.965-94.635 38.144-41.771 85.504-84.779 141.611-119.467 68.053-42.069 149.589-72.192 243.115-72.192s175.061 30.123 243.115 72.192c56.107 34.688 103.467 77.696 141.611 119.467 30.635 33.536 55.723 66.645 74.965 94.635 30.891 44.971 47.787 78.635 47.787 78.635 5.803 11.691 6.229 25.728 0 38.144 0 0-16.896 33.664-47.787 78.635-19.243 27.989-44.288 61.099-74.965 94.635-38.144 41.771-85.504 84.779-141.611 119.467-68.053 42.069-149.589 72.192-243.115 72.192s-175.061-30.123-243.115-72.192c-56.107-34.688-103.467-77.696-141.611-119.467-30.677-33.536-55.723-66.603-74.965-94.635-30.891-44.971-47.787-78.635-47.787-78.635zM91.307 426.667c6.955 11.989 17.365 29.056 31.317 49.408 17.493 25.429 40.107 55.296 67.627 85.376 34.347 37.589 75.733 74.923 123.477 104.448 57.6 35.584 123.776 59.435 198.272 59.435s140.672-23.851 198.229-59.435c47.744-29.525 89.131-66.859 123.477-104.448 27.477-30.080 50.133-59.947 67.627-85.376 13.995-20.352 24.405-37.376 31.317-49.408-6.955-11.989-17.365-29.056-31.317-49.408-17.493-25.429-40.107-55.296-67.627-85.376-34.347-37.589-75.733-74.923-123.477-104.448-57.557-35.584-123.733-59.435-198.229-59.435s-140.672 23.851-198.229 59.435c-47.744 29.525-89.131 66.859-123.477 104.448-27.477 30.080-50.133 59.947-67.627 85.376-13.995 20.352-24.405 37.419-31.36 49.408zM682.667 426.667c0 47.104-19.157 89.856-50.005 120.661s-73.557 50.005-120.661 50.005-89.856-19.157-120.661-50.005-50.005-73.557-50.005-120.661 19.157-89.856 50.005-120.661 73.557-50.005 120.661-50.005 89.856 19.157 120.661 50.005 50.005 73.557 50.005 120.661zM597.333 426.667c0-23.595-9.515-44.843-25.003-60.331s-36.736-25.003-60.331-25.003-44.843 9.515-60.331 25.003-25.003 36.736-25.003 60.331 9.515 44.843 25.003 60.331 36.736 25.003 60.331 25.003 44.843-9.515 60.331-25.003 25.003-36.736 25.003-60.331z" />
|
||||
<glyph unicode="" glyph-name="watch" d="M469.333 554.667v-128c0-11.776 4.779-22.443 12.501-30.165l64-64c16.683-16.683 43.691-16.683 60.331 0s16.683 43.691 0 60.331l-51.499 51.499v110.336c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667zM654.080 116.224l-7.083-77.355c-1.024-11.349-6.272-21.12-14.208-28.075-7.68-6.784-17.707-10.795-28.587-10.795h-184.789c-11.52-0.043-21.76 4.267-29.44 11.477-7.467 6.997-12.416 16.597-13.397 27.435l-7.083 77.525c43.349-19.968 91.648-31.104 142.507-31.104 50.688 0 98.816 11.051 142.080 30.891zM349.312 624.342c44.245 36.48 100.864 58.325 162.688 58.325 70.699 0 134.656-28.587 181.035-74.965s74.965-110.336 74.965-181.035-28.587-134.656-74.965-181.035c-4.437-4.437-9.003-8.704-13.781-12.8-1.493-1.323-3.029-2.603-4.565-3.84-44.245-36.48-100.864-58.325-162.688-58.325-70.699 0-134.656 28.587-181.035 74.965s-74.965 110.336-74.965 181.035 28.587 134.656 74.965 181.035c4.437 4.437 9.003 8.704 13.781 12.8 1.493 1.323 3.029 2.603 4.565 3.84zM746.283 674.902l-13.44 147.413c-2.987 32.256-17.835 61.013-40.021 81.792-22.997 21.547-54.016 34.688-87.808 34.56h-185.771c-32.213-0.128-62.037-12.203-84.693-32.299-23.552-20.821-39.467-50.432-42.539-84.139l-13.397-146.475c-2.688-2.517-5.376-5.12-7.979-7.723-61.696-61.739-99.968-147.115-99.968-241.365s38.272-179.627 99.968-241.365c2.475-2.475 4.992-4.907 7.509-7.296l13.44-146.987c2.987-32.256 17.835-61.013 40.021-81.792 22.997-21.547 54.016-34.688 87.808-34.56h184.661c32.384-0.043 62.421 12.032 85.205 32.171 23.595 20.864 39.637 50.517 42.667 84.267l13.397 146.475c2.688 2.517 5.376 5.12 7.979 7.723 61.739 61.739 100.011 147.115 100.011 241.365s-38.272 179.627-99.968 241.365c-2.304 2.304-4.693 4.608-7.040 6.869zM369.92 737.11l7.083 77.355c1.024 11.307 6.272 21.077 14.123 28.032 7.637 6.784 17.579 10.795 28.459 10.837h185.429c11.52 0.043 21.76-4.267 29.44-11.477 7.467-6.997 12.416-16.597 13.397-27.435l7.083-77.696c-43.477 20.053-91.904 31.275-142.933 31.275-50.688 0-98.816-11.051-142.080-30.891z" />
|
||||
<glyph unicode="" glyph-name="comment" d="M938.667 298.667v426.667c0 35.328-14.379 67.413-37.504 90.496s-55.168 37.504-90.496 37.504h-597.333c-35.328 0-67.413-14.379-90.496-37.504s-37.504-55.168-37.504-90.496v-682.667c0-10.923 4.181-21.845 12.501-30.165 16.683-16.683 43.691-16.683 60.331 0l158.165 158.165h494.336c35.328 0 67.413 14.379 90.496 37.504s37.504 55.168 37.504 90.496zM853.333 298.667c0-11.776-4.736-22.4-12.501-30.165s-18.389-12.501-30.165-12.501h-512c-11.776 0-22.443-4.779-30.165-12.501l-97.835-97.835v579.669c0 11.776 4.736 22.4 12.501 30.165s18.389 12.501 30.165 12.501h597.333c11.776 0 22.4-4.736 30.165-12.501s12.501-18.389 12.501-30.165z" />
|
||||
<glyph unicode="" glyph-name="star-half" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538zM512 206.502l-0.942-0.496 0.942 570.768 111.736-226.396 249.836-36.304-180.788-176.222 42.678-248.83-223.462 117.48z" />
|
||||
<glyph unicode="" glyph-name="star-full" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538z" />
|
||||
<glyph unicode="" glyph-name="star-empty" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538zM512 206.502l-223.462-117.48 42.676 248.83-180.786 176.222 249.84 36.304 111.732 226.396 111.736-226.396 249.836-36.304-180.788-176.222 42.678-248.83-223.462 117.48z" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Define the internationalization functionality
|
||||
*
|
||||
* Loads and defines the internationalization files for this plugin
|
||||
* so that it is ready for translation.
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
|
||||
/**
|
||||
* Define the internationalization functionality.
|
||||
*
|
||||
* Loads and defines the internationalization files for this plugin
|
||||
* so that it is ready for translation.
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
class ABR_i18n {
|
||||
|
||||
|
||||
/**
|
||||
* Load the plugin text domain for translation.
|
||||
*/
|
||||
public function load_plugin_textdomain() {
|
||||
|
||||
load_plugin_textdomain( 'absolute-reviews', false, dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/' );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Register all actions and filters for the plugin
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
|
||||
/**
|
||||
* Register all actions and filters for the plugin.
|
||||
*
|
||||
* Maintain a list of all hooks that are registered throughout
|
||||
* the plugin, and register them with the WordPress API. Call the
|
||||
* run function to execute the list of actions and filters.
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
class ABR_Loader {
|
||||
|
||||
/**
|
||||
* The array of actions registered with WordPress.
|
||||
*
|
||||
* @access protected
|
||||
* @var array $actions The actions registered with WordPress to fire when the plugin loads.
|
||||
*/
|
||||
protected $actions;
|
||||
|
||||
/**
|
||||
* The array of filters registered with WordPress.
|
||||
*
|
||||
* @access protected
|
||||
* @var array $filters The filters registered with WordPress to fire when the plugin loads.
|
||||
*/
|
||||
protected $filters;
|
||||
|
||||
/**
|
||||
* Initialize the collections used to maintain the actions and filters.
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
$this->actions = array();
|
||||
$this->filters = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new action to the collection to be registered with WordPress.
|
||||
|
||||
* @param string $hook The name of the WordPress action that is being registered.
|
||||
* @param object $component A reference to the instance of the object on which the action is defined.
|
||||
* @param string $callback The name of the function definition on the $component.
|
||||
* @param int $priority Optional. The priority at which the function should be fired. Default is 10.
|
||||
* @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
|
||||
*/
|
||||
public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
|
||||
$this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args );
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new filter to the collection to be registered with WordPress.
|
||||
*
|
||||
* @param string $hook The name of the WordPress filter that is being registered.
|
||||
* @param object $component A reference to the instance of the object on which the filter is defined.
|
||||
* @param string $callback The name of the function definition on the $component.
|
||||
* @param int $priority Optional. The priority at which the function should be fired. Default is 10.
|
||||
* @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
|
||||
*/
|
||||
public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
|
||||
$this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args );
|
||||
}
|
||||
|
||||
/**
|
||||
* A utility function that is used to register the actions and hooks into a single
|
||||
* collection.
|
||||
|
||||
* @access private
|
||||
* @param array $hooks The collection of hooks that is being registered (that is, actions or filters).
|
||||
* @param string $hook The name of the WordPress filter that is being registered.
|
||||
* @param object $component A reference to the instance of the object on which the filter is defined.
|
||||
* @param string $callback The name of the function definition on the $component.
|
||||
* @param int $priority The priority at which the function should be fired.
|
||||
* @param int $accepted_args The number of arguments that should be passed to the $callback.
|
||||
* @return array The collection of actions and filters registered with WordPress.
|
||||
*/
|
||||
private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
|
||||
|
||||
$hooks[] = array(
|
||||
'hook' => $hook,
|
||||
'component' => $component,
|
||||
'callback' => $callback,
|
||||
'priority' => $priority,
|
||||
'accepted_args' => $accepted_args,
|
||||
);
|
||||
|
||||
return $hooks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the filters and actions with WordPress.
|
||||
*/
|
||||
public function run() {
|
||||
|
||||
foreach ( $this->filters as $hook ) {
|
||||
add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
|
||||
}
|
||||
|
||||
foreach ( $this->actions as $hook ) {
|
||||
add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The file that defines the core plugin class
|
||||
*
|
||||
* A class definition that includes attributes and functions used across both the
|
||||
* public-facing side of the site and the admin area.
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
|
||||
/**
|
||||
* The core plugin class.
|
||||
*
|
||||
* This is used to define internationalization, admin-specific hooks, and
|
||||
* public-facing site hooks.
|
||||
*
|
||||
* Also maintains the unique identifier of this plugin as well as the current
|
||||
* version of the plugin.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
class ABR {
|
||||
|
||||
/**
|
||||
* The loader that's responsible for maintaining and registering all hooks that power
|
||||
* the plugin.
|
||||
*
|
||||
* @access protected
|
||||
* @var ABR_Loader $loader Maintains and registers all hooks for the plugin.
|
||||
*/
|
||||
protected $loader;
|
||||
|
||||
/**
|
||||
* The unique identifier of this plugin.
|
||||
*
|
||||
* @access protected
|
||||
* @var string $abr The string used to uniquely identify this plugin.
|
||||
*/
|
||||
protected $abr;
|
||||
|
||||
/**
|
||||
* The current version of the plugin.
|
||||
*
|
||||
* @access protected
|
||||
* @var string $version The current version of the plugin.
|
||||
*/
|
||||
protected $version;
|
||||
|
||||
/**
|
||||
* Define the core functionality of the plugin.
|
||||
*
|
||||
* Set the plugin name and the plugin version that can be used throughout the plugin.
|
||||
* Load the dependencies, define the locale, and set the hooks for the admin area and
|
||||
* the public-facing side of the site.
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
if ( ! function_exists( 'get_plugin_data' ) ) {
|
||||
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
||||
}
|
||||
|
||||
// Get plugin data.
|
||||
$plugin_data = get_plugin_data( ABR_PATH . '/absolute-reviews.php' );
|
||||
|
||||
$this->version = $plugin_data['Version'];
|
||||
$this->abr = 'absolute-reviews';
|
||||
|
||||
$this->load_dependencies();
|
||||
$this->set_locale();
|
||||
$this->define_admin_hooks();
|
||||
$this->define_public_hooks();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the required dependencies for this plugin.
|
||||
*
|
||||
* Include the following files that make up the plugin:
|
||||
*
|
||||
* - ABR_Loader. Orchestrates the hooks of the plugin.
|
||||
* - ABR_i18n. Defines internationalization functionality.
|
||||
* - ABR_Admin. Defines all hooks for the admin area.
|
||||
* - ABR_Public. Defines all hooks for the public side of the site.
|
||||
*
|
||||
* Create an instance of the loader which will be used to register the hooks
|
||||
* with WordPress.
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
private function load_dependencies() {
|
||||
|
||||
/**
|
||||
* Helpers Functions for the plugin.
|
||||
*/
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/helpers-absolute-reviews.php';
|
||||
|
||||
/**
|
||||
* Post Meta.
|
||||
*/
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/post-meta.php';
|
||||
|
||||
/**
|
||||
* Posts Template.
|
||||
*/
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/posts-template.php';
|
||||
|
||||
/**
|
||||
* Register widgets for the plugin.
|
||||
*/
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-absolute-reviews-posts-widget.php';
|
||||
|
||||
/**
|
||||
* Register gutenberg blocks.
|
||||
*/
|
||||
if ( function_exists( 'register_block_type' ) ) {
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-absolute-reviews-block.php';
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-absolute-reviews-posts-block.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* The class responsible for orchestrating the actions and filters of the
|
||||
* core plugin.
|
||||
*/
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-absolute-reviews-loader.php';
|
||||
|
||||
/**
|
||||
* The class responsible for defining internationalization functionality
|
||||
* of the plugin.
|
||||
*/
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-absolute-reviews-i18n.php';
|
||||
|
||||
/**
|
||||
* The class responsible for defining all actions that occur in the admin area.
|
||||
*/
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-absolute-reviews-admin.php';
|
||||
|
||||
/**
|
||||
* The class responsible for defining all actions that occur in the public-facing
|
||||
* side of the site.
|
||||
*/
|
||||
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-absolute-reviews-public.php';
|
||||
|
||||
$this->loader = new ABR_Loader();
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the locale for this plugin for internationalization.
|
||||
*
|
||||
* Uses the ABR_i18n class in order to set the domain and to register the hook
|
||||
* with WordPress.
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
private function set_locale() {
|
||||
|
||||
$plugin_i18n = new ABR_i18n();
|
||||
|
||||
$this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Register all of the hooks related to the admin area functionality
|
||||
* of the plugin.
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
private function define_admin_hooks() {
|
||||
|
||||
$plugin_admin = new ABR_Admin( $this->get_abr(), $this->get_version() );
|
||||
|
||||
$this->loader->add_action( 'admin_menu', $plugin_admin, 'register_options_page' );
|
||||
$this->loader->add_action( 'add_meta_boxes', $plugin_admin, 'metabox_review_register' );
|
||||
$this->loader->add_action( 'save_post', $plugin_admin, 'metabox_review_save', 10, 2 );
|
||||
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'admin_enqueue_scripts' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Register all of the hooks related to the public-facing functionality
|
||||
* of the plugin.
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
private function define_public_hooks() {
|
||||
|
||||
$plugin_public = new ABR_Public( $this->get_abr(), $this->get_version() );
|
||||
|
||||
$this->loader->add_action( 'wp_head', $plugin_public, 'wp_head' );
|
||||
$this->loader->add_action( 'the_content', $plugin_public, 'the_content' );
|
||||
$this->loader->add_action( 'abr_reviews_posts_templates', $plugin_public, 'posts_templates' );
|
||||
$this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'wp_enqueue_scripts' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the loader to execute all of the hooks with WordPress.
|
||||
*/
|
||||
public function run() {
|
||||
$this->loader->run();
|
||||
}
|
||||
|
||||
/**
|
||||
* The name of the plugin used to uniquely identify it within the context of
|
||||
* WordPress and to define internationalization functionality.
|
||||
*
|
||||
* @return string The name of the plugin.
|
||||
*/
|
||||
public function get_abr() {
|
||||
return $this->abr;
|
||||
}
|
||||
|
||||
/**
|
||||
* The reference to the class that orchestrates the hooks with the plugin.
|
||||
*
|
||||
* @return ABR_Loader Orchestrates the hooks of the plugin.
|
||||
*/
|
||||
public function get_loader() {
|
||||
return $this->loader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the version number of the plugin.
|
||||
*
|
||||
* @return string The version number of the plugin.
|
||||
*/
|
||||
public function get_version() {
|
||||
return $this->version;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,886 @@
|
||||
<?php
|
||||
/**
|
||||
* Helpers Absolute Reviews
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
|
||||
if ( ! function_exists( 'abr_style' ) ) {
|
||||
/**
|
||||
* Processing path of style.
|
||||
*
|
||||
* @param string $path URL to the stylesheet.
|
||||
*/
|
||||
function abr_style( $path ) {
|
||||
// Check RTL.
|
||||
if ( is_rtl() ) {
|
||||
return $path;
|
||||
}
|
||||
|
||||
// Check Dev.
|
||||
$dev = ABR_PATH . 'public/css/absolute-reviews-public-dev.css';
|
||||
|
||||
if ( file_exists( $dev ) ) {
|
||||
return str_replace( '.css', '-dev.css', $path );
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_powerkit_module_enabled' ) ) {
|
||||
/**
|
||||
* Helper function to check the status of powerkit modules
|
||||
*
|
||||
* @param array $name Name of module.
|
||||
*/
|
||||
function abr_powerkit_module_enabled( $name ) {
|
||||
if ( function_exists( 'powerkit_module_enabled' ) && powerkit_module_enabled( $name ) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_post_views_enabled' ) ) {
|
||||
/**
|
||||
* Check post views module.
|
||||
*
|
||||
* @return string Type.
|
||||
*/
|
||||
function abr_post_views_enabled() {
|
||||
|
||||
// Post Views Counter.
|
||||
if ( class_exists( 'Post_Views_Counter' ) ) {
|
||||
return 'post_views';
|
||||
}
|
||||
|
||||
// Powerkit Post Views.
|
||||
if ( abr_powerkit_module_enabled( 'post_views' ) ) {
|
||||
return 'pk_post_views';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_available_image_sizes' ) ) {
|
||||
/**
|
||||
* Get the available image sizes
|
||||
*/
|
||||
function abr_get_available_image_sizes() {
|
||||
$wais = & $GLOBALS['_wp_additional_image_sizes'];
|
||||
|
||||
$sizes = array();
|
||||
$image_sizes = get_intermediate_image_sizes();
|
||||
|
||||
if ( is_array( $image_sizes ) && $image_sizes ) {
|
||||
foreach ( $image_sizes as $size ) {
|
||||
if ( in_array( $size, array( 'thumbnail', 'medium', 'medium_large', 'large' ), true ) ) {
|
||||
$sizes[ $size ] = array(
|
||||
'width' => get_option( "{$size}_size_w" ),
|
||||
'height' => get_option( "{$size}_size_h" ),
|
||||
'crop' => (bool) get_option( "{$size}_crop" ),
|
||||
);
|
||||
} elseif ( isset( $wais[ $size ] ) ) {
|
||||
$sizes[ $size ] = array(
|
||||
'width' => $wais[ $size ]['width'],
|
||||
'height' => $wais[ $size ]['height'],
|
||||
'crop' => $wais[ $size ]['crop'],
|
||||
);
|
||||
}
|
||||
|
||||
// Size registered, but has 0 width and height.
|
||||
if ( 0 === (int) $sizes[ $size ]['width'] && 0 === (int) $sizes[ $size ]['height'] ) {
|
||||
unset( $sizes[ $size ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $sizes;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_image_size' ) ) {
|
||||
/**
|
||||
* Gets the data of a specific image size.
|
||||
*
|
||||
* @param string $size Name of the size.
|
||||
*/
|
||||
function abr_get_image_size( $size ) {
|
||||
if ( ! is_string( $size ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$sizes = abr_get_available_image_sizes();
|
||||
|
||||
return isset( $sizes[ $size ] ) ? $sizes[ $size ] : false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_list_available_image_sizes' ) ) {
|
||||
/**
|
||||
* Get the list available image sizes
|
||||
*/
|
||||
function abr_get_list_available_image_sizes() {
|
||||
$intermediate_image_sizes = get_intermediate_image_sizes();
|
||||
|
||||
$image_sizes = array();
|
||||
|
||||
foreach ( $intermediate_image_sizes as $size ) {
|
||||
$image_sizes[ $size ] = $size;
|
||||
|
||||
$data = abr_get_image_size( $size );
|
||||
|
||||
if ( isset( $data['width'] ) || isset( $data['height'] ) ) {
|
||||
|
||||
$width = '~';
|
||||
$height = '~';
|
||||
|
||||
if ( isset( $data['width'] ) && $data['width'] ) {
|
||||
$width = $data['width'] . 'px';
|
||||
}
|
||||
if ( isset( $data['height'] ) && $data['height'] ) {
|
||||
$height = $data['height'] . 'px';
|
||||
}
|
||||
|
||||
$image_sizes[ $size ] .= sprintf( ' [%s, %s]', $width, $height );
|
||||
}
|
||||
}
|
||||
|
||||
$image_sizes = apply_filters( 'abr_list_available_image_sizes', $image_sizes );
|
||||
|
||||
return $image_sizes;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_post_metadata' ) ) {
|
||||
/**
|
||||
* Retrieves a post meta field for the given post ID.
|
||||
*
|
||||
* @param int $post_id Post ID.
|
||||
* @param string $key Optional. The meta key to retrieve. By default, returns
|
||||
* data for all keys. Default empty.
|
||||
* @param bool $single Optional. If true, returns only the first value for the specified meta key.
|
||||
* This parameter has no effect if $key is not specified. Default false.
|
||||
* @param mixed $default Default value.
|
||||
* @return mixed Will be an array if $single is false. Will be value of the meta
|
||||
* field if $single is true.
|
||||
*/
|
||||
function abr_get_post_metadata( $post_id, $key = '', $single = false, $default = null ) {
|
||||
|
||||
if ( ! metadata_exists( 'post', $post_id, $key ) && $default ) {
|
||||
return $default;
|
||||
}
|
||||
|
||||
return get_metadata( 'post', $post_id, $key, $single );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_default_post_types' ) ) {
|
||||
/**
|
||||
* Return default post types.
|
||||
*/
|
||||
function abr_default_post_types() {
|
||||
$types = array(
|
||||
'post' => 'post',
|
||||
);
|
||||
|
||||
return apply_filters( 'abr_default_post_types', $types );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_default_indicators' ) ) {
|
||||
/**
|
||||
* Return default indicators.
|
||||
*/
|
||||
function abr_default_indicators() {
|
||||
$indicators = array(
|
||||
0 => array(
|
||||
'name' => 'None',
|
||||
),
|
||||
1 => array(
|
||||
'name' => 'Awfully',
|
||||
),
|
||||
2 => array(
|
||||
'name' => 'Very bad',
|
||||
),
|
||||
3 => array(
|
||||
'name' => 'Bad',
|
||||
),
|
||||
4 => array(
|
||||
'name' => 'Passably',
|
||||
),
|
||||
5 => array(
|
||||
'name' => 'Neutral',
|
||||
),
|
||||
6 => array(
|
||||
'name' => 'Normal',
|
||||
),
|
||||
7 => array(
|
||||
'name' => 'Good',
|
||||
),
|
||||
8 => array(
|
||||
'name' => 'Very good',
|
||||
),
|
||||
9 => array(
|
||||
'name' => 'Amazing',
|
||||
),
|
||||
10 => array(
|
||||
'name' => 'The best',
|
||||
),
|
||||
);
|
||||
|
||||
return apply_filters( 'abr_default_indicators', $indicators );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_list_indicators' ) ) {
|
||||
/**
|
||||
* Return list indicators.
|
||||
*/
|
||||
function abr_list_indicators() {
|
||||
$indicators = abr_default_indicators();
|
||||
|
||||
// Disable all indicators.
|
||||
if ( get_option( 'abr_review_disable_indicators', false ) ) {
|
||||
$indicators = array();
|
||||
}
|
||||
|
||||
// Set custom name for indicators.
|
||||
foreach ( $indicators as $index => $value ) {
|
||||
$indicators[ $index ]['name'] = get_option( "abr_review_indicator_label_{$index}", $indicators[ $index ]['name'] );
|
||||
}
|
||||
|
||||
return $indicators;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_the_review' ) ) {
|
||||
/**
|
||||
* Post Review
|
||||
*
|
||||
* @param int $post_id Post ID.
|
||||
*/
|
||||
function abr_the_review( $post_id = null ) {
|
||||
|
||||
if ( ! $post_id ) {
|
||||
$post_id = get_the_ID();
|
||||
}
|
||||
|
||||
if ( ! $post_id ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$post_type = get_post_type( $post_id );
|
||||
|
||||
// Get types of option.
|
||||
$option_types = get_option( 'abr_review_post_types', abr_default_post_types() );
|
||||
|
||||
if ( ! in_array( $post_type, $option_types, true ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check display.
|
||||
if ( ! abr_get_post_metadata( $post_id, '_abr_review_settings', true ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Params.
|
||||
$params = array(
|
||||
'type' => abr_get_post_metadata( $post_id, '_abr_review_type', true, 'percentage' ),
|
||||
'items' => abr_get_post_metadata( $post_id, '_abr_review_items', true, array() ),
|
||||
'heading' => abr_get_post_metadata( $post_id, '_abr_review_heading', true ),
|
||||
'desc' => abr_get_post_metadata( $post_id, '_abr_review_desc', true ),
|
||||
'main_scale' => abr_get_post_metadata( $post_id, '_abr_review_main_scale', true, true ),
|
||||
'total_score_number' => abr_get_post_metadata( $post_id, '_abr_review_total_score_number', true ),
|
||||
'pros_heading' => abr_get_post_metadata( $post_id, '_abr_review_pros_heading', true ),
|
||||
'pros_items' => abr_get_post_metadata( $post_id, '_abr_review_pros_items', true, array() ),
|
||||
'cons_heading' => abr_get_post_metadata( $post_id, '_abr_review_cons_heading', true ),
|
||||
'cons_items' => abr_get_post_metadata( $post_id, '_abr_review_cons_items', true, array() ),
|
||||
'legend' => abr_get_post_metadata( $post_id, '_abr_review_legend', true ),
|
||||
'schema_heading' => abr_get_post_metadata( $post_id, '_abr_review_schema_heading', true ),
|
||||
'schema_desc' => abr_get_post_metadata( $post_id, '_abr_review_schema_desc', true ),
|
||||
'schema_author' => abr_get_post_metadata( $post_id, '_abr_review_schema_author', true ),
|
||||
'schema_author_custom' => abr_get_post_metadata( $post_id, '_abr_review_schema_author_custom', true ),
|
||||
);
|
||||
|
||||
abr_review_display_block( $params );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_review' ) ) {
|
||||
/**
|
||||
* Get review of post
|
||||
*
|
||||
* @param bool $format Do you format the result?.
|
||||
* @param int $post_id Post ID.
|
||||
*/
|
||||
function abr_get_review( $format = false, $post_id = null ) {
|
||||
if ( ! $post_id ) {
|
||||
$post_id = get_the_ID();
|
||||
}
|
||||
|
||||
if ( ! $post_id ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( ! abr_get_post_metadata( $post_id, '_abr_review_settings', true ) ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$review_type = abr_get_post_metadata( $post_id, '_abr_review_type', true, 'percentage' );
|
||||
|
||||
$total_score = (float) abr_get_post_metadata( $post_id, '_abr_review_total_score_number', true );
|
||||
|
||||
// Vars.
|
||||
switch ( $review_type ) {
|
||||
case 'percentage':
|
||||
$max = 100;
|
||||
break;
|
||||
case 'point-5':
|
||||
$max = 5;
|
||||
break;
|
||||
case 'point-10':
|
||||
$max = 10;
|
||||
break;
|
||||
case 'star':
|
||||
$max = 5;
|
||||
break;
|
||||
}
|
||||
|
||||
// Formating value.
|
||||
if ( $total_score && $format ) {
|
||||
if ( 'percentage' === $review_type ) {
|
||||
$total_score = sprintf( '%s%%', $total_score );
|
||||
} else {
|
||||
$total_score = sprintf( '%s/%s', $total_score, $max );
|
||||
}
|
||||
}
|
||||
|
||||
return $total_score;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_review_get_val_index' ) ) {
|
||||
/**
|
||||
* Get value index for post review
|
||||
*
|
||||
* @param string $type The type of review.
|
||||
* @param float $value The value.
|
||||
*/
|
||||
function abr_review_get_val_index( $type, $value ) {
|
||||
$val_index = $value;
|
||||
|
||||
if ( 'star' === $type ) {
|
||||
$val_index = round( $value * 2 - 1 );
|
||||
}
|
||||
|
||||
if ( 'point-5' === $type ) {
|
||||
$val_index = round( $value * 2 - 1 );
|
||||
}
|
||||
|
||||
if ( 'percentage' === $type ) {
|
||||
$val_index = round( $value / 10 );
|
||||
}
|
||||
|
||||
return $val_index;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_review_get_type' ) ) {
|
||||
/**
|
||||
* Get type review of post
|
||||
*
|
||||
* @param int $post_id Post ID.
|
||||
* @param mixed $default Return default.
|
||||
*/
|
||||
function abr_review_get_type( $post_id = null, $default = false ) {
|
||||
|
||||
if ( ! $post_id ) {
|
||||
$post_id = get_the_ID();
|
||||
}
|
||||
|
||||
if ( ! $post_id ) {
|
||||
return $default;
|
||||
}
|
||||
|
||||
return abr_get_post_metadata( $post_id, '_abr_review_type', true, $default );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_review_star_rating' ) ) {
|
||||
/**
|
||||
* Output a HTML element with a star rating for a given rating.
|
||||
*
|
||||
* @param array $args {
|
||||
* Optional. Array of star ratings arguments.
|
||||
*
|
||||
* @type int|float $rating The rating to display, expressed in either a 0.5 rating increment,
|
||||
* or percentage. Default 0.
|
||||
* @type string $type Format that the $rating is in. Valid values are 'rating' (default),
|
||||
* or, 'percent'. Default 'rating'.
|
||||
* @type int $number The number of ratings that makes up this rating. Default 0.
|
||||
* @type bool $echo Whether to echo the generated markup. False to return the markup instead
|
||||
* of echoing it. Default true.
|
||||
* }
|
||||
*/
|
||||
function abr_review_star_rating( $args = array() ) {
|
||||
$defaults = array(
|
||||
'rating' => 0,
|
||||
'type' => 'rating',
|
||||
'number' => 0,
|
||||
'echo' => true,
|
||||
);
|
||||
$r = wp_parse_args( $args, $defaults );
|
||||
|
||||
// Non-English decimal places when the $rating is coming from a string.
|
||||
$rating = (float) str_replace( ',', '.', $r['rating'] );
|
||||
|
||||
// Convert Percentage to star rating, 0..5 in .5 increments.
|
||||
if ( 'percent' === $r['type'] ) {
|
||||
$rating = round( $rating / 10, 0 ) / 2;
|
||||
}
|
||||
|
||||
// Calculate the number of each type of star needed.
|
||||
$full_stars = floor( $rating );
|
||||
$half_stars = ceil( $rating - $full_stars );
|
||||
$empty_stars = 5 - $full_stars - $half_stars;
|
||||
|
||||
if ( $r['number'] ) {
|
||||
/* translators: 1: the rating, 2: the number of ratings */
|
||||
$format = _n( '%1$s rating based on %2$s rating', '%1$s rating based on %2$s ratings', $r['number'] );
|
||||
$title = sprintf( $format, number_format_i18n( $rating, 1 ), number_format_i18n( $r['number'] ) );
|
||||
} else {
|
||||
/* translators: %s: the rating */
|
||||
$title = sprintf( __( '%s rating' ), number_format_i18n( $rating, 1 ) );
|
||||
}
|
||||
|
||||
$output = '<div class="abr-star-rating">';
|
||||
$output .= '<span class="screen-reader-text">' . $title . '</span>';
|
||||
$output .= str_repeat( '<div class="abr-star abr-star-full" aria-hidden="true"></div>', $full_stars );
|
||||
$output .= str_repeat( '<div class="abr-star abr-star-half" aria-hidden="true"></div>', $half_stars );
|
||||
$output .= str_repeat( '<div class="abr-star abr-star-empty" aria-hidden="true"></div>', $empty_stars );
|
||||
$output .= '</div>';
|
||||
|
||||
if ( $r['echo'] ) {
|
||||
echo (string) $output; // XSS.
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_review_display_rating' ) ) {
|
||||
/**
|
||||
* Display review rating info
|
||||
*
|
||||
* @param string $type The type of review.
|
||||
* @param float $max The max value.
|
||||
* @param float $value The value.
|
||||
* @param string $name The name.
|
||||
* @param bool $label Display label.
|
||||
*/
|
||||
function abr_review_display_rating( $type, $max, $value, $name = null, $label = true ) {
|
||||
|
||||
switch ( $type ) {
|
||||
case 'star':
|
||||
$value = ( $value <= $max ) ? round( $value, 1 ) : $max;
|
||||
break;
|
||||
case 'point-5':
|
||||
case 'point-10':
|
||||
case 'percentage':
|
||||
$value = ( $value <= $max ) ? round( $value ) : $max;
|
||||
break;
|
||||
}
|
||||
|
||||
// Get indicators.
|
||||
$indicators = abr_list_indicators();
|
||||
|
||||
// Set value index.
|
||||
$val_index = abr_review_get_val_index( $type, $value );
|
||||
?>
|
||||
<div class="abr-review-data">
|
||||
<?php if ( $name ) { ?>
|
||||
<div class="abr-review-name">
|
||||
<?php echo esc_html( $name ); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ( 'star' === $type ) : ?>
|
||||
<div class="abr-review-stars">
|
||||
<?php
|
||||
abr_review_star_rating( array(
|
||||
'rating' => $value,
|
||||
'type' => 'rating',
|
||||
'number' => 0,
|
||||
) );
|
||||
?>
|
||||
</div>
|
||||
<?php elseif ( 'point-5' === $type || 'point-10' === $type ) : ?>
|
||||
<div class="abr-review-line">
|
||||
<?php
|
||||
$max_slice = 'point-5' === $type ? 5 : 10;
|
||||
|
||||
for ( $index = 1; $index <= $max_slice; $index++ ) {
|
||||
if ( $index <= $value ) {
|
||||
$class = 'abr-review-slice-active';
|
||||
} else {
|
||||
$class = 'abr-review-slice-no-active';
|
||||
}
|
||||
?>
|
||||
<span class="abr-review-slice <?php echo esc_attr( $class ); ?>"></span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php elseif ( 'percentage' === $type ) : ?>
|
||||
<div class="abr-review-progress">
|
||||
<div class="abr-review-progressbar abr-review-progressbar-<?php echo esc_attr( $val_index ); ?>"></div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( $label ) { ?>
|
||||
<div class="abr-review-label">
|
||||
<span class="abr-review-text">
|
||||
<?php
|
||||
echo wp_kses_post( sprintf( '<span class="total">%s</span><span class="sep">/</span><span class="max">%s</span>', $value, $max ) );
|
||||
?>
|
||||
</span>
|
||||
|
||||
<?php if ( $indicators && $indicators[ $val_index ]['name'] ) { ?>
|
||||
<span class="abr-badge abr-badge-primary abr-review-badge-<?php echo esc_attr( $val_index ); ?>">
|
||||
<?php echo esc_html( $indicators[ $val_index ]['name'] ); ?>
|
||||
</span>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_review_display_block' ) ) {
|
||||
/**
|
||||
* Display review rating
|
||||
*
|
||||
* @param array $params The params of review.
|
||||
*/
|
||||
function abr_review_display_block( $params ) {
|
||||
|
||||
$params = array_merge( array(
|
||||
'variant' => 'default',
|
||||
'type' => 'percentage',
|
||||
'items' => array(),
|
||||
'heading' => '',
|
||||
'desc' => '',
|
||||
'main_scale' => true,
|
||||
'total_label' => esc_html__( 'Total Score', 'absolute-reviews' ),
|
||||
'total_score_number' => '',
|
||||
'pros_heading' => '',
|
||||
'pros_items' => array(),
|
||||
'cons_heading' => '',
|
||||
'cons_items' => array(),
|
||||
'legend' => '',
|
||||
'schema_heading' => '',
|
||||
'schema_desc' => '',
|
||||
'schema_author' => '',
|
||||
'schema_author_custom' => '',
|
||||
), $params );
|
||||
|
||||
// Vars.
|
||||
switch ( $params['type'] ) {
|
||||
case 'percentage':
|
||||
$max = 100;
|
||||
break;
|
||||
case 'point-5':
|
||||
$max = 5;
|
||||
break;
|
||||
case 'point-10':
|
||||
$max = 10;
|
||||
break;
|
||||
case 'star':
|
||||
$max = 5;
|
||||
break;
|
||||
}
|
||||
|
||||
// Get indicators.
|
||||
$indicators = abr_list_indicators();
|
||||
?>
|
||||
<div class="abr-post-review abr-review-<?php echo esc_attr( $params['variant'] ); ?> abr-review-<?php echo esc_attr( $params['type'] ); ?>" itemprop="reviews" itemscope itemtype="http://schema.org/Review">
|
||||
|
||||
<div class="abr-review-author" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
<span itemprop="name">
|
||||
<?php echo esc_html( 'custom' === $params['schema_author'] ? $params['schema_author_custom'] : $params['schema_author'] ); ?>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- Info -->
|
||||
<?php if ( $params['heading'] || $params['desc'] ) { ?>
|
||||
<div class="abr-review-info">
|
||||
|
||||
<div class="abr-review-heading" itemprop="itemReviewed" itemscope itemtype="http://schema.org/Product">
|
||||
<?php
|
||||
// Review title.
|
||||
if ( $params['heading'] ) {
|
||||
?>
|
||||
<h3 class="abr-title abr-review-title"><?php echo esc_html( $params['heading'] ); ?></h3>
|
||||
<?php
|
||||
}
|
||||
|
||||
if ( $params['heading'] || $params['schema_heading'] ) {
|
||||
$heading = $params['schema_heading'] ? $params['schema_heading'] : $params['heading'];
|
||||
?>
|
||||
<span class="abr-review-scheme-hidden" itemprop="name"><?php echo esc_html( $heading ); ?></span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="abr-review-scheme-hidden" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
|
||||
<span itemprop="ratingValue"><?php echo esc_html( $params['total_score_number'] ); ?></span>
|
||||
<span itemprop="bestRating"><?php echo esc_html( $max ); ?></span>
|
||||
<span itemprop="worstRating"><?php echo esc_html( 0 ); ?></span>
|
||||
<span itemprop="reviewCount"><?php echo esc_html( 1 ); ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
// Review desc.
|
||||
if ( $params['desc'] ) {
|
||||
?>
|
||||
<div class="abr-review-description" itemprop="reviewBody"><?php echo wp_kses( $params['desc'], 'post' ); ?></div>
|
||||
<?php
|
||||
}
|
||||
|
||||
if ( $params['desc'] || $params['schema_desc'] ) {
|
||||
$desc = $params['schema_desc'] ? $params['schema_desc'] : $params['desc'];
|
||||
?>
|
||||
<div class="abr-review-scheme-hidden" itemprop="reviewBody"><?php echo wp_kses( $desc, 'post' ); ?></div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Review Total -->
|
||||
<div class="abr-review-total">
|
||||
<?php
|
||||
$total_score = (float) $params['total_score_number'];
|
||||
|
||||
if ( $total_score ) {
|
||||
if ( ! $params['main_scale'] && $params['items'] ) {
|
||||
?>
|
||||
<div class="abr-review-list">
|
||||
<ul>
|
||||
<?php
|
||||
if ( isset( $params['items']['name'] ) && $params['items']['name'] ) {
|
||||
foreach ( $params['items']['name'] as $key => $item_name ) {
|
||||
$item_desc = (string) $params['items']['desc'][ $key ];
|
||||
$item_value = (float) $params['items']['val'][ $key ];
|
||||
|
||||
if ( ! $item_name ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
?>
|
||||
<li class="abr-review-item">
|
||||
<?php abr_review_display_rating( $params['type'], $max, $item_value, $item_name ); ?>
|
||||
|
||||
<div class="abr-review-desc">
|
||||
<?php echo esc_html( $item_desc ); ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
if ( $params['main_scale'] ) {
|
||||
abr_review_display_rating( $params['type'], $max, $total_score, null, false );
|
||||
}
|
||||
?>
|
||||
<div class="abr-review-score <?php echo esc_html( ! $params['total_label'] ? 'abr-review-score-row' : '' ); ?>" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
|
||||
<div class="abr-review-text">
|
||||
<?php
|
||||
echo wp_kses( sprintf( '<span class="total" itemprop="ratingValue">%s</span><span class="sep">/</span><span class="max" itemprop="bestRating">%s</span>', $total_score, $max ), array(
|
||||
'span' => array(
|
||||
'class' => true,
|
||||
'itemprop' => true,
|
||||
),
|
||||
) );
|
||||
?>
|
||||
</div>
|
||||
|
||||
<?php if ( $params['total_label'] || $params['legend'] ) { ?>
|
||||
<div class="abr-review-subtext">
|
||||
<?php if ( $params['total_label'] ) { ?>
|
||||
<span class="abr-data-label"><?php echo esc_html( $params['total_label'] ); ?></span>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ( $params['legend'] ) { ?>
|
||||
<span class="abr-data-info">i<span><?php echo wp_kses_post( $params['legend'] ); ?></span></span>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Review Indicator -->
|
||||
<?php
|
||||
if ( 'block' === $params['variant'] ) {
|
||||
// Set value index.
|
||||
$val_index = abr_review_get_val_index( $params['type'], $total_score );
|
||||
|
||||
if ( $indicators && $indicators[ $val_index ]['name'] ) {
|
||||
?>
|
||||
<div class="abr-review-indicator">
|
||||
<span class="abr-badge abr-badge-primary abr-review-badge-<?php echo esc_attr( $val_index ); ?>">
|
||||
<?php echo esc_html( $indicators[ $val_index ]['name'] ); ?>
|
||||
</span>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- Items List -->
|
||||
<?php if ( $params['items'] && $params['main_scale'] ) { ?>
|
||||
<div class="abr-review-list">
|
||||
<ul>
|
||||
<?php
|
||||
if ( isset( $params['items']['name'] ) && $params['items']['name'] ) {
|
||||
foreach ( $params['items']['name'] as $key => $item_name ) {
|
||||
$item_desc = (string) $params['items']['desc'][ $key ];
|
||||
$item_value = (float) $params['items']['val'][ $key ];
|
||||
|
||||
if ( ! $item_name ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
?>
|
||||
<li class="abr-review-item">
|
||||
<?php abr_review_display_rating( $params['type'], $max, $item_value, $item_name ); ?>
|
||||
|
||||
<div class="abr-review-desc">
|
||||
<?php echo esc_html( $item_desc ); ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Items Pros / Cons -->
|
||||
<?php if ( $params['pros_items'] || $params['cons_items'] ) { ?>
|
||||
<div class="abr-review-details">
|
||||
<?php
|
||||
if ( $params['pros_items'] ) {
|
||||
|
||||
$params['pros_heading'] = $params['pros_heading'] ? $params['pros_heading'] : esc_html__( 'The Good', 'absolute-reviews' );
|
||||
?>
|
||||
<div class="abr-review-items abr-review-pros">
|
||||
<div class="abr-review-title">
|
||||
<h3 class="abr-title"><?php echo esc_html( $params['pros_heading'] ); ?></h3>
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
<?php
|
||||
if ( isset( $params['pros_items']['name'] ) && $params['pros_items']['name'] ) {
|
||||
foreach ( $params['pros_items']['name'] as $key => $name ) {
|
||||
?>
|
||||
<li><?php echo esc_attr( $params['pros_items']['name'][ $key ] ); ?></li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php
|
||||
if ( $params['cons_items'] ) {
|
||||
|
||||
$params['cons_heading'] = $params['cons_heading'] ? $params['cons_heading'] : esc_html__( 'The Bad', 'absolute-reviews' );
|
||||
?>
|
||||
<div class="abr-review-items abr-review-cons">
|
||||
<div class="abr-review-title">
|
||||
<h3 class="abr-title"><?php echo esc_html( $params['cons_heading'] ); ?></h3>
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
<?php
|
||||
if ( isset( $params['cons_items']['name'] ) && $params['cons_items']['name'] ) {
|
||||
foreach ( $params['cons_items']['name'] as $key => $name ) {
|
||||
?>
|
||||
<li class="abr-item"><?php echo esc_attr( $params['cons_items']['name'][ $key ] ); ?></li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_reviews_posts_widget_handler' ) ) {
|
||||
/**
|
||||
* Widget template handler
|
||||
*
|
||||
* @param string $name Specific template.
|
||||
* @param array $posts Array of posts.
|
||||
* @param array $params Array of params.
|
||||
* @param array $instance Widget instance.
|
||||
*/
|
||||
function abr_reviews_posts_widget_handler( $name, $posts, $params, $instance ) {
|
||||
$templates = apply_filters( 'abr_reviews_posts_templates', array() );
|
||||
|
||||
if ( isset( $templates[ $name ] ) && function_exists( $templates[ $name ]['func'] ) ) {
|
||||
call_user_func( $templates[ $name ]['func'], $posts, $params, $instance );
|
||||
} else {
|
||||
call_user_func( 'abr_reviews_posts_template', $posts, $params, $instance );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert Block Post Meta
|
||||
*
|
||||
* @param array $settings Settings of block.
|
||||
* @param string $prefix The prefix.
|
||||
*/
|
||||
function abr_block_convert_post_meta( $settings, $prefix ) {
|
||||
|
||||
$meta = array();
|
||||
|
||||
$list = array(
|
||||
'category' => 'showMetaCategory',
|
||||
'author' => 'showMetaAuthor',
|
||||
'date' => 'showMetaDate',
|
||||
'comments' => 'showMetaComments',
|
||||
'views' => 'showMetaViews',
|
||||
'reading_time' => 'showMetaReadingTime',
|
||||
);
|
||||
|
||||
$list = apply_filters( 'abr_convert_post_meta', $list, $settings, $prefix );
|
||||
|
||||
foreach ( $list as $key => $alt ) {
|
||||
if ( isset( $settings[ $prefix . '_' . $alt ] ) && $settings[ $prefix . '_' . $alt ] ) {
|
||||
$meta[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
return $meta;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php // Silence is golden
|
||||
@@ -0,0 +1,358 @@
|
||||
<?php
|
||||
/**
|
||||
* Post Meta Helper Functions
|
||||
*
|
||||
* These helper functions return post meta.
|
||||
*
|
||||
* @package abr
|
||||
* @subpackage Core
|
||||
* @version 1.0.0
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
if ( ! function_exists( 'abr_allowed_post_meta' ) ) {
|
||||
/**
|
||||
* Allowed Post Meta
|
||||
*
|
||||
* @param bool $compact If compact version shall be displayed.
|
||||
* @param array $exclude Exclude list.
|
||||
*/
|
||||
function abr_allowed_post_meta( $compact = false, $exclude = array() ) {
|
||||
$allowed = array(
|
||||
'category' => esc_html__( 'Category', 'canvas' ),
|
||||
'date' => esc_html__( 'Date', 'canvas' ),
|
||||
'author' => esc_html__( 'Author', 'canvas' ),
|
||||
'comments' => esc_html__( 'Comments count', 'canvas' ),
|
||||
);
|
||||
|
||||
if ( abr_post_views_enabled() ) {
|
||||
$allowed['views'] = esc_html__( 'Views', 'canvas' );
|
||||
}
|
||||
|
||||
if ( abr_powerkit_module_enabled( 'reading_time' ) ) {
|
||||
$allowed['reading_time'] = esc_html__( 'Reading time', 'canvas' );
|
||||
}
|
||||
|
||||
$allowed = apply_filters( 'abr_allowed_post_meta', $allowed );
|
||||
|
||||
// Computes the difference of arrays.
|
||||
$allowed = array_diff_key( $allowed, array_flip( (array) $exclude ) );
|
||||
|
||||
// If compact.
|
||||
if ( $compact ) {
|
||||
return array_keys( $allowed );
|
||||
}
|
||||
|
||||
return $allowed;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_block_post_meta' ) ) {
|
||||
/**
|
||||
* Block Post Meta
|
||||
*
|
||||
* A wrapper function that returns all post meta types either
|
||||
* in an ordered list <ul> or as a single element <span>.
|
||||
*
|
||||
* @param array $settings Settings of block.
|
||||
* @param mixed $meta Contains post meta types.
|
||||
* @param bool $echo Echo or return.
|
||||
* @param bool $compact If meta compact.
|
||||
*/
|
||||
function abr_block_post_meta( $settings, $meta, $echo = true, $compact = false ) {
|
||||
|
||||
$func_handler = apply_filters( 'abr_get_block_post_meta_handler', false );
|
||||
|
||||
if ( $func_handler ) {
|
||||
return call_user_func( $func_handler, $settings, $meta, $echo, $compact );
|
||||
}
|
||||
|
||||
$allowed = array();
|
||||
|
||||
if ( isset( $settings['showMetaCategory'] ) && $settings['showMetaCategory'] ) {
|
||||
$allowed[] = 'category';
|
||||
}
|
||||
|
||||
if ( isset( $settings['showMetaAuthor'] ) && $settings['showMetaAuthor'] ) {
|
||||
$allowed[] = 'author';
|
||||
}
|
||||
|
||||
if ( isset( $settings['showMetaDate'] ) && $settings['showMetaDate'] ) {
|
||||
$allowed[] = 'date';
|
||||
}
|
||||
|
||||
if ( isset( $settings['showMetaComments'] ) && $settings['showMetaComments'] ) {
|
||||
$allowed[] = 'comments';
|
||||
}
|
||||
|
||||
if ( isset( $settings['showMetaViews'] ) && $settings['showMetaViews'] ) {
|
||||
$allowed[] = 'views';
|
||||
}
|
||||
|
||||
if ( isset( $settings['showMetaReadingTime'] ) && $settings['showMetaReadingTime'] ) {
|
||||
$allowed[] = 'reading_time';
|
||||
}
|
||||
|
||||
if ( isset( $settings['metaCompact'] ) && $settings['metaCompact'] ) {
|
||||
$compact = true;
|
||||
}
|
||||
|
||||
$allowed = apply_filters( 'abr_allowed_block_post_meta', $allowed, $settings, $meta, $echo, $compact );
|
||||
|
||||
if ( ! $allowed ) {
|
||||
return;
|
||||
}
|
||||
|
||||
abr_get_post_meta( $meta, $compact, $echo, $allowed );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_post_meta' ) ) {
|
||||
/**
|
||||
* Post Meta
|
||||
*
|
||||
* A wrapper function that returns all post meta types either
|
||||
* in an ordered list <ul> or as a single element <span>.
|
||||
*
|
||||
* @param mixed $meta Contains post meta types.
|
||||
* @param bool $compact If compact version shall be displayed.
|
||||
* @param bool $echo Echo or return.
|
||||
* @param array $allowed Allowed meta types.
|
||||
* @param array $settings The advanced settings.
|
||||
*/
|
||||
function abr_get_post_meta( $meta, $compact = false, $echo = true, $allowed = array(), $settings = array() ) {
|
||||
|
||||
$func_handler = apply_filters( 'abr_get_post_meta_handler', false );
|
||||
|
||||
if ( $func_handler ) {
|
||||
return call_user_func( $func_handler, $meta, $compact, $echo, $allowed, $settings );
|
||||
}
|
||||
|
||||
// Return if no post meta types provided.
|
||||
if ( ! $meta ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Set default allowed post meta types.
|
||||
if ( ! $allowed ) {
|
||||
$allowed = abr_allowed_post_meta();
|
||||
}
|
||||
|
||||
if ( is_array( $meta ) ) {
|
||||
// Intersect provided and allowed meta types.
|
||||
$meta = array_intersect( $allowed, $meta );
|
||||
}
|
||||
|
||||
$output = null;
|
||||
|
||||
if ( $meta && is_array( $meta ) ) {
|
||||
|
||||
$output .= '<ul class="abr-post-meta post-meta">';
|
||||
|
||||
// Add normal meta types to the list.
|
||||
foreach ( $meta as $type ) {
|
||||
$function = "abr_get_meta_$type";
|
||||
|
||||
if ( function_exists( $function ) ) {
|
||||
$output .= $function( 'li', $compact );
|
||||
}
|
||||
}
|
||||
|
||||
$output .= '</ul>';
|
||||
|
||||
} else {
|
||||
if ( in_array( $meta, $allowed, true ) ) {
|
||||
// Output single meta type.
|
||||
$function = "abr_get_meta_$meta";
|
||||
|
||||
if ( function_exists( $function ) ) {
|
||||
$output .= $function( 'div', $compact );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( $echo ) {
|
||||
echo (string) $output; // XSS ok.
|
||||
} else {
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_meta_date' ) ) {
|
||||
/**
|
||||
* Post Date
|
||||
*
|
||||
* @param string $tag Element tag, i.e. div or span.
|
||||
* @param bool $compact If compact version shall be displayed.
|
||||
*/
|
||||
function abr_get_meta_date( $tag = 'span', $compact = false ) {
|
||||
|
||||
$output = '<' . esc_html( $tag ) . ' class="abr-meta-date meta-date">';
|
||||
|
||||
if ( false === $compact ) {
|
||||
$time_string = get_the_date();
|
||||
} else {
|
||||
$time_string = get_the_date( 'd.m.y' );
|
||||
}
|
||||
|
||||
$output .= apply_filters( 'abr_post_meta_date_output', '<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>' );
|
||||
|
||||
$output .= '</' . esc_html( $tag ) . '>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_meta_author' ) ) {
|
||||
/**
|
||||
* Post Author
|
||||
*
|
||||
* @param string $tag Element tag, i.e. div or span.
|
||||
* @param bool $compact If compact version shall be displayed.
|
||||
*/
|
||||
function abr_get_meta_author( $tag = 'span', $compact = false ) {
|
||||
|
||||
$authors = array( get_the_author_meta( 'ID' ) );
|
||||
|
||||
$output = '<' . esc_html( $tag ) . ' class="abr-meta-author meta-author">';
|
||||
|
||||
$output .= sprintf(
|
||||
'<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>',
|
||||
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
|
||||
/* translators: %s: author name */
|
||||
esc_attr( sprintf( __( 'View all posts by %s', 'absolute-reviews' ), get_the_author() ) ),
|
||||
// Author.
|
||||
get_the_author()
|
||||
);
|
||||
|
||||
$output .= '</' . esc_html( $tag ) . '>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_meta_category' ) ) {
|
||||
/**
|
||||
* Post Сategory
|
||||
*
|
||||
* @param string $tag Element tag, i.e. div or span.
|
||||
* @param bool $compact If compact version shall be displayed.
|
||||
* @param int $post_id Post ID.
|
||||
*/
|
||||
function abr_get_meta_category( $tag = 'span', $compact = false, $post_id = null ) {
|
||||
|
||||
if ( ! $post_id ) {
|
||||
$post_id = get_the_ID();
|
||||
}
|
||||
|
||||
$output = '<' . esc_html( $tag ) . ' class="abr-meta-category meta-category">';
|
||||
|
||||
$output .= get_the_category_list( '', '', $post_id );
|
||||
|
||||
$output .= '</' . esc_html( $tag ) . '>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_meta_comments' ) ) {
|
||||
/**
|
||||
* Post Comments
|
||||
*
|
||||
* @param string $tag Element tag, i.e. div or span.
|
||||
* @param bool $compact If compact version shall be displayed.
|
||||
*/
|
||||
function abr_get_meta_comments( $tag = 'span', $compact = false ) {
|
||||
$output = '';
|
||||
|
||||
$output .= '<' . esc_html( $tag ) . ' class="abr-meta-comments meta-comments">';
|
||||
|
||||
if ( true === $compact ) {
|
||||
$output .= '<i class="abr-icon abr-icon-comment"></i>';
|
||||
ob_start();
|
||||
comments_popup_link( '0', '1', '%', 'comments-link', '' );
|
||||
$output .= ob_get_clean();
|
||||
} else {
|
||||
ob_start();
|
||||
comments_popup_link( esc_html__( 'No comments', 'absolute-reviews' ), esc_html__( 'One comment', 'absolute-reviews' ), '% ' . esc_html__( 'comments', 'absolute-reviews' ), 'comments-link', '' );
|
||||
$output .= ob_get_clean();
|
||||
}
|
||||
|
||||
$output .= '</' . esc_html( $tag ) . '>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_meta_reading_time' ) ) {
|
||||
/**
|
||||
* Post Reading Time
|
||||
*
|
||||
* @param string $tag Element tag, i.e. div or span.
|
||||
* @param bool $compact If compact version shall be displayed.
|
||||
*/
|
||||
function abr_get_meta_reading_time( $tag = 'span', $compact = false ) {
|
||||
|
||||
if ( ! function_exists( 'powerkit_module_enabled' ) || ! powerkit_module_enabled( 'reading_time' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$reading_time = powerkit_get_post_reading_time();
|
||||
|
||||
$output = '<' . esc_html( $tag ) . ' class="abr-meta-reading-time meta-reading-time">';
|
||||
|
||||
if ( true === $compact ) {
|
||||
$output .= '<i class="abr-icon abr-icon-watch"></i>' . intval( $reading_time ) . ' ' . esc_html( 'min', 'absolute-reviews' );
|
||||
} else {
|
||||
/* translators: %s number of minutes */
|
||||
$output .= esc_html( sprintf( _n( '%s minute read', '%s minute read', $reading_time, 'absolute-reviews' ), $reading_time ) );
|
||||
}
|
||||
|
||||
$output .= '</' . esc_html( $tag ) . '>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'abr_get_meta_views' ) ) {
|
||||
/**
|
||||
* Post Reading Time
|
||||
*
|
||||
* @param string $tag Element tag, i.e. div or span.
|
||||
* @param bool $compact If compact version shall be displayed.
|
||||
*/
|
||||
function abr_get_meta_views( $tag = 'span', $compact = false ) {
|
||||
|
||||
switch ( abr_post_views_enabled() ) {
|
||||
case 'post_views':
|
||||
$views = pvc_get_post_views();
|
||||
break;
|
||||
case 'pk_post_views':
|
||||
$views = powerkit_get_post_views( null, false );
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't display if minimum threshold is not met.
|
||||
if ( $views < apply_filters( 'abr_post_minimum_views', 1 ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$output = '<' . esc_html( $tag ) . ' class="abr-meta-views meta-views">';
|
||||
|
||||
$views_rounded = powerkit_get_round_number( $views );
|
||||
|
||||
if ( true === $compact ) {
|
||||
$output .= '<i class="abr-icon abr-icon-eye"></i>' . esc_html( $views_rounded );
|
||||
} else {
|
||||
/* translators: %s number of post views */
|
||||
$output .= esc_html( sprintf( _n( '%s view', '%s views', $views, 'absolute-reviews' ), $views_rounded ) );
|
||||
}
|
||||
|
||||
$output .= '</' . esc_html( $tag ) . '>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php // Silence is golden
|
||||
@@ -0,0 +1,464 @@
|
||||
# Copyright (C) 2022 absolute-reviews
|
||||
# This file is distributed under the same license as the absolute-reviews package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: absolute-reviews\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language-Team: Code Supply Co. <hello@codesupply.co>\n"
|
||||
"Last-Translator: Code Supply Co. <hello@codesupply.co>\n"
|
||||
"Report-Msgid-Bugs-To: https://codesupply.co/contact/\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:57, admin/class-absolute-reviews-admin.php:57, public/class-absolute-reviews-block.php:51
|
||||
msgid "Reviews"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:68
|
||||
msgid "You do not have sufficient rights to view this page."
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:77
|
||||
msgid "Reviews Settings"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:81
|
||||
msgid "Indicators of the progress bar"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:89
|
||||
msgid "Indicator"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:90
|
||||
msgid "Default:"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:93
|
||||
msgid "Label"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:99
|
||||
msgid "Disable all indicators on the front end"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:108
|
||||
msgid "Supported Post Types"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:114
|
||||
msgid "Enable reviews for the following post types"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:148
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:187
|
||||
msgid "Settings saved."
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:199
|
||||
msgid "Review Options"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:242
|
||||
msgid "Enable Review"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:247
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:248
|
||||
msgid "Criteria"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:249
|
||||
msgid "Pros / Cons"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:250, public/class-absolute-reviews-block.php:71
|
||||
msgid "Schema Attributes"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:256, public/class-absolute-reviews-block.php:162, public/class-absolute-reviews-posts-block.php:451
|
||||
msgid "Heading"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:264, admin/class-absolute-reviews-admin.php:342, admin/class-absolute-reviews-admin.php:343, admin/class-absolute-reviews-admin.php:378, admin/class-absolute-reviews-admin.php:379, public/class-absolute-reviews-block.php:169
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:272, public/class-absolute-reviews-block.php:176
|
||||
msgid "Legend"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:280
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:284, public/class-absolute-reviews-block.php:81, public/class-absolute-reviews-posts-block.php:255, public/class-absolute-reviews-posts-widget.php:248
|
||||
msgid "Percentage (1-100%)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:285, public/class-absolute-reviews-block.php:101, public/class-absolute-reviews-posts-block.php:256, public/class-absolute-reviews-posts-widget.php:249
|
||||
msgid "Points (1-5)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:286, public/class-absolute-reviews-block.php:121, public/class-absolute-reviews-posts-block.php:257, public/class-absolute-reviews-posts-widget.php:250
|
||||
msgid "Points (1-10)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:287, public/class-absolute-reviews-block.php:140, public/class-absolute-reviews-posts-block.php:258, public/class-absolute-reviews-posts-widget.php:251
|
||||
msgid "Stars (1-5)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:293
|
||||
msgid "Main Scale"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:301
|
||||
msgid "Auto Сalculate Total Score"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:309, includes/helpers-absolute-reviews.php:576, public/class-absolute-reviews-block.php:89, public/class-absolute-reviews-block.php:109, public/class-absolute-reviews-block.php:129, public/class-absolute-reviews-block.php:148, public/class-absolute-reviews-block.php:186
|
||||
msgid "Total Score"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:324, admin/class-absolute-reviews-admin.php:360
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:325, admin/class-absolute-reviews-admin.php:361
|
||||
msgid "Click to toggle"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:326, admin/class-absolute-reviews-admin.php:333, admin/class-absolute-reviews-admin.php:362, admin/class-absolute-reviews-admin.php:369
|
||||
msgid "Criterion"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:332, admin/class-absolute-reviews-admin.php:333, admin/class-absolute-reviews-admin.php:368, admin/class-absolute-reviews-admin.php:369, admin/class-absolute-reviews-admin.php:422, admin/class-absolute-reviews-admin.php:446, admin/class-absolute-reviews-admin.php:492, admin/class-absolute-reviews-admin.php:516
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:337, admin/class-absolute-reviews-admin.php:373
|
||||
msgid "Value"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:393
|
||||
msgid "Add new criterion"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:399
|
||||
msgid "Pros Heading"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:402, includes/helpers-absolute-reviews.php:787
|
||||
msgid "The Good"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:407
|
||||
msgid "Pros List"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:422, admin/class-absolute-reviews-admin.php:446, admin/class-absolute-reviews-admin.php:492, admin/class-absolute-reviews-admin.php:516
|
||||
msgid "Item"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:462
|
||||
msgid "Add new pros item"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:469
|
||||
msgid "Cons Heading"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:472, includes/helpers-absolute-reviews.php:811
|
||||
msgid "The Bad"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:477
|
||||
msgid "Cons List"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:532
|
||||
msgid "Add new cons item"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:540
|
||||
msgid "Item Reviewed"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:541
|
||||
msgid "Heading will be used if blank."
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:549
|
||||
msgid "Review Text"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:550
|
||||
msgid "Description will be used if blank."
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:558
|
||||
msgid "Review Author"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:602
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-absolute-reviews-admin.php:608, public/class-absolute-reviews-block.php:190
|
||||
msgid "Custom Author"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %s: author name
|
||||
#: includes/post-meta.php:224
|
||||
msgid "View all posts by %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-meta.php:278
|
||||
msgid "No comments"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-meta.php:278
|
||||
msgid "One comment"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-meta.php:278
|
||||
msgid "comments"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %s number of minutes
|
||||
#: includes/post-meta.php:309
|
||||
msgid "%s minute read"
|
||||
msgid_plural "%s minute read"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. translators: %s number of post views
|
||||
#: includes/post-meta.php:351
|
||||
msgid "%s view"
|
||||
msgid_plural "%s views"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: public/class-absolute-reviews-block.php:52
|
||||
msgid "The block allows you to display images from your review account."
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-block.php:66, public/class-absolute-reviews-posts-block.php:202
|
||||
msgid "Block Settings"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-block.php:75, public/class-absolute-reviews-posts-block.php:219
|
||||
msgid "Typography Settings"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-block.php:183
|
||||
msgid "Total Score Label"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:137, public/class-absolute-reviews-public.php:92
|
||||
msgid "Reviews 1"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:139, public/class-absolute-reviews-public.php:96
|
||||
msgid "Reviews 2"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:141, public/class-absolute-reviews-public.php:100
|
||||
msgid "Reviews 3"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:143, public/class-absolute-reviews-public.php:104
|
||||
msgid "Reviews 4"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:145, public/class-absolute-reviews-public.php:108
|
||||
msgid "Reviews 5"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:147, public/class-absolute-reviews-public.php:112
|
||||
msgid "Reviews 6"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:149, public/class-absolute-reviews-public.php:116
|
||||
msgid "Reviews 7"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:151, public/class-absolute-reviews-public.php:120
|
||||
msgid "Reviews 8"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:207
|
||||
msgid "Large Post Meta Settings"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:211
|
||||
msgid "Small Post Meta Settings"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:215
|
||||
msgid "Thumbnail Settings"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:249
|
||||
msgid "Filter by Review Type"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:254, public/class-absolute-reviews-posts-widget.php:247
|
||||
msgid "All types"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:264
|
||||
msgid "Posts Count"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:273
|
||||
msgid "Image Size"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:298
|
||||
msgid "Large Post Image Size"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:325
|
||||
msgid "Small Post Image Size"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:353
|
||||
msgid "Heading Font Size"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:384
|
||||
msgid "Heading Post Large Font Size"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:417
|
||||
msgid "Heading Post Small Font Size"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:465
|
||||
msgid "Heading Hover"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:479
|
||||
msgid "Post Meta"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:493
|
||||
msgid "Post Meta Links"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-block.php:507
|
||||
msgid "Post Meta Links Hover"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:48
|
||||
msgid "Display a list of your reviews posts."
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:50
|
||||
msgid "Reviews Posts"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:219
|
||||
msgid "Title:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:227
|
||||
msgid "Template:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:240
|
||||
msgid "Number of posts:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:245
|
||||
msgid "Filter by Review Type:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:257
|
||||
msgid "Order by:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:259
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:260
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:261
|
||||
msgid "Random"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:264
|
||||
msgid "Views"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:271
|
||||
msgid "Order"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:273
|
||||
msgid "Descending"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:274
|
||||
msgid "Ascending"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:279
|
||||
msgid "Time frame:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:280
|
||||
msgid "3 months"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:284
|
||||
msgid "Category:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:309, public/class-absolute-reviews-posts-widget.php:337, public/class-absolute-reviews-posts-widget.php:365
|
||||
msgid "Image size:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:320, public/class-absolute-reviews-posts-widget.php:348, public/class-absolute-reviews-posts-widget.php:376
|
||||
msgid "Post meta:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:328, public/class-absolute-reviews-posts-widget.php:356, public/class-absolute-reviews-posts-widget.php:384
|
||||
msgid "Compact post meta:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:330, public/class-absolute-reviews-posts-widget.php:358, public/class-absolute-reviews-posts-widget.php:386
|
||||
msgid "Display compact post meta"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:334
|
||||
msgid "Large Post"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:362
|
||||
msgid "Small Post"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:390
|
||||
msgid "Avoid duplicate posts:"
|
||||
msgstr ""
|
||||
|
||||
#: public/class-absolute-reviews-posts-widget.php:392
|
||||
msgid "Exclude duplicate posts"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* Review block template
|
||||
*
|
||||
* @var $attributes - block attributes
|
||||
* @var $options - layout options
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
|
||||
switch ( $attributes['layout'] ) {
|
||||
case 'percentage':
|
||||
$total_score = $options['total_score_percentage'];
|
||||
break;
|
||||
case 'point-5':
|
||||
$total_score = $options['total_score_point_5'];
|
||||
break;
|
||||
case 'point-10':
|
||||
$total_score = $options['total_score_point_10'];
|
||||
break;
|
||||
case 'star':
|
||||
$total_score = $options['total_score_star'];
|
||||
break;
|
||||
default:
|
||||
$total_score = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
$params = array(
|
||||
'variant' => 'block',
|
||||
'type' => $attributes['layout'],
|
||||
'heading' => $attributes['heading'],
|
||||
'desc' => $attributes['desc'],
|
||||
'legend' => $attributes['legend'],
|
||||
'total_label' => $attributes['total_score_label'],
|
||||
'total_score_number' => $total_score,
|
||||
'main_scale' => true,
|
||||
'auto_score' => false,
|
||||
);
|
||||
|
||||
$params['schema_author'] = get_post_meta( get_queried_object_id(), '_abr_review_schema_author', true );
|
||||
$params['schema_author_custom'] = get_post_meta( get_queried_object_id(), '_abr_review_schema_author_custom', true );
|
||||
|
||||
if ( isset( $attributes['schema_author_custom'] ) && $attributes['schema_author_custom'] ) {
|
||||
$params['schema_author'] = 'custom';
|
||||
$params['schema_author_custom'] = $attributes['schema_author_custom'];
|
||||
}
|
||||
|
||||
echo '<div class="' . esc_attr( $attributes['className'] ) . '" ' . ( isset( $attributes['anchor'] ) ? ' id="' . esc_attr( $attributes['anchor'] ) . '"' : '' ) . '>';
|
||||
|
||||
abr_review_display_block( $params );
|
||||
|
||||
echo '</div>';
|
||||
@@ -0,0 +1,261 @@
|
||||
<?php
|
||||
/**
|
||||
* The Gutenberg Block.
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/includes
|
||||
*/
|
||||
|
||||
/**
|
||||
* The initialize block.
|
||||
*/
|
||||
class ABR_Review_Block {
|
||||
|
||||
/**
|
||||
* Initialize
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'init', array( $this, 'block' ) );
|
||||
add_filter( 'canvas_register_block_type', array( $this, 'register_block_type' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue the block's assets for the editor.
|
||||
*/
|
||||
public function block() {
|
||||
// Styles.
|
||||
wp_register_style(
|
||||
'absolute-reviews-block-editor-style',
|
||||
ABR_URL . 'public/css/absolute-reviews-public.css',
|
||||
array( 'wp-edit-blocks' ),
|
||||
filemtime( ABR_PATH . 'public/css/absolute-reviews-public.css' )
|
||||
);
|
||||
|
||||
wp_style_add_data( 'absolute-reviews-block-editor-style', 'rtl', 'replace' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Register block
|
||||
*
|
||||
* @param array $blocks all registered blocks.
|
||||
* @return array
|
||||
*/
|
||||
public function register_block_type( $blocks ) {
|
||||
|
||||
// Add block.
|
||||
$blocks[] = array(
|
||||
'name' => 'canvas/absolute-reviews',
|
||||
'title' => esc_html__( 'Reviews', 'absolute-reviews' ),
|
||||
'description' => esc_html__( 'The block allows you to display images from your review account.', 'absolute-reviews' ),
|
||||
'category' => 'canvas',
|
||||
'keywords' => array(),
|
||||
'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><rect x="0" fill="none" width="20" height="20"/><g><path d="M10 1l3 6 6 .75-4.12 4.62L16 19l-6-3-6 3 1.13-6.63L1 7.75 7 7z"/></g></svg>',
|
||||
'supports' => array(
|
||||
'className' => true,
|
||||
'anchor' => true,
|
||||
'html' => false,
|
||||
'canvasSpacings' => true,
|
||||
),
|
||||
'styles' => array(),
|
||||
'location' => array(),
|
||||
'sections' => array(
|
||||
'general' => array(
|
||||
'title' => esc_html__( 'Block Settings', 'absolute-reviews' ),
|
||||
'priority' => 5,
|
||||
'open' => true,
|
||||
),
|
||||
'schema_attrs' => array(
|
||||
'title' => esc_html__( 'Schema Attributes', 'absolute-reviews' ),
|
||||
'priority' => 10,
|
||||
),
|
||||
'typography' => array(
|
||||
'title' => esc_html__( 'Typography Settings', 'absolute-reviews' ),
|
||||
'priority' => 10,
|
||||
),
|
||||
),
|
||||
'layouts' => array(
|
||||
'percentage' => array(
|
||||
'name' => esc_html__( 'Percentage (1-100%)', 'absolute-reviews' ),
|
||||
'icon' => '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><path d="M19 19.429h18.286M19 16h24m-24-3.429h20.571M7 30.429h33.75M7 27h31.5M7 23.571h36" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/><path fill="#2D2D2D" d="M7 12h8v8H7z"/><path d="M13 19a1 1 0 110-2 1 1 0 010 2zm-4-4a1 1 0 110-2 1 1 0 010 2zm4.5-2l.5.5L8.5 19l-.5-.5 5.5-5.5z" fill="#FFF" fill-rule="nonzero"/></g></svg>',
|
||||
'location' => array(),
|
||||
'template' => dirname( __FILE__ ) . '/block/render.php',
|
||||
'sections' => array(),
|
||||
'fields' => array(
|
||||
array(
|
||||
'key' => 'total_score_percentage',
|
||||
'label' => esc_html__( 'Total Score', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'number',
|
||||
'step' => 1,
|
||||
'min' => 1,
|
||||
'max' => 100,
|
||||
'default' => 50,
|
||||
|
||||
),
|
||||
),
|
||||
),
|
||||
'point-5' => array(
|
||||
'name' => esc_html__( 'Points (1-5)', 'absolute-reviews' ),
|
||||
'icon' => '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><g stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"><path d="M7 25.5h27m-27-4h36m-36-4h31M7 29.571h36"/></g><path fill="#2D2D2D" d="M7 12h5v2H7zM13 12h5v2h-5zM19 12h5v2h-5zM25 12h5v2h-5z"/><path fill="#C7C7C7" d="M31 12h5v2h-5zM37 12h5v2h-5z"/></g></svg>',
|
||||
'location' => array(),
|
||||
'template' => dirname( __FILE__ ) . '/block/render.php',
|
||||
'sections' => array(),
|
||||
'fields' => array(
|
||||
array(
|
||||
'key' => 'total_score_point_5',
|
||||
'label' => esc_html__( 'Total Score', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'number',
|
||||
'step' => 1,
|
||||
'min' => 1,
|
||||
'max' => 5,
|
||||
'default' => 1,
|
||||
|
||||
),
|
||||
),
|
||||
),
|
||||
'point-10' => array(
|
||||
'name' => esc_html__( 'Points (1-10)', 'absolute-reviews' ),
|
||||
'icon' => '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><g stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"><path d="M7 25.5h27m-27-4h36m-36-4h31M7 29.571h36"/></g><path fill="#2D2D2D" d="M7 12h5v2H7zM13 12h5v2h-5zM19 12h5v2h-5zM25 12h5v2h-5z"/><path fill="#C7C7C7" d="M31 12h5v2h-5zM37 12h5v2h-5z"/></g></svg>',
|
||||
'location' => array(),
|
||||
'template' => dirname( __FILE__ ) . '/block/render.php',
|
||||
'sections' => array(),
|
||||
'fields' => array(
|
||||
array(
|
||||
'key' => 'total_score_point_10',
|
||||
'label' => esc_html__( 'Total Score', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'number',
|
||||
'step' => 1,
|
||||
'min' => 1,
|
||||
'max' => 10,
|
||||
'default' => 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
'star' => array(
|
||||
'name' => esc_html__( 'Stars (1-5)', 'absolute-reviews' ),
|
||||
'icon' => '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><path d="M19 19.429h18.286M19 16h24m-24-3.429h20.571M7 30.429h33.75M7 27h31.5M7 23.571h36" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/><path fill="#2D2D2D" d="M7 12h8v8H7z"/><path d="M11 13.143l.883 1.88 1.974.304-1.428 1.463.337 2.067L11 17.881l-1.766.976.337-2.067-1.428-1.463 1.974-.303z" fill="#FFF"/></g></svg>',
|
||||
'location' => array(),
|
||||
'template' => dirname( __FILE__ ) . '/block/render.php',
|
||||
'sections' => array(),
|
||||
'fields' => array(
|
||||
array(
|
||||
'key' => 'total_score_star',
|
||||
'label' => esc_html__( 'Total Score', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'number',
|
||||
'step' => 1,
|
||||
'min' => 1,
|
||||
'max' => 5,
|
||||
'default' => 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
'fields' => array(
|
||||
array(
|
||||
'key' => 'heading',
|
||||
'label' => esc_html__( 'Heading', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'text',
|
||||
'default' => '',
|
||||
),
|
||||
array(
|
||||
'key' => 'desc',
|
||||
'label' => esc_html__( 'Description', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'textarea',
|
||||
'default' => '',
|
||||
),
|
||||
array(
|
||||
'key' => 'legend',
|
||||
'label' => esc_html__( 'Legend', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'textarea',
|
||||
'default' => '',
|
||||
),
|
||||
array(
|
||||
'key' => 'total_score_label',
|
||||
'label' => esc_html__( 'Total Score Label', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'text',
|
||||
'default' => esc_html__( 'Total Score', 'absolute-reviews' ),
|
||||
),
|
||||
array(
|
||||
'key' => 'schema_author_custom',
|
||||
'label' => esc_html__( 'Custom Author', 'absolute-reviews' ),
|
||||
'section' => 'schema_attrs',
|
||||
'type' => 'text',
|
||||
'default' => '',
|
||||
),
|
||||
// Typography.
|
||||
array(
|
||||
'key' => 'typographyDescription',
|
||||
'label' => esc_html__( 'Description Font Size', 'authentic' ),
|
||||
'section' => 'typography',
|
||||
'type' => 'dimension',
|
||||
'default' => '0.875rem',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-review-info .abr-review-description',
|
||||
'property' => 'font-size',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
'active_callback' => array(
|
||||
array(
|
||||
'field' => 'desc',
|
||||
'operator' => '!=',
|
||||
'value' => '',
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'typographyLegend',
|
||||
'label' => esc_html__( 'Legend Font Size', 'authentic' ),
|
||||
'section' => 'typography',
|
||||
'type' => 'dimension',
|
||||
'default' => '0.875rem',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-review-total .abr-review-subtext .abr-data-info > span',
|
||||
'property' => 'font-size',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
'active_callback' => array(
|
||||
array(
|
||||
'field' => 'legend',
|
||||
'operator' => '!=',
|
||||
'value' => '',
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'typographyTotal',
|
||||
'label' => esc_html__( 'Total Font Size', 'authentic' ),
|
||||
'section' => 'typography',
|
||||
'type' => 'dimension',
|
||||
'default' => '3rem',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-review-total .abr-review-score .abr-review-text',
|
||||
'property' => 'font-size',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
'template' => dirname( __FILE__ ) . '/block/render.php',
|
||||
'editor_style' => 'absolute-reviews-block-editor-style',
|
||||
);
|
||||
|
||||
return $blocks;
|
||||
}
|
||||
}
|
||||
|
||||
new ABR_Review_Block();
|
||||
@@ -0,0 +1,630 @@
|
||||
<?php
|
||||
/**
|
||||
* Block Reviews Posts
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/public
|
||||
*/
|
||||
|
||||
/**
|
||||
* Block Reviews Posts
|
||||
*/
|
||||
class ABR_Reviews_Posts_Block {
|
||||
|
||||
/**
|
||||
* Initialize
|
||||
*/
|
||||
public function __construct() {
|
||||
add_filter( 'canvas_block_layouts_canvas/posts', array( $this, 'register_layout' ), 99 );
|
||||
add_filter( 'canvas_block_posts_query_args', array( $this, 'change_query_args' ), 10, 3 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get fields array for Meta
|
||||
*
|
||||
* @param array $settings The settings.
|
||||
*/
|
||||
public function get_meta_fields( $settings ) {
|
||||
|
||||
$settings = array_merge( array(
|
||||
'field_prefix' => 'reviews',
|
||||
'section_name' => '',
|
||||
'active_callback' => array(),
|
||||
), $settings );
|
||||
|
||||
// Set fields.
|
||||
$fields = array(
|
||||
array(
|
||||
'key' => $settings['field_prefix'] . '_showMetaCategory',
|
||||
'label' => esc_html__( 'Category', 'authentic' ),
|
||||
'section' => $settings['section_name'],
|
||||
'type' => 'toggle',
|
||||
'default' => true,
|
||||
'active_callback' => $settings['active_callback'],
|
||||
),
|
||||
array(
|
||||
'key' => $settings['field_prefix'] . '_showMetaAuthor',
|
||||
'label' => esc_html__( 'Author', 'authentic' ),
|
||||
'section' => $settings['section_name'],
|
||||
'type' => 'toggle',
|
||||
'default' => true,
|
||||
'active_callback' => $settings['active_callback'],
|
||||
),
|
||||
array(
|
||||
'key' => $settings['field_prefix'] . '_showMetaDate',
|
||||
'label' => esc_html__( 'Date', 'authentic' ),
|
||||
'section' => $settings['section_name'],
|
||||
'type' => 'toggle',
|
||||
'default' => true,
|
||||
'active_callback' => $settings['active_callback'],
|
||||
),
|
||||
array(
|
||||
'key' => $settings['field_prefix'] . '_showMetaComments',
|
||||
'label' => esc_html__( 'Comments', 'authentic' ),
|
||||
'section' => $settings['section_name'],
|
||||
'type' => 'toggle',
|
||||
'default' => false,
|
||||
'active_callback' => $settings['active_callback'],
|
||||
),
|
||||
abr_post_views_enabled() ? array(
|
||||
'key' => $settings['field_prefix'] . '_showMetaViews',
|
||||
'label' => esc_html__( 'Views', 'authentic' ),
|
||||
'section' => $settings['section_name'],
|
||||
'type' => 'toggle',
|
||||
'default' => false,
|
||||
'active_callback' => $settings['active_callback'],
|
||||
) : array(),
|
||||
abr_powerkit_module_enabled( 'reading_time' ) ? array(
|
||||
'key' => $settings['field_prefix'] . '_showMetaReadingTime',
|
||||
'label' => esc_html__( 'Reading Time', 'authentic' ),
|
||||
'section' => $settings['section_name'],
|
||||
'type' => 'toggle',
|
||||
'default' => false,
|
||||
'active_callback' => $settings['active_callback'],
|
||||
) : array(),
|
||||
array(
|
||||
'key' => uniqid(),
|
||||
'section' => $settings['section_name'],
|
||||
'type' => 'separator',
|
||||
'active_callback' => $settings['active_callback'],
|
||||
),
|
||||
array(
|
||||
'key' => $settings['field_prefix'] . 'MetaCompact',
|
||||
'label' => esc_html__( 'Display compact post meta', 'authentic' ),
|
||||
'section' => $settings['section_name'],
|
||||
'type' => 'toggle',
|
||||
'default' => false,
|
||||
'active_callback' => $settings['active_callback'],
|
||||
),
|
||||
);
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get types of layout.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access private
|
||||
*/
|
||||
public function get_types_of_layouts() {
|
||||
$types = array(
|
||||
'reviews-1' => 'reviews-1',
|
||||
'reviews-2' => 'reviews-2',
|
||||
'reviews-3' => 'reviews-3',
|
||||
'reviews-4' => 'reviews-4',
|
||||
'reviews-5' => 'reviews-5',
|
||||
'reviews-6' => 'reviews-6',
|
||||
'reviews-7' => 'reviews-7',
|
||||
'reviews-8' => 'reviews-8',
|
||||
);
|
||||
|
||||
return $types;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get name of layout by key.
|
||||
*
|
||||
* @param mixed $key The key.
|
||||
*/
|
||||
public function get_name_of_layout_by( $key ) {
|
||||
|
||||
switch ( $key ) {
|
||||
case 'reviews-1':
|
||||
return esc_html__( 'Reviews 1', 'absolute-reviews' );
|
||||
case 'reviews-2':
|
||||
return esc_html__( 'Reviews 2', 'absolute-reviews' );
|
||||
case 'reviews-3':
|
||||
return esc_html__( 'Reviews 3', 'absolute-reviews' );
|
||||
case 'reviews-4':
|
||||
return esc_html__( 'Reviews 4', 'absolute-reviews' );
|
||||
case 'reviews-5':
|
||||
return esc_html__( 'Reviews 5', 'absolute-reviews' );
|
||||
case 'reviews-6':
|
||||
return esc_html__( 'Reviews 6', 'absolute-reviews' );
|
||||
case 'reviews-7':
|
||||
return esc_html__( 'Reviews 7', 'absolute-reviews' );
|
||||
case 'reviews-8':
|
||||
return esc_html__( 'Reviews 8', 'absolute-reviews' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get icon of layout by key.
|
||||
*
|
||||
* @param mixed $key The key.
|
||||
*/
|
||||
public function get_icon_of_layout_by( $key ) {
|
||||
|
||||
switch ( $key ) {
|
||||
case 'reviews-1':
|
||||
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" stroke="#2D2D2D" fill="none" fill-rule="evenodd"><rect stroke-width="1.5" width="50" height="42" rx="3"/><g transform="translate(10 6)"><rect stroke-width="1.5" width="14" height="12" rx="1"/><path d="M18 4.625h12.278M18 7.625h8.273" stroke-linecap="round" stroke-linejoin="round"/></g><g transform="translate(10 24)"><rect stroke-width="1.5" width="14" height="12" rx="1"/><path d="M18 4.625h12.278M18 7.625h8.273" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>';
|
||||
case 'reviews-2':
|
||||
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><g transform="translate(10 24)"><rect stroke="#2D2D2D" stroke-width="1.5" width="14" height="12" rx="1"/><g transform="translate(18 9)"><rect fill="#C7C7C7" width="13" height="2" rx="1"/><rect fill="#2D2D2D" width="10" height="2" rx="1"/></g><path d="M18 2h12.278M18 5h8.273" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/></g><g transform="translate(10 6)"><rect stroke="#2D2D2D" stroke-width="1.5" width="14" height="12" rx="1"/><g transform="translate(18 9)"><rect fill="#C7C7C7" width="13" height="2" rx="1"/><rect fill="#2D2D2D" width="10" height="2" rx="1"/></g><path d="M18 2h12.278M18 5h8.273" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>';
|
||||
case 'reviews-3':
|
||||
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" stroke="#2D2D2D" fill="none" fill-rule="evenodd"><rect stroke-width="1.5" width="50" height="42" rx="3"/><rect x=".5" y=".5" width="24" height="16" rx="1" transform="translate(12 4)" stroke-width="1.5"/><g transform="translate(13 30)"><rect stroke-width="1.5" width="8" height="8" rx="1"/><path d="M11.361 2.5H23.64M11 5.5h8.667" stroke-linecap="round" stroke-linejoin="round"/></g><path d="M13.028 26.5H28.68m-15.652-3h22.666" stroke-linecap="round" stroke-linejoin="round"/></g></svg>';
|
||||
case 'reviews-4':
|
||||
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><rect x=".5" y=".5" width="24" height="16" rx="1" transform="translate(12 4)" stroke="#2D2D2D" stroke-width="1.5"/><rect stroke="#2D2D2D" stroke-width="1.5" x="13" y="30" width="8" height="8" rx="1"/><path d="M24.361 35.5h8.667m-8.667-3H36.64" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/><g transform="translate(12 24)"><rect fill="#C7C7C7" width="25" height="2" rx="1"/><rect fill="#2D2D2D" width="19" height="2" rx="1"/></g></g></svg>';
|
||||
case 'reviews-5':
|
||||
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><rect x=".5" y=".5" width="24" height="16" rx="1" transform="translate(12 4)" stroke="#2D2D2D" stroke-width="1.5"/><g transform="translate(13 30)" stroke="#2D2D2D"><rect stroke-width="1.5" width="8" height="8" rx="1"/><path d="M11.361 2.5H23.64M11 5.5h8.667" stroke-linecap="round" stroke-linejoin="round"/></g><path d="M12.722 26.5h10.212m-10.212-3H25" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/><text font-family="FuturaPT-Bold, Futura PT" font-size="5" font-weight="bold" fill="#2D2D2D"><tspan x="27" y="28">3/5</tspan></text></g></svg>';
|
||||
case 'reviews-6':
|
||||
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><g transform="translate(12 4)"><rect stroke="#2D2D2D" stroke-width="1.5" x=".5" y=".5" width="24" height="33" rx="1"/><g transform="translate(3 3)"><circle fill="#2D2D2D" cx="3" cy="3" r="3"/><path d="M4.333 5a.667.667 0 110-1.333.667.667 0 010 1.333zM1.667 2.333a.667.667 0 110-1.333.667.667 0 010 1.333zm3-1.333L5 1.333 1.333 5 1 4.667 4.666 1z" fill="#FFF" fill-rule="nonzero"/></g><path d="M3.528 26.5h17.944M3.44 29h11.416" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>';
|
||||
case 'reviews-7':
|
||||
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><g transform="translate(12 4)"><rect stroke="#2D2D2D" stroke-width="1.5" x=".5" y=".5" width="24" height="33" rx="1"/><path d="M3.57 29.758l1.172-1.173.849.848 1.371-1.37.538.537v-1.5H6l.538.538-.947.947-.849-.849L3.26 29.22a3 3 0 11.31.538z" fill="#2D2D2D" fill-rule="nonzero"/><path d="M3.528 19.5h17.944M3.44 22h11.416" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>';
|
||||
case 'reviews-8':
|
||||
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><g transform="translate(12 4)"><rect stroke="#2D2D2D" stroke-width="1.5" x=".5" y=".5" width="24" height="33" rx="1"/><path d="M3.57 7.758l1.172-1.173.849.848 1.371-1.37.538.537V5.1H6l.538.538-.947.947-.849-.849L3.26 7.22a3 3 0 11.31.538z" fill="#2D2D2D" fill-rule="nonzero"/><path d="M3.528 27.5h17.944M3.44 30h11.416" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register layout.
|
||||
*
|
||||
* @param array $layouts List of layouts.
|
||||
*/
|
||||
public function register_layout( $layouts = array() ) {
|
||||
|
||||
$image_sizes = abr_get_list_available_image_sizes();
|
||||
|
||||
$types = $this->get_types_of_layouts();
|
||||
|
||||
foreach ( $types as $type ) {
|
||||
|
||||
$layouts[ $type ] = array(
|
||||
'location' => array(),
|
||||
'name' => $this->get_name_of_layout_by( $type ),
|
||||
'template' => dirname( __FILE__ ) . '/posts-block.php',
|
||||
'icon' => $this->get_icon_of_layout_by( $type ),
|
||||
'sections' => array(
|
||||
'general' => array(
|
||||
'title' => esc_html__( 'Block Settings', 'absolute-reviews' ),
|
||||
'priority' => 5,
|
||||
'open' => true,
|
||||
),
|
||||
'reviewsLargeMeta' => array(
|
||||
'title' => esc_html__( 'Large Post Meta Settings', 'absolute-reviews' ),
|
||||
'priority' => 10,
|
||||
),
|
||||
'reviewsSmallMeta' => array(
|
||||
'title' => esc_html__( 'Small Post Meta Settings', 'absolute-reviews' ),
|
||||
'priority' => 20,
|
||||
),
|
||||
'reviewsThumbnail' => array(
|
||||
'title' => esc_html__( 'Thumbnail Settings', 'absolute-reviews' ),
|
||||
'priority' => 30,
|
||||
),
|
||||
'reviewsTypography' => array(
|
||||
'title' => esc_html__( 'Typography Settings', 'absolute-reviews' ),
|
||||
'priority' => 40,
|
||||
),
|
||||
),
|
||||
'hide_fields' => array(
|
||||
'showMetaCategory',
|
||||
'showMetaAuthor',
|
||||
'showMetaDate',
|
||||
'showMetaComments',
|
||||
'showMetaViews',
|
||||
'showMetaReadingTime',
|
||||
'showMetaShares',
|
||||
'showExcerpt',
|
||||
'showViewPostButton',
|
||||
'showPagination',
|
||||
'imageSize',
|
||||
'postsCount',
|
||||
'colorText',
|
||||
'colorHeading',
|
||||
'colorHeadingHover',
|
||||
'colorText',
|
||||
'colorMeta',
|
||||
'colorMetaHover',
|
||||
'colorMetaLinks',
|
||||
'colorMetaLinksHover',
|
||||
),
|
||||
'fields' => array_merge(
|
||||
array(
|
||||
array(
|
||||
'key' => 'reviewType',
|
||||
'label' => esc_html__( 'Filter by Review Type', 'absolute-reviews' ),
|
||||
'section' => 'query',
|
||||
'type' => 'select',
|
||||
'multiple' => false,
|
||||
'choices' => array(
|
||||
'all' => esc_html__( 'All types', 'absolute-reviews' ),
|
||||
'percentage' => esc_html__( 'Percentage (1-100%)', 'absolute-reviews' ),
|
||||
'point-5' => esc_html__( 'Points (1-5)', 'absolute-reviews' ),
|
||||
'point-10' => esc_html__( 'Points (1-10)', 'absolute-reviews' ),
|
||||
'star' => esc_html__( 'Stars (1-5)', 'absolute-reviews' ),
|
||||
),
|
||||
'default' => 'all',
|
||||
),
|
||||
array(
|
||||
'key' => 'reviewsPostsCount',
|
||||
'label' => esc_html__( 'Posts Count', 'absolute-reviews' ),
|
||||
'section' => 'general',
|
||||
'type' => 'number',
|
||||
'default' => 5,
|
||||
'min' => 1,
|
||||
'max' => 100,
|
||||
),
|
||||
array(
|
||||
'key' => 'imageSize',
|
||||
'label' => esc_html__( 'Image Size', 'absolute-reviews' ),
|
||||
'section' => 'reviewsThumbnail',
|
||||
'type' => 'select',
|
||||
'default' => 'large',
|
||||
'choices' => $image_sizes,
|
||||
'active_callback' => array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'largeImageSize',
|
||||
'label' => esc_html__( 'Large Post Image Size', 'absolute-reviews' ),
|
||||
'section' => 'reviewsThumbnail',
|
||||
'type' => 'select',
|
||||
'default' => 'large',
|
||||
'choices' => $image_sizes,
|
||||
'active_callback' => array(
|
||||
array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'smallImageSize',
|
||||
'label' => esc_html__( 'Small Post Image Size', 'absolute-reviews' ),
|
||||
'section' => 'reviewsThumbnail',
|
||||
'type' => 'select',
|
||||
'default' => 'large',
|
||||
'choices' => $image_sizes,
|
||||
'active_callback' => array(
|
||||
array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// Typography.
|
||||
array(
|
||||
'key' => 'typographyHeading',
|
||||
'label' => esc_html__( 'Heading Font Size', 'absolute-reviews' ),
|
||||
'section' => 'reviewsTypography',
|
||||
'type' => 'dimension',
|
||||
'default' => '1rem',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .entry-title a',
|
||||
'property' => 'font-size',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
'active_callback' => array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'typographyLargeHeading',
|
||||
'label' => esc_html__( 'Heading Post Large Font Size', 'absolute-reviews' ),
|
||||
'section' => 'reviewsTypography',
|
||||
'type' => 'dimension',
|
||||
'default' => '1.5rem',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-post-item:first-child .entry-title a',
|
||||
'property' => 'font-size',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
'active_callback' => array(
|
||||
array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'typographySmallHeading',
|
||||
'label' => esc_html__( 'Heading Post Small Font Size', 'absolute-reviews' ),
|
||||
'section' => 'reviewsTypography',
|
||||
'type' => 'dimension',
|
||||
'default' => '1rem',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-post-item:nth-child(n+2) .entry-title a',
|
||||
'property' => 'font-size',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
'active_callback' => array(
|
||||
array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// Color Settings.
|
||||
array(
|
||||
'key' => 'colorHeading',
|
||||
'label' => esc_html__( 'Heading', 'absolute-reviews' ),
|
||||
'section' => 'color',
|
||||
'type' => 'color',
|
||||
'default' => '#000',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-variation-default .entry-title a',
|
||||
'property' => 'color',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'colorHeadingHover',
|
||||
'label' => esc_html__( 'Heading Hover', 'absolute-reviews' ),
|
||||
'section' => 'color',
|
||||
'type' => 'color',
|
||||
'default' => '#5a5a5a',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-variation-default .entry-title a:hover, $ .abr-variation-default .entry-title a:focus',
|
||||
'property' => 'color',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'colorMeta',
|
||||
'label' => esc_html__( 'Post Meta', 'absolute-reviews' ),
|
||||
'section' => 'color',
|
||||
'type' => 'color',
|
||||
'default' => '',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-variation-default .post-meta span, $ .abr-variation-default .post-categories span',
|
||||
'property' => 'color',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'colorMetaLinks',
|
||||
'label' => esc_html__( 'Post Meta Links', 'absolute-reviews' ),
|
||||
'section' => 'color',
|
||||
'type' => 'color',
|
||||
'default' => '',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-variation-default .post-meta a, $ .abr-variation-default .post-categories a',
|
||||
'property' => 'color',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'key' => 'colorMetaLinksHover',
|
||||
'label' => esc_html__( 'Post Meta Links Hover', 'absolute-reviews' ),
|
||||
'section' => 'color',
|
||||
'type' => 'color',
|
||||
'default' => '',
|
||||
'output' => array(
|
||||
array(
|
||||
'element' => '$ .abr-variation-default .post-meta a:hover, $ .abr-variation-default .post-meta a:focus, $ .abr-variation-default .post-categories a:hover, $ .abr-variation-default .post-categories a:focus',
|
||||
'property' => 'color',
|
||||
'suffix' => '!important',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// Meta Settings.
|
||||
$this->get_meta_fields(
|
||||
array(
|
||||
'field_prefix' => 'reviews',
|
||||
'section_name' => 'meta',
|
||||
'active_callback' => array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '!=',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
)
|
||||
),
|
||||
$this->get_meta_fields(
|
||||
array(
|
||||
'field_prefix' => 'reviewsLarge',
|
||||
'section_name' => 'reviewsLargeMeta',
|
||||
'active_callback' => array(
|
||||
array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
),
|
||||
$this->get_meta_fields(
|
||||
array(
|
||||
'field_prefix' => 'reviewsSmall',
|
||||
'section_name' => 'reviewsSmallMeta',
|
||||
'active_callback' => array(
|
||||
array(
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-3',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-4',
|
||||
),
|
||||
array(
|
||||
'field' => 'layout',
|
||||
'operator' => '==',
|
||||
'value' => 'reviews-5',
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return $layouts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change post query attributes
|
||||
*
|
||||
* @param array $args Args for post query.
|
||||
* @param array $attributes Block attributes.
|
||||
* @param array $options Block options.
|
||||
*/
|
||||
public function change_query_args( $args, $attributes, $options ) {
|
||||
|
||||
// Review type.
|
||||
if ( isset( $options['reviewType'] ) && 'all' !== $options['reviewType'] ) {
|
||||
$args['meta_query'] = array(
|
||||
'relation' => 'OR',
|
||||
array(
|
||||
'key' => '_abr_review_type',
|
||||
'value' => $options['reviewType'],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// Posts count.
|
||||
if ( isset( $options['reviewsPostsCount'] ) && $options['reviewsPostsCount'] ) {
|
||||
$args['posts_per_page'] = $options['reviewsPostsCount'];
|
||||
}
|
||||
|
||||
return $args;
|
||||
}
|
||||
}
|
||||
|
||||
new ABR_Reviews_Posts_Block();
|
||||
@@ -0,0 +1,454 @@
|
||||
<?php
|
||||
/**
|
||||
* Widget Reviews Posts
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/public
|
||||
*/
|
||||
|
||||
/**
|
||||
* Widget Reviews Posts
|
||||
*/
|
||||
class ABR_Reviews_Posts_Widget extends WP_Widget {
|
||||
|
||||
/**
|
||||
* Sets up a new widget instance.
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
$this->default_settings = apply_filters(
|
||||
'abr_widget_posts_settings', array(
|
||||
'title' => '',
|
||||
'template' => 'list',
|
||||
'posts_per_page' => 5,
|
||||
'review_type' => 'all',
|
||||
'orderby' => 'date',
|
||||
'order' => 'desc',
|
||||
'time_frame' => '',
|
||||
'category' => false,
|
||||
'thumbnail' => 'large',
|
||||
'post_meta' => array( 'date' ),
|
||||
'post_meta_compact' => false,
|
||||
'thumbnail_large' => 'large',
|
||||
'post_meta_large' => array( 'date' ),
|
||||
'post_meta_large_compact' => false,
|
||||
'thumbnail_small' => 'large',
|
||||
'post_meta_small' => array( 'date' ),
|
||||
'post_meta_small_compact' => false,
|
||||
'avoid_duplicate' => false,
|
||||
'output' => 'widget',
|
||||
)
|
||||
);
|
||||
|
||||
$widget_details = array(
|
||||
'classname' => 'abr_reviews_posts_widget',
|
||||
'description' => esc_html__( 'Display a list of your reviews posts.', 'absolute-reviews' ),
|
||||
);
|
||||
parent::__construct( 'abr_reviews_posts_widget', esc_html__( 'Reviews Posts', 'absolute-reviews' ), $widget_details );
|
||||
}
|
||||
|
||||
/**
|
||||
* Outputs the content for the current widget instance.
|
||||
*
|
||||
* @param array $args Display arguments including 'before_title', 'after_title',
|
||||
* 'before_widget', and 'after_widget'.
|
||||
* @param array $instance Settings for the current widget instance.
|
||||
*/
|
||||
public function widget( $args, $instance ) {
|
||||
global $abr_posts;
|
||||
global $wp_query;
|
||||
|
||||
if ( ! $abr_posts ) {
|
||||
$abr_posts = array();
|
||||
}
|
||||
|
||||
$params = array_merge( $this->default_settings, $instance );
|
||||
|
||||
$posts_args = array(
|
||||
'posts_per_page' => $params['posts_per_page'],
|
||||
'order' => $params['order'],
|
||||
'no_found_rows' => true,
|
||||
'post_status' => 'publish',
|
||||
'ignore_sticky_posts' => true,
|
||||
);
|
||||
|
||||
if ( $params['category'] ) {
|
||||
$category = $params['category'];
|
||||
$posts_args['cat'] = $category;
|
||||
}
|
||||
|
||||
// Avoid Duplicate.
|
||||
if ( $params['avoid_duplicate'] ) {
|
||||
$main_posts = array();
|
||||
|
||||
if ( isset( $wp_query->posts ) && $wp_query->posts ) {
|
||||
$main_posts = wp_list_pluck( $wp_query->posts, 'ID' );
|
||||
}
|
||||
|
||||
if ( $main_posts ) {
|
||||
$posts_args['post__not_in'] = array_merge( $main_posts, $abr_posts );
|
||||
} else {
|
||||
$posts_args['post__not_in'] = $abr_posts;
|
||||
}
|
||||
}
|
||||
|
||||
// Review type.
|
||||
if ( 'all' !== $params['review_type'] ) {
|
||||
$posts_args['meta_query'] = array(
|
||||
'relation' => 'OR',
|
||||
array(
|
||||
'key' => '_abr_review_type',
|
||||
'value' => $params['review_type'],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// Post order.
|
||||
if ( class_exists( 'Post_Views_Counter' ) && 'meta_value_num' === $params['orderby'] ) {
|
||||
// Post Views.
|
||||
$posts_args['orderby'] = 'post_views';
|
||||
} else {
|
||||
$posts_args['orderby'] = $params['orderby'];
|
||||
}
|
||||
|
||||
if ( $params['time_frame'] ) {
|
||||
$posts_args['date_query'] = array(
|
||||
array(
|
||||
'column' => 'post_date_gmt',
|
||||
'after' => $params['time_frame'] . ' ago',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
$posts = new WP_Query( apply_filters_ref_array( 'abr_reviews_posts_widget_args', array( $posts_args, & $params ) ) );
|
||||
|
||||
if ( $posts->have_posts() ) {
|
||||
|
||||
// Before Widget.
|
||||
echo $args['before_widget']; // XSS.
|
||||
|
||||
// Title.
|
||||
if ( $params['title'] ) {
|
||||
echo $args['before_title'] . apply_filters( 'widget_title', $params['title'], $instance, $this->id_base ) . $args['after_title']; // XSS.
|
||||
}
|
||||
|
||||
$review_id = get_the_ID();
|
||||
|
||||
// Class Template.
|
||||
$class = sprintf( 'abr-posts-template-%s', $params['template'] );
|
||||
|
||||
// Class Number of Posts.
|
||||
$class .= sprintf( ' abr-posts-per-page-%s', (int) $params['posts_per_page'] );
|
||||
?>
|
||||
|
||||
<div class="widget-body abr-reviews-posts <?php echo esc_html( $class ); ?>">
|
||||
<div class="abr-reviews-posts-list">
|
||||
<?php
|
||||
$params['counter'] = 0;
|
||||
|
||||
while ( $posts->have_posts() ) :
|
||||
$posts->the_post();
|
||||
|
||||
$abr_posts[] = $review_id;
|
||||
|
||||
$params['counter']++;
|
||||
?>
|
||||
<div class="abr-post-item">
|
||||
<?php abr_reviews_posts_widget_handler( $params['template'], $posts, $params, $instance ); ?>
|
||||
</div>
|
||||
<?php endwhile; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
// After Widget.
|
||||
echo $args['after_widget']; // XSS.
|
||||
}
|
||||
|
||||
wp_reset_postdata();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles updating settings for the current widget instance.
|
||||
*
|
||||
* @param array $new_instance New settings for this instance as input by the user via
|
||||
* WP_Widget::form().
|
||||
* @param array $old_instance Old settings for this instance.
|
||||
* @return array Settings to save or bool false to cancel saving.
|
||||
*/
|
||||
public function update( $new_instance, $old_instance ) {
|
||||
$instance = $new_instance;
|
||||
|
||||
// Post Meta.
|
||||
if ( ! isset( $instance['post_meta'] ) ) {
|
||||
$instance['post_meta'] = array();
|
||||
}
|
||||
|
||||
// Compact Post Meta.
|
||||
if ( ! isset( $instance['post_meta_compact'] ) ) {
|
||||
$instance['post_meta_compact'] = false;
|
||||
}
|
||||
|
||||
// Avoid duplicate posts.
|
||||
if ( ! isset( $instance['avoid_duplicate'] ) ) {
|
||||
$instance['avoid_duplicate'] = false;
|
||||
}
|
||||
|
||||
return apply_filters( 'abr_reviews_posts_widget_update', $instance );
|
||||
}
|
||||
|
||||
/**
|
||||
* Outputs the widget settings form.
|
||||
*
|
||||
* @param array $instance Current settings.
|
||||
*/
|
||||
public function form( $instance ) {
|
||||
$params = array_merge( $this->default_settings, $instance );
|
||||
|
||||
$allowed_post_meta = abr_allowed_post_meta();
|
||||
|
||||
$image_sizes = abr_get_list_available_image_sizes();
|
||||
|
||||
$templates = apply_filters( 'abr_reviews_posts_templates', array() );
|
||||
?>
|
||||
<!-- Title -->
|
||||
<p><label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title:', 'absolute-reviews' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $params['title'] ); ?>" /></p>
|
||||
|
||||
<?php do_action( 'abr_reviews_posts_widget_form_before', $this, $params, $instance ); ?>
|
||||
|
||||
<!-- Template -->
|
||||
<?php if ( $templates ) { ?>
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'template' ) ); ?>"><?php esc_html_e( 'Template:', 'absolute-reviews' ); ?></label>
|
||||
<select name="<?php echo esc_attr( $this->get_field_name( 'template' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'template' ) ); ?>" class="widefat abr-template">
|
||||
<?php
|
||||
foreach ( $templates as $slug => $template ) {
|
||||
$name = isset( $template['name'] ) ? $template['name'] : $slug;
|
||||
?>
|
||||
<option value="<?php echo esc_attr( $slug ); ?>" <?php selected( $params['template'], $slug ); ?>><?php echo esc_html( $name ); ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</p>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Number of Posts -->
|
||||
<p><label for="<?php echo esc_attr( $this->get_field_id( 'posts_per_page' ) ); ?>"><?php esc_html_e( 'Number of posts:', 'absolute-reviews' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'posts_per_page' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'posts_per_page' ) ); ?>" type="number" value="<?php echo esc_attr( $params['posts_per_page'] ); ?>" /></p>
|
||||
|
||||
<!-- Filter by Review Type -->
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'review_type' ) ); ?>"><?php esc_html_e( 'Filter by Review Type:', 'absolute-reviews' ); ?></label>
|
||||
<select name="<?php echo esc_attr( $this->get_field_name( 'review_type' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'review_type' ) ); ?>" class="widefat">
|
||||
<option value="all" <?php selected( $params['review_type'], 'all' ); ?>><?php esc_html_e( 'All types', 'absolute-reviews' ); ?></option>
|
||||
<option value="percentage" <?php selected( $params['review_type'], 'percentage' ); ?>><?php esc_html_e( 'Percentage (1-100%)', 'absolute-reviews' ); ?></option>
|
||||
<option value="point-5" <?php selected( $params['review_type'], 'point-5' ); ?>><?php esc_html_e( 'Points (1-5)', 'absolute-reviews' ); ?></option>
|
||||
<option value="point-10" <?php selected( $params['review_type'], 'point-10' ); ?>><?php esc_html_e( 'Points (1-10)', 'absolute-reviews' ); ?></option>
|
||||
<option value="star" <?php selected( $params['review_type'], 'star' ); ?>><?php esc_html_e( 'Stars (1-5)', 'absolute-reviews' ); ?></option>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<!-- Order by -->
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'orderby' ) ); ?>"><?php esc_html_e( 'Order by:', 'absolute-reviews' ); ?></label>
|
||||
<select name="<?php echo esc_attr( $this->get_field_name( 'orderby' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'orderby' ) ); ?>" class="widefat">
|
||||
<option value="date" <?php selected( $params['orderby'], 'date' ); ?>><?php esc_html_e( 'Date', 'absolute-reviews' ); ?></option>
|
||||
<option value="comment_count" <?php selected( $params['orderby'], 'comment_count' ); ?>><?php esc_html_e( 'Comments', 'absolute-reviews' ); ?></option>
|
||||
<option value="rand" <?php selected( $params['orderby'], 'rand' ); ?>><?php esc_html_e( 'Random', 'absolute-reviews' ); ?></option>
|
||||
|
||||
<?php if ( class_exists( 'Post_Views_Counter' ) ) { ?>
|
||||
<option value="meta_value_num" <?php selected( $params['orderby'], 'meta_value_num' ); ?>><?php esc_html_e( 'Views', 'absolute-reviews' ); ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<!-- Order -->
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'order' ) ); ?>"><?php esc_html_e( 'Order', 'absolute-reviews' ); ?>:</label>
|
||||
<select name="<?php echo esc_attr( $this->get_field_name( 'order' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'order' ) ); ?>" class="widefat">
|
||||
<option value="desc" <?php selected( $params['order'], 'desc' ); ?>><?php esc_html_e( 'Descending', 'absolute-reviews' ); ?></option>
|
||||
<option value="asc" <?php selected( $params['order'], 'asc' ); ?>><?php esc_html_e( 'Ascending', 'absolute-reviews' ); ?></option>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<!-- Time Frame -->
|
||||
<p><label for="<?php echo esc_attr( $this->get_field_id( 'time_frame' ) ); ?>"><?php esc_html_e( 'Time frame:', 'absolute-reviews' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'time_frame' ) ); ?>" placeholder="<?php esc_html_e( '3 months', 'absolute-reviews' ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'time_frame' ) ); ?>" type="text" value="<?php echo esc_attr( $params['time_frame'] ); ?>" /></p>
|
||||
|
||||
<!-- Category -->
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'category' ) ); ?>"><?php esc_html_e( 'Category:', 'absolute-reviews' ); ?></label>
|
||||
<select name="<?php echo esc_attr( $this->get_field_name( 'category' ) ); ?>[]" id="<?php echo esc_attr( $this->get_field_id( 'category' ) ); ?>" class="widefat" style="height: auto !important;" multiple="multiple" size="8">
|
||||
<?php
|
||||
$cat_args = array(
|
||||
'hide_empty' => 0,
|
||||
'hierarchical' => 1,
|
||||
'selected' => (array) $params['category'],
|
||||
'walker' => new ABR_Add_Posts_Categories_Tree_Walker(),
|
||||
);
|
||||
|
||||
$allowed_html = array(
|
||||
'option' => array(
|
||||
'class' => true,
|
||||
'value' => true,
|
||||
'selected' => true,
|
||||
),
|
||||
);
|
||||
|
||||
echo wp_kses( walk_category_dropdown_tree( get_categories( $cat_args ), 0, $cat_args ), $allowed_html );
|
||||
?>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<fieldset class="abr-simple-post">
|
||||
<!-- Image size -->
|
||||
<h4><?php esc_html_e( 'Image size:', 'absolute-reviews' ); ?></h4>
|
||||
|
||||
<?php if ( $image_sizes ) { ?>
|
||||
<p><select name="<?php echo esc_attr( $this->get_field_name( 'thumbnail' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'thumbnail' ) ); ?>">
|
||||
<?php foreach ( $image_sizes as $key => $caption ) { ?>
|
||||
<option value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $params['thumbnail'] ); ?>><?php echo esc_html( $caption ); ?></option>
|
||||
<?php } ?>
|
||||
</select></p>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Post meta -->
|
||||
<h4><?php esc_html_e( 'Post meta:', 'absolute-reviews' ); ?></h4>
|
||||
|
||||
<?php foreach ( $allowed_post_meta as $key => $caption ) { ?>
|
||||
<p><input id="<?php echo esc_attr( $this->get_field_id( 'post_meta' ) ); ?>-<?php echo esc_attr( $key ); ?>" class="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'post_meta' ) ); ?>[]" type="checkbox" value="<?php echo esc_attr( $key ); ?>" <?php checked( in_array( $key, (array) $params['post_meta'], true ) ? true : false ); ?> />
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'post_meta' ) ); ?>-<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $caption ); ?></label></p>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Compact post meta -->
|
||||
<h4><?php esc_html_e( 'Compact post meta:', 'absolute-reviews' ); ?></h4>
|
||||
<p><input id="<?php echo esc_attr( $this->get_field_id( 'post_meta_compact' ) ); ?>" class="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'post_meta_compact' ) ); ?>" type="checkbox" <?php checked( (bool) $params['post_meta_compact'] ); ?> />
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'post_meta_compact' ) ); ?>"><?php esc_html_e( 'Display compact post meta', 'absolute-reviews' ); ?></label></p>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="abr-large-post">
|
||||
<legend><?php esc_html_e( 'Large Post', 'absolute-reviews' ); ?></legend>
|
||||
|
||||
<!-- Image size -->
|
||||
<h4><?php esc_html_e( 'Image size:', 'absolute-reviews' ); ?></h4>
|
||||
|
||||
<?php if ( $image_sizes ) { ?>
|
||||
<p><select name="<?php echo esc_attr( $this->get_field_name( 'thumbnail_large' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'thumbnail_large' ) ); ?>-<?php echo esc_attr( $key ); ?>">
|
||||
<?php foreach ( $image_sizes as $key => $caption ) { ?>
|
||||
<option value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $params['thumbnail_large'] ); ?>><?php echo esc_html( $caption ); ?></option>
|
||||
<?php } ?>
|
||||
</select></p>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Post meta -->
|
||||
<h4><?php esc_html_e( 'Post meta:', 'absolute-reviews' ); ?></h4>
|
||||
|
||||
<?php foreach ( $allowed_post_meta as $key => $caption ) { ?>
|
||||
<p><input id="<?php echo esc_attr( $this->get_field_id( 'post_meta_large' ) ); ?>-<?php echo esc_attr( $key ); ?>" class="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'post_meta_large' ) ); ?>[]" type="checkbox" value="<?php echo esc_attr( $key ); ?>" <?php checked( in_array( $key, (array) $params['post_meta_large'], true ) ? true : false ); ?> />
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'post_meta_large' ) ); ?>-<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $caption ); ?></label></p>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Compact post meta -->
|
||||
<h4><?php esc_html_e( 'Compact post meta:', 'absolute-reviews' ); ?></h4>
|
||||
<p><input id="<?php echo esc_attr( $this->get_field_id( 'post_meta_large_compact' ) ); ?>" class="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'post_meta_large_compact' ) ); ?>" type="checkbox" <?php checked( (bool) $params['post_meta_large_compact'] ); ?> />
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'post_meta_large_compact' ) ); ?>"><?php esc_html_e( 'Display compact post meta', 'absolute-reviews' ); ?></label></p>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="abr-small-post">
|
||||
<legend><?php esc_html_e( 'Small Post', 'absolute-reviews' ); ?></legend>
|
||||
|
||||
<!-- Image size -->
|
||||
<h4><?php esc_html_e( 'Image size:', 'absolute-reviews' ); ?></h4>
|
||||
|
||||
<?php if ( $image_sizes ) { ?>
|
||||
<p><select name="<?php echo esc_attr( $this->get_field_name( 'thumbnail_small' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'thumbnail_small' ) ); ?>-<?php echo esc_attr( $key ); ?>">
|
||||
<?php foreach ( $image_sizes as $key => $caption ) { ?>
|
||||
<option value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $params['thumbnail_small'] ); ?>><?php echo esc_html( $caption ); ?></option>
|
||||
<?php } ?>
|
||||
</select></p>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Post meta -->
|
||||
<h4><?php esc_html_e( 'Post meta:', 'absolute-reviews' ); ?></h4>
|
||||
|
||||
<?php foreach ( $allowed_post_meta as $key => $caption ) { ?>
|
||||
<p><input id="<?php echo esc_attr( $this->get_field_id( 'post_meta_small' ) ); ?>-<?php echo esc_attr( $key ); ?>" class="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'post_meta_small' ) ); ?>[]" type="checkbox" value="<?php echo esc_attr( $key ); ?>" <?php checked( in_array( $key, (array) $params['post_meta_small'], true ) ? true : false ); ?> />
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'post_meta_small' ) ); ?>-<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $caption ); ?></label></p>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Compact Post Meta -->
|
||||
<h4><?php esc_html_e( 'Compact post meta:', 'absolute-reviews' ); ?></h4>
|
||||
<p><input id="<?php echo esc_attr( $this->get_field_id( 'post_meta_small_compact' ) ); ?>" class="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'post_meta_small_compact' ) ); ?>" type="checkbox" <?php checked( (bool) $params['post_meta_small_compact'] ); ?> />
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'post_meta_small_compact' ) ); ?>"><?php esc_html_e( 'Display compact post meta', 'absolute-reviews' ); ?></label></p>
|
||||
</fieldset>
|
||||
|
||||
<!-- Avoid duplicate posts -->
|
||||
<h4><?php esc_html_e( 'Avoid duplicate posts:', 'absolute-reviews' ); ?></h4>
|
||||
<p><input id="<?php echo esc_attr( $this->get_field_id( 'avoid_duplicate' ) ); ?>" class="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'avoid_duplicate' ) ); ?>" type="checkbox" <?php checked( (bool) $params['avoid_duplicate'] ); ?> />
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'avoid_duplicate' ) ); ?>"><?php esc_html_e( 'Exclude duplicate posts', 'absolute-reviews' ); ?></label></p>
|
||||
|
||||
<?php do_action( 'abr_reviews_posts_widget_form_after', $this, $params, $instance ); ?>
|
||||
|
||||
<script>
|
||||
(function($) {
|
||||
let objTemplate = $( '#<?php echo esc_attr( $this->get_field_id( 'template' ) ); ?>' );
|
||||
|
||||
$( objTemplate ).on( 'change', function() {
|
||||
$( this ).closest( '.widget' ).attr( 'template', $( this ).val() );
|
||||
});
|
||||
|
||||
$( objTemplate ).change();
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create HTML dropdown list of Categories.
|
||||
*/
|
||||
class ABR_Add_Posts_Categories_Tree_Walker extends Walker_CategoryDropdown {
|
||||
|
||||
/**
|
||||
* Starts the element output.
|
||||
*
|
||||
* @since 2.1.0
|
||||
* @access public
|
||||
*
|
||||
* @see Walker::start_el()
|
||||
*
|
||||
* @param string $output Passed by reference. Used to append additional content.
|
||||
* @param object $category Category data object.
|
||||
* @param int $depth Depth of category. Used for padding.
|
||||
* @param array $args Uses 'selected', 'show_count', and 'value_field' keys, if they exist.
|
||||
* See wp_dropdown_categories().
|
||||
* @param int $id Optional. ID of the current category. Default 0 (unused).
|
||||
*/
|
||||
public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
|
||||
$pad = $depth > 0 ? '- ' . str_repeat( ' ', $depth * 3 ) : '';
|
||||
$selected = array_map( 'intval', $args['selected'] );
|
||||
$cat_name = apply_filters( 'list_cats', $category->name, $category );
|
||||
|
||||
$output .= sprintf(
|
||||
'<option class="level-%1$s" value="%2$s" %4$s>%3$s</option>',
|
||||
esc_attr( $depth ),
|
||||
esc_attr( $category->term_id ),
|
||||
esc_html( $pad . $cat_name ),
|
||||
selected( in_array( $category->term_id, $selected, true ), true )
|
||||
);
|
||||
$output .= "\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register Widget
|
||||
*/
|
||||
function abr_reviews_posts_init() {
|
||||
register_widget( 'ABR_Reviews_Posts_Widget' );
|
||||
}
|
||||
add_action( 'widgets_init', 'abr_reviews_posts_init' );
|
||||
@@ -0,0 +1,149 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The public-facing functionality of the plugin.
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/public
|
||||
*/
|
||||
|
||||
/**
|
||||
* The public-facing functionality of the plugin.
|
||||
*
|
||||
* Defines the plugin name, version, and two examples hooks for how to
|
||||
* enqueue the public-facing stylesheet and JavaScript.
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/public
|
||||
*/
|
||||
class ABR_Public {
|
||||
|
||||
/**
|
||||
* The ID of this plugin.
|
||||
|
||||
* @access private
|
||||
* @var string $abr The ID of this plugin.
|
||||
*/
|
||||
private $abr;
|
||||
|
||||
/**
|
||||
* The version of this plugin.
|
||||
|
||||
* @access private
|
||||
* @var string $version The current version of this plugin.
|
||||
*/
|
||||
private $version;
|
||||
|
||||
/**
|
||||
* Initialize the class and set its properties.
|
||||
*
|
||||
* @param string $abr The name of the plugin.
|
||||
* @param string $version The version of this plugin.
|
||||
*/
|
||||
public function __construct( $abr, $version ) {
|
||||
|
||||
$this->abr = $abr;
|
||||
$this->version = $version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter output review in post content.
|
||||
*
|
||||
* @param string $content The content of post.
|
||||
*/
|
||||
public function the_content( $content ) {
|
||||
|
||||
// Check enabled.
|
||||
if ( ! apply_filters( 'abr_review_content_enabled', true ) ) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
// Check AMP endpoint.
|
||||
if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
if ( is_singular() && ( is_single( get_the_ID() ) || is_page( get_the_ID() ) ) ) {
|
||||
ob_start();
|
||||
abr_the_review();
|
||||
$review = ob_get_clean();
|
||||
|
||||
// Concatenation.
|
||||
$content = $content . $review;
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register Posts Templates
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access private
|
||||
*
|
||||
* @param array $templates List of Templates.
|
||||
*/
|
||||
public function posts_templates( $templates = array() ) {
|
||||
$templates = array(
|
||||
'reviews-1' => array(
|
||||
'name' => esc_html__( 'Reviews 1', 'absolute-reviews' ),
|
||||
'func' => 'abr_reviews_posts_template',
|
||||
),
|
||||
'reviews-2' => array(
|
||||
'name' => esc_html__( 'Reviews 2', 'absolute-reviews' ),
|
||||
'func' => 'abr_reviews_posts_template',
|
||||
),
|
||||
'reviews-3' => array(
|
||||
'name' => esc_html__( 'Reviews 3', 'absolute-reviews' ),
|
||||
'func' => 'abr_reviews_posts_template',
|
||||
),
|
||||
'reviews-4' => array(
|
||||
'name' => esc_html__( 'Reviews 4', 'absolute-reviews' ),
|
||||
'func' => 'abr_reviews_posts_template',
|
||||
),
|
||||
'reviews-5' => array(
|
||||
'name' => esc_html__( 'Reviews 5', 'absolute-reviews' ),
|
||||
'func' => 'abr_reviews_posts_template',
|
||||
),
|
||||
'reviews-6' => array(
|
||||
'name' => esc_html__( 'Reviews 6', 'absolute-reviews' ),
|
||||
'func' => 'abr_reviews_posts_template',
|
||||
),
|
||||
'reviews-7' => array(
|
||||
'name' => esc_html__( 'Reviews 7', 'absolute-reviews' ),
|
||||
'func' => 'abr_reviews_posts_template',
|
||||
),
|
||||
'reviews-8' => array(
|
||||
'name' => esc_html__( 'Reviews 8', 'absolute-reviews' ),
|
||||
'func' => 'abr_reviews_posts_template',
|
||||
),
|
||||
);
|
||||
|
||||
return $templates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire the wp_head action.
|
||||
*/
|
||||
public function wp_head() {
|
||||
?>
|
||||
<link rel="preload" href="<?php echo esc_url( ABR_URL . 'fonts/absolute-reviews-icons.woff' ); ?>" as="font" type="font/woff" crossorigin>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the stylesheets for the public-facing side of the site.
|
||||
*/
|
||||
public function wp_enqueue_scripts() {
|
||||
|
||||
// Styles.
|
||||
wp_enqueue_style( $this->abr, abr_style( plugin_dir_url( __FILE__ ) . 'css/absolute-reviews-public.css' ), array(), $this->version, 'all' );
|
||||
|
||||
// Add RTL support.
|
||||
wp_style_add_data( $this->abr, 'rtl', 'replace' );
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* Posts Block
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/public
|
||||
*/
|
||||
|
||||
// when layout is not selected, used list.php
|
||||
// but we don't need to print any html in this situation.
|
||||
if ( ! isset( $attributes['layout'] ) || ! $attributes['layout'] ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$attributes['output'] = 'block';
|
||||
$attributes['template'] = $attributes['layout'];
|
||||
|
||||
// Set classes.
|
||||
$class_wrap = $attributes['canvasClassName'];
|
||||
|
||||
// Class Template.
|
||||
$class_block = sprintf( 'abr-posts-template-%s', $attributes['layout'] );
|
||||
|
||||
// Class Number of Posts.
|
||||
$class_block .= sprintf( ' abr-posts-per-page-%s', (int) $options['reviewsPostsCount'] );
|
||||
|
||||
if ( $posts->have_posts() ) {
|
||||
?>
|
||||
<div class="abr-block-reviews-posts <?php echo esc_attr( $class_wrap ); ?>">
|
||||
<div class="abr-reviews-posts <?php echo esc_attr( $class_block ); ?>">
|
||||
<div class="abr-reviews-posts-list">
|
||||
<?php
|
||||
$attributes['counter'] = 0;
|
||||
|
||||
// Check if there're enough posts in the query.
|
||||
while ( $posts->have_posts() ) {
|
||||
$posts->the_post();
|
||||
|
||||
$attributes['counter']++;
|
||||
|
||||
$attributes['post_meta_list'] = abr_block_convert_post_meta( $options, 'reviews' );
|
||||
$attributes['post_meta_compact'] = isset( $options['reviewsMetaCompact'] ) ? $options['reviewsMetaCompact'] : false;
|
||||
$attributes['thumbnail'] = isset( $options['imageSize'] ) ? $options['imageSize'] : 'large';
|
||||
|
||||
if ( in_array( $attributes['layout'], array( 'reviews-3', 'reviews-4', 'reviews-5' ), true ) ) {
|
||||
if ( 1 === $attributes['counter'] ) {
|
||||
$attributes['post_meta_list'] = abr_block_convert_post_meta( $options, 'reviewsLarge' );
|
||||
$attributes['post_meta_compact'] = isset( $options['reviewsLargeMetaCompact'] ) ? $options['reviewsLargeMetaCompact'] : false;
|
||||
$attributes['thumbnail'] = isset( $options['largeImageSize'] ) ? $options['largeImageSize'] : 'large';
|
||||
} else {
|
||||
$attributes['post_meta_list'] = abr_block_convert_post_meta( $options, 'reviewsSmall' );
|
||||
$attributes['post_meta_compact'] = isset( $options['reviewsSmallMetaCompact'] ) ? $options['reviewsSmallMetaCompact'] : false;
|
||||
$attributes['thumbnail'] = isset( $options['smallImageSize'] ) ? $options['smallImageSize'] : 'large';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<div class="abr-post-item">
|
||||
<?php abr_reviews_posts_template( $posts, $attributes, null ); ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
} else {
|
||||
cnvs_alert_warning( esc_html__( 'There aren\'t enough posts that match the filter criteria.', 'authentic' ) );
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* Posts Template
|
||||
*
|
||||
* @package ABR
|
||||
* @subpackage ABR/public
|
||||
*/
|
||||
|
||||
/**
|
||||
* Default Template
|
||||
*
|
||||
* @param array $posts Array of posts.
|
||||
* @param array $params Array of params.
|
||||
* @param array $instance Instance.
|
||||
*/
|
||||
function abr_reviews_posts_template( $posts, $params, $instance ) {
|
||||
|
||||
$review_id = get_the_ID();
|
||||
|
||||
$value = abr_get_review( false, $review_id );
|
||||
|
||||
// Get indicators.
|
||||
$indicators = abr_list_indicators();
|
||||
|
||||
// Get type.
|
||||
$type = abr_review_get_type( $review_id, 'none' );
|
||||
|
||||
// Set value index.
|
||||
$val_index = abr_review_get_val_index( $type, $value );
|
||||
|
||||
// Set mode.
|
||||
$mode = 'simple';
|
||||
|
||||
// Set variation.
|
||||
$variation = 'default';
|
||||
|
||||
if ( 'reviews-2' === $params['template'] || 'reviews-4' === $params['template'] ) {
|
||||
$mode = 'extended';
|
||||
}
|
||||
|
||||
// Badges.
|
||||
$badge_block = sprintf( 'abr-badge abr-badge-primary abr-review-badge-%s', $val_index );
|
||||
$badge_text = sprintf( 'abr-badge-text abr-badge-text-primary abr-review-badge-text-%s', $val_index );
|
||||
|
||||
// Set variation by template.
|
||||
if ( in_array( $params['template'], array( 'reviews-6', 'reviews-7', 'reviews-8' ), true ) ) {
|
||||
$variation = 'overlay';
|
||||
}
|
||||
|
||||
// Post Meta.
|
||||
if ( 'widget' === $params['output'] ) {
|
||||
$params['post_meta_list'] = $params['post_meta'];
|
||||
$params['post_meta_compact'] = $params['post_meta_compact'];
|
||||
$params['thumbnail'] = $params['thumbnail'];
|
||||
|
||||
if ( in_array( $params['template'], array( 'reviews-3', 'reviews-4', 'reviews-5' ), true ) ) {
|
||||
if ( 1 === $params['counter'] ) {
|
||||
$params['post_meta_list'] = $params['post_meta_large'];
|
||||
$params['post_meta_compact'] = $params['post_meta_large_compact'];
|
||||
$params['thumbnail'] = $params['thumbnail_large'];
|
||||
} else {
|
||||
$params['post_meta_list'] = $params['post_meta_small'];
|
||||
$params['post_meta_compact'] = $params['post_meta_small_compact'];
|
||||
$params['thumbnail'] = $params['thumbnail_small'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Class Type.
|
||||
$class = sprintf( 'abr-type-%s', $type );
|
||||
|
||||
// Class Variation.
|
||||
$class .= sprintf( ' abr-variation-%s', $variation );
|
||||
|
||||
// Classes.
|
||||
$class_caption = $badge_block;
|
||||
$class_number = null;
|
||||
|
||||
if ( 'reviews-1' === $params['template'] || 'reviews-3' === $params['template'] ) {
|
||||
$class_caption = $badge_text;
|
||||
$class_number = $badge_block;
|
||||
}
|
||||
|
||||
if ( 'percentage' === $type ) {
|
||||
$class_caption = $badge_block;
|
||||
$class_number = null;
|
||||
}
|
||||
|
||||
$meta_settings = array(
|
||||
'abr-params' => $params,
|
||||
);
|
||||
?>
|
||||
<article <?php post_class( $class ); ?>>
|
||||
<div class="abr-post-outer">
|
||||
|
||||
<?php if ( has_post_thumbnail() ) { ?>
|
||||
<div class="abr-post-inner abr-post-thumbnail">
|
||||
<a href="<?php the_permalink(); ?>" class="post-thumbnail">
|
||||
<?php the_post_thumbnail( $params['thumbnail'] ); ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="abr-post-inner abr-post-data">
|
||||
|
||||
<?php if ( 'overlay' === $variation ) { ?>
|
||||
<a class="abr-post-link" href="<?php the_permalink(); ?>"></a>
|
||||
<?php } ?>
|
||||
|
||||
<div class="abr-post-headline">
|
||||
<?php
|
||||
abr_get_post_meta( 'category', (bool) $params['post_meta_compact'], true, $params['post_meta_list'], $meta_settings );
|
||||
?>
|
||||
|
||||
<?php
|
||||
$tag = apply_filters( 'abr_reviews_posts_title_tag', 'h5', $params, $instance );
|
||||
?>
|
||||
|
||||
<<?php echo esc_html( $tag ); ?> class="entry-title">
|
||||
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
|
||||
</<?php echo esc_html( $tag ); ?>>
|
||||
|
||||
<?php
|
||||
abr_get_post_meta( abr_allowed_post_meta( true, 'category' ), (bool) $params['post_meta_compact'], true, $params['post_meta_list'], $meta_settings );
|
||||
?>
|
||||
</div>
|
||||
|
||||
<?php if ( $value ) { ?>
|
||||
<?php if ( 'simple' === $mode ) { ?>
|
||||
<div class="abr-review-meta">
|
||||
<div class="abr-review-number <?php echo esc_attr( $class_number ); ?>">
|
||||
<?php
|
||||
echo abr_get_review( true, $review_id ); // XSS.
|
||||
?>
|
||||
</div>
|
||||
|
||||
<?php if ( $indicators && $indicators[ $val_index ]['name'] ) { ?>
|
||||
<div class="abr-review-caption <?php echo esc_attr( $class_caption ); ?>">
|
||||
<?php echo esc_html( $indicators[ $val_index ]['name'] ); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } else { ?>
|
||||
<div class="abr-review-meta">
|
||||
<div class="abr-review-indicator abr-review-<?php echo esc_attr( $type ); ?>">
|
||||
<?php if ( 'star' === $type ) : ?>
|
||||
<div class="abr-review-stars">
|
||||
<?php
|
||||
abr_review_star_rating(
|
||||
array(
|
||||
'rating' => $value,
|
||||
'type' => 'rating',
|
||||
'number' => 0,
|
||||
)
|
||||
);
|
||||
?>
|
||||
</div>
|
||||
<?php elseif ( 'point-5' === $type || 'point-10' === $type ) : ?>
|
||||
<div class="abr-review-line">
|
||||
<?php
|
||||
$max_slice = 'point-5' === $type ? 5 : 10;
|
||||
|
||||
for ( $index = 1; $index <= $max_slice; $index++ ) {
|
||||
if ( $index <= $value ) {
|
||||
$class = 'abr-review-slice-active';
|
||||
} else {
|
||||
$class = 'abr-review-slice-no-active';
|
||||
}
|
||||
?>
|
||||
<span class="abr-review-slice <?php echo esc_attr( $class ); ?>"></span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php elseif ( 'percentage' === $type ) : ?>
|
||||
<div class="abr-review-progress">
|
||||
<div class="abr-review-progressbar abr-review-progressbar-<?php echo esc_attr( $val_index ); ?>" style="width:<?php echo esc_attr( $value > 90 ? $value : 100 ); ?>%"></div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="abr-review-number <?php echo esc_attr( $class_number ); ?>">
|
||||
<?php
|
||||
echo abr_get_review( true, $review_id ); // XSS.
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<?php
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Fired when the plugin is uninstalled.
|
||||
*
|
||||
* When populating this file, consider the following flow
|
||||
* of control:
|
||||
*
|
||||
* - This method should be static
|
||||
* - Check if the $_REQUEST content actually is the plugin name
|
||||
* - Run an admin referrer check to make sure it goes through authentication
|
||||
* - Verify the output of $_GET makes sense
|
||||
* - Repeat with other user roles. Best directly by using the links/query string parameters.
|
||||
* - Repeat things for multisite. Once for a single site in the network, once sitewide.
|
||||
*
|
||||
* This file may be updated more in future version of the Boilerplate; however, this is the
|
||||
* general skeleton and outline for how the file should work.
|
||||
*
|
||||
* For more information, see the following discussion:
|
||||
* https://github.com/tommcfarlin/WordPress-Plugin-Boilerplate/pull/123#issuecomment-28541913
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ABR
|
||||
*/
|
||||
|
||||
// If uninstall not called from WordPress, then exit.
|
||||
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
||||
exit;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
=== Advanced Popups ===
|
||||
Tags: popup, advertising, popups, optin, marketing
|
||||
Requires at least: 4.0
|
||||
Tested up to: 6.0
|
||||
Requires PHP: 5.4
|
||||
Stable tag: 1.1.3
|
||||
Contributors: codesupplyco
|
||||
License: GPLv2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
== Description ==
|
||||
|
||||
Display high-converting newsletter popups, a cookie notice, or a notification with the light-weight yet feature-rich plugin.
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.1.3 =
|
||||
* Improved thumbnail size.
|
||||
|
||||
= 1.1.2 =
|
||||
* Improved plugin security.
|
||||
|
||||
= 1.1.1 =
|
||||
* Improved functions for working with cookies.
|
||||
|
||||
= 1.1.0 =
|
||||
* Updated styles for mobile devices.
|
||||
|
||||
= 1.0.9 =
|
||||
* Minor improvements.
|
||||
|
||||
= 1.0.8 =
|
||||
* Added dev filter to classes in popup.
|
||||
|
||||
= 1.0.7 =
|
||||
* Compatibility fixes for WordPress 5.5
|
||||
|
||||
= 1.0.6 =
|
||||
* Minor improvements.
|
||||
|
||||
= 1.0.5 =
|
||||
* Improve thumbnail.
|
||||
|
||||
= 1.0.4 =
|
||||
* Fixed "Limit display сache lifetime (days)".
|
||||
|
||||
= 1.0.3 =
|
||||
* Added css variables to styles.
|
||||
|
||||
= 1.0.2 =
|
||||
* Added compatibility with php 5.6.
|
||||
|
||||
= 1.0.1 =
|
||||
* Add preload for font icons.
|
||||
|
||||
= 1.0 =
|
||||
* Initial release.
|
||||
@@ -0,0 +1,929 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The admin-specific functionality of the plugin.
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @package ADP
|
||||
* @subpackage ADP/admin
|
||||
*/
|
||||
|
||||
/**
|
||||
* The admin-specific functionality of the plugin.
|
||||
*
|
||||
* Defines the plugin name, version, and two examples hooks for how to
|
||||
* enqueue the admin-specific stylesheet and JavaScript.
|
||||
*
|
||||
* @package ADP
|
||||
* @subpackage ADP/admin
|
||||
*/
|
||||
class ADP_Admin {
|
||||
|
||||
/**
|
||||
* The ID of this plugin.
|
||||
|
||||
* @access private
|
||||
* @var string $adp The ID of this plugin.
|
||||
*/
|
||||
private $adp;
|
||||
|
||||
/**
|
||||
* The version of this plugin.
|
||||
|
||||
* @access private
|
||||
* @var string $version The current version of this plugin.
|
||||
*/
|
||||
private $version;
|
||||
|
||||
/**
|
||||
* Initialize the class and set its properties.
|
||||
*
|
||||
* @param string $adp The name of this plugin.
|
||||
* @param string $version The version of this plugin.
|
||||
*/
|
||||
public function __construct( $adp, $version ) {
|
||||
$this->adp = $adp;
|
||||
$this->version = $version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register post type
|
||||
*/
|
||||
public function register_post_type() {
|
||||
register_post_type( 'adp-popup', array(
|
||||
'labels' => array(
|
||||
'name' => esc_html__( 'Popups', 'coffee-guru' ),
|
||||
'singular_name' => esc_html__( 'Popup', 'coffee-guru' ),
|
||||
'menu_name' => esc_html__( 'Popups', 'coffee-guru' ),
|
||||
'name_admin_bar' => esc_html__( 'Popup', 'coffee-guru' ),
|
||||
'add_new' => esc_html__( 'Add New', 'coffee-guru' ),
|
||||
'add_new_item' => esc_html__( 'Add New Popup', 'coffee-guru' ),
|
||||
'new_item' => esc_html__( 'New Popup', 'coffee-guru' ),
|
||||
'edit_item' => esc_html__( 'Edit Popup', 'coffee-guru' ),
|
||||
'view_item' => esc_html__( 'View Popup', 'coffee-guru' ),
|
||||
'all_items' => esc_html__( 'Popups', 'coffee-guru' ),
|
||||
'search_items' => esc_html__( 'Search Popups', 'coffee-guru' ),
|
||||
'parent_item_colon' => esc_html__( 'Parent Popups:', 'coffee-guru' ),
|
||||
'not_found' => esc_html__( 'No popups found.', 'coffee-guru' ),
|
||||
'not_found_in_trash' => esc_html__( 'No popups found in Trash.', 'coffee-guru' ),
|
||||
),
|
||||
'public' => false,
|
||||
'publicly_queryable' => false,
|
||||
'show_ui' => true,
|
||||
'query_var' => true,
|
||||
'rewrite' => true,
|
||||
'capability_type' => 'post',
|
||||
'has_archive' => false,
|
||||
'hierarchical' => false,
|
||||
'menu_position' => 55,
|
||||
'show_in_menu' => true,
|
||||
'menu_icon' => 'dashicons-editor-expand',
|
||||
'supports' => array( 'title', 'editor', 'author', 'thumbnail' ),
|
||||
'show_in_rest' => true,
|
||||
'show_in_menu' => 'options-general.php',
|
||||
) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Addd new meta box.
|
||||
*/
|
||||
public function metabox_popup_register() {
|
||||
add_meta_box( 'adp_popup_metabox', esc_html__( 'Popup Settings', 'advanced-popups' ), array( $this, 'metabox_popup_callback' ), array( 'adp-popup' ), 'normal', 'high', null );
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for Popup Meta Box.
|
||||
*
|
||||
* @param object $post Object of post.
|
||||
*/
|
||||
public function metabox_popup_callback( $post ) {
|
||||
|
||||
$popup_type = adp_get_post_meta( $post->ID, '_adp_popup_type', true, 'content' );
|
||||
$popup_location = adp_get_post_meta( $post->ID, '_adp_popup_location', true, 'center' );
|
||||
$popup_preview_image = adp_get_post_meta( $post->ID, '_adp_popup_preview_image', true, 'left' );
|
||||
$popup_info_text = adp_get_post_meta( $post->ID, '_adp_popup_info_text', true );
|
||||
$popup_info_buton_label = adp_get_post_meta( $post->ID, '_adp_popup_info_buton_label', true );
|
||||
$popup_info_button_action = adp_get_post_meta( $post->ID, '_adp_popup_info_button_action', true, 'link' );
|
||||
$popup_info_button_link = adp_get_post_meta( $post->ID, '_adp_popup_info_button_link', true );
|
||||
$popup_limit_display = adp_get_post_meta( $post->ID, '_adp_popup_limit_display', true, 1 );
|
||||
$popup_limit_lifetime = adp_get_post_meta( $post->ID, '_adp_popup_limit_lifetime', true, 30 );
|
||||
$popup_show_to = adp_get_post_meta( $post->ID, '_adp_popup_show_to', true, 'both' );
|
||||
$popup_rules_mode = adp_get_post_meta( $post->ID, '_adp_popup_rules_mode', true, 'all' );
|
||||
$popup_rules = adp_get_post_meta( $post->ID, '_adp_popup_rules', true, array() );
|
||||
$popup_open_trigger = adp_get_post_meta( $post->ID, '_adp_popup_open_trigger', true, 'delay' );
|
||||
$popup_open_delay_number = adp_get_post_meta( $post->ID, '_adp_popup_open_delay_number', true, 1 );
|
||||
$popup_open_scroll_position = adp_get_post_meta( $post->ID, '_adp_popup_open_scroll_position', true, 10 );
|
||||
$popup_open_scroll_type = adp_get_post_meta( $post->ID, '_adp_popup_open_scroll_type', true, '%' );
|
||||
$popup_open_manual_selector = adp_get_post_meta( $post->ID, '_adp_popup_open_manual_selector', true );
|
||||
$popup_close_trigger = adp_get_post_meta( $post->ID, '_adp_popup_close_trigger', true, 'none' );
|
||||
$popup_close_delay_number = adp_get_post_meta( $post->ID, '_adp_popup_close_delay_number', true, 30 );
|
||||
$popup_close_scroll_position = adp_get_post_meta( $post->ID, '_adp_popup_close_scroll_position', true, 10 );
|
||||
$popup_close_scroll_type = adp_get_post_meta( $post->ID, '_adp_popup_close_scroll_type', true, '%' );
|
||||
$popup_open_animation = adp_get_post_meta( $post->ID, '_adp_popup_open_animation', true, 'popupOpenFade' );
|
||||
$popup_exit_animation = adp_get_post_meta( $post->ID, '_adp_popup_exit_animation', true, 'popupExitFade' );
|
||||
$popup_content_box_width = adp_get_post_meta( $post->ID, '_adp_popup_content_box_width', true, 500 );
|
||||
$popup_notification_box_width = adp_get_post_meta( $post->ID, '_adp_popup_notification_box_width', true, 400 );
|
||||
$popup_notification_bar_width = adp_get_post_meta( $post->ID, '_adp_popup_notification_bar_width', true, 1024 );
|
||||
$popup_light_close = adp_get_post_meta( $post->ID, '_adp_popup_light_close', true, false );
|
||||
$popup_display_overlay = adp_get_post_meta( $post->ID, '_adp_popup_display_overlay', true, false );
|
||||
$popup_mobile_disable = adp_get_post_meta( $post->ID, '_adp_popup_mobile_disable', true );
|
||||
$popup_body_scroll_disable = adp_get_post_meta( $post->ID, '_adp_popup_body_scroll_disable', true );
|
||||
$popup_overlay_close = adp_get_post_meta( $post->ID, '_adp_popup_overlay_close', true );
|
||||
$popup_esc_close = adp_get_post_meta( $post->ID, '_adp_popup_esc_close', true );
|
||||
$popup_f4_close = adp_get_post_meta( $post->ID, '_adp_popup_f4_close', true );
|
||||
|
||||
// Default location for notification bar.
|
||||
if ( 'notification-bar' === $popup_type ) {
|
||||
if ( 'top' !== $popup_location && 'bottom' !== $popup_location ) {
|
||||
$popup_location = 'bottom';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<div class="adp-metabox-wrap popup-wrap">
|
||||
<input type="hidden" name="adp_popup_action" value="1">
|
||||
|
||||
<?php wp_nonce_field( 'adp_popup_meta_nonce', 'adp_popup_meta_nonce' ); ?>
|
||||
|
||||
<div class="adp-metabox-tabs">
|
||||
<ul class="adp-metabox-tabs-navigation">
|
||||
<li><a href="#popup-tab-general"><?php esc_html_e( 'General', 'advanced-popups' ); ?></a></li>
|
||||
<li><a href="#popup-tab-display"><?php esc_html_e( 'Display Rules', 'advanced-popups' ); ?></a></li>
|
||||
<li><a href="#popup-tab-triggers"><?php esc_html_e( 'Triggers', 'advanced-popups' ); ?></a></li>
|
||||
<li><a href="#popup-tab-style"><?php esc_html_e( 'Style', 'advanced-popups' ); ?></a></li>
|
||||
<li><a href="#popup-tab-advanced"><?php esc_html_e( 'Advanced', 'advanced-popups' ); ?></a></li>
|
||||
</ul>
|
||||
<div class="adp-metabox-tabs-content">
|
||||
<div id="popup-tab-general">
|
||||
<div class="adp-metabox-field popup-field-type">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_type"><?php esc_html_e( 'Type', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<select id="adp_popup_type" name="adp_popup_type">
|
||||
<option value="content" <?php selected( $popup_type, 'content' ); ?>><?php esc_html_e( 'Content Box', 'advanced-popups' ); ?></option>
|
||||
<option value="notification-box" <?php selected( $popup_type, 'notification-box' ); ?>><?php esc_html_e( 'Notification Box', 'advanced-popups' ); ?></option>
|
||||
<option value="notification-bar" <?php selected( $popup_type, 'notification-bar' ); ?>><?php esc_html_e( 'Notification Bar', 'advanced-popups' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-location">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_location"><?php esc_html_e( 'Location', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<select id="adp_popup_location" name="adp_popup_location">
|
||||
<option value="top" <?php selected( $popup_location, 'top' ); ?>><?php esc_html_e( 'Top', 'advanced-popups' ); ?></option>
|
||||
<option value="top-left" <?php selected( $popup_location, 'top-left' ); ?>><?php esc_html_e( 'Top Left', 'advanced-popups' ); ?></option>
|
||||
<option value="top-right" <?php selected( $popup_location, 'top-right' ); ?>><?php esc_html_e( 'Top Right', 'advanced-popups' ); ?></option>
|
||||
<option value="bottom" <?php selected( $popup_location, 'bottom' ); ?>><?php esc_html_e( 'Bottom', 'advanced-popups' ); ?></option>
|
||||
<option value="bottom-left" <?php selected( $popup_location, 'bottom-left' ); ?>><?php esc_html_e( 'Bottom Left', 'advanced-popups' ); ?></option>
|
||||
<option value="bottom-right" <?php selected( $popup_location, 'bottom-right' ); ?>><?php esc_html_e( 'Bottom Right', 'advanced-popups' ); ?></option>
|
||||
<option value="left" <?php selected( $popup_location, 'left' ); ?>><?php esc_html_e( 'Left', 'advanced-popups' ); ?></option>
|
||||
<option value="right" <?php selected( $popup_location, 'right' ); ?>><?php esc_html_e( 'Right', 'advanced-popups' ); ?></option>
|
||||
<option value="center" <?php selected( $popup_location, 'center' ); ?>><?php esc_html_e( 'Center', 'advanced-popups' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-preview-image">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_preview_image"><?php esc_html_e( 'Preview Image', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<select id="adp_popup_preview_image" name="adp_popup_preview_image">
|
||||
<option value="left" <?php selected( $popup_preview_image, 'left' ); ?>><?php esc_html_e( 'Left', 'advanced-popups' ); ?></option>
|
||||
<option value="right" <?php selected( $popup_preview_image, 'right' ); ?>><?php esc_html_e( 'Right', 'advanced-popups' ); ?></option>
|
||||
<option value="top" <?php selected( $popup_preview_image, 'top' ); ?>><?php esc_html_e( 'Top', 'advanced-popups' ); ?></option>
|
||||
<option value="bottom" <?php selected( $popup_preview_image, 'bottom' ); ?>><?php esc_html_e( 'Bottom', 'advanced-popups' ); ?></option>
|
||||
<option value="none" <?php selected( $popup_preview_image, 'none' ); ?>><?php esc_html_e( 'None', 'advanced-popups' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-info-text">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_info_text"><?php esc_html_e( 'Notification Text', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<textarea type="number" id="adp_popup_info_text" name="adp_popup_info_text" row="4"><?php echo wp_kses_post( $popup_info_text ); ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-info-buton-label">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_info_buton_label"><?php esc_html_e( 'Notification Button Label', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<input type="text" id="adp_popup_info_buton_label" name="adp_popup_info_buton_label" value="<?php echo esc_attr( $popup_info_buton_label ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-info-buton-action">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_info_button_action"><?php esc_html_e( 'Notification Button Action', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<select id="adp_popup_info_button_action" name="adp_popup_info_button_action">
|
||||
<option value="link" <?php selected( $popup_info_button_action, 'link' ); ?>><?php esc_html_e( 'Link', 'advanced-popups' ); ?></option>
|
||||
<option value="accept" <?php selected( $popup_info_button_action, 'accept' ); ?>><?php esc_html_e( 'Accept', 'advanced-popups' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-info-buton-link">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_info_button_link"><?php esc_html_e( 'Notification Button Link', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<input type="text" id="adp_popup_info_button_link" name="adp_popup_info_button_link" value="<?php echo esc_attr( $popup_info_button_link ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-limit-display">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_limit_display"><?php esc_html_e( 'Limit display', 'advanced-popups' ); ?></label>
|
||||
<p class="description">
|
||||
<?php esc_html_e( 'Show the popup only [n] times.', 'advanced-popups' ); ?>
|
||||
</p>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<input class="short" type="number" id="adp_popup_limit_display" name="adp_popup_limit_display" value="<?php echo esc_attr( $popup_limit_display ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-limit-lifetime">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_limit_lifetime"><?php esc_html_e( 'Limit display сache lifetime (days)', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<input class="short" type="number" id="adp_popup_limit_lifetime " name="adp_popup_limit_lifetime" value="<?php echo esc_attr( $popup_limit_lifetime ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="adp-metabox-field">
|
||||
<div class="adp-metabox-label popup-field-show-to">
|
||||
<label for="adp_popup_show_to"><?php esc_html_e( 'Guests or Logged-in', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<select id="adp_popup_show_to" name="adp_popup_show_to">
|
||||
<option value="both" <?php selected( $popup_show_to, 'both' ); ?>><?php esc_html_e( 'Show to both users and guest visitors' ); ?></option>
|
||||
<option value="guest" <?php selected( $popup_show_to, 'guest' ); ?>><?php esc_html_e( 'Show only to guest visitors' ); ?></option>
|
||||
<option value="user" <?php selected( $popup_show_to, 'user' ); ?>><?php esc_html_e( 'Show only to logged-in users', 'advanced-popups' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="popup-tab-display">
|
||||
<div class="adp-metabox-field popup-field-rules-mode">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_rules_mode"><?php esc_html_e( 'Show Popup', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input type="radio" id="adp_popup_rules_mode" name="adp_popup_rules_mode" value="all" <?php checked( $popup_rules_mode, 'all' ); ?>> <?php esc_html_e( 'Entire Site', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_rules_mode" name="adp_popup_rules_mode" value="specific" <?php checked( $popup_rules_mode, 'specific' ); ?>> <?php esc_html_e( 'Specific Pages', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-rules">
|
||||
<div class="popup-field-rules-list">
|
||||
<?php
|
||||
if ( is_array( $popup_rules ) && $popup_rules ) {
|
||||
foreach ( $popup_rules as $i => $row ) {
|
||||
?>
|
||||
<div class="row">
|
||||
<?php
|
||||
foreach ( $row as $t => $tools ) {
|
||||
?>
|
||||
<div class="tools">
|
||||
<select class="adp-popup-rules" name="adp_popup_rules[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $t ); ?>][rule]">
|
||||
<?php
|
||||
$rules = ADP_Popup_Rules::instance()->get_list();
|
||||
|
||||
foreach ( $rules as $optgroup => $items ) {
|
||||
$label = $optgroup;
|
||||
|
||||
$label = str_replace( 'general', esc_html__( 'General', 'advanced-popups' ), $label );
|
||||
$label = str_replace( 'post_types', esc_html__( 'Posts Types', 'advanced-popups' ), $label );
|
||||
$label = str_replace( 'taxonomies', esc_html__( 'Taxonomies', 'advanced-popups' ), $label );
|
||||
?>
|
||||
<optgroup data-group="<?php echo esc_attr( $optgroup ); ?>"
|
||||
label="<?php echo esc_attr( $label ); ?>">
|
||||
<?php
|
||||
foreach ( $items as $key => $name ) {
|
||||
?>
|
||||
<option value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $tools['rule'] ); ?>>
|
||||
<?php echo esc_html( $name ); ?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
|
||||
<input type="text" class="adp-popup-url" name="adp_popup_rules[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $t ); ?>][url]" value="<?php echo esc_attr( $tools['url'] ); ?>">
|
||||
|
||||
<?php
|
||||
$type = ADP_Popup_Rules::instance()->get_type( $tools['rule'] );
|
||||
?>
|
||||
<select multiple class="adp-popup-objects" name="adp_popup_rules[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $t ); ?>][object][]">
|
||||
<?php
|
||||
if ( isset( $tools['object'] ) && is_array( $tools['object'] ) ) {
|
||||
|
||||
foreach ( $tools['object'] as $object ) {
|
||||
$name = (int) $object;
|
||||
if ( 'post' === $type ) {
|
||||
$name = get_the_title( $object );
|
||||
}
|
||||
if ( 'taxonomy' === $type ) {
|
||||
$term = get_term( $object );
|
||||
|
||||
$name = $term->name;
|
||||
|
||||
}
|
||||
?>
|
||||
<option value="<?php echo esc_attr( $object ); ?>" selected="selected"><?php echo esc_html( $name ); ?></option>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
|
||||
<a href="#" class="delete remove-another-rule">
|
||||
<span class="dashicons dashicons-no-alt"></span>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="tools-bar">
|
||||
<div class="button add-another-rule">
|
||||
<?php esc_html_e( 'Add another OR rule', 'advanced-popups' ); ?>
|
||||
</div>
|
||||
|
||||
<a href="#" class="delete remove-rule"><?php esc_html_e( 'Remove', 'advanced-popups' ); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div class="button button-primary add-new-rule">
|
||||
<?php esc_html_e( 'Add New Rule ', 'advanced-popups' ); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="popup-tab-triggers">
|
||||
<div class="adp-metabox-field popup-field-open-trigger">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_open_trigger"><?php esc_html_e( 'Trigger Open Popup', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input type="radio" id="adp_popup_open_trigger" name="adp_popup_open_trigger" value="delay" <?php checked( $popup_open_trigger, 'delay' ); ?>> <?php esc_html_e( 'Time Delay', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_open_trigger" name="adp_popup_open_trigger" value="viewed" <?php checked( $popup_open_trigger, 'viewed' ); ?>> <?php esc_html_e( 'Page Viewed', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_open_trigger" name="adp_popup_open_trigger" value="read" <?php checked( $popup_open_trigger, 'read' ); ?>> <?php esc_html_e( 'Page Read', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_open_trigger" name="adp_popup_open_trigger" value="exit" <?php checked( $popup_open_trigger, 'exit' ); ?>> <?php esc_html_e( 'Exit Intent', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_open_trigger" name="adp_popup_open_trigger" value="scroll" <?php checked( $popup_open_trigger, 'scroll' ); ?>> <?php esc_html_e( 'Scroll Position', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_open_trigger" name="adp_popup_open_trigger" value="accept" <?php checked( $popup_open_trigger, 'accept' ); ?>> <?php esc_html_e( 'Accept Agreement', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_open_trigger" name="adp_popup_open_trigger" value="manual" <?php checked( $popup_open_trigger, 'manual' ); ?>> <?php esc_html_e( 'Manual Launch', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-open-accept-desc">
|
||||
<div class="adp-metabox-label"></div>
|
||||
<div class="adp-metabox-input">
|
||||
<p class="description"><?php esc_html_e( 'It works for "Notification Box" and "Notification Bar". And if "Notification Button Action" is selected as "Accept", then the popup will be displayed until the user accepts the agreement.', 'advanced-popups' ); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-open-delay-number">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_open_delay_number"><?php esc_html_e( 'Time Delay', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input class="short" type="number" id="adp_popup_open_delay_number" name="adp_popup_open_delay_number" value="<?php echo esc_attr( $popup_open_delay_number ); ?>" /> <?php esc_html_e( 'Seconds', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-open-scroll-position">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_open_scroll_position"><?php esc_html_e( 'Scroll Position', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label>
|
||||
<input class="short" type="number" id="adp_popup_open_scroll_position" name="adp_popup_open_scroll_position" value="<?php echo esc_attr( $popup_open_scroll_position ); ?>" />
|
||||
|
||||
<select class="short" id="adp_popup_open_scroll_type" name="adp_popup_open_scroll_type">
|
||||
<option value="px" <?php selected( $popup_open_scroll_type, 'px' ); ?>><?php esc_html_e( 'Px.', 'advanced-popups' ); ?></option>
|
||||
<option value="%" <?php selected( $popup_open_scroll_type, '%' ); ?>><?php esc_html_e( '%', 'advanced-popups' ); ?></option>
|
||||
</select> <?php esc_html_e( 'of screen', 'advanced-popups' ); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-open-manual-selector">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_open_manual_selector"><?php esc_html_e( 'CSS Selector', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<input type="text" id="adp_popup_open_manual_selector" name="adp_popup_open_manual_selector" value="<?php echo esc_attr( $popup_open_manual_selector ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-close-trigger">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_close_trigger"><?php esc_html_e( 'Trigger Close Popup', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input type="radio" id="adp_popup_close_trigger" name="adp_popup_close_trigger" value="none" <?php checked( $popup_close_trigger, 'none' ); ?>> <?php esc_html_e( 'None', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_close_trigger" name="adp_popup_close_trigger" value="delay" <?php checked( $popup_close_trigger, 'delay' ); ?>> <?php esc_html_e( 'Time Delay', 'advanced-popups' ); ?></label>
|
||||
<label><input type="radio" id="adp_popup_close_trigger" name="adp_popup_close_trigger" value="scroll" <?php checked( $popup_close_trigger, 'scroll' ); ?>> <?php esc_html_e( 'Scroll Position', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-close-delay-number">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_close_delay_number"><?php esc_html_e( 'Time Delay', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input class="short" type="number" id="adp_popup_close_delay_number" name="adp_popup_close_delay_number" value="<?php echo esc_attr( $popup_close_delay_number ); ?>" /> <?php esc_html_e( 'Seconds', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-close-scroll-position">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_close_scroll_position"><?php esc_html_e( 'Offset Scroll Position', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label>
|
||||
<input class="short" type="number" id="adp_popup_close_scroll_position" name="adp_popup_close_scroll_position" value="<?php echo esc_attr( $popup_close_scroll_position ); ?>" />
|
||||
|
||||
<select class="short" id="adp_popup_close_scroll_type" name="adp_popup_close_scroll_type">
|
||||
<option value="px" <?php selected( $popup_close_scroll_type, 'px' ); ?>><?php esc_html_e( 'Px.', 'advanced-popups' ); ?></option>
|
||||
<option value="%" <?php selected( $popup_close_scroll_type, '%' ); ?>><?php esc_html_e( '%', 'advanced-popups' ); ?></option>
|
||||
</select> <?php esc_html_e( 'of screen', 'advanced-popups' ); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="popup-tab-style">
|
||||
<div class="adp-metabox-field popup-field-open-animation">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_open_animation"><?php esc_html_e( 'Open Animation', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<select id="adp_popup_open_animation" name="adp_popup_open_animation">
|
||||
<option value="popupOpenFade" <?php selected( $popup_open_animation, 'popupOpenFade' ); ?>><?php esc_html_e( 'Fade', 'advanced-popups' ); ?></option>
|
||||
<option value="popupOpenSlide" <?php selected( $popup_open_animation, 'popupOpenSlide' ); ?>><?php esc_html_e( 'Slide', 'advanced-popups' ); ?></option>
|
||||
<option value="popupOpenZoom" <?php selected( $popup_open_animation, 'popupOpenZoom' ); ?>><?php esc_html_e( 'Zoom', 'advanced-popups' ); ?></option>
|
||||
<option value="popupOpenSlideFade" <?php selected( $popup_open_animation, 'popupOpenSlideFade' ); ?>><?php esc_html_e( 'Slide and Fade', 'advanced-popups' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-exit-animation">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_exit_animation"><?php esc_html_e( 'Exit Animation', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<select id="adp_popup_exit_animation" name="adp_popup_exit_animation">
|
||||
<option value="popupExitFade" <?php selected( $popup_exit_animation, 'popupExitFade' ); ?>><?php esc_html_e( 'Fade', 'advanced-popups' ); ?></option>
|
||||
<option value="popupExitSlide" <?php selected( $popup_exit_animation, 'popupExitSlide' ); ?>><?php esc_html_e( 'Slide', 'advanced-popups' ); ?></option>
|
||||
<option value="popupExitZoom" <?php selected( $popup_exit_animation, 'popupExitZoom' ); ?>><?php esc_html_e( 'Zoom', 'advanced-popups' ); ?></option>
|
||||
<option value="popupExitSlideFade" <?php selected( $popup_exit_animation, 'popupExitSlideFade' ); ?>><?php esc_html_e( 'Slide and Fade', 'advanced-popups' ); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-content-box-width">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_content_box_width"><?php esc_html_e( 'Content Box Width', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label>
|
||||
<input class="short" type="number" id="adp_popup_content_box_width" name="adp_popup_content_box_width" value="<?php echo esc_attr( $popup_content_box_width ); ?>" /> <?php esc_html_e( 'px.', 'advanced-popups' ); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-notification-box-width">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_notification_box_width"><?php esc_html_e( 'Notification Box Width', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label>
|
||||
<input class="short" type="number" id="adp_popup_notification_box_width" name="adp_popup_notification_box_width" value="<?php echo esc_attr( $popup_notification_box_width ); ?>" /> <?php esc_html_e( 'px.', 'advanced-popups' ); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-notification-bar-width">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_notification_bar_width"><?php esc_html_e( 'Notification Bar Width', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label>
|
||||
<input class="short" type="number" id="adp_popup_notification_bar_width" name="adp_popup_notification_bar_width" value="<?php echo esc_attr( $popup_notification_bar_width ); ?>" /> <?php esc_html_e( 'px.', 'advanced-popups' ); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-display-overlay">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_light_close"><?php esc_html_e( 'Light Close Button', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<input type="checkbox" id="adp_popup_light_close" name="adp_popup_light_close" value="1" <?php checked( $popup_light_close ); ?>>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-display-overlay">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_display_overlay"><?php esc_html_e( 'Display Overlay', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<input type="checkbox" id="adp_popup_display_overlay" name="adp_popup_display_overlay" value="1" <?php checked( $popup_display_overlay ); ?>>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="popup-tab-advanced">
|
||||
<div class="adp-metabox-field popup-field-mobile-disable">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_mobile_disable"><?php esc_html_e( 'Mobile Disable', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input type="checkbox" id="adp_popup_mobile_disable" name="adp_popup_mobile_disable" value="1" <?php checked( $popup_mobile_disable ); ?>> <?php esc_html_e( 'Disable popup on mobile', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-body-scroll-disable">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_body_scroll_disable"><?php esc_html_e( 'Disable Scrolling', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input type="checkbox" id="adp_popup_body_scroll_disable" name="adp_popup_body_scroll_disable" value="1" <?php checked( $popup_body_scroll_disable ); ?>> <?php esc_html_e( 'Disable scrolling on body', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-overlay-close">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_overlay_close"><?php esc_html_e( 'Click Overlay to Close', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input type="checkbox" id="adp_popup_overlay_close" name="adp_popup_overlay_close" value="1" <?php checked( $popup_overlay_close ); ?>> <?php esc_html_e( 'Checking this will cause popup to close when user clicks on overlay', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-esc-close">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_esc_close"><?php esc_html_e( 'Press ESC to Close', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input type="checkbox" id="adp_popup_esc_close" name="adp_popup_esc_close" value="1" <?php checked( $popup_esc_close ); ?>> <?php esc_html_e( 'Checking this will cause popup to close when user presses ESC key', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="adp-metabox-field popup-field-f4-close">
|
||||
<div class="adp-metabox-label">
|
||||
<label for="adp_popup_f4_close"><?php esc_html_e( 'Press F4 to Close', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
<div class="adp-metabox-input">
|
||||
<label><input type="checkbox" id="adp_popup_f4_close" name="adp_popup_f4_close" value="1" <?php checked( $popup_f4_close ); ?>> <?php esc_html_e( 'Checking this will cause popup to close when user presses F4 key', 'advanced-popups' ); ?></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Save meta tags by post
|
||||
*
|
||||
* @param int $post_id Post ID.
|
||||
* @param object $post Post Object.
|
||||
*/
|
||||
public function metabox_popup_save( $post_id, $post ) {
|
||||
|
||||
// Break if doing autosave.
|
||||
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Break if current user can't edit this post.
|
||||
if ( ! current_user_can( 'edit_post', $post_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Break if this post revision.
|
||||
if ( wp_is_post_revision( $post_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! isset( $_POST['adp_popup_meta_nonce'] ) || ! wp_verify_nonce( $_POST['adp_popup_meta_nonce'], 'adp_popup_meta_nonce' ) ) { // Input var ok; sanitization ok.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! isset( $_POST['adp_popup_action'] ) || 1 !== (int) $_POST['adp_popup_action'] ) { // Input var ok; sanitization ok.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_type'] ) ) {
|
||||
$popup_type = sanitize_text_field( $_POST['adp_popup_type'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_type', $popup_type );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_location'] ) ) {
|
||||
$popup_location = sanitize_text_field( $_POST['adp_popup_location'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_location', $popup_location );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_preview_image'] ) ) {
|
||||
$popup_preview_image = sanitize_text_field( $_POST['adp_popup_preview_image'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_preview_image', $popup_preview_image );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_info_text'] ) ) {
|
||||
$popup_info_text = wp_kses_post( $_POST['adp_popup_info_text'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_info_text', $popup_info_text );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_info_buton_label'] ) ) {
|
||||
$popup_info_buton_label = sanitize_text_field( $_POST['adp_popup_info_buton_label'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_info_buton_label', $popup_info_buton_label );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_info_button_action'] ) ) {
|
||||
$popup_info_button_action = sanitize_text_field( $_POST['adp_popup_info_button_action'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_info_button_action', $popup_info_button_action );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_info_button_link'] ) ) {
|
||||
$popup_info_button_link = sanitize_text_field( $_POST['adp_popup_info_button_link'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_info_button_link', $popup_info_button_link );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_limit_display'] ) ) {
|
||||
$popup_limit_display = (int) sanitize_text_field( $_POST['adp_popup_limit_display'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_limit_display', $popup_limit_display );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_limit_lifetime'] ) ) {
|
||||
$popup_limit_lifetime = (int) sanitize_text_field( $_POST['adp_popup_limit_lifetime'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_limit_lifetime', $popup_limit_lifetime );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_show_to'] ) ) {
|
||||
$popup_show_to = sanitize_text_field( $_POST['adp_popup_show_to'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_show_to', $popup_show_to );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_rules_mode'] ) ) {
|
||||
$popup_rules_mode = sanitize_text_field( $_POST['adp_popup_rules_mode'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_rules_mode', $popup_rules_mode );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_rules'] ) ) {
|
||||
$popup_rules = map_deep( $_POST['adp_popup_rules'], 'sanitize_text_field' ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_rules', $popup_rules );
|
||||
} else {
|
||||
delete_post_meta( $post_id, '_adp_popup_rules' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_open_trigger'] ) ) {
|
||||
$popup_open_trigger = sanitize_text_field( $_POST['adp_popup_open_trigger'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_open_trigger', $popup_open_trigger );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_open_delay_number'] ) ) {
|
||||
$popup_open_delay_number = sanitize_text_field( $_POST['adp_popup_open_delay_number'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_open_delay_number', $popup_open_delay_number );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_open_scroll_position'] ) ) {
|
||||
$popup_open_scroll_position = sanitize_text_field( $_POST['adp_popup_open_scroll_position'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_open_scroll_position', $popup_open_scroll_position );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_open_scroll_type'] ) ) {
|
||||
$popup_open_scroll_type = sanitize_text_field( $_POST['adp_popup_open_scroll_type'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_open_scroll_type', $popup_open_scroll_type );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_open_manual_selector'] ) ) {
|
||||
$popup_open_manual_selector = sanitize_text_field( $_POST['adp_popup_open_manual_selector'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_open_manual_selector', $popup_open_manual_selector );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_close_trigger'] ) ) {
|
||||
$popup_close_trigger = sanitize_text_field( $_POST['adp_popup_close_trigger'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_close_trigger', $popup_close_trigger );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_close_delay_number'] ) ) {
|
||||
$popup_close_delay_number = sanitize_text_field( $_POST['adp_popup_close_delay_number'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_close_delay_number', $popup_close_delay_number );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_close_scroll_position'] ) ) {
|
||||
$popup_close_scroll_position = sanitize_text_field( $_POST['adp_popup_close_scroll_position'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_close_scroll_position', $popup_close_scroll_position );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_close_scroll_type'] ) ) {
|
||||
$popup_close_scroll_type = sanitize_text_field( $_POST['adp_popup_close_scroll_type'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_close_scroll_type', $popup_close_scroll_type );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_open_animation'] ) ) {
|
||||
$popup_open_animation = sanitize_text_field( $_POST['adp_popup_open_animation'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_open_animation', $popup_open_animation );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_exit_animation'] ) ) {
|
||||
$popup_exit_animation = sanitize_text_field( $_POST['adp_popup_exit_animation'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_exit_animation', $popup_exit_animation );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_content_box_width'] ) ) {
|
||||
$popup_content_box_width = (int) sanitize_text_field( $_POST['adp_popup_content_box_width'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_content_box_width', $popup_content_box_width );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_notification_box_width'] ) ) {
|
||||
$popup_notification_box_width = (int) sanitize_text_field( $_POST['adp_popup_notification_box_width'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_notification_box_width', $popup_notification_box_width );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_notification_bar_width'] ) ) {
|
||||
$popup_notification_bar_width = (int) sanitize_text_field( $_POST['adp_popup_notification_bar_width'] ); // Input var ok; sanitization ok.
|
||||
|
||||
update_post_meta( $post_id, '_adp_popup_notification_bar_width', $popup_notification_bar_width );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_light_close'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_adp_popup_light_close', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_adp_popup_light_close', '' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_display_overlay'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_adp_popup_display_overlay', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_adp_popup_display_overlay', '' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_mobile_disable'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_adp_popup_mobile_disable', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_adp_popup_mobile_disable', '' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_body_scroll_disable'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_adp_popup_body_scroll_disable', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_adp_popup_body_scroll_disable', '' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_overlay_close'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_adp_popup_overlay_close', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_adp_popup_overlay_close', '' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_esc_close'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_adp_popup_esc_close', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_adp_popup_esc_close', '' );
|
||||
}
|
||||
|
||||
if ( isset( $_POST['adp_popup_f4_close'] ) ) { // Input var ok; sanitization ok.
|
||||
update_post_meta( $post_id, '_adp_popup_f4_close', 1 );
|
||||
} else {
|
||||
update_post_meta( $post_id, '_adp_popup_f4_close', '' );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get objects list in rules.
|
||||
*/
|
||||
public function ajax_rules_objects() {
|
||||
|
||||
check_ajax_referer();
|
||||
|
||||
$search = isset( $_POST['search'] ) ? sanitize_text_field( $_POST['search'] ) : ''; // Input var ok; sanitization ok.
|
||||
$group = isset( $_GET['group'] ) ? sanitize_text_field( $_GET['group'] ) : 'post_types'; // Input var ok; sanitization ok.
|
||||
$rule = isset( $_GET['rule'] ) ? sanitize_text_field( $_GET['rule'] ) : 'none'; // Input var ok; sanitization ok.
|
||||
$page = isset( $_GET['page'] ) ? (int) sanitize_text_field( $_GET['page'] ) : 1; // Input var ok; sanitization ok.
|
||||
|
||||
// Data container.
|
||||
$data = array();
|
||||
|
||||
// Get object.
|
||||
$object = ADP_Popup_Rules::instance()->get_object( $rule );
|
||||
|
||||
// Get posts.
|
||||
if ( 'post_types' === $group ) {
|
||||
|
||||
$args = array(
|
||||
's' => $search,
|
||||
'post_status' => 'publish',
|
||||
'ignore_sticky_posts' => 1,
|
||||
'posts_per_page' => 10,
|
||||
'post_type' => $object,
|
||||
'paged' => $page,
|
||||
);
|
||||
|
||||
$query = new WP_Query( $args );
|
||||
|
||||
if ( $query->have_posts() ) {
|
||||
while ( $query->have_posts() ) {
|
||||
$query->the_post();
|
||||
|
||||
$data['items'][ $query->post->ID ] = $query->post->post_title;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $page < (int) $query->max_num_pages ) {
|
||||
$data['pagination'] = true;
|
||||
} else {
|
||||
$data['pagination'] = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Get terms.
|
||||
if ( 'taxonomies' === $group ) {
|
||||
|
||||
$terms = get_terms( $object, array(
|
||||
'hide_empty' => false,
|
||||
) );
|
||||
|
||||
if ( $terms && ! is_wp_error( $terms ) ) {
|
||||
foreach ( $terms as $term ) {
|
||||
$data['items'][ $term->term_id ] = $term->name;
|
||||
}
|
||||
}
|
||||
|
||||
$data['pagination'] = false;
|
||||
}
|
||||
|
||||
wp_send_json( $data );
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the stylesheets and JavaScript for the admin area.
|
||||
*
|
||||
* @param string $page Current page.
|
||||
*/
|
||||
public function admin_enqueue_scripts( $page ) {
|
||||
|
||||
global $post_type;
|
||||
|
||||
if ( 'adp-popup' !== $post_type ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( in_array( $page, array( 'post.php', 'post-new.php' ), true ) ) {
|
||||
|
||||
// Select2.
|
||||
wp_enqueue_style( 'select2', plugin_dir_url( __FILE__ ) . 'css/select2.min.css' );
|
||||
wp_enqueue_script( 'select2', plugin_dir_url( __FILE__ ) . 'js/select2.full.min.js', array( 'jquery' ) );
|
||||
|
||||
wp_enqueue_script( 'jquery-ui-sortable' );
|
||||
wp_enqueue_script( 'jquery-ui-tabs' );
|
||||
|
||||
// Scripts.
|
||||
wp_enqueue_script( $this->adp, plugin_dir_url( __FILE__ ) . 'js/advanced-popups-admin.js', array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-sortable', 'select2' ), $this->version, false );
|
||||
|
||||
wp_localize_script( $this->adp, 'adp_popup_data', array(
|
||||
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
||||
'nonce' => wp_create_nonce(),
|
||||
'label_general' => esc_html__( 'General', 'advanced-popups' ),
|
||||
'label_post_types' => esc_html__( 'Posts Types', 'advanced-popups' ),
|
||||
'label_taxonomies' => esc_html__( 'Taxonomies', 'advanced-popups' ),
|
||||
'btn_label_another' => esc_html__( 'Add another OR rule', 'advanced-popups' ),
|
||||
'btn_delete' => esc_html__( 'Remove', 'advanced-popups' ),
|
||||
'select2_placeholder' => esc_html__( 'Find items...', 'advanced-popups' ),
|
||||
'select2_errorLoading' => esc_html__( 'The results could not be loaded.', 'advanced-popups' ),
|
||||
'select2_loadingMore' => esc_html__( 'Loading more results...', 'advanced-popups' ),
|
||||
'select2_noResults' => esc_html__( 'Nothing not found', 'advanced-popups' ),
|
||||
'select2_searching' => esc_html__( 'Searching...', 'advanced-popups' ),
|
||||
'select2_removeAllItems' => esc_html__( 'Remove all items', 'advanced-popups' ),
|
||||
'rules_list' => wp_json_encode( ADP_Popup_Rules::instance()->get_list() ),
|
||||
) );
|
||||
|
||||
// Styles.
|
||||
wp_enqueue_style( $this->adp, adp_style( plugin_dir_url( __FILE__ ) . 'css/advanced-popups-admin.css' ), array(), $this->version, 'all' );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,500 @@
|
||||
/**
|
||||
* All of the CSS for your admin-facing functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
/*--------------------------------------------------------------*/
|
||||
#adp_popup_metabox .inside {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#adp_popup_metabox .hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Basic -------------------------------------------------------------- */
|
||||
.adp-metabox-wrap .adp-metabox-tabs {
|
||||
background: none;
|
||||
border: none;
|
||||
display: flex;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: none;
|
||||
border-left: 1px solid #eee;
|
||||
background: #FAFAFA;
|
||||
flex: 0 0 200px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li {
|
||||
display: block;
|
||||
background: transparent;
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
float: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li a {
|
||||
border: none;
|
||||
border-bottom: 1px solid #eee;
|
||||
position: relative;
|
||||
display: block;
|
||||
font-size: 0.8125rem;
|
||||
line-height: 1.25rem;
|
||||
padding: 0.625rem;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
color: #0073aa;
|
||||
float: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li a:hover {
|
||||
color: #00a0d2;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li.ui-tabs-active {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li.ui-tabs-active a {
|
||||
background-color: #eee;
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-content {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-content .ui-tabs-panel {
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.adp-metabox-wrap .adp-metabox-tabs {
|
||||
flex-direction: column;
|
||||
}
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field {
|
||||
display: flex;
|
||||
position: relative;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-label {
|
||||
position: relative;
|
||||
flex: 0 0 100%;
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 0.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-label label {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
line-height: 1.4em;
|
||||
margin: 0 0 3px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input {
|
||||
position: relative;
|
||||
flex: 0 0 100%;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 0.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input input[type="number"],
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input input[type="text"],
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input select,
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input input[type="number"].short,
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input input[type="text"].short,
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input select.short,
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input textarea.short {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.adp-metabox-wrap .adp-metabox-field {
|
||||
flex-direction: row;
|
||||
}
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-label {
|
||||
flex: 0 0 20%;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input {
|
||||
flex: 0 0 80%;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: -2rem;
|
||||
left: 1rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-switch {
|
||||
border: 2px solid #555d66;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
height: 1.75rem;
|
||||
height: 18px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
width: 36px;
|
||||
margin-left: 0.5rem;
|
||||
border-radius: 9px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-switch .adp-metabox-switch-on {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
z-index: 1;
|
||||
background: #6C7781;
|
||||
border-radius: 50%;
|
||||
transition: all 0s ease 0.25s;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-switch .adp-metabox-switch-off {
|
||||
border: 2px solid #6c7781;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
left: 3px;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-switch .adp-metabox-switch-slider {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
z-index: 1;
|
||||
background: #6C7781;
|
||||
border-radius: 50%;
|
||||
transition: all 0.25s ease;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-checkbox {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-checkbox:checked + .adp-metabox-switch {
|
||||
border-color: #11A0D2;
|
||||
background: #11A0D2;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-checkbox:checked + .adp-metabox-switch .adp-metabox-switch-on {
|
||||
top: 4px;
|
||||
right: 6px;
|
||||
width: 2px;
|
||||
height: 6px;
|
||||
background: #FFFFFF;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-checkbox:checked + .adp-metabox-switch .adp-metabox-switch-slider {
|
||||
background: #FFFFFF;
|
||||
top: 2px;
|
||||
right: calc(50% + 4px);
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table {
|
||||
width: 100%;
|
||||
border: none;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr {
|
||||
background: #FFFFFF;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr th {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr th,
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr td {
|
||||
border: none;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr.ui-sortable-helper {
|
||||
display: table;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr.ui-sortable-placeholder {
|
||||
background: #F9F9F9;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr.ui-state-highlight td {
|
||||
background: #F9F9F9;
|
||||
border: 1px dashed #D8D8D8;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .btn-add-row {
|
||||
margin: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-content input, .adp-metabox-wrap .adp-metabox-repeater .row-content textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-content input[type="number"] {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-content p {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar {
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EFEFEF;
|
||||
padding: 1rem 1.25rem;
|
||||
zoom: 1;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .handlediv {
|
||||
display: block !important;
|
||||
background-position: 6px 5px;
|
||||
visibility: hidden;
|
||||
width: 27px;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .handlediv:before {
|
||||
content: "\f142";
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font: 400 20px/1 Dashicons;
|
||||
line-height: .5;
|
||||
padding: 8px 10px;
|
||||
position: relative;
|
||||
left: 12px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar.closed .handlediv:before {
|
||||
content: "\f140";
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .delete {
|
||||
color: red;
|
||||
font-weight: 400;
|
||||
line-height: 26px;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
visibility: hidden;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .signature {
|
||||
display: inline-block;
|
||||
padding-left: 100px;
|
||||
line-height: 26px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .signature span {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar:hover .handlediv,
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar:hover .delete {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-fields {
|
||||
border-bottom: 1px solid #EFEFEF;
|
||||
background-color: #FDFDFD;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-body {
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
/* Popup -------------------------------------------------------------- */
|
||||
.adp-metabox-wrap .popup-field-info-text,
|
||||
.adp-metabox-wrap .popup-field-info-buton-label,
|
||||
.adp-metabox-wrap .popup-field-info-buton-action,
|
||||
.adp-metabox-wrap .popup-field-info-buton-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules input[type="text"],
|
||||
.adp-metabox-wrap .popup-field-rules select {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules .delete {
|
||||
display: inline-block;
|
||||
color: red;
|
||||
font-weight: 400;
|
||||
line-height: 26px;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules .add-new-rule {
|
||||
margin-right: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list:not(:empty) {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .row {
|
||||
border-top: 1px dashed #EEEEEE;
|
||||
margin-top: 1.5rem;
|
||||
padding-right: 1.25rem;
|
||||
padding-left: 1.25rem;
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .row:first-child {
|
||||
border-top: none;
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .tools {
|
||||
position: relative;
|
||||
border-right: 2px solid #555D66;
|
||||
background: #FAFAFA;
|
||||
margin-top: 1rem;
|
||||
padding: 1rem;
|
||||
padding-left: 3rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .tools:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .tools-bar {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .remove-another-rule {
|
||||
position: absolute;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
top: 1rem;
|
||||
left: 1rem;
|
||||
margin: 0;
|
||||
font-size: 1rem;
|
||||
color: #555d66;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .remove-another-rule:hover {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list input[type="text"],
|
||||
.adp-metabox-wrap .popup-field-rules-list .select2 {
|
||||
width: 100%;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .select2-selection {
|
||||
border: 1px solid #ddd;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07);
|
||||
border-radius: 0;
|
||||
min-height: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .select2-selection__choice {
|
||||
background: #FAFAFA;
|
||||
border-color: #CDCDCD;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-popup-objects.hidden + .select2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.popup-block-easy .editor-post-title {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.popup-block-easy .edit-post-header-toolbar {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.popup-block-easy .editor-post-text-editor,
|
||||
.popup-block-easy .block-editor-block-list__layout {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.popup-block-easy .adp-metabox-wrap .popup-field-info-text,
|
||||
.popup-block-easy .adp-metabox-wrap .popup-field-info-buton-label,
|
||||
.popup-block-easy .adp-metabox-wrap .popup-field-info-buton-action,
|
||||
.popup-block-easy .adp-metabox-wrap .popup-field-info-buton-link {
|
||||
display: flex;
|
||||
}
|
||||
@@ -0,0 +1,500 @@
|
||||
/**
|
||||
* All of the CSS for your admin-facing functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
/*--------------------------------------------------------------*/
|
||||
#adp_popup_metabox .inside {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#adp_popup_metabox .hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Basic -------------------------------------------------------------- */
|
||||
.adp-metabox-wrap .adp-metabox-tabs {
|
||||
background: none;
|
||||
border: none;
|
||||
display: flex;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: none;
|
||||
border-right: 1px solid #eee;
|
||||
background: #FAFAFA;
|
||||
flex: 0 0 200px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li {
|
||||
display: block;
|
||||
background: transparent;
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
float: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li a {
|
||||
border: none;
|
||||
border-bottom: 1px solid #eee;
|
||||
position: relative;
|
||||
display: block;
|
||||
font-size: 0.8125rem;
|
||||
line-height: 1.25rem;
|
||||
padding: 0.625rem;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
color: #0073aa;
|
||||
float: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li a:hover {
|
||||
color: #00a0d2;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li.ui-tabs-active {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation li.ui-tabs-active a {
|
||||
background-color: #eee;
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-content {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-content .ui-tabs-panel {
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.adp-metabox-wrap .adp-metabox-tabs {
|
||||
flex-direction: column;
|
||||
}
|
||||
.adp-metabox-wrap .adp-metabox-tabs > .adp-metabox-tabs-navigation {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field {
|
||||
display: flex;
|
||||
position: relative;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-label {
|
||||
position: relative;
|
||||
flex: 0 0 100%;
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 0.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-label label {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
line-height: 1.4em;
|
||||
margin: 0 0 3px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input {
|
||||
position: relative;
|
||||
flex: 0 0 100%;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 0.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input input[type="number"],
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input input[type="text"],
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input select,
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input input[type="number"].short,
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input input[type="text"].short,
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input select.short,
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input textarea.short {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.adp-metabox-wrap .adp-metabox-field {
|
||||
flex-direction: row;
|
||||
}
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-label {
|
||||
flex: 0 0 20%;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
.adp-metabox-wrap .adp-metabox-field .adp-metabox-input {
|
||||
flex: 0 0 80%;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: -2rem;
|
||||
right: 1rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-switch {
|
||||
border: 2px solid #555d66;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
height: 1.75rem;
|
||||
height: 18px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
width: 36px;
|
||||
margin-right: 0.5rem;
|
||||
border-radius: 9px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-switch .adp-metabox-switch-on {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
z-index: 1;
|
||||
background: #6C7781;
|
||||
border-radius: 50%;
|
||||
transition: all 0s ease 0.25s;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-switch .adp-metabox-switch-off {
|
||||
border: 2px solid #6c7781;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
right: 3px;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-switch .adp-metabox-switch-slider {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
z-index: 1;
|
||||
background: #6C7781;
|
||||
border-radius: 50%;
|
||||
transition: all 0.25s ease;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-checkbox {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-checkbox:checked + .adp-metabox-switch {
|
||||
border-color: #11A0D2;
|
||||
background: #11A0D2;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-checkbox:checked + .adp-metabox-switch .adp-metabox-switch-on {
|
||||
top: 4px;
|
||||
left: 6px;
|
||||
width: 2px;
|
||||
height: 6px;
|
||||
background: #FFFFFF;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-switcher .adp-metabox-checkbox:checked + .adp-metabox-switch .adp-metabox-switch-slider {
|
||||
background: #FFFFFF;
|
||||
top: 2px;
|
||||
left: calc(50% + 4px);
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table {
|
||||
width: 100%;
|
||||
border: none;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr {
|
||||
background: #FFFFFF;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr th {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr th,
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr td {
|
||||
border: none;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr.ui-sortable-helper {
|
||||
display: table;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr.ui-sortable-placeholder {
|
||||
background: #F9F9F9;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater > table tr.ui-state-highlight td {
|
||||
background: #F9F9F9;
|
||||
border: 1px dashed #D8D8D8;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .btn-add-row {
|
||||
margin: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-content input, .adp-metabox-wrap .adp-metabox-repeater .row-content textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-content input[type="number"] {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-content p {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar {
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EFEFEF;
|
||||
padding: 1rem 1.25rem;
|
||||
zoom: 1;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .handlediv {
|
||||
display: block !important;
|
||||
background-position: 6px 5px;
|
||||
visibility: hidden;
|
||||
width: 27px;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .handlediv:before {
|
||||
content: "\f142";
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font: 400 20px/1 Dashicons;
|
||||
line-height: .5;
|
||||
padding: 8px 10px;
|
||||
position: relative;
|
||||
right: 12px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar.closed .handlediv:before {
|
||||
content: "\f140";
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .delete {
|
||||
color: red;
|
||||
font-weight: 400;
|
||||
line-height: 26px;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
visibility: hidden;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .signature {
|
||||
display: inline-block;
|
||||
padding-right: 100px;
|
||||
line-height: 26px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar .signature span {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar:hover .handlediv,
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-topbar:hover .delete {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-fields {
|
||||
border-bottom: 1px solid #EFEFEF;
|
||||
background-color: #FDFDFD;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-metabox-repeater .row-body {
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
/* Popup -------------------------------------------------------------- */
|
||||
.adp-metabox-wrap .popup-field-info-text,
|
||||
.adp-metabox-wrap .popup-field-info-buton-label,
|
||||
.adp-metabox-wrap .popup-field-info-buton-action,
|
||||
.adp-metabox-wrap .popup-field-info-buton-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules input[type="text"],
|
||||
.adp-metabox-wrap .popup-field-rules select {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules .delete {
|
||||
display: inline-block;
|
||||
color: red;
|
||||
font-weight: 400;
|
||||
line-height: 26px;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules .add-new-rule {
|
||||
margin-left: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list:not(:empty) {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .row {
|
||||
border-top: 1px dashed #EEEEEE;
|
||||
margin-top: 1.5rem;
|
||||
padding-left: 1.25rem;
|
||||
padding-right: 1.25rem;
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .row:first-child {
|
||||
border-top: none;
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .tools {
|
||||
position: relative;
|
||||
border-left: 2px solid #555D66;
|
||||
background: #FAFAFA;
|
||||
margin-top: 1rem;
|
||||
padding: 1rem;
|
||||
padding-right: 3rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .tools:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .tools-bar {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .remove-another-rule {
|
||||
position: absolute;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
top: 1rem;
|
||||
right: 1rem;
|
||||
margin: 0;
|
||||
font-size: 1rem;
|
||||
color: #555d66;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .remove-another-rule:hover {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list input[type="text"],
|
||||
.adp-metabox-wrap .popup-field-rules-list .select2 {
|
||||
width: 100%;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .select2-selection {
|
||||
border: 1px solid #ddd;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07);
|
||||
border-radius: 0;
|
||||
min-height: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .popup-field-rules-list .select2-selection__choice {
|
||||
background: #FAFAFA;
|
||||
border-color: #CDCDCD;
|
||||
}
|
||||
|
||||
.adp-metabox-wrap .adp-popup-objects.hidden + .select2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.popup-block-easy .editor-post-title {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.popup-block-easy .edit-post-header-toolbar {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.popup-block-easy .editor-post-text-editor,
|
||||
.popup-block-easy .block-editor-block-list__layout {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.popup-block-easy .adp-metabox-wrap .popup-field-info-text,
|
||||
.popup-block-easy .adp-metabox-wrap .popup-field-info-buton-label,
|
||||
.popup-block-easy .adp-metabox-wrap .popup-field-info-buton-action,
|
||||
.popup-block-easy .adp-metabox-wrap .popup-field-info-buton-link {
|
||||
display: flex;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<?php // Silence is golden
|
||||
@@ -0,0 +1,662 @@
|
||||
"use strict";
|
||||
|
||||
/* Basic -------------------------------------------------------------- */
|
||||
|
||||
(function($) {
|
||||
var adpMetabox = {};
|
||||
|
||||
( function() {
|
||||
var $this;
|
||||
|
||||
adpMetabox = {
|
||||
/*
|
||||
* Initialize
|
||||
*/
|
||||
init: function( e ) {
|
||||
$this = adpMetabox;
|
||||
|
||||
// Variables.
|
||||
$this.wrap = $( '.adp-metabox-wrap' );
|
||||
|
||||
// Init.
|
||||
$this.metaboxInit( e );
|
||||
|
||||
// Init events.
|
||||
$this.events( e );
|
||||
},
|
||||
|
||||
/*
|
||||
* Events
|
||||
*/
|
||||
events: function( e ) {
|
||||
// Custom Events
|
||||
$this.wrap.on( 'click change keyup keydown', '.adp-metabox-repeater .attribute-name', $this.setSignature );
|
||||
$this.wrap.on( 'click', '.adp-metabox-repeater .row-topbar', $this.toggleItems );
|
||||
$this.wrap.on( 'click', '.adp-metabox-repeater .btn-remove-row', $this.removeRepeaterRow );
|
||||
$this.wrap.on( 'click', '.adp-metabox-repeater .btn-add-row', $this.addRepeaterRow );
|
||||
},
|
||||
|
||||
/*
|
||||
* Init metabox elements
|
||||
*/
|
||||
metaboxInit: function( e ) {
|
||||
// Add tabs for Meta Box (UI)
|
||||
$this.wrap.find( '.adp-metabox-tabs' ).tabs();
|
||||
|
||||
// Repeater sortable
|
||||
$this.wrap.find( '.adp-metabox-repeater tbody' ).sortable( {
|
||||
items: 'tr',
|
||||
placeholder: 'ui-state-highlight',
|
||||
handle: '.row-topbar, .row-handle',
|
||||
start: function( e, ui ) {
|
||||
ui.placeholder.height( ui.item.height() );
|
||||
},
|
||||
} );
|
||||
},
|
||||
|
||||
/*
|
||||
* Toggle items
|
||||
*/
|
||||
toggleItems: function() {
|
||||
if ( $( this ).hasClass( 'closed' ) ) {
|
||||
$( this ).removeClass( 'closed' );
|
||||
|
||||
$( this ).siblings( '.row-fields' ).slideDown();
|
||||
} else {
|
||||
$( this ).addClass( 'closed' );
|
||||
|
||||
$( this ).siblings( '.row-fields' ).slideUp();
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Set signature
|
||||
*/
|
||||
setSignature: function() {
|
||||
|
||||
var label = '<span>' + $( this ).data( 'label' ) + '</span>';
|
||||
|
||||
var value = $( this ).val() ? $( this ).val() : label;
|
||||
|
||||
$( this ).parents( '.row-content' ).find( '.signature' ).html( value );
|
||||
},
|
||||
|
||||
/*
|
||||
* Add repeater row
|
||||
*/
|
||||
addRepeaterRow: function() {
|
||||
|
||||
var repeater = $( this ).siblings( '.adp-metabox-repeater-table' )
|
||||
|
||||
// Get html row.
|
||||
var html = repeater.find( 'tbody tr.hidden' ).html();
|
||||
|
||||
// Add new row.
|
||||
repeater.find( 'tbody' ).append( '<tr class="row">' + html + '</tr>' );
|
||||
|
||||
// Visible all input and textarea.
|
||||
repeater.find( 'tr' ).not( '.hidden' ).find( 'input, textarea' ).removeAttr( 'disabled' );
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
/*
|
||||
* Remove repeater row
|
||||
*/
|
||||
removeRepeaterRow: function() {
|
||||
$( this ).parents( '.row' ).remove();
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
} )();
|
||||
|
||||
// Initialize.
|
||||
$( function() {
|
||||
adpMetabox.init();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
|
||||
/* Popup -------------------------------------------------------------- */
|
||||
|
||||
(function($) {
|
||||
var adpPopup = {};
|
||||
|
||||
( function() {
|
||||
var $this;
|
||||
|
||||
adpPopup = {
|
||||
/*
|
||||
* Initialize
|
||||
*/
|
||||
init: function( e ) {
|
||||
$this = adpPopup;
|
||||
|
||||
// Variables.
|
||||
$this.wrap = $( '.popup-wrap' );
|
||||
|
||||
// Init.
|
||||
$this.popupInit( e );
|
||||
|
||||
// Init events.
|
||||
$this.events( e );
|
||||
},
|
||||
|
||||
/*
|
||||
* Events
|
||||
*/
|
||||
events: function( e ) {
|
||||
// Custom Events
|
||||
$this.wrap.on( 'change', 'select[name="adp_popup_type"]', $this.actionType );
|
||||
$this.wrap.on( 'change', 'select[name="adp_popup_info_button_action"]', $this.actionInfoAct );
|
||||
$this.wrap.on( 'change click', 'input[name="adp_popup_open_trigger"]', $this.actionOpenTrigger );
|
||||
$this.wrap.on( 'change click', 'input[name="adp_popup_close_trigger"]', $this.actionCloseTrigger );
|
||||
$this.wrap.on( 'change click', 'input[name="adp_popup_rules_mode"]', $this.actionRulesMode );
|
||||
$this.wrap.on( 'click', '.add-new-rule', $this.addNewRule );
|
||||
$this.wrap.on( 'click', '.add-another-rule', $this.addAnotherRule );
|
||||
$this.wrap.on( 'click', '.remove-rule', $this.removeRule );
|
||||
$this.wrap.on( 'click', '.remove-another-rule', $this.removeAnotherRule );
|
||||
$this.wrap.on( 'change', '.adp-popup-rules', $this.actionPopupRules );
|
||||
},
|
||||
|
||||
/*
|
||||
* Init popup elements
|
||||
*/
|
||||
popupInit: function( e ) {
|
||||
$this.actionType( 'select[name="adp_popup_type"]' );
|
||||
$this.actionInfoAct( 'select[name="adp_popup_info_button_action"]' );
|
||||
$this.actionOpenTrigger( 'input[name="adp_popup_open_trigger"]:checked' );
|
||||
$this.actionCloseTrigger( 'input[name="adp_popup_close_trigger"]:checked' );
|
||||
$this.actionRulesMode( 'input[name="adp_popup_rules_mode"]:checked' );
|
||||
$this.actionPopupRules( '.adp-popup-rules' );
|
||||
},
|
||||
|
||||
/*
|
||||
* Action popup type
|
||||
*/
|
||||
actionType: function( e ) {
|
||||
let val = $( typeof e === 'string' ? e : this ).val();
|
||||
|
||||
// Set editor easy and hide overlay close.
|
||||
if ( 'content' !== val ) {
|
||||
|
||||
$( '.popup-field-overlay-close' ).addClass( 'hidden' );
|
||||
|
||||
$( '.block-editor' ).addClass( 'popup-block-easy' );
|
||||
|
||||
$( '.editor-post-featured-image' ).parents( '.components-panel__body' ).hide();
|
||||
} else {
|
||||
$( '.popup-field-overlay-close' ).removeClass( 'hidden' );
|
||||
|
||||
$( '.block-editor' ).removeClass( 'popup-block-easy' );
|
||||
|
||||
$( '.editor-post-featured-image' ).parents( '.components-panel__body' ).show();
|
||||
}
|
||||
|
||||
// Hide preview image and content width.
|
||||
if ( 'content' !== val ) {
|
||||
$( '.popup-field-preview-image' ).addClass( 'hidden' );
|
||||
$( '.popup-field-content-box-width' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-preview-image' ).removeClass( 'hidden' );
|
||||
$( '.popup-field-content-box-width' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
// Hide notification box width.
|
||||
if ( 'notification-box' !== val ) {
|
||||
$( '.popup-field-notification-box-width' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-notification-box-width' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
// Hide notification bar width.
|
||||
if ( 'notification-bar' !== val ) {
|
||||
$( '.popup-field-notification-bar-width' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-notification-bar-width' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
// Hide location.
|
||||
if ( 'content' !== val && 'notification-box' !== val ) {
|
||||
$( 'select[name="adp_popup_location"] option[value="top-left"]' ).addClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="top-right"]' ).addClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="bottom-left"]' ).addClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="bottom-right"]' ).addClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="left"]' ).addClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="right"]' ).addClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="center"]' ).addClass( 'hidden' );
|
||||
|
||||
let location = $( 'select[name="adp_popup_location"]' ).val();
|
||||
|
||||
if ( 'top' !== location && 'bottom' !== location ) {
|
||||
$( 'select[name="adp_popup_location"] option[value="bottom"]' ).prop( 'selected', true );
|
||||
}
|
||||
} else {
|
||||
$( 'select[name="adp_popup_location"] option[value="top-left"]' ).removeClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="top-right"]' ).removeClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="bottom-left"]' ).removeClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="bottom-right"]' ).removeClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="left"]' ).removeClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="right"]' ).removeClass( 'hidden' );
|
||||
$( 'select[name="adp_popup_location"] option[value="center"]' ).removeClass( 'hidden' );
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Action info button act.
|
||||
*/
|
||||
actionInfoAct: function( e ) {
|
||||
let val = $( typeof e === 'string' ? e : this ).val();
|
||||
|
||||
if ( 'link' !== val ) {
|
||||
$( '.popup-field-info-buton-link' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-info-buton-link' ).removeClass( 'hidden' );
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Action open trigger.
|
||||
*/
|
||||
actionOpenTrigger: function( e ) {
|
||||
let val = $( typeof e === 'string' ? e : this ).val();
|
||||
|
||||
if ( 'delay' !== val ) {
|
||||
$( '.popup-field-open-delay-number' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-open-delay-number' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
if ( 'scroll' !== val ) {
|
||||
$( '.popup-field-open-scroll-position' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-open-scroll-position' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
if ( 'accept' !== val ) {
|
||||
$( '.popup-field-open-accept-desc' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-open-accept-desc' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
if ( 'manual' !== val ) {
|
||||
$( '.popup-field-open-manual-selector' ).addClass( 'hidden' );
|
||||
$( '.popup-field-limit-display' ).removeClass( 'hidden' );
|
||||
$( '.popup-field-limit-lifetime' ).removeClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-limit-display' ).addClass( 'hidden' );
|
||||
$( '.popup-field-limit-lifetime' ).addClass( 'hidden' );
|
||||
$( '.popup-field-open-manual-selector' ).removeClass( 'hidden' );
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Action close trigger.
|
||||
*/
|
||||
actionCloseTrigger: function( e ) {
|
||||
let val = $( typeof e === 'string' ? e : this ).val();
|
||||
|
||||
if ( 'delay' !== val ) {
|
||||
$( '.popup-field-close-delay-number' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-close-delay-number' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
if ( 'scroll' !== val ) {
|
||||
$( '.popup-field-close-scroll-position' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-close-scroll-position' ).removeClass( 'hidden' );
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Action rules mode.
|
||||
*/
|
||||
actionRulesMode: function( e ) {
|
||||
let val = $( typeof e === 'string' ? e : this ).val();
|
||||
|
||||
if ( 'specific' !== val ) {
|
||||
$( '.popup-field-rules' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( '.popup-field-rules' ).removeClass( 'hidden' );
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Build select rules.
|
||||
*/
|
||||
buildSelectRules: function() {
|
||||
|
||||
var list = JSON.parse( adp_popup_data.rules_list );
|
||||
|
||||
var output = '<select class="adp-popup-rules">';
|
||||
|
||||
for ( var optgroup in list ) {
|
||||
|
||||
let label = optgroup;
|
||||
|
||||
label = label.replace( 'general', adp_popup_data.label_general );
|
||||
label = label.replace( 'post_types', adp_popup_data.label_post_types );
|
||||
label = label.replace( 'taxonomies', adp_popup_data.label_taxonomies );
|
||||
|
||||
output += '<optgroup data-group="' + optgroup + '" label="' + label + '">';
|
||||
|
||||
for ( var event in list[ optgroup ] ) {
|
||||
|
||||
output += '<option value="' + event + '">';
|
||||
|
||||
// Name of option.
|
||||
output += list[ optgroup ][ event ];
|
||||
|
||||
output += '</option>';
|
||||
}
|
||||
|
||||
output += '</optgroup>';
|
||||
}
|
||||
|
||||
output += '</select>';
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
/*
|
||||
* Build input url.
|
||||
*/
|
||||
buildInputUrl: function() {
|
||||
var output = '<input type="text" class="adp-popup-url">';
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
/*
|
||||
* Build select objects.
|
||||
*/
|
||||
buildSelectObjects: function() {
|
||||
var output = '<select multiple class="adp-popup-objects"></select>';
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
/*
|
||||
* Build row rules.
|
||||
*/
|
||||
buildRowRules: function() {
|
||||
var output = '<div class="row">';
|
||||
|
||||
// Add new tools.
|
||||
output += $this.buildToolsRules();
|
||||
|
||||
output += '<div class="tools-bar">';
|
||||
|
||||
// Add button another OR rule.
|
||||
output += '<div class="button add-another-rule">';
|
||||
|
||||
output += adp_popup_data.btn_label_another;
|
||||
|
||||
output += '</div>';
|
||||
|
||||
output += '<a href="#" class="delete remove-rule">';
|
||||
|
||||
output += adp_popup_data.btn_delete;
|
||||
|
||||
output += '</a>';
|
||||
|
||||
output += '</div>';
|
||||
|
||||
// Close.
|
||||
output += '</div>';
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
/*
|
||||
* Build tools rules.
|
||||
*/
|
||||
buildToolsRules: function() {
|
||||
var output = '<div class="tools">';
|
||||
|
||||
output += $this.buildSelectRules();
|
||||
|
||||
output += $this.buildInputUrl();
|
||||
|
||||
output += $this.buildSelectObjects();
|
||||
|
||||
output += '<a href="#" class="delete remove-another-rule">';
|
||||
|
||||
output += '<span class="dashicons dashicons-no-alt"></span>'
|
||||
|
||||
output += '</a>';
|
||||
|
||||
output += '</div>';
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
/*
|
||||
* Add new rule.
|
||||
*/
|
||||
addNewRule: function() {
|
||||
|
||||
var row = $this.buildRowRules();
|
||||
|
||||
$( row ).appendTo( '.popup-field-rules-list' );
|
||||
|
||||
$this.setIndexRules();
|
||||
|
||||
$this.popupInit();
|
||||
},
|
||||
|
||||
/*
|
||||
* Add anothe rule.
|
||||
*/
|
||||
addAnotherRule: function() {
|
||||
var tools = $this.buildToolsRules();
|
||||
|
||||
$( this ).parents( '.tools-bar' ).before( tools );
|
||||
|
||||
$this.setIndexRules();
|
||||
|
||||
$this.popupInit();
|
||||
},
|
||||
|
||||
/*
|
||||
* Remove new rule.
|
||||
*/
|
||||
removeRule: function() {
|
||||
let list = $( this ).parents( '.popup-field-rules-list' );
|
||||
|
||||
$( this ).parents( '.row' ).remove();
|
||||
|
||||
if ( ! $( list ).find( '.row' ).length ) {
|
||||
$( list ).html('');
|
||||
}
|
||||
|
||||
$this.setIndexRules();
|
||||
},
|
||||
|
||||
/*
|
||||
* Remove anothe rule.
|
||||
*/
|
||||
removeAnotherRule: function() {
|
||||
|
||||
let list = $( this ).parents( '.popup-field-rules-list' );
|
||||
|
||||
let row = $( this ).parents( '.row' );
|
||||
|
||||
if ( $( row ).find('.tools').length <= 1 ) {
|
||||
$( this ).parents( '.row' ).remove();
|
||||
|
||||
if ( ! $( list ).find( '.row' ).length ) {
|
||||
$( list ).html('');
|
||||
}
|
||||
} else {
|
||||
$( this ).parents( '.tools' ).remove();
|
||||
}
|
||||
|
||||
$this.setIndexRules();
|
||||
},
|
||||
|
||||
/*
|
||||
* Set index rules.
|
||||
*/
|
||||
setIndexRules: function() {
|
||||
$( '.popup-field-rules-list .row' ).each(function(i, row) {
|
||||
|
||||
$( row ).find( '.tools' ).each(function(t, tools) {
|
||||
// Select rules.
|
||||
$( tools ).find( '.adp-popup-rules' ).each(function(j, select) {
|
||||
$( select ).attr( 'name', 'adp_popup_rules[' + i + '][' + t + '][rule]' );
|
||||
});
|
||||
|
||||
// Input url.
|
||||
$( tools ).find( '.adp-popup-url' ).each(function(j, input) {
|
||||
$( input ).attr( 'name', 'adp_popup_rules[' + i + '][' + t + '][url]' );
|
||||
});
|
||||
|
||||
// Input objects.
|
||||
$( tools ).find( '.adp-popup-objects' ).each(function(j, select) {
|
||||
$( select ).attr( 'name', 'adp_popup_rules[' + i + '][' + t + '][object][]'.replace( 'index', i ) );
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/*
|
||||
* Action poopup rules.
|
||||
*/
|
||||
actionPopupRules: function( e ) {
|
||||
let el = $( typeof e === 'string' ? e : this );
|
||||
|
||||
// Action.
|
||||
if ( typeof e !== 'string' ) {
|
||||
let select = $( el ).siblings( '.adp-popup-objects' );
|
||||
|
||||
let group = $( el ).find('option:selected').parents('optgroup').data( 'group' );
|
||||
|
||||
if ( 'general' === group ) {
|
||||
$( el ).siblings( '.adp-popup-objects' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( el ).siblings( '.adp-popup-objects' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
if ( 'url' !== $( el ).val() ) {
|
||||
$( el ).siblings( '.adp-popup-url' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( el ).siblings( '.adp-popup-url' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
// Reset options.
|
||||
$( select ).html( '' );
|
||||
|
||||
// Init Select2.
|
||||
$this.setObjectsSelect2( select );
|
||||
|
||||
// Init.
|
||||
} else {
|
||||
|
||||
$( el ).each(function(i, rule) {
|
||||
let select = $( rule ).siblings( '.adp-popup-objects' );
|
||||
|
||||
let group = $( rule ).find('option:selected').parents('optgroup').data( 'group' );
|
||||
|
||||
if ( 'general' === group ) {
|
||||
$( rule ).siblings( '.adp-popup-objects' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( rule ).siblings( '.adp-popup-objects' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
if ( 'url' !== $( rule ).val() ) {
|
||||
$( rule ).siblings( '.adp-popup-url' ).addClass( 'hidden' );
|
||||
} else {
|
||||
$( rule ).siblings( '.adp-popup-url' ).removeClass( 'hidden' );
|
||||
}
|
||||
|
||||
// Init Select2.
|
||||
$this.setObjectsSelect2( select );
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Set objects Select2.
|
||||
*/
|
||||
setObjectsSelect2: function( el ) {
|
||||
|
||||
var rules = $( el ).siblings('.adp-popup-rules');
|
||||
|
||||
var group = $( rules ).find('option:selected').parents('optgroup').data( 'group' );
|
||||
|
||||
var rule = $( rules ).find('option:selected').val();
|
||||
|
||||
$( el ).select2( {
|
||||
placeholder: adp_popup_data.select2_placeholder,
|
||||
minimumInputLength: 0,
|
||||
language: {
|
||||
errorLoading: function() {
|
||||
return adp_popup_data.select2_errorLoading;
|
||||
},
|
||||
loadingMore: function() {
|
||||
return adp_popup_data.select2_loadingMore;
|
||||
},
|
||||
noResults: function() {
|
||||
return adp_popup_data.select2_noResults;
|
||||
},
|
||||
searching: function() {
|
||||
return adp_popup_data.select2_searching;
|
||||
},
|
||||
removeAllItems: function() {
|
||||
return adp_popup_data.select2_removeAllItems;
|
||||
}
|
||||
},
|
||||
delay: 250,
|
||||
multiple: true,
|
||||
width: '100%',
|
||||
ajax: {
|
||||
url: adp_popup_data.ajaxurl,
|
||||
dataType: 'json',
|
||||
quietMillis: 100,
|
||||
data: function (params) {
|
||||
|
||||
var query = {
|
||||
group: group,
|
||||
rule: rule,
|
||||
search: params.term,
|
||||
page: params.page || 1,
|
||||
_wpnonce: adp_popup_data.nonce,
|
||||
action: 'adp_popup_rules_objects',
|
||||
}
|
||||
|
||||
return query;
|
||||
},
|
||||
processResults: function( data, params, params2 ) {
|
||||
var options = [];
|
||||
|
||||
if ( data && typeof data.items !== 'undefined' ) {
|
||||
$.each( data.items, function( index, text ) {
|
||||
options.push( { id: index, text: text } );
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
results: options,
|
||||
pagination: {
|
||||
more: data.pagination,
|
||||
}
|
||||
};
|
||||
},
|
||||
cache: true
|
||||
},
|
||||
} );
|
||||
}
|
||||
};
|
||||
|
||||
} )();
|
||||
|
||||
// Initialize.
|
||||
$( function() {
|
||||
adpPopup.init();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Advanced Popups
|
||||
* Description: Display high-converting newsletter popups, a cookie notice, or a notification with the light-weight yet feature-rich plugin.
|
||||
* Version: 1.1.3
|
||||
* Author: Code Supply Co.
|
||||
* Author URI: https://codesupply.co
|
||||
* License: GPL-2.0+
|
||||
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
||||
* Text Domain: advanced-popups
|
||||
* Domain Path: /languages
|
||||
*
|
||||
* @link https://codesupply.co
|
||||
* @package ADP
|
||||
*/
|
||||
|
||||
// If this file is called directly, abort.
|
||||
if ( ! defined( 'WPINC' ) ) {
|
||||
die;
|
||||
}
|
||||
|
||||
/**
|
||||
* Variables
|
||||
*/
|
||||
define( 'ADP_URL', plugin_dir_url( __FILE__ ) );
|
||||
define( 'ADP_PATH', plugin_dir_path( __FILE__ ) );
|
||||
|
||||
/**
|
||||
* Plugin Activation.
|
||||
*/
|
||||
function adp_activation() {
|
||||
do_action( 'adp_activation' );
|
||||
}
|
||||
register_activation_hook( __FILE__, 'adp_activation' );
|
||||
|
||||
/**
|
||||
* Plugin Deactivation.
|
||||
*/
|
||||
function adp_deactivation() {
|
||||
do_action( 'adp_deactivation' );
|
||||
}
|
||||
register_deactivation_hook( __FILE__, 'adp_deactivation' );
|
||||
|
||||
/**
|
||||
* The core plugin class that is used to define internationalization,
|
||||
* admin-specific hooks, and public-facing site hooks.
|
||||
*/
|
||||
require plugin_dir_path( __FILE__ ) . 'includes/class-advanced-popups.php';
|
||||
|
||||
/**
|
||||
* Begins execution of the plugin.
|
||||
*
|
||||
* Since everything within the plugin is registered via hooks,
|
||||
* then kicking off the plugin from this point in the file does
|
||||
* not affect the page life cycle.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function adp_init() {
|
||||
|
||||
$plugin = new ADP();
|
||||
$plugin->run();
|
||||
|
||||
}
|
||||
adp_init();
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="advanced-popups-icons" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="x" d="M571.733 426.667l226.133 226.133c17.067 17.067 17.067 42.667 0 59.733s-42.667 17.067-59.733 0l-226.133-226.133-226.133 226.133c-17.067 17.067-42.667 17.067-59.733 0s-17.067-42.667 0-59.733l226.133-226.133-226.133-226.133c-17.067-17.067-17.067-42.667 0-59.733 8.533-8.533 17.067-12.8 29.867-12.8s21.333 4.267 29.867 12.8l226.133 226.133 226.133-226.133c8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8c17.067 17.067 17.067 42.667 0 59.733l-226.133 226.133z" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 965 B |
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user