Responsive Menu - Version 3.1.3

Version Description

(19th May 2017) = * Requires PHP 5.4 * RTL improvements for admin UI * Added options to change the depth level values * Fixed twig deprecation notices - thanks to stodorovic for this * Fixed bug where having auto-height would break menu scrolling - Pro only

Download this release

Release Info

Developer peterfeatherstone
Plugin Icon 128x128 Responsive Menu
Version 3.1.3
Comparing to
See all releases

Code changes from version 3.1.2 to 3.1.3

app/Validation/Validator.php CHANGED
@@ -58,6 +58,12 @@ class Validator {
58
  'single_menu_font_size',
59
  'single_menu_submenu_font_size',
60
  'single_menu_submenu_height',
 
 
 
 
 
 
61
  ],
62
 
63
  // Positive Digits
58
  'single_menu_font_size',
59
  'single_menu_submenu_font_size',
60
  'single_menu_submenu_height',
61
+ 'menu_depth_0',
62
+ 'menu_depth_1',
63
+ 'menu_depth_2',
64
+ 'menu_depth_3',
65
+ 'menu_depth_4',
66
+ 'menu_depth_5',
67
  ],
68
 
69
  // Positive Digits
config/default_options.php CHANGED
@@ -7,6 +7,18 @@ function get_responsive_menu_default_options() {
7
  'breakpoint' => 8000,
8
  'menu_to_hide' => '',
9
  'menu_depth' => 5,
 
 
 
 
 
 
 
 
 
 
 
 
10
  'menu_to_use' => '',
11
  'theme_location_menu' => '',
12
 
7
  'breakpoint' => 8000,
8
  'menu_to_hide' => '',
9
  'menu_depth' => 5,
10
+ 'menu_depth_0' => 5,
11
+ 'menu_depth_1' => 10,
12
+ 'menu_depth_2' => 15,
13
+ 'menu_depth_3' => 20,
14
+ 'menu_depth_4' => 25,
15
+ 'menu_depth_5' => 30,
16
+ 'menu_depth_0_unit' => '%',
17
+ 'menu_depth_1_unit' => '%',
18
+ 'menu_depth_2_unit' => '%',
19
+ 'menu_depth_3_unit' => '%',
20
+ 'menu_depth_4_unit' => '%',
21
+ 'menu_depth_5_unit' => '%',
22
  'menu_to_use' => '',
23
  'theme_location_menu' => '',
24
 
public/css/admin/admin.css CHANGED
@@ -395,6 +395,62 @@ li.draggable {
395
  height: 500px
396
  }
397
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
398
  @media screen and (max-width: 1200px) {
399
  .container-fluid #banner-area,
400
  .container-fluid #options-area {
395
  height: 500px
396
  }
397
 
398
+ .rtl #header-bar-items-order-container .draggable,
399
+ .rtl .container-fluid form.form-horizontal label,
400
+ .rtl .bootstrap-select.btn-group .dropdown-toggle .filter-option,
401
+ .rtl .bootstrap-select.btn-group .dropdown-menu.inner {
402
+ text-align: right;
403
+ }
404
+
405
+ .rtl .input-group .form-control:last-child,
406
+ .rtl .input-group-addon:last-child, .input-group-btn:first-child > .btn-group:not(:first-child) > .btn,
407
+ .rtl .input-group-btn:first-child > .btn:not(:first-child),
408
+ .rtl .input-group-btn:last-child > .btn,
409
+ .rtl .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle {
410
+ border-radius: 4px 0 0 4px;
411
+ }
412
+
413
+ .rtl .draggable {
414
+ padding-right: 25px;
415
+ }
416
+
417
+ .rtl .btn-group-lg > .btn, .btn-lg,
418
+ .rtl .container-fluid form.form-horizontal .panel-body small {
419
+ margin-left: 15px;
420
+ }
421
+
422
+ .rtl .toggle-off {
423
+ right: -50%;
424
+ text-align: left !important;
425
+ }
426
+
427
+ .rtl .pro::before,
428
+ .rtl .semi-pro::before {
429
+ float: left;
430
+ }
431
+
432
+ .rtl .minicolors-theme-bootstrap .minicolors-swatch {
433
+ left: 75px;
434
+ }
435
+
436
+ .rtl .container-fluid form.form-horizontal .minicolors input {
437
+ width: calc(100% - 125px) !important;
438
+ }
439
+
440
+ .rtl .container-fluid #banner-area {
441
+ margin-left: 0;
442
+ margin-right: 5%;
443
+ }
444
+
445
+ .rtl .key-container .key span {
446
+ margin-left: 10px;
447
+ margin-right: 0;
448
+ }
449
+
450
+ .rtl .key-container .key {
451
+ padding-left: 10px;
452
+ }
453
+
454
  @media screen and (max-width: 1200px) {
455
  .container-fluid #banner-area,
456
  .container-fluid #options-area {
public/css/app.css.twig CHANGED
@@ -124,27 +124,23 @@ button#responsive-menu-button,
124
  }
125
 
126
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-1 a.responsive-menu-item-link {
127
- padding-{{ options.menu_text_alignment }}: 10%;
128
  }
129
 
130
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-2 a.responsive-menu-item-link {
131
- padding-{{ options.menu_text_alignment }}: 15%;
132
  }
133
 
134
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-3 a.responsive-menu-item-link {
135
- padding-{{ options.menu_text_alignment }}: 20%;
136
  }
137
 
138
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-4 a.responsive-menu-item-link {
139
- padding-{{ options.menu_text_alignment }}: 25%;
140
  }
141
 
142
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-5 a.responsive-menu-item-link {
143
- padding-{{ options.menu_text_alignment }}: 30%;
144
- }
145
-
146
- #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-6 a.responsive-menu-item-link {
147
- padding-{{ options.menu_text_alignment }}: 35%;
148
  }
149
 
150
  #responsive-menu-container li.responsive-menu-item {
@@ -156,7 +152,7 @@ button#responsive-menu-button,
156
  width: 100%;
157
  display: block;
158
  text-decoration: none;
159
- padding: 0 5%;
160
  position: relative;
161
  }
162
 
124
  }
125
 
126
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-1 a.responsive-menu-item-link {
127
+ padding-{{ options.menu_text_alignment }}: {{ options.menu_depth_1 }}%;
128
  }
129
 
130
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-2 a.responsive-menu-item-link {
131
+ padding-{{ options.menu_text_alignment }}: {{ options.menu_depth_2 }}%;
132
  }
133
 
134
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-3 a.responsive-menu-item-link {
135
+ padding-{{ options.menu_text_alignment }}: {{ options.menu_depth_3 }}%;
136
  }
137
 
138
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-4 a.responsive-menu-item-link {
139
+ padding-{{ options.menu_text_alignment }}: {{ options.menu_depth_4 }}%;
140
  }
141
 
142
  #responsive-menu-container #responsive-menu ul.responsive-menu-submenu-depth-5 a.responsive-menu-item-link {
143
+ padding-{{ options.menu_text_alignment }}: {{ options.menu_depth_5 }}%;
 
 
 
 
144
  }
145
 
146
  #responsive-menu-container li.responsive-menu-item {
152
  width: 100%;
153
  display: block;
154
  text-decoration: none;
155
+ padding: 0 {{ options.menu_depth_0 }}%;
156
  position: relative;
157
  }
158
 
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: ResponsiveMenu, peterfeatherstone
3
  Donate link: https://responsive.menu/donate
4
  Tags: responsive, menu, responsive menu, mobile menu, wordpress responsive menu, wp responsive menu, tablet menu, hamburger menu, hamburger, mobile, tablet, 3 lines, 3 line, three line, three lines
5
- Requires at least: 3.5.0
6
- Tested up to: 4.7.4
7
- Stable tag: 3.1.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -111,6 +111,13 @@ To view our FAQ, please go to <a href="https://responsive.menu/faq">https://resp
111
 
112
  == Changelog ==
113
 
 
 
 
 
 
 
 
114
  = 3.1.2 (11th May 2017) =
115
  * **Requires PHP 5.4**
116
  * Updated badge counts
2
  Contributors: ResponsiveMenu, peterfeatherstone
3
  Donate link: https://responsive.menu/donate
4
  Tags: responsive, menu, responsive menu, mobile menu, wordpress responsive menu, wp responsive menu, tablet menu, hamburger menu, hamburger, mobile, tablet, 3 lines, 3 line, three line, three lines
5
+ Requires at least: 3.6
6
+ Tested up to: 4.8
7
+ Stable tag: 3.1.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
111
 
112
  == Changelog ==
113
 
114
+ = 3.1.3 (19th May 2017) =
115
+ * **Requires PHP 5.4**
116
+ * RTL improvements for admin UI
117
+ * Added options to change the depth level values
118
+ * Fixed twig deprecation notices - thanks to stodorovic for this
119
+ * Fixed bug where having auto-height would break menu scrolling - Pro only
120
+
121
  = 3.1.2 (11th May 2017) =
122
  * **Requires PHP 5.4**
123
  * Updated badge counts
responsive-menu.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Responsive Menu
5
  Plugin URI: https://responsive.menu
6
  Description: Highly Customisable Responsive Menu Plugin for WordPress
7
- Version: 3.1.2
8
  Author: Peter Featherstone
9
  Text Domain: responsive-menu
10
  Author URI: https://peterfeatherstone.com
4
  Plugin Name: Responsive Menu
5
  Plugin URI: https://responsive.menu
6
  Description: Highly Customisable Responsive Menu Plugin for WordPress
7
+ Version: 3.1.3
8
  Author: Peter Featherstone
9
  Text Domain: responsive-menu
10
  Author URI: https://peterfeatherstone.com
views/admin/macros.html.twig CHANGED
@@ -1,5 +1,5 @@
1
  {% macro percentage_units(name, value) %}
2
- <select id='responsive-menu-{{ name|replace('_', '-') }}' class='selectpicker show-tick is-unit' name='menu[{{ name }}]'>
3
  <option value='%' selected='selected'>%</option>
4
  <option value='px' disabled data-subtext='[PRO]'>px -</option>
5
  <option value='em' disabled data-subtext='[PRO]'>em -</option>
@@ -8,7 +8,7 @@
8
  {% endmacro %}
9
 
10
  {% macro pixel_units(name, value) %}
11
- <select id='responsive-menu-{{ name|replace('_', '-') }}' id='responsive-menu-{{ name|replace('_', '-') }}'class='selectpicker show-tick is-unit' name='menu[{{ name }}]'>
12
  <option value='px' selected='selected'>px</option>
13
  <option value='%' disabled data-subtext='[PRO]'>% -</option>
14
  <option value='em' disabled data-subtext='[PRO]'>em -</option>
@@ -17,7 +17,7 @@
17
  {% endmacro %}
18
 
19
  {% macro animation_select(name, value) %}
20
- <select id='responsive-menu-{{ name|replace('_', '-') }}' class='selectpicker show-tick' name='menu[{{ name }}]'>
21
  <option value='slide'{% if value == 'slide' %} selected='selected'{% endif %}>Slide</option>
22
  <option value='push'{% if value == 'push' %} selected='selected'{% endif %}>Push</option>
23
  <option value='fade' disabled data-subtext='[PRO]'>Fade -</option>
@@ -25,7 +25,7 @@
25
  {% endmacro %}
26
 
27
  {% macro select(name, value, choices, class='') %}
28
- <select id='responsive-menu-{{ name|replace('_', '-') }}' class='selectpicker show-tick {{ class }}' name='menu[{{ name }}]'>
29
  {% for key, display in choices %}
30
  <option value='{{ key }}' {% if key == value %}selected='selected'{% endif %}>
31
  {{ display }}
@@ -35,7 +35,7 @@
35
  {% endmacro %}
36
 
37
  {% macro font_icon(name, value, type) %}
38
- <input type='text' id='responsive-menu-{{ name|replace('_', '-') }}' name='menu[{{ name }}]' value='{{ value|escape }}' class='form-control font-icon-input {{ class }}'>
39
  <select class='selectpicker show-tick font-icon-select' name='menu[{{ name }}_type]'>
40
  <option value='font-awesome' selected='selected'>FontAwesome</option>
41
  <option value='glyphicon'>GlyphIcon</option>
@@ -44,7 +44,7 @@
44
  {% endmacro %}
45
 
46
  {% macro button_animation_select(name, value) %}
47
- <select id='responsive-menu-{{ name|replace('_', '-') }}' class='selectpicker show-tick' name='menu[{{ name }}]'>
48
  <option value='off'{% if value == 'off' %} selected='selected'{% endif %}>Off</option>
49
  <option value='boring'{% if value == 'boring' %} selected='selected'{% endif %}>Boring</option>
50
  <option value='3dx' disabled data-subtext='[PRO]'>3DX -</option>
@@ -76,35 +76,35 @@
76
  {% endmacro %}
77
 
78
  {% macro input(name, value, class='') %}
79
- <input type='text' id='responsive-menu-{{ name|replace('_', '-') }}' name='menu[{{ name }}]' value='{{ value|escape }}' class='form-control {{ class }}'>
80
  {% endmacro %}
81
 
82
  {% macro colour(name, value) %}
83
- <input type='text' id='responsive-menu-{{ name|replace('_', '-') }}' class='form-control mini-colours' name='menu[{{ name }}]' value='{{ value }}' />
84
  {% endmacro %}
85
 
86
  {% macro label(for, title) %}
87
- <label for='responsive-menu-{{ for|replace('_', '-') }}' class='control-label'>
88
  {{ title }}
89
  </label>
90
  {% endmacro %}
91
 
92
  {% macro checkbox(name, value) %}
93
- <input {% if value == 'on' %}checked='checked' {% endif %} id='responsive-menu-{{ name|replace('_', '-') }}'
94
  name='menu[{{ name }}]' data-toggle='toggle' data-onstyle='success' data-offstyle='danger' type='checkbox' value='on' />
95
  {% endmacro %}
96
 
97
  {% macro image(name, value) %}
98
  <div class='input-group'>
99
- <input type='text' class='form-control' id='responsive-menu-{{ name|replace('_', '-') }}' name='menu[{{ name }}]' value='{{ value }}' />
100
  <span class='input-group-btn'>
101
- <button type='button' class='image_button btn btn-primary' for='responsive-menu-{{ name|replace('_', '-') }}'>Upload Image</button>
102
  </span>
103
  </div>
104
  {% endmacro %}
105
 
106
  {% macro textarea(name, value) %}
107
- <textarea class='form-control' id='responsive-menu-{{ name|replace('_', '-') }}' name='menu[{{ name }}]'>{{ value }}</textarea>
108
  {% endmacro %}
109
 
110
  {% macro row(name, title, type, options, errors, class='', pro='', select_type='', unit_type='', sub_title='', unit='', choices=[], example='') %}
1
  {% macro percentage_units(name, value) %}
2
+ <select id='responsive-menu-{{ name|replace({'_': '-'}) }}' class='selectpicker show-tick is-unit' name='menu[{{ name }}]'>
3
  <option value='%' selected='selected'>%</option>
4
  <option value='px' disabled data-subtext='[PRO]'>px -</option>
5
  <option value='em' disabled data-subtext='[PRO]'>em -</option>
8
  {% endmacro %}
9
 
10
  {% macro pixel_units(name, value) %}
11
+ <select id='responsive-menu-{{ name|replace({'_': '-'}) }}' id='responsive-menu-{{ name|replace({'_': '-'}) }}'class='selectpicker show-tick is-unit' name='menu[{{ name }}]'>
12
  <option value='px' selected='selected'>px</option>
13
  <option value='%' disabled data-subtext='[PRO]'>% -</option>
14
  <option value='em' disabled data-subtext='[PRO]'>em -</option>
17
  {% endmacro %}
18
 
19
  {% macro animation_select(name, value) %}
20
+ <select id='responsive-menu-{{ name|replace({'_': '-'}) }}' class='selectpicker show-tick' name='menu[{{ name }}]'>
21
  <option value='slide'{% if value == 'slide' %} selected='selected'{% endif %}>Slide</option>
22
  <option value='push'{% if value == 'push' %} selected='selected'{% endif %}>Push</option>
23
  <option value='fade' disabled data-subtext='[PRO]'>Fade -</option>
25
  {% endmacro %}
26
 
27
  {% macro select(name, value, choices, class='') %}
28
+ <select id='responsive-menu-{{ name|replace({'_': '-'}) }}' class='selectpicker show-tick {{ class }}' name='menu[{{ name }}]'>
29
  {% for key, display in choices %}
30
  <option value='{{ key }}' {% if key == value %}selected='selected'{% endif %}>
31
  {{ display }}
35
  {% endmacro %}
36
 
37
  {% macro font_icon(name, value, type) %}
38
+ <input type='text' id='responsive-menu-{{ name|replace({'_': '-'}) }}' name='menu[{{ name }}]' value='{{ value|escape }}' class='form-control font-icon-input {{ class }}'>
39
  <select class='selectpicker show-tick font-icon-select' name='menu[{{ name }}_type]'>
40
  <option value='font-awesome' selected='selected'>FontAwesome</option>
41
  <option value='glyphicon'>GlyphIcon</option>
44
  {% endmacro %}
45
 
46
  {% macro button_animation_select(name, value) %}
47
+ <select id='responsive-menu-{{ name|replace({'_': '-'}) }}' class='selectpicker show-tick' name='menu[{{ name }}]'>
48
  <option value='off'{% if value == 'off' %} selected='selected'{% endif %}>Off</option>
49
  <option value='boring'{% if value == 'boring' %} selected='selected'{% endif %}>Boring</option>
50
  <option value='3dx' disabled data-subtext='[PRO]'>3DX -</option>
76
  {% endmacro %}
77
 
78
  {% macro input(name, value, class='') %}
79
+ <input type='text' id='responsive-menu-{{ name|replace({'_': '-'}) }}' name='menu[{{ name }}]' value='{{ value|escape }}' class='form-control {{ class }}'>
80
  {% endmacro %}
81
 
82
  {% macro colour(name, value) %}
83
+ <input type='text' id='responsive-menu-{{ name|replace({'_': '-'}) }}' class='form-control mini-colours' name='menu[{{ name }}]' value='{{ value }}' />
84
  {% endmacro %}
85
 
86
  {% macro label(for, title) %}
87
+ <label for='responsive-menu-{{ for|replace({'_': '-'}) }}' class='control-label'>
88
  {{ title }}
89
  </label>
90
  {% endmacro %}
91
 
92
  {% macro checkbox(name, value) %}
93
+ <input {% if value == 'on' %}checked='checked' {% endif %} id='responsive-menu-{{ name|replace({'_': '-'}) }}'
94
  name='menu[{{ name }}]' data-toggle='toggle' data-onstyle='success' data-offstyle='danger' type='checkbox' value='on' />
95
  {% endmacro %}
96
 
97
  {% macro image(name, value) %}
98
  <div class='input-group'>
99
+ <input type='text' class='form-control' id='responsive-menu-{{ name|replace({'_': '-'}) }}' name='menu[{{ name }}]' value='{{ value }}' />
100
  <span class='input-group-btn'>
101
+ <button type='button' class='image_button btn btn-primary' for='responsive-menu-{{ name|replace({'_': '-'}) }}'>Upload Image</button>
102
  </span>
103
  </div>
104
  {% endmacro %}
105
 
106
  {% macro textarea(name, value) %}
107
+ <textarea class='form-control' id='responsive-menu-{{ name|replace({'_': '-'}) }}' name='menu[{{ name }}]'>{{ value }}</textarea>
108
  {% endmacro %}
109
 
110
  {% macro row(name, title, type, options, errors, class='', pro='', select_type='', unit_type='', sub_title='', unit='', choices=[], example='') %}
views/admin/sections/menu.html.twig CHANGED
@@ -203,9 +203,21 @@
203
  </div>
204
 
205
  <div class='panel panel-default'>
206
- <div class='panel-body'>Advanced<small>Menu</small></div>
207
  <table class='table table-bordered table-hover'>
208
  {{ macros.row('menu_depth', 'Depth', 'select', options, errors, '', '', 'depth') }}
 
 
 
 
 
 
 
 
 
 
 
 
209
  {{ macros.row('menu_disable_scrolling', 'Disable Background Scrolling', 'checkbox', options, errors, '', 'pro') }}
210
  {{ macros.row('theme_location_menu', 'Theme Location Menu', 'select', options, errors, '', '', 'custom', '', '', '', location_menus) }}
211
  </table>
203
  </div>
204
 
205
  <div class='panel panel-default'>
206
+ <div class='panel-body'>Depth<small>Menu</small></div>
207
  <table class='table table-bordered table-hover'>
208
  {{ macros.row('menu_depth', 'Depth', 'select', options, errors, '', '', 'depth') }}
209
+ {{ macros.row('menu_depth_0', 'Depth Level Zero', 'input', options, errors, 'has-unit', 'semi-pro', '', 'percentage') }}
210
+ {{ macros.row('menu_depth_1', 'Depth Level One', 'input', options, errors, 'has-unit', 'semi-pro', '', 'percentage') }}
211
+ {{ macros.row('menu_depth_2', 'Depth Level Two', 'input', options, errors, 'has-unit', 'semi-pro', '', 'percentage') }}
212
+ {{ macros.row('menu_depth_3', 'Depth Level Three', 'input', options, errors, 'has-unit', 'semi-pro', '', 'percentage') }}
213
+ {{ macros.row('menu_depth_4', 'Depth Level Four', 'input', options, errors, 'has-unit', 'semi-pro', '', 'percentage') }}
214
+ {{ macros.row('menu_depth_5', 'Depth Level Five', 'input', options, errors, 'has-unit', 'semi-pro', '', 'percentage') }}
215
+ </table>
216
+ </div>
217
+
218
+ <div class='panel panel-default'>
219
+ <div class='panel-body'>Advanced<small>Menu</small></div>
220
+ <table class='table table-bordered table-hover'>
221
  {{ macros.row('menu_disable_scrolling', 'Disable Background Scrolling', 'checkbox', options, errors, '', 'pro') }}
222
  {{ macros.row('theme_location_menu', 'Theme Location Menu', 'select', options, errors, '', '', 'custom', '', '', '', location_menus) }}
223
  </table>
views/app/container.html.twig CHANGED
@@ -2,8 +2,8 @@
2
  <div id="responsive-menu-wrapper">
3
  {% for key, selected in options.items_order|json_decode %}
4
  {% if selected == 'on' %}
5
- {% include 'app/%s.html.twig'|format(key|replace(' ', '-')) %}
6
  {% endif %}
7
  {% endfor %}
8
  </div>
9
- </div>
2
  <div id="responsive-menu-wrapper">
3
  {% for key, selected in options.items_order|json_decode %}
4
  {% if selected == 'on' %}
5
+ {% include 'app/%s.html.twig'|format(key|replace({' ': '-'})) %}
6
  {% endif %}
7
  {% endfor %}
8
  </div>
9
+ </div>