Version Description
- Updated the appearance of the settings page to match the admin CSS changes introduced in WordPress 5.3.
- Fixed inconsistent dialog title bar colours that could occur when another plugin loaded the default WP dialog styles.
- Fixed a bug where certain top level menus could stay permanently highlighted because some of their submenus were hidden via CSS/JS and unclickable.
- When there's an error loading the menu configuration (e.g. because it's in an incompatible format), the plugin will now display an admin notice instead of letting through an uncaught exception.
- Removed the link to Visual Admin Customizer from the plugin settings page.
- Tested up to WP 5.3.
Download this release
Release Info
| Developer | whiteshadow |
| Plugin | |
| Version | 1.9.2 |
| Comparing to | |
| See all releases | |
Code changes from version 1.9.1 to 1.9.2
- css/_boxes.scss +87 -0
- css/_indeterminate-checkbox.scss +24 -0
- css/menu-editor.css +59 -16
- css/menu-editor.scss +136 -76
- css/screen-meta.css +8 -5
- css/style-classic.css +10 -8
- css/style-modern-one.css +7 -9
- css/style-modern-one.scss +47 -45
- includes/editor-page.php +1 -20
- includes/menu-editor-core.php +43 -18
- includes/menu.php +18 -3
- js/actor-manager.js +60 -0
- js/actor-manager.ts +65 -0
- menu-editor.php +1 -1
- modules/access-editor/access-editor-template.php +7 -1
- modules/actor-selector/actor-selector.js +20 -0
- modules/actor-selector/actor-selector.ts +20 -0
- modules/highlight-new-menus/assets/highlight-menus.js +15 -2
- modules/highlight-new-menus/wsNewMenuHighlighter.php +1 -1
- modules/tweaks/default-tweaks.php +0 -21
- modules/tweaks/tweaks-template.php +0 -13
- modules/tweaks/tweaks.php +0 -158
- readme.txt +10 -2
css/_boxes.scss
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
$amePostboxBorderColor: #ccd0d4; //Was #e5e5e5 before WP 5.3.
|
| 2 |
+
|
| 3 |
+
@mixin ame-emulated-postbox($toggleWidth: 36px, $horizontalPadding: 12px) {
|
| 4 |
+
$borderColor: $amePostboxBorderColor;
|
| 5 |
+
$headerBackground: #fff;
|
| 6 |
+
|
| 7 |
+
position: relative;
|
| 8 |
+
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
|
| 9 |
+
background: $headerBackground;
|
| 10 |
+
|
| 11 |
+
margin-bottom: 20px;
|
| 12 |
+
|
| 13 |
+
.ws-ame-postbox-header {
|
| 14 |
+
position: relative;
|
| 15 |
+
font-size: 14px;
|
| 16 |
+
margin: 0;
|
| 17 |
+
line-height: 1.4;
|
| 18 |
+
|
| 19 |
+
border: 1px solid $borderColor;
|
| 20 |
+
|
| 21 |
+
h3 {
|
| 22 |
+
padding: 10px $horizontalPadding;
|
| 23 |
+
margin: 0;
|
| 24 |
+
font-size: 1em;
|
| 25 |
+
line-height: 1;
|
| 26 |
+
white-space: nowrap;
|
| 27 |
+
text-overflow: ellipsis;
|
| 28 |
+
overflow: hidden;
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
.ws-ame-postbox-toggle {
|
| 33 |
+
color: #72777c;
|
| 34 |
+
background: $headerBackground;
|
| 35 |
+
|
| 36 |
+
display: block;
|
| 37 |
+
font: normal 20px/1 dashicons;
|
| 38 |
+
text-align: center;
|
| 39 |
+
cursor: pointer;
|
| 40 |
+
border: none;
|
| 41 |
+
|
| 42 |
+
position: absolute;
|
| 43 |
+
top: 0;
|
| 44 |
+
right: 0;
|
| 45 |
+
bottom: 0;
|
| 46 |
+
width: $toggleWidth;
|
| 47 |
+
height: 100%;
|
| 48 |
+
padding: 0;
|
| 49 |
+
|
| 50 |
+
&:hover {
|
| 51 |
+
color: #23282d;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
&:active, &:focus {
|
| 55 |
+
outline: none;
|
| 56 |
+
padding: 0;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
&:before {
|
| 60 |
+
content: '\f142';
|
| 61 |
+
display: inline-block;
|
| 62 |
+
vertical-align: middle;
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
&:after {
|
| 66 |
+
display: inline-block;
|
| 67 |
+
content: "";
|
| 68 |
+
vertical-align: middle;
|
| 69 |
+
height: 100%;
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
.ws-ame-postbox-content {
|
| 74 |
+
border: 1px solid $borderColor;
|
| 75 |
+
border-top: none;
|
| 76 |
+
|
| 77 |
+
padding: $horizontalPadding;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
&.ws-ame-closed-postbox .ws-ame-postbox-content {
|
| 81 |
+
display: none;
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
&.ws-ame-closed-postbox .ws-ame-postbox-toggle:before {
|
| 85 |
+
content: '\f140'; //downward triangle
|
| 86 |
+
}
|
| 87 |
+
}
|
css/_indeterminate-checkbox.scss
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@mixin ame-indeterminate-checkbox {
|
| 2 |
+
&:indeterminate:before {
|
| 3 |
+
content: '\25a0'; //Unicode black square. Another option would be BLACK LARGE SQUARE (U+2B1B).
|
| 4 |
+
color: #1e8cbe;
|
| 5 |
+
|
| 6 |
+
//Large square.
|
| 7 |
+
//margin: -6px 0 0 -1px;
|
| 8 |
+
//font: 400 18px/1 dashicons;
|
| 9 |
+
|
| 10 |
+
//Smaller square.
|
| 11 |
+
margin: -3px 0 0 -1px;
|
| 12 |
+
font: 400 14px/1 dashicons;
|
| 13 |
+
|
| 14 |
+
//Even smaller square.
|
| 15 |
+
//margin: -2px 0 0 -1px;
|
| 16 |
+
//font: 400 13px/1 dashicons;
|
| 17 |
+
|
| 18 |
+
float: left;
|
| 19 |
+
display: inline-block;
|
| 20 |
+
vertical-align: middle;
|
| 21 |
+
width: 16px;
|
| 22 |
+
-webkit-font-smoothing: antialiased;
|
| 23 |
+
}
|
| 24 |
+
}
|
css/menu-editor.css
CHANGED
|
@@ -10,7 +10,7 @@
|
|
| 10 |
width: 310px;
|
| 11 |
float: left;
|
| 12 |
display: block;
|
| 13 |
-
border: 1px solid #
|
| 14 |
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
|
| 15 |
background-color: #FFFFFF;
|
| 16 |
border-radius: 0px;
|
|
@@ -297,6 +297,8 @@
|
|
| 297 |
height: 16px;
|
| 298 |
vertical-align: top;
|
| 299 |
background: url("../images/pencil_delete_gray.png") no-repeat center; }
|
|
|
|
|
|
|
| 300 |
|
| 301 |
.ws_reset_button:hover {
|
| 302 |
background-image: url("../images/pencil_delete.png"); }
|
|
@@ -312,8 +314,7 @@
|
|
| 312 |
visibility: hidden; }
|
| 313 |
|
| 314 |
/* The input box in each field editor */
|
| 315 |
-
#ws_menu_editor .ws_editbox input[type="text"],
|
| 316 |
-
#ws_menu_editor .ws_editbox select {
|
| 317 |
display: block;
|
| 318 |
float: left;
|
| 319 |
width: 254px;
|
|
@@ -322,6 +323,9 @@
|
|
| 322 |
line-height: 17px;
|
| 323 |
padding-top: 3px;
|
| 324 |
padding-bottom: 3px; }
|
|
|
|
|
|
|
|
|
|
| 325 |
|
| 326 |
#ws_menu_editor .ws_edit_field label {
|
| 327 |
display: block;
|
|
@@ -332,13 +336,16 @@
|
|
| 332 |
|
| 333 |
#ws_menu_editor input[type="text"].ws_field_value {
|
| 334 |
min-height: 25px; }
|
|
|
|
|
|
|
| 335 |
|
| 336 |
/* Dropdown button for combo-box fields */
|
| 337 |
#ws_menu_editor .ws_dropdown_button,
|
| 338 |
#ws_menu_access_editor .ws_dropdown_button {
|
| 339 |
box-sizing: border-box;
|
| 340 |
-
width:
|
| 341 |
height: 25px;
|
|
|
|
| 342 |
margin: 1px 1px 1px 0;
|
| 343 |
padding: 0;
|
| 344 |
text-align: center;
|
|
@@ -359,10 +366,26 @@
|
|
| 359 |
-webkit-border-top-left-radius: 0;
|
| 360 |
-webkit-border-bottom-left-radius: 0; }
|
| 361 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 362 |
#ws_menu_access_editor .ws_dropdown_button {
|
| 363 |
display: inline-block;
|
| 364 |
height: 27px; }
|
| 365 |
|
|
|
|
|
|
|
|
|
|
| 366 |
#ws_menu_editor .ws_dropdown_button {
|
| 367 |
display: block;
|
| 368 |
float: left; }
|
|
@@ -387,8 +410,11 @@ to accommodate the drop-down button.
|
|
| 387 |
box-sizing: border-box;
|
| 388 |
height: 27px; }
|
| 389 |
|
|
|
|
|
|
|
|
|
|
| 390 |
#ws_menu_editor .ws_has_dropdown input.ws_field_value {
|
| 391 |
-
width:
|
| 392 |
|
| 393 |
/* Unlike others, this field is just a single checkbox, so it has a smaller height */
|
| 394 |
#ws_menu_editor .ws_edit_field-custom {
|
|
@@ -645,7 +671,12 @@ select.ws_dropdown optgroup option {
|
|
| 645 |
padding: 0;
|
| 646 |
position: relative;
|
| 647 |
box-sizing: border-box;
|
| 648 |
-
height: 25px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 649 |
|
| 650 |
/* Current icon node (CSS class version, for the built-in WP icon sprites) */
|
| 651 |
.ws_select_icon .icon16 {
|
|
@@ -660,6 +691,8 @@ select.ws_dropdown optgroup option {
|
|
| 660 |
position: relative;
|
| 661 |
top: -3px;
|
| 662 |
left: -3px; }
|
|
|
|
|
|
|
| 663 |
|
| 664 |
/* Current icon node (image version) */
|
| 665 |
.ws_select_icon img {
|
|
@@ -829,6 +862,14 @@ a#ws-ame-delete-color-preset:hover {
|
|
| 829 |
background: white;
|
| 830 |
cursor: pointer;
|
| 831 |
line-height: 20px; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 832 |
|
| 833 |
.ws_open_color_editor {
|
| 834 |
width: 58px; }
|
|
@@ -866,18 +907,17 @@ a#ws-ame-delete-color-preset:hover {
|
|
| 866 |
.ui-front {
|
| 867 |
z-index: 10000; }
|
| 868 |
|
| 869 |
-
.ui-dialog {
|
| 870 |
background: white;
|
| 871 |
border: 1px solid #c0c0c0;
|
| 872 |
padding: 0;
|
| 873 |
-moz-border-radius: 5px;
|
| 874 |
-webkit-border-radius: 5px;
|
| 875 |
border-radius: 5px; }
|
| 876 |
-
.ui-dialog .ui-dialog-content {
|
| 877 |
padding: 8px 8px 8px 8px;
|
| 878 |
font-size: 1.1em; }
|
| 879 |
-
|
| 880 |
-
.ui-dialog-titlebar {
|
| 881 |
display: block;
|
| 882 |
height: 22px;
|
| 883 |
margin: 0;
|
|
@@ -892,12 +932,10 @@ a#ws-ame-delete-color-preset:hover {
|
|
| 892 |
border-top-left-radius: 4px;
|
| 893 |
border-top-right-radius: 4px;
|
| 894 |
border-bottom: 1px solid #809fd9; }
|
| 895 |
-
|
| 896 |
-
.ui-dialog-title {
|
| 897 |
color: white;
|
| 898 |
font-weight: bold; }
|
| 899 |
-
|
| 900 |
-
.ui-dialog-titlebar-close {
|
| 901 |
background: #86A7E3 url(../images/x.png) no-repeat center;
|
| 902 |
width: 22px;
|
| 903 |
height: 22px;
|
|
@@ -907,8 +945,7 @@ a#ws-ame-delete-color-preset:hover {
|
|
| 907 |
border-radius: 3px;
|
| 908 |
-moz-border-radius: 3px;
|
| 909 |
-webkit-border-radius: 3px; }
|
| 910 |
-
|
| 911 |
-
.ui-dialog-titlebar-close:hover {
|
| 912 |
/*background-image: url(../images/x-light.png);*/
|
| 913 |
background-color: #a6c2f5; }
|
| 914 |
|
|
@@ -1445,6 +1482,12 @@ a#ws-ame-delete-color-preset:hover {
|
|
| 1445 |
/*content: " \f504";
|
| 1446 |
font-family: dashicons, sans-serif;*/ }
|
| 1447 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1448 |
/*********************************************
|
| 1449 |
Miscellaneous
|
| 1450 |
**********************************************/
|
| 10 |
width: 310px;
|
| 11 |
float: left;
|
| 12 |
display: block;
|
| 13 |
+
border: 1px solid #ccd0d4;
|
| 14 |
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
|
| 15 |
background-color: #FFFFFF;
|
| 16 |
border-radius: 0px;
|
| 297 |
height: 16px;
|
| 298 |
vertical-align: top;
|
| 299 |
background: url("../images/pencil_delete_gray.png") no-repeat center; }
|
| 300 |
+
.ame-is-wp53-plus .ws_reset_button {
|
| 301 |
+
margin-top: 5px; }
|
| 302 |
|
| 303 |
.ws_reset_button:hover {
|
| 304 |
background-image: url("../images/pencil_delete.png"); }
|
| 314 |
visibility: hidden; }
|
| 315 |
|
| 316 |
/* The input box in each field editor */
|
| 317 |
+
#ws_menu_editor .ws_editbox input[type="text"], #ws_menu_editor .ws_editbox select {
|
|
|
|
| 318 |
display: block;
|
| 319 |
float: left;
|
| 320 |
width: 254px;
|
| 323 |
line-height: 17px;
|
| 324 |
padding-top: 3px;
|
| 325 |
padding-bottom: 3px; }
|
| 326 |
+
.ame-is-wp53-plus #ws_menu_editor .ws_editbox input[type="text"],
|
| 327 |
+
.ame-is-wp53-plus #ws_menu_editor .ws_editbox select {
|
| 328 |
+
height: 28px; }
|
| 329 |
|
| 330 |
#ws_menu_editor .ws_edit_field label {
|
| 331 |
display: block;
|
| 336 |
|
| 337 |
#ws_menu_editor input[type="text"].ws_field_value {
|
| 338 |
min-height: 25px; }
|
| 339 |
+
.ame-is-wp53-plus #ws_menu_editor input[type="text"].ws_field_value {
|
| 340 |
+
min-height: 28px; }
|
| 341 |
|
| 342 |
/* Dropdown button for combo-box fields */
|
| 343 |
#ws_menu_editor .ws_dropdown_button,
|
| 344 |
#ws_menu_access_editor .ws_dropdown_button {
|
| 345 |
box-sizing: border-box;
|
| 346 |
+
width: 25px;
|
| 347 |
height: 25px;
|
| 348 |
+
min-height: 25px;
|
| 349 |
margin: 1px 1px 1px 0;
|
| 350 |
padding: 0;
|
| 351 |
text-align: center;
|
| 366 |
-webkit-border-top-left-radius: 0;
|
| 367 |
-webkit-border-bottom-left-radius: 0; }
|
| 368 |
|
| 369 |
+
.ame-is-wp53-plus #ws_menu_editor .ws_dropdown_button,
|
| 370 |
+
#ws_menu_access_editor.ame-is-wp53-plus .ws_dropdown_button {
|
| 371 |
+
height: 28px;
|
| 372 |
+
border-color: #7e8993;
|
| 373 |
+
background-color: white;
|
| 374 |
+
border-left-style: none;
|
| 375 |
+
font-size: 10px !important;
|
| 376 |
+
line-height: 24px;
|
| 377 |
+
color: #555; }
|
| 378 |
+
.ame-is-wp53-plus #ws_menu_editor .ws_dropdown_button:hover,
|
| 379 |
+
#ws_menu_access_editor.ame-is-wp53-plus .ws_dropdown_button:hover {
|
| 380 |
+
color: #23282d; }
|
| 381 |
+
|
| 382 |
#ws_menu_access_editor .ws_dropdown_button {
|
| 383 |
display: inline-block;
|
| 384 |
height: 27px; }
|
| 385 |
|
| 386 |
+
#ws_menu_access_editor.ame-is-wp53-plus .ws_dropdown_button {
|
| 387 |
+
height: 30px; }
|
| 388 |
+
|
| 389 |
#ws_menu_editor .ws_dropdown_button {
|
| 390 |
display: block;
|
| 391 |
float: left; }
|
| 410 |
box-sizing: border-box;
|
| 411 |
height: 27px; }
|
| 412 |
|
| 413 |
+
#ws_menu_access_editor.ame-is-wp53-plus input.ws_has_dropdown {
|
| 414 |
+
height: 30px; }
|
| 415 |
+
|
| 416 |
#ws_menu_editor .ws_has_dropdown input.ws_field_value {
|
| 417 |
+
width: 229px; }
|
| 418 |
|
| 419 |
/* Unlike others, this field is just a single checkbox, so it has a smaller height */
|
| 420 |
#ws_menu_editor .ws_edit_field-custom {
|
| 671 |
padding: 0;
|
| 672 |
position: relative;
|
| 673 |
box-sizing: border-box;
|
| 674 |
+
height: 25px;
|
| 675 |
+
min-height: 25px; }
|
| 676 |
+
.ame-is-wp53-plus #ws_menu_editor .ws_select_icon {
|
| 677 |
+
height: 28px;
|
| 678 |
+
min-height: 28px;
|
| 679 |
+
margin-top: 1px; }
|
| 680 |
|
| 681 |
/* Current icon node (CSS class version, for the built-in WP icon sprites) */
|
| 682 |
.ws_select_icon .icon16 {
|
| 691 |
position: relative;
|
| 692 |
top: -3px;
|
| 693 |
left: -3px; }
|
| 694 |
+
.ame-is-wp53-plus .ws_select_icon .icon16 {
|
| 695 |
+
top: -1px; }
|
| 696 |
|
| 697 |
/* Current icon node (image version) */
|
| 698 |
.ws_select_icon img {
|
| 862 |
background: white;
|
| 863 |
cursor: pointer;
|
| 864 |
line-height: 20px; }
|
| 865 |
+
.ame-is-wp53-plus .ws_color_scheme_display {
|
| 866 |
+
border-color: #7e8993;
|
| 867 |
+
border-radius: 4px;
|
| 868 |
+
margin-top: 1px;
|
| 869 |
+
margin-bottom: 1px;
|
| 870 |
+
padding: 3px 8px;
|
| 871 |
+
height: 28px;
|
| 872 |
+
line-height: 20px; }
|
| 873 |
|
| 874 |
.ws_open_color_editor {
|
| 875 |
width: 58px; }
|
| 907 |
.ui-front {
|
| 908 |
z-index: 10000; }
|
| 909 |
|
| 910 |
+
.settings_page_menu_editor .ui-dialog {
|
| 911 |
background: white;
|
| 912 |
border: 1px solid #c0c0c0;
|
| 913 |
padding: 0;
|
| 914 |
-moz-border-radius: 5px;
|
| 915 |
-webkit-border-radius: 5px;
|
| 916 |
border-radius: 5px; }
|
| 917 |
+
.settings_page_menu_editor .ui-dialog .ui-dialog-content {
|
| 918 |
padding: 8px 8px 8px 8px;
|
| 919 |
font-size: 1.1em; }
|
| 920 |
+
.settings_page_menu_editor .ui-dialog-titlebar {
|
|
|
|
| 921 |
display: block;
|
| 922 |
height: 22px;
|
| 923 |
margin: 0;
|
| 932 |
border-top-left-radius: 4px;
|
| 933 |
border-top-right-radius: 4px;
|
| 934 |
border-bottom: 1px solid #809fd9; }
|
| 935 |
+
.settings_page_menu_editor .ui-dialog-title {
|
|
|
|
| 936 |
color: white;
|
| 937 |
font-weight: bold; }
|
| 938 |
+
.settings_page_menu_editor .ui-button.ui-dialog-titlebar-close {
|
|
|
|
| 939 |
background: #86A7E3 url(../images/x.png) no-repeat center;
|
| 940 |
width: 22px;
|
| 941 |
height: 22px;
|
| 945 |
border-radius: 3px;
|
| 946 |
-moz-border-radius: 3px;
|
| 947 |
-webkit-border-radius: 3px; }
|
| 948 |
+
.settings_page_menu_editor .ui-dialog-titlebar-close:hover {
|
|
|
|
| 949 |
/*background-image: url(../images/x-light.png);*/
|
| 950 |
background-color: #a6c2f5; }
|
| 951 |
|
| 1482 |
/*content: " \f504";
|
| 1483 |
font-family: dashicons, sans-serif;*/ }
|
| 1484 |
|
| 1485 |
+
/*********************************************
|
| 1486 |
+
WordPress 5.3+ consistent styles
|
| 1487 |
+
**********************************************/
|
| 1488 |
+
.ame-is-wp53-plus .ws_edit_field input[type="button"] {
|
| 1489 |
+
margin-top: 1px; }
|
| 1490 |
+
|
| 1491 |
/*********************************************
|
| 1492 |
Miscellaneous
|
| 1493 |
**********************************************/
|
css/menu-editor.scss
CHANGED
|
@@ -1,5 +1,7 @@
|
|
| 1 |
/* Admin Menu Editor CSS file */
|
| 2 |
|
|
|
|
|
|
|
| 3 |
#ws_menu_editor {
|
| 4 |
min-width: 780px;
|
| 5 |
}
|
|
@@ -11,6 +13,7 @@
|
|
| 11 |
$mainContainerWidth: 310px;
|
| 12 |
$mainContainerBorderWidth: 1px;
|
| 13 |
$mainContainerBorderRadius: 0px;
|
|
|
|
| 14 |
|
| 15 |
.ws_main_container {
|
| 16 |
margin: 2px;
|
|
@@ -18,7 +21,7 @@ $mainContainerBorderRadius: 0px;
|
|
| 18 |
float: left;
|
| 19 |
display:block;
|
| 20 |
|
| 21 |
-
border: $mainContainerBorderWidth solid
|
| 22 |
box-shadow: 0 1px 1px rgba(0,0,0,0.04);
|
| 23 |
background-color: #FFFFFF;
|
| 24 |
|
|
@@ -101,6 +104,8 @@ $mainContainerBorderRadius: 0px;
|
|
| 101 |
/**
|
| 102 |
* The checkbox that lets the user show/hide a menu for the currently selected actor.
|
| 103 |
*/
|
|
|
|
|
|
|
| 104 |
#ws_menu_editor .ws_actor_access_checkbox,
|
| 105 |
#ws_menu_editor input[type="checkbox"].ws_actor_access_checkbox /* Ensure we override WP defaults. */
|
| 106 |
{
|
|
@@ -109,28 +114,7 @@ $mainContainerBorderRadius: 0px;
|
|
| 109 |
margin-top: 1px;
|
| 110 |
vertical-align: text-top;
|
| 111 |
|
| 112 |
-
|
| 113 |
-
content: '\25a0'; //Unicode black square. Another option would be BLACK LARGE SQUARE (U+2B1B).
|
| 114 |
-
color: #1e8cbe;
|
| 115 |
-
|
| 116 |
-
//Large square.
|
| 117 |
-
//margin: -6px 0 0 -1px;
|
| 118 |
-
//font: 400 18px/1 dashicons;
|
| 119 |
-
|
| 120 |
-
//Smaller square.
|
| 121 |
-
margin: -3px 0 0 -1px;
|
| 122 |
-
font: 400 14px/1 dashicons;
|
| 123 |
-
|
| 124 |
-
//Even smaller square.
|
| 125 |
-
//margin: -2px 0 0 -1px;
|
| 126 |
-
//font: 400 13px/1 dashicons;
|
| 127 |
-
|
| 128 |
-
float: left;
|
| 129 |
-
display: inline-block;
|
| 130 |
-
vertical-align: middle;
|
| 131 |
-
width: 16px;
|
| 132 |
-
-webkit-font-smoothing: antialiased;
|
| 133 |
-
}
|
| 134 |
}
|
| 135 |
|
| 136 |
@media screen and (max-width: 782px) {
|
|
@@ -426,6 +410,10 @@ $mainContainerBorderRadius: 0px;
|
|
| 426 |
vertical-align: top;
|
| 427 |
|
| 428 |
background: url("../images/pencil_delete_gray.png") no-repeat center;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 429 |
}
|
| 430 |
|
| 431 |
.ws_reset_button:hover {
|
|
@@ -446,6 +434,8 @@ $mainContainerBorderRadius: 0px;
|
|
| 446 |
|
| 447 |
/* The input box in each field editor */
|
| 448 |
$basicInputWidth: 254px;
|
|
|
|
|
|
|
| 449 |
#ws_menu_editor .ws_editbox input[type="text"],
|
| 450 |
#ws_menu_editor .ws_editbox select {
|
| 451 |
display: block;
|
|
@@ -458,6 +448,10 @@ $basicInputWidth: 254px;
|
|
| 458 |
|
| 459 |
padding-top: 3px;
|
| 460 |
padding-bottom: 3px;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 461 |
}
|
| 462 |
|
| 463 |
#ws_menu_editor .ws_edit_field label {
|
|
@@ -471,15 +465,22 @@ $basicInputWidth: 254px;
|
|
| 471 |
|
| 472 |
#ws_menu_editor input[type="text"].ws_field_value {
|
| 473 |
min-height: 25px;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 474 |
}
|
| 475 |
|
| 476 |
/* Dropdown button for combo-box fields */
|
|
|
|
|
|
|
| 477 |
#ws_menu_editor .ws_dropdown_button,
|
| 478 |
#ws_menu_access_editor .ws_dropdown_button
|
| 479 |
{
|
| 480 |
box-sizing: border-box;
|
| 481 |
-
width:
|
| 482 |
height: 25px;
|
|
|
|
| 483 |
|
| 484 |
margin: 1px 1px 1px 0;
|
| 485 |
padding: 0;
|
|
@@ -507,11 +508,33 @@ $basicInputWidth: 254px;
|
|
| 507 |
-webkit-border-bottom-left-radius: 0;
|
| 508 |
}
|
| 509 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 510 |
#ws_menu_access_editor .ws_dropdown_button {
|
| 511 |
display: inline-block;
|
| 512 |
height: 27px;
|
| 513 |
}
|
| 514 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 515 |
#ws_menu_editor .ws_dropdown_button {
|
| 516 |
display: block;
|
| 517 |
float: left;
|
|
@@ -543,8 +566,12 @@ to accommodate the drop-down button.
|
|
| 543 |
height: 27px;
|
| 544 |
}
|
| 545 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 546 |
#ws_menu_editor .ws_has_dropdown input.ws_field_value {
|
| 547 |
-
width:
|
| 548 |
}
|
| 549 |
|
| 550 |
/* Unlike others, this field is just a single checkbox, so it has a smaller height */
|
|
@@ -883,6 +910,13 @@ $activeToolTabBackground: #FDFDFD;
|
|
| 883 |
|
| 884 |
box-sizing: border-box;
|
| 885 |
height: 25px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 886 |
}
|
| 887 |
|
| 888 |
/* Current icon node (CSS class version, for the built-in WP icon sprites) */
|
|
@@ -899,6 +933,10 @@ $activeToolTabBackground: #FDFDFD;
|
|
| 899 |
position: relative;
|
| 900 |
top: -3px;
|
| 901 |
left: -3px;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 902 |
}
|
| 903 |
|
| 904 |
/* Current icon node (image version) */
|
|
@@ -1128,6 +1166,18 @@ $colorFieldRightMargin: 5px;
|
|
| 1128 |
cursor: pointer;
|
| 1129 |
|
| 1130 |
line-height: $colorFieldHeight - 6px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1131 |
}
|
| 1132 |
|
| 1133 |
.ws_open_color_editor {
|
|
@@ -1175,69 +1225,71 @@ $colorFieldRightMargin: 5px;
|
|
| 1175 |
z-index: 10000;
|
| 1176 |
}
|
| 1177 |
|
| 1178 |
-
.
|
| 1179 |
-
|
| 1180 |
-
|
|
|
|
| 1181 |
|
| 1182 |
-
|
| 1183 |
-
|
| 1184 |
-
-moz-border-radius: 5px;
|
| 1185 |
-
-webkit-border-radius: 5px;
|
| 1186 |
-
border-radius: 5px;
|
| 1187 |
|
| 1188 |
-
|
| 1189 |
-
|
| 1190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1191 |
}
|
| 1192 |
-
}
|
| 1193 |
|
| 1194 |
-
.ui-dialog-titlebar {
|
| 1195 |
-
|
| 1196 |
-
|
| 1197 |
-
|
| 1198 |
-
|
| 1199 |
-
|
| 1200 |
-
background-color: #86A7E3;
|
| 1201 |
-
font-size: 1.0em;
|
| 1202 |
-
line-height: 22px;
|
| 1203 |
|
| 1204 |
-
|
| 1205 |
-
|
|
|
|
| 1206 |
|
| 1207 |
-
|
| 1208 |
-
|
| 1209 |
|
| 1210 |
-
|
| 1211 |
-
|
| 1212 |
|
| 1213 |
-
|
| 1214 |
-
|
| 1215 |
|
| 1216 |
-
|
| 1217 |
-
|
| 1218 |
-
font-weight: bold;
|
| 1219 |
-
}
|
| 1220 |
|
| 1221 |
-
.ui-dialog-
|
| 1222 |
-
|
| 1223 |
-
|
| 1224 |
-
|
| 1225 |
-
display: block;
|
| 1226 |
-
float: right;
|
| 1227 |
-
color: white;
|
| 1228 |
-
|
| 1229 |
-
border-radius: 3px;
|
| 1230 |
-
-moz-border-radius: 3px;
|
| 1231 |
-
-webkit-border-radius: 3px;
|
| 1232 |
-
}
|
| 1233 |
|
| 1234 |
-
.ui-dialog-titlebar-close
|
| 1235 |
-
|
| 1236 |
-
|
| 1237 |
-
|
|
|
|
|
|
|
|
|
|
| 1238 |
|
| 1239 |
-
|
| 1240 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1241 |
}
|
| 1242 |
|
| 1243 |
#export_dialog .ws_dialog_panel {
|
|
@@ -2049,6 +2101,14 @@ $userSelectionPanelPadding: 10px;
|
|
| 2049 |
font-family: dashicons, sans-serif;*/
|
| 2050 |
}
|
| 2051 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2052 |
/*********************************************
|
| 2053 |
Miscellaneous
|
| 2054 |
**********************************************/
|
| 1 |
/* Admin Menu Editor CSS file */
|
| 2 |
|
| 3 |
+
@import "boxes";
|
| 4 |
+
|
| 5 |
#ws_menu_editor {
|
| 6 |
min-width: 780px;
|
| 7 |
}
|
| 13 |
$mainContainerWidth: 310px;
|
| 14 |
$mainContainerBorderWidth: 1px;
|
| 15 |
$mainContainerBorderRadius: 0px;
|
| 16 |
+
$mainContainerBorderColor: $amePostboxBorderColor; //Was #cdd5d5 before WP 5.3.
|
| 17 |
|
| 18 |
.ws_main_container {
|
| 19 |
margin: 2px;
|
| 21 |
float: left;
|
| 22 |
display:block;
|
| 23 |
|
| 24 |
+
border: $mainContainerBorderWidth solid $mainContainerBorderColor;
|
| 25 |
box-shadow: 0 1px 1px rgba(0,0,0,0.04);
|
| 26 |
background-color: #FFFFFF;
|
| 27 |
|
| 104 |
/**
|
| 105 |
* The checkbox that lets the user show/hide a menu for the currently selected actor.
|
| 106 |
*/
|
| 107 |
+
@import "_indeterminate-checkbox.scss";
|
| 108 |
+
|
| 109 |
#ws_menu_editor .ws_actor_access_checkbox,
|
| 110 |
#ws_menu_editor input[type="checkbox"].ws_actor_access_checkbox /* Ensure we override WP defaults. */
|
| 111 |
{
|
| 114 |
margin-top: 1px;
|
| 115 |
vertical-align: text-top;
|
| 116 |
|
| 117 |
+
@include ame-indeterminate-checkbox;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
}
|
| 119 |
|
| 120 |
@media screen and (max-width: 782px) {
|
| 410 |
vertical-align: top;
|
| 411 |
|
| 412 |
background: url("../images/pencil_delete_gray.png") no-repeat center;
|
| 413 |
+
|
| 414 |
+
.ame-is-wp53-plus & {
|
| 415 |
+
margin-top: 5px;
|
| 416 |
+
}
|
| 417 |
}
|
| 418 |
|
| 419 |
.ws_reset_button:hover {
|
| 434 |
|
| 435 |
/* The input box in each field editor */
|
| 436 |
$basicInputWidth: 254px;
|
| 437 |
+
$basicInputWp53Height: 28px;
|
| 438 |
+
|
| 439 |
#ws_menu_editor .ws_editbox input[type="text"],
|
| 440 |
#ws_menu_editor .ws_editbox select {
|
| 441 |
display: block;
|
| 448 |
|
| 449 |
padding-top: 3px;
|
| 450 |
padding-bottom: 3px;
|
| 451 |
+
|
| 452 |
+
.ame-is-wp53-plus & {
|
| 453 |
+
height: $basicInputWp53Height;
|
| 454 |
+
}
|
| 455 |
}
|
| 456 |
|
| 457 |
#ws_menu_editor .ws_edit_field label {
|
| 465 |
|
| 466 |
#ws_menu_editor input[type="text"].ws_field_value {
|
| 467 |
min-height: 25px;
|
| 468 |
+
|
| 469 |
+
.ame-is-wp53-plus & {
|
| 470 |
+
min-height: $basicInputWp53Height;
|
| 471 |
+
}
|
| 472 |
}
|
| 473 |
|
| 474 |
/* Dropdown button for combo-box fields */
|
| 475 |
+
$dropdownButtonWidth: 25px;
|
| 476 |
+
|
| 477 |
#ws_menu_editor .ws_dropdown_button,
|
| 478 |
#ws_menu_access_editor .ws_dropdown_button
|
| 479 |
{
|
| 480 |
box-sizing: border-box;
|
| 481 |
+
width: $dropdownButtonWidth;
|
| 482 |
height: 25px;
|
| 483 |
+
min-height: 25px;
|
| 484 |
|
| 485 |
margin: 1px 1px 1px 0;
|
| 486 |
padding: 0;
|
| 508 |
-webkit-border-bottom-left-radius: 0;
|
| 509 |
}
|
| 510 |
|
| 511 |
+
.ame-is-wp53-plus #ws_menu_editor .ws_dropdown_button,
|
| 512 |
+
#ws_menu_access_editor.ame-is-wp53-plus .ws_dropdown_button
|
| 513 |
+
{
|
| 514 |
+
height: $basicInputWp53Height;
|
| 515 |
+
|
| 516 |
+
border-color: #7e8993;
|
| 517 |
+
background-color: white;
|
| 518 |
+
border-left-style: none;
|
| 519 |
+
|
| 520 |
+
font-size: 10px !important;
|
| 521 |
+
line-height: 24px;
|
| 522 |
+
color: #555;
|
| 523 |
+
|
| 524 |
+
&:hover {
|
| 525 |
+
color: #23282d;
|
| 526 |
+
}
|
| 527 |
+
}
|
| 528 |
+
|
| 529 |
#ws_menu_access_editor .ws_dropdown_button {
|
| 530 |
display: inline-block;
|
| 531 |
height: 27px;
|
| 532 |
}
|
| 533 |
|
| 534 |
+
#ws_menu_access_editor.ame-is-wp53-plus .ws_dropdown_button {
|
| 535 |
+
height: 30px;
|
| 536 |
+
}
|
| 537 |
+
|
| 538 |
#ws_menu_editor .ws_dropdown_button {
|
| 539 |
display: block;
|
| 540 |
float: left;
|
| 566 |
height: 27px;
|
| 567 |
}
|
| 568 |
|
| 569 |
+
#ws_menu_access_editor.ame-is-wp53-plus input.ws_has_dropdown {
|
| 570 |
+
height: 30px;
|
| 571 |
+
}
|
| 572 |
+
|
| 573 |
#ws_menu_editor .ws_has_dropdown input.ws_field_value {
|
| 574 |
+
width: $basicInputWidth - $dropdownButtonWidth;
|
| 575 |
}
|
| 576 |
|
| 577 |
/* Unlike others, this field is just a single checkbox, so it has a smaller height */
|
| 910 |
|
| 911 |
box-sizing: border-box;
|
| 912 |
height: 25px;
|
| 913 |
+
min-height: 25px;
|
| 914 |
+
|
| 915 |
+
.ame-is-wp53-plus & {
|
| 916 |
+
height: $basicInputWp53Height;
|
| 917 |
+
min-height: $basicInputWp53Height;
|
| 918 |
+
margin-top: 1px;
|
| 919 |
+
}
|
| 920 |
}
|
| 921 |
|
| 922 |
/* Current icon node (CSS class version, for the built-in WP icon sprites) */
|
| 933 |
position: relative;
|
| 934 |
top: -3px;
|
| 935 |
left: -3px;
|
| 936 |
+
|
| 937 |
+
.ame-is-wp53-plus & {
|
| 938 |
+
top: -1px;
|
| 939 |
+
}
|
| 940 |
}
|
| 941 |
|
| 942 |
/* Current icon node (image version) */
|
| 1166 |
cursor: pointer;
|
| 1167 |
|
| 1168 |
line-height: $colorFieldHeight - 6px;
|
| 1169 |
+
|
| 1170 |
+
.ame-is-wp53-plus & {
|
| 1171 |
+
border-color: #7e8993;
|
| 1172 |
+
border-radius: 4px;
|
| 1173 |
+
|
| 1174 |
+
margin-top: 1px;
|
| 1175 |
+
margin-bottom: 1px;
|
| 1176 |
+
|
| 1177 |
+
padding: 3px 8px;
|
| 1178 |
+
height: 28px;
|
| 1179 |
+
line-height: 20px;
|
| 1180 |
+
}
|
| 1181 |
}
|
| 1182 |
|
| 1183 |
.ws_open_color_editor {
|
| 1225 |
z-index: 10000;
|
| 1226 |
}
|
| 1227 |
|
| 1228 |
+
.settings_page_menu_editor {
|
| 1229 |
+
.ui-dialog {
|
| 1230 |
+
background: white;
|
| 1231 |
+
border: 1px solid #c0c0c0;
|
| 1232 |
|
| 1233 |
+
padding: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1234 |
|
| 1235 |
+
-moz-border-radius: 5px;
|
| 1236 |
+
-webkit-border-radius: 5px;
|
| 1237 |
+
border-radius: 5px;
|
| 1238 |
+
|
| 1239 |
+
.ui-dialog-content {
|
| 1240 |
+
padding: 8px 8px 8px 8px;
|
| 1241 |
+
font-size: 1.1em;
|
| 1242 |
+
}
|
| 1243 |
}
|
|
|
|
| 1244 |
|
| 1245 |
+
.ui-dialog-titlebar {
|
| 1246 |
+
display: block;
|
| 1247 |
+
height: 22px;
|
| 1248 |
+
margin: 0;
|
| 1249 |
+
padding: 4px 4px 4px 8px;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1250 |
|
| 1251 |
+
background-color: #86A7E3;
|
| 1252 |
+
font-size: 1.0em;
|
| 1253 |
+
line-height: 22px;
|
| 1254 |
|
| 1255 |
+
-webkit-border-top-left-radius: 4px;
|
| 1256 |
+
-webkit-border-top-right-radius: 4px;
|
| 1257 |
|
| 1258 |
+
-moz-border-radius-topleft: 4px;
|
| 1259 |
+
-moz-border-radius-topright: 4px;
|
| 1260 |
|
| 1261 |
+
border-top-left-radius: 4px;
|
| 1262 |
+
border-top-right-radius: 4px;
|
| 1263 |
|
| 1264 |
+
border-bottom: 1px solid #809fd9;
|
| 1265 |
+
}
|
|
|
|
|
|
|
| 1266 |
|
| 1267 |
+
.ui-dialog-title {
|
| 1268 |
+
color: white;
|
| 1269 |
+
font-weight: bold;
|
| 1270 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1271 |
|
| 1272 |
+
.ui-button.ui-dialog-titlebar-close {
|
| 1273 |
+
background: #86A7E3 url(../images/x.png) no-repeat center;
|
| 1274 |
+
width: 22px;
|
| 1275 |
+
height: 22px;
|
| 1276 |
+
display: block;
|
| 1277 |
+
float: right;
|
| 1278 |
+
color: white;
|
| 1279 |
|
| 1280 |
+
border-radius: 3px;
|
| 1281 |
+
-moz-border-radius: 3px;
|
| 1282 |
+
-webkit-border-radius: 3px;
|
| 1283 |
+
}
|
| 1284 |
+
|
| 1285 |
+
.ui-dialog-titlebar-close:hover {
|
| 1286 |
+
/*background-image: url(../images/x-light.png);*/
|
| 1287 |
+
background-color: #a6c2f5;
|
| 1288 |
+
}
|
| 1289 |
+
|
| 1290 |
+
.ui-icon-closethick {
|
| 1291 |
+
|
| 1292 |
+
}
|
| 1293 |
}
|
| 1294 |
|
| 1295 |
#export_dialog .ws_dialog_panel {
|
| 2101 |
font-family: dashicons, sans-serif;*/
|
| 2102 |
}
|
| 2103 |
|
| 2104 |
+
/*********************************************
|
| 2105 |
+
WordPress 5.3+ consistent styles
|
| 2106 |
+
**********************************************/
|
| 2107 |
+
|
| 2108 |
+
.ame-is-wp53-plus .ws_edit_field input[type="button"] {
|
| 2109 |
+
margin-top: 1px;
|
| 2110 |
+
}
|
| 2111 |
+
|
| 2112 |
/*********************************************
|
| 2113 |
Miscellaneous
|
| 2114 |
**********************************************/
|
css/screen-meta.css
CHANGED
|
@@ -9,11 +9,12 @@
|
|
| 9 |
height: 28px;
|
| 10 |
margin: 0 0 0 6px;
|
| 11 |
|
| 12 |
-
border: 1px solid #
|
| 13 |
border-top: none;
|
|
|
|
|
|
|
| 14 |
background: #fff;
|
| 15 |
-
|
| 16 |
-
box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1);
|
| 17 |
}
|
| 18 |
|
| 19 |
#screen-meta .custom-screen-meta-link-wrap a.custom-screen-meta-link,
|
|
@@ -23,7 +24,7 @@
|
|
| 23 |
text-decoration: none;
|
| 24 |
display: block;
|
| 25 |
min-height: 22px;
|
| 26 |
-
box-shadow:
|
| 27 |
}
|
| 28 |
|
| 29 |
#screen-meta-links a.custom-screen-meta-link::after {
|
|
@@ -41,8 +42,10 @@
|
|
| 41 |
color: #DEFFD8;
|
| 42 |
text-shadow: none;
|
| 43 |
box-shadow: none;
|
|
|
|
|
|
|
| 44 |
}
|
| 45 |
|
| 46 |
-
#ws-pro-version-notice a.show-settings:hover {
|
| 47 |
color: white;
|
| 48 |
}
|
| 9 |
height: 28px;
|
| 10 |
margin: 0 0 0 6px;
|
| 11 |
|
| 12 |
+
border: 1px solid #ccd0d4;
|
| 13 |
border-top: none;
|
| 14 |
+
border-radius: 0 0 4px 4px;
|
| 15 |
+
|
| 16 |
background: #fff;
|
| 17 |
+
box-shadow: none;
|
|
|
|
| 18 |
}
|
| 19 |
|
| 20 |
#screen-meta .custom-screen-meta-link-wrap a.custom-screen-meta-link,
|
| 24 |
text-decoration: none;
|
| 25 |
display: block;
|
| 26 |
min-height: 22px;
|
| 27 |
+
box-shadow: none;
|
| 28 |
}
|
| 29 |
|
| 30 |
#screen-meta-links a.custom-screen-meta-link::after {
|
| 42 |
color: #DEFFD8;
|
| 43 |
text-shadow: none;
|
| 44 |
box-shadow: none;
|
| 45 |
+
border: none;
|
| 46 |
+
background-color: #00C31F;
|
| 47 |
}
|
| 48 |
|
| 49 |
+
#screen-meta-links #ws-pro-version-notice a.show-settings:hover {
|
| 50 |
color: white;
|
| 51 |
}
|
css/style-classic.css
CHANGED
|
@@ -97,21 +97,23 @@ a.ws_button:hover {
|
|
| 97 |
Export and import
|
| 98 |
*************************************/
|
| 99 |
|
| 100 |
-
.ui-dialog {
|
| 101 |
background: white;
|
| 102 |
border: 1px solid #c0c0c0;
|
| 103 |
}
|
| 104 |
|
| 105 |
-
.ui-dialog-titlebar {
|
| 106 |
background-color: #86A7E3;
|
|
|
|
| 107 |
}
|
| 108 |
|
| 109 |
-
.ui-dialog-title {
|
| 110 |
color: white;
|
| 111 |
}
|
| 112 |
|
| 113 |
-
.ui-dialog-titlebar-close {
|
| 114 |
background-color: transparent;
|
|
|
|
| 115 |
border-style: none;
|
| 116 |
|
| 117 |
color: white; /* WP default: #666; */
|
|
@@ -121,20 +123,20 @@ a.ws_button:hover {
|
|
| 121 |
top: 0;
|
| 122 |
right: 0;
|
| 123 |
width: 36px;
|
| 124 |
-
height:
|
| 125 |
text-align: center;
|
| 126 |
}
|
| 127 |
|
| 128 |
-
.ui-dialog-titlebar-close::before {
|
| 129 |
font: normal 20px/30px 'dashicons';
|
| 130 |
content: '\f158';
|
| 131 |
|
| 132 |
vertical-align: top;
|
| 133 |
width: 36px;
|
| 134 |
-
height:
|
| 135 |
}
|
| 136 |
|
| 137 |
-
.ui-dialog-titlebar-close:hover {
|
| 138 |
background: transparent none;
|
| 139 |
color: #004665;
|
| 140 |
}
|
| 97 |
Export and import
|
| 98 |
*************************************/
|
| 99 |
|
| 100 |
+
.settings_page_menu_editor .ui-dialog {
|
| 101 |
background: white;
|
| 102 |
border: 1px solid #c0c0c0;
|
| 103 |
}
|
| 104 |
|
| 105 |
+
.settings_page_menu_editor .ui-dialog-titlebar {
|
| 106 |
background-color: #86A7E3;
|
| 107 |
+
height: 22px;
|
| 108 |
}
|
| 109 |
|
| 110 |
+
.settings_page_menu_editor .ui-dialog-title {
|
| 111 |
color: white;
|
| 112 |
}
|
| 113 |
|
| 114 |
+
.settings_page_menu_editor .ui-button.ui-dialog-titlebar-close {
|
| 115 |
background-color: transparent;
|
| 116 |
+
background-image: none;
|
| 117 |
border-style: none;
|
| 118 |
|
| 119 |
color: white; /* WP default: #666; */
|
| 123 |
top: 0;
|
| 124 |
right: 0;
|
| 125 |
width: 36px;
|
| 126 |
+
height: 22px;
|
| 127 |
text-align: center;
|
| 128 |
}
|
| 129 |
|
| 130 |
+
.settings_page_menu_editor .ui-dialog-titlebar-close::before {
|
| 131 |
font: normal 20px/30px 'dashicons';
|
| 132 |
content: '\f158';
|
| 133 |
|
| 134 |
vertical-align: top;
|
| 135 |
width: 36px;
|
| 136 |
+
height: 22px;
|
| 137 |
}
|
| 138 |
|
| 139 |
+
.settings_page_menu_editor .ui-dialog-titlebar-close:hover {
|
| 140 |
background: transparent none;
|
| 141 |
color: #004665;
|
| 142 |
}
|
css/style-modern-one.css
CHANGED
|
@@ -137,17 +137,16 @@ a.ws_edit_link {
|
|
| 137 |
margin-left: 0;
|
| 138 |
margin-right: 0; }
|
| 139 |
|
| 140 |
-
.ui-dialog {
|
| 141 |
background: white;
|
| 142 |
border: 1px solid #c0c0c0;
|
| 143 |
border-radius: 0; }
|
| 144 |
-
|
| 145 |
-
.ui-dialog-titlebar {
|
| 146 |
background-color: #fcfcfc;
|
| 147 |
border-bottom: 1px solid #dfdfdf;
|
| 148 |
height: auto;
|
| 149 |
padding: 0; }
|
| 150 |
-
.ui-dialog-titlebar .ui-dialog-titlebar-close {
|
| 151 |
background: none;
|
| 152 |
border-style: none;
|
| 153 |
color: #666;
|
|
@@ -160,19 +159,18 @@ a.ws_edit_link {
|
|
| 160 |
width: 36px;
|
| 161 |
height: 36px;
|
| 162 |
text-align: center; }
|
| 163 |
-
.ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-button-text {
|
| 164 |
display: none; }
|
| 165 |
-
.ui-dialog-titlebar .ui-dialog-titlebar-close::before {
|
| 166 |
font: normal 20px/36px 'dashicons';
|
| 167 |
content: '\f158';
|
| 168 |
vertical-align: middle;
|
| 169 |
width: 36px;
|
| 170 |
height: 36px; }
|
| 171 |
-
.ui-dialog-titlebar .ui-dialog-titlebar-close:hover {
|
| 172 |
background: transparent none;
|
| 173 |
color: #2ea2cc; }
|
| 174 |
-
|
| 175 |
-
.ui-dialog-title {
|
| 176 |
color: #444444;
|
| 177 |
font-size: 18px;
|
| 178 |
font-weight: 600;
|
| 137 |
margin-left: 0;
|
| 138 |
margin-right: 0; }
|
| 139 |
|
| 140 |
+
.settings_page_menu_editor .ui-dialog {
|
| 141 |
background: white;
|
| 142 |
border: 1px solid #c0c0c0;
|
| 143 |
border-radius: 0; }
|
| 144 |
+
.settings_page_menu_editor .ui-dialog-titlebar {
|
|
|
|
| 145 |
background-color: #fcfcfc;
|
| 146 |
border-bottom: 1px solid #dfdfdf;
|
| 147 |
height: auto;
|
| 148 |
padding: 0; }
|
| 149 |
+
.settings_page_menu_editor .ui-dialog-titlebar .ui-button.ui-dialog-titlebar-close {
|
| 150 |
background: none;
|
| 151 |
border-style: none;
|
| 152 |
color: #666;
|
| 159 |
width: 36px;
|
| 160 |
height: 36px;
|
| 161 |
text-align: center; }
|
| 162 |
+
.settings_page_menu_editor .ui-dialog-titlebar .ui-button.ui-dialog-titlebar-close .ui-icon, .settings_page_menu_editor .ui-dialog-titlebar .ui-button.ui-dialog-titlebar-close .ui-button-text {
|
| 163 |
display: none; }
|
| 164 |
+
.settings_page_menu_editor .ui-dialog-titlebar .ui-dialog-titlebar-close::before {
|
| 165 |
font: normal 20px/36px 'dashicons';
|
| 166 |
content: '\f158';
|
| 167 |
vertical-align: middle;
|
| 168 |
width: 36px;
|
| 169 |
height: 36px; }
|
| 170 |
+
.settings_page_menu_editor .ui-dialog-titlebar .ui-dialog-titlebar-close:hover {
|
| 171 |
background: transparent none;
|
| 172 |
color: #2ea2cc; }
|
| 173 |
+
.settings_page_menu_editor .ui-dialog-title {
|
|
|
|
| 174 |
color: #444444;
|
| 175 |
font-size: 18px;
|
| 176 |
font-weight: 600;
|
css/style-modern-one.scss
CHANGED
|
@@ -286,61 +286,63 @@ a.ws_edit_link {
|
|
| 286 |
// Dialogs
|
| 287 |
//==============================================
|
| 288 |
|
| 289 |
-
.
|
| 290 |
-
|
| 291 |
-
|
| 292 |
-
|
| 293 |
-
|
|
|
|
| 294 |
|
| 295 |
-
.ui-dialog-titlebar {
|
| 296 |
-
|
| 297 |
-
|
| 298 |
-
|
| 299 |
-
|
| 300 |
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
|
| 304 |
|
| 305 |
-
|
| 306 |
-
|
| 307 |
-
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
|
| 313 |
-
|
| 314 |
-
|
| 315 |
|
| 316 |
-
|
| 317 |
|
| 318 |
-
|
| 319 |
-
|
|
|
|
| 320 |
}
|
| 321 |
-
}
|
| 322 |
|
| 323 |
-
|
| 324 |
-
|
| 325 |
-
|
| 326 |
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
|
| 331 |
|
| 332 |
-
|
| 333 |
-
|
| 334 |
-
|
|
|
|
| 335 |
}
|
| 336 |
-
}
|
| 337 |
|
| 338 |
-
.ui-dialog-title {
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
-
|
| 343 |
|
| 344 |
-
|
| 345 |
-
|
| 346 |
-
}
|
|
|
| 286 |
// Dialogs
|
| 287 |
//==============================================
|
| 288 |
|
| 289 |
+
.settings_page_menu_editor {
|
| 290 |
+
.ui-dialog {
|
| 291 |
+
background: white;
|
| 292 |
+
border: 1px solid #c0c0c0;
|
| 293 |
+
border-radius: 0;
|
| 294 |
+
}
|
| 295 |
|
| 296 |
+
.ui-dialog-titlebar {
|
| 297 |
+
background-color: #fcfcfc;
|
| 298 |
+
border-bottom: 1px solid #dfdfdf;
|
| 299 |
+
height: auto;
|
| 300 |
+
padding: 0;
|
| 301 |
|
| 302 |
+
.ui-button.ui-dialog-titlebar-close {
|
| 303 |
+
background: none;
|
| 304 |
+
border-style: none;
|
| 305 |
|
| 306 |
+
color: #666;
|
| 307 |
+
cursor: pointer;
|
| 308 |
+
padding: 0;
|
| 309 |
+
margin: 0;
|
| 310 |
+
position: absolute;
|
| 311 |
+
top: 0;
|
| 312 |
+
right: 0;
|
| 313 |
|
| 314 |
+
width: 36px;
|
| 315 |
+
height: 36px;
|
| 316 |
|
| 317 |
+
text-align: center;
|
| 318 |
|
| 319 |
+
.ui-icon, .ui-button-text {
|
| 320 |
+
display: none;
|
| 321 |
+
}
|
| 322 |
}
|
|
|
|
| 323 |
|
| 324 |
+
.ui-dialog-titlebar-close::before {
|
| 325 |
+
font: normal 20px/36px 'dashicons';
|
| 326 |
+
content: '\f158';
|
| 327 |
|
| 328 |
+
vertical-align: middle;
|
| 329 |
+
width: 36px;
|
| 330 |
+
height: 36px;
|
| 331 |
+
}
|
| 332 |
|
| 333 |
+
.ui-dialog-titlebar-close:hover {
|
| 334 |
+
background: transparent none;
|
| 335 |
+
color: #2ea2cc;
|
| 336 |
+
}
|
| 337 |
}
|
|
|
|
| 338 |
|
| 339 |
+
.ui-dialog-title {
|
| 340 |
+
color: #444444;
|
| 341 |
+
font-size: 18px;
|
| 342 |
+
font-weight: 600;
|
| 343 |
+
line-height: 36px;
|
| 344 |
|
| 345 |
+
padding: 0 36px 0 8px;
|
| 346 |
+
display: block;
|
| 347 |
+
}
|
| 348 |
+
}
|
includes/editor-page.php
CHANGED
|
@@ -33,29 +33,10 @@ $hide_button_extra_tooltip = 'When "All" is selected, this will hide the menu fr
|
|
| 33 |
|
| 34 |
//Output the "Upgrade to Pro" message
|
| 35 |
if ( !apply_filters('admin_menu_editor_is_pro', false) ){
|
| 36 |
-
//Pseudo-randomly decide whether to show the VAC link.
|
| 37 |
-
$is_vac_link_visible = (hexdec( substr(md5(get_site_url() . 'vc3'), -3) ) % 100) <= 20; //20% of sites will see it.
|
| 38 |
?>
|
| 39 |
<script type="text/javascript">
|
| 40 |
(function($){
|
| 41 |
-
var screenLinks = $('#screen-meta-links')
|
| 42 |
-
showVacLink = (<?php echo $is_vac_link_visible ? 'true' : 'false' ?>);
|
| 43 |
-
|
| 44 |
-
if (showVacLink) {
|
| 45 |
-
screenLinks.append(
|
| 46 |
-
$('<div>', {
|
| 47 |
-
'class' : 'custom-screen-meta-link-wrap',
|
| 48 |
-
'id' : 'ws-visual-admin-customizer-ad'
|
| 49 |
-
}).append($('<a>', {
|
| 50 |
-
'href' : 'https://wordpress.org/plugins/visual-admin-customizer/',
|
| 51 |
-
'class' : 'show-settings custom-screen-meta-link',
|
| 52 |
-
'title' : 'A free plugin for customizing the WordPress admin interface',
|
| 53 |
-
'target': '_blank',
|
| 54 |
-
'text' : 'Visual Admin Customizer'
|
| 55 |
-
}))
|
| 56 |
-
);
|
| 57 |
-
}
|
| 58 |
-
|
| 59 |
screenLinks.append(
|
| 60 |
'<div id="ws-pro-version-notice" class="custom-screen-meta-link-wrap">' +
|
| 61 |
'<a href="http://adminmenueditor.com/upgrade-to-pro/?utm_source=Admin%2BMenu%2BEditor%2Bfree&utm_medium=text_link&utm_content=top_upgrade_link&utm_campaign=Plugins" id="ws-pro-version-notice-link" class="show-settings custom-screen-meta-link" target="_blank" title="View Pro version details">Upgrade to Pro</a>' +
|
| 33 |
|
| 34 |
//Output the "Upgrade to Pro" message
|
| 35 |
if ( !apply_filters('admin_menu_editor_is_pro', false) ){
|
|
|
|
|
|
|
| 36 |
?>
|
| 37 |
<script type="text/javascript">
|
| 38 |
(function($){
|
| 39 |
+
var screenLinks = $('#screen-meta-links');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
screenLinks.append(
|
| 41 |
'<div id="ws-pro-version-notice" class="custom-screen-meta-link-wrap">' +
|
| 42 |
'<a href="http://adminmenueditor.com/upgrade-to-pro/?utm_source=Admin%2BMenu%2BEditor%2Bfree&utm_medium=text_link&utm_content=top_upgrade_link&utm_campaign=Plugins" id="ws-pro-version-notice-link" class="show-settings custom-screen-meta-link" target="_blank" title="View Pro version details">Upgrade to Pro</a>' +
|
includes/menu-editor-core.php
CHANGED
|
@@ -113,6 +113,11 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
| 113 |
*/
|
| 114 |
private $access_test_runner = null;
|
| 115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
function init(){
|
| 117 |
$this->sitewide_options = true;
|
| 118 |
|
|
@@ -1276,26 +1281,48 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
| 1276 |
return $this->test_menu;
|
| 1277 |
}
|
| 1278 |
|
| 1279 |
-
|
| 1280 |
-
if (
|
| 1281 |
-
|
| 1282 |
-
|
| 1283 |
-
|
| 1284 |
-
|
| 1285 |
-
|
| 1286 |
-
|
| 1287 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1288 |
}
|
| 1289 |
-
}
|
| 1290 |
-
if (
|
| 1291 |
-
|
|
|
|
| 1292 |
}
|
| 1293 |
-
|
| 1294 |
}
|
| 1295 |
|
| 1296 |
return $this->cached_custom_menu;
|
| 1297 |
}
|
| 1298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1299 |
private function guess_menu_config_id() {
|
| 1300 |
if ( is_network_admin() ) {
|
| 1301 |
return 'network-admin';
|
|
@@ -2616,6 +2643,9 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
| 2616 |
} else {
|
| 2617 |
$wrap_classes[] = 'ame-is-free-version';
|
| 2618 |
}
|
|
|
|
|
|
|
|
|
|
| 2619 |
|
| 2620 |
echo '<div class="', implode(' ', $wrap_classes), '">';
|
| 2621 |
printf(
|
|
@@ -4178,11 +4208,6 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
| 4178 |
'className' => 'ameAdminCss',
|
| 4179 |
'title' => 'Admin CSS',
|
| 4180 |
),*/
|
| 4181 |
-
/*'tweaks' => array(
|
| 4182 |
-
'relativePath' => 'modules/tweaks/tweaks.php',
|
| 4183 |
-
'className' => 'ameTweakManager',
|
| 4184 |
-
'title' => 'Tweaks',
|
| 4185 |
-
),*/
|
| 4186 |
'hide-admin-menu' => array(
|
| 4187 |
'relativePath' => 'extras/modules/hide-admin-menu/hide-admin-menu.php',
|
| 4188 |
'className' => 'ameAdminMenuHider',
|
| 113 |
*/
|
| 114 |
private $access_test_runner = null;
|
| 115 |
|
| 116 |
+
/**
|
| 117 |
+
* @var Exception|null
|
| 118 |
+
*/
|
| 119 |
+
private $last_menu_exception = null;
|
| 120 |
+
|
| 121 |
function init(){
|
| 122 |
$this->sitewide_options = true;
|
| 123 |
|
| 1281 |
return $this->test_menu;
|
| 1282 |
}
|
| 1283 |
|
| 1284 |
+
try {
|
| 1285 |
+
if ( $config_id === 'network-admin' ) {
|
| 1286 |
+
if ( empty($this->options['custom_network_menu']) ) {
|
| 1287 |
+
return null;
|
| 1288 |
+
}
|
| 1289 |
+
$this->cached_custom_menu = ameMenu::load_array($this->options['custom_network_menu']);
|
| 1290 |
+
} else if ( $config_id === 'site' ) {
|
| 1291 |
+
$site_specific_options = get_option($this->option_name, null);
|
| 1292 |
+
if ( is_array($site_specific_options) && isset($site_specific_options['custom_menu']) ) {
|
| 1293 |
+
$this->cached_custom_menu = ameMenu::load_array($site_specific_options['custom_menu']);
|
| 1294 |
+
}
|
| 1295 |
+
} else {
|
| 1296 |
+
if ( empty($this->options['custom_menu']) ) {
|
| 1297 |
+
return null;
|
| 1298 |
+
}
|
| 1299 |
+
$this->cached_custom_menu = ameMenu::load_array($this->options['custom_menu']);
|
| 1300 |
}
|
| 1301 |
+
} catch (InvalidMenuException $exception) {
|
| 1302 |
+
if ( is_admin() && is_user_logged_in() && !did_action('all_admin_notices') ) {
|
| 1303 |
+
add_action('all_admin_notices', array($this, 'show_config_corruption_error'));
|
| 1304 |
+
$this->last_menu_exception = $exception;
|
| 1305 |
}
|
| 1306 |
+
return null;
|
| 1307 |
}
|
| 1308 |
|
| 1309 |
return $this->cached_custom_menu;
|
| 1310 |
}
|
| 1311 |
|
| 1312 |
+
/**
|
| 1313 |
+
* Display a notice about the exception that was thrown when loading the menu configuration.
|
| 1314 |
+
*/
|
| 1315 |
+
public function show_config_corruption_error() {
|
| 1316 |
+
if ( !$this->current_user_can_edit_menu() || is_null($this->last_menu_exception) ) {
|
| 1317 |
+
return;
|
| 1318 |
+
}
|
| 1319 |
+
printf(
|
| 1320 |
+
'<div class="notice notice-error"><p>%s</p></div>',
|
| 1321 |
+
'<strong>Admin Menu Editor encountered an error while trying to load the menu configuration!</strong><br> '
|
| 1322 |
+
. esc_html($this->last_menu_exception->getMessage())
|
| 1323 |
+
);
|
| 1324 |
+
}
|
| 1325 |
+
|
| 1326 |
private function guess_menu_config_id() {
|
| 1327 |
if ( is_network_admin() ) {
|
| 1328 |
return 'network-admin';
|
| 2643 |
} else {
|
| 2644 |
$wrap_classes[] = 'ame-is-free-version';
|
| 2645 |
}
|
| 2646 |
+
if ( isset($GLOBALS['wp_version']) && version_compare($GLOBALS['wp_version'], '5.3-RC1', '>=') ) {
|
| 2647 |
+
$wrap_classes[] = 'ame-is-wp53-plus';
|
| 2648 |
+
}
|
| 2649 |
|
| 2650 |
echo '<div class="', implode(' ', $wrap_classes), '">';
|
| 2651 |
printf(
|
| 4208 |
'className' => 'ameAdminCss',
|
| 4209 |
'title' => 'Admin CSS',
|
| 4210 |
),*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4211 |
'hide-admin-menu' => array(
|
| 4212 |
'relativePath' => 'extras/modules/hide-admin-menu/hide-admin-menu.php',
|
| 4213 |
'className' => 'ameAdminMenuHider',
|
includes/menu.php
CHANGED
|
@@ -40,7 +40,7 @@ abstract class ameMenu {
|
|
| 40 |
$compared = version_compare($arr['format']['version'], self::format_version);
|
| 41 |
if ( $compared > 0 ) {
|
| 42 |
throw new InvalidMenuException(sprintf(
|
| 43 |
-
"Can't load a menu created by a newer version of the plugin. Menu format: '%s', newest supported format: '%s'.",
|
| 44 |
$arr['format']['version'],
|
| 45 |
self::format_version
|
| 46 |
));
|
|
@@ -99,7 +99,7 @@ abstract class ameMenu {
|
|
| 99 |
$is_valid_preset = true;
|
| 100 |
foreach($preset as $property => $color) {
|
| 101 |
//Note: It would good to check $property against a list of known color names.
|
| 102 |
-
if ( !is_string($property) || !is_string($color) || !preg_match('
|
| 103 |
$is_valid_preset = false;
|
| 104 |
break;
|
| 105 |
}
|
|
@@ -206,7 +206,22 @@ abstract class ameMenu {
|
|
| 206 |
*/
|
| 207 |
public static function to_json($menu) {
|
| 208 |
$menu = self::add_format_header($menu);
|
| 209 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 210 |
}
|
| 211 |
|
| 212 |
/**
|
| 40 |
$compared = version_compare($arr['format']['version'], self::format_version);
|
| 41 |
if ( $compared > 0 ) {
|
| 42 |
throw new InvalidMenuException(sprintf(
|
| 43 |
+
"Can't load a menu created by a newer version of the plugin. Menu format: '%s', newest supported format: '%s'. Try updating the plugin.",
|
| 44 |
$arr['format']['version'],
|
| 45 |
self::format_version
|
| 46 |
));
|
| 99 |
$is_valid_preset = true;
|
| 100 |
foreach($preset as $property => $color) {
|
| 101 |
//Note: It would good to check $property against a list of known color names.
|
| 102 |
+
if ( !is_string($property) || !is_string($color) || !preg_match('/^#[0-9a-f]{6}$/i', $color) ) {
|
| 103 |
$is_valid_preset = false;
|
| 104 |
break;
|
| 105 |
}
|
| 206 |
*/
|
| 207 |
public static function to_json($menu) {
|
| 208 |
$menu = self::add_format_header($menu);
|
| 209 |
+
$result = json_encode($menu);
|
| 210 |
+
if ( !is_string($result) ) {
|
| 211 |
+
$message = sprintf(
|
| 212 |
+
'Failed to encode the menu configuration as JSON. json_encode returned a %s.',
|
| 213 |
+
gettype($result)
|
| 214 |
+
);
|
| 215 |
+
if ( function_exists('json_last_error') ) {
|
| 216 |
+
/** @noinspection PhpComposerExtensionStubsInspection */
|
| 217 |
+
$message .= sprintf(' JSON error code: %d.', json_last_error());
|
| 218 |
+
}
|
| 219 |
+
if ( function_exists('json_last_error_msg') ) {
|
| 220 |
+
$message .= sprintf(' JSON error message: %s', json_last_error_msg());
|
| 221 |
+
}
|
| 222 |
+
throw new RuntimeException($message);
|
| 223 |
+
}
|
| 224 |
+
return $result;
|
| 225 |
}
|
| 226 |
|
| 227 |
/**
|
js/actor-manager.js
CHANGED
|
@@ -496,6 +496,66 @@ var AmeActorManager = /** @class */ (function () {
|
|
| 496 |
AmeActorManager._ = wsAmeLodash;
|
| 497 |
return AmeActorManager;
|
| 498 |
}());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 499 |
if (typeof wsAmeActorData !== 'undefined') {
|
| 500 |
AmeActors = new AmeActorManager(wsAmeActorData.roles, wsAmeActorData.users, wsAmeActorData.isMultisite, wsAmeActorData.suspectedMetaCaps);
|
| 501 |
if (typeof wsAmeActorData['capPower'] !== 'undefined') {
|
| 496 |
AmeActorManager._ = wsAmeLodash;
|
| 497 |
return AmeActorManager;
|
| 498 |
}());
|
| 499 |
+
var AmeObservableActorSettings = /** @class */ (function () {
|
| 500 |
+
function AmeObservableActorSettings(initialData) {
|
| 501 |
+
this.items = {};
|
| 502 |
+
this.numberOfObservables = ko.observable(0);
|
| 503 |
+
if (initialData) {
|
| 504 |
+
this.setAll(initialData);
|
| 505 |
+
}
|
| 506 |
+
}
|
| 507 |
+
AmeObservableActorSettings.prototype.get = function (actor, defaultValue) {
|
| 508 |
+
if (defaultValue === void 0) { defaultValue = null; }
|
| 509 |
+
if (this.items.hasOwnProperty(actor)) {
|
| 510 |
+
var value = this.items[actor]();
|
| 511 |
+
if (value === null) {
|
| 512 |
+
return defaultValue;
|
| 513 |
+
}
|
| 514 |
+
return value;
|
| 515 |
+
}
|
| 516 |
+
this.numberOfObservables(); //Establish a dependency.
|
| 517 |
+
return defaultValue;
|
| 518 |
+
};
|
| 519 |
+
AmeObservableActorSettings.prototype.set = function (actor, value) {
|
| 520 |
+
if (!this.items.hasOwnProperty(actor)) {
|
| 521 |
+
this.items[actor] = ko.observable(value);
|
| 522 |
+
this.numberOfObservables(this.numberOfObservables() + 1);
|
| 523 |
+
}
|
| 524 |
+
else {
|
| 525 |
+
this.items[actor](value);
|
| 526 |
+
}
|
| 527 |
+
};
|
| 528 |
+
AmeObservableActorSettings.prototype.getAll = function () {
|
| 529 |
+
var result = {};
|
| 530 |
+
for (var actorId in this.items) {
|
| 531 |
+
if (this.items.hasOwnProperty(actorId)) {
|
| 532 |
+
var value = this.items[actorId]();
|
| 533 |
+
if (value !== null) {
|
| 534 |
+
result[actorId] = value;
|
| 535 |
+
}
|
| 536 |
+
}
|
| 537 |
+
}
|
| 538 |
+
return result;
|
| 539 |
+
};
|
| 540 |
+
AmeObservableActorSettings.prototype.setAll = function (values) {
|
| 541 |
+
for (var actorId in values) {
|
| 542 |
+
if (values.hasOwnProperty(actorId)) {
|
| 543 |
+
this.set(actorId, values[actorId]);
|
| 544 |
+
}
|
| 545 |
+
}
|
| 546 |
+
};
|
| 547 |
+
/**
|
| 548 |
+
* Reset all values to null.
|
| 549 |
+
*/
|
| 550 |
+
AmeObservableActorSettings.prototype.resetAll = function () {
|
| 551 |
+
for (var actorId in this.items) {
|
| 552 |
+
if (this.items.hasOwnProperty(actorId)) {
|
| 553 |
+
this.items[actorId](null);
|
| 554 |
+
}
|
| 555 |
+
}
|
| 556 |
+
};
|
| 557 |
+
return AmeObservableActorSettings;
|
| 558 |
+
}());
|
| 559 |
if (typeof wsAmeActorData !== 'undefined') {
|
| 560 |
AmeActors = new AmeActorManager(wsAmeActorData.roles, wsAmeActorData.users, wsAmeActorData.isMultisite, wsAmeActorData.suspectedMetaCaps);
|
| 561 |
if (typeof wsAmeActorData['capPower'] !== 'undefined') {
|
js/actor-manager.ts
CHANGED
|
@@ -657,6 +657,71 @@ interface AmeActorManagerInterface {
|
|
| 657 |
actorExists(actorId: string): boolean;
|
| 658 |
}
|
| 659 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 660 |
if (typeof wsAmeActorData !== 'undefined') {
|
| 661 |
AmeActors = new AmeActorManager(
|
| 662 |
wsAmeActorData.roles,
|
| 657 |
actorExists(actorId: string): boolean;
|
| 658 |
}
|
| 659 |
|
| 660 |
+
class AmeObservableActorSettings {
|
| 661 |
+
private items: { [actorId: string] : KnockoutObservable<boolean>; } = {};
|
| 662 |
+
private readonly numberOfObservables: KnockoutObservable<number>;
|
| 663 |
+
|
| 664 |
+
constructor(initialData?: AmeDictionary<boolean>) {
|
| 665 |
+
this.numberOfObservables = ko.observable(0);
|
| 666 |
+
if (initialData) {
|
| 667 |
+
this.setAll(initialData);
|
| 668 |
+
}
|
| 669 |
+
}
|
| 670 |
+
|
| 671 |
+
get(actor: string, defaultValue = null): boolean {
|
| 672 |
+
if (this.items.hasOwnProperty(actor)) {
|
| 673 |
+
let value = this.items[actor]();
|
| 674 |
+
if (value === null) {
|
| 675 |
+
return defaultValue;
|
| 676 |
+
}
|
| 677 |
+
return value;
|
| 678 |
+
}
|
| 679 |
+
this.numberOfObservables(); //Establish a dependency.
|
| 680 |
+
return defaultValue;
|
| 681 |
+
}
|
| 682 |
+
|
| 683 |
+
set(actor: string, value: boolean) {
|
| 684 |
+
if (!this.items.hasOwnProperty(actor)) {
|
| 685 |
+
this.items[actor] = ko.observable(value);
|
| 686 |
+
this.numberOfObservables(this.numberOfObservables() + 1);
|
| 687 |
+
} else {
|
| 688 |
+
this.items[actor](value);
|
| 689 |
+
}
|
| 690 |
+
}
|
| 691 |
+
|
| 692 |
+
getAll(): AmeDictionary<boolean> {
|
| 693 |
+
let result: AmeDictionary<boolean> = {};
|
| 694 |
+
for (let actorId in this.items) {
|
| 695 |
+
if (this.items.hasOwnProperty(actorId)) {
|
| 696 |
+
let value = this.items[actorId]();
|
| 697 |
+
if (value !== null) {
|
| 698 |
+
result[actorId] = value;
|
| 699 |
+
}
|
| 700 |
+
}
|
| 701 |
+
}
|
| 702 |
+
return result;
|
| 703 |
+
}
|
| 704 |
+
|
| 705 |
+
setAll(values: AmeDictionary<boolean>) {
|
| 706 |
+
for (let actorId in values) {
|
| 707 |
+
if (values.hasOwnProperty(actorId)) {
|
| 708 |
+
this.set(actorId, values[actorId]);
|
| 709 |
+
}
|
| 710 |
+
}
|
| 711 |
+
}
|
| 712 |
+
|
| 713 |
+
/**
|
| 714 |
+
* Reset all values to null.
|
| 715 |
+
*/
|
| 716 |
+
resetAll() {
|
| 717 |
+
for (let actorId in this.items) {
|
| 718 |
+
if (this.items.hasOwnProperty(actorId)) {
|
| 719 |
+
this.items[actorId](null);
|
| 720 |
+
}
|
| 721 |
+
}
|
| 722 |
+
}
|
| 723 |
+
}
|
| 724 |
+
|
| 725 |
if (typeof wsAmeActorData !== 'undefined') {
|
| 726 |
AmeActors = new AmeActorManager(
|
| 727 |
wsAmeActorData.roles,
|
menu-editor.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Plugin Name: Admin Menu Editor
|
| 4 |
Plugin URI: http://w-shadow.com/blog/2008/12/20/admin-menu-editor-for-wordpress/
|
| 5 |
Description: Lets you directly edit the WordPress admin menu. You can re-order, hide or rename existing menus, add custom menus and more.
|
| 6 |
-
Version: 1.9.
|
| 7 |
Author: Janis Elsts
|
| 8 |
Author URI: http://w-shadow.com/blog/
|
| 9 |
*/
|
| 3 |
Plugin Name: Admin Menu Editor
|
| 4 |
Plugin URI: http://w-shadow.com/blog/2008/12/20/admin-menu-editor-for-wordpress/
|
| 5 |
Description: Lets you directly edit the WordPress admin menu. You can re-order, hide or rename existing menus, add custom menus and more.
|
| 6 |
+
Version: 1.9.2
|
| 7 |
Author: Janis Elsts
|
| 8 |
Author URI: http://w-shadow.com/blog/
|
| 9 |
*/
|
modules/access-editor/access-editor-template.php
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
<div class="ws_dialog_panel">
|
| 4 |
<div class="error inline" id="ws_hardcoded_role_error">
|
| 1 |
+
<?php
|
| 2 |
+
$ameDialogClasses = array();
|
| 3 |
+
if ( isset($GLOBALS['wp_version']) && version_compare($GLOBALS['wp_version'], '5.3-RC1', '>=') ) {
|
| 4 |
+
$ameDialogClasses[] = 'ame-is-wp53-plus';
|
| 5 |
+
}
|
| 6 |
+
?>
|
| 7 |
+
<div id="ws_menu_access_editor" title="Permissions" class="<?php echo implode(' ', $ameDialogClasses); ?>">
|
| 8 |
|
| 9 |
<div class="ws_dialog_panel">
|
| 10 |
<div class="error inline" id="ws_hardcoded_role_error">
|
modules/actor-selector/actor-selector.js
CHANGED
|
@@ -205,6 +205,26 @@ var AmeActorSelector = /** @class */ (function () {
|
|
| 205 |
}
|
| 206 |
return name;
|
| 207 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 208 |
AmeActorSelector._ = wsAmeLodash;
|
| 209 |
return AmeActorSelector;
|
| 210 |
}());
|
| 205 |
}
|
| 206 |
return name;
|
| 207 |
};
|
| 208 |
+
/**
|
| 209 |
+
* Wrap the selected actor in a computed observable so that it can be used with Knockout.
|
| 210 |
+
* @param ko
|
| 211 |
+
*/
|
| 212 |
+
AmeActorSelector.prototype.createKnockoutObservable = function (ko) {
|
| 213 |
+
var _this = this;
|
| 214 |
+
var internalObservable = ko.observable(this.selectedActor);
|
| 215 |
+
var publicObservable = ko.computed({
|
| 216 |
+
read: function () {
|
| 217 |
+
return internalObservable();
|
| 218 |
+
},
|
| 219 |
+
write: function (newActor) {
|
| 220 |
+
_this.setSelectedActor(newActor);
|
| 221 |
+
}
|
| 222 |
+
});
|
| 223 |
+
this.onChange(function (newSelectedActor) {
|
| 224 |
+
internalObservable(newSelectedActor);
|
| 225 |
+
});
|
| 226 |
+
return publicObservable;
|
| 227 |
+
};
|
| 228 |
AmeActorSelector._ = wsAmeLodash;
|
| 229 |
return AmeActorSelector;
|
| 230 |
}());
|
modules/actor-selector/actor-selector.ts
CHANGED
|
@@ -280,4 +280,24 @@ class AmeActorSelector {
|
|
| 280 |
}
|
| 281 |
return name;
|
| 282 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 283 |
}
|
| 280 |
}
|
| 281 |
return name;
|
| 282 |
}
|
| 283 |
+
|
| 284 |
+
/**
|
| 285 |
+
* Wrap the selected actor in a computed observable so that it can be used with Knockout.
|
| 286 |
+
* @param ko
|
| 287 |
+
*/
|
| 288 |
+
createKnockoutObservable(ko: KnockoutStatic): KnockoutComputed<string> {
|
| 289 |
+
const internalObservable = ko.observable(this.selectedActor);
|
| 290 |
+
const publicObservable = ko.computed<string>({
|
| 291 |
+
read: function () {
|
| 292 |
+
return internalObservable();
|
| 293 |
+
},
|
| 294 |
+
write: (newActor: string) => {
|
| 295 |
+
this.setSelectedActor(newActor);
|
| 296 |
+
}
|
| 297 |
+
});
|
| 298 |
+
this.onChange((newSelectedActor: string) => {
|
| 299 |
+
internalObservable(newSelectedActor);
|
| 300 |
+
});
|
| 301 |
+
return publicObservable;
|
| 302 |
+
}
|
| 303 |
}
|
modules/highlight-new-menus/assets/highlight-menus.js
CHANGED
|
@@ -14,8 +14,6 @@ jQuery(function($) {
|
|
| 14 |
* the AJAX request won't be triggered. It will be sent only once the function stops
|
| 15 |
* being called for N milliseconds. Additionally, it will wait at least N milliseconds
|
| 16 |
* between requests.
|
| 17 |
-
*
|
| 18 |
-
* @param string menuUrls
|
| 19 |
*/
|
| 20 |
var flagAsSeen = (function() {
|
| 21 |
var queue = [],
|
|
@@ -54,6 +52,9 @@ jQuery(function($) {
|
|
| 54 |
timeout = null;
|
| 55 |
}
|
| 56 |
|
|
|
|
|
|
|
|
|
|
| 57 |
return function(menuUrl) {
|
| 58 |
if ((menuUrl === '') || seenOnThisPage.hasOwnProperty(menuUrl)) {
|
| 59 |
return;
|
|
@@ -127,6 +128,18 @@ jQuery(function($) {
|
|
| 127 |
maybeFlagItem($(this));
|
| 128 |
});
|
| 129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
if (foundNewMenus) {
|
| 131 |
$adminMenu.on('mouseenter click focusin', 'li.ws-nmh-is-new-menu', function() {
|
| 132 |
maybeFlagItem($(this).closest('li'));
|
| 14 |
* the AJAX request won't be triggered. It will be sent only once the function stops
|
| 15 |
* being called for N milliseconds. Additionally, it will wait at least N milliseconds
|
| 16 |
* between requests.
|
|
|
|
|
|
|
| 17 |
*/
|
| 18 |
var flagAsSeen = (function() {
|
| 19 |
var queue = [],
|
| 52 |
timeout = null;
|
| 53 |
}
|
| 54 |
|
| 55 |
+
/**
|
| 56 |
+
* @param string menuUrl
|
| 57 |
+
*/
|
| 58 |
return function(menuUrl) {
|
| 59 |
if ((menuUrl === '') || seenOnThisPage.hasOwnProperty(menuUrl)) {
|
| 60 |
return;
|
| 128 |
maybeFlagItem($(this));
|
| 129 |
});
|
| 130 |
|
| 131 |
+
//Flag any hidden items as seen. The user can't actually click hidden items,
|
| 132 |
+
//so the parent menu would permanently stay highlighted if we didn't do this.
|
| 133 |
+
if (foundNewMenus) {
|
| 134 |
+
//We want to run after all other $(document).ready callbacks because some
|
| 135 |
+
//of them might hide admin menu items by calling $('selector').hide().
|
| 136 |
+
setTimeout(function() {
|
| 137 |
+
$newItems.filter(':hidden').not('.wp-submenu-head').each(function() {
|
| 138 |
+
maybeFlagItem($(this));
|
| 139 |
+
});
|
| 140 |
+
}, 60);
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
if (foundNewMenus) {
|
| 144 |
$adminMenu.on('mouseenter click focusin', 'li.ws-nmh-is-new-menu', function() {
|
| 145 |
maybeFlagItem($(this).closest('li'));
|
modules/highlight-new-menus/wsNewMenuHighlighter.php
CHANGED
|
@@ -201,7 +201,7 @@ class wsNewMenuHighlighter {
|
|
| 201 |
'ws-nmh-admin-script',
|
| 202 |
plugins_url('assets/highlight-menus.js', __FILE__),
|
| 203 |
$dependencies,
|
| 204 |
-
'
|
| 205 |
);
|
| 206 |
|
| 207 |
wp_localize_script(
|
| 201 |
'ws-nmh-admin-script',
|
| 202 |
plugins_url('assets/highlight-menus.js', __FILE__),
|
| 203 |
$dependencies,
|
| 204 |
+
'20191111'
|
| 205 |
);
|
| 206 |
|
| 207 |
wp_localize_script(
|
modules/tweaks/default-tweaks.php
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
return array(
|
| 3 |
-
'hide-screen-meta-links' => array(
|
| 4 |
-
'label' => 'Hide screen meta links',
|
| 5 |
-
'selector' => '#screen-meta-links'
|
| 6 |
-
),
|
| 7 |
-
'hide-screen-options' => array(
|
| 8 |
-
'label' => 'Hide the "Screen Options" button',
|
| 9 |
-
'selector' => '#screen-options-link-wrap',
|
| 10 |
-
'parent' => 'hide-screen-meta-links',
|
| 11 |
-
),
|
| 12 |
-
'hide-help-panel' => array(
|
| 13 |
-
'label' => 'Hide the "Help" button',
|
| 14 |
-
'selector' => '#contextual-help-link-wrap',
|
| 15 |
-
'parent' => 'hide-screen-meta-links',
|
| 16 |
-
),
|
| 17 |
-
'hide-all-admin-notices' => array(
|
| 18 |
-
'label' => 'Hide ALL admin notices',
|
| 19 |
-
'selector' => '.wrap .notice, .wrap .updated',
|
| 20 |
-
),
|
| 21 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
modules/tweaks/tweaks-template.php
DELETED
|
@@ -1,13 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
/**
|
| 3 |
-
* @var string $tabUrl Fully qualified URL of the tab.
|
| 4 |
-
* @var array $tweaks
|
| 5 |
-
*/
|
| 6 |
-
|
| 7 |
-
?>
|
| 8 |
-
<div id="ame-tweak-manager">
|
| 9 |
-
<?php require AME_ROOT_DIR . '/modules/actor-selector/actor-selector-template.php'; ?>
|
| 10 |
-
|
| 11 |
-
<pre><?php print_r($tweaks); ?></pre>
|
| 12 |
-
</div>
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
modules/tweaks/tweaks.php
DELETED
|
@@ -1,158 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
/*
|
| 4 |
-
* Idea: Show tweaks as options in menu properties, e.g. in a "Tweaks" section styled like the collapsible
|
| 5 |
-
* property sheets in Delphi.
|
| 6 |
-
*/
|
| 7 |
-
|
| 8 |
-
class ameTweakManager extends amePersistentModule {
|
| 9 |
-
protected $tabSlug = 'tweaks';
|
| 10 |
-
protected $tabTitle = 'Tweaks';
|
| 11 |
-
protected $optionName = 'ws_ame_tweak_settings';
|
| 12 |
-
|
| 13 |
-
private $tweaks = array();
|
| 14 |
-
|
| 15 |
-
private $postponedTweaks = array();
|
| 16 |
-
private $pendingSelectorTweaks = array();
|
| 17 |
-
|
| 18 |
-
public function __construct($menuEditor) {
|
| 19 |
-
parent::__construct($menuEditor);
|
| 20 |
-
|
| 21 |
-
add_action('init', array($this, 'processTweaks'), 200);
|
| 22 |
-
add_action('admin_head', array($this, 'outputSelectors'));
|
| 23 |
-
}
|
| 24 |
-
|
| 25 |
-
private function registerTweaks() {
|
| 26 |
-
$this->tweaks = require (__DIR__ . '/default-tweaks.php');
|
| 27 |
-
do_action('admin-menu-editor-register_tweaks', $this);
|
| 28 |
-
}
|
| 29 |
-
|
| 30 |
-
public function processTweaks() {
|
| 31 |
-
$settings = $this->loadSettings();
|
| 32 |
-
$isTweakEnabled = ameUtils::get($settings, 'isTweakEnabled');
|
| 33 |
-
|
| 34 |
-
$this->registerTweaks();
|
| 35 |
-
|
| 36 |
-
$currentUser = wp_get_current_user();
|
| 37 |
-
$roles = $this->menuEditor->get_user_roles($currentUser);
|
| 38 |
-
$isSuperAdmin = is_multisite() && is_super_admin($currentUser->ID);
|
| 39 |
-
|
| 40 |
-
foreach ($this->tweaks as $id => $tweak) {
|
| 41 |
-
if ( empty($isTweakEnabled[$id]) ) {
|
| 42 |
-
continue; //This tweak is not enabled for anyone.
|
| 43 |
-
}
|
| 44 |
-
|
| 45 |
-
if ( !$this->appliesToUser($isTweakEnabled[$id], $currentUser, $roles, $isSuperAdmin) ) {
|
| 46 |
-
continue;
|
| 47 |
-
}
|
| 48 |
-
|
| 49 |
-
if ( isset($tweak['initFilter']) && !call_user_func($tweak['initFilter']) ) {
|
| 50 |
-
continue;
|
| 51 |
-
}
|
| 52 |
-
|
| 53 |
-
if ( !empty($tweak['screens']) || !empty($tweak['screenFilter']) ) {
|
| 54 |
-
$this->postponedTweaks[$id] = $tweak;
|
| 55 |
-
continue;
|
| 56 |
-
}
|
| 57 |
-
|
| 58 |
-
$this->applyTweak($id, $tweak);
|
| 59 |
-
}
|
| 60 |
-
|
| 61 |
-
if ( !empty($this->postponedTweaks) ) {
|
| 62 |
-
add_action('current_screen', array($this, 'processPostponedTweaks'), 10, 1);
|
| 63 |
-
}
|
| 64 |
-
}
|
| 65 |
-
|
| 66 |
-
/**
|
| 67 |
-
* @param array $enabledForActor
|
| 68 |
-
* @param WP_User $user
|
| 69 |
-
* @param array $roles
|
| 70 |
-
* @param bool $isSuperAdmin
|
| 71 |
-
* @return bool
|
| 72 |
-
*/
|
| 73 |
-
private function appliesToUser($enabledForActor, $user, $roles, $isSuperAdmin = false) {
|
| 74 |
-
//User-specific settings have priority over everything else.
|
| 75 |
-
$userActor = 'user:' . $user->user_login;
|
| 76 |
-
if ( isset($enabledForActor[$userActor]) ) {
|
| 77 |
-
return $enabledForActor[$userActor];
|
| 78 |
-
}
|
| 79 |
-
|
| 80 |
-
//The "Super Admin" flag has priority over regular roles.
|
| 81 |
-
if ( $isSuperAdmin && isset($enabledForActor['special:super_admin']) ) {
|
| 82 |
-
return $enabledForActor['special:super_admin'];
|
| 83 |
-
}
|
| 84 |
-
|
| 85 |
-
//If it's enabled for any role, it's enabled for the user.
|
| 86 |
-
foreach($roles as $role) {
|
| 87 |
-
if ( !empty($enabledForActor['role:' . $role]) ) {
|
| 88 |
-
return true;
|
| 89 |
-
}
|
| 90 |
-
}
|
| 91 |
-
|
| 92 |
-
//By default, all tweaks are disabled.
|
| 93 |
-
return false;
|
| 94 |
-
}
|
| 95 |
-
|
| 96 |
-
private function applyTweak($id, $tweak) {
|
| 97 |
-
//Run callbacks immediately.
|
| 98 |
-
if ( isset($tweak['callback']) ) {
|
| 99 |
-
call_user_func($tweak['callback']);
|
| 100 |
-
}
|
| 101 |
-
|
| 102 |
-
//Queue selectors for later.
|
| 103 |
-
if ( !empty($tweak['selector']) ) {
|
| 104 |
-
$this->pendingSelectorTweaks[$id] = $tweak;
|
| 105 |
-
}
|
| 106 |
-
}
|
| 107 |
-
|
| 108 |
-
/**
|
| 109 |
-
* @param WP_Screen $screen
|
| 110 |
-
*/
|
| 111 |
-
public function processPostponedTweaks($screen = null) {
|
| 112 |
-
if ( empty($screen) && function_exists('get_current_screen') ) {
|
| 113 |
-
$screen = get_current_screen();
|
| 114 |
-
}
|
| 115 |
-
$screenId = isset($screen, $screen->id) ? $screen->id : null;
|
| 116 |
-
|
| 117 |
-
foreach($this->postponedTweaks as $id => $tweak) {
|
| 118 |
-
if ( !empty($tweak['screens']) && !in_array($screenId, $tweak['screens']) ) {
|
| 119 |
-
continue;
|
| 120 |
-
}
|
| 121 |
-
|
| 122 |
-
if ( !empty($tweak['screenFilter']) && !call_user_func($tweak['screenFilter'], $screen) ) {
|
| 123 |
-
continue;
|
| 124 |
-
}
|
| 125 |
-
|
| 126 |
-
$this->applyTweak($id, $tweak);
|
| 127 |
-
}
|
| 128 |
-
|
| 129 |
-
$this->postponedTweaks = array();
|
| 130 |
-
}
|
| 131 |
-
|
| 132 |
-
public function outputSelectors() {
|
| 133 |
-
if ( empty($this->pendingSelectorTweaks) ) {
|
| 134 |
-
return;
|
| 135 |
-
}
|
| 136 |
-
|
| 137 |
-
$selectors = array();
|
| 138 |
-
foreach($this->pendingSelectorTweaks as $tweak) {
|
| 139 |
-
$selectors[] = $tweak['selector'];
|
| 140 |
-
}
|
| 141 |
-
$css = sprintf(
|
| 142 |
-
'<style type="text/css">%s { display: none; }</style>',
|
| 143 |
-
implode(',', $selectors)
|
| 144 |
-
);
|
| 145 |
-
|
| 146 |
-
echo '<!-- AME selector tweaks -->', "\n", $css, "\n";
|
| 147 |
-
|
| 148 |
-
$this->pendingSelectorTweaks = array();
|
| 149 |
-
}
|
| 150 |
-
|
| 151 |
-
protected function getTemplateVariables($templateName) {
|
| 152 |
-
$variables = parent::getTemplateVariables($templateName);
|
| 153 |
-
$variables['tweaks'] = $this->tweaks;
|
| 154 |
-
return $variables;
|
| 155 |
-
}
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
|
@@ -3,8 +3,8 @@ Contributors: whiteshadow
|
|
| 3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A6P9S6CE3SRSW
|
| 4 |
Tags: admin, dashboard, menu, security, wpmu
|
| 5 |
Requires at least: 4.1
|
| 6 |
-
Tested up to: 5.
|
| 7 |
-
Stable tag: 1.9.
|
| 8 |
|
| 9 |
Lets you edit the WordPress admin menu. You can re-order, hide or rename menus, add custom menus and more.
|
| 10 |
|
|
@@ -63,6 +63,14 @@ Plugins installed in the `mu-plugins` directory are treated as "always on", so y
|
|
| 63 |
|
| 64 |
== Changelog ==
|
| 65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
= 1.9.1 =
|
| 67 |
* Fixed a minor conflict with Toolset Types.
|
| 68 |
* Fixed a conflict with the MailPoet plugin where it was not possible to change the plugin's menu icon.
|
| 3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A6P9S6CE3SRSW
|
| 4 |
Tags: admin, dashboard, menu, security, wpmu
|
| 5 |
Requires at least: 4.1
|
| 6 |
+
Tested up to: 5.3
|
| 7 |
+
Stable tag: 1.9.2
|
| 8 |
|
| 9 |
Lets you edit the WordPress admin menu. You can re-order, hide or rename menus, add custom menus and more.
|
| 10 |
|
| 63 |
|
| 64 |
== Changelog ==
|
| 65 |
|
| 66 |
+
= 1.9.2 =
|
| 67 |
+
* Updated the appearance of the settings page to match the admin CSS changes introduced in WordPress 5.3.
|
| 68 |
+
* Fixed inconsistent dialog title bar colours that could occur when another plugin loaded the default WP dialog styles.
|
| 69 |
+
* Fixed a bug where certain top level menus could stay permanently highlighted because some of their submenus were hidden via CSS/JS and unclickable.
|
| 70 |
+
* When there's an error loading the menu configuration (e.g. because it's in an incompatible format), the plugin will now display an admin notice instead of letting through an uncaught exception.
|
| 71 |
+
* Removed the link to Visual Admin Customizer from the plugin settings page.
|
| 72 |
+
* Tested up to WP 5.3.
|
| 73 |
+
|
| 74 |
= 1.9.1 =
|
| 75 |
* Fixed a minor conflict with Toolset Types.
|
| 76 |
* Fixed a conflict with the MailPoet plugin where it was not possible to change the plugin's menu icon.
|
