PATH:
home
/
letacommog
/
supportleta
/
wp-content
/
plugins
/
wp-domain-checker
/
titan-framework
/
lib
<?php /** * Sortable Option Class * * @author Benjamin Intal * @package Titan Framework Core * @since 1.4 **/ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Code Option Class * * @since 1.4 **/ class TitanFrameworkOptionSortable extends TitanFrameworkOption { // Default settings specific to this option public $defaultSecondarySettings = array( 'options' => array(), 'visible_button' => true, ); private static $firstLoad = true; /** * Constructor * * @since 1.4 */ function __construct( $settings, $owner ) { parent::__construct( $settings, $owner ); add_action( 'admin_head', array( __CLASS__, 'createSortableScript' ) ); tf_add_action_once( 'admin_enqueue_scripts', array( $this, 'enqueueSortable' ) ); tf_add_action_once( 'customize_controls_enqueue_scripts', array( $this, 'enqueueSortable' ) ); } /** * Enqueues the jQuery UI scripts * * @return void * @since 1.4 */ public function enqueueSortable() { wp_enqueue_script( 'jquery-ui-core' ); wp_enqueue_script( 'jquery-ui-sortable' ); } /** * Creates the javascript needed for sortable to run * * @return void * @since 1.4 */ public static function createSortableScript() { if ( ! self::$firstLoad ) { return; } self::$firstLoad = false; ?> <script> jQuery(document).ready(function($) { "use strict"; // initialize $('.tf-sortable > ul ~ input').each(function() { var value = $(this).val(); try { value = unserialize( value ); } catch (err) { return; } var ul = $(this).siblings('ul:eq(0)'); ul.find('li').addClass('tf-invisible').find('i.visibility').toggleClass('dashicons-visibility-faint'); $.each(value, function(i, val) { ul.find('li[data-value=' + val + ']').removeClass('tf-invisible').find('i.visibility').toggleClass('dashicons-visibility-faint'); }); }); $('.tf-sortable > ul').each(function() { $(this).sortable() .disableSelection() .on( "sortstop", function( event, ui ) { tfUpdateSortable(ui.item.parent()); }) .find('li').each(function() { $(this).find('i.visibility').click(function() { $(this).toggleClass('dashicons-visibility-faint').parents('li:eq(0)').toggleClass('tf-invisible'); }); }) .click(function() { tfUpdateSortable( $(this).parents('ul:eq(0)') ); }) }); }); function tfUpdateSortable(ul) { "use strict"; var $ = jQuery; var values = []; ul.find('li').each(function() { if ( ! $(this).is('.tf-invisible') ) { values.push( $(this).attr('data-value') ); } }); ul.siblings('input').eq(0).val( serialize( values ) ).trigger('change'); } </script> <?php } /** * Displays the option in admin panels and meta boxes * * @return void * @since 1.4 */ public function display() { if ( ! is_array( $this->settings['options'] ) ) { return; } if ( ! count( $this->settings['options'] ) ) { return; } $this->echoOptionHeader( true ); $values = $this->getValue(); if ( $values == '' ) { $values = array_keys( $this->settings['options'] ); } if ( count( $values ) != count( $this->settings['options'] ) ) { $this->settings['visible_button'] = true; } $visibleButton = ''; if ( $this->settings['visible_button'] == true ) { $visibleButton = "<i class='dashicons dashicons-visibility visibility'></i>"; } ?> <ul> <?php foreach ( $values as $dummy => $value ) { if ( isset( $this->settings['options'][ $value ] ) ) { printf( "<li data-value='%s'><i class='dashicons dashicons-menu'></i>%s%s</li>", esc_attr( $value ), $visibleButton, $this->settings['options'][ $value ] ); } } $invisibleKeys = array_diff( array_keys( $this->settings['options'] ), $values ); foreach ( $invisibleKeys as $dummy => $value ) { if ( isset( $this->settings['options'][ $value ] ) ) { printf( "<li data-value='%s'><i class='dashicons dashicons-menu'></i>%s%s</li>", esc_attr( $value ), $visibleButton, $this->settings['options'][ $value ] ); } } ?> </ul> <div class='clear: both'></div> <?php if ( ! is_serialized( $values ) ) { $values = serialize( $values ); } printf( "<input type='hidden' name=\"%s\" id=\"%s\" value=\"%s\" />", $this->getID(), $this->getID(), esc_attr( $values ) ); $this->echoOptionFooter( false ); } /** * Cleans up the serialized value before saving * * @param string $value The serialized value * @return string The cleaned value * @since 1.4 */ public function cleanValueForSaving( $value ) { if ( is_array( $value ) ) { return serialize( $value ); } return stripslashes( $value ); } /** * Cleans the raw value for getting * * @param string $value The raw value * @return string The cleaned value * @since 1.4 */ public function cleanValueForGetting( $value ) { if ( is_array( $value ) ) { return $value; } if ( is_serialized( stripslashes( $value ) ) ) { return unserialize( $value ); } return $value; } /** * Registers the theme customizer control, for displaying the option * * @param WP_Customize $wp_enqueue_script The customize object * @param TitanFrameworkCustomizerSection $section The section where this option will be placed * @param int $priority The order of this control in the section * @return void * @since 1.4 */ public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) { $wp_customize->add_control( new TitanFrameworkOptionSortableControl( $wp_customize, $this->getID(), array( 'label' => $this->settings['name'], 'section' => $section->settings['id'], 'settings' => $this->getID(), 'description' => $this->settings['desc'], 'priority' => $priority, 'options' => $this->settings['options'], 'visible_button' => $this->settings['visible_button'], ) ) ); } } /* * We create a new control for the theme customizer */ add_action( 'customize_register', 'registerTitanFrameworkOptionSortableControl', 1 ); /** * Creates the option for the theme customizer * * @return void * @since 1.4 */ function registerTitanFrameworkOptionSortableControl() { class TitanFrameworkOptionSortableControl extends WP_Customize_Control { public $description; public $options; public $visible_button; public function render_content() { TitanFrameworkOptionSortable::createSortableScript(); if ( ! is_array( $this->options ) ) { return; } if ( ! count( $this->options ) ) { return; } ?> <label class='tf-sortable'> <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span> <?php $values = $this->value(); if ( $values == '' ) { $values = array_keys( $this->options ); } if ( is_serialized( $values ) ) { $values = unserialize( $values ); } if ( count( $values ) != count( $this->options ) ) { $this->visible_button = true; } $visibleButton = ''; if ( $this->visible_button == true ) { $visibleButton = "<i class='dashicons dashicons-visibility visibility'></i>"; } ?> <ul> <?php foreach ( $values as $dummy => $value ) { printf( "<li data-value='%s'><i class='dashicons dashicons-menu'></i>%s%s</li>", esc_attr( $value ), $visibleButton, $this->options[ $value ] ); } $invisibleKeys = array_diff( array_keys( $this->options ), $values ); foreach ( $invisibleKeys as $dummy => $value ) { printf( "<li data-value='%s'><i class='dashicons dashicons-menu'></i>%s%s</li>", esc_attr( $value ), $visibleButton, $this->options[ $value ] ); } ?> </ul> <div class='clear: both'></div> <?php if ( ! is_serialized( $values ) ) { $values = serialize( $values ); } ?> <input type='hidden' <?php $this->link(); ?> value='<?php echo esc_attr( $values ) ?>'/> </label> <?php echo "<p class='description'>{$this->description}</p>"; } } }
[+]
..
[-] class-admin-tab.php
[edit]
[-] class-titan-framework.php
[edit]
[-] class-option-date.php
[edit]
[-] class-option-textarea.php
[edit]
[-] class-option-multicheck-posts.php
[edit]
[-] class-option-radio.php
[edit]
[-] functions-utils.php
[edit]
[-] class-option-radio-palette.php
[edit]
[-] class-option-font.php
[edit]
[-] class-option-custom.php
[edit]
[-] class-option-select-pages.php
[edit]
[-] class-option-multicheck.php
[edit]
[-] class-option-multicheck-categories.php
[edit]
[-] class-option-heading.php
[edit]
[-] class-option-group.php
[edit]
[-] class-option-multicheck-post-types.php
[edit]
[-] class-admin-notification.php
[edit]
[-] class-option-iframe.php
[edit]
[-] class-option-radio-image.php
[edit]
[-] class-titan-css.php
[edit]
[-] class-option-upload.php
[edit]
[-] class-admin-page.php
[edit]
[-] functions-googlefonts.php
[edit]
[-] class-customizer.php
[edit]
[-] class-option-checkbox.php
[edit]
[-] class-option-number.php
[edit]
[-] class-option-select-categories.php
[edit]
[-] class-wp-customize-control.php
[edit]
[-] class-option-color.php
[edit]
[-] class-option-select-post-types.php
[edit]
[-] class-option-code.php
[edit]
[-] class-meta-box.php
[edit]
[-] iframe-font-preview.php
[edit]
[-] class-option-multicheck-pages.php
[edit]
[-] class-option-enable.php
[edit]
[-] class-option-editor.php
[edit]
[-] class-option-gallery.php
[edit]
[-] class-option-select.php
[edit]
[-] class-option-edd-license.php
[edit]
[-] class-option.php
[edit]
[-] class-option-file.php
[edit]
[-] class-option-save.php
[edit]
[-] class-option-separator.php
[edit]
[-] class-option-sortable.php
[edit]
[-] class-option-text.php
[edit]
[-] class-option-select-posts.php
[edit]
[-] class-option-ajax-button.php
[edit]
[-] class-option-note.php
[edit]