Version Description
Release Date - 22 February 2018
- Fixed - Support for PHP <
Download this release
Release Info
Developer | andrei.igna |
Plugin | If Menu – Visibility control for Menu Items |
Version | 0.8.3 |
Comparing to | |
See all releases |
Code changes from version 0.2.1 to 0.8.3
- assets/icon-visibility.svg +4 -0
- assets/if-menu-site.css +53 -0
- assets/if-menu.css +263 -0
- assets/if-menu.js +86 -0
- assets/plan-premium.png +0 -0
- assets/select2.min.css +1 -0
- assets/select2.min.js +1 -0
- conditions.php +0 -83
- if-menu.js +0 -7
- if-menu.php +500 -179
- languages/if-menu-de_DE.mo +0 -0
- languages/if-menu-de_DE.po +59 -0
- languages/if-menu-ro_RO.mo +0 -0
- languages/if-menu-ro_RO.po +64 -0
- languages/if-menu.pot +53 -0
- readme.md +55 -0
- readme.txt +202 -80
- src/conditions-basic.php +96 -0
- src/conditions-multiple-options.php +366 -0
- src/if-menu-nav-menu-4.5.php +225 -0
- src/if-menu-nav-menu-4.7.php +215 -0
- src/if-menu-nav-menu.php +221 -0
- src/user-info.php +111 -0
assets/icon-visibility.svg
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<svg fill="#50a92f" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
2 |
+
<path d="M0 0h24v24H0z" fill="none"/>
|
3 |
+
<path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/>
|
4 |
+
</svg>
|
assets/if-menu-site.css
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
@keyframes ifMenuFadeIn {
|
3 |
+
from {
|
4 |
+
opacity: 0;
|
5 |
+
transform: translate3d(20%, 0, 0);
|
6 |
+
}
|
7 |
+
to {
|
8 |
+
opacity: 1;
|
9 |
+
transform: translate3d(0, 0, 0);
|
10 |
+
}
|
11 |
+
}
|
12 |
+
|
13 |
+
.if-menu-peek {
|
14 |
+
position: relative;
|
15 |
+
}
|
16 |
+
|
17 |
+
.if-menu-peek a {
|
18 |
+
opacity: 0.8;
|
19 |
+
}
|
20 |
+
|
21 |
+
.if-menu-peek::before {
|
22 |
+
content: "If Menu peek";
|
23 |
+
position: absolute;
|
24 |
+
text-align: center;
|
25 |
+
top: 50%;
|
26 |
+
left: calc(100% + 15px);
|
27 |
+
background: #f6f9fc;
|
28 |
+
box-shadow: 0 0 0 1px rgba(136,152,170,.1), 0 15px 35px 0 rgba(49,49,93,.1), 0 5px 15px 0 rgba(0,0,0,.08);
|
29 |
+
border-radius: 4px;
|
30 |
+
width: 140px;
|
31 |
+
margin-top: -17px;
|
32 |
+
padding: 10px 15px;
|
33 |
+
font-size: 14px;
|
34 |
+
opacity: 0;
|
35 |
+
pointer-events: none;
|
36 |
+
}
|
37 |
+
|
38 |
+
.if-menu-peek:hover::before {
|
39 |
+
animation: ifMenuFadeIn ease-in-out .2s forwards;
|
40 |
+
}
|
41 |
+
|
42 |
+
.if-menu-peek::after {
|
43 |
+
content: "";
|
44 |
+
position: absolute;
|
45 |
+
width: 20px;
|
46 |
+
height: 17px;
|
47 |
+
background: url(icon-visibility.svg);
|
48 |
+
color: rgb(80,169,47);
|
49 |
+
background-size: cover;
|
50 |
+
top: -14px;
|
51 |
+
right: -15px;
|
52 |
+
border-radius: 50%;
|
53 |
+
}
|
assets/if-menu.css
ADDED
@@ -0,0 +1,263 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
/* IF MENU global styles */
|
3 |
+
|
4 |
+
.if-menu-green {
|
5 |
+
color: #50a92f;
|
6 |
+
}
|
7 |
+
|
8 |
+
.if-menu-red {
|
9 |
+
color: #e04c4c;
|
10 |
+
}
|
11 |
+
|
12 |
+
.if-menu-purple {
|
13 |
+
color: #8b6cfb;
|
14 |
+
}
|
15 |
+
|
16 |
+
@keyframes ifMenufadeIn {
|
17 |
+
from {
|
18 |
+
opacity: 0;
|
19 |
+
transform: translate3d(0, -30%, 0);
|
20 |
+
}
|
21 |
+
to {
|
22 |
+
opacity: 1;
|
23 |
+
transform: translate3d(0, 0, 0);
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
.if-menu-dialog {
|
28 |
+
border-radius: 5px;
|
29 |
+
}
|
30 |
+
|
31 |
+
.if-menu-dialog .ui-dialog-titlebar {
|
32 |
+
border-radius: 5px 5px 0 0;
|
33 |
+
padding: 3rem 0;
|
34 |
+
background: url(plan-premium.png);
|
35 |
+
background-size: cover;
|
36 |
+
}
|
37 |
+
|
38 |
+
.if-menu-dialog .ui-dialog-titlebar-close {
|
39 |
+
color: #fff;
|
40 |
+
}
|
41 |
+
|
42 |
+
.if-menu-dialog .ui-dialog-title {
|
43 |
+
text-align: center;
|
44 |
+
display: block;
|
45 |
+
color: #fff;
|
46 |
+
font-size: 2rem;
|
47 |
+
text-shadow: 0px 0px 30px rgb(0, 0, 0);
|
48 |
+
}
|
49 |
+
|
50 |
+
.if-menu-help {
|
51 |
+
float: right;
|
52 |
+
}
|
53 |
+
|
54 |
+
.if-menu-help span {
|
55 |
+
text-decoration: none;
|
56 |
+
color: #c0c0c0;
|
57 |
+
}
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
/* IF MENU page */
|
62 |
+
|
63 |
+
.if-menu-wrap ul {
|
64 |
+
list-style: circle;
|
65 |
+
padding-left: 20px;
|
66 |
+
}
|
67 |
+
|
68 |
+
.if-menu-wrap .list li {
|
69 |
+
line-height: 1.4rem;
|
70 |
+
}
|
71 |
+
|
72 |
+
.if-menu-wrap .about-text {
|
73 |
+
margin-right: 0;
|
74 |
+
min-height: auto;
|
75 |
+
}
|
76 |
+
|
77 |
+
.if-menu-wrap .two-col,
|
78 |
+
.if-menu-wrap .three-col {
|
79 |
+
align-items: flex-start;
|
80 |
+
}
|
81 |
+
|
82 |
+
.if-menu-wrap .pricing-plan-section h3 {
|
83 |
+
margin-bottom: 2rem;
|
84 |
+
}
|
85 |
+
|
86 |
+
.if-menu-wrap .pricing-plan-section .price {
|
87 |
+
float: right;
|
88 |
+
font-size: 30px;
|
89 |
+
}
|
90 |
+
|
91 |
+
.if-menu-wrap .pricing-plan-section .price small {
|
92 |
+
color: #777;
|
93 |
+
}
|
94 |
+
|
95 |
+
.if-menu-wrap .pricing-plan-section .pricing-cell {
|
96 |
+
background: #f9f9f9;
|
97 |
+
border-radius: 0.5rem;
|
98 |
+
padding: 2rem;
|
99 |
+
border: 2px solid #f0f0f0;
|
100 |
+
box-shadow: 0px 2px 4px -2px rgba(0,0,0,0.15);
|
101 |
+
transition: 0.2s;
|
102 |
+
cursor: default;
|
103 |
+
}
|
104 |
+
|
105 |
+
.if-menu-wrap .pricing-plan-section .pricing-cell a {
|
106 |
+
text-decoration: none;
|
107 |
+
}
|
108 |
+
|
109 |
+
.if-menu-wrap .pricing-plan-section .pricing-cell:hover {
|
110 |
+
transform: translateY(-2px);
|
111 |
+
box-shadow: 0 12px 23px rgba(0,0,0,0.05);
|
112 |
+
}
|
113 |
+
|
114 |
+
.if-menu-wrap .pricing-plan-section .pricing-cell.selected {
|
115 |
+
border-color: #0073aa;
|
116 |
+
}
|
117 |
+
|
118 |
+
.if-menu-wrap .pricing-plan-section ul {
|
119 |
+
padding: 0;
|
120 |
+
}
|
121 |
+
|
122 |
+
.if-menu-wrap .pricing-plan-section li {
|
123 |
+
padding: 0.5rem 0 0.5rem 1.2rem;
|
124 |
+
border-bottom: 1px solid #efefef;
|
125 |
+
position: relative;
|
126 |
+
margin: 0;
|
127 |
+
list-style: none;
|
128 |
+
}
|
129 |
+
|
130 |
+
.if-menu-wrap .pricing-plan-section li:last-child {
|
131 |
+
border-bottom: 0;
|
132 |
+
}
|
133 |
+
|
134 |
+
.if-menu-wrap .pricing-plan-section li:before {
|
135 |
+
content: "✓";
|
136 |
+
position: absolute;
|
137 |
+
color: #0073aa;
|
138 |
+
left: 0;
|
139 |
+
}
|
140 |
+
|
141 |
+
.if-menu-wrap .pricing-plan-section ul ul {
|
142 |
+
margin-top: 0.5rem;
|
143 |
+
}
|
144 |
+
|
145 |
+
.if-menu-wrap .pricing-plan-section li li {
|
146 |
+
margin: 0;
|
147 |
+
border: 0;
|
148 |
+
padding-left: 1rem;
|
149 |
+
}
|
150 |
+
|
151 |
+
.if-menu-wrap .pricing-plan-section li li:before {
|
152 |
+
color: #cfcfcf;
|
153 |
+
content: "›";
|
154 |
+
}
|
155 |
+
|
156 |
+
.if-menu-wrap .pricing-plan-section p {
|
157 |
+
text-align: center;
|
158 |
+
margin: 1.5rem 0 0;
|
159 |
+
}
|
160 |
+
|
161 |
+
|
162 |
+
|
163 |
+
/* IF MENU APPEARANCE MENUS page */
|
164 |
+
|
165 |
+
.if-menu-conditions {
|
166 |
+
border-left: 1px solid #ddd;
|
167 |
+
clear: both;
|
168 |
+
overflow: hidden;
|
169 |
+
margin-left: 7px;
|
170 |
+
padding-left: 10px;
|
171 |
+
border-bottom-left-radius: 6px;
|
172 |
+
}
|
173 |
+
|
174 |
+
.if-menu-conditions .if-menu-condition {
|
175 |
+
position: relative;
|
176 |
+
padding: 3px 0px;
|
177 |
+
width: calc(100% - 14px);
|
178 |
+
color: #0d2b3e;
|
179 |
+
animation: ifMenufadeIn 0.2s ease-in-out both;
|
180 |
+
}
|
181 |
+
|
182 |
+
.if-menu-conditions .if-menu-condition-rule {
|
183 |
+
display: inline-block;
|
184 |
+
background: #f5f7f7;
|
185 |
+
border-radius: 5px;
|
186 |
+
}
|
187 |
+
|
188 |
+
.if-menu-conditions .if-menu-condition:before {
|
189 |
+
content: "";
|
190 |
+
position: absolute;
|
191 |
+
top: 10px;
|
192 |
+
left: -10px;
|
193 |
+
width: 0;
|
194 |
+
height: 0;
|
195 |
+
border-top: 5px solid transparent;
|
196 |
+
border-bottom: 5px solid transparent;
|
197 |
+
border-left: 5px solid #ddd;
|
198 |
+
}
|
199 |
+
|
200 |
+
.if-menu-condition select {
|
201 |
+
border: 0;
|
202 |
+
box-shadow: none;
|
203 |
+
background: transparent;
|
204 |
+
}
|
205 |
+
|
206 |
+
.if-menu-condition .select2-container--default .select2-selection--multiple {
|
207 |
+
background: #f5f7f7;
|
208 |
+
border: 0;
|
209 |
+
margin-top: 5px;
|
210 |
+
}
|
211 |
+
|
212 |
+
.if-menu-condition .select2-container--default.select2-container--focus .select2-selection--multiple {
|
213 |
+
background: #f5f7f7;
|
214 |
+
border: 0;
|
215 |
+
margin-top: 5px;
|
216 |
+
}
|
217 |
+
|
218 |
+
.if-menu-condition .select2-container--default .select2-search--inline .select2-search__field {
|
219 |
+
line-height: 22px;
|
220 |
+
}
|
221 |
+
|
222 |
+
.if-menu-condition .select2-container--default .select2-selection--multiple .select2-selection__choice {
|
223 |
+
color: #8b6cfb;
|
224 |
+
border: 0 !important;
|
225 |
+
line-height: 22px;
|
226 |
+
}
|
227 |
+
|
228 |
+
.select2-dropdown {
|
229 |
+
border-color: #f5f7f7;
|
230 |
+
}
|
231 |
+
|
232 |
+
.if-menu-condition .menu-item-if-menu-condition-type {
|
233 |
+
width: 60px;
|
234 |
+
color: #50a92f;
|
235 |
+
}
|
236 |
+
|
237 |
+
.if-menu-condition .menu-item-if-menu-condition-type[data-val="hide"] {
|
238 |
+
width: 60px;
|
239 |
+
color: #e04c4c;
|
240 |
+
}
|
241 |
+
|
242 |
+
.if-menu-condition .menu-item-if-menu-condition {
|
243 |
+
width: 225px;
|
244 |
+
color: #8b6cfb;
|
245 |
+
}
|
246 |
+
|
247 |
+
.if-menu-condition .menu-item-if-menu-enable-next {
|
248 |
+
width: 55px;
|
249 |
+
text-align-last: center;
|
250 |
+
color: #71aee6;
|
251 |
+
appearance: none;
|
252 |
+
-webkit-appearance: none;
|
253 |
+
background: #f5f7f7;
|
254 |
+
border-radius: 5px;
|
255 |
+
}
|
256 |
+
|
257 |
+
.if-menu-condition .menu-item-if-menu-enable-next::-ms-expand {
|
258 |
+
display: none;
|
259 |
+
}
|
260 |
+
|
261 |
+
.if-menu-condition .menu-item-if-menu-enable-next option {
|
262 |
+
direction: rtl;
|
263 |
+
}
|
assets/if-menu.js
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(function($) {
|
2 |
+
|
3 |
+
|
4 |
+
// Show or hide conditions section
|
5 |
+
$('body').on('change', '.menu-item-if-menu-enable', function() {
|
6 |
+
$( this ).closest( '.if-menu-enable' ).next().toggle( $( this ).prop( 'checked' ) );
|
7 |
+
|
8 |
+
if ( ! $( this ).prop( 'checked' ) ) {
|
9 |
+
var firstCondition = $( this ).closest( '.if-menu-enable' ).next().find('p:first');
|
10 |
+
firstCondition.find('.menu-item-if-menu-enable-next').val('false');
|
11 |
+
firstCondition.nextAll().remove();
|
12 |
+
}
|
13 |
+
});
|
14 |
+
|
15 |
+
|
16 |
+
// Show or hide conditions section for multiple rules
|
17 |
+
$('body').on( 'change', '.menu-item-if-menu-enable-next', function() {
|
18 |
+
var elCondition = $( this ).closest( '.if-menu-condition' );
|
19 |
+
|
20 |
+
if ($(this).val() === 'false') {
|
21 |
+
elCondition.nextAll().remove();
|
22 |
+
} else if (!elCondition.next().length) {
|
23 |
+
var newCondition = elCondition.clone().appendTo(elCondition.parent());
|
24 |
+
newCondition.find('select').removeAttr('data-val').find('option:selected').removeAttr('selected');
|
25 |
+
newCondition.find('.menu-item-if-menu-options, .select2').remove();
|
26 |
+
}
|
27 |
+
});
|
28 |
+
|
29 |
+
|
30 |
+
// Check if menu extra fields are actually displayed
|
31 |
+
if ($('#menu-to-edit li').length !== $('#menu-to-edit li .if-menu-enable').length) {
|
32 |
+
$('<div class="notice error is-dismissible if-menu-notice"><p>' + IfMenu.conflictErrorMessage + '</p></div>').insertAfter('.wp-header-end');
|
33 |
+
}
|
34 |
+
|
35 |
+
|
36 |
+
// Store current value in data-val attribute (used for CSS styling)
|
37 |
+
$('body').on('change', '.menu-item-if-menu-condition-type', function() {
|
38 |
+
$(this).attr('data-val', $(this).val());
|
39 |
+
});
|
40 |
+
|
41 |
+
|
42 |
+
// Display multiple options
|
43 |
+
$('.menu-item-if-menu-options').select2();
|
44 |
+
$('body').on('change', '.menu-item-if-menu-condition', function() {
|
45 |
+
var options = $(this).find('option:selected').data('options'),
|
46 |
+
elCondition = $(this).closest('.if-menu-condition');
|
47 |
+
|
48 |
+
elCondition.find('.menu-item-if-menu-options').select2('destroy').remove();
|
49 |
+
|
50 |
+
if (options && !!IfMenu.plan && IfMenu.plan.plan === 'premium') {
|
51 |
+
$('<select class="menu-item-if-menu-options" name="menu-item-if-menu-options[' + elCondition.data('menu-item-id') + '][' + elCondition.index() + '][]" style="width: 305px" multiple></select>')
|
52 |
+
.appendTo(elCondition)
|
53 |
+
.select2({data: $.map(options, function(value, index) {
|
54 |
+
return {
|
55 |
+
id: index,
|
56 |
+
text: value
|
57 |
+
};
|
58 |
+
})});
|
59 |
+
} else if (options && (!IfMenu.plan || IfMenu.plan.plan !== 'premium')) {
|
60 |
+
$(this).find(':selected').removeAttr('selected');
|
61 |
+
$(this).find(':first').attr('selected', true);
|
62 |
+
$('.if-menu-dialog-premium').dialog({
|
63 |
+
dialogClass: 'if-menu-dialog',
|
64 |
+
draggable: false,
|
65 |
+
modal: true,
|
66 |
+
width: 450,
|
67 |
+
open: function(event, ui) {
|
68 |
+
console.log(event);
|
69 |
+
console.log(ui);
|
70 |
+
}
|
71 |
+
});
|
72 |
+
}
|
73 |
+
});
|
74 |
+
|
75 |
+
|
76 |
+
// Store current value in data-val attribute (used for CSS styling)
|
77 |
+
$('.if-menu-dialog-btn').click(function() {
|
78 |
+
if ($(this).data('action') === 'get-premium') {
|
79 |
+
window.onbeforeunload = function() {};
|
80 |
+
}
|
81 |
+
|
82 |
+
$(this).closest('.ui-dialog-content').dialog('close');
|
83 |
+
});
|
84 |
+
|
85 |
+
|
86 |
+
});
|
assets/plan-premium.png
ADDED
Binary file
|
assets/select2.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
|
assets/select2.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()});b.$results.find(".select2-results__option[aria-selected]").each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):h-g<0&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");if("true"===c.attr("aria-selected"))return void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{}));d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2");a(".select2.select2-container--open").each(function(){var b=a(this);this!=d[0]&&b.data("element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">×</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var b=e.$searchContainer.prev(".select2-selection__choice");if(b.length>0){var d=b.data("data");e.searchRemoveChoice(d),a.preventDefault()}}});var f=document.documentMode,g=f&&f<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(g)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),void 0!==a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(null!=(b=c.data(a[0],"data")))return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
|
conditions.php
DELETED
@@ -1,83 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
add_filter( 'if_menu_conditions', 'if_menu_basic_conditions' );
|
4 |
-
|
5 |
-
function if_menu_basic_conditions( $conditions ) {
|
6 |
-
|
7 |
-
$conditions[] = array(
|
8 |
-
'name' => __( 'User is logged in', 'if-menu' ),
|
9 |
-
'condition' => 'is_user_logged_in'
|
10 |
-
);
|
11 |
-
|
12 |
-
$conditions[] = array(
|
13 |
-
'name' => __( 'User is Admin', 'if-menu' ),
|
14 |
-
'condition' => 'if_menu_basic_condition_admin'
|
15 |
-
);
|
16 |
-
|
17 |
-
$conditions[] = array(
|
18 |
-
'name' => __( 'User is Editor', 'if-menu' ),
|
19 |
-
'condition' => 'if_menu_basic_condition_editor'
|
20 |
-
);
|
21 |
-
|
22 |
-
$conditions[] = array(
|
23 |
-
'name' => __( 'User is Subscriber', 'if-menu' ),
|
24 |
-
'condition' => 'if_menu_basic_condition_subscriber'
|
25 |
-
);
|
26 |
-
|
27 |
-
$conditions[] = array(
|
28 |
-
'name' => __( 'User is Author', 'if-menu' ),
|
29 |
-
'condition' => 'if_menu_basic_condition_author'
|
30 |
-
);
|
31 |
-
|
32 |
-
$conditions[] = array(
|
33 |
-
'name' => __( 'User is Contributor', 'if-menu' ),
|
34 |
-
'condition' => 'if_menu_basic_condition_contributor'
|
35 |
-
);
|
36 |
-
|
37 |
-
$conditions[] = array(
|
38 |
-
'name' => __( 'Front Page', 'if-menu' ),
|
39 |
-
'condition' => 'is_front_page'
|
40 |
-
);
|
41 |
-
|
42 |
-
$conditions[] = array(
|
43 |
-
'name' => __( 'Single Post', 'if-menu' ),
|
44 |
-
'condition' => 'is_single'
|
45 |
-
);
|
46 |
-
|
47 |
-
$conditions[] = array(
|
48 |
-
'name' => __( 'Page', 'if-menu' ),
|
49 |
-
'condition' => 'is_page'
|
50 |
-
);
|
51 |
-
|
52 |
-
return $conditions;
|
53 |
-
}
|
54 |
-
|
55 |
-
function if_menu_basic_condition_admin() {
|
56 |
-
global $current_user;
|
57 |
-
if( is_user_logged_in() ) return in_array( 'administrator', $current_user->roles );
|
58 |
-
return false;
|
59 |
-
}
|
60 |
-
|
61 |
-
function if_menu_basic_condition_editor() {
|
62 |
-
global $current_user;
|
63 |
-
if( is_user_logged_in() ) foreach( array( 'administrator', 'editor' ) as $role ) if( in_array( $role, $current_user->roles ) ) return true;
|
64 |
-
return false;
|
65 |
-
}
|
66 |
-
|
67 |
-
function if_menu_basic_condition_author() {
|
68 |
-
global $current_user;
|
69 |
-
if( is_user_logged_in() ) foreach( array( 'administrator', 'editor', 'author' ) as $role ) if( in_array( $role, $current_user->roles ) ) return true;
|
70 |
-
return false;
|
71 |
-
}
|
72 |
-
|
73 |
-
function if_menu_basic_condition_contributor() {
|
74 |
-
global $current_user;
|
75 |
-
if( is_user_logged_in() ) foreach( array( 'administrator', 'editor', 'author', 'contributor' ) as $role ) if( in_array( $role, $current_user->roles ) ) return true;
|
76 |
-
return false;
|
77 |
-
}
|
78 |
-
|
79 |
-
function if_menu_basic_condition_subscriber() {
|
80 |
-
global $current_user;
|
81 |
-
if( is_user_logged_in() ) foreach( array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ) as $role ) if( in_array( $role, $current_user->roles ) ) return true;
|
82 |
-
return false;
|
83 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if-menu.js
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
jQuery( function( $ ) {
|
2 |
-
|
3 |
-
$( 'body' ).on( 'change', '.menu-item-if-menu-enable', function() {
|
4 |
-
$( this ).closest( '.if-menu-enable' ).next().toggle( $( this ).prop( 'checked' ) );
|
5 |
-
} );
|
6 |
-
|
7 |
-
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if-menu.php
CHANGED
@@ -1,179 +1,500 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Plugin Name: If Menu
|
4 |
-
Plugin URI:
|
5 |
-
Description:
|
6 |
-
Version: 0.
|
7 |
-
|
8 |
-
Author
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
add_action(
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
}
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: If Menu
|
4 |
+
Plugin URI: https://wordpress.org/plugins/if-menu/
|
5 |
+
Description: Display tailored menu items to each visitor with visibility rules
|
6 |
+
Version: 0.8.3
|
7 |
+
Text Domain: if-menu
|
8 |
+
Author: Layered
|
9 |
+
Author URI: https://layered.studio
|
10 |
+
License: GPL2
|
11 |
+
*/
|
12 |
+
|
13 |
+
/* Copyright 2012 Andrei Igna (email: andrei@rokm.ro)
|
14 |
+
|
15 |
+
This program is free software; you can redistribute it and/or modify
|
16 |
+
it under the terms of the GNU General Public License, version 2, as
|
17 |
+
published by the Free Software Foundation.
|
18 |
+
|
19 |
+
This program is distributed in the hope that it will be useful,
|
20 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
21 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
22 |
+
GNU General Public License for more details.
|
23 |
+
|
24 |
+
You should have received a copy of the GNU General Public License
|
25 |
+
along with this program; if not, write to the Free Software
|
26 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
27 |
+
*/
|
28 |
+
|
29 |
+
|
30 |
+
class If_Menu {
|
31 |
+
|
32 |
+
public static function init() {
|
33 |
+
global $pagenow;
|
34 |
+
|
35 |
+
load_plugin_textdomain('if-menu', false, dirname(plugin_basename(__FILE__)) . '/languages');
|
36 |
+
|
37 |
+
add_action('rest_api_init', 'If_Menu::restApi');
|
38 |
+
|
39 |
+
if (is_admin()) {
|
40 |
+
add_action('admin_enqueue_scripts', 'If_Menu::admin_init');
|
41 |
+
add_action('wp_update_nav_menu_item', 'If_Menu::wp_update_nav_menu_item', 10, 2);
|
42 |
+
add_filter('wp_edit_nav_menu_walker', 'If_Menu::customWalker', 500);
|
43 |
+
add_action('wp_nav_menu_item_custom_fields', 'If_Menu::menu_item_fields');
|
44 |
+
add_action('wp_nav_menu_item_custom_title', 'If_Menu::menu_item_title');
|
45 |
+
add_action('init', 'If_Menu::saveSettings');
|
46 |
+
add_action('admin_footer', 'If_Menu::adminFooter');
|
47 |
+
add_action('admin_menu', function() {
|
48 |
+
add_submenu_page('themes.php', 'If Menu', 'If Menu', 'edit_theme_options', 'if-menu', 'If_Menu::page');
|
49 |
+
});
|
50 |
+
|
51 |
+
if ($pagenow !== 'nav-menus.php') {
|
52 |
+
add_filter( 'wp_get_nav_menu_items', 'If_Menu::wp_get_nav_menu_items' );
|
53 |
+
}
|
54 |
+
} else {
|
55 |
+
add_filter( 'wp_get_nav_menu_items', 'If_Menu::wp_get_nav_menu_items' );
|
56 |
+
add_action('wp_enqueue_scripts', 'If_Menu::addAssets');
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
public static function get_conditions( $for_testing = false ) {
|
61 |
+
$conditions = apply_filters( 'if_menu_conditions', array() );
|
62 |
+
|
63 |
+
if ($for_testing) {
|
64 |
+
$c2 = array();
|
65 |
+
foreach ($conditions as $condition) {
|
66 |
+
$c2[$condition['id']] = $condition;
|
67 |
+
$c2[$condition['name']] = $condition;
|
68 |
+
if (isset($condition['alias'])) {
|
69 |
+
$c2[$condition['alias']] = $condition;
|
70 |
+
}
|
71 |
+
}
|
72 |
+
$conditions = $c2;
|
73 |
+
}
|
74 |
+
|
75 |
+
return $conditions;
|
76 |
+
}
|
77 |
+
|
78 |
+
public static function wp_get_nav_menu_items($items) {
|
79 |
+
$conditions = If_Menu::get_conditions($for_testing = true);
|
80 |
+
$hidden_items = array();
|
81 |
+
|
82 |
+
$canPeek = is_user_logged_in() && get_option('if-menu-peak') && current_user_can('edit_theme_options');
|
83 |
+
|
84 |
+
foreach ($items as $key => $item) {
|
85 |
+
|
86 |
+
if (in_array($item->menu_item_parent, $hidden_items)) {
|
87 |
+
if ($canPeek) {
|
88 |
+
$item->classes[] = 'if-menu-peek';
|
89 |
+
} else {
|
90 |
+
unset($items[$key]);
|
91 |
+
}
|
92 |
+
$hidden_items[] = $item->ID;
|
93 |
+
} else {
|
94 |
+
$enabled = get_post_meta($item->ID, 'if_menu_enable');
|
95 |
+
|
96 |
+
if ($enabled && $enabled[0] !== '0') {
|
97 |
+
$if_condition_types = get_post_meta($item->ID, 'if_menu_condition_type');
|
98 |
+
$if_conditions = get_post_meta($item->ID, 'if_menu_condition');
|
99 |
+
$ifMenuOptions = get_post_meta($item->ID, 'if_menu_options');
|
100 |
+
|
101 |
+
$eval = array();
|
102 |
+
|
103 |
+
foreach ($enabled as $index => $operator) {
|
104 |
+
$singleCondition = '';
|
105 |
+
|
106 |
+
if ($index) {
|
107 |
+
$singleCondition .= $operator . ' ';
|
108 |
+
}
|
109 |
+
|
110 |
+
$bit1 = $if_condition_types[$index] === 'show' ? 1 : 0;
|
111 |
+
$bit2 = $if_condition_types[$index] === 'show' ? 0 : 1;
|
112 |
+
|
113 |
+
$params = array($item);
|
114 |
+
|
115 |
+
if ($ifMenuOptions && isset($ifMenuOptions[$index])) {
|
116 |
+
$params[] = $ifMenuOptions[$index];
|
117 |
+
}
|
118 |
+
|
119 |
+
$singleCondition .= call_user_func_array($conditions[$if_conditions[$index]]['condition'], $params) ? $bit1 : $bit2;
|
120 |
+
|
121 |
+
$eval[] = $singleCondition;
|
122 |
+
}
|
123 |
+
|
124 |
+
if ((count($eval) === 1 && $eval[0] == 0) || (count($eval) > 1 && !eval('return ' . implode(' ', $eval) . ';'))) {
|
125 |
+
if ($canPeek) {
|
126 |
+
$item->classes[] = 'if-menu-peek';
|
127 |
+
} else {
|
128 |
+
unset($items[$key]);
|
129 |
+
}
|
130 |
+
$hidden_items[] = $item->ID;
|
131 |
+
}
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
return $items;
|
137 |
+
}
|
138 |
+
|
139 |
+
public static function admin_init() {
|
140 |
+
global $pagenow;
|
141 |
+
|
142 |
+
if ($pagenow == 'nav-menus.php') {
|
143 |
+
wp_enqueue_script('select2', plugins_url('assets/select2.min.js', __FILE__), array('jquery'), '4.0.5');
|
144 |
+
wp_enqueue_script('if-menu', plugins_url('assets/if-menu.js', __FILE__), array('select2', 'jquery-ui-dialog'), '0.8');
|
145 |
+
|
146 |
+
wp_enqueue_style('select2', plugins_url('assets/select2.min.css', __FILE__), array(), '4.0.5');
|
147 |
+
wp_enqueue_style('if-menu', plugins_url('assets/if-menu.css', __FILE__), array('wp-jquery-ui-dialog'), '0.8');
|
148 |
+
|
149 |
+
wp_localize_script('if-menu', 'IfMenu', array(
|
150 |
+
'plan' => self::getPlan(),
|
151 |
+
'conflictErrorMessage' => sprintf(
|
152 |
+
wp_kses(
|
153 |
+
__('<strong>If Menu</strong> detected a conflict with another plugin or theme (%s) and may not work as expected. <a href="%s" target="_blank">Read more about the issue here</a>', 'if-menu'),
|
154 |
+
array('a' => array('href' => array()), 'strong' => array())
|
155 |
+
),
|
156 |
+
apply_filters('wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit'),
|
157 |
+
esc_url('https://wordpress.org/plugins/if-menu/faq/')
|
158 |
+
)
|
159 |
+
));
|
160 |
+
}
|
161 |
+
|
162 |
+
if ($pagenow == 'themes.php') {
|
163 |
+
wp_enqueue_style('if-menu', plugins_url('assets/if-menu.css', __FILE__), '0.8');
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
public static function saveSettings() {
|
168 |
+
global $pagenow;
|
169 |
+
|
170 |
+
if ($pagenow == 'themes.php' && isset($_POST['if-menu-settings'])) {
|
171 |
+
update_option('if-menu-peak', $_POST['if-menu-peek']);
|
172 |
+
}
|
173 |
+
}
|
174 |
+
|
175 |
+
public static function adminFooter() {
|
176 |
+
?>
|
177 |
+
<div class="if-menu-dialog-premium hidden" title="<?php _e('That\'s a Premium feature', 'if-menu') ?>">
|
178 |
+
<p><?php _e('Get <strong>If Menu Premium</strong> plan to enable integrations with third-party plugins, user location detection and priority support', 'if-menu') ?></p><br>
|
179 |
+
<p>
|
180 |
+
<a href="<?php echo admin_url('themes.php?page=if-menu') ?>" class="button button-primary pull-right if-menu-dialog-btn" data-action="get-premium"><?php _e('Get If Menu Premium', 'if-menu') ?></a>
|
181 |
+
<button class="button close if-menu-dialog-btn" data-action="close"><?php _e('Use Basic plan', 'if-menu') ?></button>
|
182 |
+
</p>
|
183 |
+
</div>
|
184 |
+
<?php
|
185 |
+
}
|
186 |
+
|
187 |
+
public static function page() {
|
188 |
+
$ifMenuPeek = get_option('if-menu-peak');
|
189 |
+
$plan = self::getPlan();
|
190 |
+
?>
|
191 |
+
|
192 |
+
<div class="wrap about-wrap if-menu-wrap">
|
193 |
+
<h1>If Menu</h1>
|
194 |
+
<p class="about-text"><?php _e('Thanks for using <strong>If Menu</strong>! Now you can display tailored menu items to each visitor, based on visibility rules. Here are a few examples:', 'if-menu') ?></p>
|
195 |
+
<ul class="list">
|
196 |
+
<li><?php _e('Hide Login or Register links for logged-in users:', 'if-menu') ?> <code><span class="if-menu-red"><?php _e('Hide', 'if-menu') ?></span> <?php _e('if', 'if-menu') ?> <span class="if-menu-purple"><?php _e('User is logged in', 'if-menu') ?></span></code></li>
|
197 |
+
<li><?php _e('Display Logout link for logged-in users:', 'if-menu') ?> <code><span class="if-menu-green"><?php _e('Show', 'if-menu') ?></span> <?php _e('if', 'if-menu') ?> <span class="if-menu-purple"><?php _e('User is logged in', 'if-menu') ?></span></code></li>
|
198 |
+
<li><?php _e('Hide menu item on mobile devices:', 'if-menu') ?> <code><span class="if-menu-red"><?php _e('Hide', 'if-menu') ?></span> <?php _e('if', 'if-menu') ?> <span class="if-menu-purple"><?php _e('Mobile', 'if-menu') ?></span></code></li>
|
199 |
+
<li><?php _e('Display menu item for users in US and UK:', 'if-menu') ?> <code><span class="if-menu-green"><?php _e('Show', 'if-menu') ?></span> <?php _e('if', 'if-menu') ?> <span class="if-menu-purple"><?php _e('User from country: US, UK', 'if-menu') ?></span></code></li>
|
200 |
+
</ul>
|
201 |
+
<hr class="wp-header-end">
|
202 |
+
|
203 |
+
<div class="feature-section pricing-plan-section two-col">
|
204 |
+
<div class="col">
|
205 |
+
<div class="pricing-cell <?php if (!$plan || $plan['plan'] == 'free') echo 'selected' ?>">
|
206 |
+
<span class="price"><small><?php _e('Free', 'if-menu') ?></small></span>
|
207 |
+
<h3><?php _e('Basic', 'if-menu') ?></h3>
|
208 |
+
|
209 |
+
<ul>
|
210 |
+
<li>
|
211 |
+
<?php _e('Basic visibility rules:', 'if-menu') ?>
|
212 |
+
<ul>
|
213 |
+
<li><?php _e('User role - is Admin, Editor, Author or Shop Manager', 'if-menu') ?></li>
|
214 |
+
<li><?php _e('User state - visitor is logged in or out', 'if-menu') ?></li>
|
215 |
+
<li><?php _e('Visitor device - detect mobile or desktop', 'if-menu') ?></li>
|
216 |
+
</ul>
|
217 |
+
</li>
|
218 |
+
<li><?php _e('Support on WordPress forum', 'if-menu') ?></li>
|
219 |
+
</ul>
|
220 |
+
|
221 |
+
<p>
|
222 |
+
<?php if (!$plan || $plan['plan'] == 'free') : ?>
|
223 |
+
<button class="button disabled"><?php _e('Current plan', 'if-menu') ?></button>
|
224 |
+
<?php endif ?>
|
225 |
+
</p>
|
226 |
+
</div>
|
227 |
+
</div>
|
228 |
+
|
229 |
+
<div class="col">
|
230 |
+
<div class="pricing-cell <?php if ($plan && $plan['plan'] == 'premium') echo 'selected' ?>">
|
231 |
+
<span class="price">$15<small>/<?php _e('annually', 'if-menu') ?></small></span>
|
232 |
+
<h3><?php _e('Premium', 'if-menu') ?></h3>
|
233 |
+
|
234 |
+
<ul>
|
235 |
+
<li>
|
236 |
+
<?php _e('Advanced visibility rules:', 'if-menu') ?>
|
237 |
+
<ul>
|
238 |
+
<li><?php _e('Visitor location - detect visitor\'s country', 'if-menu') ?></li>
|
239 |
+
</ul>
|
240 |
+
</li>
|
241 |
+
<li>
|
242 |
+
<?php _e('3rd-party plugin integrations:', 'if-menu') ?>
|
243 |
+
<ul>
|
244 |
+
<li><a href="https://woocommerce.com/products/woocommerce-subscriptions" target="_blank">WooCommerce Subscriptions</a> - <?php _e('Customer has active subscription', 'if-menu') ?></li>
|
245 |
+
<li><a href="https://wordpress.org/plugins/groups" target="_blank">Groups</a> - <?php _e('Users are in a Group', 'if-menu') ?></li>
|
246 |
+
<li><a href="https://member.wishlistproducts.com" target="_blank">WishList Member</a> - <?php _e('Users above a Membership Level', 'if-menu') ?></li>
|
247 |
+
</ul>
|
248 |
+
</li>
|
249 |
+
<li><?php _e('Priority support', 'if-menu') ?></li>
|
250 |
+
</ul>
|
251 |
+
|
252 |
+
<p class="description">
|
253 |
+
<?php if ($plan && $plan['plan'] == 'premium') : ?>
|
254 |
+
<button class="button disabled"><?php _e('Current plan', 'if-menu') ?></button>
|
255 |
+
<br><br><small class="text-muted"><?php printf(__('Active until %s', 'if-menu'), date(get_option('date_format'), strtotime($plan['until']))) ?></small>
|
256 |
+
<?php else : ?>
|
257 |
+
<a href="https://wordpress.layered.studio/get-premium?site=<?php echo urlencode(site_url()) ?>&_nonce=<?php echo self::apiNonce('get-premium') ?>" class="button button-primary"><?php _e('Get premium', 'if-menu') ?></a>
|
258 |
+
<?php endif ?>
|
259 |
+
</p>
|
260 |
+
</div>
|
261 |
+
</div>
|
262 |
+
</div>
|
263 |
+
|
264 |
+
<hr>
|
265 |
+
|
266 |
+
<h3 class="title"><?php _e('Settings', 'if-menu') ?></h3>
|
267 |
+
|
268 |
+
<form method="post" action="">
|
269 |
+
<table class="form-table">
|
270 |
+
<tbody>
|
271 |
+
<tr>
|
272 |
+
<th scope="row"><?php _e('If Menu peek', 'if-menu') ?></th>
|
273 |
+
<td>
|
274 |
+
<fieldset>
|
275 |
+
<label><input type="checkbox" name="if-menu-peek" value="1" <?php checked($ifMenuPeek, 1) ?>> <?php _e('Enable If Menu peek', 'if-menu') ?></label><br>
|
276 |
+
</fieldset>
|
277 |
+
<p class="description"><?php _e('Let administrators preview hidden menu items on website (useful for testing)', 'if-menu') ?></p>
|
278 |
+
</td>
|
279 |
+
</tr>
|
280 |
+
<tr>
|
281 |
+
<th scope="row"></th>
|
282 |
+
<td>
|
283 |
+
<p class="submit"><input type="submit" name="if-menu-settings" id="submit" class="button button-primary" value="<?php _e('Save Changes', 'if-menu') ?>"></p>
|
284 |
+
</td>
|
285 |
+
</tr>
|
286 |
+
</tbody>
|
287 |
+
</table>
|
288 |
+
</form>
|
289 |
+
|
290 |
+
<hr>
|
291 |
+
|
292 |
+
<p class="text-right">
|
293 |
+
<strong>If Menu</strong>:
|
294 |
+
<a href="https://wordpress.org/plugins/if-menu/#faq" target="wpplugins"><?php _e('FAQs', 'if-menu') ?></a> ·
|
295 |
+
<a href="https://wordpress.org/plugins/if-menu/#reviews" target="wpplugins"><?php _e('Reviews', 'if-menu') ?></a> ·
|
296 |
+
<a href="https://wordpress.org/support/plugin/if-menu" target="wpplugins"><?php _e('Support', 'if-menu') ?></a>
|
297 |
+
</p>
|
298 |
+
|
299 |
+
</div>
|
300 |
+
|
301 |
+
<?php
|
302 |
+
}
|
303 |
+
|
304 |
+
public static function addAssets() {
|
305 |
+
wp_enqueue_style('if-menu-site-css', plugins_url('assets/if-menu-site.css', __FILE__));
|
306 |
+
}
|
307 |
+
|
308 |
+
public static function menu_item_fields($item_id) {
|
309 |
+
$conditions = If_Menu::get_conditions();
|
310 |
+
$if_menu_enable = get_post_meta( $item_id, 'if_menu_enable' );
|
311 |
+
$if_menu_condition_type = get_post_meta( $item_id, 'if_menu_condition_type' );
|
312 |
+
$if_menu_condition = get_post_meta( $item_id, 'if_menu_condition' );
|
313 |
+
$ifMenuOptions = get_post_meta($item_id, 'if_menu_options');
|
314 |
+
|
315 |
+
if (!count($if_menu_enable)) {
|
316 |
+
$if_menu_enable[] = 0;
|
317 |
+
$if_menu_condition_type[] = '';
|
318 |
+
$if_menu_condition[] = '';
|
319 |
+
}
|
320 |
+
|
321 |
+
$groupedConditions = array();
|
322 |
+
foreach ($conditions as $condition) {
|
323 |
+
$groupedConditions[isset($condition['group']) ? $condition['group'] : 'Custom'][] = $condition;
|
324 |
+
}
|
325 |
+
?>
|
326 |
+
|
327 |
+
<p class="if-menu-enable description description-wide">
|
328 |
+
<a href="<?php echo admin_url('themes.php?page=if-menu') ?>" class="if-menu-help" title="<?php esc_attr_e('Visibility rule examples', 'if-menu') ?>"><span class="dashicons dashicons-editor-help"></span></a>
|
329 |
+
<label>
|
330 |
+
<input <?php if (isset($if_menu_enable[0])) checked( $if_menu_enable[0], 1 ) ?> type="checkbox" value="1" class="menu-item-if-menu-enable" name="menu-item-if-menu-enable[<?php echo esc_attr( $item_id ); ?>][]" />
|
331 |
+
<?php esc_html_e( 'Change menu item visibility', 'if-menu' ) ?>
|
332 |
+
</label>
|
333 |
+
</p>
|
334 |
+
|
335 |
+
<div class="if-menu-conditions" style="display: <?php echo $if_menu_enable[0] ? 'block' : 'none' ?>">
|
336 |
+
<?php for ($index = 0; $index < count($if_menu_enable); $index++) : ?>
|
337 |
+
|
338 |
+
<p class="if-menu-condition description description-wide" data-menu-item-id="<?php echo $item_id ?>">
|
339 |
+
<?php
|
340 |
+
$selectedCondition = null;
|
341 |
+
?>
|
342 |
+
<span class="if-menu-condition-rule">
|
343 |
+
<select class="menu-item-if-menu-condition-type" id="edit-menu-item-if-menu-condition-type-<?php echo esc_attr( $item_id ); ?>" name="menu-item-if-menu-condition-type[<?php echo esc_html( $item_id ); ?>][]" data-val="<?php echo esc_html($if_menu_condition_type[$index]) ?>">
|
344 |
+
<option <?php selected( 'show', $if_menu_condition_type[$index] ) ?> value="show"><?php esc_html_e( 'Show', 'if-menu' ) ?></option>
|
345 |
+
<option <?php selected( 'hide', $if_menu_condition_type[$index] ) ?> value="hide"><?php esc_html_e( 'Hide', 'if-menu' ) ?></option>
|
346 |
+
</select>
|
347 |
+
<?php esc_html_e( 'if', 'if-menu' ); ?>
|
348 |
+
<select class="menu-item-if-menu-condition" id="edit-menu-item-if-menu-condition-<?php echo esc_attr( $item_id ); ?>" name="menu-item-if-menu-condition[<?php echo esc_attr( $item_id ); ?>][]">
|
349 |
+
<?php foreach ($groupedConditions as $group => $conditions) : ?>
|
350 |
+
<optgroup label="<?php echo esc_attr($group) ?>">
|
351 |
+
<?php foreach($conditions as $condition) : ?>
|
352 |
+
<?php
|
353 |
+
if ($condition['id'] === $if_menu_condition[$index]) {
|
354 |
+
$selectedCondition = $condition;
|
355 |
+
}
|
356 |
+
?>
|
357 |
+
<option value="<?php echo $condition['id'] ?>" <?php selected($condition['id'], $if_menu_condition[$index]) ?> <?php selected($condition['name'], $if_menu_condition[$index]) ?> data-options='<?php if (isset($condition['options'])) echo json_encode($condition['options']) ?>'><?php echo esc_html($condition['name']) . (isset($condition['options']) ? ' »' : '') ?></option>
|
358 |
+
<?php endforeach ?>
|
359 |
+
</optgroup>
|
360 |
+
<?php endforeach ?>
|
361 |
+
</select>
|
362 |
+
</span>
|
363 |
+
<select class="menu-item-if-menu-enable-next" name="menu-item-if-menu-enable[<?php echo esc_attr( $item_id ); ?>][]">
|
364 |
+
<option value="false">+</option>
|
365 |
+
<option value="and" <?php if (isset($if_menu_enable[$index + 1])) selected( 'and', $if_menu_enable[$index + 1] ) ?>><?php esc_html_e( 'AND', 'if-menu' ) ?></option>
|
366 |
+
<option value="or" <?php if (isset($if_menu_enable[$index + 1])) selected( 'or', $if_menu_enable[$index + 1] ) ?>><?php esc_html_e( 'OR', 'if-menu' ) ?></option>-->
|
367 |
+
</select>
|
368 |
+
<?php if (isset($selectedCondition['options'])) : ?>
|
369 |
+
<select class="menu-item-if-menu-options" name="menu-item-if-menu-options[<?php echo esc_attr($item_id) ?>][<?php echo esc_attr($index) ?>][]" style="width: 305px" multiple>
|
370 |
+
<?php foreach ($selectedCondition['options'] as $value => $label) : ?>
|
371 |
+
<option value="<?php echo esc_attr($value) ?>" <?php if (in_array($value, $ifMenuOptions[$index])) echo 'selected' ?>><?php echo $label ?></option>
|
372 |
+
<?php endforeach ?>
|
373 |
+
</select>
|
374 |
+
<?php endif ?>
|
375 |
+
</p>
|
376 |
+
|
377 |
+
<?php endfor ?>
|
378 |
+
</div>
|
379 |
+
|
380 |
+
<?php
|
381 |
+
}
|
382 |
+
|
383 |
+
public static function menu_item_title( $item_id ) {
|
384 |
+
$if_menu_enabled = get_post_meta( $item_id, 'if_menu_enable' );
|
385 |
+
|
386 |
+
if ( count( $if_menu_enabled ) && $if_menu_enabled[0] !== '0' ) {
|
387 |
+
$conditionTypes = get_post_meta( $item_id, 'if_menu_condition_type' );
|
388 |
+
$conditions = get_post_meta( $item_id, 'if_menu_condition' );
|
389 |
+
$rules = If_Menu::get_conditions($for_testing = true);
|
390 |
+
|
391 |
+
if ( $conditionTypes[0] === 'show' ) {
|
392 |
+
$conditionTypes[0] = '';
|
393 |
+
}
|
394 |
+
|
395 |
+
echo '<span class="is-submenu">';
|
396 |
+
printf( __( '%s if %s', 'if-menu' ), $conditionTypes[0], $rules[$conditions[0]]['name'] );
|
397 |
+
if ( count( $if_menu_enabled ) > 1 ) {
|
398 |
+
printf( ' ' . _n( 'and %d more rule', 'and %d more rules', count( $if_menu_enabled ) - 1, 'if-menu' ), count( $if_menu_enabled ) - 1 );
|
399 |
+
}
|
400 |
+
echo '</span>';
|
401 |
+
}
|
402 |
+
}
|
403 |
+
|
404 |
+
public static function customWalker($walker) {
|
405 |
+
global $wp_version;
|
406 |
+
|
407 |
+
if (version_compare( $wp_version, '4.7.0', '>=')) {
|
408 |
+
require_once(plugin_dir_path(__FILE__) . 'src/if-menu-nav-menu-4.7.php');
|
409 |
+
} elseif ( version_compare( $wp_version, '4.5.0', '>=' ) ){
|
410 |
+
require_once(plugin_dir_path(__FILE__) . 'src/if-menu-nav-menu-4.5.php');
|
411 |
+
} else {
|
412 |
+
require_once(plugin_dir_path(__FILE__) . 'src/if-menu-nav-menu.php');
|
413 |
+
}
|
414 |
+
|
415 |
+
return 'If_Menu_Walker_Nav_Menu_Edit';
|
416 |
+
}
|
417 |
+
|
418 |
+
public static function wp_update_nav_menu_item( $menu_id, $menu_item_db_id ) {
|
419 |
+
if (isset($_POST['menu-item-if-menu-enable'])) {
|
420 |
+
|
421 |
+
delete_post_meta($menu_item_db_id, 'if_menu_enable');
|
422 |
+
delete_post_meta($menu_item_db_id, 'if_menu_condition_type');
|
423 |
+
delete_post_meta($menu_item_db_id, 'if_menu_condition');
|
424 |
+
delete_post_meta($menu_item_db_id, 'if_menu_options');
|
425 |
+
|
426 |
+
foreach ($_POST['menu-item-if-menu-enable'][$menu_item_db_id] as $index => $value) {
|
427 |
+
if (in_array( $value, array('1', 'and', 'or'))) {
|
428 |
+
add_post_meta($menu_item_db_id, 'if_menu_enable', $value);
|
429 |
+
add_post_meta($menu_item_db_id, 'if_menu_condition_type', $_POST['menu-item-if-menu-condition-type'][$menu_item_db_id][$index]);
|
430 |
+
add_post_meta($menu_item_db_id, 'if_menu_condition', $_POST['menu-item-if-menu-condition'][$menu_item_db_id][$index]);
|
431 |
+
if (isset($_POST['menu-item-if-menu-options']) && isset($_POST['menu-item-if-menu-options'][$menu_item_db_id]) && isset($_POST['menu-item-if-menu-options'][$menu_item_db_id][$index])) {
|
432 |
+
add_post_meta($menu_item_db_id, 'if_menu_options', array_unique($_POST['menu-item-if-menu-options'][$menu_item_db_id][$index]));
|
433 |
+
} else {
|
434 |
+
add_post_meta($menu_item_db_id, 'if_menu_options', 0);
|
435 |
+
}
|
436 |
+
} else {
|
437 |
+
break;
|
438 |
+
}
|
439 |
+
}
|
440 |
+
}
|
441 |
+
}
|
442 |
+
|
443 |
+
public static function apiNonce($action) {
|
444 |
+
$nonce = uniqid();
|
445 |
+
set_transient('if-menu-nonce-' . $action, $nonce, 600);
|
446 |
+
return $nonce;
|
447 |
+
}
|
448 |
+
|
449 |
+
public static function getPlan() {
|
450 |
+
if (true || isset($_REQUEST['if-menu-recheck-plan']) || false === ($plan = get_transient('if-menu-plan'))) {
|
451 |
+
$plan = false;
|
452 |
+
$request = wp_remote_get('https://wordpress.layered.studio/get-plan?site=' . urlencode(site_url()) . '&for=if-menu&_nonce=' . self::apiNonce('plan-check'));
|
453 |
+
|
454 |
+
if (!is_wp_error($request)) {
|
455 |
+
$data = json_decode(wp_remote_retrieve_body($request), true);
|
456 |
+
if (isset($data['plans'])) {
|
457 |
+
$plan = $data['plans']['if-menu'];
|
458 |
+
set_transient('if-menu-plan', $plan, 500);
|
459 |
+
}
|
460 |
+
}
|
461 |
+
}
|
462 |
+
|
463 |
+
return $plan;
|
464 |
+
}
|
465 |
+
|
466 |
+
public static function restApi() {
|
467 |
+
register_rest_route('if-menu/v1', '/did-you-made-this-request', array(
|
468 |
+
'methods' => 'GET',
|
469 |
+
'callback' => function() {
|
470 |
+
$action = isset($_REQUEST['action']) ? sanitize_key($_REQUEST['action']) : false;
|
471 |
+
$nonce = isset($_REQUEST['nonce']) ? sanitize_key($_REQUEST['nonce']) : false;
|
472 |
+
return array('valid' => $action && $nonce && $nonce === get_transient('if-menu-nonce-' . $action));
|
473 |
+
}
|
474 |
+
) );
|
475 |
+
}
|
476 |
+
|
477 |
+
public static function pluginActivate() {
|
478 |
+
add_option('if-menu-peak', 0);
|
479 |
+
}
|
480 |
+
|
481 |
+
}
|
482 |
+
|
483 |
+
|
484 |
+
|
485 |
+
/* ------------------------------------------------
|
486 |
+
Include default visibility rules for menu items
|
487 |
+
------------------------------------------------ */
|
488 |
+
|
489 |
+
include 'src/user-info.php';
|
490 |
+
include 'src/conditions-basic.php';
|
491 |
+
include 'src/conditions-multiple-options.php';
|
492 |
+
|
493 |
+
|
494 |
+
|
495 |
+
/* ------------------------------------------------
|
496 |
+
Run the plugin
|
497 |
+
------------------------------------------------ */
|
498 |
+
|
499 |
+
register_activation_hook(__FILE__, array('If_Menu', 'pluginActivate'));
|
500 |
+
add_action('plugins_loaded', 'If_Menu::init');
|
languages/if-menu-de_DE.mo
ADDED
Binary file
|
languages/if-menu-de_DE.po
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2016 If Menu
|
2 |
+
# This file is distributed under the same license as the If Menu package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: If Menu 0.4.1\n"
|
6 |
+
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/if-menu\n"
|
7 |
+
"POT-Creation-Date: 2016-07-27 11:26+0300\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2016-07-27 11:39+0300\n"
|
12 |
+
"Language-Team: \n"
|
13 |
+
"X-Generator: Poedit 1.8.8\n"
|
14 |
+
"Last-Translator: \n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
16 |
+
"Language: de\n"
|
17 |
+
|
18 |
+
#: if-menu.php:138
|
19 |
+
msgid "Enable Conditional Logic"
|
20 |
+
msgstr "Conditional Logik aktivieren"
|
21 |
+
|
22 |
+
#: if-menu.php:144
|
23 |
+
msgid "Show"
|
24 |
+
msgstr "Anzeigen"
|
25 |
+
|
26 |
+
#: if-menu.php:145
|
27 |
+
msgid "Hide"
|
28 |
+
msgstr "Verstecken"
|
29 |
+
|
30 |
+
#: if-menu.php:181
|
31 |
+
msgid "AND"
|
32 |
+
msgstr "UND"
|
33 |
+
|
34 |
+
#: if-menu.php:182
|
35 |
+
msgid "OR"
|
36 |
+
msgstr "ODER"
|
37 |
+
|
38 |
+
#: if-menu.php:203
|
39 |
+
msgid "%s if %s"
|
40 |
+
msgstr "%s wenn %s"
|
41 |
+
|
42 |
+
#: if-menu.php:203
|
43 |
+
msgid "and 1 more condition"
|
44 |
+
msgstr "und eine weitere Bedingung"
|
45 |
+
|
46 |
+
#: if-menu.php:203
|
47 |
+
msgid "and %d more conditions"
|
48 |
+
msgstr "und %d weitere Bedingungen"
|
49 |
+
|
50 |
+
#: if-menu.php:60
|
51 |
+
msgid ""
|
52 |
+
"<b>If Menu</b> plugin detected a conflict with another plugin or theme and "
|
53 |
+
"may not work as expected. <a href=\"%s\" target=\"_blank\">Read more about "
|
54 |
+
"the issue here</a>"
|
55 |
+
msgstr ""
|
56 |
+
|
57 |
+
#. Description of the plugin/theme
|
58 |
+
msgid "Show/hide menu items with conditional statements"
|
59 |
+
msgstr "Anzeigen/verstecken der Menüpunkte mit bedingten Anweisungen"
|
languages/if-menu-ro_RO.mo
ADDED
Binary file
|
languages/if-menu-ro_RO.po
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2016 If Menu
|
2 |
+
# This file is distributed under the same license as the If Menu package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: If Menu 0.4.1\n"
|
6 |
+
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/if-menu\n"
|
7 |
+
"POT-Creation-Date: 2016-07-27 11:21+0300\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2016-07-27 11:24+0300\n"
|
12 |
+
"Language-Team: \n"
|
13 |
+
"X-Generator: Poedit 1.8.8\n"
|
14 |
+
"Last-Translator: \n"
|
15 |
+
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!"
|
16 |
+
"=0)))?2:1));\n"
|
17 |
+
"Language: ro\n"
|
18 |
+
|
19 |
+
#: if-menu.php:138
|
20 |
+
msgid "Enable Conditional Logic"
|
21 |
+
msgstr "Foloseste conditii"
|
22 |
+
|
23 |
+
#: if-menu.php:144
|
24 |
+
msgid "Show"
|
25 |
+
msgstr "Afiseaza"
|
26 |
+
|
27 |
+
#: if-menu.php:145
|
28 |
+
msgid "Hide"
|
29 |
+
msgstr "Ascunde"
|
30 |
+
|
31 |
+
#: if-menu.php:181
|
32 |
+
msgid "AND"
|
33 |
+
msgstr "ȘI"
|
34 |
+
|
35 |
+
#: if-menu.php:182
|
36 |
+
msgid "OR"
|
37 |
+
msgstr "SAU"
|
38 |
+
|
39 |
+
#: if-menu.php:203
|
40 |
+
msgid "%s if %s"
|
41 |
+
msgstr "%s daca %s"
|
42 |
+
|
43 |
+
#: if-menu.php:203
|
44 |
+
msgid "and 1 more condition"
|
45 |
+
msgstr "si inca o conditie"
|
46 |
+
|
47 |
+
#: if-menu.php:203
|
48 |
+
msgid "and %d more conditions"
|
49 |
+
msgstr "si inca %s conditii"
|
50 |
+
|
51 |
+
#: if-menu.php:60
|
52 |
+
msgid ""
|
53 |
+
"<b>If Menu</b> plugin detected a conflict with another plugin or theme and "
|
54 |
+
"may not work as expected. <a href=\"%s\" target=\"_blank\">Read more about "
|
55 |
+
"the issue here</a>"
|
56 |
+
msgstr ""
|
57 |
+
"Modulul <b>If Menu</b> a detectat un conflict cu un alt modul sau template "
|
58 |
+
"care incearca sa modifice meniuri si e posibil sa nu functioneze cum ar "
|
59 |
+
"trebui. <a href=\"%s\" target=\"_blank\">Citeste mai mult despre problema "
|
60 |
+
"aici</a>"
|
61 |
+
|
62 |
+
#. Description of the plugin/theme
|
63 |
+
msgid "Show/hide menu items with conditional statements"
|
64 |
+
msgstr "Afiseaza sau ascunde meniuri pe baza de conditii"
|
languages/if-menu.pot
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2016 If Menu
|
2 |
+
# This file is distributed under the same license as the If Menu package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: If Menu 0.4.1\n"
|
6 |
+
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/if-menu\n"
|
7 |
+
"POT-Creation-Date: 2016-07-27 07:34:16+00:00\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
|
12 |
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
+
|
15 |
+
#: if-menu.php:138
|
16 |
+
msgid "Enable Conditional Logic"
|
17 |
+
msgstr ""
|
18 |
+
|
19 |
+
#: if-menu.php:144
|
20 |
+
msgid "Show"
|
21 |
+
msgstr ""
|
22 |
+
|
23 |
+
#: if-menu.php:145
|
24 |
+
msgid "Hide"
|
25 |
+
msgstr ""
|
26 |
+
|
27 |
+
#: if-menu.php:181
|
28 |
+
msgid "AND"
|
29 |
+
msgstr ""
|
30 |
+
|
31 |
+
#: if-menu.php:182
|
32 |
+
msgid "OR"
|
33 |
+
msgstr ""
|
34 |
+
|
35 |
+
#: if-menu.php:203
|
36 |
+
msgid "%s if %s"
|
37 |
+
msgstr ""
|
38 |
+
|
39 |
+
#: if-menu.php:203
|
40 |
+
msgid "and 1 more condition"
|
41 |
+
msgstr ""
|
42 |
+
|
43 |
+
#: if-menu.php:203
|
44 |
+
msgid "and %d more conditions"
|
45 |
+
msgstr ""
|
46 |
+
|
47 |
+
#: if-menu.php:60
|
48 |
+
msgid "<b>If Menu</b> plugin detected a conflict with another plugin or theme and may not work as expected. <a href=\"%s\" target=\"_blank\">Read more about the issue here</a>"
|
49 |
+
msgstr ""
|
50 |
+
|
51 |
+
#. Description of the plugin/theme
|
52 |
+
msgid "Show/hide menu items with conditional statements"
|
53 |
+
msgstr ""
|
readme.md
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
If Menu
|
2 |
+
=========
|
3 |
+
|
4 |
+
**If Menu** is a WordPress plugin which adds extra functionality for menu items, making it easy to hide or display menu items based on user-defined rules. Example:
|
5 |
+
|
6 |
+
* Display a menu item only if current `User is logged in`
|
7 |
+
* Hide menu items if `visiting from mobile device`
|
8 |
+
* Display menu items just for `Admins and Editors`
|
9 |
+
|
10 |
+
The plugin is easy to use, each menu item will have a “Change menu item visibility” option which will enable the selection of rules.
|
11 |
+
|
12 |
+
|
13 |
+
## Features
|
14 |
+
|
15 |
+
* Basic set of visibility rules
|
16 |
+
* User state `User is logged in`
|
17 |
+
* User roles `Admin` `Editor` `Author` etc
|
18 |
+
* Page type `Front page` `Single page` `Single post`
|
19 |
+
* Device `Is Mobile`
|
20 |
+
* Language `Is RTL`
|
21 |
+
* Multiple rules - mix multiple rules for a menu item visibility
|
22 |
+
* show if `User is logged in` AND `Device is mobile`
|
23 |
+
* show if `User is Admin` AND `Is front page`
|
24 |
+
* Support for adding your custom rules
|
25 |
+
|
26 |
+
|
27 |
+
|
28 |
+
## Adding custom visibility rules in a plugin or theme
|
29 |
+
|
30 |
+
Custom visibility rules can be added easily by any plugin or theme.
|
31 |
+
Example of adding a new rule for displaying/hiding a menu item when current page is a custom-post-type.
|
32 |
+
|
33 |
+
```
|
34 |
+
// theme's functions.php or plugin file
|
35 |
+
add_filter('if_menu_conditions', 'my_new_menu_conditions');
|
36 |
+
|
37 |
+
function my_new_menu_conditions($conditions) {
|
38 |
+
|
39 |
+
$conditions[] = array(
|
40 |
+
'id' => 'single-my-custom-post-type', // unique ID for the condition
|
41 |
+
'name' => __('Single my-CPT', 'i18n-domain'), // name of the condition
|
42 |
+
'condition' => function($item) { // callback - must return Boolean
|
43 |
+
return is_singular('my-custom-post-type');
|
44 |
+
}
|
45 |
+
);
|
46 |
+
|
47 |
+
return $conditions;
|
48 |
+
}
|
49 |
+
```
|
50 |
+
|
51 |
+
|
52 |
+
|
53 |
+
## WordPress.org
|
54 |
+
|
55 |
+
Head over to [plugin's page on WordPress.org](https://wordpress.org/plugins/if-menu/) for more info, reviews and support
|
readme.txt
CHANGED
@@ -1,80 +1,202 @@
|
|
1 |
-
=== If Menu ===
|
2 |
-
Contributors: andrei.igna
|
3 |
-
Tags: menu,
|
4 |
-
Requires at least:
|
5 |
-
Tested up to:
|
6 |
-
Stable tag: trunk
|
7 |
-
License: GPL2
|
8 |
-
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
== Description ==
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== If Menu ===
|
2 |
+
Contributors: andrei.igna
|
3 |
+
Tags: menu, visibility, roles, rules, hide, if, nav menu
|
4 |
+
Requires at least: 4
|
5 |
+
Tested up to: 4.9
|
6 |
+
Stable tag: trunk
|
7 |
+
License: GPL2
|
8 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
+
|
10 |
+
Display tailored menu items to each visitor with visibility rules
|
11 |
+
|
12 |
+
== Description ==
|
13 |
+
|
14 |
+
Display tailored menu items to each visitor, based on visibility rules. Here are a few examples:
|
15 |
+
|
16 |
+
* Display a menu item only if current `User is logged in`
|
17 |
+
* Hide menu items if `Device is mobile`
|
18 |
+
* Display menu items for `Admins and Editors`
|
19 |
+
* Hide Login or Register links for `Logged in Users`
|
20 |
+
* Display menu items for `Users from US and UK`
|
21 |
+
|
22 |
+
The plugin is easy to use, each menu item will have a new option “Change menu item visibility” which will enable the selection of rules (example in Screenshots)
|
23 |
+
|
24 |
+
## Features
|
25 |
+
|
26 |
+
* Basic set of visibility rules
|
27 |
+
* User state `User is logged in`
|
28 |
+
* User roles `Admin` `Editor` `Author` etc
|
29 |
+
* Page type `Front page` `Single page` `Single post`
|
30 |
+
* Visitor device `Is Mobile`
|
31 |
+
* Advanced visibility rules - requires Premium plan
|
32 |
+
* Visitor location - detect visitor's Country
|
33 |
+
* 3rd-party plugin integrations - WooCommerce Subscriptions, Groups, WishList Member
|
34 |
+
* Multiple rules - mix multiple rules for a menu item visibility
|
35 |
+
* show if `User is logged in` AND `Device is mobile`
|
36 |
+
* show if `User is Admin` AND `Is front page`
|
37 |
+
* Support for adding your custom rules
|
38 |
+
|
39 |
+
Example of adding a new visibility rule is described in the FAQ section
|
40 |
+
|
41 |
+
== Installation ==
|
42 |
+
|
43 |
+
To install the plugin, follow the steps below
|
44 |
+
|
45 |
+
1. Upload `if-menu` to the `/wp-content/plugins/` directory
|
46 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress
|
47 |
+
3. Enable visibility rules for your Menu Items in Appearance -> Menus page
|
48 |
+
|
49 |
+
== Frequently Asked Questions ==
|
50 |
+
|
51 |
+
= If Menu is broken, no visibility rules are available =
|
52 |
+
|
53 |
+
The code for modifying the menu items is limited and if other plugins/themes try to alter the menu items, this plugin will break.
|
54 |
+
|
55 |
+
This is an ongoing [issue with WordPress](http://core.trac.wordpress.org/ticket/18584) which hopefully will be fixed in a future release.
|
56 |
+
|
57 |
+
Try to use just one plugin that changes functionality for menu items.
|
58 |
+
|
59 |
+
|
60 |
+
= How can I add a custom visibility rule for menu items? =
|
61 |
+
|
62 |
+
New rules can be added by any other plugin or theme.
|
63 |
+
|
64 |
+
Example of adding a new custom rule for displaying/hiding a menu item when current page is a custom-post-type.
|
65 |
+
|
66 |
+
`
|
67 |
+
// theme's functions.php or plugin file
|
68 |
+
add_filter('if_menu_conditions', 'my_new_menu_conditions');
|
69 |
+
|
70 |
+
function my_new_menu_conditions($conditions) {
|
71 |
+
$conditions[] = array(
|
72 |
+
'id' => 'single-my-custom-post-type', // unique ID for the rule
|
73 |
+
'name' => __('Single my-custom-post-type', 'i18n-domain'), // name of the rule
|
74 |
+
'condition' => function($item) { // callback - must return Boolean
|
75 |
+
return is_singular('my-custom-post-type');
|
76 |
+
}
|
77 |
+
);
|
78 |
+
|
79 |
+
return $conditions;
|
80 |
+
}
|
81 |
+
`
|
82 |
+
|
83 |
+
= Where can I find conditional functions? =
|
84 |
+
|
85 |
+
WordPress provides [a lot of functions](http://codex.wordpress.org/Conditional_Tags) which can be used to create custom rules for almost any combination that a theme/plugin developer can think of.
|
86 |
+
|
87 |
+
= Who made that really cool icon =
|
88 |
+
|
89 |
+
Got the icons from here https://dribbble.com/shots/1045549-Light-Switches-PSD, so giving the credit to Louie Mantia
|
90 |
+
|
91 |
+
== Screenshots ==
|
92 |
+
|
93 |
+
1. Enable visibility rules for Menu Items
|
94 |
+
2. Example of visibility rules
|
95 |
+
|
96 |
+
== Changelog ==
|
97 |
+
|
98 |
+
= 0.8.3 =
|
99 |
+
*Release Date - 22 February 2018*
|
100 |
+
|
101 |
+
* Fixed - Support for PHP <= 5.3, fixes error
|
102 |
+
|
103 |
+
= 0.8.2 =
|
104 |
+
*Release Date - 20 February 2018*
|
105 |
+
|
106 |
+
* Fixed - Support for older visibilty rule names, fixes PHP warning
|
107 |
+
|
108 |
+
= 0.8.1 =
|
109 |
+
*Release Date - 20 February 2018*
|
110 |
+
|
111 |
+
* Fixed - Better options checking, fixes PHP warning
|
112 |
+
|
113 |
+
= 0.8 =
|
114 |
+
*Release Date - 19 February 2018*
|
115 |
+
|
116 |
+
* Added - Visibility rules with multiple options. Requires Premium plan
|
117 |
+
* Added - Visibility rule - User country
|
118 |
+
* Added - Visibility rule - Is Super Admin on MultiSite
|
119 |
+
* Added - Visibility rule - User is in Group, integration with [Groups](https://wordpress.org/plugins/groups/) plugin
|
120 |
+
* Added - Visibility rule - User has subscription, integration with [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/) plugin
|
121 |
+
* Added - Visibility rule - User membership level, integration with [WishList Member](https://member.wishlistproducts.com/) plugin
|
122 |
+
* Updated - Better conflict detection for Nav_Menu Walker
|
123 |
+
* Fixed - translation strings & function used
|
124 |
+
|
125 |
+
= 0.7 =
|
126 |
+
*Release Date - 18 September 2017*
|
127 |
+
|
128 |
+
* Enhancement - Nicer styling for visibility rules
|
129 |
+
* Added - Peek option - Let admins preview hidden menu items
|
130 |
+
* Added - Settings page
|
131 |
+
|
132 |
+
= 0.6.3 =
|
133 |
+
*Release Date - 17 August 2017*
|
134 |
+
|
135 |
+
* New visibility rule - Language Is RTL
|
136 |
+
* Fix - Single rule works on servers with Eval disabled
|
137 |
+
|
138 |
+
= 0.6.2 =
|
139 |
+
*Release Date - 8 August 2017*
|
140 |
+
|
141 |
+
* Fix - Backwards compatibility with PHP < 5.4
|
142 |
+
|
143 |
+
= 0.6.1 =
|
144 |
+
*Release Date - 7 August 2017*
|
145 |
+
|
146 |
+
* Improvement - Change labels & texts for easier use
|
147 |
+
* Improvement - Better compatibility with latest versions of WordPress
|
148 |
+
* Improvement - Better compatibility with translation plugins
|
149 |
+
* Fix - Detection for conflict with other plugins
|
150 |
+
|
151 |
+
= 0.6 =
|
152 |
+
*Release Date - 27 August 2016*
|
153 |
+
|
154 |
+
* Improvement - Dynamic conditions based on default & custom user roles (added by plugins or themes) [thanks Daniele](https://wordpress.org/support/topic/feature-request-custom-roles)
|
155 |
+
* Improvement - Grouped conditions by User, Page or other types
|
156 |
+
* Fix - Filter menu items in admin section
|
157 |
+
* Fix - Better menu items filter saving code
|
158 |
+
|
159 |
+
= 0.5 =
|
160 |
+
*Release Date - 20 August 2016*
|
161 |
+
|
162 |
+
* Improvement - Support for WordPress 4.6
|
163 |
+
* Feature - New condition checking logged in user for current site in Multi Site [requested here](https://wordpress.org/support/topic/multi-site-user-is-logged-in-conditi
|
164 |
+
on)
|
165 |
+
* Feature - Added support for multi conditions [thanks for this ideea](https://wordpress.org/support/topic/more-than-one-condition-operators-1)
|
166 |
+
* Improvement - RO & DE translations
|
167 |
+
|
168 |
+
= 0.4.1 =
|
169 |
+
*Release Date - 13 December 2015*
|
170 |
+
|
171 |
+
* Fix - Fixes [issue](https://wordpress.org/support/topic/cant-add-items-to-menu-with-plugin-enabled) with adding new menu items
|
172 |
+
|
173 |
+
= 0.4 =
|
174 |
+
*Release Date - 29 November 2015*
|
175 |
+
|
176 |
+
* Improved compatibility with other plugins/themes using a [shared action hook for menu item fields](https://core.trac.wordpress.org/ticket/18584#comment:37)
|
177 |
+
* Enhancement - show visibility status in menu item titles
|
178 |
+
|
179 |
+
= 0.3 =
|
180 |
+
|
181 |
+
Small update
|
182 |
+
|
183 |
+
* Plugin icon
|
184 |
+
* Set as compatible with WordPress 4
|
185 |
+
|
186 |
+
= 0.2.1 =
|
187 |
+
|
188 |
+
Minor fixes
|
189 |
+
|
190 |
+
* [Fix](https://twitter.com/joesegal/status/480386235249082368) - Editing menus - show/hide conditions when adding new item (thanks [Joseph Segal](https://twitter.com/joesegal))
|
191 |
+
|
192 |
+
= 0.2 =
|
193 |
+
|
194 |
+
Update for compatibility with newer versions of WordPress
|
195 |
+
|
196 |
+
* [Feature](http://wordpress.org/support/topic/new-feature-power-to-the-conditions) - access to menu item object in condition callback (thanks [BramNL](http://wordpress.org/support/profile/bramnl))
|
197 |
+
* [Fix](http://wordpress.org/support/topic/save-is-requested-before-leaving-menu-page) - alert for leaving page even if no changes were made for menus (thanks [Denny](http://wordpress.org/support/profile/ddahly))
|
198 |
+
* Fix - update method in `Walker_Nav_Menu_Edit` to be compatible with newer version of WP
|
199 |
+
* [Fix](http://wordpress.org/support/topic/bugfix-for-readmetxt) - example in Readme (thanks [BramNL](http://wordpress.org/support/profile/bramnl))
|
200 |
+
|
201 |
+
= 0.1 =
|
202 |
+
* Plugin release. Included basic menu conditional statements
|
src/conditions-basic.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
add_filter('if_menu_conditions', 'if_menu_basic_conditions');
|
4 |
+
|
5 |
+
function if_menu_basic_conditions($conditions) {
|
6 |
+
global $wp_roles;
|
7 |
+
|
8 |
+
|
9 |
+
// User roles
|
10 |
+
foreach ($wp_roles->role_names as $roleId => $role) {
|
11 |
+
$conditions[] = array(
|
12 |
+
'id' => 'user-is-' . $roleId,
|
13 |
+
'name' => sprintf(__('Is %s', 'if-menu'), $role),
|
14 |
+
'alias' => sprintf(__('User is %s', 'if-menu'), $role),
|
15 |
+
'condition' => function() use($roleId) {
|
16 |
+
global $current_user;
|
17 |
+
return is_user_logged_in() && in_array($roleId, $current_user->roles);
|
18 |
+
},
|
19 |
+
'group' => __('User', 'if-menu')
|
20 |
+
);
|
21 |
+
}
|
22 |
+
|
23 |
+
if (defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE === true) {
|
24 |
+
$conditions[] = array(
|
25 |
+
'id' => 'user-is-super-admin',
|
26 |
+
'name' => sprintf(__('Is %s', 'if-menu'), 'Super Admin'),
|
27 |
+
'condition' => 'is_super_admin',
|
28 |
+
'group' => __('User', 'if-menu')
|
29 |
+
);
|
30 |
+
}
|
31 |
+
|
32 |
+
|
33 |
+
// User state
|
34 |
+
$conditions[] = array(
|
35 |
+
'id' => 'user-logged-in',
|
36 |
+
'name' => __('Is logged in', 'if-menu'),
|
37 |
+
'alias' => __('User is logged in', 'if-menu'),
|
38 |
+
'condition' => 'is_user_logged_in',
|
39 |
+
'group' => __('User', 'if-menu')
|
40 |
+
);
|
41 |
+
|
42 |
+
if (defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE === true) {
|
43 |
+
$conditions[] = array(
|
44 |
+
'id' => 'user-logged-in-current-site',
|
45 |
+
'name' => __('Is logged in for current site', 'if-menu'),
|
46 |
+
'condition' => function() {
|
47 |
+
return current_user_can('read');
|
48 |
+
},
|
49 |
+
'group' => __('User', 'if-menu')
|
50 |
+
);
|
51 |
+
}
|
52 |
+
|
53 |
+
|
54 |
+
// Page type
|
55 |
+
$conditions[] = array(
|
56 |
+
'id' => 'front-page',
|
57 |
+
'name' => __('Front Page', 'if-menu'),
|
58 |
+
'condition' => 'is_front_page',
|
59 |
+
'group' => __('Page type', 'if-menu')
|
60 |
+
);
|
61 |
+
|
62 |
+
$conditions[] = array(
|
63 |
+
'id' => 'single-post',
|
64 |
+
'name' => __('Single Post', 'if-menu'),
|
65 |
+
'condition' => 'is_single',
|
66 |
+
'group' => __('Page type', 'if-menu')
|
67 |
+
);
|
68 |
+
|
69 |
+
$conditions[] = array(
|
70 |
+
'id' => 'single-page',
|
71 |
+
'name' => __('Page', 'if-menu'),
|
72 |
+
'condition' => 'is_page',
|
73 |
+
'group' => __('Page type', 'if-menu')
|
74 |
+
);
|
75 |
+
|
76 |
+
|
77 |
+
// Devices
|
78 |
+
$conditions[] = array(
|
79 |
+
'id' => 'is-mobile',
|
80 |
+
'name' => __('Mobile', 'if-menu'),
|
81 |
+
'condition' => 'wp_is_mobile',
|
82 |
+
'group' => __('Device', 'if-menu')
|
83 |
+
);
|
84 |
+
|
85 |
+
|
86 |
+
// Language
|
87 |
+
$conditions[] = array(
|
88 |
+
'id' => 'language-is-rtl',
|
89 |
+
'name' => __('Is RTL', 'if-menu'),
|
90 |
+
'condition' => 'is_rtl',
|
91 |
+
'group' => __('Language', 'if-menu')
|
92 |
+
);
|
93 |
+
|
94 |
+
|
95 |
+
return $conditions;
|
96 |
+
}
|
src/conditions-multiple-options.php
ADDED
@@ -0,0 +1,366 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
add_filter('if_menu_conditions', 'ifMenuAdvancedConditions');
|
4 |
+
|
5 |
+
function ifMenuAdvancedConditions($conditions) {
|
6 |
+
$activePlugins = apply_filters('active_plugins', get_option('active_plugins'));
|
7 |
+
|
8 |
+
|
9 |
+
// User location
|
10 |
+
$conditions[] = array(
|
11 |
+
'id' => 'user-location',
|
12 |
+
'name' => __('From country', 'if-menu'),
|
13 |
+
'options' => array(
|
14 |
+
'AF' => __( 'Afghanistan', 'if-menu' ),
|
15 |
+
'AX' => __( 'Åland Islands', 'if-menu' ),
|
16 |
+
'AL' => __( 'Albania', 'if-menu' ),
|
17 |
+
'DZ' => __( 'Algeria', 'if-menu' ),
|
18 |
+
'AS' => __( 'American Samoa', 'if-menu' ),
|
19 |
+
'AD' => __( 'Andorra', 'if-menu' ),
|
20 |
+
'AO' => __( 'Angola', 'if-menu' ),
|
21 |
+
'AI' => __( 'Anguilla', 'if-menu' ),
|
22 |
+
'AQ' => __( 'Antarctica', 'if-menu' ),
|
23 |
+
'AG' => __( 'Antigua and Barbuda', 'if-menu' ),
|
24 |
+
'AR' => __( 'Argentina', 'if-menu' ),
|
25 |
+
'AM' => __( 'Armenia', 'if-menu' ),
|
26 |
+
'AW' => __( 'Aruba', 'if-menu' ),
|
27 |
+
'AU' => __( 'Australia', 'if-menu' ),
|
28 |
+
'AT' => __( 'Austria', 'if-menu' ),
|
29 |
+
'AZ' => __( 'Azerbaijan', 'if-menu' ),
|
30 |
+
'BS' => __( 'Bahamas', 'if-menu' ),
|
31 |
+
'BH' => __( 'Bahrain', 'if-menu' ),
|
32 |
+
'BD' => __( 'Bangladesh', 'if-menu' ),
|
33 |
+
'BB' => __( 'Barbados', 'if-menu' ),
|
34 |
+
'BY' => __( 'Belarus', 'if-menu' ),
|
35 |
+
'BE' => __( 'Belgium', 'if-menu' ),
|
36 |
+
'PW' => __( 'Belau', 'if-menu' ),
|
37 |
+
'BZ' => __( 'Belize', 'if-menu' ),
|
38 |
+
'BJ' => __( 'Benin', 'if-menu' ),
|
39 |
+
'BM' => __( 'Bermuda', 'if-menu' ),
|
40 |
+
'BT' => __( 'Bhutan', 'if-menu' ),
|
41 |
+
'BO' => __( 'Bolivia', 'if-menu' ),
|
42 |
+
'BQ' => __( 'Bonaire, Saint Eustatius and Saba', 'if-menu' ),
|
43 |
+
'BA' => __( 'Bosnia and Herzegovina', 'if-menu' ),
|
44 |
+
'BW' => __( 'Botswana', 'if-menu' ),
|
45 |
+
'BV' => __( 'Bouvet Island', 'if-menu' ),
|
46 |
+
'BR' => __( 'Brazil', 'if-menu' ),
|
47 |
+
'IO' => __( 'British Indian Ocean Territory', 'if-menu' ),
|
48 |
+
'VG' => __( 'British Virgin Islands', 'if-menu' ),
|
49 |
+
'BN' => __( 'Brunei', 'if-menu' ),
|
50 |
+
'BG' => __( 'Bulgaria', 'if-menu' ),
|
51 |
+
'BF' => __( 'Burkina Faso', 'if-menu' ),
|
52 |
+
'BI' => __( 'Burundi', 'if-menu' ),
|
53 |
+
'KH' => __( 'Cambodia', 'if-menu' ),
|
54 |
+
'CM' => __( 'Cameroon', 'if-menu' ),
|
55 |
+
'CA' => __( 'Canada', 'if-menu' ),
|
56 |
+
'CV' => __( 'Cape Verde', 'if-menu' ),
|
57 |
+
'KY' => __( 'Cayman Islands', 'if-menu' ),
|
58 |
+
'CF' => __( 'Central African Republic', 'if-menu' ),
|
59 |
+
'TD' => __( 'Chad', 'if-menu' ),
|
60 |
+
'CL' => __( 'Chile', 'if-menu' ),
|
61 |
+
'CN' => __( 'China', 'if-menu' ),
|
62 |
+
'CX' => __( 'Christmas Island', 'if-menu' ),
|
63 |
+
'CC' => __( 'Cocos (Keeling) Islands', 'if-menu' ),
|
64 |
+
'CO' => __( 'Colombia', 'if-menu' ),
|
65 |
+
'KM' => __( 'Comoros', 'if-menu' ),
|
66 |
+
'CG' => __( 'Congo (Brazzaville)', 'if-menu' ),
|
67 |
+
'CD' => __( 'Congo (Kinshasa)', 'if-menu' ),
|
68 |
+
'CK' => __( 'Cook Islands', 'if-menu' ),
|
69 |
+
'CR' => __( 'Costa Rica', 'if-menu' ),
|
70 |
+
'HR' => __( 'Croatia', 'if-menu' ),
|
71 |
+
'CU' => __( 'Cuba', 'if-menu' ),
|
72 |
+
'CW' => __( 'Curaçao', 'if-menu' ),
|
73 |
+
'CY' => __( 'Cyprus', 'if-menu' ),
|
74 |
+
'CZ' => __( 'Czech Republic', 'if-menu' ),
|
75 |
+
'DK' => __( 'Denmark', 'if-menu' ),
|
76 |
+
'DJ' => __( 'Djibouti', 'if-menu' ),
|
77 |
+
'DM' => __( 'Dominica', 'if-menu' ),
|
78 |
+
'DO' => __( 'Dominican Republic', 'if-menu' ),
|
79 |
+
'EC' => __( 'Ecuador', 'if-menu' ),
|
80 |
+
'EG' => __( 'Egypt', 'if-menu' ),
|
81 |
+
'SV' => __( 'El Salvador', 'if-menu' ),
|
82 |
+
'GQ' => __( 'Equatorial Guinea', 'if-menu' ),
|
83 |
+
'ER' => __( 'Eritrea', 'if-menu' ),
|
84 |
+
'EE' => __( 'Estonia', 'if-menu' ),
|
85 |
+
'ET' => __( 'Ethiopia', 'if-menu' ),
|
86 |
+
'FK' => __( 'Falkland Islands', 'if-menu' ),
|
87 |
+
'FO' => __( 'Faroe Islands', 'if-menu' ),
|
88 |
+
'FJ' => __( 'Fiji', 'if-menu' ),
|
89 |
+
'FI' => __( 'Finland', 'if-menu' ),
|
90 |
+
'FR' => __( 'France', 'if-menu' ),
|
91 |
+
'GF' => __( 'French Guiana', 'if-menu' ),
|
92 |
+
'PF' => __( 'French Polynesia', 'if-menu' ),
|
93 |
+
'TF' => __( 'French Southern Territories', 'if-menu' ),
|
94 |
+
'GA' => __( 'Gabon', 'if-menu' ),
|
95 |
+
'GM' => __( 'Gambia', 'if-menu' ),
|
96 |
+
'GE' => __( 'Georgia', 'if-menu' ),
|
97 |
+
'DE' => __( 'Germany', 'if-menu' ),
|
98 |
+
'GH' => __( 'Ghana', 'if-menu' ),
|
99 |
+
'GI' => __( 'Gibraltar', 'if-menu' ),
|
100 |
+
'GR' => __( 'Greece', 'if-menu' ),
|
101 |
+
'GL' => __( 'Greenland', 'if-menu' ),
|
102 |
+
'GD' => __( 'Grenada', 'if-menu' ),
|
103 |
+
'GP' => __( 'Guadeloupe', 'if-menu' ),
|
104 |
+
'GU' => __( 'Guam', 'if-menu' ),
|
105 |
+
'GT' => __( 'Guatemala', 'if-menu' ),
|
106 |
+
'GG' => __( 'Guernsey', 'if-menu' ),
|
107 |
+
'GN' => __( 'Guinea', 'if-menu' ),
|
108 |
+
'GW' => __( 'Guinea-Bissau', 'if-menu' ),
|
109 |
+
'GY' => __( 'Guyana', 'if-menu' ),
|
110 |
+
'HT' => __( 'Haiti', 'if-menu' ),
|
111 |
+
'HM' => __( 'Heard Island and McDonald Islands', 'if-menu' ),
|
112 |
+
'HN' => __( 'Honduras', 'if-menu' ),
|
113 |
+
'HK' => __( 'Hong Kong', 'if-menu' ),
|
114 |
+
'HU' => __( 'Hungary', 'if-menu' ),
|
115 |
+
'IS' => __( 'Iceland', 'if-menu' ),
|
116 |
+
'IN' => __( 'India', 'if-menu' ),
|
117 |
+
'ID' => __( 'Indonesia', 'if-menu' ),
|
118 |
+
'IR' => __( 'Iran', 'if-menu' ),
|
119 |
+
'IQ' => __( 'Iraq', 'if-menu' ),
|
120 |
+
'IE' => __( 'Ireland', 'if-menu' ),
|
121 |
+
'IM' => __( 'Isle of Man', 'if-menu' ),
|
122 |
+
'IL' => __( 'Israel', 'if-menu' ),
|
123 |
+
'IT' => __( 'Italy', 'if-menu' ),
|
124 |
+
'CI' => __( 'Ivory Coast', 'if-menu' ),
|
125 |
+
'JM' => __( 'Jamaica', 'if-menu' ),
|
126 |
+
'JP' => __( 'Japan', 'if-menu' ),
|
127 |
+
'JE' => __( 'Jersey', 'if-menu' ),
|
128 |
+
'JO' => __( 'Jordan', 'if-menu' ),
|
129 |
+
'KZ' => __( 'Kazakhstan', 'if-menu' ),
|
130 |
+
'KE' => __( 'Kenya', 'if-menu' ),
|
131 |
+
'KI' => __( 'Kiribati', 'if-menu' ),
|
132 |
+
'KW' => __( 'Kuwait', 'if-menu' ),
|
133 |
+
'KG' => __( 'Kyrgyzstan', 'if-menu' ),
|
134 |
+
'LA' => __( 'Laos', 'if-menu' ),
|
135 |
+
'LV' => __( 'Latvia', 'if-menu' ),
|
136 |
+
'LB' => __( 'Lebanon', 'if-menu' ),
|
137 |
+
'LS' => __( 'Lesotho', 'if-menu' ),
|
138 |
+
'LR' => __( 'Liberia', 'if-menu' ),
|
139 |
+
'LY' => __( 'Libya', 'if-menu' ),
|
140 |
+
'LI' => __( 'Liechtenstein', 'if-menu' ),
|
141 |
+
'LT' => __( 'Lithuania', 'if-menu' ),
|
142 |
+
'LU' => __( 'Luxembourg', 'if-menu' ),
|
143 |
+
'MO' => __( 'Macao S.A.R., China', 'if-menu' ),
|
144 |
+
'MK' => __( 'Macedonia', 'if-menu' ),
|
145 |
+
'MG' => __( 'Madagascar', 'if-menu' ),
|
146 |
+
'MW' => __( 'Malawi', 'if-menu' ),
|
147 |
+
'MY' => __( 'Malaysia', 'if-menu' ),
|
148 |
+
'MV' => __( 'Maldives', 'if-menu' ),
|
149 |
+
'ML' => __( 'Mali', 'if-menu' ),
|
150 |
+
'MT' => __( 'Malta', 'if-menu' ),
|
151 |
+
'MH' => __( 'Marshall Islands', 'if-menu' ),
|
152 |
+
'MQ' => __( 'Martinique', 'if-menu' ),
|
153 |
+
'MR' => __( 'Mauritania', 'if-menu' ),
|
154 |
+
'MU' => __( 'Mauritius', 'if-menu' ),
|
155 |
+
'YT' => __( 'Mayotte', 'if-menu' ),
|
156 |
+
'MX' => __( 'Mexico', 'if-menu' ),
|
157 |
+
'FM' => __( 'Micronesia', 'if-menu' ),
|
158 |
+
'MD' => __( 'Moldova', 'if-menu' ),
|
159 |
+
'MC' => __( 'Monaco', 'if-menu' ),
|
160 |
+
'MN' => __( 'Mongolia', 'if-menu' ),
|
161 |
+
'ME' => __( 'Montenegro', 'if-menu' ),
|
162 |
+
'MS' => __( 'Montserrat', 'if-menu' ),
|
163 |
+
'MA' => __( 'Morocco', 'if-menu' ),
|
164 |
+
'MZ' => __( 'Mozambique', 'if-menu' ),
|
165 |
+
'MM' => __( 'Myanmar', 'if-menu' ),
|
166 |
+
'NA' => __( 'Namibia', 'if-menu' ),
|
167 |
+
'NR' => __( 'Nauru', 'if-menu' ),
|
168 |
+
'NP' => __( 'Nepal', 'if-menu' ),
|
169 |
+
'NL' => __( 'Netherlands', 'if-menu' ),
|
170 |
+
'NC' => __( 'New Caledonia', 'if-menu' ),
|
171 |
+
'NZ' => __( 'New Zealand', 'if-menu' ),
|
172 |
+
'NI' => __( 'Nicaragua', 'if-menu' ),
|
173 |
+
'NE' => __( 'Niger', 'if-menu' ),
|
174 |
+
'NG' => __( 'Nigeria', 'if-menu' ),
|
175 |
+
'NU' => __( 'Niue', 'if-menu' ),
|
176 |
+
'NF' => __( 'Norfolk Island', 'if-menu' ),
|
177 |
+
'MP' => __( 'Northern Mariana Islands', 'if-menu' ),
|
178 |
+
'KP' => __( 'North Korea', 'if-menu' ),
|
179 |
+
'NO' => __( 'Norway', 'if-menu' ),
|
180 |
+
'OM' => __( 'Oman', 'if-menu' ),
|
181 |
+
'PK' => __( 'Pakistan', 'if-menu' ),
|
182 |
+
'PS' => __( 'Palestinian Territory', 'if-menu' ),
|
183 |
+
'PA' => __( 'Panama', 'if-menu' ),
|
184 |
+
'PG' => __( 'Papua New Guinea', 'if-menu' ),
|
185 |
+
'PY' => __( 'Paraguay', 'if-menu' ),
|
186 |
+
'PE' => __( 'Peru', 'if-menu' ),
|
187 |
+
'PH' => __( 'Philippines', 'if-menu' ),
|
188 |
+
'PN' => __( 'Pitcairn', 'if-menu' ),
|
189 |
+
'PL' => __( 'Poland', 'if-menu' ),
|
190 |
+
'PT' => __( 'Portugal', 'if-menu' ),
|
191 |
+
'PR' => __( 'Puerto Rico', 'if-menu' ),
|
192 |
+
'QA' => __( 'Qatar', 'if-menu' ),
|
193 |
+
'RE' => __( 'Reunion', 'if-menu' ),
|
194 |
+
'RO' => __( 'Romania', 'if-menu' ),
|
195 |
+
'RU' => __( 'Russia', 'if-menu' ),
|
196 |
+
'RW' => __( 'Rwanda', 'if-menu' ),
|
197 |
+
'BL' => __( 'Saint Barthélemy', 'if-menu' ),
|
198 |
+
'SH' => __( 'Saint Helena', 'if-menu' ),
|
199 |
+
'KN' => __( 'Saint Kitts and Nevis', 'if-menu' ),
|
200 |
+
'LC' => __( 'Saint Lucia', 'if-menu' ),
|
201 |
+
'MF' => __( 'Saint Martin (French part)', 'if-menu' ),
|
202 |
+
'SX' => __( 'Saint Martin (Dutch part)', 'if-menu' ),
|
203 |
+
'PM' => __( 'Saint Pierre and Miquelon', 'if-menu' ),
|
204 |
+
'VC' => __( 'Saint Vincent and the Grenadines', 'if-menu' ),
|
205 |
+
'SM' => __( 'San Marino', 'if-menu' ),
|
206 |
+
'ST' => __( 'São Tomé and Príncipe', 'if-menu' ),
|
207 |
+
'SA' => __( 'Saudi Arabia', 'if-menu' ),
|
208 |
+
'SN' => __( 'Senegal', 'if-menu' ),
|
209 |
+
'RS' => __( 'Serbia', 'if-menu' ),
|
210 |
+
'SC' => __( 'Seychelles', 'if-menu' ),
|
211 |
+
'SL' => __( 'Sierra Leone', 'if-menu' ),
|
212 |
+
'SG' => __( 'Singapore', 'if-menu' ),
|
213 |
+
'SK' => __( 'Slovakia', 'if-menu' ),
|
214 |
+
'SI' => __( 'Slovenia', 'if-menu' ),
|
215 |
+
'SB' => __( 'Solomon Islands', 'if-menu' ),
|
216 |
+
'SO' => __( 'Somalia', 'if-menu' ),
|
217 |
+
'ZA' => __( 'South Africa', 'if-menu' ),
|
218 |
+
'GS' => __( 'South Georgia/Sandwich Islands', 'if-menu' ),
|
219 |
+
'KR' => __( 'South Korea', 'if-menu' ),
|
220 |
+
'SS' => __( 'South Sudan', 'if-menu' ),
|
221 |
+
'ES' => __( 'Spain', 'if-menu' ),
|
222 |
+
'LK' => __( 'Sri Lanka', 'if-menu' ),
|
223 |
+
'SD' => __( 'Sudan', 'if-menu' ),
|
224 |
+
'SR' => __( 'Suriname', 'if-menu' ),
|
225 |
+
'SJ' => __( 'Svalbard and Jan Mayen', 'if-menu' ),
|
226 |
+
'SZ' => __( 'Swaziland', 'if-menu' ),
|
227 |
+
'SE' => __( 'Sweden', 'if-menu' ),
|
228 |
+
'CH' => __( 'Switzerland', 'if-menu' ),
|
229 |
+
'SY' => __( 'Syria', 'if-menu' ),
|
230 |
+
'TW' => __( 'Taiwan', 'if-menu' ),
|
231 |
+
'TJ' => __( 'Tajikistan', 'if-menu' ),
|
232 |
+
'TZ' => __( 'Tanzania', 'if-menu' ),
|
233 |
+
'TH' => __( 'Thailand', 'if-menu' ),
|
234 |
+
'TL' => __( 'Timor-Leste', 'if-menu' ),
|
235 |
+
'TG' => __( 'Togo', 'if-menu' ),
|
236 |
+
'TK' => __( 'Tokelau', 'if-menu' ),
|
237 |
+
'TO' => __( 'Tonga', 'if-menu' ),
|
238 |
+
'TT' => __( 'Trinidad and Tobago', 'if-menu' ),
|
239 |
+
'TN' => __( 'Tunisia', 'if-menu' ),
|
240 |
+
'TR' => __( 'Turkey', 'if-menu' ),
|
241 |
+
'TM' => __( 'Turkmenistan', 'if-menu' ),
|
242 |
+
'TC' => __( 'Turks and Caicos Islands', 'if-menu' ),
|
243 |
+
'TV' => __( 'Tuvalu', 'if-menu' ),
|
244 |
+
'UG' => __( 'Uganda', 'if-menu' ),
|
245 |
+
'UA' => __( 'Ukraine', 'if-menu' ),
|
246 |
+
'AE' => __( 'United Arab Emirates', 'if-menu' ),
|
247 |
+
'GB' => __( 'United Kingdom (UK)', 'if-menu' ),
|
248 |
+
'US' => __( 'United States (US)', 'if-menu' ),
|
249 |
+
'UM' => __( 'United States (US) Minor Outlying Islands', 'if-menu' ),
|
250 |
+
'VI' => __( 'United States (US) Virgin Islands', 'if-menu' ),
|
251 |
+
'UY' => __( 'Uruguay', 'if-menu' ),
|
252 |
+
'UZ' => __( 'Uzbekistan', 'if-menu' ),
|
253 |
+
'VU' => __( 'Vanuatu', 'if-menu' ),
|
254 |
+
'VA' => __( 'Vatican', 'if-menu' ),
|
255 |
+
'VE' => __( 'Venezuela', 'if-menu' ),
|
256 |
+
'VN' => __( 'Vietnam', 'if-menu' ),
|
257 |
+
'WF' => __( 'Wallis and Futuna', 'if-menu' ),
|
258 |
+
'EH' => __( 'Western Sahara', 'if-menu' ),
|
259 |
+
'WS' => __( 'Samoa', 'if-menu' ),
|
260 |
+
'YE' => __( 'Yemen', 'if-menu' ),
|
261 |
+
'ZM' => __( 'Zambia', 'if-menu' ),
|
262 |
+
'ZW' => __( 'Zimbabwe', 'if-menu' ),
|
263 |
+
),
|
264 |
+
'condition' => function($item, $selectedOptions = array()) {
|
265 |
+
return in_array(get_user_country_code(), $selectedOptions);
|
266 |
+
},
|
267 |
+
'group' => __('User', 'if-menu')
|
268 |
+
);
|
269 |
+
|
270 |
+
|
271 |
+
// Third-party plugin integration - Groups
|
272 |
+
if (in_array('groups/groups.php', $activePlugins) && class_exists('Groups_Group')) {
|
273 |
+
$groupOptions = array();
|
274 |
+
foreach (Groups_Group::get_groups() as $group) {
|
275 |
+
$groupOptions[$group->group_id] = $group->name;
|
276 |
+
}
|
277 |
+
|
278 |
+
$conditions[] = array(
|
279 |
+
'id' => 'user-in-group',
|
280 |
+
'name' => __('Is in group', 'if-menu'),
|
281 |
+
'condition' => function($item, $selectedGroups = array()) {
|
282 |
+
$isInGroup = false;
|
283 |
+
$groupsUser = new Groups_User(get_current_user_id());
|
284 |
+
foreach ($selectedGroups as $groupId) {
|
285 |
+
if ($groupsUser->is_member($groupId)) {
|
286 |
+
$isInGroup = true;
|
287 |
+
}
|
288 |
+
}
|
289 |
+
return $isInGroup;
|
290 |
+
},
|
291 |
+
'options' => $groupOptions,
|
292 |
+
'group' => __('User', 'if-menu')
|
293 |
+
);
|
294 |
+
}
|
295 |
+
|
296 |
+
|
297 |
+
// Third-party plugin integration - WooCommerce Subscriptions
|
298 |
+
if (in_array('woocommerce-subscriptions/woocommerce-subscriptions.php', $activePlugins)) {
|
299 |
+
$subscriptionsOptions = array();
|
300 |
+
|
301 |
+
$subscriptions = get_posts(array(
|
302 |
+
'numberposts' => -1,
|
303 |
+
'post_type' => array('product', 'product-variation'),
|
304 |
+
'post_status' => 'publish',
|
305 |
+
'tax_query' => array(array(
|
306 |
+
'taxonomy' => 'product_type',
|
307 |
+
'field' => 'slug',
|
308 |
+
'terms' => array('subscription', 'variable-subscription')
|
309 |
+
))
|
310 |
+
));
|
311 |
+
|
312 |
+
foreach ($subscriptions as $subscription) {
|
313 |
+
$subscriptionsOptions[$subscription->ID] = $subscription->post_title;
|
314 |
+
}
|
315 |
+
|
316 |
+
$conditions[] = array(
|
317 |
+
'id' => 'woocommerce-subscriptions',
|
318 |
+
'name' => __('Has active subscription', 'if-menu'),
|
319 |
+
'condition' => function($item, $selectedSubscriptions = array()) {
|
320 |
+
$hasSubscription = false;
|
321 |
+
|
322 |
+
foreach ($selectedSubscriptions as $subscriptionId) {
|
323 |
+
if (wcs_user_has_subscription(0, $subscriptionId, 'active')) {
|
324 |
+
$hasSubscription = true;
|
325 |
+
}
|
326 |
+
}
|
327 |
+
|
328 |
+
return $hasSubscription;
|
329 |
+
},
|
330 |
+
'options' => $subscriptionsOptions,
|
331 |
+
'group' => __('User', 'if-menu')
|
332 |
+
);
|
333 |
+
}
|
334 |
+
|
335 |
+
|
336 |
+
// Third-party plugin integration - WishList Member
|
337 |
+
if (function_exists('wlmapi_the_levels')) {
|
338 |
+
$membershipLevelOptions = array();
|
339 |
+
$wishlistMembershipLevels = wlmapi_the_levels();
|
340 |
+
|
341 |
+
foreach ($wishlistMembershipLevels['levels']['level'] as $level) {
|
342 |
+
$membershipLevelOptions[$level['id']] = $level['name'];
|
343 |
+
}
|
344 |
+
|
345 |
+
$conditions[] = array(
|
346 |
+
'id' => 'wishlist-member',
|
347 |
+
'name' => __('WishList Membership Level', 'if-menu'),
|
348 |
+
'condition' => function($item, $membershipLevels = array()) {
|
349 |
+
$hasAccess = false;
|
350 |
+
$userId = get_current_user_id();
|
351 |
+
|
352 |
+
foreach ($membershipLevels as $level) {
|
353 |
+
if (wlmapi_is_user_a_member($level, $userId)) {
|
354 |
+
$hasAccess = true;
|
355 |
+
}
|
356 |
+
}
|
357 |
+
|
358 |
+
return $hasAccess;
|
359 |
+
},
|
360 |
+
'group' => __('User', 'if-menu')
|
361 |
+
);
|
362 |
+
}
|
363 |
+
|
364 |
+
|
365 |
+
return $conditions;
|
366 |
+
}
|
src/if-menu-nav-menu-4.5.php
ADDED
@@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Create HTML list of nav menu input items.
|
5 |
+
*
|
6 |
+
* @package WordPress
|
7 |
+
* @since 3.0.0
|
8 |
+
* @uses Walker_Nav_Menu
|
9 |
+
*/
|
10 |
+
class If_Menu_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Start the element output.
|
14 |
+
*
|
15 |
+
* @see Walker_Nav_Menu::start_el()
|
16 |
+
* @since 3.0.0
|
17 |
+
*
|
18 |
+
* @global int $_wp_nav_menu_max_depth
|
19 |
+
*
|
20 |
+
* @param string $output Passed by reference. Used to append additional content.
|
21 |
+
* @param object $item Menu item data object.
|
22 |
+
* @param int $depth Depth of menu item. Used for padding.
|
23 |
+
* @param array $args Not used.
|
24 |
+
* @param int $id Not used.
|
25 |
+
*/
|
26 |
+
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
|
27 |
+
global $_wp_nav_menu_max_depth;
|
28 |
+
$_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
|
29 |
+
|
30 |
+
ob_start();
|
31 |
+
$item_id = esc_attr( $item->ID );
|
32 |
+
$removed_args = array(
|
33 |
+
'action',
|
34 |
+
'customlink-tab',
|
35 |
+
'edit-menu-item',
|
36 |
+
'menu-item',
|
37 |
+
'page-tab',
|
38 |
+
'_wpnonce',
|
39 |
+
);
|
40 |
+
|
41 |
+
$original_title = '';
|
42 |
+
if ( 'taxonomy' == $item->type ) {
|
43 |
+
$original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
|
44 |
+
if ( is_wp_error( $original_title ) )
|
45 |
+
$original_title = false;
|
46 |
+
} elseif ( 'post_type' == $item->type ) {
|
47 |
+
$original_object = get_post( $item->object_id );
|
48 |
+
$original_title = get_the_title( $original_object->ID );
|
49 |
+
} elseif ( 'post_type_archive' == $item->type ) {
|
50 |
+
$original_object = get_post_type_object( $item->object );
|
51 |
+
if ( $original_object ) {
|
52 |
+
$original_title = $original_object->labels->archives;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
$classes = array(
|
57 |
+
'menu-item menu-item-depth-' . $depth,
|
58 |
+
'menu-item-' . esc_attr( $item->object ),
|
59 |
+
'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
|
60 |
+
);
|
61 |
+
|
62 |
+
$title = $item->title;
|
63 |
+
|
64 |
+
if ( ! empty( $item->_invalid ) ) {
|
65 |
+
$classes[] = 'menu-item-invalid';
|
66 |
+
/* translators: %s: title of menu item which is invalid */
|
67 |
+
$title = sprintf( __( '%s (Invalid)' ), $item->title );
|
68 |
+
} elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
|
69 |
+
$classes[] = 'pending';
|
70 |
+
/* translators: %s: title of menu item in draft status */
|
71 |
+
$title = sprintf( __('%s (Pending)'), $item->title );
|
72 |
+
}
|
73 |
+
|
74 |
+
$title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label;
|
75 |
+
|
76 |
+
$submenu_text = '';
|
77 |
+
if ( 0 == $depth )
|
78 |
+
$submenu_text = 'style="display: none;"';
|
79 |
+
|
80 |
+
?>
|
81 |
+
<li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
|
82 |
+
<div class="menu-item-bar">
|
83 |
+
<div class="menu-item-handle">
|
84 |
+
<span class="item-title">
|
85 |
+
<span class="menu-item-title"><?php echo esc_html( $title ); ?></span>
|
86 |
+
<span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span>
|
87 |
+
<?php
|
88 |
+
// This is the added section
|
89 |
+
do_action( 'wp_nav_menu_item_custom_title', $item_id, $item, $depth, $args );
|
90 |
+
// end added section
|
91 |
+
?>
|
92 |
+
</span>
|
93 |
+
<span class="item-controls">
|
94 |
+
<span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
|
95 |
+
<span class="item-order hide-if-js">
|
96 |
+
<a href="<?php
|
97 |
+
echo wp_nonce_url(
|
98 |
+
add_query_arg(
|
99 |
+
array(
|
100 |
+
'action' => 'move-up-menu-item',
|
101 |
+
'menu-item' => $item_id,
|
102 |
+
),
|
103 |
+
remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
|
104 |
+
),
|
105 |
+
'move-menu_item'
|
106 |
+
);
|
107 |
+
?>" class="item-move-up" aria-label="<?php esc_attr_e( 'Move up' ) ?>">↑</a>
|
108 |
+
|
|
109 |
+
<a href="<?php
|
110 |
+
echo wp_nonce_url(
|
111 |
+
add_query_arg(
|
112 |
+
array(
|
113 |
+
'action' => 'move-down-menu-item',
|
114 |
+
'menu-item' => $item_id,
|
115 |
+
),
|
116 |
+
remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
|
117 |
+
),
|
118 |
+
'move-menu_item'
|
119 |
+
);
|
120 |
+
?>" class="item-move-down" aria-label="<?php esc_attr_e( 'Move down' ) ?>">↓</a>
|
121 |
+
</span>
|
122 |
+
<a class="item-edit" id="edit-<?php echo $item_id; ?>" href="<?php
|
123 |
+
echo ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? admin_url( 'nav-menus.php' ) : add_query_arg( 'edit-menu-item', $item_id, remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) ) );
|
124 |
+
?>" aria-label="<?php esc_attr_e( 'Edit menu item' ); ?>"><?php _e( 'Edit' ); ?></a>
|
125 |
+
</span>
|
126 |
+
</div>
|
127 |
+
</div>
|
128 |
+
|
129 |
+
<div class="menu-item-settings wp-clearfix" id="menu-item-settings-<?php echo $item_id; ?>">
|
130 |
+
<?php if ( 'custom' == $item->type ) : ?>
|
131 |
+
<p class="field-url description description-wide">
|
132 |
+
<label for="edit-menu-item-url-<?php echo $item_id; ?>">
|
133 |
+
<?php _e( 'URL' ); ?><br />
|
134 |
+
<input type="text" id="edit-menu-item-url-<?php echo $item_id; ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->url ); ?>" />
|
135 |
+
</label>
|
136 |
+
</p>
|
137 |
+
<?php endif; ?>
|
138 |
+
<p class="description description-wide">
|
139 |
+
<label for="edit-menu-item-title-<?php echo $item_id; ?>">
|
140 |
+
<?php _e( 'Navigation Label' ); ?><br />
|
141 |
+
<input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
|
142 |
+
</label>
|
143 |
+
</p>
|
144 |
+
<p class="field-title-attribute field-attr-title description description-wide">
|
145 |
+
<label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
|
146 |
+
<?php _e( 'Title Attribute' ); ?><br />
|
147 |
+
<input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
|
148 |
+
</label>
|
149 |
+
</p>
|
150 |
+
<p class="field-link-target description">
|
151 |
+
<label for="edit-menu-item-target-<?php echo $item_id; ?>">
|
152 |
+
<input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked( $item->target, '_blank' ); ?> />
|
153 |
+
<?php _e( 'Open link in a new tab' ); ?>
|
154 |
+
</label>
|
155 |
+
</p>
|
156 |
+
<p class="field-css-classes description description-thin">
|
157 |
+
<label for="edit-menu-item-classes-<?php echo $item_id; ?>">
|
158 |
+
<?php _e( 'CSS Classes (optional)' ); ?><br />
|
159 |
+
<input type="text" id="edit-menu-item-classes-<?php echo $item_id; ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo $item_id; ?>]" value="<?php echo esc_attr( implode(' ', $item->classes ) ); ?>" />
|
160 |
+
</label>
|
161 |
+
</p>
|
162 |
+
<p class="field-xfn description description-thin">
|
163 |
+
<label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
|
164 |
+
<?php _e( 'Link Relationship (XFN)' ); ?><br />
|
165 |
+
<input type="text" id="edit-menu-item-xfn-<?php echo $item_id; ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->xfn ); ?>" />
|
166 |
+
</label>
|
167 |
+
</p>
|
168 |
+
<p class="field-description description description-wide">
|
169 |
+
<label for="edit-menu-item-description-<?php echo $item_id; ?>">
|
170 |
+
<?php _e( 'Description' ); ?><br />
|
171 |
+
<textarea id="edit-menu-item-description-<?php echo $item_id; ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo $item_id; ?>]"><?php echo esc_html( $item->description ); // textarea_escaped ?></textarea>
|
172 |
+
<span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
|
173 |
+
</label>
|
174 |
+
</p>
|
175 |
+
|
176 |
+
<?php
|
177 |
+
// This is the added section
|
178 |
+
do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
|
179 |
+
// end added section
|
180 |
+
?>
|
181 |
+
|
182 |
+
<p class="field-move hide-if-no-js description description-wide">
|
183 |
+
<label>
|
184 |
+
<span><?php _e( 'Move' ); ?></span>
|
185 |
+
<a href="#" class="menus-move menus-move-up" data-dir="up"><?php _e( 'Up one' ); ?></a>
|
186 |
+
<a href="#" class="menus-move menus-move-down" data-dir="down"><?php _e( 'Down one' ); ?></a>
|
187 |
+
<a href="#" class="menus-move menus-move-left" data-dir="left"></a>
|
188 |
+
<a href="#" class="menus-move menus-move-right" data-dir="right"></a>
|
189 |
+
<a href="#" class="menus-move menus-move-top" data-dir="top"><?php _e( 'To the top' ); ?></a>
|
190 |
+
</label>
|
191 |
+
</p>
|
192 |
+
|
193 |
+
<div class="menu-item-actions description-wide submitbox">
|
194 |
+
<?php if ( 'custom' != $item->type && $original_title !== false ) : ?>
|
195 |
+
<p class="link-to-original">
|
196 |
+
<?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
|
197 |
+
</p>
|
198 |
+
<?php endif; ?>
|
199 |
+
<a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php
|
200 |
+
echo wp_nonce_url(
|
201 |
+
add_query_arg(
|
202 |
+
array(
|
203 |
+
'action' => 'delete-menu-item',
|
204 |
+
'menu-item' => $item_id,
|
205 |
+
),
|
206 |
+
admin_url( 'nav-menus.php' )
|
207 |
+
),
|
208 |
+
'delete-menu_item_' . $item_id
|
209 |
+
); ?>"><?php _e( 'Remove' ); ?></a> <span class="meta-sep hide-if-no-js"> | </span> <a class="item-cancel submitcancel hide-if-no-js" id="cancel-<?php echo $item_id; ?>" href="<?php echo esc_url( add_query_arg( array( 'edit-menu-item' => $item_id, 'cancel' => time() ), admin_url( 'nav-menus.php' ) ) );
|
210 |
+
?>#menu-item-settings-<?php echo $item_id; ?>"><?php _e('Cancel'); ?></a>
|
211 |
+
</div>
|
212 |
+
|
213 |
+
<input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
|
214 |
+
<input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" />
|
215 |
+
<input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
|
216 |
+
<input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_item_parent ); ?>" />
|
217 |
+
<input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
|
218 |
+
<input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
|
219 |
+
</div><!-- .menu-item-settings-->
|
220 |
+
<ul class="menu-item-transport"></ul>
|
221 |
+
<?php
|
222 |
+
$output .= ob_get_clean();
|
223 |
+
}
|
224 |
+
|
225 |
+
} // Walker_Nav_Menu_Edit
|
src/if-menu-nav-menu-4.7.php
ADDED
@@ -0,0 +1,215 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Create HTML list of nav menu input items.
|
5 |
+
*
|
6 |
+
* @package WordPress
|
7 |
+
* @since 3.0.0
|
8 |
+
* @uses Walker_Nav_Menu
|
9 |
+
*/
|
10 |
+
class If_Menu_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Start the element output.
|
14 |
+
*
|
15 |
+
* @see Walker_Nav_Menu::start_el()
|
16 |
+
* @since 3.0.0
|
17 |
+
*
|
18 |
+
* @global int $_wp_nav_menu_max_depth
|
19 |
+
*
|
20 |
+
* @param string $output Passed by reference. Used to append additional content.
|
21 |
+
* @param object $item Menu item data object.
|
22 |
+
* @param int $depth Depth of menu item. Used for padding.
|
23 |
+
* @param array $args Not used.
|
24 |
+
* @param int $id Not used.
|
25 |
+
*/
|
26 |
+
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
|
27 |
+
global $_wp_nav_menu_max_depth;
|
28 |
+
$_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
|
29 |
+
ob_start();
|
30 |
+
$item_id = esc_attr( $item->ID );
|
31 |
+
$removed_args = array(
|
32 |
+
'action',
|
33 |
+
'customlink-tab',
|
34 |
+
'edit-menu-item',
|
35 |
+
'menu-item',
|
36 |
+
'page-tab',
|
37 |
+
'_wpnonce',
|
38 |
+
);
|
39 |
+
$original_title = false;
|
40 |
+
if ( 'taxonomy' == $item->type ) {
|
41 |
+
$original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
|
42 |
+
if ( is_wp_error( $original_title ) )
|
43 |
+
$original_title = false;
|
44 |
+
} elseif ( 'post_type' == $item->type ) {
|
45 |
+
$original_object = get_post( $item->object_id );
|
46 |
+
$original_title = get_the_title( $original_object->ID );
|
47 |
+
} elseif ( 'post_type_archive' == $item->type ) {
|
48 |
+
$original_object = get_post_type_object( $item->object );
|
49 |
+
if ( $original_object ) {
|
50 |
+
$original_title = $original_object->labels->archives;
|
51 |
+
}
|
52 |
+
}
|
53 |
+
$classes = array(
|
54 |
+
'menu-item menu-item-depth-' . $depth,
|
55 |
+
'menu-item-' . esc_attr( $item->object ),
|
56 |
+
'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
|
57 |
+
);
|
58 |
+
$title = $item->title;
|
59 |
+
if ( ! empty( $item->_invalid ) ) {
|
60 |
+
$classes[] = 'menu-item-invalid';
|
61 |
+
/* translators: %s: title of menu item which is invalid */
|
62 |
+
$title = sprintf( __( '%s (Invalid)' ), $item->title );
|
63 |
+
} elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
|
64 |
+
$classes[] = 'pending';
|
65 |
+
/* translators: %s: title of menu item in draft status */
|
66 |
+
$title = sprintf( __('%s (Pending)'), $item->title );
|
67 |
+
}
|
68 |
+
$title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label;
|
69 |
+
$submenu_text = '';
|
70 |
+
if ( 0 == $depth )
|
71 |
+
$submenu_text = 'style="display: none;"';
|
72 |
+
?>
|
73 |
+
<li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
|
74 |
+
<div class="menu-item-bar">
|
75 |
+
<div class="menu-item-handle">
|
76 |
+
<span class="item-title">
|
77 |
+
<span class="menu-item-title"><?php echo esc_html( $title ); ?></span>
|
78 |
+
<span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span>
|
79 |
+
<?php
|
80 |
+
// This is the added section
|
81 |
+
do_action( 'wp_nav_menu_item_custom_title', $item_id, $item, $depth, $args );
|
82 |
+
// end added section
|
83 |
+
?>
|
84 |
+
</span>
|
85 |
+
<span class="item-controls">
|
86 |
+
<span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
|
87 |
+
<span class="item-order hide-if-js">
|
88 |
+
<a href="<?php
|
89 |
+
echo wp_nonce_url(
|
90 |
+
add_query_arg(
|
91 |
+
array(
|
92 |
+
'action' => 'move-up-menu-item',
|
93 |
+
'menu-item' => $item_id,
|
94 |
+
),
|
95 |
+
remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
|
96 |
+
),
|
97 |
+
'move-menu_item'
|
98 |
+
);
|
99 |
+
?>" class="item-move-up" aria-label="<?php esc_attr_e( 'Move up' ) ?>">↑</a>
|
100 |
+
|
|
101 |
+
<a href="<?php
|
102 |
+
echo wp_nonce_url(
|
103 |
+
add_query_arg(
|
104 |
+
array(
|
105 |
+
'action' => 'move-down-menu-item',
|
106 |
+
'menu-item' => $item_id,
|
107 |
+
),
|
108 |
+
remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
|
109 |
+
),
|
110 |
+
'move-menu_item'
|
111 |
+
);
|
112 |
+
?>" class="item-move-down" aria-label="<?php esc_attr_e( 'Move down' ) ?>">↓</a>
|
113 |
+
</span>
|
114 |
+
<a class="item-edit" id="edit-<?php echo $item_id; ?>" href="<?php
|
115 |
+
echo ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? admin_url( 'nav-menus.php' ) : add_query_arg( 'edit-menu-item', $item_id, remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) ) );
|
116 |
+
?>" aria-label="<?php esc_attr_e( 'Edit menu item' ); ?>"><?php _e( 'Edit' ); ?></a>
|
117 |
+
</span>
|
118 |
+
</div>
|
119 |
+
</div>
|
120 |
+
|
121 |
+
<div class="menu-item-settings wp-clearfix" id="menu-item-settings-<?php echo $item_id; ?>">
|
122 |
+
<?php if ( 'custom' == $item->type ) : ?>
|
123 |
+
<p class="field-url description description-wide">
|
124 |
+
<label for="edit-menu-item-url-<?php echo $item_id; ?>">
|
125 |
+
<?php _e( 'URL' ); ?><br />
|
126 |
+
<input type="text" id="edit-menu-item-url-<?php echo $item_id; ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->url ); ?>" />
|
127 |
+
</label>
|
128 |
+
</p>
|
129 |
+
<?php endif; ?>
|
130 |
+
<p class="description description-wide">
|
131 |
+
<label for="edit-menu-item-title-<?php echo $item_id; ?>">
|
132 |
+
<?php _e( 'Navigation Label' ); ?><br />
|
133 |
+
<input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
|
134 |
+
</label>
|
135 |
+
</p>
|
136 |
+
<p class="field-title-attribute field-attr-title description description-wide">
|
137 |
+
<label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
|
138 |
+
<?php _e( 'Title Attribute' ); ?><br />
|
139 |
+
<input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
|
140 |
+
</label>
|
141 |
+
</p>
|
142 |
+
<p class="field-link-target description">
|
143 |
+
<label for="edit-menu-item-target-<?php echo $item_id; ?>">
|
144 |
+
<input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked( $item->target, '_blank' ); ?> />
|
145 |
+
<?php _e( 'Open link in a new tab' ); ?>
|
146 |
+
</label>
|
147 |
+
</p>
|
148 |
+
<p class="field-css-classes description description-thin">
|
149 |
+
<label for="edit-menu-item-classes-<?php echo $item_id; ?>">
|
150 |
+
<?php _e( 'CSS Classes (optional)' ); ?><br />
|
151 |
+
<input type="text" id="edit-menu-item-classes-<?php echo $item_id; ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo $item_id; ?>]" value="<?php echo esc_attr( implode(' ', $item->classes ) ); ?>" />
|
152 |
+
</label>
|
153 |
+
</p>
|
154 |
+
<p class="field-xfn description description-thin">
|
155 |
+
<label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
|
156 |
+
<?php _e( 'Link Relationship (XFN)' ); ?><br />
|
157 |
+
<input type="text" id="edit-menu-item-xfn-<?php echo $item_id; ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->xfn ); ?>" />
|
158 |
+
</label>
|
159 |
+
</p>
|
160 |
+
<p class="field-description description description-wide">
|
161 |
+
<label for="edit-menu-item-description-<?php echo $item_id; ?>">
|
162 |
+
<?php _e( 'Description' ); ?><br />
|
163 |
+
<textarea id="edit-menu-item-description-<?php echo $item_id; ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo $item_id; ?>]"><?php echo esc_html( $item->description ); // textarea_escaped ?></textarea>
|
164 |
+
<span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
|
165 |
+
</label>
|
166 |
+
</p>
|
167 |
+
|
168 |
+
<?php
|
169 |
+
// This is the added section
|
170 |
+
do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
|
171 |
+
// end added section
|
172 |
+
?>
|
173 |
+
|
174 |
+
<fieldset class="field-move hide-if-no-js description description-wide">
|
175 |
+
<span class="field-move-visual-label" aria-hidden="true"><?php _e( 'Move' ); ?></span>
|
176 |
+
<button type="button" class="button-link menus-move menus-move-up" data-dir="up"><?php _e( 'Up one' ); ?></button>
|
177 |
+
<button type="button" class="button-link menus-move menus-move-down" data-dir="down"><?php _e( 'Down one' ); ?></button>
|
178 |
+
<button type="button" class="button-link menus-move menus-move-left" data-dir="left"></button>
|
179 |
+
<button type="button" class="button-link menus-move menus-move-right" data-dir="right"></button>
|
180 |
+
<button type="button" class="button-link menus-move menus-move-top" data-dir="top"><?php _e( 'To the top' ); ?></button>
|
181 |
+
</fieldset>
|
182 |
+
|
183 |
+
<div class="menu-item-actions description-wide submitbox">
|
184 |
+
<?php if ( 'custom' != $item->type && $original_title !== false ) : ?>
|
185 |
+
<p class="link-to-original">
|
186 |
+
<?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
|
187 |
+
</p>
|
188 |
+
<?php endif; ?>
|
189 |
+
<a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php
|
190 |
+
echo wp_nonce_url(
|
191 |
+
add_query_arg(
|
192 |
+
array(
|
193 |
+
'action' => 'delete-menu-item',
|
194 |
+
'menu-item' => $item_id,
|
195 |
+
),
|
196 |
+
admin_url( 'nav-menus.php' )
|
197 |
+
),
|
198 |
+
'delete-menu_item_' . $item_id
|
199 |
+
); ?>"><?php _e( 'Remove' ); ?></a> <span class="meta-sep hide-if-no-js"> | </span> <a class="item-cancel submitcancel hide-if-no-js" id="cancel-<?php echo $item_id; ?>" href="<?php echo esc_url( add_query_arg( array( 'edit-menu-item' => $item_id, 'cancel' => time() ), admin_url( 'nav-menus.php' ) ) );
|
200 |
+
?>#menu-item-settings-<?php echo $item_id; ?>"><?php _e('Cancel'); ?></a>
|
201 |
+
</div>
|
202 |
+
|
203 |
+
<input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
|
204 |
+
<input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" />
|
205 |
+
<input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
|
206 |
+
<input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_item_parent ); ?>" />
|
207 |
+
<input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
|
208 |
+
<input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
|
209 |
+
</div><!-- .menu-item-settings-->
|
210 |
+
<ul class="menu-item-transport"></ul>
|
211 |
+
<?php
|
212 |
+
$output .= ob_get_clean();
|
213 |
+
}
|
214 |
+
|
215 |
+
} // Walker_Nav_Menu_Edit
|
src/if-menu-nav-menu.php
ADDED
@@ -0,0 +1,221 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Create HTML list of nav menu input items.
|
5 |
+
*
|
6 |
+
* @package WordPress
|
7 |
+
* @since 3.0.0
|
8 |
+
* @uses Walker_Nav_Menu
|
9 |
+
*/
|
10 |
+
class If_Menu_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Start the element output.
|
14 |
+
*
|
15 |
+
* @see Walker_Nav_Menu::start_el()
|
16 |
+
* @since 3.0.0
|
17 |
+
*
|
18 |
+
* @global int $_wp_nav_menu_max_depth
|
19 |
+
*
|
20 |
+
* @param string $output Passed by reference. Used to append additional content.
|
21 |
+
* @param object $item Menu item data object.
|
22 |
+
* @param int $depth Depth of menu item. Used for padding.
|
23 |
+
* @param array $args Not used.
|
24 |
+
* @param int $id Not used.
|
25 |
+
*/
|
26 |
+
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
|
27 |
+
global $_wp_nav_menu_max_depth;
|
28 |
+
$_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
|
29 |
+
|
30 |
+
ob_start();
|
31 |
+
$item_id = esc_attr( $item->ID );
|
32 |
+
$removed_args = array(
|
33 |
+
'action',
|
34 |
+
'customlink-tab',
|
35 |
+
'edit-menu-item',
|
36 |
+
'menu-item',
|
37 |
+
'page-tab',
|
38 |
+
'_wpnonce',
|
39 |
+
);
|
40 |
+
|
41 |
+
$original_title = '';
|
42 |
+
if ( 'taxonomy' == $item->type ) {
|
43 |
+
$original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
|
44 |
+
if ( is_wp_error( $original_title ) )
|
45 |
+
$original_title = false;
|
46 |
+
} elseif ( 'post_type' == $item->type ) {
|
47 |
+
$original_object = get_post( $item->object_id );
|
48 |
+
$original_title = get_the_title( $original_object->ID );
|
49 |
+
}
|
50 |
+
|
51 |
+
$classes = array(
|
52 |
+
'menu-item menu-item-depth-' . $depth,
|
53 |
+
'menu-item-' . esc_attr( $item->object ),
|
54 |
+
'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
|
55 |
+
);
|
56 |
+
|
57 |
+
$title = $item->title;
|
58 |
+
|
59 |
+
if ( ! empty( $item->_invalid ) ) {
|
60 |
+
$classes[] = 'menu-item-invalid';
|
61 |
+
/* translators: %s: title of menu item which is invalid */
|
62 |
+
$title = sprintf( __( '%s (Invalid)' ), $item->title );
|
63 |
+
} elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
|
64 |
+
$classes[] = 'pending';
|
65 |
+
/* translators: %s: title of menu item in draft status */
|
66 |
+
$title = sprintf( __('%s (Pending)'), $item->title );
|
67 |
+
}
|
68 |
+
|
69 |
+
$title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label;
|
70 |
+
|
71 |
+
$submenu_text = '';
|
72 |
+
if ( 0 == $depth )
|
73 |
+
$submenu_text = 'style="display: none;"';
|
74 |
+
|
75 |
+
?>
|
76 |
+
<li id="menu-item-<?php echo esc_attr( $item_id ); ?>" class="<?php echo esc_attr( implode(' ', $classes ) ); ?>">
|
77 |
+
<div class="menu-item-bar">
|
78 |
+
<div class="menu-item-handle">
|
79 |
+
<span class="item-title">
|
80 |
+
<span class="menu-item-title"><?php echo esc_html( $title ); ?></span>
|
81 |
+
<span class="is-submenu" <?php echo $submenu_text; ?>><?php esc_html_e( 'sub item' ); ?></span>
|
82 |
+
|
83 |
+
<?php
|
84 |
+
// This is the added section
|
85 |
+
do_action( 'wp_nav_menu_item_custom_title', $item_id, $item, $depth, $args );
|
86 |
+
// end added section
|
87 |
+
?>
|
88 |
+
</span>
|
89 |
+
<span class="item-controls">
|
90 |
+
<span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
|
91 |
+
<span class="item-order hide-if-js">
|
92 |
+
<a href="<?php
|
93 |
+
echo esc_url( wp_nonce_url(
|
94 |
+
add_query_arg(
|
95 |
+
array(
|
96 |
+
'action' => 'move-up-menu-item',
|
97 |
+
'menu-item' => $item_id,
|
98 |
+
),
|
99 |
+
remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
|
100 |
+
),
|
101 |
+
'move-menu_item'
|
102 |
+
) );
|
103 |
+
?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">↑</abbr></a>
|
104 |
+
|
|
105 |
+
<a href="<?php
|
106 |
+
echo esc_url( wp_nonce_url(
|
107 |
+
add_query_arg(
|
108 |
+
array(
|
109 |
+
'action' => 'move-down-menu-item',
|
110 |
+
'menu-item' => $item_id,
|
111 |
+
),
|
112 |
+
remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
|
113 |
+
) ),
|
114 |
+
'move-menu_item'
|
115 |
+
);
|
116 |
+
?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">↓</abbr></a>
|
117 |
+
</span>
|
118 |
+
<a class="item-edit" id="edit-<?php echo esc_attr( $item_id ); ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" href="<?php
|
119 |
+
echo ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? admin_url( 'nav-menus.php' ) : add_query_arg( 'edit-menu-item', $item_id, remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) ) );
|
120 |
+
?>"><?php esc_html_e( 'Edit Menu Item' ); ?></a>
|
121 |
+
</span>
|
122 |
+
</div>
|
123 |
+
</div>
|
124 |
+
|
125 |
+
<div class="menu-item-settings" id="menu-item-settings-<?php echo esc_attr( $item_id ); ?>">
|
126 |
+
<?php if ( 'custom' == $item->type ) : ?>
|
127 |
+
<p class="field-url description description-wide">
|
128 |
+
<label for="edit-menu-item-url-<?php echo esc_attr( $item_id ); ?>">
|
129 |
+
<?php esc_html_e( 'URL' ); ?><br />
|
130 |
+
<input type="text" id="edit-menu-item-url-<?php echo esc_attr( $item_id ); ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->url ); ?>" />
|
131 |
+
</label>
|
132 |
+
</p>
|
133 |
+
<?php endif; ?>
|
134 |
+
<p class="description description-wide">
|
135 |
+
<label for="edit-menu-item-title-<?php echo esc_attr( $item_id ); ?>">
|
136 |
+
<?php esc_html_e( 'Navigation Label' ); ?><br />
|
137 |
+
<input type="text" id="edit-menu-item-title-<?php echo esc( $item_id ); ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
|
138 |
+
</label>
|
139 |
+
</p>
|
140 |
+
<p class="field-title-attribute description description-wide">
|
141 |
+
<label for="edit-menu-item-attr-title-<?php echo esc_attr($item_id); ?>">
|
142 |
+
<?php esc_html_e( 'Title Attribute' ); ?><br />
|
143 |
+
<input type="text" id="edit-menu-item-attr-title-<?php echo esc_attr($item_id); ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
|
144 |
+
</label>
|
145 |
+
</p>
|
146 |
+
<p class="field-link-target description">
|
147 |
+
<label for="edit-menu-item-target-<?php echo esc_attr($item_id); ?>">
|
148 |
+
<input type="checkbox" id="edit-menu-item-target-<?php echo esc_attr( $item_id ); ?>" value="_blank" name="menu-item-target[<?php echo esc_attr( $item_id ); ?>]"<?php checked( $item->target, '_blank' ); ?> />
|
149 |
+
<?php esc_html_e( 'Open link in a new window/tab' ); ?>
|
150 |
+
</label>
|
151 |
+
</p>
|
152 |
+
<p class="field-css-classes description description-thin">
|
153 |
+
<label for="edit-menu-item-classes-<?php echo esc_attr( $item_id ); ?>">
|
154 |
+
<?php esc_html_e( 'CSS Classes (optional)' ); ?><br />
|
155 |
+
<input type="text" id="edit-menu-item-classes-<?php echo esc_attr( $item_id ); ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( implode(' ', $item->classes ) ); ?>" />
|
156 |
+
</label>
|
157 |
+
</p>
|
158 |
+
<p class="field-xfn description description-thin">
|
159 |
+
<label for="edit-menu-item-xfn-<?php echo esc_attr( $item_id ); ?>">
|
160 |
+
<?php esc_html_e( 'Link Relationship (XFN)' ); ?><br />
|
161 |
+
<input type="text" id="edit-menu-item-xfn-<?php echo esc_attr( $item_id ); ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->xfn ); ?>" />
|
162 |
+
</label>
|
163 |
+
</p>
|
164 |
+
<p class="field-description description description-wide">
|
165 |
+
<label for="edit-menu-item-description-<?php echo esc_attr( $item_id ); ?>">
|
166 |
+
<?php esc_html_e( 'Description' ); ?><br />
|
167 |
+
<textarea id="edit-menu-item-description-<?php echo esc_attr( $item_id ); ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo esc_attr( $item_id ); ?>]"><?php echo esc_html( $item->description ); // textarea_escaped ?></textarea>
|
168 |
+
<span class="description"><?php esc_html_e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
|
169 |
+
</label>
|
170 |
+
</p>
|
171 |
+
|
172 |
+
<?php
|
173 |
+
// This is the added section
|
174 |
+
do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
|
175 |
+
// end added section
|
176 |
+
?>
|
177 |
+
|
178 |
+
<p class="field-move hide-if-no-js description description-wide">
|
179 |
+
<label>
|
180 |
+
<span><?php esc_html_e( 'Move' ); ?></span>
|
181 |
+
<a href="#" class="menus-move menus-move-up" data-dir="up"><?php esc_html_e( 'Up one' ); ?></a>
|
182 |
+
<a href="#" class="menus-move menus-move-down" data-dir="down"><?php esc_html_e( 'Down one' ); ?></a>
|
183 |
+
<a href="#" class="menus-move menus-move-left" data-dir="left"></a>
|
184 |
+
<a href="#" class="menus-move menus-move-right" data-dir="right"></a>
|
185 |
+
<a href="#" class="menus-move menus-move-top" data-dir="top"><?php esc_html_e( 'To the top' ); ?></a>
|
186 |
+
</label>
|
187 |
+
</p>
|
188 |
+
|
189 |
+
<div class="menu-item-actions description-wide submitbox">
|
190 |
+
<?php if ( 'custom' != $item->type && $original_title !== false ) : ?>
|
191 |
+
<p class="link-to-original">
|
192 |
+
<?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
|
193 |
+
</p>
|
194 |
+
<?php endif; ?>
|
195 |
+
<a class="item-delete submitdelete deletion" id="delete-<?php echo esc_attr( $item_id ); ?>" href="<?php
|
196 |
+
echo esc_url( wp_nonce_url(
|
197 |
+
add_query_arg(
|
198 |
+
array(
|
199 |
+
'action' => 'delete-menu-item',
|
200 |
+
'menu-item' => $item_id,
|
201 |
+
),
|
202 |
+
admin_url( 'nav-menus.php' )
|
203 |
+
),
|
204 |
+
'delete-menu_item_' . $item_id
|
205 |
+
) ); ?>"><?php esc_html_e( 'Remove' ); ?></a> <span class="meta-sep hide-if-no-js"> | </span> <a class="item-cancel submitcancel hide-if-no-js" id="cancel-<?php echo esc_attr( $item_id ); ?>" href="<?php echo esc_url( add_query_arg( array( 'edit-menu-item' => $item_id, 'cancel' => time() ), admin_url( 'nav-menus.php' ) ) );
|
206 |
+
?>#menu-item-settings-<?php echo esc_attr( $item_id ); ?>"><?php esc_html_e('Cancel'); ?></a>
|
207 |
+
</div>
|
208 |
+
|
209 |
+
<input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item_id ); ?>" />
|
210 |
+
<input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" />
|
211 |
+
<input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
|
212 |
+
<input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->menu_item_parent ); ?>" />
|
213 |
+
<input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
|
214 |
+
<input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
|
215 |
+
</div><!-- .menu-item-settings-->
|
216 |
+
<ul class="menu-item-transport"></ul>
|
217 |
+
<?php
|
218 |
+
$output .= ob_get_clean();
|
219 |
+
}
|
220 |
+
|
221 |
+
} // Walker_Nav_Menu_Edit
|
src/user-info.php
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
// Get visitor's IP
|
5 |
+
|
6 |
+
if (!function_exists('get_user_ip')) {
|
7 |
+
function get_user_ip() {
|
8 |
+
return apply_filters('user_ip', '');
|
9 |
+
}
|
10 |
+
}
|
11 |
+
|
12 |
+
add_filter('user_ip', 'if_menu_user_ip');
|
13 |
+
|
14 |
+
function if_menu_user_ip($ip = '') {
|
15 |
+
if (empty($ip)) {
|
16 |
+
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) {
|
17 |
+
if (array_key_exists($key, $_SERVER) === true) {
|
18 |
+
foreach (array_map('trim', explode(',', $_SERVER[$key])) as $ip) {
|
19 |
+
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) {
|
20 |
+
return $ip;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
}
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
return $ip;
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
// Get visitor's Country Code, ex: US, ES, etc / XX or empty = Unknown
|
33 |
+
|
34 |
+
if (!function_exists('get_user_country_code')) {
|
35 |
+
function get_user_country_code() {
|
36 |
+
return strtoupper(apply_filters('user_country_code', ''));
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
add_filter('user_country_code', 'if_menu_user_country_code_woocommerce');
|
41 |
+
add_filter('user_country_code', 'if_menu_user_country_code_cloudflare');
|
42 |
+
add_filter('user_country_code', 'if_menu_user_country_code_appengine');
|
43 |
+
add_filter('user_country_code', 'if_menu_user_country_code_cloudfront');
|
44 |
+
add_filter('user_country_code', 'if_menu_user_country_code_geoip');
|
45 |
+
add_filter('user_country_code', 'if_menu_user_country_code_blueapis');
|
46 |
+
|
47 |
+
function if_menu_user_country_code_woocommerce($countryCode = '') {
|
48 |
+
if (!$countryCode && class_exists('WC_Geolocation')) {
|
49 |
+
$location = WC_Geolocation::geolocate_ip();
|
50 |
+
if ($location['country'] && !in_array($location['country'], array('A1', 'A2', 'EU', 'AP'))) {
|
51 |
+
$countryCode = $location['country'];
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
return $countryCode;
|
56 |
+
}
|
57 |
+
|
58 |
+
function if_menu_user_country_code_cloudflare($countryCode = '') {
|
59 |
+
if (!$countryCode && isset($_SERVER['HTTP_CF_IPCOUNTRY']) && $_SERVER['HTTP_CF_IPCOUNTRY'] && $_SERVER['HTTP_CF_IPCOUNTRY'] !== 'XX') {
|
60 |
+
$countryCode = $_SERVER['HTTP_CF_IPCOUNTRY'];
|
61 |
+
}
|
62 |
+
|
63 |
+
return $countryCode;
|
64 |
+
}
|
65 |
+
|
66 |
+
function if_menu_user_country_code_appengine($countryCode = '') {
|
67 |
+
if (!$countryCode && isset($_SERVER['X-AppEngine-country']) && $_SERVER['X-AppEngine-country'] && $_SERVER['X-AppEngine-country'] !== 'ZZ') {
|
68 |
+
$countryCode = $_SERVER['X-AppEngine-country'];
|
69 |
+
}
|
70 |
+
|
71 |
+
return $countryCode;
|
72 |
+
}
|
73 |
+
|
74 |
+
function if_menu_user_country_code_cloudfront($countryCode = '') {
|
75 |
+
if (!$countryCode && isset($_SERVER['CloudFront-Viewer-Country']) && $_SERVER['CloudFront-Viewer-Country']) {
|
76 |
+
$countryCode = $_SERVER['CloudFront-Viewer-Country'];
|
77 |
+
}
|
78 |
+
|
79 |
+
return $countryCode;
|
80 |
+
}
|
81 |
+
|
82 |
+
function if_menu_user_country_code_geoip($countryCode = '') {
|
83 |
+
if (!$countryCode && isset($_SERVER['GEOIP_COUNTRY_CODE']) && $_SERVER['GEOIP_COUNTRY_CODE'] && !in_array($_SERVER['GEOIP_COUNTRY_CODE'], array('A1', 'A2', 'EU', 'AP'))) {
|
84 |
+
$countryCode = $_SERVER['GEOIP_COUNTRY_CODE'];
|
85 |
+
}
|
86 |
+
|
87 |
+
if (!$countryCode && isset($_SERVER['HTTP_X_COUNTRY_CODE']) && $_SERVER['HTTP_X_COUNTRY_CODE']) {
|
88 |
+
$countryCode = $_SERVER['HTTP_X_COUNTRY_CODE'];
|
89 |
+
}
|
90 |
+
|
91 |
+
return $countryCode;
|
92 |
+
}
|
93 |
+
|
94 |
+
function if_menu_user_country_code_blueapis($countryCode = '') {
|
95 |
+
if (!$countryCode) {
|
96 |
+
$ip = get_user_ip();
|
97 |
+
|
98 |
+
if (false === ($countryCode = get_transient('ip-country-code-' . sanitize_key($ip)))) {
|
99 |
+
$request = wp_remote_get('https://apis.blue/ip/' . $ip . '?key=layered-if-menu');
|
100 |
+
$data = json_decode(wp_remote_retrieve_body($request) ?: '[]');
|
101 |
+
if (isset($data->country) && $data->country) {
|
102 |
+
$countryCode = $data->country;
|
103 |
+
set_transient('ip-country-code-' . sanitize_key($ip), $countryCode, WEEK_IN_SECONDS);
|
104 |
+
} else {
|
105 |
+
$countryCode = '';
|
106 |
+
}
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
return $countryCode;
|
111 |
+
}
|