188 lines
5.9 KiB
PHP
188 lines
5.9 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Repeater customizer control.
|
||
|
*
|
||
|
* @package themotion
|
||
|
*/
|
||
|
|
||
|
if ( ! class_exists( 'WP_Customize_Control' ) ) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Repeater Customizer Control Class
|
||
|
*/
|
||
|
class Themotion_General_Repeater extends WP_Customize_Control {
|
||
|
/**
|
||
|
* Options for the Repeater customizer control
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
private $options = array();
|
||
|
|
||
|
/**
|
||
|
* Construct function for the Repeater control
|
||
|
*/
|
||
|
public function __construct( $manager, $id, $args = array() ) {
|
||
|
parent::__construct( $manager, $id, $args );
|
||
|
$this->options = $args;
|
||
|
}
|
||
|
/**
|
||
|
* Render the Repeater control
|
||
|
*/
|
||
|
public function render_content() {
|
||
|
|
||
|
$it = 0;
|
||
|
|
||
|
$this_default = json_decode( $this->setting->default );
|
||
|
|
||
|
$values = $this->value();
|
||
|
|
||
|
$json = json_decode( $values );
|
||
|
|
||
|
if ( ! is_array( $json ) ) {
|
||
|
$json = array( $values );
|
||
|
}
|
||
|
|
||
|
$options = $this->options;
|
||
|
|
||
|
if ( ! empty( $options['themotion_link_control'] ) ) {
|
||
|
$themotion_link_control = $options['themotion_link_control'];
|
||
|
} else {
|
||
|
$themotion_link_control = false;
|
||
|
}
|
||
|
|
||
|
if ( ! empty( $options['themotion_text_control'] ) ) {
|
||
|
$themotion_text_control = $options['themotion_text_control'];
|
||
|
} else {
|
||
|
$themotion_text_control = false;
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
|
||
|
<div class="themotion_general_control_repeater themotion_general_control_droppable">
|
||
|
<?php
|
||
|
if ( empty( $json ) ) {
|
||
|
|
||
|
?>
|
||
|
<div class="themotion_general_control_repeater_container">
|
||
|
<div class="themotion-customize-control-title"><?php esc_html_e( 'TheMotion', 'themotion' ) ?></div>
|
||
|
<div class="themotion-box-content-hidden">
|
||
|
|
||
|
<?php
|
||
|
if ( true == $themotion_text_control ) { ?>
|
||
|
<span class="customize-control-title"><?php esc_html_e( 'Text','themotion' )?></span>
|
||
|
<input type="text" class="themotion_text_control" placeholder="<?php esc_html_e( 'Text','themotion' ); ?>"/>
|
||
|
<?php
|
||
|
}
|
||
|
|
||
|
if ( true == $themotion_link_control ) { ?>
|
||
|
<span class="customize-control-title"><?php esc_html_e( 'Link', 'themotion' ) ?></span>
|
||
|
<input type="text" class="themotion_link_control"
|
||
|
placeholder="<?php esc_html_e( 'Link', 'themotion' ); ?>"/>
|
||
|
<?php
|
||
|
} ?>
|
||
|
<input type="hidden" class="themotion_box_id">
|
||
|
<button type="button" class="themotion_general_control_remove_field button"
|
||
|
style="display:none;"><?php esc_html_e( 'Delete field', 'themotion' ); ?></button>
|
||
|
</div>
|
||
|
</div>
|
||
|
<?php
|
||
|
} else {
|
||
|
|
||
|
if ( ! empty( $this_default ) && empty( $json ) ) {
|
||
|
foreach ( $this_default as $icon ) { ?>
|
||
|
<div class="themotion_general_control_repeater_container themotion_draggable">
|
||
|
<div
|
||
|
class="themotion-customize-control-title"><?php esc_html_e( 'TheMotion', 'themotion' ) ?></div>
|
||
|
<div class="themotion-box-content-hidden">
|
||
|
|
||
|
<?php
|
||
|
if ( true == $themotion_text_control ) { ?>
|
||
|
<span class="customize-control-title"><?php esc_html_e( 'Text','themotion' )?></span>
|
||
|
<input type="text" value="<?php if ( ! empty( $icon->text ) ) { echo esc_attr( $icon->text ); } ?>" class="themotion_text_control" placeholder="<?php esc_html_e( 'Text','themotion' ); ?>"/>
|
||
|
<?php
|
||
|
}
|
||
|
|
||
|
if ( true == $themotion_link_control ) { ?>
|
||
|
<span class="customize-control-title"><?php esc_html_e( 'Link', 'themotion' ) ?></span>
|
||
|
<input type="text" value="<?php if ( ! empty( $icon->link ) ) {
|
||
|
echo esc_url( $icon->link );
|
||
|
} ?>" class="themotion_link_control"
|
||
|
placeholder="<?php esc_html_e( 'Link', 'themotion' ); ?>"/>
|
||
|
<?php
|
||
|
} ?>
|
||
|
|
||
|
<input type="hidden" class="themotion_box_id" value="<?php if ( ! empty( $icon->id ) ) {
|
||
|
echo esc_attr( $icon->id );
|
||
|
} ?>">
|
||
|
<button type="button" class="themotion_general_control_remove_field button" <?php
|
||
|
if ( 0 == $it ) {
|
||
|
echo 'style="display:none;"';
|
||
|
} ?>><?php esc_html_e( 'Delete field', 'themotion' ); ?></button>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
<?php
|
||
|
$it ++;
|
||
|
|
||
|
}
|
||
|
} else {
|
||
|
foreach ( $json as $icon ) {
|
||
|
|
||
|
?>
|
||
|
<div class="themotion_general_control_repeater_container themotion_draggable">
|
||
|
<div
|
||
|
class="themotion-customize-control-title"><?php esc_html_e( 'TheMotion', 'themotion' ) ?></div>
|
||
|
<div class="themotion-box-content-hidden">
|
||
|
|
||
|
<?php
|
||
|
if ( true == $themotion_text_control ) { ?>
|
||
|
<span class="customize-control-title"><?php esc_html_e( 'Text','themotion' )?></span>
|
||
|
<input type="text" value="<?php if ( ! empty( $icon->text ) ) { echo esc_attr( $icon->text ); } ?>" class="themotion_text_control" placeholder="<?php esc_html_e( 'Text','themotion' ); ?>"/>
|
||
|
<?php
|
||
|
}
|
||
|
|
||
|
if ( true == $themotion_link_control ) { ?>
|
||
|
<span class="customize-control-title"><?php esc_html_e( 'Link', 'themotion' ) ?></span>
|
||
|
<input type="text" value="<?php if ( ! empty( $icon->link ) ) {
|
||
|
echo esc_url( $icon->link );
|
||
|
} ?>" class="themotion_link_control"
|
||
|
placeholder="<?php esc_html_e( 'Link', 'themotion' ); ?>"/>
|
||
|
<?php
|
||
|
} ?>
|
||
|
|
||
|
<input type="hidden" class="themotion_box_id" value="<?php if ( ! empty( $icon->id ) ) {
|
||
|
echo esc_attr( $icon->id );
|
||
|
} ?>">
|
||
|
<button type="button" class="themotion_general_control_remove_field button" <?php
|
||
|
if ( 0 == $it ) {
|
||
|
echo 'style="display:none;"';
|
||
|
} ?>><?php esc_html_e( 'Delete field', 'themotion' ); ?></button>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
<?php
|
||
|
$it ++;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
} ?>
|
||
|
|
||
|
|
||
|
<input type="hidden"
|
||
|
id="themotion_<?php echo esc_attr( $options['section'] ); ?>_repeater_colector" <?php $this->link(); ?>
|
||
|
class="themotion_repeater_colector" value="<?php echo esc_textarea( $this->value() ); ?>"/>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<button type="button" class="button add_field themotion_general_control_new_field"
|
||
|
|
||
|
><?php esc_html_e( 'Add new field', 'themotion' ); ?></button>
|
||
|
|
||
|
<?php
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|