Version Description
- Improve icon selection UX
Download this release
Release Info
Developer | kucrut |
Plugin | Menu Icons by ThemeIsle |
Version | 0.1.1 |
Comparing to | |
See all releases |
Code changes from version 0.1.0 to 0.1.1
- css/admin.css +8 -0
- includes/admin.php +39 -2
- includes/menu-item-custom-fields/menu-item-custom-fields.php +2 -2
- includes/menu-item-custom-fields/readme.txt +4 -1
- includes/menu-item-custom-fields/walker-nav-menu-edit.php +2 -2
- includes/type-fonts.php +5 -2
- js/admin.js +15 -0
- js/input-dependencies.js +148 -0
- menu-icons.php +2 -2
- readme.txt +4 -1
css/admin.css
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.menu-icons-wrap {
|
2 |
+
margin-top: 5px;
|
3 |
+
margin-bottom: 5px;
|
4 |
+
}
|
5 |
+
.menu-icons-wrap label {
|
6 |
+
display: inline-block;
|
7 |
+
min-width: 7em;
|
8 |
+
}
|
includes/admin.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Menu editor handler
|
4 |
* @package Menu_Icons
|
5 |
-
* @version 0.1.
|
6 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
7 |
*/
|
8 |
|
@@ -18,6 +18,7 @@ class Menu_Icons_Admin_Nav_Menus {
|
|
18 |
* Initialize class
|
19 |
*/
|
20 |
public static function init() {
|
|
|
21 |
add_action( 'menu_item_custom_fields', array( __CLASS__, '_fields' ), 10, 3 );
|
22 |
add_filter( 'manage_nav-menus_columns', array( __CLASS__, '_columns' ), 99 );
|
23 |
add_action( 'wp_update_nav_menu_item', array( __CLASS__, '_save' ), 10, 3 );
|
@@ -48,6 +49,38 @@ class Menu_Icons_Admin_Nav_Menus {
|
|
48 |
}
|
49 |
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
/**
|
52 |
* Print fields
|
53 |
*
|
@@ -86,7 +119,11 @@ class Menu_Icons_Admin_Nav_Menus {
|
|
86 |
?>
|
87 |
<p class="description">
|
88 |
<label for="<?php echo esc_attr( $input_id ) ?>"><?php esc_html_e( 'Icon type', 'menu-icons' ); ?></label>
|
89 |
-
|
|
|
|
|
|
|
|
|
90 |
<?php foreach ( self::_get_types() as $id => $props ) : ?>
|
91 |
<?php printf(
|
92 |
'<option value="%s"%s>%s</option>',
|
2 |
/**
|
3 |
* Menu editor handler
|
4 |
* @package Menu_Icons
|
5 |
+
* @version 0.1.1
|
6 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
7 |
*/
|
8 |
|
18 |
* Initialize class
|
19 |
*/
|
20 |
public static function init() {
|
21 |
+
add_action( 'admin_enqueue_scripts', array( __CLASS__, '_scripts_styles' ) );
|
22 |
add_action( 'menu_item_custom_fields', array( __CLASS__, '_fields' ), 10, 3 );
|
23 |
add_filter( 'manage_nav-menus_columns', array( __CLASS__, '_columns' ), 99 );
|
24 |
add_action( 'wp_update_nav_menu_item', array( __CLASS__, '_save' ), 10, 3 );
|
49 |
}
|
50 |
|
51 |
|
52 |
+
/**
|
53 |
+
* Enqueue scripts & styles on wp-admin/nav-menus.php
|
54 |
+
*
|
55 |
+
* @since 0.1.1
|
56 |
+
* @access protected
|
57 |
+
* @wp_hook admin_enqueue_scripts
|
58 |
+
*/
|
59 |
+
public static function _scripts_styles() {
|
60 |
+
wp_register_script(
|
61 |
+
'kucrut-jquery-input-dependencies',
|
62 |
+
Menu_Icons::get( 'url' ) . 'js/input-dependencies.js',
|
63 |
+
array( 'jquery' ),
|
64 |
+
'0.1.0',
|
65 |
+
true
|
66 |
+
);
|
67 |
+
wp_enqueue_script(
|
68 |
+
'menu-icons',
|
69 |
+
Menu_Icons::get( 'url' ) . 'js/admin.js',
|
70 |
+
array( 'kucrut-jquery-input-dependencies' ),
|
71 |
+
Menu_Icons::VERSION,
|
72 |
+
true
|
73 |
+
);
|
74 |
+
|
75 |
+
wp_enqueue_style(
|
76 |
+
'menu-icons',
|
77 |
+
Menu_Icons::get( 'url' ) . 'css/admin.css',
|
78 |
+
false,
|
79 |
+
Menu_Icons::VERSION
|
80 |
+
);
|
81 |
+
}
|
82 |
+
|
83 |
+
|
84 |
/**
|
85 |
* Print fields
|
86 |
*
|
119 |
?>
|
120 |
<p class="description">
|
121 |
<label for="<?php echo esc_attr( $input_id ) ?>"><?php esc_html_e( 'Icon type', 'menu-icons' ); ?></label>
|
122 |
+
<?php printf(
|
123 |
+
'<select id="%s" name="%s" class="hasdep" data-dep-scope="div.menu-icons-wrap" data-dep-children=".field-icon-child">',
|
124 |
+
esc_attr( $input_id ),
|
125 |
+
esc_attr( $input_name )
|
126 |
+
) ?>
|
127 |
<?php foreach ( self::_get_types() as $id => $props ) : ?>
|
128 |
<?php printf(
|
129 |
'<option value="%s"%s>%s</option>',
|
includes/menu-item-custom-fields/menu-item-custom-fields.php
CHANGED
@@ -4,13 +4,13 @@
|
|
4 |
* Menu Item Custom Fields
|
5 |
*
|
6 |
* @package Menu_Item_Custom_Fields
|
7 |
-
* @version 0.1.
|
8 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
9 |
*
|
10 |
* Plugin name: Menu Item Custom Fields
|
11 |
* Plugin URI: https://github.com/kucrut/wp-menu-item-custom-fields
|
12 |
* Description: Easily add custom fields to nav menu items
|
13 |
-
* Version: 0.1.
|
14 |
* Author: Dzikri Aziz
|
15 |
* Author URI: http://kucrut.org/
|
16 |
* License: GPLv2
|
4 |
* Menu Item Custom Fields
|
5 |
*
|
6 |
* @package Menu_Item_Custom_Fields
|
7 |
+
* @version 0.1.1
|
8 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
9 |
*
|
10 |
* Plugin name: Menu Item Custom Fields
|
11 |
* Plugin URI: https://github.com/kucrut/wp-menu-item-custom-fields
|
12 |
* Description: Easily add custom fields to nav menu items
|
13 |
+
* Version: 0.1.1
|
14 |
* Author: Dzikri Aziz
|
15 |
* Author URI: http://kucrut.org/
|
16 |
* License: GPLv2
|
includes/menu-item-custom-fields/readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate Link: http://kucrut.org/#coffee
|
|
4 |
Tags: menu, nav-menu, custom-fields, metadata
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 3.8.1
|
7 |
-
Stable tag: 0.1.
|
8 |
License: GPLv2
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -38,5 +38,8 @@ Copy (and customize) and include the `menu-item-custom-fields-example.php` file
|
|
38 |
|
39 |
|
40 |
== Changelog ==
|
|
|
|
|
|
|
41 |
= 0.1.0 =
|
42 |
* Initial public release
|
4 |
Tags: menu, nav-menu, custom-fields, metadata
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 3.8.1
|
7 |
+
Stable tag: 0.1.1
|
8 |
License: GPLv2
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
38 |
|
39 |
|
40 |
== Changelog ==
|
41 |
+
= 0.1.1 =
|
42 |
+
* Move custom fields up (before `<p.field-move />`)
|
43 |
+
|
44 |
= 0.1.0 =
|
45 |
* Initial public release
|
includes/menu-item-custom-fields/walker-nav-menu-edit.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* is only loaded on the wp-admin/nav-menus.php page.
|
8 |
*
|
9 |
* @package Menu_Item_Custom_Fields
|
10 |
-
* @version 0.1.
|
11 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
12 |
*/
|
13 |
|
@@ -39,7 +39,7 @@ class Menu_Item_Custom_Fields_Walker extends Walker_Nav_Menu_Edit {
|
|
39 |
parent::start_el( $item_output, $item, $depth, $args, $id );
|
40 |
$output .= preg_replace(
|
41 |
// NOTE: Check this regex from time to time!
|
42 |
-
'/(?=<
|
43 |
$this->get_fields( $item, $depth, $args ),
|
44 |
$item_output
|
45 |
);
|
7 |
* is only loaded on the wp-admin/nav-menus.php page.
|
8 |
*
|
9 |
* @package Menu_Item_Custom_Fields
|
10 |
+
* @version 0.1.1
|
11 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
12 |
*/
|
13 |
|
39 |
parent::start_el( $item_output, $item, $depth, $args, $id );
|
40 |
$output .= preg_replace(
|
41 |
// NOTE: Check this regex from time to time!
|
42 |
+
'/(?=<p[^>]+class="[^"]*field-move)/',
|
43 |
$this->get_fields( $item, $depth, $args ),
|
44 |
$item_output
|
45 |
);
|
includes/type-fonts.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Icon fonts handler
|
4 |
*
|
5 |
* @package Menu_Icons
|
6 |
-
* @version 0.1.
|
7 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
8 |
*/
|
9 |
|
@@ -120,7 +120,10 @@ abstract class Menu_Icons_Fonts {
|
|
120 |
$input_id = sprintf( 'menu-icons-%d-%s', $id, $this->_key );
|
121 |
$input_name = sprintf( 'menu-icons[%d][%s]', $id, $this->_key );
|
122 |
?>
|
123 |
-
|
|
|
|
|
|
|
124 |
<label for="<?php echo esc_attr( $input_id ) ?>"><?php echo esc_html( $this->label ); ?></label>
|
125 |
<select id="<?php echo esc_attr( $input_id ) ?>" name="<?php echo esc_attr( $input_name ) ?>">
|
126 |
<?php printf(
|
3 |
* Icon fonts handler
|
4 |
*
|
5 |
* @package Menu_Icons
|
6 |
+
* @version 0.1.1
|
7 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
8 |
*/
|
9 |
|
120 |
$input_id = sprintf( 'menu-icons-%d-%s', $id, $this->_key );
|
121 |
$input_name = sprintf( 'menu-icons[%d][%s]', $id, $this->_key );
|
122 |
?>
|
123 |
+
<?php printf(
|
124 |
+
'<p class="field-icon-child description menu-icon-type-%1$s" data-dep-on="%1$s">',
|
125 |
+
esc_attr( $this->type )
|
126 |
+
) ?>
|
127 |
<label for="<?php echo esc_attr( $input_id ) ?>"><?php echo esc_html( $this->label ); ?></label>
|
128 |
<select id="<?php echo esc_attr( $input_id ) ?>" name="<?php echo esc_attr( $input_name ) ?>">
|
129 |
<?php printf(
|
js/admin.js
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Global jQuery */
|
2 |
+
/**
|
3 |
+
* Menu Icons
|
4 |
+
*
|
5 |
+
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
6 |
+
* @version 0.1.0
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
(function($) {
|
10 |
+
'use strict';
|
11 |
+
|
12 |
+
$.inputDependencies({
|
13 |
+
selector: 'select.hasdep'
|
14 |
+
});
|
15 |
+
}(jQuery));
|
js/input-dependencies.js
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* global jQuery */
|
2 |
+
/**
|
3 |
+
* Input dependencies
|
4 |
+
*
|
5 |
+
* This jQuery plugin will help you toggle the visibility of form fields that
|
6 |
+
* depends on another field.
|
7 |
+
*
|
8 |
+
* To use this, you need to add some data- attributes to the input fields that
|
9 |
+
* have 'children':
|
10 |
+
* data-dep-children: This is where you define the selector of the children of
|
11 |
+
* this input
|
12 |
+
* data-dep-scope: Selector for the scope where the children should be found
|
13 |
+
*
|
14 |
+
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
15 |
+
* @version 0.1.0
|
16 |
+
*
|
17 |
+
*/
|
18 |
+
(function($) {
|
19 |
+
'use strict';
|
20 |
+
|
21 |
+
var instances = {};
|
22 |
+
|
23 |
+
var defaults = {
|
24 |
+
selector : '.hasdep',
|
25 |
+
disable : true
|
26 |
+
};
|
27 |
+
|
28 |
+
var getState = function ( $el, depOn ) {
|
29 |
+
var currentValue = $el.val();
|
30 |
+
|
31 |
+
if (
|
32 |
+
! $el.prop('disabled')
|
33 |
+
&& (
|
34 |
+
(
|
35 |
+
('string' === typeof depOn || 'number' === typeof depOn)
|
36 |
+
&& (depOn == currentValue || $.inArray(depOn, currentValue) > -1)
|
37 |
+
)
|
38 |
+
|| ('object' === typeof depOn && $.inArray(currentValue, depOn) > -1)
|
39 |
+
)
|
40 |
+
) {
|
41 |
+
return true;
|
42 |
+
}
|
43 |
+
else {
|
44 |
+
return false;
|
45 |
+
}
|
46 |
+
};
|
47 |
+
|
48 |
+
var getChildren = function( $el, options ) {
|
49 |
+
var childrenSelector = $el.data('dep-children');
|
50 |
+
if ( !childrenSelector ) {
|
51 |
+
window.log( 'jQuery.inputDependencies', 'childrenSelector is not valid.', options, $el );
|
52 |
+
return false;
|
53 |
+
}
|
54 |
+
|
55 |
+
var childrenScope = $el.data('dep-scope');
|
56 |
+
if ( childrenScope )
|
57 |
+
return $el.closest( childrenScope ).find( childrenSelector );
|
58 |
+
else
|
59 |
+
return $( childrenSelector );
|
60 |
+
};
|
61 |
+
|
62 |
+
var onChange = function( e ) {
|
63 |
+
var $el = $(e.target);
|
64 |
+
|
65 |
+
// If this input is already initialized, do nothing
|
66 |
+
// This is to prevent unnecessary actions when the change event is
|
67 |
+
// triggered by our ajaxComplete callback
|
68 |
+
if ( e.inputDependenciesInit && $el.data('inputDependenciesInit') )
|
69 |
+
return;
|
70 |
+
else
|
71 |
+
$el.data('inputDependenciesInit', true );
|
72 |
+
|
73 |
+
var options = e.data;
|
74 |
+
var $children = getChildren( $el, options );
|
75 |
+
|
76 |
+
if ( ! $children.length )
|
77 |
+
return false;
|
78 |
+
|
79 |
+
$children.each(function() {
|
80 |
+
var $child = $(this);
|
81 |
+
var depOn = $child.data('dep-on');
|
82 |
+
if ( ! depOn )
|
83 |
+
return false;
|
84 |
+
|
85 |
+
var show = getState( $el, depOn );
|
86 |
+
$child.toggle( show );
|
87 |
+
|
88 |
+
|
89 |
+
if ( true === options.disable ) {
|
90 |
+
$child.filter(':input')
|
91 |
+
.add( $child.find(':input') )
|
92 |
+
.prop('disabled', !show)
|
93 |
+
.trigger('change');
|
94 |
+
}
|
95 |
+
});
|
96 |
+
};
|
97 |
+
|
98 |
+
var init = function( selector ) {
|
99 |
+
$(selector).trigger({
|
100 |
+
type: 'change',
|
101 |
+
inputDependenciesInit: true
|
102 |
+
});
|
103 |
+
};
|
104 |
+
|
105 |
+
$.inputDependencies = function( options ) {
|
106 |
+
options = $.extend( true, {}, defaults, options );
|
107 |
+
|
108 |
+
if ( !options.selector ) {
|
109 |
+
window.log( 'jQuery.inputDependencies', 'Invalid selector.', options );
|
110 |
+
return false;
|
111 |
+
}
|
112 |
+
|
113 |
+
if ( instances.hasOwnProperty( options.selector ) ) {
|
114 |
+
window.log( 'jQuery.inputDependencies', 'Selector is already registered.', options );
|
115 |
+
return false;
|
116 |
+
}
|
117 |
+
|
118 |
+
instances[ options.selector ] = options;
|
119 |
+
|
120 |
+
console.log( instances );
|
121 |
+
|
122 |
+
// Delegate event
|
123 |
+
$(document)
|
124 |
+
.on('change', options.selector, options, onChange)
|
125 |
+
.ajaxComplete(function() {
|
126 |
+
init(options.selector);
|
127 |
+
});
|
128 |
+
|
129 |
+
// Trigger event
|
130 |
+
init(options.selector);
|
131 |
+
|
132 |
+
return true;
|
133 |
+
};
|
134 |
+
}(jQuery));
|
135 |
+
|
136 |
+
if ( undefined === window.log ) {
|
137 |
+
/**
|
138 |
+
* usage: log('inside coolFunc',this,arguments);
|
139 |
+
* http://paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
|
140 |
+
*/
|
141 |
+
window.log = function(){
|
142 |
+
log.history = log.history || []; // store logs to an array for reference
|
143 |
+
log.history.push(arguments);
|
144 |
+
if ( this.console ) {
|
145 |
+
console.log( Array.prototype.slice.call(arguments) );
|
146 |
+
}
|
147 |
+
};
|
148 |
+
}
|
menu-icons.php
CHANGED
@@ -4,14 +4,14 @@
|
|
4 |
* Menu Icons
|
5 |
*
|
6 |
* @package Menu_Icons
|
7 |
-
* @version 0.1.
|
8 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
9 |
*
|
10 |
*
|
11 |
* Plugin name: Menu Icons
|
12 |
* Plugin URI: http://kucrut.org/
|
13 |
* Description: Easily add icons to your navigation menu items
|
14 |
-
* Version: 0.1.
|
15 |
* Author: Dzikri Aziz
|
16 |
* Author URI: http://kucrut.org/
|
17 |
* License: GPLv2
|
4 |
* Menu Icons
|
5 |
*
|
6 |
* @package Menu_Icons
|
7 |
+
* @version 0.1.1
|
8 |
* @author Dzikri Aziz <kvcrvt@gmail.com>
|
9 |
*
|
10 |
*
|
11 |
* Plugin name: Menu Icons
|
12 |
* Plugin URI: http://kucrut.org/
|
13 |
* Description: Easily add icons to your navigation menu items
|
14 |
+
* Version: 0.1.1
|
15 |
* Author: Dzikri Aziz
|
16 |
* Author URI: http://kucrut.org/
|
17 |
* License: GPLv2
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate Link: http://kucrut.org/#coffee
|
|
4 |
Tags: menu, nav-menu, icons, navigation
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 3.8.1
|
7 |
-
Stable tag: 0.1.
|
8 |
License: GPLv2
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -78,5 +78,8 @@ add_filter( 'menu_icons_load_extra_style', '__return_false' );
|
|
78 |
|
79 |
|
80 |
== Changelog ==
|
|
|
|
|
|
|
81 |
= 0.1.0 =
|
82 |
* Initial public release
|
4 |
Tags: menu, nav-menu, icons, navigation
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 3.8.1
|
7 |
+
Stable tag: 0.1.1
|
8 |
License: GPLv2
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
78 |
|
79 |
|
80 |
== Changelog ==
|
81 |
+
= 0.1.1 =
|
82 |
+
* Improve icon selection UX
|
83 |
+
|
84 |
= 0.1.0 =
|
85 |
* Initial public release
|