786 lines
24 KiB
PHP
786 lines
24 KiB
PHP
<?php
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
//===========================================================
|
|
// PAGELAYER
|
|
// Inspired by the DESIRE to be the BEST OF ALL
|
|
// ----------------------------------------------------------
|
|
// Started by: Pulkit Gupta
|
|
// Date: 23rd Jan 2017
|
|
// Time: 23:00 hrs
|
|
// Site: http://pagelayer.com/wordpress (PAGELAYER)
|
|
// ----------------------------------------------------------
|
|
// Please Read the Terms of use at http://pagelayer.com/tos
|
|
// ----------------------------------------------------------
|
|
//===========================================================
|
|
// (c)Pagelayer Team
|
|
//===========================================================
|
|
//////////////////////////////////////////////////////////////
|
|
|
|
// Are we being accessed directly ?
|
|
if(!defined('PAGELAYER_VERSION')) {
|
|
exit('Hacking Attempt !');
|
|
}
|
|
|
|
/**
|
|
* Override customize controls class
|
|
*
|
|
*/
|
|
class Pagelayer_Customize_Control extends WP_Customize_Control{
|
|
|
|
public $show_filter = '';
|
|
public $li_class = '';
|
|
|
|
/**
|
|
* Refresh the parameters passed to the JavaScript via JSON.
|
|
*
|
|
* @see WP_Customize_Control::to_json()
|
|
*/
|
|
public function to_json() {
|
|
|
|
parent::to_json();
|
|
|
|
if(!empty($this->show_filter)){
|
|
$this->json['show_filter'] = $this->show_filter;
|
|
}
|
|
}
|
|
|
|
protected function render() {
|
|
$id = 'customize-control-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id );
|
|
$class = 'pagelayer-customize-control customize-control customize-control-' . $this->type;
|
|
|
|
$class .= ' '.$this->li_class;
|
|
|
|
printf( '<li id="%s" class="%s">', esc_attr( $id ), esc_attr( $class ) );
|
|
$this->render_content();
|
|
echo '</li>';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Padding control to separate general and style controls
|
|
*
|
|
*/
|
|
class Pagelayer_Padding_Control extends Pagelayer_Customize_Control {
|
|
|
|
/**
|
|
* The type of control being rendered
|
|
*/
|
|
public $type = 'pagelayer-padding-control';
|
|
public $responsive;
|
|
public $units;
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct( $manager, $id, $args = array(), $options = array() ) {
|
|
parent::__construct( $manager, $id, $args );
|
|
|
|
}
|
|
|
|
/**
|
|
* Render the control in the customizer
|
|
*/
|
|
public function render_content() {
|
|
|
|
$units = (array) $this->units;
|
|
|
|
// Output the label and description if they were passed in.
|
|
if ( isset( $this->label ) && '' !== $this->label ) {
|
|
echo '<span class="customize-control-title pagelayer-customize-control-title">' . sanitize_text_field( $this->label );
|
|
|
|
if(!empty($this->responsive )){
|
|
echo '<span class="pagelayer-devices">
|
|
<button type="button" class="active-device" aria-pressed="true" data-device="desktop">
|
|
<i class="dashicons dashicons-desktop"></i>
|
|
</button>
|
|
<button type="button"aria-pressed="false" data-device="tablet">
|
|
<i class="dashicons dashicons-tablet"></i>
|
|
</button>
|
|
<button type="button" aria-pressed="false" data-device="mobile">
|
|
<i class="dashicons dashicons-smartphone"></i>
|
|
</button>
|
|
</span>';
|
|
}
|
|
|
|
if(!empty($units)){
|
|
?>
|
|
<span class="pagelayer-units">
|
|
<input type="hidden" class="pagelayer-unit-input" value="<?php echo esc_attr($this->value('unit')); ?>" <?php $this->link('unit'); ?>></input>
|
|
<?php
|
|
foreach($units as $unit){
|
|
echo '<span data-unit="'.$unit.'"> '.$unit.' </span>';
|
|
}
|
|
?>
|
|
</span>
|
|
<?php
|
|
}
|
|
|
|
echo '</span>';
|
|
}
|
|
|
|
$settings = array();
|
|
|
|
foreach ( $this->settings as $key => $setting ){
|
|
$key = str_replace(['_mobile', '_tablet'], '', $key);
|
|
|
|
if(in_array($key, $settings)){
|
|
continue;
|
|
}
|
|
|
|
$settings[] = $key;
|
|
}
|
|
|
|
$screens = array('');
|
|
|
|
if(!empty($this->responsive)){
|
|
$screens = array('', '_tablet', '_mobile');
|
|
}
|
|
|
|
echo '<div class="pagelayer-paddings-holder">';
|
|
|
|
foreach($screens as $screen){
|
|
|
|
$show_device = '';
|
|
if(count($screens) > 1){
|
|
$show_device = 'data-show-device="'.(empty($screen) ? '_desktop' : $screen).'"';
|
|
}
|
|
|
|
echo '<div class="pagelayer-control-padding" '.$show_device.'>';
|
|
foreach($settings as $setting){
|
|
|
|
// Skip units for responsive
|
|
if($setting == 'unit'){
|
|
continue;
|
|
}
|
|
|
|
$setting_name = $setting.$screen;
|
|
?>
|
|
<input type="number" class="pagelayer-padding-input" value="<?php echo esc_attr($this->value($setting_name)); ?>" <?php $this->link($setting_name); ?>></input>
|
|
<?php
|
|
}
|
|
|
|
echo '<i class="dashicons dashicons-admin-links"></i></div>';
|
|
}
|
|
|
|
echo '</div>';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Typography control controls
|
|
*
|
|
*/
|
|
class Pagelayer_typo_Control extends Pagelayer_Customize_Control {
|
|
|
|
/**
|
|
* The type of control being rendered
|
|
*/
|
|
public $type = 'pagelayer-typo-control';
|
|
public $responsive;
|
|
public $style;
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct( $manager, $id, $args = array(), $options = array() ) {
|
|
parent::__construct( $manager, $id, $args );
|
|
}
|
|
|
|
/**
|
|
* Render the control in the customizer
|
|
*/
|
|
public function render_content() {
|
|
global $pagelayer;
|
|
|
|
// Output the label and description if they were passed in.
|
|
if ( isset( $this->label ) && '' !== $this->label ) {
|
|
echo '<span class="customize-control-title">' . sanitize_text_field( $this->label ) .'</span>';
|
|
}
|
|
|
|
$settings = $pagelayer->font_settings;
|
|
|
|
echo '<div class="pagelayer-typography-holder">';
|
|
|
|
$global_font = $this->value('global-font');
|
|
|
|
if(!empty($global_font) && !isset($pagelayer->global_fonts[$global_font])){
|
|
$global_font = 'primary';
|
|
}
|
|
|
|
echo '<div class="pagelayer-control-typography">';
|
|
?>
|
|
<div class="pagelayer-control-typo-holder <?php echo (!empty($global_font) ? 'pagelayer-global-on' : ''); ?>">
|
|
<div class="pagelayer-control-typo-icons-holder">
|
|
<span class="pagelayer-control-typo-icon dashicons dashicons-edit"></span>
|
|
</div>
|
|
<div class="pagelayer-control-typo">
|
|
<div class="pagelayer-global-setting-font">
|
|
<b><?php _e('Global Fonts'); ?></b>
|
|
<span class="pagelayer-control-global-typo-icon dashicons dashicons-admin-site-alt3"></span>
|
|
<span class="dashicons dashicons-admin-generic"></span>
|
|
<input class="pagelayer-global-font-input" type="hidden" <?php $this->link('global-font'); ?> value="<?php echo esc_attr($global_font); ?>" data-key="<?php echo esc_attr($global_font); ?>">
|
|
|
|
<div class="pagelayer-global-font-list"></div>
|
|
</div>
|
|
<?php foreach($settings as $sk => $sval){ ?>
|
|
<div class="pagelayer-control-typo-fields">
|
|
<label class="pagelayer-control-typo-fields-label"><?php echo $sval['label']?>
|
|
<?php
|
|
$screens = array('');
|
|
if(!empty($sval['responsive'])){
|
|
|
|
$screens = array('desktop', 'tablet', 'mobile');
|
|
|
|
?>
|
|
<span class="pagelayer-devices">
|
|
<button type="button" class="active-device" aria-pressed="true" data-device="desktop">
|
|
<i class="dashicons dashicons-desktop"></i>
|
|
</button>
|
|
<button type="button"aria-pressed="false" data-device="tablet">
|
|
<i class="dashicons dashicons-tablet"></i>
|
|
</button>
|
|
<button type="button" aria-pressed="false" data-device="mobile">
|
|
<i class="dashicons dashicons-smartphone"></i>
|
|
</button>
|
|
</span>
|
|
<?php } ?>
|
|
<span class="pagelayer-typo-global-default dashicons dashicons-undo" title="<?php _e('Restore Global'); ?>"></span>
|
|
</label>
|
|
<?php
|
|
foreach($screens as $screen){
|
|
|
|
$show_device = '';
|
|
$field_name = $sk;
|
|
|
|
if(count($screens) > 1){
|
|
$show_device = 'data-show-device="_'.$screen.'"';
|
|
$field_name = $sk.($screen == 'desktop' ? '' : '_'.$screen);
|
|
}
|
|
|
|
$field_val = esc_attr($this->value($field_name));
|
|
|
|
if(isset($sval['choices'])){ ?>
|
|
|
|
<select name="<?php echo $field_name; ?>" <?php $this->link($field_name); ?> data-font-key="<?php echo $sk;?>" data-default-value="<?php echo $field_val; ?>" <?php echo $show_device; ?>>
|
|
<?php
|
|
// This add this js
|
|
//echo pagelayer_create_font_options($sval['choices'], $this->value($field_name));
|
|
?>
|
|
</select>
|
|
<?php } else { ?>
|
|
<input name="<?php echo $field_name; ?>" type="number" <?php $this->link($field_name); ?> <?php echo $show_device; ?>>
|
|
<?php }
|
|
}
|
|
?>
|
|
</div>
|
|
<?php }?>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
echo '</div></div>';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Alpha Color Picker Custom Control
|
|
*
|
|
* @author Braad Martin <http://braadmartin.com>
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html
|
|
* @link https://github.com/BraadMartin/components/tree/master/customizer/alpha-color-picker
|
|
*/
|
|
class Pagelayer_Customize_Alpha_Color_Control extends Pagelayer_Customize_Control {
|
|
/**
|
|
* The type of control being rendered
|
|
*/
|
|
public $type = 'pagelayer-alpha-color';
|
|
/**
|
|
* Add support for palettes to be passed in.
|
|
*
|
|
* Supported palette values are true, false, or an array of RGBa and Hex colors.
|
|
*/
|
|
public $palette;
|
|
/**
|
|
* Add support for showing the opacity value on the slider handle.
|
|
*/
|
|
public $show_opacity;
|
|
/**
|
|
* Enqueue our scripts and styles
|
|
*/
|
|
public function enqueue() {
|
|
wp_enqueue_script( 'wp-color-picker' );
|
|
wp_enqueue_style( 'wp-color-picker' );
|
|
}
|
|
/**
|
|
* Render the control in the customizer
|
|
*/
|
|
public function render_content() {
|
|
global $pagelayer;
|
|
|
|
$setvalue = $this->value();
|
|
|
|
// Process the palette
|
|
if ( is_array( $this->palette ) ) {
|
|
$palette = implode( '|', $this->palette );
|
|
} else {
|
|
// Default to true.
|
|
$palette = ( false === $this->palette || 'false' === $this->palette ) ? 'false' : 'true';
|
|
}
|
|
|
|
// Support passing show_opacity as string or boolean. Default to true.
|
|
$show_opacity = ( false === $this->show_opacity || 'false' === $this->show_opacity ) ? 'false' : 'true';
|
|
|
|
// Output the label and description if they were passed in.
|
|
if ( isset( $this->label ) && '' !== $this->label ) {
|
|
echo '<span class="customize-control-title">' . sanitize_text_field( $this->label ) . '</span>';
|
|
}
|
|
if ( isset( $this->description ) && '' !== $this->description ) {
|
|
echo '<span class="description pagelayer-customize-description">' . sanitize_text_field( $this->description ) . '</span>';
|
|
} ?>
|
|
|
|
<span class="pagelayer-control-global-color-icon dashicons dashicons-admin-site-alt3"></span>
|
|
<div class="pagelayer-global-color-list">
|
|
<div class="pagelayer-global-setting-color">
|
|
<b>Global Colors</b>
|
|
<span class="dashicons dashicons-admin-generic"></span></div>
|
|
<?php
|
|
$gkey = '';
|
|
if( !empty($setvalue) && $setvalue[0] == '$'){
|
|
$gkey = substr($setvalue, 1);
|
|
$gkey = isset($pagelayer->global_colors[$gkey]) ? $gkey : 'primary';
|
|
}
|
|
|
|
foreach($pagelayer->global_colors as $cid => $color){
|
|
|
|
$active_class = '';
|
|
if($cid == $gkey){
|
|
$active_class = 'pagelayer-global-selected';
|
|
}
|
|
?>
|
|
<div class="pagelayer-global-color-list-item <?php echo $active_class; ?>" data-global-id="<?php echo $cid; ?>">
|
|
<span class="pagelayer-global-color-pre" style="background:<?php echo $color['value']; ?>;"></span>
|
|
<span class="pagelayer-global-color-title"><?php echo $color['title'];?></span>
|
|
<span class="pagelayer-global-color-code"><?php echo $color['value']; ?></span>
|
|
</div>
|
|
<?php }?>
|
|
</div>
|
|
<input class="pagelayer-alpha-color-control" type="text" data-show-opacity="<?php echo $show_opacity; ?>" data-palette="<?php echo esc_attr( $palette ); ?>" data-default-color="<?php echo esc_attr( $this->settings['default']->default ); ?>" <?php $this->link(); ?> />
|
|
<?php
|
|
|
|
}
|
|
}
|
|
|
|
// Global color palette control
|
|
class Pagelayer_Color_Repeater_Control extends Pagelayer_Customize_Control {
|
|
/**
|
|
* The type of control being rendered
|
|
*/
|
|
public $type = 'pagelayer-alpha-color';
|
|
/**
|
|
* Button labels
|
|
*/
|
|
public $button_label = '';
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct( $manager, $id, $args = array(), $options = array() ) {
|
|
parent::__construct( $manager, $id, $args );
|
|
|
|
if(empty($this->button_label)){
|
|
$this->button_label = __( 'Add New Color', 'pagelayer' );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Render the control in the customizer
|
|
*/
|
|
public function render_content() {
|
|
|
|
$values = $this->value();
|
|
|
|
$decode_values = json_decode($values, true);
|
|
|
|
$skip_keys = array('primary', 'secondary', 'text', 'accent');
|
|
?>
|
|
<div class="pagelayer-color-palette-control">
|
|
<?php if( !empty( $this->label ) ) { ?>
|
|
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
|
|
<?php } ?>
|
|
<?php if( !empty( $this->description ) ) { ?>
|
|
<span class="customize-control-description"><?php echo esc_html( $this->description ); ?></span>
|
|
<?php } ?>
|
|
<input type="hidden" class="pagelayer-color-palette-data" <?php $this->link(); ?>>
|
|
<?php
|
|
foreach( $decode_values as $kk => $val){ ?>
|
|
|
|
<div class="pagelayer-color-holder">
|
|
<span class="pagelayer-color-title" contenteditable="true"><?php _e($val['title']); ?></span>
|
|
<span class="pagelayer-color-controls <?php echo (in_array($kk, $skip_keys)? 'pagelayer-prevent-delete' : ''); ?>">
|
|
<?php echo esc_attr($val['value']) ?>
|
|
</span>
|
|
<?php if(!in_array($kk, $skip_keys)){ ?>
|
|
<span class="customize-control-color-repeater-delete"><span class="dashicons dashicons-no-alt"></span></span>
|
|
<?php }?>
|
|
<input class="pagelayer-alpha-color-control" type="text" data-show-opacity="true" data-palette="true" data-default-color="<?php echo esc_attr($val['value']); ?>" data-id="<?php echo esc_attr($kk); ?>" data-title="<?php echo esc_attr($val['title']); ?>" value="<?php echo esc_attr($val['value']); ?>" />
|
|
</div>
|
|
|
|
<?php }?>
|
|
<button class="button customize-control-color-repeater-add" type="button"><?php echo $this->button_label; ?></button>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
// Global color palette control
|
|
class Pagelayer_Font_Repeater_Control extends Pagelayer_Customize_Control {
|
|
/**
|
|
* The type of control being rendered
|
|
*/
|
|
public $type = 'pagelayer-global-font';
|
|
/**
|
|
* Button labels
|
|
*/
|
|
public $button_label = '';
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct( $manager, $id, $args = array(), $options = array() ) {
|
|
parent::__construct( $manager, $id, $args );
|
|
|
|
if(empty($this->button_label)){
|
|
$this->button_label = __( 'Add New Font', 'pagelayer' );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Render the control in the customizer
|
|
*/
|
|
public function render_content() {
|
|
global $pagelayer;
|
|
|
|
$values = $this->value();
|
|
|
|
$decode_values = (array) json_decode($values, true);
|
|
|
|
$settings = $pagelayer->font_settings;
|
|
|
|
$skip_keys = array('primary', 'secondary', 'text', 'accent');
|
|
?>
|
|
<div class="pagelayer-font-palette-control">
|
|
<?php if( !empty( $this->label ) ) { ?>
|
|
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
|
|
<?php } ?>
|
|
<?php if( !empty( $this->description ) ) { ?>
|
|
<span class="customize-control-description"><?php echo esc_html( $this->description ); ?></span>
|
|
<?php } ?>
|
|
<input type="hidden" class="pagelayer-font-palette-data" <?php $this->link(); ?>>
|
|
<?php
|
|
foreach( $decode_values as $kk => $val){ ?>
|
|
|
|
<div class="pagelayer-font-holder" data-id="<?php echo $kk; ?>">
|
|
<span class="pagelayer-font-title" contenteditable="true"><?php _e($val['title']); ?></span>
|
|
<?php if(!in_array($kk, $skip_keys)){ ?>
|
|
<span class="customize-control-font-repeater-delete"><span class="dashicons dashicons-no-alt"></span></span>
|
|
<?php }?>
|
|
|
|
<!-- Font Start -->
|
|
<div class="pagelayer-control-typo-holder">
|
|
<span class="pagelayer-control-typo-icon dashicons dashicons-edit"></span>
|
|
<div class="pagelayer-control-typo">
|
|
|
|
<?php foreach($settings as $sk => $sval){ ?>
|
|
<div class="pagelayer-control-typo-fields">
|
|
<label class="pagelayer-control-typo-fields-label"><?php echo $sval['label']?>
|
|
|
|
<?php
|
|
$screens = array('');
|
|
if(!empty($sval['responsive'])){
|
|
|
|
$screens = array('desktop', 'tablet', 'mobile');
|
|
|
|
?>
|
|
<span class="pagelayer-devices">
|
|
<button type="button" class="active-device" aria-pressed="true" data-device="desktop">
|
|
<i class="dashicons dashicons-desktop"></i>
|
|
</button>
|
|
<button type="button"aria-pressed="false" data-device="tablet">
|
|
<i class="dashicons dashicons-tablet"></i>
|
|
</button>
|
|
<button type="button" aria-pressed="false" data-device="mobile">
|
|
<i class="dashicons dashicons-smartphone"></i>
|
|
</button>
|
|
</span>
|
|
<?php } ?>
|
|
</label>
|
|
|
|
<?php
|
|
foreach($screens as $screen){
|
|
|
|
$show_device = '';
|
|
$field_name = $sk;
|
|
$field_val = (empty($val['value'][$sk]) ? '' : $val['value'][$sk]);
|
|
|
|
if(count($screens) > 1){
|
|
$field_name = $sk.'['.$screen.']';
|
|
$show_device = 'data-show-device="_'.$screen.'"';
|
|
|
|
if(is_array($field_val)){
|
|
$field_val = (empty($field_val[$screen]) ? '' : $field_val[$screen]);
|
|
}
|
|
}
|
|
|
|
if(isset($sval['choices'])){ ?>
|
|
<select name="<?php echo $field_name; ?>" data-font-key="<?php echo $sk;?>" data-default-value="<?php echo $field_val; ?>" <?php echo $show_device;?>>
|
|
<?php
|
|
// This add this js
|
|
//echo pagelayer_create_font_options($sval['choices'], $val['value'][$sk]);
|
|
?>
|
|
</select>
|
|
<?php } else { ?>
|
|
<input type="number" name="<?php echo $field_name; ?>" value="<?php echo $field_val; ?>" <?php echo $show_device;?>>
|
|
<?php
|
|
}
|
|
}
|
|
?>
|
|
</div>
|
|
<?php } ?>
|
|
|
|
</div>
|
|
</div>
|
|
<!-- Font End -->
|
|
</div>
|
|
|
|
<?php }?>
|
|
<button class="button customize-control-font-repeater-add" type="button"><?php echo $this->button_label; ?></button>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Customize control
|
|
*
|
|
*/
|
|
class Pagelayer_Custom_Control extends Pagelayer_Customize_Control {
|
|
|
|
/**
|
|
* The type of control being rendered
|
|
*/
|
|
public $type = 'pagelayer-customize-control';
|
|
public $responsive;
|
|
public $units;
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct( $manager, $id, $args = array(), $options = array() ) {
|
|
parent::__construct( $manager, $id, $args );
|
|
}
|
|
|
|
/**
|
|
* Render the control in the customizer
|
|
*/
|
|
public function render_content() {
|
|
|
|
$units = $this->units;
|
|
$input_id = '_customize-input-' . $this->id;
|
|
$description_id = '_customize-description-' . $this->id;
|
|
$describedby_attr = ( ! empty( $this->description ) ) ? ' aria-describedby="' . esc_attr( $description_id ) . '" ' : '';
|
|
switch ( $this->type ) {
|
|
case 'checkbox':
|
|
?>
|
|
<span class="pagelayer-customize-inside-control-row">
|
|
<label for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_html( $this->label ); ?></label>
|
|
<input
|
|
id="<?php echo esc_attr( $input_id ); ?>"
|
|
class="pagelayer-customize-checkbox"
|
|
<?php echo $describedby_attr; ?>
|
|
type="checkbox"
|
|
value="<?php echo esc_attr( $this->value() ); ?>"
|
|
<?php $this->link(); ?>
|
|
<?php checked( $this->value() ); ?>
|
|
/>
|
|
<?php if ( ! empty( $this->description ) ) : ?>
|
|
<span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
|
|
<?php endif; ?>
|
|
</span>
|
|
<?php
|
|
break;
|
|
case 'radio':
|
|
if ( empty( $this->choices ) ) {
|
|
return;
|
|
}
|
|
|
|
$name = '_customize-radio-' . $this->id;
|
|
?>
|
|
<?php if ( ! empty( $this->label ) ) : ?>
|
|
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
|
|
<?php endif; ?>
|
|
<?php if ( ! empty( $this->description ) ) : ?>
|
|
<span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
|
|
<?php endif; ?>
|
|
<span class="pagelayer-customize-inside-control-row">
|
|
<?php foreach ( $this->choices as $value => $label ) : ?>
|
|
|
|
<input
|
|
id="<?php echo esc_attr( $input_id . '-radio-' . $value ); ?>"
|
|
class="pagelayer-customize-radio"
|
|
type="radio"
|
|
<?php echo $describedby_attr; ?>
|
|
value="<?php echo esc_attr( $value ); ?>"
|
|
name="<?php echo esc_attr( $name ); ?>"
|
|
<?php $this->link(); ?>
|
|
<?php checked( $this->value(), $value ); ?>
|
|
data-label="<?php echo esc_html( $label ); ?>"
|
|
/>
|
|
<?php endforeach; ?>
|
|
</span>
|
|
<?php
|
|
break;
|
|
case 'divider':
|
|
echo '<hr class="pagelayer-customize-divider">';
|
|
break;
|
|
case 'pl_slider':
|
|
?>
|
|
<div class="pagelayer-slider-custom-control">
|
|
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?>
|
|
<?php if(!empty($this->responsive )){?>
|
|
<span class="pagelayer-devices">
|
|
<button type="button" class="active-device" aria-pressed="true" data-device="desktop">
|
|
<i class="dashicons dashicons-desktop"></i>
|
|
</button>
|
|
<button type="button"aria-pressed="false" data-device="tablet">
|
|
<i class="dashicons dashicons-tablet"></i>
|
|
</button>
|
|
<button type="button" aria-pressed="false" data-device="mobile">
|
|
<i class="dashicons dashicons-smartphone"></i>
|
|
</button>
|
|
</span>
|
|
<?php } ?>
|
|
</span>
|
|
<?php
|
|
if(!empty($units)){
|
|
?>
|
|
<span class="pagelayer-units">
|
|
<input type="hidden" class="pagelayer-unit-input" value="<?php echo esc_attr($this->value('unit')); ?>" <?php $this->link('unit'); ?>></input>
|
|
<?php
|
|
foreach($units as $unit){
|
|
echo '<span data-unit="'.$unit.'"> '.$unit.' </span>';
|
|
}
|
|
?>
|
|
</span>
|
|
<?php }
|
|
|
|
$screens = array('');
|
|
$set_link = 'slider';
|
|
|
|
if(!empty($this->responsive)){
|
|
$screens = array('desktop' => '_desktop', 'tablet' => '_tablet', 'mobile' => '_mobile');
|
|
}
|
|
|
|
foreach($screens as $screen => $_screen){
|
|
|
|
$show_device = empty($_screen)? '' : 'data-show-device="'.$_screen.'"';
|
|
|
|
echo '<div class="pagelayer-control-typography" '.$show_device.'>';
|
|
?>
|
|
<input class="pagelayer-slider" type="range" min="<?php echo esc_attr( $this->input_attrs['min'] ); ?>" max="<?php echo esc_attr( $this->input_attrs['max'] ); ?>" step="<?php echo esc_attr( $this->input_attrs['step'] ); ?>" value="<?php echo esc_attr( $this->value($set_link.$_screen) ); ?>" />
|
|
<input type="number" id="<?php echo esc_attr( $this->id ); ?>" name="<?php echo esc_attr( $this->id ); ?>" value="<?php echo esc_attr( $this->value($set_link.$_screen) ); ?>" class="customize-control-slider-value" <?php $this->link($set_link.$_screen); ?> min="<?php echo esc_attr( $this->input_attrs['min'] ); ?>" max="<?php echo esc_attr( $this->input_attrs['max'] ); ?>" step="<?php echo esc_attr( $this->input_attrs['step'] ); ?>"/>
|
|
|
|
</div>
|
|
<?php } ?>
|
|
</div>
|
|
<?php
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Switch sanitization
|
|
*
|
|
* @param string Switch value
|
|
* @return integer Sanitized value
|
|
*/
|
|
if ( ! function_exists( 'pagelayer_switch_sanitization' ) ) {
|
|
function pagelayer_switch_sanitization( $input ) {
|
|
if ( true === $input ) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Alpha Color (Hex & RGBa) sanitization
|
|
*
|
|
* @param string Input to be sanitized
|
|
* @return string Sanitized input
|
|
*/
|
|
if ( ! function_exists( 'pagelayer_hex_rgba_sanitization' ) ) {
|
|
function pagelayer_hex_rgba_sanitization( $input, $setting ) {
|
|
if ( empty( $input ) || is_array( $input ) ) {
|
|
return $setting->default;
|
|
}
|
|
|
|
if ( false === strpos( $input, 'rgba' ) ) {
|
|
// If string doesn't start with 'rgba' then santize as hex color
|
|
$input = sanitize_hex_color( $input );
|
|
} else {
|
|
// Sanitize as RGBa color
|
|
$input = str_replace( ' ', '', $input );
|
|
sscanf( $input, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha );
|
|
$input = 'rgba(' . pagelayer_in_range( $red, 0, 255 ) . ',' . pagelayer_in_range( $green, 0, 255 ) . ',' . pagelayer_in_range( $blue, 0, 255 ) . ',' . pagelayer_in_range( $alpha, 0, 1 ) . ')';
|
|
}
|
|
return $input;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Only allow values between a certain minimum & maxmium range
|
|
*
|
|
* @param number Input to be sanitized
|
|
* @return number Sanitized input
|
|
*/
|
|
if ( ! function_exists( 'pagelayer_in_range' ) ) {
|
|
function pagelayer_in_range( $input, $min, $max ){
|
|
if ( $input < $min ) {
|
|
$input = $min;
|
|
}
|
|
if ( $input > $max ) {
|
|
$input = $max;
|
|
}
|
|
return $input;
|
|
}
|
|
}
|
|
|
|
// Create font options
|
|
function pagelayer_create_font_options( $args, $set ){
|
|
$options = '';
|
|
foreach( $args as $value => $label ){
|
|
$_value = $value;
|
|
|
|
if(is_numeric($value)){
|
|
$_value = $label;
|
|
}
|
|
|
|
// Single item
|
|
if(is_string($label)){
|
|
$options .= pagelayer_sel_option( $_value, $label, $set);
|
|
continue;
|
|
}
|
|
if( $value == 'default'){
|
|
$options .= pagelayer_sel_option( '', $value, $set);
|
|
continue;
|
|
}
|
|
|
|
$options .= '<optgroup label="'. $value .'">';
|
|
$options .= pagelayer_create_font_options($label, $set);
|
|
$options .= '</optgroup>';
|
|
}
|
|
|
|
return $options;
|
|
}
|