WordPress.org

Plugin Directory

Changeset 1607039


Ignore:
Timestamp:
03/03/17 08:42:44 (7 months ago)
Author:
rilwis
Message:

Version 1.0.3

Location:
meta-box-text-limiter/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • meta-box-text-limiter/trunk

    • Property svn:ignore
      •  

        old new  
        11.git 
         2.gitignore 
        23.gitattributes 
        34.DS_Store 
        45Thumbs.db 
        5 readme.md 
         6README.md 
  • meta-box-text-limiter/trunk/js/text-limiter.js

    r1182609 r1607039  
    11/* global jQuery */ 
    22 
    3 jQuery( function ( $ ) 
    4 { 
     3jQuery( function ( $ ) { 
    54    'use strict'; 
    65 
     
    98         * Initializing function 
    109         */ 
    11         init: function () 
    12         { 
    13             $( '.text-limiter' ).each( function () 
    14             { 
     10        init: function () { 
     11            $( '.text-limiter' ).each( function () { 
    1512                var $input = $( this ).closest( '.rwmb-input' ), 
    1613                    $clone = $( '.rwmb-clone', $input ); 
    1714 
    18                 if ( $clone.length ) 
    19                 { 
    20                     $clone.each( function () 
    21                     { 
     15                if ( $clone.length ) { 
     16                    $clone.each( function () { 
    2217                        Limiter.limit( $( this ) ); 
    2318                    } ); 
    24                 } 
    25                 else 
    26                 { 
     19                } else { 
    2720                    Limiter.limit( $input ); 
    2821                } 
     
    3528         * Add limiter for input 
    3629         * 
    37          * @param $inputWrapper The jQuery object for wrapper input 
     30         * @param $wrapper The jQuery object for wrapper input 
    3831         */ 
    39         limit: function ( $inputWrapper ) 
    40         { 
    41             var $limiter = $( '.text-limiter', $inputWrapper ), 
     32        limit: function ( $wrapper ) { 
     33            var $limiter = $( '.text-limiter', $wrapper ), 
    4234                maximum = parseInt( $( '.maximum', $limiter ).text() ), 
    43                 $input = $( 'input[type=text]', $inputWrapper ).length ? $( 'input[type=text]', $inputWrapper ) : $( 'textarea', $inputWrapper ), 
     35                $input = $( 'input[type=text]', $wrapper ).length ? $( 'input[type=text]', $wrapper ) : $( 'textarea', $wrapper ), 
    4436                $counter = $( '.counter', $limiter ), 
    4537                $countByWord = 'word' == $limiter.data( 'limit-type' ); 
     
    5042 
    5143            // Count the input when typing 
    52             $input.on( 'input', function () 
    53             { 
     44            $input.on( 'input', function () { 
    5445                var text = $input.val(); 
    5546                length = Limiter.count( $input.val(), $countByWord ); 
    5647 
    57                 if ( length > maximum ) 
    58                 { 
     48                if ( length > maximum ) { 
    5949                    text = Limiter.subStr( text, 0, maximum, $countByWord ); 
    6050                    $input.val( text ); 
    6151                    $counter.html( maximum ); 
    6252                } 
    63                 else 
    64                 { 
     53                else { 
    6554                    $counter.html( length ); 
    6655                } 
     
    7160         * Bind limiter for new clone input 
    7261         */ 
    73         cloneHandle: function () 
    74         { 
    75             $( '.add-clone' ).on( 'click', function () 
    76             { 
     62        cloneHandle: function () { 
     63            $( '.add-clone' ).on( 'click', function () { 
    7764                var $input = $( this ).closest( '.rwmb-input' ); 
    7865 
    7966                // Set timeout for bind event after create new clone 
    80                 setTimeout( function () 
    81                 { 
     67                setTimeout( function () { 
    8268                    var $clone = $( '.rwmb-clone', $input ).last(); 
    8369 
     
    9783         * @returns Integer 
    9884         */ 
    99         count: function ( val, countByWord ) 
    100         { 
    101             if ( $.trim( val ) == '' ) 
     85        count: function ( val, countByWord ) { 
     86            if ( $.trim( val ) == '' ) { 
    10287                return 0; 
     88            } 
    10389 
    10490            return countByWord ? val.match( /\S+/g ).length : val.length; 
     
    114100         * @returns {string} 
    115101         */ 
    116         subStr: function ( val, start, len, subByWord ) 
    117         { 
    118             if ( !subByWord ) 
     102        subStr: function ( val, start, len, subByWord ) { 
     103            if ( ! subByWord ) { 
    119104                return val.substr( start, len ); 
     105            } 
    120106 
    121107            var lastIndexSpace = val.lastIndexOf( ' ' ); 
  • meta-box-text-limiter/trunk/readme.txt

    r1398779 r1607039  
    44Tags: meta-box, custom-fields, custom-field, meta, meta-boxes, text limit, character limit, word limit 
    55Requires at least: 3.5 
    6 Tested up to: 4.5 
    7 Stable tag: 1.0.2 
     6Tested up to: 4.7.2 
     7Stable tag: 1.0.3 
    88License: GPLv2 or later 
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    4848== Changelog == 
    4949 
     50= 1.0.3 = 
     51* Fix: Multi-bytes characters are cut from the frontend. 
     52 
    5053= 1.0.2 = 
    5154* Fix: Warning in helper function if using limit by character. 
  • meta-box-text-limiter/trunk/text-limiter.php

    r1398779 r1607039  
    22/** 
    33 * Plugin Name: Meta Box Text Limiter 
    4  * Plugin URI: https://metabox.io 
     4 * Plugin URI: https://metabox.io/plugins/meta-box-text-limiter/ 
    55 * Description: Limit number of characters or words entered for text and textarea fields 
    6  * Author: ThaoHa, Rilwis 
    7  * Version: 1.0.2 
     6 * Author: ThaoHa, Anh Tran 
     7 * Version: 1.0.3 
    88 * Author URI: https://metabox.io 
     9 * 
     10 * @package Meta Box 
     11 * @subpackage Meta Box Text Limiter 
    912 */ 
    1013 
     
    1215 * Text limiter class. 
    1316 */ 
    14 class Text_Limiter 
    15 { 
     17class Text_Limiter { 
    1618    /** 
    1719     * List of supported fields. 
     20     * 
    1821     * @var array 
    1922     */ 
     
    2326     * Constructor. 
    2427     */ 
    25     public function __construct() 
    26     { 
     28    public function __construct() { 
    2729        add_action( 'rwmb_before', array( $this, 'register' ) ); 
    2830 
    2931        // Change the output of fields with limit. 
    30         // Pre Meta Box 4.8.2 
    31         add_filter( 'rwmb_get_field', array( $this, 'get_value' ), 10, 4 ); 
    32         add_filter( 'rwmb_the_field', array( $this, 'get_value' ), 10, 4 ); 
    33         // Meta Box 4.8.2+ 
    34         add_filter( 'rwmb_get_value', array( $this, 'get_value' ), 10, 4 ); 
    35         add_filter( 'rwmb_the_value', array( $this, 'get_value' ), 10, 4 ); 
     32        // Pre Meta Box 4.8.2. 
     33        add_filter( 'rwmb_get_field', array( $this, 'get_value' ), 10, 2 ); 
     34        add_filter( 'rwmb_the_field', array( $this, 'get_value' ), 10, 2 ); 
     35        // Meta Box 4.8.2+. 
     36        add_filter( 'rwmb_get_value', array( $this, 'get_value' ), 10, 2 ); 
     37        add_filter( 'rwmb_the_value', array( $this, 'get_value' ), 10, 2 ); 
    3638 
    3739        add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); 
     
    4143     * Register hook to change the output of text/textarea fields. 
    4244     */ 
    43     public function register() 
    44     { 
    45         foreach ( $this->types as $type ) 
    46         { 
     45    public function register() { 
     46        foreach ( $this->types as $type ) { 
    4747            add_filter( "rwmb_{$type}_html", array( $this, 'show' ), 10, 2 ); 
    4848        } 
     
    5252     * Change the output of text/textarea fields. 
    5353     * 
    54      * @param string $output 
    55      * @param array  $field 
     54     * @param string $output HTML output of the field. 
     55     * @param array  $field  Field parameter. 
     56     * 
    5657     * @return string 
    5758     */ 
    58     public function show( $output, $field ) 
    59     { 
    60         if ( ! isset( $field['limit'] ) || ! is_numeric( $field['limit'] ) || ! $field['limit'] > 0 ) 
    61         { 
     59    public function show( $output, $field ) { 
     60        if ( ! isset( $field['limit'] ) || ! is_numeric( $field['limit'] ) || ! $field['limit'] > 0 ) { 
    6261            return $output; 
    6362        } 
    6463 
    6564        $type = isset( $field['limit_type'] ) ? $field['limit_type'] : 'character'; 
    66         $text = 'word' == $type ? __( 'Word Count', 'text-limiter' ) : __( 'Character Count', 'text-limiter' ); 
     65        $text = 'word' === $type ? __( 'Word Count', 'text-limiter' ) : __( 'Character Count', 'text-limiter' ); 
    6766 
    6867        return $output . ' 
    69             <div class="text-limiter" data-limit-type="' . $type . '"> 
    70                 <span>' . $text . ': 
    71                     <span class="counter">0</span>/<span class="maximum">' . $field['limit'] . '</span> 
     68            <div class="text-limiter" data-limit-type="' . esc_attr( $type ) . '"> 
     69                <span>' . esc_html( $text ) . ': 
     70                    <span class="counter">0</span>/<span class="maximum">' . esc_html( $field['limit'] ) . '</span> 
    7271                </span> 
    7372            </div>'; 
     
    7978     * @see rwmb_get_field() in meta-box/inc/functions.php for explenation 
    8079     * 
    81      * @param string $value 
    82      * @param array  $field 
    83      * @param array  $args 
    84      * @param int    $post_id 
     80     * @param string $value   Field value. 
     81     * @param array  $field   Field parameters. 
     82     * 
    8583     * @return string 
    8684     */ 
    87     public function get_value( $value, $field, $args, $post_id ) 
    88     { 
    89         if ( ! in_array( $field['type'], $this->types ) || empty( $field['limit'] ) || ! is_numeric( $field['limit'] ) ) 
    90         { 
     85    public function get_value( $value, $field ) { 
     86        if ( ! in_array( $field['type'], $this->types, true ) || empty( $field['limit'] ) || ! is_numeric( $field['limit'] ) ) { 
    9187            return $value; 
    9288        } 
    9389 
    9490        $type = isset( $field['limit_type'] ) ? $field['limit_type'] : 'character'; 
    95         if ( 'word' == $type ) 
    96         { 
    97             $value_array = preg_split( '/\s+/', $value, - 1, PREG_SPLIT_NO_EMPTY ); 
    98             $delimiter   = ' '; 
    99         } 
    100         else 
    101         { 
    102             $value_array = str_split( $value ); 
    103             $delimiter   = ''; 
     91        if ( 'character' === $type ) { 
     92            return function_exists( 'mb_substr' ) ? mb_substr( $value, 0, $field['limit'] ) : substr( $value, 0, $field['limit'] ); 
    10493        } 
    10594 
    106         $value = implode( $delimiter, array_slice( $value_array, 0, $field['limit'] ) ); 
     95        $value = preg_split( '/\s+/', $value, - 1, PREG_SPLIT_NO_EMPTY ); 
     96        $value = implode( ' ', array_slice( $value, 0, $field['limit'] ) ); 
     97 
    10798        return $value; 
    10899    } 
     
    111102     * Enqueue assets. 
    112103     */ 
    113     public function admin_enqueue_scripts() 
    114     { 
     104    public function admin_enqueue_scripts() { 
    115105        wp_enqueue_style( 'text-limiter', plugin_dir_url( __FILE__ ) . 'css/text-limiter.css' ); 
    116106        wp_enqueue_script( 'text-limiter', plugin_dir_url( __FILE__ ) . 'js/text-limiter.js', array( 'jquery' ), '', true ); 
Note: See TracChangeset for help on using the changeset viewer.