Version Description
- 8 Dec 2021 =
- Fixed : Security issue
Download this release
Release Info
Developer | kevinB |
Plugin | Capability Manager Enhanced |
Version | 2.1.1 |
Comparing to | |
See all releases |
Code changes from version 2.3.1 to 2.1.1
- capsman-enhanced.php +6 -26
- common/css/admin.css +29 -283
- common/img/capabilities-wp-logo.png +0 -0
- common/libs/chosen-v1.8.3/create-example.jquery.html +1473 -0
- common/libs/chosen-v1.8.3/create-example.proto.html +1472 -0
- common/libs/chosen-v1.8.3/docsupport/chosen.png +0 -0
- common/libs/chosen-v1.8.3/docsupport/init.js +11 -0
- common/libs/chosen-v1.8.3/docsupport/init.proto.js +16 -0
- common/libs/chosen-v1.8.3/docsupport/jquery-1.12.4.min.js +5 -0
- common/libs/chosen-v1.8.3/docsupport/jquery-3.2.1.min.js +4 -0
- common/libs/chosen-v1.8.3/docsupport/oss-credit.png +0 -0
- common/libs/chosen-v1.8.3/docsupport/prism.css +108 -0
- common/libs/chosen-v1.8.3/docsupport/prism.js +9 -0
- common/libs/chosen-v1.8.3/docsupport/prototype-1.7.0.0.js +6082 -0
- common/libs/chosen-v1.8.3/docsupport/style.css +219 -0
- common/libs/chosen-v1.8.3/index.html +1473 -0
- common/libs/chosen-v1.8.3/index.proto.html +1472 -0
- common/libs/chosen-v1.8.3/options.html +311 -0
- composer.json +0 -1
- framework/lib/formating.php +3 -3
- includes-core/CoreAdmin.php +0 -9
- includes-core/admin-core.css +0 -63
- includes-core/editor-features-promo.php +0 -147
- includes-core/pp-capabilities-permissions.php +0 -445
- includes/admin-load.php +0 -310
- includes/admin.php +1187 -1342
- includes/backup-handler.php +0 -6
- includes/backup.php +1 -1
- includes/cap-helper.php +0 -7
- includes/features/admin-features.php +0 -303
- includes/features/editor-features-classic.php +2 -20
- includes/features/editor-features-gutenberg.php +2 -20
- includes/features/editor-features.php +2 -6
- includes/features/restrict-admin-features.php +0 -323
- includes/features/restrict-editor-features.php +1 -1
- includes/filters-admin.php +0 -6
- includes/filters.php +56 -7
- includes/functions-admin.php +267 -20
- includes/functions.php +1 -83
- includes/handler.php +3 -10
- includes/manager.php +12 -104
- includes/network.php +1 -8
- includes/pp-handler.php +2 -7
- includes/pp-ui.php +0 -8
- includes/roles/class/class-pp-roles-actions.php +1 -1
- includes/settings.php +3 -5
- languages/capsman-enhanced-en_US.mo +0 -0
- languages/capsman-enhanced-en_US.po +180 -234
- languages/capsman-enhanced.pot +179 -231
- readme.txt +45 -86
- vendor/publishpress/wordpress-reviews/LICENSE +0 -396
capsman-enhanced.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: PublishPress Capabilities
|
4 |
* Plugin URI: https://publishpress.com/capability-manager/
|
5 |
* Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
|
6 |
-
* Version: 2.
|
7 |
* Author: PublishPress
|
8 |
* Author URI: https://publishpress.com/
|
9 |
* Text Domain: capsman-enhanced
|
@@ -25,13 +25,13 @@
|
|
25 |
* @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2020 PublishPress
|
26 |
* @license GNU General Public License version 3
|
27 |
* @link https://publishpress.com/
|
28 |
-
* @version 2.
|
29 |
*/
|
30 |
|
31 |
if (!defined('CAPSMAN_VERSION')) {
|
32 |
-
define('CAPSMAN_VERSION', '2.
|
33 |
-
define('CAPSMAN_ENH_VERSION', '2.
|
34 |
-
define('PUBLISHPRESS_CAPS_VERSION', '2.
|
35 |
}
|
36 |
|
37 |
foreach (get_option('active_plugins') as $plugin_file) {
|
@@ -119,10 +119,8 @@ if ( version_compare(PHP_VERSION, '5.4.0', '<') ) {
|
|
119 |
load_plugin_textdomain('capsman-enhanced', false, basename(dirname(__FILE__)) .'/languages');
|
120 |
|
121 |
// @todo: refactor
|
122 |
-
require_once (dirname(__FILE__) . '/includes/functions-admin.php');
|
123 |
-
|
124 |
global $capsman_admin;
|
125 |
-
require_once (dirname(__FILE__) . '/includes/admin
|
126 |
$capsman_admin = new PP_Capabilities_Admin_UI();
|
127 |
}
|
128 |
|
@@ -141,21 +139,3 @@ add_action( 'init', '_cme_cap_helper', 49 ); // Press Permit Cap Helper, regist
|
|
141 |
|
142 |
if ( is_multisite() )
|
143 |
require_once ( dirname(__FILE__) . '/includes/network.php' );
|
144 |
-
|
145 |
-
// Display message inviting to install Permissions
|
146 |
-
if (
|
147 |
-
((defined('WP_DEBUG') && defined('CAPSMAN_INSTALL_PERMISSIONS')) || (!cme_is_plugin_active('press-permit-core.php') && !cme_is_plugin_active('presspermit-pro.php')))
|
148 |
-
&& !isset( $_GET['pp-after-click'])
|
149 |
-
&& !defined('CAPSMAN_DISABLE_PERMISSIONS_PROMO')
|
150 |
-
) {
|
151 |
-
add_action('init', function() {
|
152 |
-
global $pagenow;
|
153 |
-
|
154 |
-
if (in_array($pagenow, ['edit.php', 'plugins.php', 'plugin-install.php'])
|
155 |
-
|| ('admin.php' == $pagenow && !empty($_REQUEST['page']) && (false !== strpos($_REQUEST['page'], 'pp-capabilities')))
|
156 |
-
|| (!empty($_REQUEST['action']) && ('ppc_permissions_action' == $_REQUEST['action']))
|
157 |
-
) {
|
158 |
-
require_once ( dirname(__FILE__) . '/includes-core/pp-capabilities-permissions.php' );
|
159 |
-
}
|
160 |
-
});
|
161 |
-
}
|
3 |
* Plugin Name: PublishPress Capabilities
|
4 |
* Plugin URI: https://publishpress.com/capability-manager/
|
5 |
* Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
|
6 |
+
* Version: 2.1.1
|
7 |
* Author: PublishPress
|
8 |
* Author URI: https://publishpress.com/
|
9 |
* Text Domain: capsman-enhanced
|
25 |
* @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2020 PublishPress
|
26 |
* @license GNU General Public License version 3
|
27 |
* @link https://publishpress.com/
|
28 |
+
* @version 2.1.1
|
29 |
*/
|
30 |
|
31 |
if (!defined('CAPSMAN_VERSION')) {
|
32 |
+
define('CAPSMAN_VERSION', '2.1.1');
|
33 |
+
define('CAPSMAN_ENH_VERSION', '2.1.1');
|
34 |
+
define('PUBLISHPRESS_CAPS_VERSION', '2.1.1');
|
35 |
}
|
36 |
|
37 |
foreach (get_option('active_plugins') as $plugin_file) {
|
119 |
load_plugin_textdomain('capsman-enhanced', false, basename(dirname(__FILE__)) .'/languages');
|
120 |
|
121 |
// @todo: refactor
|
|
|
|
|
122 |
global $capsman_admin;
|
123 |
+
require_once (dirname(__FILE__) . '/includes/functions-admin.php');
|
124 |
$capsman_admin = new PP_Capabilities_Admin_UI();
|
125 |
}
|
126 |
|
139 |
|
140 |
if ( is_multisite() )
|
141 |
require_once ( dirname(__FILE__) . '/includes/network.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
common/css/admin.css
CHANGED
@@ -36,7 +36,7 @@ a.cap_type {
|
|
36 |
a.cap_type:hover {
|
37 |
text-decoration: underline;
|
38 |
}
|
39 |
-
|
40 |
ul.cme-listhoriz li {
|
41 |
text-align: center;
|
42 |
padding-right: 1em;
|
@@ -61,7 +61,7 @@ float: left;
|
|
61 |
margin: 0;
|
62 |
}
|
63 |
|
64 |
-
|
65 |
div.cme-listhoriz h3 {
|
66 |
margin: 0.2em;
|
67 |
}
|
@@ -70,28 +70,15 @@ div.cme-cap-type-tables {
|
|
70 |
border: 1px solid black;
|
71 |
}
|
72 |
|
73 |
-
/*
|
74 |
-
table.cme-typecaps {
|
75 |
-
|
76 |
-
}
|
77 |
-
*/
|
78 |
-
|
79 |
-
table .cme-typecaps td:first-of-type {
|
80 |
-
text-align: left;
|
81 |
-
}
|
82 |
-
|
83 |
table .cme-typecaps td {
|
84 |
text-align: center;
|
85 |
height: 2em;
|
86 |
}
|
87 |
|
88 |
-
table .cme-typecaps th:first-of-type {
|
89 |
-
width: 160px;
|
90 |
-
}
|
91 |
-
|
92 |
table .cme-typecaps th {
|
|
|
|
|
93 |
cursor: pointer;
|
94 |
-
text-align: center;
|
95 |
}
|
96 |
|
97 |
table.cme-typecaps span.cap-x {
|
@@ -103,10 +90,6 @@ table.cme-checklist span.cap-x {
|
|
103 |
cursor: pointer;
|
104 |
}
|
105 |
|
106 |
-
table.cme-checklist tr td input[type="checkbox"] {
|
107 |
-
margin-right: 10px !important;
|
108 |
-
}
|
109 |
-
|
110 |
h3.cme-cap-section {
|
111 |
margin-top:0;
|
112 |
}
|
@@ -258,40 +241,40 @@ table#akmin td.sidebar li.publishpress-contact a{
|
|
258 |
min-width:600px;
|
259 |
}
|
260 |
|
261 |
-
#pp_features div.pp-logo {
|
262 |
text-align: center;
|
263 |
}
|
264 |
|
265 |
-
#pp_features div.features-wrap {
|
266 |
-
margin-left: auto;
|
267 |
-
margin-right: auto;
|
268 |
-
text-align: center;
|
269 |
width: 600px;
|
270 |
}
|
271 |
|
272 |
-
#pp_features ul.pp-features {
|
273 |
-
list-style: none;
|
274 |
-
padding-top:10px;
|
275 |
-
text-align:left;
|
276 |
margin-left: auto;
|
277 |
}
|
278 |
|
279 |
-
#pp_features ul.pp-features li:before {
|
280 |
content: "\2713\0020";
|
281 |
}
|
282 |
|
283 |
-
#pp_features ul.pp-features li {
|
284 |
padding-bottom: 5px;
|
285 |
}
|
286 |
|
287 |
-
#pp_features img.cme-play {
|
288 |
-
margin-bottom: -3px;
|
289 |
margin-left: 5px;
|
290 |
}
|
291 |
|
292 |
div.publishpress-caps-manage span.manage-members {
|
293 |
-
margin-left:5px;
|
294 |
-
font-weight:normal;
|
295 |
color: #777;
|
296 |
}
|
297 |
|
@@ -300,7 +283,7 @@ div.publishpress-caps-manage span.manage-members a {
|
|
300 |
}
|
301 |
|
302 |
div.publishpress-caps-manage span.manage-members a:hover {
|
303 |
-
text-decoration: underline;
|
304 |
color:#655997;
|
305 |
}
|
306 |
|
@@ -313,8 +296,8 @@ div.publishpress-headline .cme-subtext a:hover {
|
|
313 |
}
|
314 |
|
315 |
div.publishpress-caps-backup th {
|
316 |
-
text-align:right;
|
317 |
-
padding-top:28px;
|
318 |
width: 140px;
|
319 |
}
|
320 |
|
@@ -357,7 +340,7 @@ div.pp-caps-backup-button {
|
|
357 |
}
|
358 |
|
359 |
div.cme-restore-button {
|
360 |
-
margin-top: 25px;
|
361 |
padding-left: 5px;
|
362 |
}
|
363 |
|
@@ -378,7 +361,7 @@ div.publishpress-caps-backup td.cme-backup-info li.cme-change {
|
|
378 |
}
|
379 |
|
380 |
div.publishpress-caps-backup td.cme-backup-info .cme-plus {
|
381 |
-
font-weight: bold;
|
382 |
color: green;
|
383 |
}
|
384 |
|
@@ -396,14 +379,14 @@ span.pp-restore-caps-no-change {
|
|
396 |
}
|
397 |
|
398 |
div.publishpress-caps-backup td.cme-backup-info .cme-minus {
|
399 |
-
font-weight: bold;
|
400 |
-
color: #a00;
|
401 |
text-decoration: line-through;
|
402 |
}
|
403 |
|
404 |
div.publishpress-caps-backup td.cme-backup-info .cme-negate {
|
405 |
-
font-weight: bold;
|
406 |
-
background-color: #a00;
|
407 |
color: white;
|
408 |
text-decoration: line-through;
|
409 |
}
|
@@ -432,241 +415,4 @@ div.publishpress-caps-backup td.cme-backup-info .cme-negate {
|
|
432 |
|
433 |
table#akmin tr td input[type=checkbox] {
|
434 |
margin: 0;
|
435 |
-
}
|
436 |
-
|
437 |
-
|
438 |
-
.pp-capability-menus {
|
439 |
-
width: 100%;
|
440 |
-
overflow: hidden;
|
441 |
-
background: #fff;
|
442 |
-
background: linear-gradient(90deg, #fafafa 0%, #fafafa 20%, #fff 20%, #fff 100%);
|
443 |
-
}
|
444 |
-
|
445 |
-
.pp-capability-menus .pp-capability-menus-wrap {
|
446 |
-
float: left;
|
447 |
-
width: 100%;
|
448 |
-
margin-left: -1px;
|
449 |
-
margin-right: 20px;
|
450 |
-
}
|
451 |
-
|
452 |
-
|
453 |
-
#pp-capability-menu-wrapper table {
|
454 |
-
border-right: none;
|
455 |
-
border-top: none;
|
456 |
-
border-bottom: none;
|
457 |
-
}
|
458 |
-
|
459 |
-
#pp-capability-menu-wrapper table td,
|
460 |
-
#pp-capability-menu-wrapper table th {
|
461 |
-
padding: 10px;
|
462 |
-
padding-bottom: 10px;
|
463 |
-
font-size: 13px;
|
464 |
-
line-height: 20px;
|
465 |
-
}
|
466 |
-
|
467 |
-
#pp-capability-menu-wrapper table td h4.ppc-menu-row-section {
|
468 |
-
margin-bottom: 0;
|
469 |
-
}
|
470 |
-
|
471 |
-
#pp-capability-menu-wrapper table td {
|
472 |
-
padding: 9px;
|
473 |
-
}
|
474 |
-
|
475 |
-
#pp-capability-menu-wrapper tbody tr:last-of-type td {
|
476 |
-
border-bottom: none;
|
477 |
-
}
|
478 |
-
|
479 |
-
#pp-capability-menu-wrapper tfoot th {
|
480 |
-
border-color: #eee;
|
481 |
-
}
|
482 |
-
|
483 |
-
|
484 |
-
table#akmin .pp-capability-menus-select .restrict-column {
|
485 |
-
width: 70px !important;
|
486 |
-
text-align: center;
|
487 |
-
display: table-cell !important;
|
488 |
-
clear: none !important;
|
489 |
-
}
|
490 |
-
|
491 |
-
.pp-capability-menus .menu-item-link {
|
492 |
-
display: inline;
|
493 |
-
color: #0073aa;
|
494 |
-
margin: -4px;
|
495 |
-
line-height: inherit;
|
496 |
-
padding: 4px 8px;
|
497 |
-
border: 1px solid transparent;
|
498 |
-
background: transparent;
|
499 |
-
border-radius: 0;
|
500 |
-
outline: none;
|
501 |
-
-webkit-transition: all 0.25s ease-out;
|
502 |
-
-moz-transition: all 0.25s ease-out;
|
503 |
-
-o-transition: all 0.25s ease-out;
|
504 |
-
transition: all 0.25s ease-out;
|
505 |
-
}
|
506 |
-
|
507 |
-
.pp-capability-menus .menu-item-link:hover,
|
508 |
-
.pp-capability-menus .menu-item-link:focus {
|
509 |
-
border-color: #eee;
|
510 |
-
background: #fafafa;
|
511 |
-
cursor: pointer;
|
512 |
-
}
|
513 |
-
|
514 |
-
.pp-capability-menus .menu-item-link:active {
|
515 |
-
color: #0073aa;
|
516 |
-
border-color: #0073aa;
|
517 |
-
}
|
518 |
-
|
519 |
-
.pp-capability-menus .check-all-menu-link,
|
520 |
-
.pp-capability-menus .check-all-menu-link:active {
|
521 |
-
color: #555;
|
522 |
-
}
|
523 |
-
|
524 |
-
.pp-capability-menus .menu-item-link.restricted,
|
525 |
-
.pp-capability-menus .menu-item-link.restricted:active {
|
526 |
-
color: crimson;
|
527 |
-
}
|
528 |
-
|
529 |
-
.pp-capability-menus .menu-item-link.disabled,
|
530 |
-
.pp-capability-menus .menu-item-link.disabled:active {
|
531 |
-
color: #555;
|
532 |
-
}
|
533 |
-
|
534 |
-
.pp-capability-menus .menu-item-link + .dashicons {
|
535 |
-
display: none;
|
536 |
-
margin-top: 1px;
|
537 |
-
margin-bottom: -1px;
|
538 |
-
line-height: inherit;
|
539 |
-
}
|
540 |
-
|
541 |
-
.pp-capability-menus .menu-item-link:hover + .dashicons,
|
542 |
-
.pp-capability-menus .menu-item-link:focus + .dashicons {
|
543 |
-
display: inline-block;
|
544 |
-
}
|
545 |
-
|
546 |
-
.pp-capability-menus-wrapper .button-primary {
|
547 |
-
margin-bottom: 25px !important;
|
548 |
-
}
|
549 |
-
|
550 |
-
|
551 |
-
.pp-capability-menus-wrapper .tooltip {
|
552 |
-
position: relative;
|
553 |
-
display: inline-block;
|
554 |
-
border-bottom: 1px dotted black;
|
555 |
-
}
|
556 |
-
|
557 |
-
.pp-capability-menus-wrapper .tooltip .tooltiptext {
|
558 |
-
visibility: hidden;
|
559 |
-
width: 120px;
|
560 |
-
background-color: black;
|
561 |
-
color: #fff;
|
562 |
-
text-align: center;
|
563 |
-
padding: 5px 0;
|
564 |
-
border-radius: 6px;
|
565 |
-
|
566 |
-
position: absolute;
|
567 |
-
z-index: 1;
|
568 |
-
}
|
569 |
-
|
570 |
-
.pp-capability-menus-wrapper .tooltip:hover .tooltiptext {
|
571 |
-
visibility: visible;
|
572 |
-
}
|
573 |
-
|
574 |
-
.capabilities_page_pp-capabilities-admin-menus input.ppc-admin-menu-submit,
|
575 |
-
.capabilities_page_pp-capabilities-nav-menus input.ppc-nav-menu-submit {
|
576 |
-
margin-bottom: 10px !important;
|
577 |
-
}
|
578 |
-
|
579 |
-
.pp-capability-menus-wrapper .features-section-header {
|
580 |
-
padding-left: 35px !important;
|
581 |
-
}
|
582 |
-
|
583 |
-
/* ====================================================== Main Screen */
|
584 |
-
|
585 |
-
#ppc-capabilities-wrapper {
|
586 |
-
display: grid;
|
587 |
-
grid-template-columns: 1fr 4fr;
|
588 |
-
min-height: 400px;
|
589 |
-
}
|
590 |
-
|
591 |
-
/*
|
592 |
-
#ppc-capabilities-wrapper .ppc-capabilities-tabs {
|
593 |
-
|
594 |
-
}
|
595 |
-
*/
|
596 |
-
|
597 |
-
#ppc-capabilities-wrapper .ppc-capabilities-tabs > ul {
|
598 |
-
padding: 0;
|
599 |
-
margin: 0;
|
600 |
-
display: block;
|
601 |
-
}
|
602 |
-
|
603 |
-
#ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li {
|
604 |
-
margin: 0;
|
605 |
-
padding: 15px 12px;
|
606 |
-
background: #f0f0f1;
|
607 |
-
cursor: pointer;
|
608 |
-
border-bottom: 1px solid #ccc;
|
609 |
-
border-right: 1px solid #ccc;
|
610 |
-
font-size: 1.1em;
|
611 |
-
line-height: 1.3em;
|
612 |
-
}
|
613 |
-
|
614 |
-
#ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li:last-child {
|
615 |
-
margin-bottom: 20px;
|
616 |
-
}
|
617 |
-
|
618 |
-
#ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li.ppc-capabilities-tab-active {
|
619 |
-
background: #fff;
|
620 |
-
border-right-color: #fff;
|
621 |
-
}
|
622 |
-
|
623 |
-
#ppc-capabilities-wrapper .ppc-capabilities-content > div {
|
624 |
-
padding: 20px;
|
625 |
-
}
|
626 |
-
|
627 |
-
#ppc-capabilities-wrapper .ppc-capabilities-content > div > h3 {
|
628 |
-
margin-top: 0;
|
629 |
-
}
|
630 |
-
|
631 |
-
@media (max-width: 1199px) {
|
632 |
-
|
633 |
-
#ppc-capabilities-wrapper {
|
634 |
-
display: block;
|
635 |
-
}
|
636 |
-
|
637 |
-
#ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li,
|
638 |
-
#ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li.ppc-capabilities-tab-active {
|
639 |
-
border-right: none;
|
640 |
-
}
|
641 |
-
|
642 |
-
#publishpress_caps_form #akmin td.content,
|
643 |
-
#publishpress_caps_form #akmin td.sidebar {
|
644 |
-
display: block;
|
645 |
-
padding: 0;
|
646 |
-
}
|
647 |
-
|
648 |
-
#publishpress_caps_form #akmin td.content {
|
649 |
-
margin-bottom: 40px;
|
650 |
-
}
|
651 |
-
}
|
652 |
-
|
653 |
-
@media (max-width: 782px) {
|
654 |
-
|
655 |
-
table.cme-checklist.form-table tr td {
|
656 |
-
padding: 15px 10px;
|
657 |
-
}
|
658 |
-
|
659 |
-
table .cme-typecaps th:first-of-type {
|
660 |
-
width: 110px;
|
661 |
-
}
|
662 |
-
|
663 |
-
.pp-capability-menus {
|
664 |
-
background: linear-gradient(90deg, #fafafa 0%, #fafafa 48px, #fff 48px, #fff 100%);
|
665 |
-
}
|
666 |
-
|
667 |
-
#pp-capability-menu-wrapper table td,
|
668 |
-
#pp-capability-menu-wrapper table th {
|
669 |
-
line-height: 24px;
|
670 |
-
}
|
671 |
-
|
672 |
-
}
|
36 |
a.cap_type:hover {
|
37 |
text-decoration: underline;
|
38 |
}
|
39 |
+
|
40 |
ul.cme-listhoriz li {
|
41 |
text-align: center;
|
42 |
padding-right: 1em;
|
61 |
margin: 0;
|
62 |
}
|
63 |
|
64 |
+
|
65 |
div.cme-listhoriz h3 {
|
66 |
margin: 0.2em;
|
67 |
}
|
70 |
border: 1px solid black;
|
71 |
}
|
72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
table .cme-typecaps td {
|
74 |
text-align: center;
|
75 |
height: 2em;
|
76 |
}
|
77 |
|
|
|
|
|
|
|
|
|
78 |
table .cme-typecaps th {
|
79 |
+
padding-left: 0.3em;
|
80 |
+
padding-right: 0.3em;
|
81 |
cursor: pointer;
|
|
|
82 |
}
|
83 |
|
84 |
table.cme-typecaps span.cap-x {
|
90 |
cursor: pointer;
|
91 |
}
|
92 |
|
|
|
|
|
|
|
|
|
93 |
h3.cme-cap-section {
|
94 |
margin-top:0;
|
95 |
}
|
241 |
min-width:600px;
|
242 |
}
|
243 |
|
244 |
+
#pp_features div.pp-logo {
|
245 |
text-align: center;
|
246 |
}
|
247 |
|
248 |
+
#pp_features div.features-wrap {
|
249 |
+
margin-left: auto;
|
250 |
+
margin-right: auto;
|
251 |
+
text-align: center;
|
252 |
width: 600px;
|
253 |
}
|
254 |
|
255 |
+
#pp_features ul.pp-features {
|
256 |
+
list-style: none;
|
257 |
+
padding-top:10px;
|
258 |
+
text-align:left;
|
259 |
margin-left: auto;
|
260 |
}
|
261 |
|
262 |
+
#pp_features ul.pp-features li:before {
|
263 |
content: "\2713\0020";
|
264 |
}
|
265 |
|
266 |
+
#pp_features ul.pp-features li {
|
267 |
padding-bottom: 5px;
|
268 |
}
|
269 |
|
270 |
+
#pp_features img.cme-play {
|
271 |
+
margin-bottom: -3px;
|
272 |
margin-left: 5px;
|
273 |
}
|
274 |
|
275 |
div.publishpress-caps-manage span.manage-members {
|
276 |
+
margin-left:5px;
|
277 |
+
font-weight:normal;
|
278 |
color: #777;
|
279 |
}
|
280 |
|
283 |
}
|
284 |
|
285 |
div.publishpress-caps-manage span.manage-members a:hover {
|
286 |
+
text-decoration: underline;
|
287 |
color:#655997;
|
288 |
}
|
289 |
|
296 |
}
|
297 |
|
298 |
div.publishpress-caps-backup th {
|
299 |
+
text-align:right;
|
300 |
+
padding-top:28px;
|
301 |
width: 140px;
|
302 |
}
|
303 |
|
340 |
}
|
341 |
|
342 |
div.cme-restore-button {
|
343 |
+
margin-top: 25px;
|
344 |
padding-left: 5px;
|
345 |
}
|
346 |
|
361 |
}
|
362 |
|
363 |
div.publishpress-caps-backup td.cme-backup-info .cme-plus {
|
364 |
+
font-weight: bold;
|
365 |
color: green;
|
366 |
}
|
367 |
|
379 |
}
|
380 |
|
381 |
div.publishpress-caps-backup td.cme-backup-info .cme-minus {
|
382 |
+
font-weight: bold;
|
383 |
+
color: #a00;
|
384 |
text-decoration: line-through;
|
385 |
}
|
386 |
|
387 |
div.publishpress-caps-backup td.cme-backup-info .cme-negate {
|
388 |
+
font-weight: bold;
|
389 |
+
background-color: #a00;
|
390 |
color: white;
|
391 |
text-decoration: line-through;
|
392 |
}
|
415 |
|
416 |
table#akmin tr td input[type=checkbox] {
|
417 |
margin: 0;
|
418 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
common/img/capabilities-wp-logo.png
DELETED
Binary file
|
common/libs/chosen-v1.8.3/create-example.jquery.html
ADDED
@@ -0,0 +1,1473 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!doctype html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="utf-8">
|
5 |
+
<title>Chosen: A jQuery Plugin by Harvest to Tame Unwieldy Select Boxes</title>
|
6 |
+
<link rel="stylesheet" href="docsupport/style.css">
|
7 |
+
<link rel="stylesheet" href="docsupport/prism.css">
|
8 |
+
<link rel="stylesheet" href="chosen.css">
|
9 |
+
|
10 |
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://ajax.googleapis.com; style-src 'self'; img-src 'self' data:">
|
11 |
+
|
12 |
+
</head>
|
13 |
+
<body>
|
14 |
+
<form>
|
15 |
+
<div id="container">
|
16 |
+
<div id="content">
|
17 |
+
<header>
|
18 |
+
<h1>Chosen <small>(<span id="latest-version">v1.8.3</span>)</small></h1>
|
19 |
+
</header>
|
20 |
+
<p>Chosen is a jQuery plugin that makes long, unwieldy select boxes much more user-friendly.</p>
|
21 |
+
|
22 |
+
<p>
|
23 |
+
<a class="button button-blue" href="https://github.com/harvesthq/chosen/releases">Downloads</a>
|
24 |
+
<a class="button" href="https://github.com/harvesthq/chosen">Project Source</a>
|
25 |
+
<a class="button" href="https://github.com/harvesthq/chosen/blob/master/contributing.md">Contribute</a>
|
26 |
+
</p>
|
27 |
+
|
28 |
+
<h2><a name="standard-select" class="anchor" href="#standard-select">Standard Select</a></h2>
|
29 |
+
<div class="side-by-side clearfix">
|
30 |
+
<div>
|
31 |
+
<em>Turns This</em>
|
32 |
+
<select data-placeholder="Choose a Country..." class="select" tabindex="1">
|
33 |
+
<option value=""></option>
|
34 |
+
<option value="United States">United States</option>
|
35 |
+
<option value="United Kingdom">United Kingdom</option>
|
36 |
+
<option value="Afghanistan">Afghanistan</option>
|
37 |
+
<option value="Aland Islands">Aland Islands</option>
|
38 |
+
<option value="Albania">Albania</option>
|
39 |
+
<option value="Algeria">Algeria</option>
|
40 |
+
<option value="American Samoa">American Samoa</option>
|
41 |
+
<option value="Andorra">Andorra</option>
|
42 |
+
<option value="Angola">Angola</option>
|
43 |
+
<option value="Anguilla">Anguilla</option>
|
44 |
+
<option value="Antarctica">Antarctica</option>
|
45 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
46 |
+
<option value="Argentina">Argentina</option>
|
47 |
+
<option value="Armenia">Armenia</option>
|
48 |
+
<option value="Aruba">Aruba</option>
|
49 |
+
<option value="Australia">Australia</option>
|
50 |
+
<option value="Austria">Austria</option>
|
51 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
52 |
+
<option value="Bahamas">Bahamas</option>
|
53 |
+
<option value="Bahrain">Bahrain</option>
|
54 |
+
<option value="Bangladesh">Bangladesh</option>
|
55 |
+
<option value="Barbados">Barbados</option>
|
56 |
+
<option value="Belarus">Belarus</option>
|
57 |
+
<option value="Belgium">Belgium</option>
|
58 |
+
<option value="Belize">Belize</option>
|
59 |
+
<option value="Benin">Benin</option>
|
60 |
+
<option value="Bermuda">Bermuda</option>
|
61 |
+
<option value="Bhutan">Bhutan</option>
|
62 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
63 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
64 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
65 |
+
<option value="Botswana">Botswana</option>
|
66 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
67 |
+
<option value="Brazil">Brazil</option>
|
68 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
69 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
70 |
+
<option value="Bulgaria">Bulgaria</option>
|
71 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
72 |
+
<option value="Burundi">Burundi</option>
|
73 |
+
<option value="Cambodia">Cambodia</option>
|
74 |
+
<option value="Cameroon">Cameroon</option>
|
75 |
+
<option value="Canada">Canada</option>
|
76 |
+
<option value="Cape Verde">Cape Verde</option>
|
77 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
78 |
+
<option value="Central African Republic">Central African Republic</option>
|
79 |
+
<option value="Chad">Chad</option>
|
80 |
+
<option value="Chile">Chile</option>
|
81 |
+
<option value="China">China</option>
|
82 |
+
<option value="Christmas Island">Christmas Island</option>
|
83 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
84 |
+
<option value="Colombia">Colombia</option>
|
85 |
+
<option value="Comoros">Comoros</option>
|
86 |
+
<option value="Congo">Congo</option>
|
87 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
88 |
+
<option value="Cook Islands">Cook Islands</option>
|
89 |
+
<option value="Costa Rica">Costa Rica</option>
|
90 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
91 |
+
<option value="Croatia">Croatia</option>
|
92 |
+
<option value="Cuba">Cuba</option>
|
93 |
+
<option value="Curacao">Curacao</option>
|
94 |
+
<option value="Cyprus">Cyprus</option>
|
95 |
+
<option value="Czech Republic">Czech Republic</option>
|
96 |
+
<option value="Denmark">Denmark</option>
|
97 |
+
<option value="Djibouti">Djibouti</option>
|
98 |
+
<option value="Dominica">Dominica</option>
|
99 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
100 |
+
<option value="Ecuador">Ecuador</option>
|
101 |
+
<option value="Egypt">Egypt</option>
|
102 |
+
<option value="El Salvador">El Salvador</option>
|
103 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
104 |
+
<option value="Eritrea">Eritrea</option>
|
105 |
+
<option value="Estonia">Estonia</option>
|
106 |
+
<option value="Ethiopia">Ethiopia</option>
|
107 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
108 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
109 |
+
<option value="Fiji">Fiji</option>
|
110 |
+
<option value="Finland">Finland</option>
|
111 |
+
<option value="France">France</option>
|
112 |
+
<option value="French Guiana">French Guiana</option>
|
113 |
+
<option value="French Polynesia">French Polynesia</option>
|
114 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
115 |
+
<option value="Gabon">Gabon</option>
|
116 |
+
<option value="Gambia">Gambia</option>
|
117 |
+
<option value="Georgia">Georgia</option>
|
118 |
+
<option value="Germany">Germany</option>
|
119 |
+
<option value="Ghana">Ghana</option>
|
120 |
+
<option value="Gibraltar">Gibraltar</option>
|
121 |
+
<option value="Greece">Greece</option>
|
122 |
+
<option value="Greenland">Greenland</option>
|
123 |
+
<option value="Grenada">Grenada</option>
|
124 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
125 |
+
<option value="Guam">Guam</option>
|
126 |
+
<option value="Guatemala">Guatemala</option>
|
127 |
+
<option value="Guernsey">Guernsey</option>
|
128 |
+
<option value="Guinea">Guinea</option>
|
129 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
130 |
+
<option value="Guyana">Guyana</option>
|
131 |
+
<option value="Haiti">Haiti</option>
|
132 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
133 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
134 |
+
<option value="Honduras">Honduras</option>
|
135 |
+
<option value="Hong Kong">Hong Kong</option>
|
136 |
+
<option value="Hungary">Hungary</option>
|
137 |
+
<option value="Iceland">Iceland</option>
|
138 |
+
<option value="India">India</option>
|
139 |
+
<option value="Indonesia">Indonesia</option>
|
140 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
141 |
+
<option value="Iraq">Iraq</option>
|
142 |
+
<option value="Ireland">Ireland</option>
|
143 |
+
<option value="Isle of Man">Isle of Man</option>
|
144 |
+
<option value="Israel">Israel</option>
|
145 |
+
<option value="Italy">Italy</option>
|
146 |
+
<option value="Jamaica">Jamaica</option>
|
147 |
+
<option value="Japan">Japan</option>
|
148 |
+
<option value="Jersey">Jersey</option>
|
149 |
+
<option value="Jordan">Jordan</option>
|
150 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
151 |
+
<option value="Kenya">Kenya</option>
|
152 |
+
<option value="Kiribati">Kiribati</option>
|
153 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
154 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
155 |
+
<option value="Kuwait">Kuwait</option>
|
156 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
157 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
158 |
+
<option value="Latvia">Latvia</option>
|
159 |
+
<option value="Lebanon">Lebanon</option>
|
160 |
+
<option value="Lesotho">Lesotho</option>
|
161 |
+
<option value="Liberia">Liberia</option>
|
162 |
+
<option value="Libya">Libya</option>
|
163 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
164 |
+
<option value="Lithuania">Lithuania</option>
|
165 |
+
<option value="Luxembourg">Luxembourg</option>
|
166 |
+
<option value="Macao">Macao</option>
|
167 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
168 |
+
<option value="Madagascar">Madagascar</option>
|
169 |
+
<option value="Malawi">Malawi</option>
|
170 |
+
<option value="Malaysia">Malaysia</option>
|
171 |
+
<option value="Maldives">Maldives</option>
|
172 |
+
<option value="Mali">Mali</option>
|
173 |
+
<option value="Malta">Malta</option>
|
174 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
175 |
+
<option value="Martinique">Martinique</option>
|
176 |
+
<option value="Mauritania">Mauritania</option>
|
177 |
+
<option value="Mauritius">Mauritius</option>
|
178 |
+
<option value="Mayotte">Mayotte</option>
|
179 |
+
<option value="Mexico">Mexico</option>
|
180 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
181 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
182 |
+
<option value="Monaco">Monaco</option>
|
183 |
+
<option value="Mongolia">Mongolia</option>
|
184 |
+
<option value="Montenegro">Montenegro</option>
|
185 |
+
<option value="Montserrat">Montserrat</option>
|
186 |
+
<option value="Morocco">Morocco</option>
|
187 |
+
<option value="Mozambique">Mozambique</option>
|
188 |
+
<option value="Myanmar">Myanmar</option>
|
189 |
+
<option value="Namibia">Namibia</option>
|
190 |
+
<option value="Nauru">Nauru</option>
|
191 |
+
<option value="Nepal">Nepal</option>
|
192 |
+
<option value="Netherlands">Netherlands</option>
|
193 |
+
<option value="New Caledonia">New Caledonia</option>
|
194 |
+
<option value="New Zealand">New Zealand</option>
|
195 |
+
<option value="Nicaragua">Nicaragua</option>
|
196 |
+
<option value="Niger">Niger</option>
|
197 |
+
<option value="Nigeria">Nigeria</option>
|
198 |
+
<option value="Niue">Niue</option>
|
199 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
200 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
201 |
+
<option value="Norway">Norway</option>
|
202 |
+
<option value="Oman">Oman</option>
|
203 |
+
<option value="Pakistan">Pakistan</option>
|
204 |
+
<option value="Palau">Palau</option>
|
205 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
206 |
+
<option value="Panama">Panama</option>
|
207 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
208 |
+
<option value="Paraguay">Paraguay</option>
|
209 |
+
<option value="Peru">Peru</option>
|
210 |
+
<option value="Philippines">Philippines</option>
|
211 |
+
<option value="Pitcairn">Pitcairn</option>
|
212 |
+
<option value="Poland">Poland</option>
|
213 |
+
<option value="Portugal">Portugal</option>
|
214 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
215 |
+
<option value="Qatar">Qatar</option>
|
216 |
+
<option value="Reunion">Reunion</option>
|
217 |
+
<option value="Romania">Romania</option>
|
218 |
+
<option value="Russian Federation">Russian Federation</option>
|
219 |
+
<option value="Rwanda">Rwanda</option>
|
220 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
221 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
222 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
223 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
224 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
225 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
226 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
227 |
+
<option value="Samoa">Samoa</option>
|
228 |
+
<option value="San Marino">San Marino</option>
|
229 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
230 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
231 |
+
<option value="Senegal">Senegal</option>
|
232 |
+
<option value="Serbia">Serbia</option>
|
233 |
+
<option value="Seychelles">Seychelles</option>
|
234 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
235 |
+
<option value="Singapore">Singapore</option>
|
236 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
237 |
+
<option value="Slovakia">Slovakia</option>
|
238 |
+
<option value="Slovenia">Slovenia</option>
|
239 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
240 |
+
<option value="Somalia">Somalia</option>
|
241 |
+
<option value="South Africa">South Africa</option>
|
242 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
243 |
+
<option value="South Sudan">South Sudan</option>
|
244 |
+
<option value="Spain">Spain</option>
|
245 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
246 |
+
<option value="Sudan">Sudan</option>
|
247 |
+
<option value="Suriname">Suriname</option>
|
248 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
249 |
+
<option value="Swaziland">Swaziland</option>
|
250 |
+
<option value="Sweden">Sweden</option>
|
251 |
+
<option value="Switzerland">Switzerland</option>
|
252 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
253 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
254 |
+
<option value="Tajikistan">Tajikistan</option>
|
255 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
256 |
+
<option value="Thailand">Thailand</option>
|
257 |
+
<option value="Timor-leste">Timor-leste</option>
|
258 |
+
<option value="Togo">Togo</option>
|
259 |
+
<option value="Tokelau">Tokelau</option>
|
260 |
+
<option value="Tonga">Tonga</option>
|
261 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
262 |
+
<option value="Tunisia">Tunisia</option>
|
263 |
+
<option value="Turkey">Turkey</option>
|
264 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
265 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
266 |
+
<option value="Tuvalu">Tuvalu</option>
|
267 |
+
<option value="Uganda">Uganda</option>
|
268 |
+
<option value="Ukraine">Ukraine</option>
|
269 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
270 |
+
<option value="United Kingdom">United Kingdom</option>
|
271 |
+
<option value="United States">United States</option>
|
272 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
273 |
+
<option value="Uruguay">Uruguay</option>
|
274 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
275 |
+
<option value="Vanuatu">Vanuatu</option>
|
276 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
277 |
+
<option value="Viet Nam">Viet Nam</option>
|
278 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
279 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
280 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
281 |
+
<option value="Western Sahara">Western Sahara</option>
|
282 |
+
<option value="Yemen">Yemen</option>
|
283 |
+
<option value="Zambia">Zambia</option>
|
284 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
285 |
+
</select>
|
286 |
+
</div>
|
287 |
+
<div>
|
288 |
+
<em>Into This</em>
|
289 |
+
<select data-placeholder="Choose a Country..." class="chosen-select" tabindex="2">
|
290 |
+
<option value=""></option>
|
291 |
+
<option value="United States">United States</option>
|
292 |
+
<option value="United Kingdom">United Kingdom</option>
|
293 |
+
<option value="Afghanistan">Afghanistan</option>
|
294 |
+
<option value="Aland Islands">Aland Islands</option>
|
295 |
+
<option value="Albania">Albania</option>
|
296 |
+
<option value="Algeria">Algeria</option>
|
297 |
+
<option value="American Samoa">American Samoa</option>
|
298 |
+
<option value="Andorra">Andorra</option>
|
299 |
+
<option value="Angola">Angola</option>
|
300 |
+
<option value="Anguilla">Anguilla</option>
|
301 |
+
<option value="Antarctica">Antarctica</option>
|
302 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
303 |
+
<option value="Argentina">Argentina</option>
|
304 |
+
<option value="Armenia">Armenia</option>
|
305 |
+
<option value="Aruba">Aruba</option>
|
306 |
+
<option value="Australia">Australia</option>
|
307 |
+
<option value="Austria">Austria</option>
|
308 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
309 |
+
<option value="Bahamas">Bahamas</option>
|
310 |
+
<option value="Bahrain">Bahrain</option>
|
311 |
+
<option value="Bangladesh">Bangladesh</option>
|
312 |
+
<option value="Barbados">Barbados</option>
|
313 |
+
<option value="Belarus">Belarus</option>
|
314 |
+
<option value="Belgium">Belgium</option>
|
315 |
+
<option value="Belize">Belize</option>
|
316 |
+
<option value="Benin">Benin</option>
|
317 |
+
<option value="Bermuda">Bermuda</option>
|
318 |
+
<option value="Bhutan">Bhutan</option>
|
319 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
320 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
321 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
322 |
+
<option value="Botswana">Botswana</option>
|
323 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
324 |
+
<option value="Brazil">Brazil</option>
|
325 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
326 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
327 |
+
<option value="Bulgaria">Bulgaria</option>
|
328 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
329 |
+
<option value="Burundi">Burundi</option>
|
330 |
+
<option value="Cambodia">Cambodia</option>
|
331 |
+
<option value="Cameroon">Cameroon</option>
|
332 |
+
<option value="Canada">Canada</option>
|
333 |
+
<option value="Cape Verde">Cape Verde</option>
|
334 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
335 |
+
<option value="Central African Republic">Central African Republic</option>
|
336 |
+
<option value="Chad">Chad</option>
|
337 |
+
<option value="Chile">Chile</option>
|
338 |
+
<option value="China">China</option>
|
339 |
+
<option value="Christmas Island">Christmas Island</option>
|
340 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
341 |
+
<option value="Colombia">Colombia</option>
|
342 |
+
<option value="Comoros">Comoros</option>
|
343 |
+
<option value="Congo">Congo</option>
|
344 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
345 |
+
<option value="Cook Islands">Cook Islands</option>
|
346 |
+
<option value="Costa Rica">Costa Rica</option>
|
347 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
348 |
+
<option value="Croatia">Croatia</option>
|
349 |
+
<option value="Cuba">Cuba</option>
|
350 |
+
<option value="Curacao">Curacao</option>
|
351 |
+
<option value="Cyprus">Cyprus</option>
|
352 |
+
<option value="Czech Republic">Czech Republic</option>
|
353 |
+
<option value="Denmark">Denmark</option>
|
354 |
+
<option value="Djibouti">Djibouti</option>
|
355 |
+
<option value="Dominica">Dominica</option>
|
356 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
357 |
+
<option value="Ecuador">Ecuador</option>
|
358 |
+
<option value="Egypt">Egypt</option>
|
359 |
+
<option value="El Salvador">El Salvador</option>
|
360 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
361 |
+
<option value="Eritrea">Eritrea</option>
|
362 |
+
<option value="Estonia">Estonia</option>
|
363 |
+
<option value="Ethiopia">Ethiopia</option>
|
364 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
365 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
366 |
+
<option value="Fiji">Fiji</option>
|
367 |
+
<option value="Finland">Finland</option>
|
368 |
+
<option value="France">France</option>
|
369 |
+
<option value="French Guiana">French Guiana</option>
|
370 |
+
<option value="French Polynesia">French Polynesia</option>
|
371 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
372 |
+
<option value="Gabon">Gabon</option>
|
373 |
+
<option value="Gambia">Gambia</option>
|
374 |
+
<option value="Georgia">Georgia</option>
|
375 |
+
<option value="Germany">Germany</option>
|
376 |
+
<option value="Ghana">Ghana</option>
|
377 |
+
<option value="Gibraltar">Gibraltar</option>
|
378 |
+
<option value="Greece">Greece</option>
|
379 |
+
<option value="Greenland">Greenland</option>
|
380 |
+
<option value="Grenada">Grenada</option>
|
381 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
382 |
+
<option value="Guam">Guam</option>
|
383 |
+
<option value="Guatemala">Guatemala</option>
|
384 |
+
<option value="Guernsey">Guernsey</option>
|
385 |
+
<option value="Guinea">Guinea</option>
|
386 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
387 |
+
<option value="Guyana">Guyana</option>
|
388 |
+
<option value="Haiti">Haiti</option>
|
389 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
390 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
391 |
+
<option value="Honduras">Honduras</option>
|
392 |
+
<option value="Hong Kong">Hong Kong</option>
|
393 |
+
<option value="Hungary">Hungary</option>
|
394 |
+
<option value="Iceland">Iceland</option>
|
395 |
+
<option value="India">India</option>
|
396 |
+
<option value="Indonesia">Indonesia</option>
|
397 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
398 |
+
<option value="Iraq">Iraq</option>
|
399 |
+
<option value="Ireland">Ireland</option>
|
400 |
+
<option value="Isle of Man">Isle of Man</option>
|
401 |
+
<option value="Israel">Israel</option>
|
402 |
+
<option value="Italy">Italy</option>
|
403 |
+
<option value="Jamaica">Jamaica</option>
|
404 |
+
<option value="Japan">Japan</option>
|
405 |
+
<option value="Jersey">Jersey</option>
|
406 |
+
<option value="Jordan">Jordan</option>
|
407 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
408 |
+
<option value="Kenya">Kenya</option>
|
409 |
+
<option value="Kiribati">Kiribati</option>
|
410 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
411 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
412 |
+
<option value="Kuwait">Kuwait</option>
|
413 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
414 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
415 |
+
<option value="Latvia">Latvia</option>
|
416 |
+
<option value="Lebanon">Lebanon</option>
|
417 |
+
<option value="Lesotho">Lesotho</option>
|
418 |
+
<option value="Liberia">Liberia</option>
|
419 |
+
<option value="Libya">Libya</option>
|
420 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
421 |
+
<option value="Lithuania">Lithuania</option>
|
422 |
+
<option value="Luxembourg">Luxembourg</option>
|
423 |
+
<option value="Macao">Macao</option>
|
424 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
425 |
+
<option value="Madagascar">Madagascar</option>
|
426 |
+
<option value="Malawi">Malawi</option>
|
427 |
+
<option value="Malaysia">Malaysia</option>
|
428 |
+
<option value="Maldives">Maldives</option>
|
429 |
+
<option value="Mali">Mali</option>
|
430 |
+
<option value="Malta">Malta</option>
|
431 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
432 |
+
<option value="Martinique">Martinique</option>
|
433 |
+
<option value="Mauritania">Mauritania</option>
|
434 |
+
<option value="Mauritius">Mauritius</option>
|
435 |
+
<option value="Mayotte">Mayotte</option>
|
436 |
+
<option value="Mexico">Mexico</option>
|
437 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
438 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
439 |
+
<option value="Monaco">Monaco</option>
|
440 |
+
<option value="Mongolia">Mongolia</option>
|
441 |
+
<option value="Montenegro">Montenegro</option>
|
442 |
+
<option value="Montserrat">Montserrat</option>
|
443 |
+
<option value="Morocco">Morocco</option>
|
444 |
+
<option value="Mozambique">Mozambique</option>
|
445 |
+
<option value="Myanmar">Myanmar</option>
|
446 |
+
<option value="Namibia">Namibia</option>
|
447 |
+
<option value="Nauru">Nauru</option>
|
448 |
+
<option value="Nepal">Nepal</option>
|
449 |
+
<option value="Netherlands">Netherlands</option>
|
450 |
+
<option value="New Caledonia">New Caledonia</option>
|
451 |
+
<option value="New Zealand">New Zealand</option>
|
452 |
+
<option value="Nicaragua">Nicaragua</option>
|
453 |
+
<option value="Niger">Niger</option>
|
454 |
+
<option value="Nigeria">Nigeria</option>
|
455 |
+
<option value="Niue">Niue</option>
|
456 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
457 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
458 |
+
<option value="Norway">Norway</option>
|
459 |
+
<option value="Oman">Oman</option>
|
460 |
+
<option value="Pakistan">Pakistan</option>
|
461 |
+
<option value="Palau">Palau</option>
|
462 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
463 |
+
<option value="Panama">Panama</option>
|
464 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
465 |
+
<option value="Paraguay">Paraguay</option>
|
466 |
+
<option value="Peru">Peru</option>
|
467 |
+
<option value="Philippines">Philippines</option>
|
468 |
+
<option value="Pitcairn">Pitcairn</option>
|
469 |
+
<option value="Poland">Poland</option>
|
470 |
+
<option value="Portugal">Portugal</option>
|
471 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
472 |
+
<option value="Qatar">Qatar</option>
|
473 |
+
<option value="Reunion">Reunion</option>
|
474 |
+
<option value="Romania">Romania</option>
|
475 |
+
<option value="Russian Federation">Russian Federation</option>
|
476 |
+
<option value="Rwanda">Rwanda</option>
|
477 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
478 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
479 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
480 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
481 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
482 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
483 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
484 |
+
<option value="Samoa">Samoa</option>
|
485 |
+
<option value="San Marino">San Marino</option>
|
486 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
487 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
488 |
+
<option value="Senegal">Senegal</option>
|
489 |
+
<option value="Serbia">Serbia</option>
|
490 |
+
<option value="Seychelles">Seychelles</option>
|
491 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
492 |
+
<option value="Singapore">Singapore</option>
|
493 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
494 |
+
<option value="Slovakia">Slovakia</option>
|
495 |
+
<option value="Slovenia">Slovenia</option>
|
496 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
497 |
+
<option value="Somalia">Somalia</option>
|
498 |
+
<option value="South Africa">South Africa</option>
|
499 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
500 |
+
<option value="South Sudan">South Sudan</option>
|
501 |
+
<option value="Spain">Spain</option>
|
502 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
503 |
+
<option value="Sudan">Sudan</option>
|
504 |
+
<option value="Suriname">Suriname</option>
|
505 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
506 |
+
<option value="Swaziland">Swaziland</option>
|
507 |
+
<option value="Sweden">Sweden</option>
|
508 |
+
<option value="Switzerland">Switzerland</option>
|
509 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
510 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
511 |
+
<option value="Tajikistan">Tajikistan</option>
|
512 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
513 |
+
<option value="Thailand">Thailand</option>
|
514 |
+
<option value="Timor-leste">Timor-leste</option>
|
515 |
+
<option value="Togo">Togo</option>
|
516 |
+
<option value="Tokelau">Tokelau</option>
|
517 |
+
<option value="Tonga">Tonga</option>
|
518 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
519 |
+
<option value="Tunisia">Tunisia</option>
|
520 |
+
<option value="Turkey">Turkey</option>
|
521 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
522 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
523 |
+
<option value="Tuvalu">Tuvalu</option>
|
524 |
+
<option value="Uganda">Uganda</option>
|
525 |
+
<option value="Ukraine">Ukraine</option>
|
526 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
527 |
+
<option value="United Kingdom">United Kingdom</option>
|
528 |
+
<option value="United States">United States</option>
|
529 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
530 |
+
<option value="Uruguay">Uruguay</option>
|
531 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
532 |
+
<option value="Vanuatu">Vanuatu</option>
|
533 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
534 |
+
<option value="Viet Nam">Viet Nam</option>
|
535 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
536 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
537 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
538 |
+
<option value="Western Sahara">Western Sahara</option>
|
539 |
+
<option value="Yemen">Yemen</option>
|
540 |
+
<option value="Zambia">Zambia</option>
|
541 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
542 |
+
</select>
|
543 |
+
</div>
|
544 |
+
</div>
|
545 |
+
|
546 |
+
<h2><a name="multiple-select" class="anchor" href="#multiple-select">Multiple Select</a></h2>
|
547 |
+
<div class="side-by-side clearfix">
|
548 |
+
<div>
|
549 |
+
<em>Turns This</em>
|
550 |
+
<select data-placeholder="Choose a Country..." class="select" multiple tabindex="3">
|
551 |
+
<option value=""></option>
|
552 |
+
<option value="United States">United States</option>
|
553 |
+
<option value="United Kingdom">United Kingdom</option>
|
554 |
+
<option value="Afghanistan">Afghanistan</option>
|
555 |
+
<option value="Aland Islands">Aland Islands</option>
|
556 |
+
<option value="Albania">Albania</option>
|
557 |
+
<option value="Algeria">Algeria</option>
|
558 |
+
<option value="American Samoa">American Samoa</option>
|
559 |
+
<option value="Andorra">Andorra</option>
|
560 |
+
<option value="Angola">Angola</option>
|
561 |
+
<option value="Anguilla">Anguilla</option>
|
562 |
+
<option value="Antarctica">Antarctica</option>
|
563 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
564 |
+
<option value="Argentina">Argentina</option>
|
565 |
+
<option value="Armenia">Armenia</option>
|
566 |
+
<option value="Aruba">Aruba</option>
|
567 |
+
<option value="Australia">Australia</option>
|
568 |
+
<option value="Austria">Austria</option>
|
569 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
570 |
+
<option value="Bahamas">Bahamas</option>
|
571 |
+
<option value="Bahrain">Bahrain</option>
|
572 |
+
<option value="Bangladesh">Bangladesh</option>
|
573 |
+
<option value="Barbados">Barbados</option>
|
574 |
+
<option value="Belarus">Belarus</option>
|
575 |
+
<option value="Belgium">Belgium</option>
|
576 |
+
<option value="Belize">Belize</option>
|
577 |
+
<option value="Benin">Benin</option>
|
578 |
+
<option value="Bermuda">Bermuda</option>
|
579 |
+
<option value="Bhutan">Bhutan</option>
|
580 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
581 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
582 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
583 |
+
<option value="Botswana">Botswana</option>
|
584 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
585 |
+
<option value="Brazil">Brazil</option>
|
586 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
587 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
588 |
+
<option value="Bulgaria">Bulgaria</option>
|
589 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
590 |
+
<option value="Burundi">Burundi</option>
|
591 |
+
<option value="Cambodia">Cambodia</option>
|
592 |
+
<option value="Cameroon">Cameroon</option>
|
593 |
+
<option value="Canada">Canada</option>
|
594 |
+
<option value="Cape Verde">Cape Verde</option>
|
595 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
596 |
+
<option value="Central African Republic">Central African Republic</option>
|
597 |
+
<option value="Chad">Chad</option>
|
598 |
+
<option value="Chile">Chile</option>
|
599 |
+
<option value="China">China</option>
|
600 |
+
<option value="Christmas Island">Christmas Island</option>
|
601 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
602 |
+
<option value="Colombia">Colombia</option>
|
603 |
+
<option value="Comoros">Comoros</option>
|
604 |
+
<option value="Congo">Congo</option>
|
605 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
606 |
+
<option value="Cook Islands">Cook Islands</option>
|
607 |
+
<option value="Costa Rica">Costa Rica</option>
|
608 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
609 |
+
<option value="Croatia">Croatia</option>
|
610 |
+
<option value="Cuba">Cuba</option>
|
611 |
+
<option value="Curacao">Curacao</option>
|
612 |
+
<option value="Cyprus">Cyprus</option>
|
613 |
+
<option value="Czech Republic">Czech Republic</option>
|
614 |
+
<option value="Denmark">Denmark</option>
|
615 |
+
<option value="Djibouti">Djibouti</option>
|
616 |
+
<option value="Dominica">Dominica</option>
|
617 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
618 |
+
<option value="Ecuador">Ecuador</option>
|
619 |
+
<option value="Egypt">Egypt</option>
|
620 |
+
<option value="El Salvador">El Salvador</option>
|
621 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
622 |
+
<option value="Eritrea">Eritrea</option>
|
623 |
+
<option value="Estonia">Estonia</option>
|
624 |
+
<option value="Ethiopia">Ethiopia</option>
|
625 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
626 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
627 |
+
<option value="Fiji">Fiji</option>
|
628 |
+
<option value="Finland">Finland</option>
|
629 |
+
<option value="France">France</option>
|
630 |
+
<option value="French Guiana">French Guiana</option>
|
631 |
+
<option value="French Polynesia">French Polynesia</option>
|
632 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
633 |
+
<option value="Gabon">Gabon</option>
|
634 |
+
<option value="Gambia">Gambia</option>
|
635 |
+
<option value="Georgia">Georgia</option>
|
636 |
+
<option value="Germany">Germany</option>
|
637 |
+
<option value="Ghana">Ghana</option>
|
638 |
+
<option value="Gibraltar">Gibraltar</option>
|
639 |
+
<option value="Greece">Greece</option>
|
640 |
+
<option value="Greenland">Greenland</option>
|
641 |
+
<option value="Grenada">Grenada</option>
|
642 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
643 |
+
<option value="Guam">Guam</option>
|
644 |
+
<option value="Guatemala">Guatemala</option>
|
645 |
+
<option value="Guernsey">Guernsey</option>
|
646 |
+
<option value="Guinea">Guinea</option>
|
647 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
648 |
+
<option value="Guyana">Guyana</option>
|
649 |
+
<option value="Haiti">Haiti</option>
|
650 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
651 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
652 |
+
<option value="Honduras">Honduras</option>
|
653 |
+
<option value="Hong Kong">Hong Kong</option>
|
654 |
+
<option value="Hungary">Hungary</option>
|
655 |
+
<option value="Iceland">Iceland</option>
|
656 |
+
<option value="India">India</option>
|
657 |
+
<option value="Indonesia">Indonesia</option>
|
658 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
659 |
+
<option value="Iraq">Iraq</option>
|
660 |
+
<option value="Ireland">Ireland</option>
|
661 |
+
<option value="Isle of Man">Isle of Man</option>
|
662 |
+
<option value="Israel">Israel</option>
|
663 |
+
<option value="Italy">Italy</option>
|
664 |
+
<option value="Jamaica">Jamaica</option>
|
665 |
+
<option value="Japan">Japan</option>
|
666 |
+
<option value="Jersey">Jersey</option>
|
667 |
+
<option value="Jordan">Jordan</option>
|
668 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
669 |
+
<option value="Kenya">Kenya</option>
|
670 |
+
<option value="Kiribati">Kiribati</option>
|
671 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
672 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
673 |
+
<option value="Kuwait">Kuwait</option>
|
674 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
675 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
676 |
+
<option value="Latvia">Latvia</option>
|
677 |
+
<option value="Lebanon">Lebanon</option>
|
678 |
+
<option value="Lesotho">Lesotho</option>
|
679 |
+
<option value="Liberia">Liberia</option>
|
680 |
+
<option value="Libya">Libya</option>
|
681 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
682 |
+
<option value="Lithuania">Lithuania</option>
|
683 |
+
<option value="Luxembourg">Luxembourg</option>
|
684 |
+
<option value="Macao">Macao</option>
|
685 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
686 |
+
<option value="Madagascar">Madagascar</option>
|
687 |
+
<option value="Malawi">Malawi</option>
|
688 |
+
<option value="Malaysia">Malaysia</option>
|
689 |
+
<option value="Maldives">Maldives</option>
|
690 |
+
<option value="Mali">Mali</option>
|
691 |
+
<option value="Malta">Malta</option>
|
692 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
693 |
+
<option value="Martinique">Martinique</option>
|
694 |
+
<option value="Mauritania">Mauritania</option>
|
695 |
+
<option value="Mauritius">Mauritius</option>
|
696 |
+
<option value="Mayotte">Mayotte</option>
|
697 |
+
<option value="Mexico">Mexico</option>
|
698 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
699 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
700 |
+
<option value="Monaco">Monaco</option>
|
701 |
+
<option value="Mongolia">Mongolia</option>
|
702 |
+
<option value="Montenegro">Montenegro</option>
|
703 |
+
<option value="Montserrat">Montserrat</option>
|
704 |
+
<option value="Morocco">Morocco</option>
|
705 |
+
<option value="Mozambique">Mozambique</option>
|
706 |
+
<option value="Myanmar">Myanmar</option>
|
707 |
+
<option value="Namibia">Namibia</option>
|
708 |
+
<option value="Nauru">Nauru</option>
|
709 |
+
<option value="Nepal">Nepal</option>
|
710 |
+
<option value="Netherlands">Netherlands</option>
|
711 |
+
<option value="New Caledonia">New Caledonia</option>
|
712 |
+
<option value="New Zealand">New Zealand</option>
|
713 |
+
<option value="Nicaragua">Nicaragua</option>
|
714 |
+
<option value="Niger">Niger</option>
|
715 |
+
<option value="Nigeria">Nigeria</option>
|
716 |
+
<option value="Niue">Niue</option>
|
717 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
718 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
719 |
+
<option value="Norway">Norway</option>
|
720 |
+
<option value="Oman">Oman</option>
|
721 |
+
<option value="Pakistan">Pakistan</option>
|
722 |
+
<option value="Palau">Palau</option>
|
723 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
724 |
+
<option value="Panama">Panama</option>
|
725 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
726 |
+
<option value="Paraguay">Paraguay</option>
|
727 |
+
<option value="Peru">Peru</option>
|
728 |
+
<option value="Philippines">Philippines</option>
|
729 |
+
<option value="Pitcairn">Pitcairn</option>
|
730 |
+
<option value="Poland">Poland</option>
|
731 |
+
<option value="Portugal">Portugal</option>
|
732 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
733 |
+
<option value="Qatar">Qatar</option>
|
734 |
+
<option value="Reunion">Reunion</option>
|
735 |
+
<option value="Romania">Romania</option>
|
736 |
+
<option value="Russian Federation">Russian Federation</option>
|
737 |
+
<option value="Rwanda">Rwanda</option>
|
738 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
739 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
740 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
741 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
742 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
743 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
744 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
745 |
+
<option value="Samoa">Samoa</option>
|
746 |
+
<option value="San Marino">San Marino</option>
|
747 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
748 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
749 |
+
<option value="Senegal">Senegal</option>
|
750 |
+
<option value="Serbia">Serbia</option>
|
751 |
+
<option value="Seychelles">Seychelles</option>
|
752 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
753 |
+
<option value="Singapore">Singapore</option>
|
754 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
755 |
+
<option value="Slovakia">Slovakia</option>
|
756 |
+
<option value="Slovenia">Slovenia</option>
|
757 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
758 |
+
<option value="Somalia">Somalia</option>
|
759 |
+
<option value="South Africa">South Africa</option>
|
760 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
761 |
+
<option value="South Sudan">South Sudan</option>
|
762 |
+
<option value="Spain">Spain</option>
|
763 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
764 |
+
<option value="Sudan">Sudan</option>
|
765 |
+
<option value="Suriname">Suriname</option>
|
766 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
767 |
+
<option value="Swaziland">Swaziland</option>
|
768 |
+
<option value="Sweden">Sweden</option>
|
769 |
+
<option value="Switzerland">Switzerland</option>
|
770 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
771 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
772 |
+
<option value="Tajikistan">Tajikistan</option>
|
773 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
774 |
+
<option value="Thailand">Thailand</option>
|
775 |
+
<option value="Timor-leste">Timor-leste</option>
|
776 |
+
<option value="Togo">Togo</option>
|
777 |
+
<option value="Tokelau">Tokelau</option>
|
778 |
+
<option value="Tonga">Tonga</option>
|
779 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
780 |
+
<option value="Tunisia">Tunisia</option>
|
781 |
+
<option value="Turkey">Turkey</option>
|
782 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
783 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
784 |
+
<option value="Tuvalu">Tuvalu</option>
|
785 |
+
<option value="Uganda">Uganda</option>
|
786 |
+
<option value="Ukraine">Ukraine</option>
|
787 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
788 |
+
<option value="United Kingdom">United Kingdom</option>
|
789 |
+
<option value="United States">United States</option>
|
790 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
791 |
+
<option value="Uruguay">Uruguay</option>
|
792 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
793 |
+
<option value="Vanuatu">Vanuatu</option>
|
794 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
795 |
+
<option value="Viet Nam">Viet Nam</option>
|
796 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
797 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
798 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
799 |
+
<option value="Western Sahara">Western Sahara</option>
|
800 |
+
<option value="Yemen">Yemen</option>
|
801 |
+
<option value="Zambia">Zambia</option>
|
802 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
803 |
+
</select>
|
804 |
+
</div>
|
805 |
+
<div>
|
806 |
+
<em>Into This</em>
|
807 |
+
<select data-placeholder="Choose a Country..." class="chosen-select" multiple tabindex="4">
|
808 |
+
<option value=""></option>
|
809 |
+
<option value="United States">United States</option>
|
810 |
+
<option value="United Kingdom">United Kingdom</option>
|
811 |
+
<option value="Afghanistan">Afghanistan</option>
|
812 |
+
<option value="Aland Islands">Aland Islands</option>
|
813 |
+
<option value="Albania">Albania</option>
|
814 |
+
<option value="Algeria">Algeria</option>
|
815 |
+
<option value="American Samoa">American Samoa</option>
|
816 |
+
<option value="Andorra">Andorra</option>
|
817 |
+
<option value="Angola">Angola</option>
|
818 |
+
<option value="Anguilla">Anguilla</option>
|
819 |
+
<option value="Antarctica">Antarctica</option>
|
820 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
821 |
+
<option value="Argentina">Argentina</option>
|
822 |
+
<option value="Armenia">Armenia</option>
|
823 |
+
<option value="Aruba">Aruba</option>
|
824 |
+
<option value="Australia">Australia</option>
|
825 |
+
<option value="Austria">Austria</option>
|
826 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
827 |
+
<option value="Bahamas">Bahamas</option>
|
828 |
+
<option value="Bahrain">Bahrain</option>
|
829 |
+
<option value="Bangladesh">Bangladesh</option>
|
830 |
+
<option value="Barbados">Barbados</option>
|
831 |
+
<option value="Belarus">Belarus</option>
|
832 |
+
<option value="Belgium">Belgium</option>
|
833 |
+
<option value="Belize">Belize</option>
|
834 |
+
<option value="Benin">Benin</option>
|
835 |
+
<option value="Bermuda">Bermuda</option>
|
836 |
+
<option value="Bhutan">Bhutan</option>
|
837 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
838 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
839 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
840 |
+
<option value="Botswana">Botswana</option>
|
841 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
842 |
+
<option value="Brazil">Brazil</option>
|
843 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
844 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
845 |
+
<option value="Bulgaria">Bulgaria</option>
|
846 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
847 |
+
<option value="Burundi">Burundi</option>
|
848 |
+
<option value="Cambodia">Cambodia</option>
|
849 |
+
<option value="Cameroon">Cameroon</option>
|
850 |
+
<option value="Canada">Canada</option>
|
851 |
+
<option value="Cape Verde">Cape Verde</option>
|
852 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
853 |
+
<option value="Central African Republic">Central African Republic</option>
|
854 |
+
<option value="Chad">Chad</option>
|
855 |
+
<option value="Chile">Chile</option>
|
856 |
+
<option value="China">China</option>
|
857 |
+
<option value="Christmas Island">Christmas Island</option>
|
858 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
859 |
+
<option value="Colombia">Colombia</option>
|
860 |
+
<option value="Comoros">Comoros</option>
|
861 |
+
<option value="Congo">Congo</option>
|
862 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
863 |
+
<option value="Cook Islands">Cook Islands</option>
|
864 |
+
<option value="Costa Rica">Costa Rica</option>
|
865 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
866 |
+
<option value="Croatia">Croatia</option>
|
867 |
+
<option value="Cuba">Cuba</option>
|
868 |
+
<option value="Curacao">Curacao</option>
|
869 |
+
<option value="Cyprus">Cyprus</option>
|
870 |
+
<option value="Czech Republic">Czech Republic</option>
|
871 |
+
<option value="Denmark">Denmark</option>
|
872 |
+
<option value="Djibouti">Djibouti</option>
|
873 |
+
<option value="Dominica">Dominica</option>
|
874 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
875 |
+
<option value="Ecuador">Ecuador</option>
|
876 |
+
<option value="Egypt">Egypt</option>
|
877 |
+
<option value="El Salvador">El Salvador</option>
|
878 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
879 |
+
<option value="Eritrea">Eritrea</option>
|
880 |
+
<option value="Estonia">Estonia</option>
|
881 |
+
<option value="Ethiopia">Ethiopia</option>
|
882 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
883 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
884 |
+
<option value="Fiji">Fiji</option>
|
885 |
+
<option value="Finland">Finland</option>
|
886 |
+
<option value="France">France</option>
|
887 |
+
<option value="French Guiana">French Guiana</option>
|
888 |
+
<option value="French Polynesia">French Polynesia</option>
|
889 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
890 |
+
<option value="Gabon">Gabon</option>
|
891 |
+
<option value="Gambia">Gambia</option>
|
892 |
+
<option value="Georgia">Georgia</option>
|
893 |
+
<option value="Germany">Germany</option>
|
894 |
+
<option value="Ghana">Ghana</option>
|
895 |
+
<option value="Gibraltar">Gibraltar</option>
|
896 |
+
<option value="Greece">Greece</option>
|
897 |
+
<option value="Greenland">Greenland</option>
|
898 |
+
<option value="Grenada">Grenada</option>
|
899 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
900 |
+
<option value="Guam">Guam</option>
|
901 |
+
<option value="Guatemala">Guatemala</option>
|
902 |
+
<option value="Guernsey">Guernsey</option>
|
903 |
+
<option value="Guinea">Guinea</option>
|
904 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
905 |
+
<option value="Guyana">Guyana</option>
|
906 |
+
<option value="Haiti">Haiti</option>
|
907 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
908 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
909 |
+
<option value="Honduras">Honduras</option>
|
910 |
+
<option value="Hong Kong">Hong Kong</option>
|
911 |
+
<option value="Hungary">Hungary</option>
|
912 |
+
<option value="Iceland">Iceland</option>
|
913 |
+
<option value="India">India</option>
|
914 |
+
<option value="Indonesia">Indonesia</option>
|
915 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
916 |
+
<option value="Iraq">Iraq</option>
|
917 |
+
<option value="Ireland">Ireland</option>
|
918 |
+
<option value="Isle of Man">Isle of Man</option>
|
919 |
+
<option value="Israel">Israel</option>
|
920 |
+
<option value="Italy">Italy</option>
|
921 |
+
<option value="Jamaica">Jamaica</option>
|
922 |
+
<option value="Japan">Japan</option>
|
923 |
+
<option value="Jersey">Jersey</option>
|
924 |
+
<option value="Jordan">Jordan</option>
|
925 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
926 |
+
<option value="Kenya">Kenya</option>
|
927 |
+
<option value="Kiribati">Kiribati</option>
|
928 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
929 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
930 |
+
<option value="Kuwait">Kuwait</option>
|
931 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
932 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
933 |
+
<option value="Latvia">Latvia</option>
|
934 |
+
<option value="Lebanon">Lebanon</option>
|
935 |
+
<option value="Lesotho">Lesotho</option>
|
936 |
+
<option value="Liberia">Liberia</option>
|
937 |
+
<option value="Libya">Libya</option>
|
938 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
939 |
+
<option value="Lithuania">Lithuania</option>
|
940 |
+
<option value="Luxembourg">Luxembourg</option>
|
941 |
+
<option value="Macao">Macao</option>
|
942 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
943 |
+
<option value="Madagascar">Madagascar</option>
|
944 |
+
<option value="Malawi">Malawi</option>
|
945 |
+
<option value="Malaysia">Malaysia</option>
|
946 |
+
<option value="Maldives">Maldives</option>
|
947 |
+
<option value="Mali">Mali</option>
|
948 |
+
<option value="Malta">Malta</option>
|
949 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
950 |
+
<option value="Martinique">Martinique</option>
|
951 |
+
<option value="Mauritania">Mauritania</option>
|
952 |
+
<option value="Mauritius">Mauritius</option>
|
953 |
+
<option value="Mayotte">Mayotte</option>
|
954 |
+
<option value="Mexico">Mexico</option>
|
955 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
956 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
957 |
+
<option value="Monaco">Monaco</option>
|
958 |
+
<option value="Mongolia">Mongolia</option>
|
959 |
+
<option value="Montenegro">Montenegro</option>
|
960 |
+
<option value="Montserrat">Montserrat</option>
|
961 |
+
<option value="Morocco">Morocco</option>
|
962 |
+
<option value="Mozambique">Mozambique</option>
|
963 |
+
<option value="Myanmar">Myanmar</option>
|
964 |
+
<option value="Namibia">Namibia</option>
|
965 |
+
<option value="Nauru">Nauru</option>
|
966 |
+
<option value="Nepal">Nepal</option>
|
967 |
+
<option value="Netherlands">Netherlands</option>
|
968 |
+
<option value="New Caledonia">New Caledonia</option>
|
969 |
+
<option value="New Zealand">New Zealand</option>
|
970 |
+
<option value="Nicaragua">Nicaragua</option>
|
971 |
+
<option value="Niger">Niger</option>
|
972 |
+
<option value="Nigeria">Nigeria</option>
|
973 |
+
<option value="Niue">Niue</option>
|
974 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
975 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
976 |
+
<option value="Norway">Norway</option>
|
977 |
+
<option value="Oman">Oman</option>
|
978 |
+
<option value="Pakistan">Pakistan</option>
|
979 |
+
<option value="Palau">Palau</option>
|
980 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
981 |
+
<option value="Panama">Panama</option>
|
982 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
983 |
+
<option value="Paraguay">Paraguay</option>
|
984 |
+
<option value="Peru">Peru</option>
|
985 |
+
<option value="Philippines">Philippines</option>
|
986 |
+
<option value="Pitcairn">Pitcairn</option>
|
987 |
+
<option value="Poland">Poland</option>
|
988 |
+
<option value="Portugal">Portugal</option>
|
989 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
990 |
+
<option value="Qatar">Qatar</option>
|
991 |
+
<option value="Reunion">Reunion</option>
|
992 |
+
<option value="Romania">Romania</option>
|
993 |
+
<option value="Russian Federation">Russian Federation</option>
|
994 |
+
<option value="Rwanda">Rwanda</option>
|
995 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
996 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
997 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
998 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
999 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
1000 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
1001 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
1002 |
+
<option value="Samoa">Samoa</option>
|
1003 |
+
<option value="San Marino">San Marino</option>
|
1004 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
1005 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
1006 |
+
<option value="Senegal">Senegal</option>
|
1007 |
+
<option value="Serbia">Serbia</option>
|
1008 |
+
<option value="Seychelles">Seychelles</option>
|
1009 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
1010 |
+
<option value="Singapore">Singapore</option>
|
1011 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
1012 |
+
<option value="Slovakia">Slovakia</option>
|
1013 |
+
<option value="Slovenia">Slovenia</option>
|
1014 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
1015 |
+
<option value="Somalia">Somalia</option>
|
1016 |
+
<option value="South Africa">South Africa</option>
|
1017 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
1018 |
+
<option value="South Sudan">South Sudan</option>
|
1019 |
+
<option value="Spain">Spain</option>
|
1020 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
1021 |
+
<option value="Sudan">Sudan</option>
|
1022 |
+
<option value="Suriname">Suriname</option>
|
1023 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
1024 |
+
<option value="Swaziland">Swaziland</option>
|
1025 |
+
<option value="Sweden">Sweden</option>
|
1026 |
+
<option value="Switzerland">Switzerland</option>
|
1027 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
1028 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
1029 |
+
<option value="Tajikistan">Tajikistan</option>
|
1030 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
1031 |
+
<option value="Thailand">Thailand</option>
|
1032 |
+
<option value="Timor-leste">Timor-leste</option>
|
1033 |
+
<option value="Togo">Togo</option>
|
1034 |
+
<option value="Tokelau">Tokelau</option>
|
1035 |
+
<option value="Tonga">Tonga</option>
|
1036 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
1037 |
+
<option value="Tunisia">Tunisia</option>
|
1038 |
+
<option value="Turkey">Turkey</option>
|
1039 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
1040 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
1041 |
+
<option value="Tuvalu">Tuvalu</option>
|
1042 |
+
<option value="Uganda">Uganda</option>
|
1043 |
+
<option value="Ukraine">Ukraine</option>
|
1044 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
1045 |
+
<option value="United Kingdom">United Kingdom</option>
|
1046 |
+
<option value="United States">United States</option>
|
1047 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
1048 |
+
<option value="Uruguay">Uruguay</option>
|
1049 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
1050 |
+
<option value="Vanuatu">Vanuatu</option>
|
1051 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
1052 |
+
<option value="Viet Nam">Viet Nam</option>
|
1053 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
1054 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
1055 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
1056 |
+
<option value="Western Sahara">Western Sahara</option>
|
1057 |
+
<option value="Yemen">Yemen</option>
|
1058 |
+
<option value="Zambia">Zambia</option>
|
1059 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
1060 |
+
</select>
|
1061 |
+
</div>
|
1062 |
+
</div>
|
1063 |
+
|
1064 |
+
<h2><a name="optgroup-support" class="anchor" href="#optgroup-support"><optgroup> Support</a></h2>
|
1065 |
+
<div class="side-by-side clearfix">
|
1066 |
+
<div>
|
1067 |
+
<em>Single Select with Groups</em>
|
1068 |
+
<select data-placeholder="Your Favorite Football Team" class="chosen-select" tabindex="5">
|
1069 |
+
<option value=""></option>
|
1070 |
+
<optgroup label="NFC EAST">
|
1071 |
+
<option>Dallas Cowboys</option>
|
1072 |
+
<option>New York Giants</option>
|
1073 |
+
<option>Philadelphia Eagles</option>
|
1074 |
+
<option>Washington Redskins</option>
|
1075 |
+
</optgroup>
|
1076 |
+
<optgroup label="NFC NORTH">
|
1077 |
+
<option>Chicago Bears</option>
|
1078 |
+
<option>Detroit Lions</option>
|
1079 |
+
<option>Green Bay Packers</option>
|
1080 |
+
<option>Minnesota Vikings</option>
|
1081 |
+
</optgroup>
|
1082 |
+
<optgroup label="NFC SOUTH">
|
1083 |
+
<option>Atlanta Falcons</option>
|
1084 |
+
<option>Carolina Panthers</option>
|
1085 |
+
<option>New Orleans Saints</option>
|
1086 |
+
<option>Tampa Bay Buccaneers</option>
|
1087 |
+
</optgroup>
|
1088 |
+
<optgroup label="NFC WEST">
|
1089 |
+
<option>Arizona Cardinals</option>
|
1090 |
+
<option>St. Louis Rams</option>
|
1091 |
+
<option>San Francisco 49ers</option>
|
1092 |
+
<option>Seattle Seahawks</option>
|
1093 |
+
</optgroup>
|
1094 |
+
<optgroup label="AFC EAST">
|
1095 |
+
<option>Buffalo Bills</option>
|
1096 |
+
<option>Miami Dolphins</option>
|
1097 |
+
<option>New England Patriots</option>
|
1098 |
+
<option>New York Jets</option>
|
1099 |
+
</optgroup>
|
1100 |
+
<optgroup label="AFC NORTH">
|
1101 |
+
<option>Baltimore Ravens</option>
|
1102 |
+
<option>Cincinnati Bengals</option>
|
1103 |
+
<option>Cleveland Browns</option>
|
1104 |
+
<option>Pittsburgh Steelers</option>
|
1105 |
+
</optgroup>
|
1106 |
+
<optgroup label="AFC SOUTH">
|
1107 |
+
<option>Houston Texans</option>
|
1108 |
+
<option>Indianapolis Colts</option>
|
1109 |
+
<option>Jacksonville Jaguars</option>
|
1110 |
+
<option>Tennessee Titans</option>
|
1111 |
+
</optgroup>
|
1112 |
+
<optgroup label="AFC WEST">
|
1113 |
+
<option>Denver Broncos</option>
|
1114 |
+
<option>Kansas City Chiefs</option>
|
1115 |
+
<option>Oakland Raiders</option>
|
1116 |
+
<option>San Diego Chargers</option>
|
1117 |
+
</optgroup>
|
1118 |
+
</select>
|
1119 |
+
</div>
|
1120 |
+
<div>
|
1121 |
+
<em>Multiple Select with Groups</em>
|
1122 |
+
<select data-placeholder="Your Favorite Football Team" class="chosen-select" multiple tabindex="6">
|
1123 |
+
<option value=""></option>
|
1124 |
+
<optgroup label="NFC EAST">
|
1125 |
+
<option>Dallas Cowboys</option>
|
1126 |
+
<option>New York Giants</option>
|
1127 |
+
<option>Philadelphia Eagles</option>
|
1128 |
+
<option>Washington Redskins</option>
|
1129 |
+
</optgroup>
|
1130 |
+
<optgroup label="NFC NORTH">
|
1131 |
+
<option>Chicago Bears</option>
|
1132 |
+
<option>Detroit Lions</option>
|
1133 |
+
<option>Green Bay Packers</option>
|
1134 |
+
<option>Minnesota Vikings</option>
|
1135 |
+
</optgroup>
|
1136 |
+
<optgroup label="NFC SOUTH">
|
1137 |
+
<option>Atlanta Falcons</option>
|
1138 |
+
<option>Carolina Panthers</option>
|
1139 |
+
<option>New Orleans Saints</option>
|
1140 |
+
<option>Tampa Bay Buccaneers</option>
|
1141 |
+
</optgroup>
|
1142 |
+
<optgroup label="NFC WEST">
|
1143 |
+
<option>Arizona Cardinals</option>
|
1144 |
+
<option>St. Louis Rams</option>
|
1145 |
+
<option>San Francisco 49ers</option>
|
1146 |
+
<option>Seattle Seahawks</option>
|
1147 |
+
</optgroup>
|
1148 |
+
<optgroup label="AFC EAST">
|
1149 |
+
<option>Buffalo Bills</option>
|
1150 |
+
<option>Miami Dolphins</option>
|
1151 |
+
<option>New England Patriots</option>
|
1152 |
+
<option>New York Jets</option>
|
1153 |
+
</optgroup>
|
1154 |
+
<optgroup label="AFC NORTH">
|
1155 |
+
<option>Baltimore Ravens</option>
|
1156 |
+
<option>Cincinnati Bengals</option>
|
1157 |
+
<option>Cleveland Browns</option>
|
1158 |
+
<option>Pittsburgh Steelers</option>
|
1159 |
+
</optgroup>
|
1160 |
+
<optgroup label="AFC SOUTH">
|
1161 |
+
<option>Houston Texans</option>
|
1162 |
+
<option>Indianapolis Colts</option>
|
1163 |
+
<option>Jacksonville Jaguars</option>
|
1164 |
+
<option>Tennessee Titans</option>
|
1165 |
+
</optgroup>
|
1166 |
+
<optgroup label="AFC WEST">
|
1167 |
+
<option>Denver Broncos</option>
|
1168 |
+
<option>Kansas City Chiefs</option>
|
1169 |
+
<option>Oakland Raiders</option>
|
1170 |
+
<option>San Diego Chargers</option>
|
1171 |
+
</optgroup>
|
1172 |
+
</select>
|
1173 |
+
</div>
|
1174 |
+
</div>
|
1175 |
+
|
1176 |
+
<h2><a name="selected-and-disabled-support" class="anchor" href="#selected-and-disabled-support">Selected and Disabled Support</a></h2>
|
1177 |
+
<div class="side-by-side clearfix">
|
1178 |
+
<p>Chosen automatically highlights selected options and removes disabled options.</p>
|
1179 |
+
<div>
|
1180 |
+
<em>Single Select</em>
|
1181 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select" tabindex="7">
|
1182 |
+
<option value=""></option>
|
1183 |
+
<option>American Black Bear</option>
|
1184 |
+
<option>Asiatic Black Bear</option>
|
1185 |
+
<option>Brown Bear</option>
|
1186 |
+
<option>Giant Panda</option>
|
1187 |
+
<option selected>Sloth Bear</option>
|
1188 |
+
<option disabled>Sun Bear</option>
|
1189 |
+
<option>Polar Bear</option>
|
1190 |
+
<option disabled>Spectacled Bear</option>
|
1191 |
+
</select>
|
1192 |
+
</div>
|
1193 |
+
<div>
|
1194 |
+
<em>Multiple Select</em>
|
1195 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="8">
|
1196 |
+
<option value=""></option>
|
1197 |
+
<option>American Black Bear</option>
|
1198 |
+
<option>Asiatic Black Bear</option>
|
1199 |
+
<option>Brown Bear</option>
|
1200 |
+
<option>Giant Panda</option>
|
1201 |
+
<option selected>Sloth Bear</option>
|
1202 |
+
<option disabled>Sun Bear</option>
|
1203 |
+
<option selected>Polar Bear</option>
|
1204 |
+
<option disabled>Spectacled Bear</option>
|
1205 |
+
</select>
|
1206 |
+
</div>
|
1207 |
+
</div>
|
1208 |
+
|
1209 |
+
<h2><a name="hide-search-on-single-select" class="anchor" href="#hide-search-on-single-select">Hide Search on Single Select</a></h2>
|
1210 |
+
<div class="side-by-side clearfix">
|
1211 |
+
<p>The <code>disable_search_threshold</code> option can be specified to hide the search input on single selects if there are <i>n</i> or fewer options.</p>
|
1212 |
+
<pre><code class="language-javascript">$(".chosen-select").chosen({disable_search_threshold: 10});</code></pre>
|
1213 |
+
<p></p>
|
1214 |
+
<div>
|
1215 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-no-single" tabindex="9">
|
1216 |
+
<option value=""></option>
|
1217 |
+
<option>American Black Bear</option>
|
1218 |
+
<option>Asiatic Black Bear</option>
|
1219 |
+
<option>Brown Bear</option>
|
1220 |
+
<option>Giant Panda</option>
|
1221 |
+
<option selected disabled>Sloth Bear</option>
|
1222 |
+
<option disabled>Sun Bear</option>
|
1223 |
+
<option selected disabled>Paddington Bear</option>
|
1224 |
+
<option selected>Polar Bear</option>
|
1225 |
+
<option disabled>Spectacled Bear</option>
|
1226 |
+
</select>
|
1227 |
+
</div>
|
1228 |
+
</div>
|
1229 |
+
|
1230 |
+
<h2><a name="default-text-support" class="anchor" href="#default-text-support">Default Text Support</a></h2>
|
1231 |
+
<div class="side-by-side clearfix">
|
1232 |
+
<p>Chosen automatically sets the default field text ("Choose a country...") by reading the select element's data-placeholder value. If no data-placeholder value is present, it will default to "Select an Option" or "Select Some Options" depending on whether the select is single or multiple. You can change these elements in the plugin js file as you see fit.</p>
|
1233 |
+
<pre><code class="language-markup"><select <strong>data-placeholder="Choose a country..."</strong> multiple class="chosen-select"></code></pre>
|
1234 |
+
<p><strong>Note:</strong> on single selects, the first element is assumed to be selected by the browser. To take advantage of the default text support, you will need to include a blank option as the first element of your select list.</p>
|
1235 |
+
</div>
|
1236 |
+
|
1237 |
+
<h2><a name="no-results-text-support" class="anchor" href="#no-results-text-support">No Results Text Support</a></h2>
|
1238 |
+
<div class="side-by-side clearfix">
|
1239 |
+
<p>Setting the "No results" search text is as easy as passing an option when you create Chosen:</p>
|
1240 |
+
<pre><code class="language-javascript"> $(".chosen-select").chosen({no_results_text: "Oops, nothing found!"}); </code></pre>
|
1241 |
+
<p></p>
|
1242 |
+
<div>
|
1243 |
+
<em>Single Select</em>
|
1244 |
+
<select data-placeholder="Type 'C' to view" class="chosen-select-no-results" tabindex="10">
|
1245 |
+
<option value=""></option>
|
1246 |
+
<option>American Black Bear</option>
|
1247 |
+
<option>Asiatic Black Bear</option>
|
1248 |
+
<option>Brown Bear</option>
|
1249 |
+
<option>Giant Panda</option>
|
1250 |
+
<option>Sloth Bear</option>
|
1251 |
+
<option>Sun Bear</option>
|
1252 |
+
<option>Polar Bear</option>
|
1253 |
+
<option>Spectacled Bear</option>
|
1254 |
+
</select>
|
1255 |
+
</div>
|
1256 |
+
<div>
|
1257 |
+
<em>Multiple Select</em>
|
1258 |
+
<select data-placeholder="Type 'C' to view" multiple class="chosen-select-no-results" tabindex="11">
|
1259 |
+
<option value=""></option>
|
1260 |
+
<option>American Black Bear</option>
|
1261 |
+
<option>Asiatic Black Bear</option>
|
1262 |
+
<option>Brown Bear</option>
|
1263 |
+
<option>Giant Panda</option>
|
1264 |
+
<option>Sloth Bear</option>
|
1265 |
+
<option>Sun Bear</option>
|
1266 |
+
<option>Polar Bear</option>
|
1267 |
+
<option>Spectacled Bear</option>
|
1268 |
+
</select>
|
1269 |
+
</div>
|
1270 |
+
</div>
|
1271 |
+
|
1272 |
+
<h2><a name="limit-selected-options-in-multiselect" class="anchor" href="#limit-selected-options-in-multiselect">Limit Selected Options in Multiselect</a></h2>
|
1273 |
+
<div class="side-by-side clearfix">
|
1274 |
+
<p>You can easily limit how many options the user can select:</p>
|
1275 |
+
<pre><code class="language-javascript">$(".chosen-select").chosen({max_selected_options: 5});</code></pre>
|
1276 |
+
<p>If you try to select another option with limit reached <code class="language-javascript">chosen:maxselected</code> event is triggered:</p>
|
1277 |
+
<pre><code class="language-javascript"> $(".chosen-select").bind("chosen:maxselected", function () { ... }); </code></pre>
|
1278 |
+
</div>
|
1279 |
+
|
1280 |
+
<h2><a name="allow-deselect-on-single-selects" class="anchor" href="#allow-deselect-on-single-selects">Allow Deselect on Single Selects</a></h2>
|
1281 |
+
<div class="side-by-side clearfix">
|
1282 |
+
<p>When a single select box isn't a required field, you can set <code class="language-javascript">allow_single_deselect: true</code> and Chosen will add a UI element for option deselection. This will only work if the first option has blank text.</p>
|
1283 |
+
<div class="side-by-side clearfix">
|
1284 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-deselect" tabindex="12">
|
1285 |
+
<option value=""></option>
|
1286 |
+
<option>American Black Bear</option>
|
1287 |
+
<option>Asiatic Black Bear</option>
|
1288 |
+
<option>Brown Bear</option>
|
1289 |
+
<option>Giant Panda</option>
|
1290 |
+
<option selected>Sloth Bear</option>
|
1291 |
+
<option>Sun Bear</option>
|
1292 |
+
<option>Polar Bear</option>
|
1293 |
+
<option>Spectacled Bear</option>
|
1294 |
+
</select>
|
1295 |
+
</div>
|
1296 |
+
</div>
|
1297 |
+
|
1298 |
+
<h2><a name="right-to-left-support" class="anchor" href="#right-to-left-support">Right-to-Left Support</a></h2>
|
1299 |
+
<div class="side-by-side clearfix">
|
1300 |
+
<p>You can set right-to-left text by setting <code class="language-javascript">rtl: true</code></p>
|
1301 |
+
<pre><code class="language-javascript"> $(".chosen-select").chosen({rtl: true}); </code></pre>
|
1302 |
+
|
1303 |
+
<div>
|
1304 |
+
<em>Single Right-to-Left Select</em>
|
1305 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-rtl" tabindex="13">
|
1306 |
+
<option value=""></option>
|
1307 |
+
<option>American Black Bear</option>
|
1308 |
+
<option>Asiatic Black Bear</option>
|
1309 |
+
<option>Brown Bear</option>
|
1310 |
+
<option>Giant Panda</option>
|
1311 |
+
<option selected>Sloth Bear</option>
|
1312 |
+
<option>Polar Bear</option>
|
1313 |
+
</select>
|
1314 |
+
</div>
|
1315 |
+
<div>
|
1316 |
+
<em>Multiple Right-to-Left Select</em>
|
1317 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select-rtl" tabindex="14">
|
1318 |
+
<option value=""></option>
|
1319 |
+
<option>American Black Bear</option>
|
1320 |
+
<option>Asiatic Black Bear</option>
|
1321 |
+
<option>Brown Bear</option>
|
1322 |
+
<option>Giant Panda</option>
|
1323 |
+
<option selected>Sloth Bear</option>
|
1324 |
+
<option selected>Polar Bear</option>
|
1325 |
+
</select>
|
1326 |
+
</div>
|
1327 |
+
</div>
|
1328 |
+
|
1329 |
+
<h2><a name="change-update-events" class="anchor" href="#change-update-events">Observing, Updating, and Destroying Chosen</a></h2>
|
1330 |
+
<div class="side-by-side clearfix">
|
1331 |
+
<ul>
|
1332 |
+
<li>
|
1333 |
+
<h3>Observing Form Field Changes</h3>
|
1334 |
+
<p>When working with form fields, you often want to perform some behavior after a value has been selected or deselected. Whenever a user selects a field in Chosen, it triggers a "change" event on the original form field. That lets you do something like this:</p>
|
1335 |
+
<pre><code class="language-javascript">$("#form_field").chosen().change( … );</code></pre>
|
1336 |
+
</li>
|
1337 |
+
<li>
|
1338 |
+
<h3>Updating Chosen Dynamically</h3>
|
1339 |
+
<p>If you need to update the options in your select field and want Chosen to pick up the changes, you'll need to trigger the "chosen:updated" event on the field. Chosen will re-build itself based on the updated content.</p>
|
1340 |
+
<pre><code class="language-javascript">$("#form_field").trigger("chosen:updated");</code></pre>
|
1341 |
+
</li>
|
1342 |
+
<li>
|
1343 |
+
<h3>Destroying Chosen</h3>
|
1344 |
+
<p>To destroy Chosen and revert back to the native select:</p>
|
1345 |
+
<pre><code class="language-javascript">$("#form_field").chosen("destroy");</code></pre>
|
1346 |
+
</li>
|
1347 |
+
</ul>
|
1348 |
+
</div>
|
1349 |
+
|
1350 |
+
<h2><a name="custom-width-support" class="anchor" href="#custom-width-support">Custom Width Support</a></h2>
|
1351 |
+
<div class="side-by-side clearfix">
|
1352 |
+
<p>Using a custom width with Chosen is as easy as passing an option when you create Chosen:</p>
|
1353 |
+
<pre><code class="language-javascript"> $(".chosen-select").chosen({width: "95%"}); </code></pre>
|
1354 |
+
<div>
|
1355 |
+
<em>Single Select</em>
|
1356 |
+
<select data-placeholder="Your Favorite Types of Bear" class="chosen-select-width" tabindex="15">
|
1357 |
+
<option value=""></option>
|
1358 |
+
<option selected>American Black Bear</option>
|
1359 |
+
<option>Asiatic Black Bear</option>
|
1360 |
+
<option>Brown Bear</option>
|
1361 |
+
<option>Giant Panda</option>
|
1362 |
+
<option>Sloth Bear</option>
|
1363 |
+
<option>Sun Bear</option>
|
1364 |
+
<option>Polar Bear</option>
|
1365 |
+
<option>Spectacled Bear</option>
|
1366 |
+
</select>
|
1367 |
+
</div>
|
1368 |
+
<div>
|
1369 |
+
<em>Multiple Select</em>
|
1370 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select-width" tabindex="16">
|
1371 |
+
<option value=""></option>
|
1372 |
+
<option>American Black Bear</option>
|
1373 |
+
<option>Asiatic Black Bear</option>
|
1374 |
+
<option>Brown Bear</option>
|
1375 |
+
<option selected>Giant Panda</option>
|
1376 |
+
<option>Sloth Bear</option>
|
1377 |
+
<option>Sun Bear</option>
|
1378 |
+
<option>Polar Bear</option>
|
1379 |
+
<option>Spectacled Bear</option>
|
1380 |
+
</select>
|
1381 |
+
</div>
|
1382 |
+
</div>
|
1383 |
+
|
1384 |
+
<h2><a name="labels-work-too" class="anchor" href="#labels-work-too">Labels work, too</a></h2>
|
1385 |
+
<div class="side-by-side clearfix">
|
1386 |
+
<p>Use labels just like you would a standard select</p>
|
1387 |
+
<p></p>
|
1388 |
+
<div>
|
1389 |
+
<em><label for="single-label-example">Click to Highlight Single Select</label></em>
|
1390 |
+
<select data-placeholder="Your Favorite Types of Bear" class="chosen-select" tabindex="17" id="single-label-example">
|
1391 |
+
<option value=""></option>
|
1392 |
+
<option selected>American Black Bear</option>
|
1393 |
+
<option>Asiatic Black Bear</option>
|
1394 |
+
<option>Brown Bear</option>
|
1395 |
+
<option>Giant Panda</option>
|
1396 |
+
<option>Sloth Bear</option>
|
1397 |
+
<option>Sun Bear</option>
|
1398 |
+
<option>Polar Bear</option>
|
1399 |
+
<option>Spectacled Bear</option>
|
1400 |
+
</select>
|
1401 |
+
</div>
|
1402 |
+
<div>
|
1403 |
+
<em><label for="multiple-label-example">Click to Highlight Multiple Select</label></em>
|
1404 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="18" id="multiple-label-example">
|
1405 |
+
<option value=""></option>
|
1406 |
+
<option>American Black Bear</option>
|
1407 |
+
<option>Asiatic Black Bear</option>
|
1408 |
+
<option>Brown Bear</option>
|
1409 |
+
<option selected>Giant Panda</option>
|
1410 |
+
<option>Sloth Bear</option>
|
1411 |
+
<option>Sun Bear</option>
|
1412 |
+
<option>Polar Bear</option>
|
1413 |
+
<option>Spectacled Bear</option>
|
1414 |
+
</select>
|
1415 |
+
</div>
|
1416 |
+
</div>
|
1417 |
+
|
1418 |
+
<h2><a name="setup" class="anchor" href="#setup">Setup</a></h2>
|
1419 |
+
<p>Using Chosen is easy as can be.</p>
|
1420 |
+
<ol>
|
1421 |
+
<li><a href="https://github.com/harvesthq/chosen/releases">Download</a> the plugin and copy the chosen files to your app.</li>
|
1422 |
+
<li>Activate the plugin on the select boxes of your choice: <code class="language-javascript">$(".chosen-select").chosen()</code></li>
|
1423 |
+
<li><a href="http://www.youtube.com/watch?feature=player_detailpage&v=UkSPUDpe0U8#t=11s">Disco</a>.</li>
|
1424 |
+
</ol>
|
1425 |
+
|
1426 |
+
<h2><a name="faqs" class="anchor" href="#faqs">FAQs</a></h2>
|
1427 |
+
<ul class="faqs">
|
1428 |
+
<li>
|
1429 |
+
<h3>Do you have all the available options documented somewhere?</h3>
|
1430 |
+
<p>Yes! You can find them on <a href="options.html">the options page</a>.</p>
|
1431 |
+
</li>
|
1432 |
+
<li>
|
1433 |
+
<h3>Something doesn't work. Can you fix it?</h3>
|
1434 |
+
<p>Yes! Please report all issues using the <a href="http://github.com/harvesthq/chosen/issues">GitHub issue tracking tool</a>. Please include the plugin version (jQuery or Prototype), browser and OS. The more information provided, the easier it is to fix a problem.</p>
|
1435 |
+
</li>
|
1436 |
+
<li>
|
1437 |
+
<h3>What browsers are supported?</h3>
|
1438 |
+
<p>All modern desktop browsers are supported (Firefox, Chrome, Safari and IE9). Legacy support for IE8 is also enabled. Chosen is disabled on iPhone, iPod Touch, and Android mobile devices (<a href="https://github.com/harvesthq/chosen/pull/1388">more information</a>).</p>
|
1439 |
+
</li>
|
1440 |
+
<li>
|
1441 |
+
<h3>Didn't there used to be a Prototype version of Chosen?</h3>
|
1442 |
+
<p><a href="index.proto.html">There still is!</a></p>
|
1443 |
+
</li>
|
1444 |
+
</ul>
|
1445 |
+
|
1446 |
+
<h2><a name="credits" class="anchor" href="#credits">Credits</a></h2>
|
1447 |
+
|
1448 |
+
<ul class="credits">
|
1449 |
+
<li>Concept and development by <a href="http://patrickfiller.com">Patrick Filler</a> for <a href="https://getharvest.com">Harvest</a>.</li>
|
1450 |
+
<li>Design and CSS by <a href="http://matthewlettini.com">Matthew Lettini</a>.</li>
|
1451 |
+
<li>Repository maintained by <a href="https://github.com/pfiller">@pfiller</a>, <a href="https://github.com/kenearley">@kenearley</a>, <a href="https://github.com/stof">@stof</a>, <a href="https://github.com/koenpunt">@koenpunt</a>, and <a href="https://github.com/tjschuck">@tjschuck</a>.</li>
|
1452 |
+
<li>Chosen includes <a href="https://github.com/harvesthq/chosen/contributors">contributions by many fine folks</a>.</li>
|
1453 |
+
</ul>
|
1454 |
+
|
1455 |
+
<footer>
|
1456 |
+
© 2011–2016 <a href="http://www.getharvest.com/">Harvest</a>. Chosen is licensed under the <a href="https://github.com/harvesthq/chosen/blob/master/LICENSE.md">MIT license</a>.
|
1457 |
+
</footer>
|
1458 |
+
|
1459 |
+
</div>
|
1460 |
+
</div>
|
1461 |
+
<script src="docsupport/jquery-3.2.1.min.js" type="text/javascript"></script>
|
1462 |
+
<script src="chosen.jquery.js" type="text/javascript"></script>
|
1463 |
+
<script src="docsupport/prism.js" type="text/javascript" charset="utf-8"></script>
|
1464 |
+
<script src="docsupport/init.js" type="text/javascript" charset="utf-8"></script>
|
1465 |
+
</form>
|
1466 |
+
<div class="oss-bar">
|
1467 |
+
<ul>
|
1468 |
+
<li><a class="fork" href="https://github.com/harvesthq/chosen">Fork on Github</a></li>
|
1469 |
+
<li><a class="harvest" href="http://www.getharvest.com/">Built by Harvest</a></li>
|
1470 |
+
</ul>
|
1471 |
+
</div>
|
1472 |
+
</body>
|
1473 |
+
</html>
|
common/libs/chosen-v1.8.3/create-example.proto.html
ADDED
@@ -0,0 +1,1472 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!doctype html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="utf-8">
|
5 |
+
<title>Chosen: A Prototype Plugin by Harvest to Tame Unwieldy Select Boxes</title>
|
6 |
+
<link rel="stylesheet" href="docsupport/style.css">
|
7 |
+
<link rel="stylesheet" href="docsupport/prism.css">
|
8 |
+
<link rel="stylesheet" href="chosen.css">
|
9 |
+
|
10 |
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://ajax.googleapis.com; style-src 'self'; img-src 'self' data:">
|
11 |
+
|
12 |
+
</head>
|
13 |
+
<body>
|
14 |
+
<div id="container">
|
15 |
+
<div id="content">
|
16 |
+
<header>
|
17 |
+
<h1>Chosen - Prototype Version <small>(<span id="latest-version">v1.8.3</span>)</small></h1>
|
18 |
+
</header>
|
19 |
+
<p>Chosen is a Prototype plugin that makes long, unwieldy select boxes much more user-friendly.</p>
|
20 |
+
|
21 |
+
<p>
|
22 |
+
<a class="button button-blue" href="https://github.com/harvesthq/chosen/releases">Downloads</a>
|
23 |
+
<a class="button" href="https://github.com/harvesthq/chosen">Project Source</a>
|
24 |
+
<a class="button" href="https://github.com/harvesthq/chosen/blob/master/contributing.md">Contribute</a>
|
25 |
+
</p>
|
26 |
+
|
27 |
+
<p class="jquery-version-refer">Looking for the <a href="index.html">jQuery version?</a></p>
|
28 |
+
|
29 |
+
<h2><a name="standard-select" class="anchor" href="#standard-select">Standard Select</a></h2>
|
30 |
+
<div class="side-by-side clearfix">
|
31 |
+
<div>
|
32 |
+
<em>Turns This</em>
|
33 |
+
<select data-placeholder="Choose a Country..." class="select" tabindex="1">
|
34 |
+
<option value=""></option>
|
35 |
+
<option value="United States">United States</option>
|
36 |
+
<option value="United Kingdom">United Kingdom</option>
|
37 |
+
<option value="Afghanistan">Afghanistan</option>
|
38 |
+
<option value="Aland Islands">Aland Islands</option>
|
39 |
+
<option value="Albania">Albania</option>
|
40 |
+
<option value="Algeria">Algeria</option>
|
41 |
+
<option value="American Samoa">American Samoa</option>
|
42 |
+
<option value="Andorra">Andorra</option>
|
43 |
+
<option value="Angola">Angola</option>
|
44 |
+
<option value="Anguilla">Anguilla</option>
|
45 |
+
<option value="Antarctica">Antarctica</option>
|
46 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
47 |
+
<option value="Argentina">Argentina</option>
|
48 |
+
<option value="Armenia">Armenia</option>
|
49 |
+
<option value="Aruba">Aruba</option>
|
50 |
+
<option value="Australia">Australia</option>
|
51 |
+
<option value="Austria">Austria</option>
|
52 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
53 |
+
<option value="Bahamas">Bahamas</option>
|
54 |
+
<option value="Bahrain">Bahrain</option>
|
55 |
+
<option value="Bangladesh">Bangladesh</option>
|
56 |
+
<option value="Barbados">Barbados</option>
|
57 |
+
<option value="Belarus">Belarus</option>
|
58 |
+
<option value="Belgium">Belgium</option>
|
59 |
+
<option value="Belize">Belize</option>
|
60 |
+
<option value="Benin">Benin</option>
|
61 |
+
<option value="Bermuda">Bermuda</option>
|
62 |
+
<option value="Bhutan">Bhutan</option>
|
63 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
64 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
65 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
66 |
+
<option value="Botswana">Botswana</option>
|
67 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
68 |
+
<option value="Brazil">Brazil</option>
|
69 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
70 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
71 |
+
<option value="Bulgaria">Bulgaria</option>
|
72 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
73 |
+
<option value="Burundi">Burundi</option>
|
74 |
+
<option value="Cambodia">Cambodia</option>
|
75 |
+
<option value="Cameroon">Cameroon</option>
|
76 |
+
<option value="Canada">Canada</option>
|
77 |
+
<option value="Cape Verde">Cape Verde</option>
|
78 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
79 |
+
<option value="Central African Republic">Central African Republic</option>
|
80 |
+
<option value="Chad">Chad</option>
|
81 |
+
<option value="Chile">Chile</option>
|
82 |
+
<option value="China">China</option>
|
83 |
+
<option value="Christmas Island">Christmas Island</option>
|
84 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
85 |
+
<option value="Colombia">Colombia</option>
|
86 |
+
<option value="Comoros">Comoros</option>
|
87 |
+
<option value="Congo">Congo</option>
|
88 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
89 |
+
<option value="Cook Islands">Cook Islands</option>
|
90 |
+
<option value="Costa Rica">Costa Rica</option>
|
91 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
92 |
+
<option value="Croatia">Croatia</option>
|
93 |
+
<option value="Cuba">Cuba</option>
|
94 |
+
<option value="Curacao">Curacao</option>
|
95 |
+
<option value="Cyprus">Cyprus</option>
|
96 |
+
<option value="Czech Republic">Czech Republic</option>
|
97 |
+
<option value="Denmark">Denmark</option>
|
98 |
+
<option value="Djibouti">Djibouti</option>
|
99 |
+
<option value="Dominica">Dominica</option>
|
100 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
101 |
+
<option value="Ecuador">Ecuador</option>
|
102 |
+
<option value="Egypt">Egypt</option>
|
103 |
+
<option value="El Salvador">El Salvador</option>
|
104 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
105 |
+
<option value="Eritrea">Eritrea</option>
|
106 |
+
<option value="Estonia">Estonia</option>
|
107 |
+
<option value="Ethiopia">Ethiopia</option>
|
108 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
109 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
110 |
+
<option value="Fiji">Fiji</option>
|
111 |
+
<option value="Finland">Finland</option>
|
112 |
+
<option value="France">France</option>
|
113 |
+
<option value="French Guiana">French Guiana</option>
|
114 |
+
<option value="French Polynesia">French Polynesia</option>
|
115 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
116 |
+
<option value="Gabon">Gabon</option>
|
117 |
+
<option value="Gambia">Gambia</option>
|
118 |
+
<option value="Georgia">Georgia</option>
|
119 |
+
<option value="Germany">Germany</option>
|
120 |
+
<option value="Ghana">Ghana</option>
|
121 |
+
<option value="Gibraltar">Gibraltar</option>
|
122 |
+
<option value="Greece">Greece</option>
|
123 |
+
<option value="Greenland">Greenland</option>
|
124 |
+
<option value="Grenada">Grenada</option>
|
125 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
126 |
+
<option value="Guam">Guam</option>
|
127 |
+
<option value="Guatemala">Guatemala</option>
|
128 |
+
<option value="Guernsey">Guernsey</option>
|
129 |
+
<option value="Guinea">Guinea</option>
|
130 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
131 |
+
<option value="Guyana">Guyana</option>
|
132 |
+
<option value="Haiti">Haiti</option>
|
133 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
134 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
135 |
+
<option value="Honduras">Honduras</option>
|
136 |
+
<option value="Hong Kong">Hong Kong</option>
|
137 |
+
<option value="Hungary">Hungary</option>
|
138 |
+
<option value="Iceland">Iceland</option>
|
139 |
+
<option value="India">India</option>
|
140 |
+
<option value="Indonesia">Indonesia</option>
|
141 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
142 |
+
<option value="Iraq">Iraq</option>
|
143 |
+
<option value="Ireland">Ireland</option>
|
144 |
+
<option value="Isle of Man">Isle of Man</option>
|
145 |
+
<option value="Israel">Israel</option>
|
146 |
+
<option value="Italy">Italy</option>
|
147 |
+
<option value="Jamaica">Jamaica</option>
|
148 |
+
<option value="Japan">Japan</option>
|
149 |
+
<option value="Jersey">Jersey</option>
|
150 |
+
<option value="Jordan">Jordan</option>
|
151 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
152 |
+
<option value="Kenya">Kenya</option>
|
153 |
+
<option value="Kiribati">Kiribati</option>
|
154 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
155 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
156 |
+
<option value="Kuwait">Kuwait</option>
|
157 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
158 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
159 |
+
<option value="Latvia">Latvia</option>
|
160 |
+
<option value="Lebanon">Lebanon</option>
|
161 |
+
<option value="Lesotho">Lesotho</option>
|
162 |
+
<option value="Liberia">Liberia</option>
|
163 |
+
<option value="Libya">Libya</option>
|
164 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
165 |
+
<option value="Lithuania">Lithuania</option>
|
166 |
+
<option value="Luxembourg">Luxembourg</option>
|
167 |
+
<option value="Macao">Macao</option>
|
168 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
169 |
+
<option value="Madagascar">Madagascar</option>
|
170 |
+
<option value="Malawi">Malawi</option>
|
171 |
+
<option value="Malaysia">Malaysia</option>
|
172 |
+
<option value="Maldives">Maldives</option>
|
173 |
+
<option value="Mali">Mali</option>
|
174 |
+
<option value="Malta">Malta</option>
|
175 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
176 |
+
<option value="Martinique">Martinique</option>
|
177 |
+
<option value="Mauritania">Mauritania</option>
|
178 |
+
<option value="Mauritius">Mauritius</option>
|
179 |
+
<option value="Mayotte">Mayotte</option>
|
180 |
+
<option value="Mexico">Mexico</option>
|
181 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
182 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
183 |
+
<option value="Monaco">Monaco</option>
|
184 |
+
<option value="Mongolia">Mongolia</option>
|
185 |
+
<option value="Montenegro">Montenegro</option>
|
186 |
+
<option value="Montserrat">Montserrat</option>
|
187 |
+
<option value="Morocco">Morocco</option>
|
188 |
+
<option value="Mozambique">Mozambique</option>
|
189 |
+
<option value="Myanmar">Myanmar</option>
|
190 |
+
<option value="Namibia">Namibia</option>
|
191 |
+
<option value="Nauru">Nauru</option>
|
192 |
+
<option value="Nepal">Nepal</option>
|
193 |
+
<option value="Netherlands">Netherlands</option>
|
194 |
+
<option value="New Caledonia">New Caledonia</option>
|
195 |
+
<option value="New Zealand">New Zealand</option>
|
196 |
+
<option value="Nicaragua">Nicaragua</option>
|
197 |
+
<option value="Niger">Niger</option>
|
198 |
+
<option value="Nigeria">Nigeria</option>
|
199 |
+
<option value="Niue">Niue</option>
|
200 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
201 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
202 |
+
<option value="Norway">Norway</option>
|
203 |
+
<option value="Oman">Oman</option>
|
204 |
+
<option value="Pakistan">Pakistan</option>
|
205 |
+
<option value="Palau">Palau</option>
|
206 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
207 |
+
<option value="Panama">Panama</option>
|
208 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
209 |
+
<option value="Paraguay">Paraguay</option>
|
210 |
+
<option value="Peru">Peru</option>
|
211 |
+
<option value="Philippines">Philippines</option>
|
212 |
+
<option value="Pitcairn">Pitcairn</option>
|
213 |
+
<option value="Poland">Poland</option>
|
214 |
+
<option value="Portugal">Portugal</option>
|
215 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
216 |
+
<option value="Qatar">Qatar</option>
|
217 |
+
<option value="Reunion">Reunion</option>
|
218 |
+
<option value="Romania">Romania</option>
|
219 |
+
<option value="Russian Federation">Russian Federation</option>
|
220 |
+
<option value="Rwanda">Rwanda</option>
|
221 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
222 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
223 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
224 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
225 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
226 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
227 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
228 |
+
<option value="Samoa">Samoa</option>
|
229 |
+
<option value="San Marino">San Marino</option>
|
230 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
231 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
232 |
+
<option value="Senegal">Senegal</option>
|
233 |
+
<option value="Serbia">Serbia</option>
|
234 |
+
<option value="Seychelles">Seychelles</option>
|
235 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
236 |
+
<option value="Singapore">Singapore</option>
|
237 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
238 |
+
<option value="Slovakia">Slovakia</option>
|
239 |
+
<option value="Slovenia">Slovenia</option>
|
240 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
241 |
+
<option value="Somalia">Somalia</option>
|
242 |
+
<option value="South Africa">South Africa</option>
|
243 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
244 |
+
<option value="South Sudan">South Sudan</option>
|
245 |
+
<option value="Spain">Spain</option>
|
246 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
247 |
+
<option value="Sudan">Sudan</option>
|
248 |
+
<option value="Suriname">Suriname</option>
|
249 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
250 |
+
<option value="Swaziland">Swaziland</option>
|
251 |
+
<option value="Sweden">Sweden</option>
|
252 |
+
<option value="Switzerland">Switzerland</option>
|
253 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
254 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
255 |
+
<option value="Tajikistan">Tajikistan</option>
|
256 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
257 |
+
<option value="Thailand">Thailand</option>
|
258 |
+
<option value="Timor-leste">Timor-leste</option>
|
259 |
+
<option value="Togo">Togo</option>
|
260 |
+
<option value="Tokelau">Tokelau</option>
|
261 |
+
<option value="Tonga">Tonga</option>
|
262 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
263 |
+
<option value="Tunisia">Tunisia</option>
|
264 |
+
<option value="Turkey">Turkey</option>
|
265 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
266 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
267 |
+
<option value="Tuvalu">Tuvalu</option>
|
268 |
+
<option value="Uganda">Uganda</option>
|
269 |
+
<option value="Ukraine">Ukraine</option>
|
270 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
271 |
+
<option value="United Kingdom">United Kingdom</option>
|
272 |
+
<option value="United States">United States</option>
|
273 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
274 |
+
<option value="Uruguay">Uruguay</option>
|
275 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
276 |
+
<option value="Vanuatu">Vanuatu</option>
|
277 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
278 |
+
<option value="Viet Nam">Viet Nam</option>
|
279 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
280 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
281 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
282 |
+
<option value="Western Sahara">Western Sahara</option>
|
283 |
+
<option value="Yemen">Yemen</option>
|
284 |
+
<option value="Zambia">Zambia</option>
|
285 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
286 |
+
</select>
|
287 |
+
</div>
|
288 |
+
<div>
|
289 |
+
<em>Into This</em>
|
290 |
+
<select data-placeholder="Choose a Country..." class="chosen-select" tabindex="2">
|
291 |
+
<option value=""></option>
|
292 |
+
<option value="United States">United States</option>
|
293 |
+
<option value="United Kingdom">United Kingdom</option>
|
294 |
+
<option value="Afghanistan">Afghanistan</option>
|
295 |
+
<option value="Aland Islands">Aland Islands</option>
|
296 |
+
<option value="Albania">Albania</option>
|
297 |
+
<option value="Algeria">Algeria</option>
|
298 |
+
<option value="American Samoa">American Samoa</option>
|
299 |
+
<option value="Andorra">Andorra</option>
|
300 |
+
<option value="Angola">Angola</option>
|
301 |
+
<option value="Anguilla">Anguilla</option>
|
302 |
+
<option value="Antarctica">Antarctica</option>
|
303 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
304 |
+
<option value="Argentina">Argentina</option>
|
305 |
+
<option value="Armenia">Armenia</option>
|
306 |
+
<option value="Aruba">Aruba</option>
|
307 |
+
<option value="Australia">Australia</option>
|
308 |
+
<option value="Austria">Austria</option>
|
309 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
310 |
+
<option value="Bahamas">Bahamas</option>
|
311 |
+
<option value="Bahrain">Bahrain</option>
|
312 |
+
<option value="Bangladesh">Bangladesh</option>
|
313 |
+
<option value="Barbados">Barbados</option>
|
314 |
+
<option value="Belarus">Belarus</option>
|
315 |
+
<option value="Belgium">Belgium</option>
|
316 |
+
<option value="Belize">Belize</option>
|
317 |
+
<option value="Benin">Benin</option>
|
318 |
+
<option value="Bermuda">Bermuda</option>
|
319 |
+
<option value="Bhutan">Bhutan</option>
|
320 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
321 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
322 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
323 |
+
<option value="Botswana">Botswana</option>
|
324 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
325 |
+
<option value="Brazil">Brazil</option>
|
326 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
327 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
328 |
+
<option value="Bulgaria">Bulgaria</option>
|
329 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
330 |
+
<option value="Burundi">Burundi</option>
|
331 |
+
<option value="Cambodia">Cambodia</option>
|
332 |
+
<option value="Cameroon">Cameroon</option>
|
333 |
+
<option value="Canada">Canada</option>
|
334 |
+
<option value="Cape Verde">Cape Verde</option>
|
335 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
336 |
+
<option value="Central African Republic">Central African Republic</option>
|
337 |
+
<option value="Chad">Chad</option>
|
338 |
+
<option value="Chile">Chile</option>
|
339 |
+
<option value="China">China</option>
|
340 |
+
<option value="Christmas Island">Christmas Island</option>
|
341 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
342 |
+
<option value="Colombia">Colombia</option>
|
343 |
+
<option value="Comoros">Comoros</option>
|
344 |
+
<option value="Congo">Congo</option>
|
345 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
346 |
+
<option value="Cook Islands">Cook Islands</option>
|
347 |
+
<option value="Costa Rica">Costa Rica</option>
|
348 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
349 |
+
<option value="Croatia">Croatia</option>
|
350 |
+
<option value="Cuba">Cuba</option>
|
351 |
+
<option value="Curacao">Curacao</option>
|
352 |
+
<option value="Cyprus">Cyprus</option>
|
353 |
+
<option value="Czech Republic">Czech Republic</option>
|
354 |
+
<option value="Denmark">Denmark</option>
|
355 |
+
<option value="Djibouti">Djibouti</option>
|
356 |
+
<option value="Dominica">Dominica</option>
|
357 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
358 |
+
<option value="Ecuador">Ecuador</option>
|
359 |
+
<option value="Egypt">Egypt</option>
|
360 |
+
<option value="El Salvador">El Salvador</option>
|
361 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
362 |
+
<option value="Eritrea">Eritrea</option>
|
363 |
+
<option value="Estonia">Estonia</option>
|
364 |
+
<option value="Ethiopia">Ethiopia</option>
|
365 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
366 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
367 |
+
<option value="Fiji">Fiji</option>
|
368 |
+
<option value="Finland">Finland</option>
|
369 |
+
<option value="France">France</option>
|
370 |
+
<option value="French Guiana">French Guiana</option>
|
371 |
+
<option value="French Polynesia">French Polynesia</option>
|
372 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
373 |
+
<option value="Gabon">Gabon</option>
|
374 |
+
<option value="Gambia">Gambia</option>
|
375 |
+
<option value="Georgia">Georgia</option>
|
376 |
+
<option value="Germany">Germany</option>
|
377 |
+
<option value="Ghana">Ghana</option>
|
378 |
+
<option value="Gibraltar">Gibraltar</option>
|
379 |
+
<option value="Greece">Greece</option>
|
380 |
+
<option value="Greenland">Greenland</option>
|
381 |
+
<option value="Grenada">Grenada</option>
|
382 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
383 |
+
<option value="Guam">Guam</option>
|
384 |
+
<option value="Guatemala">Guatemala</option>
|
385 |
+
<option value="Guernsey">Guernsey</option>
|
386 |
+
<option value="Guinea">Guinea</option>
|
387 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
388 |
+
<option value="Guyana">Guyana</option>
|
389 |
+
<option value="Haiti">Haiti</option>
|
390 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
391 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
392 |
+
<option value="Honduras">Honduras</option>
|
393 |
+
<option value="Hong Kong">Hong Kong</option>
|
394 |
+
<option value="Hungary">Hungary</option>
|
395 |
+
<option value="Iceland">Iceland</option>
|
396 |
+
<option value="India">India</option>
|
397 |
+
<option value="Indonesia">Indonesia</option>
|
398 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
399 |
+
<option value="Iraq">Iraq</option>
|
400 |
+
<option value="Ireland">Ireland</option>
|
401 |
+
<option value="Isle of Man">Isle of Man</option>
|
402 |
+
<option value="Israel">Israel</option>
|
403 |
+
<option value="Italy">Italy</option>
|
404 |
+
<option value="Jamaica">Jamaica</option>
|
405 |
+
<option value="Japan">Japan</option>
|
406 |
+
<option value="Jersey">Jersey</option>
|
407 |
+
<option value="Jordan">Jordan</option>
|
408 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
409 |
+
<option value="Kenya">Kenya</option>
|
410 |
+
<option value="Kiribati">Kiribati</option>
|
411 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
412 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
413 |
+
<option value="Kuwait">Kuwait</option>
|
414 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
415 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
416 |
+
<option value="Latvia">Latvia</option>
|
417 |
+
<option value="Lebanon">Lebanon</option>
|
418 |
+
<option value="Lesotho">Lesotho</option>
|
419 |
+
<option value="Liberia">Liberia</option>
|
420 |
+
<option value="Libya">Libya</option>
|
421 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
422 |
+
<option value="Lithuania">Lithuania</option>
|
423 |
+
<option value="Luxembourg">Luxembourg</option>
|
424 |
+
<option value="Macao">Macao</option>
|
425 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
426 |
+
<option value="Madagascar">Madagascar</option>
|
427 |
+
<option value="Malawi">Malawi</option>
|
428 |
+
<option value="Malaysia">Malaysia</option>
|
429 |
+
<option value="Maldives">Maldives</option>
|
430 |
+
<option value="Mali">Mali</option>
|
431 |
+
<option value="Malta">Malta</option>
|
432 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
433 |
+
<option value="Martinique">Martinique</option>
|
434 |
+
<option value="Mauritania">Mauritania</option>
|
435 |
+
<option value="Mauritius">Mauritius</option>
|
436 |
+
<option value="Mayotte">Mayotte</option>
|
437 |
+
<option value="Mexico">Mexico</option>
|
438 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
439 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
440 |
+
<option value="Monaco">Monaco</option>
|
441 |
+
<option value="Mongolia">Mongolia</option>
|
442 |
+
<option value="Montenegro">Montenegro</option>
|
443 |
+
<option value="Montserrat">Montserrat</option>
|
444 |
+
<option value="Morocco">Morocco</option>
|
445 |
+
<option value="Mozambique">Mozambique</option>
|
446 |
+
<option value="Myanmar">Myanmar</option>
|
447 |
+
<option value="Namibia">Namibia</option>
|
448 |
+
<option value="Nauru">Nauru</option>
|
449 |
+
<option value="Nepal">Nepal</option>
|
450 |
+
<option value="Netherlands">Netherlands</option>
|
451 |
+
<option value="New Caledonia">New Caledonia</option>
|
452 |
+
<option value="New Zealand">New Zealand</option>
|
453 |
+
<option value="Nicaragua">Nicaragua</option>
|
454 |
+
<option value="Niger">Niger</option>
|
455 |
+
<option value="Nigeria">Nigeria</option>
|
456 |
+
<option value="Niue">Niue</option>
|
457 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
458 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
459 |
+
<option value="Norway">Norway</option>
|
460 |
+
<option value="Oman">Oman</option>
|
461 |
+
<option value="Pakistan">Pakistan</option>
|
462 |
+
<option value="Palau">Palau</option>
|
463 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
464 |
+
<option value="Panama">Panama</option>
|
465 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
466 |
+
<option value="Paraguay">Paraguay</option>
|
467 |
+
<option value="Peru">Peru</option>
|
468 |
+
<option value="Philippines">Philippines</option>
|
469 |
+
<option value="Pitcairn">Pitcairn</option>
|
470 |
+
<option value="Poland">Poland</option>
|
471 |
+
<option value="Portugal">Portugal</option>
|
472 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
473 |
+
<option value="Qatar">Qatar</option>
|
474 |
+
<option value="Reunion">Reunion</option>
|
475 |
+
<option value="Romania">Romania</option>
|
476 |
+
<option value="Russian Federation">Russian Federation</option>
|
477 |
+
<option value="Rwanda">Rwanda</option>
|
478 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
479 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
480 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
481 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
482 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
483 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
484 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
485 |
+
<option value="Samoa">Samoa</option>
|
486 |
+
<option value="San Marino">San Marino</option>
|
487 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
488 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
489 |
+
<option value="Senegal">Senegal</option>
|
490 |
+
<option value="Serbia">Serbia</option>
|
491 |
+
<option value="Seychelles">Seychelles</option>
|
492 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
493 |
+
<option value="Singapore">Singapore</option>
|
494 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
495 |
+
<option value="Slovakia">Slovakia</option>
|
496 |
+
<option value="Slovenia">Slovenia</option>
|
497 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
498 |
+
<option value="Somalia">Somalia</option>
|
499 |
+
<option value="South Africa">South Africa</option>
|
500 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
501 |
+
<option value="South Sudan">South Sudan</option>
|
502 |
+
<option value="Spain">Spain</option>
|
503 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
504 |
+
<option value="Sudan">Sudan</option>
|
505 |
+
<option value="Suriname">Suriname</option>
|
506 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
507 |
+
<option value="Swaziland">Swaziland</option>
|
508 |
+
<option value="Sweden">Sweden</option>
|
509 |
+
<option value="Switzerland">Switzerland</option>
|
510 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
511 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
512 |
+
<option value="Tajikistan">Tajikistan</option>
|
513 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
514 |
+
<option value="Thailand">Thailand</option>
|
515 |
+
<option value="Timor-leste">Timor-leste</option>
|
516 |
+
<option value="Togo">Togo</option>
|
517 |
+
<option value="Tokelau">Tokelau</option>
|
518 |
+
<option value="Tonga">Tonga</option>
|
519 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
520 |
+
<option value="Tunisia">Tunisia</option>
|
521 |
+
<option value="Turkey">Turkey</option>
|
522 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
523 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
524 |
+
<option value="Tuvalu">Tuvalu</option>
|
525 |
+
<option value="Uganda">Uganda</option>
|
526 |
+
<option value="Ukraine">Ukraine</option>
|
527 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
528 |
+
<option value="United Kingdom">United Kingdom</option>
|
529 |
+
<option value="United States">United States</option>
|
530 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
531 |
+
<option value="Uruguay">Uruguay</option>
|
532 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
533 |
+
<option value="Vanuatu">Vanuatu</option>
|
534 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
535 |
+
<option value="Viet Nam">Viet Nam</option>
|
536 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
537 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
538 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
539 |
+
<option value="Western Sahara">Western Sahara</option>
|
540 |
+
<option value="Yemen">Yemen</option>
|
541 |
+
<option value="Zambia">Zambia</option>
|
542 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
543 |
+
</select>
|
544 |
+
</div>
|
545 |
+
</div>
|
546 |
+
|
547 |
+
<h2><a name="multiple-select" class="anchor" href="#multiple-select">Multiple Select</a></h2>
|
548 |
+
<div class="side-by-side clearfix">
|
549 |
+
<div>
|
550 |
+
<em>Turns This</em>
|
551 |
+
<select data-placeholder="Choose a Country..." class="select" multiple tabindex="3">
|
552 |
+
<option value=""></option>
|
553 |
+
<option value="United States">United States</option>
|
554 |
+
<option value="United Kingdom">United Kingdom</option>
|
555 |
+
<option value="Afghanistan">Afghanistan</option>
|
556 |
+
<option value="Aland Islands">Aland Islands</option>
|
557 |
+
<option value="Albania">Albania</option>
|
558 |
+
<option value="Algeria">Algeria</option>
|
559 |
+
<option value="American Samoa">American Samoa</option>
|
560 |
+
<option value="Andorra">Andorra</option>
|
561 |
+
<option value="Angola">Angola</option>
|
562 |
+
<option value="Anguilla">Anguilla</option>
|
563 |
+
<option value="Antarctica">Antarctica</option>
|
564 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
565 |
+
<option value="Argentina">Argentina</option>
|
566 |
+
<option value="Armenia">Armenia</option>
|
567 |
+
<option value="Aruba">Aruba</option>
|
568 |
+
<option value="Australia">Australia</option>
|
569 |
+
<option value="Austria">Austria</option>
|
570 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
571 |
+
<option value="Bahamas">Bahamas</option>
|
572 |
+
<option value="Bahrain">Bahrain</option>
|
573 |
+
<option value="Bangladesh">Bangladesh</option>
|
574 |
+
<option value="Barbados">Barbados</option>
|
575 |
+
<option value="Belarus">Belarus</option>
|
576 |
+
<option value="Belgium">Belgium</option>
|
577 |
+
<option value="Belize">Belize</option>
|
578 |
+
<option value="Benin">Benin</option>
|
579 |
+
<option value="Bermuda">Bermuda</option>
|
580 |
+
<option value="Bhutan">Bhutan</option>
|
581 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
582 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
583 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
584 |
+
<option value="Botswana">Botswana</option>
|
585 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
586 |
+
<option value="Brazil">Brazil</option>
|
587 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
588 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
589 |
+
<option value="Bulgaria">Bulgaria</option>
|
590 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
591 |
+
<option value="Burundi">Burundi</option>
|
592 |
+
<option value="Cambodia">Cambodia</option>
|
593 |
+
<option value="Cameroon">Cameroon</option>
|
594 |
+
<option value="Canada">Canada</option>
|
595 |
+
<option value="Cape Verde">Cape Verde</option>
|
596 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
597 |
+
<option value="Central African Republic">Central African Republic</option>
|
598 |
+
<option value="Chad">Chad</option>
|
599 |
+
<option value="Chile">Chile</option>
|
600 |
+
<option value="China">China</option>
|
601 |
+
<option value="Christmas Island">Christmas Island</option>
|
602 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
603 |
+
<option value="Colombia">Colombia</option>
|
604 |
+
<option value="Comoros">Comoros</option>
|
605 |
+
<option value="Congo">Congo</option>
|
606 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
607 |
+
<option value="Cook Islands">Cook Islands</option>
|
608 |
+
<option value="Costa Rica">Costa Rica</option>
|
609 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
610 |
+
<option value="Croatia">Croatia</option>
|
611 |
+
<option value="Cuba">Cuba</option>
|
612 |
+
<option value="Curacao">Curacao</option>
|
613 |
+
<option value="Cyprus">Cyprus</option>
|
614 |
+
<option value="Czech Republic">Czech Republic</option>
|
615 |
+
<option value="Denmark">Denmark</option>
|
616 |
+
<option value="Djibouti">Djibouti</option>
|
617 |
+
<option value="Dominica">Dominica</option>
|
618 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
619 |
+
<option value="Ecuador">Ecuador</option>
|
620 |
+
<option value="Egypt">Egypt</option>
|
621 |
+
<option value="El Salvador">El Salvador</option>
|
622 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
623 |
+
<option value="Eritrea">Eritrea</option>
|
624 |
+
<option value="Estonia">Estonia</option>
|
625 |
+
<option value="Ethiopia">Ethiopia</option>
|
626 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
627 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
628 |
+
<option value="Fiji">Fiji</option>
|
629 |
+
<option value="Finland">Finland</option>
|
630 |
+
<option value="France">France</option>
|
631 |
+
<option value="French Guiana">French Guiana</option>
|
632 |
+
<option value="French Polynesia">French Polynesia</option>
|
633 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
634 |
+
<option value="Gabon">Gabon</option>
|
635 |
+
<option value="Gambia">Gambia</option>
|
636 |
+
<option value="Georgia">Georgia</option>
|
637 |
+
<option value="Germany">Germany</option>
|
638 |
+
<option value="Ghana">Ghana</option>
|
639 |
+
<option value="Gibraltar">Gibraltar</option>
|
640 |
+
<option value="Greece">Greece</option>
|
641 |
+
<option value="Greenland">Greenland</option>
|
642 |
+
<option value="Grenada">Grenada</option>
|
643 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
644 |
+
<option value="Guam">Guam</option>
|
645 |
+
<option value="Guatemala">Guatemala</option>
|
646 |
+
<option value="Guernsey">Guernsey</option>
|
647 |
+
<option value="Guinea">Guinea</option>
|
648 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
649 |
+
<option value="Guyana">Guyana</option>
|
650 |
+
<option value="Haiti">Haiti</option>
|
651 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
652 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
653 |
+
<option value="Honduras">Honduras</option>
|
654 |
+
<option value="Hong Kong">Hong Kong</option>
|
655 |
+
<option value="Hungary">Hungary</option>
|
656 |
+
<option value="Iceland">Iceland</option>
|
657 |
+
<option value="India">India</option>
|
658 |
+
<option value="Indonesia">Indonesia</option>
|
659 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
660 |
+
<option value="Iraq">Iraq</option>
|
661 |
+
<option value="Ireland">Ireland</option>
|
662 |
+
<option value="Isle of Man">Isle of Man</option>
|
663 |
+
<option value="Israel">Israel</option>
|
664 |
+
<option value="Italy">Italy</option>
|
665 |
+
<option value="Jamaica">Jamaica</option>
|
666 |
+
<option value="Japan">Japan</option>
|
667 |
+
<option value="Jersey">Jersey</option>
|
668 |
+
<option value="Jordan">Jordan</option>
|
669 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
670 |
+
<option value="Kenya">Kenya</option>
|
671 |
+
<option value="Kiribati">Kiribati</option>
|
672 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
673 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
674 |
+
<option value="Kuwait">Kuwait</option>
|
675 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
676 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
677 |
+
<option value="Latvia">Latvia</option>
|
678 |
+
<option value="Lebanon">Lebanon</option>
|
679 |
+
<option value="Lesotho">Lesotho</option>
|
680 |
+
<option value="Liberia">Liberia</option>
|
681 |
+
<option value="Libya">Libya</option>
|
682 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
683 |
+
<option value="Lithuania">Lithuania</option>
|
684 |
+
<option value="Luxembourg">Luxembourg</option>
|
685 |
+
<option value="Macao">Macao</option>
|
686 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
687 |
+
<option value="Madagascar">Madagascar</option>
|
688 |
+
<option value="Malawi">Malawi</option>
|
689 |
+
<option value="Malaysia">Malaysia</option>
|
690 |
+
<option value="Maldives">Maldives</option>
|
691 |
+
<option value="Mali">Mali</option>
|
692 |
+
<option value="Malta">Malta</option>
|
693 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
694 |
+
<option value="Martinique">Martinique</option>
|
695 |
+
<option value="Mauritania">Mauritania</option>
|
696 |
+
<option value="Mauritius">Mauritius</option>
|
697 |
+
<option value="Mayotte">Mayotte</option>
|
698 |
+
<option value="Mexico">Mexico</option>
|
699 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
700 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
701 |
+
<option value="Monaco">Monaco</option>
|
702 |
+
<option value="Mongolia">Mongolia</option>
|
703 |
+
<option value="Montenegro">Montenegro</option>
|
704 |
+
<option value="Montserrat">Montserrat</option>
|
705 |
+
<option value="Morocco">Morocco</option>
|
706 |
+
<option value="Mozambique">Mozambique</option>
|
707 |
+
<option value="Myanmar">Myanmar</option>
|
708 |
+
<option value="Namibia">Namibia</option>
|
709 |
+
<option value="Nauru">Nauru</option>
|
710 |
+
<option value="Nepal">Nepal</option>
|
711 |
+
<option value="Netherlands">Netherlands</option>
|
712 |
+
<option value="New Caledonia">New Caledonia</option>
|
713 |
+
<option value="New Zealand">New Zealand</option>
|
714 |
+
<option value="Nicaragua">Nicaragua</option>
|
715 |
+
<option value="Niger">Niger</option>
|
716 |
+
<option value="Nigeria">Nigeria</option>
|
717 |
+
<option value="Niue">Niue</option>
|
718 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
719 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
720 |
+
<option value="Norway">Norway</option>
|
721 |
+
<option value="Oman">Oman</option>
|
722 |
+
<option value="Pakistan">Pakistan</option>
|
723 |
+
<option value="Palau">Palau</option>
|
724 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
725 |
+
<option value="Panama">Panama</option>
|
726 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
727 |
+
<option value="Paraguay">Paraguay</option>
|
728 |
+
<option value="Peru">Peru</option>
|
729 |
+
<option value="Philippines">Philippines</option>
|
730 |
+
<option value="Pitcairn">Pitcairn</option>
|
731 |
+
<option value="Poland">Poland</option>
|
732 |
+
<option value="Portugal">Portugal</option>
|
733 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
734 |
+
<option value="Qatar">Qatar</option>
|
735 |
+
<option value="Reunion">Reunion</option>
|
736 |
+
<option value="Romania">Romania</option>
|
737 |
+
<option value="Russian Federation">Russian Federation</option>
|
738 |
+
<option value="Rwanda">Rwanda</option>
|
739 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
740 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
741 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
742 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
743 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
744 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
745 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
746 |
+
<option value="Samoa">Samoa</option>
|
747 |
+
<option value="San Marino">San Marino</option>
|
748 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
749 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
750 |
+
<option value="Senegal">Senegal</option>
|
751 |
+
<option value="Serbia">Serbia</option>
|
752 |
+
<option value="Seychelles">Seychelles</option>
|
753 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
754 |
+
<option value="Singapore">Singapore</option>
|
755 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
756 |
+
<option value="Slovakia">Slovakia</option>
|
757 |
+
<option value="Slovenia">Slovenia</option>
|
758 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
759 |
+
<option value="Somalia">Somalia</option>
|
760 |
+
<option value="South Africa">South Africa</option>
|
761 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
762 |
+
<option value="South Sudan">South Sudan</option>
|
763 |
+
<option value="Spain">Spain</option>
|
764 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
765 |
+
<option value="Sudan">Sudan</option>
|
766 |
+
<option value="Suriname">Suriname</option>
|
767 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
768 |
+
<option value="Swaziland">Swaziland</option>
|
769 |
+
<option value="Sweden">Sweden</option>
|
770 |
+
<option value="Switzerland">Switzerland</option>
|
771 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
772 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
773 |
+
<option value="Tajikistan">Tajikistan</option>
|
774 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
775 |
+
<option value="Thailand">Thailand</option>
|
776 |
+
<option value="Timor-leste">Timor-leste</option>
|
777 |
+
<option value="Togo">Togo</option>
|
778 |
+
<option value="Tokelau">Tokelau</option>
|
779 |
+
<option value="Tonga">Tonga</option>
|
780 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
781 |
+
<option value="Tunisia">Tunisia</option>
|
782 |
+
<option value="Turkey">Turkey</option>
|
783 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
784 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
785 |
+
<option value="Tuvalu">Tuvalu</option>
|
786 |
+
<option value="Uganda">Uganda</option>
|
787 |
+
<option value="Ukraine">Ukraine</option>
|
788 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
789 |
+
<option value="United Kingdom">United Kingdom</option>
|
790 |
+
<option value="United States">United States</option>
|
791 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
792 |
+
<option value="Uruguay">Uruguay</option>
|
793 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
794 |
+
<option value="Vanuatu">Vanuatu</option>
|
795 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
796 |
+
<option value="Viet Nam">Viet Nam</option>
|
797 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
798 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
799 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
800 |
+
<option value="Western Sahara">Western Sahara</option>
|
801 |
+
<option value="Yemen">Yemen</option>
|
802 |
+
<option value="Zambia">Zambia</option>
|
803 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
804 |
+
</select>
|
805 |
+
</div>
|
806 |
+
<div>
|
807 |
+
<em>Into This</em>
|
808 |
+
<select data-placeholder="Choose a Country..." class="chosen-select" multiple tabindex="4">
|
809 |
+
<option value=""></option>
|
810 |
+
<option value="United States">United States</option>
|
811 |
+
<option value="United Kingdom">United Kingdom</option>
|
812 |
+
<option value="Afghanistan">Afghanistan</option>
|
813 |
+
<option value="Aland Islands">Aland Islands</option>
|
814 |
+
<option value="Albania">Albania</option>
|
815 |
+
<option value="Algeria">Algeria</option>
|
816 |
+
<option value="American Samoa">American Samoa</option>
|
817 |
+
<option value="Andorra">Andorra</option>
|
818 |
+
<option value="Angola">Angola</option>
|
819 |
+
<option value="Anguilla">Anguilla</option>
|
820 |
+
<option value="Antarctica">Antarctica</option>
|
821 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
822 |
+
<option value="Argentina">Argentina</option>
|
823 |
+
<option value="Armenia">Armenia</option>
|
824 |
+
<option value="Aruba">Aruba</option>
|
825 |
+
<option value="Australia">Australia</option>
|
826 |
+
<option value="Austria">Austria</option>
|
827 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
828 |
+
<option value="Bahamas">Bahamas</option>
|
829 |
+
<option value="Bahrain">Bahrain</option>
|
830 |
+
<option value="Bangladesh">Bangladesh</option>
|
831 |
+
<option value="Barbados">Barbados</option>
|
832 |
+
<option value="Belarus">Belarus</option>
|
833 |
+
<option value="Belgium">Belgium</option>
|
834 |
+
<option value="Belize">Belize</option>
|
835 |
+
<option value="Benin">Benin</option>
|
836 |
+
<option value="Bermuda">Bermuda</option>
|
837 |
+
<option value="Bhutan">Bhutan</option>
|
838 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
839 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
840 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
841 |
+
<option value="Botswana">Botswana</option>
|
842 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
843 |
+
<option value="Brazil">Brazil</option>
|
844 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
845 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
846 |
+
<option value="Bulgaria">Bulgaria</option>
|
847 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
848 |
+
<option value="Burundi">Burundi</option>
|
849 |
+
<option value="Cambodia">Cambodia</option>
|
850 |
+
<option value="Cameroon">Cameroon</option>
|
851 |
+
<option value="Canada">Canada</option>
|
852 |
+
<option value="Cape Verde">Cape Verde</option>
|
853 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
854 |
+
<option value="Central African Republic">Central African Republic</option>
|
855 |
+
<option value="Chad">Chad</option>
|
856 |
+
<option value="Chile">Chile</option>
|
857 |
+
<option value="China">China</option>
|
858 |
+
<option value="Christmas Island">Christmas Island</option>
|
859 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
860 |
+
<option value="Colombia">Colombia</option>
|
861 |
+
<option value="Comoros">Comoros</option>
|
862 |
+
<option value="Congo">Congo</option>
|
863 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
864 |
+
<option value="Cook Islands">Cook Islands</option>
|
865 |
+
<option value="Costa Rica">Costa Rica</option>
|
866 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
867 |
+
<option value="Croatia">Croatia</option>
|
868 |
+
<option value="Cuba">Cuba</option>
|
869 |
+
<option value="Curacao">Curacao</option>
|
870 |
+
<option value="Cyprus">Cyprus</option>
|
871 |
+
<option value="Czech Republic">Czech Republic</option>
|
872 |
+
<option value="Denmark">Denmark</option>
|
873 |
+
<option value="Djibouti">Djibouti</option>
|
874 |
+
<option value="Dominica">Dominica</option>
|
875 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
876 |
+
<option value="Ecuador">Ecuador</option>
|
877 |
+
<option value="Egypt">Egypt</option>
|
878 |
+
<option value="El Salvador">El Salvador</option>
|
879 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
880 |
+
<option value="Eritrea">Eritrea</option>
|
881 |
+
<option value="Estonia">Estonia</option>
|
882 |
+
<option value="Ethiopia">Ethiopia</option>
|
883 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
884 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
885 |
+
<option value="Fiji">Fiji</option>
|
886 |
+
<option value="Finland">Finland</option>
|
887 |
+
<option value="France">France</option>
|
888 |
+
<option value="French Guiana">French Guiana</option>
|
889 |
+
<option value="French Polynesia">French Polynesia</option>
|
890 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
891 |
+
<option value="Gabon">Gabon</option>
|
892 |
+
<option value="Gambia">Gambia</option>
|
893 |
+
<option value="Georgia">Georgia</option>
|
894 |
+
<option value="Germany">Germany</option>
|
895 |
+
<option value="Ghana">Ghana</option>
|
896 |
+
<option value="Gibraltar">Gibraltar</option>
|
897 |
+
<option value="Greece">Greece</option>
|
898 |
+
<option value="Greenland">Greenland</option>
|
899 |
+
<option value="Grenada">Grenada</option>
|
900 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
901 |
+
<option value="Guam">Guam</option>
|
902 |
+
<option value="Guatemala">Guatemala</option>
|
903 |
+
<option value="Guernsey">Guernsey</option>
|
904 |
+
<option value="Guinea">Guinea</option>
|
905 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
906 |
+
<option value="Guyana">Guyana</option>
|
907 |
+
<option value="Haiti">Haiti</option>
|
908 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
909 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
910 |
+
<option value="Honduras">Honduras</option>
|
911 |
+
<option value="Hong Kong">Hong Kong</option>
|
912 |
+
<option value="Hungary">Hungary</option>
|
913 |
+
<option value="Iceland">Iceland</option>
|
914 |
+
<option value="India">India</option>
|
915 |
+
<option value="Indonesia">Indonesia</option>
|
916 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
917 |
+
<option value="Iraq">Iraq</option>
|
918 |
+
<option value="Ireland">Ireland</option>
|
919 |
+
<option value="Isle of Man">Isle of Man</option>
|
920 |
+
<option value="Israel">Israel</option>
|
921 |
+
<option value="Italy">Italy</option>
|
922 |
+
<option value="Jamaica">Jamaica</option>
|
923 |
+
<option value="Japan">Japan</option>
|
924 |
+
<option value="Jersey">Jersey</option>
|
925 |
+
<option value="Jordan">Jordan</option>
|
926 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
927 |
+
<option value="Kenya">Kenya</option>
|
928 |
+
<option value="Kiribati">Kiribati</option>
|
929 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
930 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
931 |
+
<option value="Kuwait">Kuwait</option>
|
932 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
933 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
934 |
+
<option value="Latvia">Latvia</option>
|
935 |
+
<option value="Lebanon">Lebanon</option>
|
936 |
+
<option value="Lesotho">Lesotho</option>
|
937 |
+
<option value="Liberia">Liberia</option>
|
938 |
+
<option value="Libya">Libya</option>
|
939 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
940 |
+
<option value="Lithuania">Lithuania</option>
|
941 |
+
<option value="Luxembourg">Luxembourg</option>
|
942 |
+
<option value="Macao">Macao</option>
|
943 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
944 |
+
<option value="Madagascar">Madagascar</option>
|
945 |
+
<option value="Malawi">Malawi</option>
|
946 |
+
<option value="Malaysia">Malaysia</option>
|
947 |
+
<option value="Maldives">Maldives</option>
|
948 |
+
<option value="Mali">Mali</option>
|
949 |
+
<option value="Malta">Malta</option>
|
950 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
951 |
+
<option value="Martinique">Martinique</option>
|
952 |
+
<option value="Mauritania">Mauritania</option>
|
953 |
+
<option value="Mauritius">Mauritius</option>
|
954 |
+
<option value="Mayotte">Mayotte</option>
|
955 |
+
<option value="Mexico">Mexico</option>
|
956 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
957 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
958 |
+
<option value="Monaco">Monaco</option>
|
959 |
+
<option value="Mongolia">Mongolia</option>
|
960 |
+
<option value="Montenegro">Montenegro</option>
|
961 |
+
<option value="Montserrat">Montserrat</option>
|
962 |
+
<option value="Morocco">Morocco</option>
|
963 |
+
<option value="Mozambique">Mozambique</option>
|
964 |
+
<option value="Myanmar">Myanmar</option>
|
965 |
+
<option value="Namibia">Namibia</option>
|
966 |
+
<option value="Nauru">Nauru</option>
|
967 |
+
<option value="Nepal">Nepal</option>
|
968 |
+
<option value="Netherlands">Netherlands</option>
|
969 |
+
<option value="New Caledonia">New Caledonia</option>
|
970 |
+
<option value="New Zealand">New Zealand</option>
|
971 |
+
<option value="Nicaragua">Nicaragua</option>
|
972 |
+
<option value="Niger">Niger</option>
|
973 |
+
<option value="Nigeria">Nigeria</option>
|
974 |
+
<option value="Niue">Niue</option>
|
975 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
976 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
977 |
+
<option value="Norway">Norway</option>
|
978 |
+
<option value="Oman">Oman</option>
|
979 |
+
<option value="Pakistan">Pakistan</option>
|
980 |
+
<option value="Palau">Palau</option>
|
981 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
982 |
+
<option value="Panama">Panama</option>
|
983 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
984 |
+
<option value="Paraguay">Paraguay</option>
|
985 |
+
<option value="Peru">Peru</option>
|
986 |
+
<option value="Philippines">Philippines</option>
|
987 |
+
<option value="Pitcairn">Pitcairn</option>
|
988 |
+
<option value="Poland">Poland</option>
|
989 |
+
<option value="Portugal">Portugal</option>
|
990 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
991 |
+
<option value="Qatar">Qatar</option>
|
992 |
+
<option value="Reunion">Reunion</option>
|
993 |
+
<option value="Romania">Romania</option>
|
994 |
+
<option value="Russian Federation">Russian Federation</option>
|
995 |
+
<option value="Rwanda">Rwanda</option>
|
996 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
997 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
998 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
999 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
1000 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
1001 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
1002 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
1003 |
+
<option value="Samoa">Samoa</option>
|
1004 |
+
<option value="San Marino">San Marino</option>
|
1005 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
1006 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
1007 |
+
<option value="Senegal">Senegal</option>
|
1008 |
+
<option value="Serbia">Serbia</option>
|
1009 |
+
<option value="Seychelles">Seychelles</option>
|
1010 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
1011 |
+
<option value="Singapore">Singapore</option>
|
1012 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
1013 |
+
<option value="Slovakia">Slovakia</option>
|
1014 |
+
<option value="Slovenia">Slovenia</option>
|
1015 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
1016 |
+
<option value="Somalia">Somalia</option>
|
1017 |
+
<option value="South Africa">South Africa</option>
|
1018 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
1019 |
+
<option value="South Sudan">South Sudan</option>
|
1020 |
+
<option value="Spain">Spain</option>
|
1021 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
1022 |
+
<option value="Sudan">Sudan</option>
|
1023 |
+
<option value="Suriname">Suriname</option>
|
1024 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
1025 |
+
<option value="Swaziland">Swaziland</option>
|
1026 |
+
<option value="Sweden">Sweden</option>
|
1027 |
+
<option value="Switzerland">Switzerland</option>
|
1028 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
1029 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
1030 |
+
<option value="Tajikistan">Tajikistan</option>
|
1031 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
1032 |
+
<option value="Thailand">Thailand</option>
|
1033 |
+
<option value="Timor-leste">Timor-leste</option>
|
1034 |
+
<option value="Togo">Togo</option>
|
1035 |
+
<option value="Tokelau">Tokelau</option>
|
1036 |
+
<option value="Tonga">Tonga</option>
|
1037 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
1038 |
+
<option value="Tunisia">Tunisia</option>
|
1039 |
+
<option value="Turkey">Turkey</option>
|
1040 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
1041 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
1042 |
+
<option value="Tuvalu">Tuvalu</option>
|
1043 |
+
<option value="Uganda">Uganda</option>
|
1044 |
+
<option value="Ukraine">Ukraine</option>
|
1045 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
1046 |
+
<option value="United Kingdom">United Kingdom</option>
|
1047 |
+
<option value="United States">United States</option>
|
1048 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
1049 |
+
<option value="Uruguay">Uruguay</option>
|
1050 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
1051 |
+
<option value="Vanuatu">Vanuatu</option>
|
1052 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
1053 |
+
<option value="Viet Nam">Viet Nam</option>
|
1054 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
1055 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
1056 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
1057 |
+
<option value="Western Sahara">Western Sahara</option>
|
1058 |
+
<option value="Yemen">Yemen</option>
|
1059 |
+
<option value="Zambia">Zambia</option>
|
1060 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
1061 |
+
</select>
|
1062 |
+
</div>
|
1063 |
+
</div>
|
1064 |
+
|
1065 |
+
<h2><a name="optgroup-support" class="anchor" href="#optgroup-support"><optgroup> Support</a></h2>
|
1066 |
+
<div class="side-by-side clearfix">
|
1067 |
+
<div>
|
1068 |
+
<em>Single Select with Groups</em>
|
1069 |
+
<select data-placeholder="Your Favorite Football Team" class="chosen-select" tabindex="5">
|
1070 |
+
<option value=""></option>
|
1071 |
+
<optgroup label="NFC EAST">
|
1072 |
+
<option>Dallas Cowboys</option>
|
1073 |
+
<option>New York Giants</option>
|
1074 |
+
<option>Philadelphia Eagles</option>
|
1075 |
+
<option>Washington Redskins</option>
|
1076 |
+
</optgroup>
|
1077 |
+
<optgroup label="NFC NORTH">
|
1078 |
+
<option>Chicago Bears</option>
|
1079 |
+
<option>Detroit Lions</option>
|
1080 |
+
<option>Green Bay Packers</option>
|
1081 |
+
<option>Minnesota Vikings</option>
|
1082 |
+
</optgroup>
|
1083 |
+
<optgroup label="NFC SOUTH">
|
1084 |
+
<option>Atlanta Falcons</option>
|
1085 |
+
<option>Carolina Panthers</option>
|
1086 |
+
<option>New Orleans Saints</option>
|
1087 |
+
<option>Tampa Bay Buccaneers</option>
|
1088 |
+
</optgroup>
|
1089 |
+
<optgroup label="NFC WEST">
|
1090 |
+
<option>Arizona Cardinals</option>
|
1091 |
+
<option>St. Louis Rams</option>
|
1092 |
+
<option>San Francisco 49ers</option>
|
1093 |
+
<option>Seattle Seahawks</option>
|
1094 |
+
</optgroup>
|
1095 |
+
<optgroup label="AFC EAST">
|
1096 |
+
<option>Buffalo Bills</option>
|
1097 |
+
<option>Miami Dolphins</option>
|
1098 |
+
<option>New England Patriots</option>
|
1099 |
+
<option>New York Jets</option>
|
1100 |
+
</optgroup>
|
1101 |
+
<optgroup label="AFC NORTH">
|
1102 |
+
<option>Baltimore Ravens</option>
|
1103 |
+
<option>Cincinnati Bengals</option>
|
1104 |
+
<option>Cleveland Browns</option>
|
1105 |
+
<option>Pittsburgh Steelers</option>
|
1106 |
+
</optgroup>
|
1107 |
+
<optgroup label="AFC SOUTH">
|
1108 |
+
<option>Houston Texans</option>
|
1109 |
+
<option>Indianapolis Colts</option>
|
1110 |
+
<option>Jacksonville Jaguars</option>
|
1111 |
+
<option>Tennessee Titans</option>
|
1112 |
+
</optgroup>
|
1113 |
+
<optgroup label="AFC WEST">
|
1114 |
+
<option>Denver Broncos</option>
|
1115 |
+
<option>Kansas City Chiefs</option>
|
1116 |
+
<option>Oakland Raiders</option>
|
1117 |
+
<option>San Diego Chargers</option>
|
1118 |
+
</optgroup>
|
1119 |
+
</select>
|
1120 |
+
</div>
|
1121 |
+
<div>
|
1122 |
+
<em>Multiple Select with Groups</em>
|
1123 |
+
<select data-placeholder="Your Favorite Football Team" class="chosen-select" multiple tabindex="6">
|
1124 |
+
<option value=""></option>
|
1125 |
+
<optgroup label="NFC EAST">
|
1126 |
+
<option>Dallas Cowboys</option>
|
1127 |
+
<option>New York Giants</option>
|
1128 |
+
<option>Philadelphia Eagles</option>
|
1129 |
+
<option>Washington Redskins</option>
|
1130 |
+
</optgroup>
|
1131 |
+
<optgroup label="NFC NORTH">
|
1132 |
+
<option>Chicago Bears</option>
|
1133 |
+
<option>Detroit Lions</option>
|
1134 |
+
<option>Green Bay Packers</option>
|
1135 |
+
<option>Minnesota Vikings</option>
|
1136 |
+
</optgroup>
|
1137 |
+
<optgroup label="NFC SOUTH">
|
1138 |
+
<option>Atlanta Falcons</option>
|
1139 |
+
<option>Carolina Panthers</option>
|
1140 |
+
<option>New Orleans Saints</option>
|
1141 |
+
<option>Tampa Bay Buccaneers</option>
|
1142 |
+
</optgroup>
|
1143 |
+
<optgroup label="NFC WEST">
|
1144 |
+
<option>Arizona Cardinals</option>
|
1145 |
+
<option>St. Louis Rams</option>
|
1146 |
+
<option>San Francisco 49ers</option>
|
1147 |
+
<option>Seattle Seahawks</option>
|
1148 |
+
</optgroup>
|
1149 |
+
<optgroup label="AFC EAST">
|
1150 |
+
<option>Buffalo Bills</option>
|
1151 |
+
<option>Miami Dolphins</option>
|
1152 |
+
<option>New England Patriots</option>
|
1153 |
+
<option>New York Jets</option>
|
1154 |
+
</optgroup>
|
1155 |
+
<optgroup label="AFC NORTH">
|
1156 |
+
<option>Baltimore Ravens</option>
|
1157 |
+
<option>Cincinnati Bengals</option>
|
1158 |
+
<option>Cleveland Browns</option>
|
1159 |
+
<option>Pittsburgh Steelers</option>
|
1160 |
+
</optgroup>
|
1161 |
+
<optgroup label="AFC SOUTH">
|
1162 |
+
<option>Houston Texans</option>
|
1163 |
+
<option>Indianapolis Colts</option>
|
1164 |
+
<option>Jacksonville Jaguars</option>
|
1165 |
+
<option>Tennessee Titans</option>
|
1166 |
+
</optgroup>
|
1167 |
+
<optgroup label="AFC WEST">
|
1168 |
+
<option>Denver Broncos</option>
|
1169 |
+
<option>Kansas City Chiefs</option>
|
1170 |
+
<option>Oakland Raiders</option>
|
1171 |
+
<option>San Diego Chargers</option>
|
1172 |
+
</optgroup>
|
1173 |
+
</select>
|
1174 |
+
</div>
|
1175 |
+
</div>
|
1176 |
+
|
1177 |
+
<h2><a name="selected-and-disabled-support" class="anchor" href="#selected-and-disabled-support">Selected and Disabled Support</a></h2>
|
1178 |
+
<div class="side-by-side clearfix">
|
1179 |
+
<p>Chosen automatically highlights selected options and removes disabled options.</p>
|
1180 |
+
<div>
|
1181 |
+
<em>Single Select</em>
|
1182 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select" tabindex="7">
|
1183 |
+
<option value=""></option>
|
1184 |
+
<option>American Black Bear</option>
|
1185 |
+
<option>Asiatic Black Bear</option>
|
1186 |
+
<option>Brown Bear</option>
|
1187 |
+
<option>Giant Panda</option>
|
1188 |
+
<option selected>Sloth Bear</option>
|
1189 |
+
<option disabled>Sun Bear</option>
|
1190 |
+
<option>Polar Bear</option>
|
1191 |
+
<option disabled>Spectacled Bear</option>
|
1192 |
+
</select>
|
1193 |
+
</div>
|
1194 |
+
<div>
|
1195 |
+
<em>Multiple Select</em>
|
1196 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="8">
|
1197 |
+
<option value=""></option>
|
1198 |
+
<option>American Black Bear</option>
|
1199 |
+
<option>Asiatic Black Bear</option>
|
1200 |
+
<option>Brown Bear</option>
|
1201 |
+
<option>Giant Panda</option>
|
1202 |
+
<option selected>Sloth Bear</option>
|
1203 |
+
<option disabled>Sun Bear</option>
|
1204 |
+
<option selected>Polar Bear</option>
|
1205 |
+
<option disabled>Spectacled Bear</option>
|
1206 |
+
</select>
|
1207 |
+
</div>
|
1208 |
+
</div>
|
1209 |
+
|
1210 |
+
<h2><a name="hide-search-on-single-select" class="anchor" href="#hide-search-on-single-select">Hide Search on Single Select</a></h2>
|
1211 |
+
<div class="side-by-side clearfix">
|
1212 |
+
<p>The <code>disable_search_threshold</code> option can be specified to hide the search input on single selects if there are <i>n</i> or fewer options.</p>
|
1213 |
+
<pre><code class="language-javascript"> new Chosen($("chosen_select_field"),{disable_search_threshold: 10}); </code></pre>
|
1214 |
+
<p></p>
|
1215 |
+
<div>
|
1216 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-no-single" tabindex="9">
|
1217 |
+
<option value=""></option>
|
1218 |
+
<option>American Black Bear</option>
|
1219 |
+
<option>Asiatic Black Bear</option>
|
1220 |
+
<option>Brown Bear</option>
|
1221 |
+
<option>Giant Panda</option>
|
1222 |
+
<option selected disabled>Sloth Bear</option>
|
1223 |
+
<option disabled>Sun Bear</option>
|
1224 |
+
<option selected>Paddington Bear</option>
|
1225 |
+
<option selected>Polar Bear</option>
|
1226 |
+
<option disabled>Spectacled Bear</option>
|
1227 |
+
</select>
|
1228 |
+
</div>
|
1229 |
+
</div>
|
1230 |
+
|
1231 |
+
<h2><a name="default-text-support" class="anchor" href="#default-text-support">Default Text Support</a></h2>
|
1232 |
+
<div class="side-by-side clearfix">
|
1233 |
+
<p>Chosen automatically sets the default field text ("Choose a country...") by reading the select element's data-placeholder value. If no data-placeholder value is present, it will default to "Select an Option" or "Select Some Options" depending on whether the select is single or multiple. You can change these elements in the plugin js file as you see fit.</p>
|
1234 |
+
<pre><code class="language-markup"><select <strong>data-placeholder="Choose a country..."</strong> multiple class="chosen-select"></code></pre>
|
1235 |
+
<p><strong>Note:</strong> on single selects, the first element is assumed to be selected by the browser. To take advantage of the default text support, you will need to include a blank option as the first element of your select list.</p>
|
1236 |
+
</div>
|
1237 |
+
|
1238 |
+
<h2><a name="no-results-text-support" class="anchor" href="#no-results-text-support">No Results Text Support</a></h2>
|
1239 |
+
<div class="side-by-side clearfix">
|
1240 |
+
<p>Setting the "No results" search text is as easy as passing an option when you create Chosen:</p>
|
1241 |
+
<pre><code class="language-javascript">new Chosen($("chosen_select_field"),{no_results_text: "Oops, nothing found!"}); </code></pre>
|
1242 |
+
|
1243 |
+
<div>
|
1244 |
+
<em>Single Select</em>
|
1245 |
+
<select data-placeholder="Type 'C' to view" class="chosen-select-no-results" tabindex="10">
|
1246 |
+
<option value=""></option>
|
1247 |
+
<option>American Black Bear</option>
|
1248 |
+
<option>Asiatic Black Bear</option>
|
1249 |
+
<option>Brown Bear</option>
|
1250 |
+
<option>Giant Panda</option>
|
1251 |
+
<option>Sloth Bear</option>
|
1252 |
+
<option>Sun Bear</option>
|
1253 |
+
<option>Polar Bear</option>
|
1254 |
+
<option>Spectacled Bear</option>
|
1255 |
+
</select>
|
1256 |
+
</div>
|
1257 |
+
<div>
|
1258 |
+
<em>Multiple Select</em>
|
1259 |
+
<select data-placeholder="Type 'C' to view" multiple class="chosen-select-no-results" tabindex="11">
|
1260 |
+
<option value=""></option>
|
1261 |
+
<option>American Black Bear</option>
|
1262 |
+
<option>Asiatic Black Bear</option>
|
1263 |
+
<option>Brown Bear</option>
|
1264 |
+
<option>Giant Panda</option>
|
1265 |
+
<option>Sloth Bear</option>
|
1266 |
+
<option>Sun Bear</option>
|
1267 |
+
<option>Polar Bear</option>
|
1268 |
+
<option>Spectacled Bear</option>
|
1269 |
+
</select>
|
1270 |
+
</div>
|
1271 |
+
</div>
|
1272 |
+
|
1273 |
+
<h2><a name="limit-selected-options-in-multiselect" class="anchor" href="#limit-selected-options-in-multiselect">Limit Selected Options in Multiselect</a></h2>
|
1274 |
+
<div class="side-by-side clearfix">
|
1275 |
+
<p>You can easily limit how many options the user can select:</p>
|
1276 |
+
<pre><code class="language-javascript">new Chosen($("chosen_select_field"),{max_selected_options: 5}); </code></pre>
|
1277 |
+
<p>If you try to select another option with limit reached <code>chosen:maxselected</code> event is triggered:</p>
|
1278 |
+
<pre><code class="language-javascript">$("chosen_select_field").observe("chosen:maxselected", function(evt) { ... }); </code></pre>
|
1279 |
+
</div>
|
1280 |
+
|
1281 |
+
<h2><a name="allow-deselect-on-single-selects" class="anchor" href="#allow-deselect-on-single-selects">Allow Deselect on Single Selects</a></h2>
|
1282 |
+
<div class="side-by-side clearfix">
|
1283 |
+
<p>When a single select box isn't a required field, you can set <code class="language-javascript">allow_single_deselect: true</code> and Chosen will add a UI element for option deselection. This will only work if the first option has blank text.</p>
|
1284 |
+
<div class="side-by-side clearfix">
|
1285 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-deselect" tabindex="12">
|
1286 |
+
<option value=""></option>
|
1287 |
+
<option>American Black Bear</option>
|
1288 |
+
<option>Asiatic Black Bear</option>
|
1289 |
+
<option>Brown Bear</option>
|
1290 |
+
<option>Giant Panda</option>
|
1291 |
+
<option selected>Sloth Bear</option>
|
1292 |
+
<option>Sun Bear</option>
|
1293 |
+
<option>Polar Bear</option>
|
1294 |
+
<option>Spectacled Bear</option>
|
1295 |
+
</select>
|
1296 |
+
</div>
|
1297 |
+
</div>
|
1298 |
+
|
1299 |
+
<h2><a name="right-to-left-support" class="anchor" href="#right-to-left-support">Right-to-Left Support</a></h2>
|
1300 |
+
<div class="side-by-side clearfix">
|
1301 |
+
<p>You can set right-to-left text by setting <code class="language-javascript">rtl: true</code></p>
|
1302 |
+
<pre><code class="language-javascript"> $(".chosen-select").chosen({rtl: true}); </code></pre>
|
1303 |
+
<div>
|
1304 |
+
<em>Single Right-to-Left Select</em>
|
1305 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-rtl" tabindex="13">
|
1306 |
+
<option value=""></option>
|
1307 |
+
<option>American Black Bear</option>
|
1308 |
+
<option>Asiatic Black Bear</option>
|
1309 |
+
<option>Brown Bear</option>
|
1310 |
+
<option>Giant Panda</option>
|
1311 |
+
<option selected>Sloth Bear</option>
|
1312 |
+
<option>Polar Bear</option>
|
1313 |
+
</select>
|
1314 |
+
</div>
|
1315 |
+
<div>
|
1316 |
+
<em>Multiple Right-to-Left Select</em>
|
1317 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select-rtl" tabindex="14">
|
1318 |
+
<option value=""></option>
|
1319 |
+
<option>American Black Bear</option>
|
1320 |
+
<option>Asiatic Black Bear</option>
|
1321 |
+
<option>Brown Bear</option>
|
1322 |
+
<option>Giant Panda</option>
|
1323 |
+
<option selected>Sloth Bear</option>
|
1324 |
+
<option selected>Polar Bear</option>
|
1325 |
+
</select>
|
1326 |
+
</div>
|
1327 |
+
</div>
|
1328 |
+
|
1329 |
+
<h2><a name="change-update-events" class="anchor" href="#change-update-events">Observing, Updating, and Destroying Chosen</a></h2>
|
1330 |
+
<div class="side-by-side clearfix">
|
1331 |
+
<ul>
|
1332 |
+
<li>
|
1333 |
+
<h3>Observing Form Field Changes</h3>
|
1334 |
+
<p>When working with form fields, you often want to perform some behavior after a value has been selected or deselected. Whenever a user selects a field in Chosen, it triggers a "change" event on the original form field. That lets you do something like this:</p>
|
1335 |
+
<pre><code class="language-javascript">$("#form_field").chosen().change( … );</code></pre>
|
1336 |
+
<p><strong>Note:</strong> Prototype doesn't offer support for triggering standard browser events. <a href="https://github.com/kangax/protolicious/blob/5b56fdafcd7d7662c9d648534225039b2e78e371/event.simulate.js">Event.simulate</a> is required to trigger the change event when using the Prototype version.</p>
|
1337 |
+
</li>
|
1338 |
+
<li>
|
1339 |
+
<h3>Updating Chosen Dynamically</h3>
|
1340 |
+
<p>If you need to update the options in your select field and want Chosen to pick up the changes, you'll need to trigger the "chosen:updated" event on the field. Chosen will re-build itself based on the updated content.</p>
|
1341 |
+
<pre><code class="language-javascript">Event.fire($("form_field"), "chosen:updated");</code></pre>
|
1342 |
+
</li>
|
1343 |
+
<li>
|
1344 |
+
<h3>Destroying Chosen</h3>
|
1345 |
+
<p>To destroy Chosen and revert back to the native select, call <code class="language-javascript">destroy</code> on the Chosen instance:</p>
|
1346 |
+
<pre><code class="language-javascript">chosen = new Chosen($("form_field"));
|
1347 |
+
|
1348 |
+
// ...later
|
1349 |
+
chosen.destroy();</code></pre>
|
1350 |
+
</li>
|
1351 |
+
</ul>
|
1352 |
+
</div>
|
1353 |
+
|
1354 |
+
<h2><a name="custom-width-support" class="anchor" href="#custom-width-support">Custom Width Support</a></h2>
|
1355 |
+
<div class="side-by-side clearfix">
|
1356 |
+
<p>Using a custom width with Chosen is as easy as passing an option when you create Chosen:</p>
|
1357 |
+
<pre><code class="language-javascript">new Chosen($("chosen_select_field"),{width: "95%"}); </code></pre>
|
1358 |
+
<div>
|
1359 |
+
<em>Single Select</em>
|
1360 |
+
<select data-placeholder="Your Favorite Types of Bear" class="chosen-select-width" tabindex="15">
|
1361 |
+
<option value=""></option>
|
1362 |
+
<option selected>American Black Bear</option>
|
1363 |
+
<option>Asiatic Black Bear</option>
|
1364 |
+
<option>Brown Bear</option>
|
1365 |
+
<option>Giant Panda</option>
|
1366 |
+
<option>Sloth Bear</option>
|
1367 |
+
<option>Sun Bear</option>
|
1368 |
+
<option>Polar Bear</option>
|
1369 |
+
<option>Spectacled Bear</option>
|
1370 |
+
</select>
|
1371 |
+
</div>
|
1372 |
+
<div>
|
1373 |
+
<em>Multiple Select</em>
|
1374 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select-width" tabindex="16">
|
1375 |
+
<option value=""></option>
|
1376 |
+
<option>American Black Bear</option>
|
1377 |
+
<option>Asiatic Black Bear</option>
|
1378 |
+
<option>Brown Bear</option>
|
1379 |
+
<option selected>Giant Panda</option>
|
1380 |
+
<option>Sloth Bear</option>
|
1381 |
+
<option>Sun Bear</option>
|
1382 |
+
<option>Polar Bear</option>
|
1383 |
+
<option>Spectacled Bear</option>
|
1384 |
+
</select>
|
1385 |
+
</div>
|
1386 |
+
</div>
|
1387 |
+
|
1388 |
+
<h2><a name="labels-work-too" class="anchor" href="#labels-work-too">Labels work, too</a></h2>
|
1389 |
+
<div class="side-by-side clearfix">
|
1390 |
+
<p>Use labels just like you would a standard select</p>
|
1391 |
+
<p></p>
|
1392 |
+
<div>
|
1393 |
+
<em><label for="single-label-example">Click to Highlight Single Select</label></em>
|
1394 |
+
<select data-placeholder="Your Favorite Types of Bear" class="chosen-select" tabindex="17" id="single-label-example">
|
1395 |
+
<option value=""></option>
|
1396 |
+
<option selected>American Black Bear</option>
|
1397 |
+
<option>Asiatic Black Bear</option>
|
1398 |
+
<option>Brown Bear</option>
|
1399 |
+
<option>Giant Panda</option>
|
1400 |
+
<option>Sloth Bear</option>
|
1401 |
+
<option>Sun Bear</option>
|
1402 |
+
<option>Polar Bear</option>
|
1403 |
+
<option>Spectacled Bear</option>
|
1404 |
+
</select>
|
1405 |
+
</div>
|
1406 |
+
<div>
|
1407 |
+
<em><label for="multiple-label-example">Click to Highlight Multiple Select</label></em>
|
1408 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="18" id="multiple-label-example">
|
1409 |
+
<option value=""></option>
|
1410 |
+
<option>American Black Bear</option>
|
1411 |
+
<option>Asiatic Black Bear</option>
|
1412 |
+
<option>Brown Bear</option>
|
1413 |
+
<option selected>Giant Panda</option>
|
1414 |
+
<option>Sloth Bear</option>
|
1415 |
+
<option>Sun Bear</option>
|
1416 |
+
<option>Polar Bear</option>
|
1417 |
+
<option>Spectacled Bear</option>
|
1418 |
+
</select>
|
1419 |
+
</div>
|
1420 |
+
</div>
|
1421 |
+
|
1422 |
+
<h2><a name="setup" class="anchor" href="#setup">Setup</a></h2>
|
1423 |
+
<p>Using Chosen is easy as can be.</p>
|
1424 |
+
<ol>
|
1425 |
+
<li><a href="https://github.com/harvesthq/chosen/releases">Download</a> the plugin and copy the chosen files to your app.</li>
|
1426 |
+
<li>Activate the plugin by creating a new instance of Chosen: New Chosen(<em>some_form_field</em>,<em>some_options</em>);</li>
|
1427 |
+
<li><a href="http://www.youtube.com/watch?feature=player_detailpage&v=UkSPUDpe0U8#t=11s">Disco</a>.</li>
|
1428 |
+
</ol>
|
1429 |
+
|
1430 |
+
<h2><a name="faqs" class="anchor" href="#faqs">FAQs</a></h2>
|
1431 |
+
<ul class="faqs">
|
1432 |
+
<li>
|
1433 |
+
<h3>Do you have all the available options documented somewhere?</h3>
|
1434 |
+
<p>Yes! You can find them on <a href="options.html">the options page</a>.</p>
|
1435 |
+
</li>
|
1436 |
+
<li>
|
1437 |
+
<h3>Something doesn't work. Can you fix it?</h3>
|
1438 |
+
<p>Yes! Please report all issues using the <a href="http://github.com/harvesthq/chosen/issues">GitHub issue tracking tool</a>. Please include the plugin version (jQuery or Prototype), browser and OS. The more information provided, the easier it is to fix a problem.</p>
|
1439 |
+
</li>
|
1440 |
+
<li>
|
1441 |
+
<h3>What browsers are supported?</h3>
|
1442 |
+
<p>All modern desktop browsers are supported (Firefox, Chrome, Safari and IE9). Legacy support for IE8 is also enabled. Chosen is disabled on iPhone, iPod Touch, and Android mobile devices (<a href="https://github.com/harvesthq/chosen/pull/1388">more information</a>).</p>
|
1443 |
+
</li>
|
1444 |
+
</ul>
|
1445 |
+
|
1446 |
+
<h2><a name="credits" class="anchor" href="#credits">Credits</a></h2>
|
1447 |
+
|
1448 |
+
<ul class="credits">
|
1449 |
+
<li>Concept and development by <a href="http://patrickfiller.com">Patrick Filler</a> for <a href="https://getharvest.com">Harvest</a>.</li>
|
1450 |
+
<li>Design and CSS by <a href="http://matthewlettini.com">Matthew Lettini</a>.</li>
|
1451 |
+
<li>Repository maintained by <a href="https://github.com/pfiller">@pfiller</a>, <a href="https://github.com/kenearley">@kenearley</a>, <a href="https://github.com/stof">@stof</a>, <a href="https://github.com/koenpunt">@koenpunt</a>, and <a href="https://github.com/tjschuck">@tjschuck</a>.</li>
|
1452 |
+
<li>Chosen includes <a href="https://github.com/harvesthq/chosen/contributors">contributions by many fine folks</a>.</li>
|
1453 |
+
</ul>
|
1454 |
+
|
1455 |
+
<footer>
|
1456 |
+
© 2011–2016 <a href="http://www.getharvest.com/">Harvest</a>. Chosen is licensed under the <a href="https://github.com/harvesthq/chosen/blob/master/LICENSE.md">MIT license</a>.
|
1457 |
+
</footer>
|
1458 |
+
|
1459 |
+
</div>
|
1460 |
+
</div>
|
1461 |
+
<script src="docsupport/prototype-1.7.0.0.js" type="text/javascript"></script>
|
1462 |
+
<script src="chosen.proto.js" type="text/javascript"></script>
|
1463 |
+
<script src="docsupport/prism.js" type="text/javascript" charset="utf-8"></script>
|
1464 |
+
<script src="docsupport/init.proto.js" type="text/javascript" charset="utf-8"></script>
|
1465 |
+
<div class="oss-bar">
|
1466 |
+
<ul>
|
1467 |
+
<li><a class="fork" href="https://github.com/harvesthq/chosen">Fork on Github</a></li>
|
1468 |
+
<li><a class="harvest" href="http://www.getharvest.com/">Built by Harvest</a></li>
|
1469 |
+
</ul>
|
1470 |
+
</div>
|
1471 |
+
</body>
|
1472 |
+
</html>
|
common/libs/chosen-v1.8.3/docsupport/chosen.png
ADDED
Binary file
|
common/libs/chosen-v1.8.3/docsupport/init.js
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var config = {
|
2 |
+
'.chosen-select' : { create_option: true, skip_no_results: true },
|
3 |
+
'.chosen-select-deselect' : { allow_single_deselect: true },
|
4 |
+
'.chosen-select-no-single' : { disable_search_threshold: 10 },
|
5 |
+
'.chosen-select-no-results': { no_results_text: 'Oops, nothing found!' },
|
6 |
+
'.chosen-select-rtl' : { rtl: true },
|
7 |
+
'.chosen-select-width' : { width: '95%' }
|
8 |
+
}
|
9 |
+
for (var selector in config) {
|
10 |
+
$(selector).chosen(config[selector]);
|
11 |
+
}
|
common/libs/chosen-v1.8.3/docsupport/init.proto.js
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
document.observe('dom:loaded', function(evt) {
|
2 |
+
var config = {
|
3 |
+
'.chosen-select' : { create_option: true, skip_no_results: true },
|
4 |
+
'.chosen-select-deselect' : { allow_single_deselect: true },
|
5 |
+
'.chosen-select-no-single' : { disable_search_threshold: 10 },
|
6 |
+
'.chosen-select-no-results': { no_results_text: 'Oops, nothing found!' },
|
7 |
+
'.chosen-select-rtl' : { rtl: true },
|
8 |
+
'.chosen-select-width' : { width: '95%' }
|
9 |
+
}
|
10 |
+
|
11 |
+
for (var selector in config) {
|
12 |
+
$$(selector).each(function(element) {
|
13 |
+
new Chosen(element, config[selector]);
|
14 |
+
});
|
15 |
+
}
|
16 |
+
});
|
common/libs/chosen-v1.8.3/docsupport/jquery-1.12.4.min.js
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
|
2 |
+
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;
|
3 |
+
}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
|
4 |
+
marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({
|
5 |
+
padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
|
common/libs/chosen-v1.8.3/docsupport/jquery-3.2.1.min.js
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
|
2 |
+
!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),
|
3 |
+
a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,"display"),ia([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=W.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:"number"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=W.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),
|
4 |
+
null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Tb.pop()||r.expando+"_"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ub.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,"$1"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});
|
common/libs/chosen-v1.8.3/docsupport/oss-credit.png
ADDED
Binary file
|
common/libs/chosen-v1.8.3/docsupport/prism.css
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* okaidia theme for JavaScript, CSS and HTML
|
3 |
+
* Loosely based on Monokai textmate theme by http://www.monokai.nl/
|
4 |
+
* @author ocodia
|
5 |
+
*/
|
6 |
+
|
7 |
+
code[class*="language-"],
|
8 |
+
pre[class*="language-"] {
|
9 |
+
color: #f8f8f2;
|
10 |
+
text-shadow: 0 1px rgba(0,0,0,0.3);
|
11 |
+
font-family: Consolas, Monaco, 'Andale Mono', monospace;
|
12 |
+
direction: ltr;
|
13 |
+
text-align: left;
|
14 |
+
white-space: pre;
|
15 |
+
word-spacing: normal;
|
16 |
+
|
17 |
+
-moz-tab-size: 4;
|
18 |
+
-o-tab-size: 4;
|
19 |
+
tab-size: 4;
|
20 |
+
|
21 |
+
-webkit-hyphens: none;
|
22 |
+
-moz-hyphens: none;
|
23 |
+
-ms-hyphens: none;
|
24 |
+
hyphens: none;
|
25 |
+
}
|
26 |
+
|
27 |
+
/* Code blocks */
|
28 |
+
pre[class*="language-"] {
|
29 |
+
padding: 1em;
|
30 |
+
margin: .5em 0;
|
31 |
+
overflow: auto;
|
32 |
+
border-radius: 0.3em;
|
33 |
+
}
|
34 |
+
|
35 |
+
:not(pre) > code[class*="language-"],
|
36 |
+
pre[class*="language-"] {
|
37 |
+
background: #272822;
|
38 |
+
}
|
39 |
+
|
40 |
+
/* Inline code */
|
41 |
+
:not(pre) > code[class*="language-"] {
|
42 |
+
padding: .1em;
|
43 |
+
border-radius: .3em;
|
44 |
+
}
|
45 |
+
|
46 |
+
.token.comment,
|
47 |
+
.token.prolog,
|
48 |
+
.token.doctype,
|
49 |
+
.token.cdata {
|
50 |
+
color: slategray;
|
51 |
+
}
|
52 |
+
|
53 |
+
.token.punctuation {
|
54 |
+
color: #f8f8f2;
|
55 |
+
}
|
56 |
+
|
57 |
+
.namespace {
|
58 |
+
opacity: .7;
|
59 |
+
}
|
60 |
+
|
61 |
+
.token.property,
|
62 |
+
.token.tag {
|
63 |
+
color: #f92672;
|
64 |
+
}
|
65 |
+
|
66 |
+
.token.boolean,
|
67 |
+
.token.number{
|
68 |
+
color: #ae81ff;
|
69 |
+
}
|
70 |
+
|
71 |
+
.token.selector,
|
72 |
+
.token.attr-name,
|
73 |
+
.token.string {
|
74 |
+
color: #a6e22e;
|
75 |
+
}
|
76 |
+
|
77 |
+
|
78 |
+
.token.operator,
|
79 |
+
.token.entity,
|
80 |
+
.token.url,
|
81 |
+
.language-css .token.string,
|
82 |
+
.style .token.string {
|
83 |
+
color: #f8f8f2;
|
84 |
+
}
|
85 |
+
|
86 |
+
.token.atrule,
|
87 |
+
.token.attr-value
|
88 |
+
{
|
89 |
+
color: #e6db74;
|
90 |
+
}
|
91 |
+
|
92 |
+
|
93 |
+
.token.keyword{
|
94 |
+
color: #66d9ef;
|
95 |
+
}
|
96 |
+
|
97 |
+
.token.regex,
|
98 |
+
.token.important {
|
99 |
+
color: #fd971f;
|
100 |
+
}
|
101 |
+
|
102 |
+
.token.important {
|
103 |
+
font-weight: bold;
|
104 |
+
}
|
105 |
+
|
106 |
+
.token.entity {
|
107 |
+
cursor: help;
|
108 |
+
}
|
common/libs/chosen-v1.8.3/docsupport/prism.js
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Prism: Lightweight, robust, elegant syntax highlighting
|
3 |
+
* MIT license http://www.opensource.org/licenses/mit-license.php/
|
4 |
+
* @author Lea Verou http://lea.verou.me
|
5 |
+
*/(function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.util.clone(e[i]));return r;case"Array":return e.slice()}return e}},languages:{extend:function(e,n){var r=t.util.clone(t.languages[e]);for(var i in n)r[i]=n[i];return r},insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);t.util.type(e)==="Object"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent;if(!f)return;f=f.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ");var l={element:r,language:o,grammar:u,code:f};t.hooks.run("before-highlight",l);if(i&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){l.highlightedCode=n.stringify(JSON.parse(e.data),o);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(l.element);t.hooks.run("after-highlight",l)};c.postMessage(JSON.stringify({language:l.language,code:l.code}))}else{l.highlightedCode=t.highlight(l.code,l.grammar,l.language);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(r);t.hooks.run("after-highlight",l)}},highlight:function(e,r,i){return n.stringify(t.tokenize(e,r),i)},tokenize:function(e,n,r){var i=t.Token,s=[e],o=n.rest;if(o){for(var u in o)n[u]=o[u];delete n.rest}e:for(var u in n){if(!n.hasOwnProperty(u)||!n[u])continue;var a=n[u],f=a.inside,l=!!a.lookbehind,c=0;a=a.pattern||a;for(var h=0;h<s.length;h++){var p=s[h];if(s.length>e.length)break e;if(p instanceof i)continue;a.lastIndex=0;var d=a.exec(p);if(d){l&&(c=d[1].length);var v=d.index-1+c,d=d[0].slice(c),m=d.length,g=v+m,y=p.slice(0,v+1),b=p.slice(g+1),w=[h,1];y&&w.push(y);var E=new i(u,f?t.tokenize(d,f):d);w.push(E);b&&w.push(b);Array.prototype.splice.apply(s,w)}}}return s},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e,r,i){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]")return e.map(function(t){return n.stringify(t,r,e)}).join("");var s={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};s.type=="comment"&&(s.attributes.spellcheck="true");t.hooks.run("wrap",s);var o="";for(var u in s.attributes)o+=u+'="'+(s.attributes[u]||"")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'" '+o+">"+s.content+"</"+s.tag+">"};if(!self.document){self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}})();;
|
6 |
+
Prism.languages.markup={comment:/<!--[\w\W]*?-->/g,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/&#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&/,"&"))});;
|
7 |
+
Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,ignore:/&(lt|gt|amp);/gi,punctuation:/[\{\};:]/g};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<|<)style[\w\W]*?(>|>)[\w\W]*?(<|<)\/style(>|>)/ig,inside:{tag:{pattern:/(<|<)style[\w\W]*?(>|>)|(<|<)\/style(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});;
|
8 |
+
Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/ig,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/ig,inside:{punctuation:/\(/}}, number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|(&){1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};;
|
9 |
+
Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|catch|finally|null|break|continue)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g});Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}});Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<|<)script[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig,inside:{tag:{pattern:/(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}});;
|
common/libs/chosen-v1.8.3/docsupport/prototype-1.7.0.0.js
ADDED
@@ -0,0 +1,6082 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Prototype JavaScript framework, version 1.7
|
2 |
+
* (c) 2005-2010 Sam Stephenson
|
3 |
+
*
|
4 |
+
* Prototype is freely distributable under the terms of an MIT-style license.
|
5 |
+
* For details, see the Prototype web site: http://www.prototypejs.org/
|
6 |
+
*
|
7 |
+
*--------------------------------------------------------------------------*/
|
8 |
+
|
9 |
+
var Prototype = {
|
10 |
+
|
11 |
+
Version: '1.7',
|
12 |
+
|
13 |
+
Browser: (function(){
|
14 |
+
var ua = navigator.userAgent;
|
15 |
+
var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
|
16 |
+
return {
|
17 |
+
IE: !!window.attachEvent && !isOpera,
|
18 |
+
Opera: isOpera,
|
19 |
+
WebKit: ua.indexOf('AppleWebKit/') > -1,
|
20 |
+
Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,
|
21 |
+
MobileSafari: /Apple.*Mobile/.test(ua)
|
22 |
+
}
|
23 |
+
})(),
|
24 |
+
|
25 |
+
BrowserFeatures: {
|
26 |
+
XPath: !!document.evaluate,
|
27 |
+
|
28 |
+
SelectorsAPI: !!document.querySelector,
|
29 |
+
|
30 |
+
ElementExtensions: (function() {
|
31 |
+
var constructor = window.Element || window.HTMLElement;
|
32 |
+
return !!(constructor && constructor.prototype);
|
33 |
+
})(),
|
34 |
+
SpecificElementExtensions: (function() {
|
35 |
+
if (typeof window.HTMLDivElement !== 'undefined')
|
36 |
+
return true;
|
37 |
+
|
38 |
+
var div = document.createElement('div'),
|
39 |
+
form = document.createElement('form'),
|
40 |
+
isSupported = false;
|
41 |
+
|
42 |
+
if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) {
|
43 |
+
isSupported = true;
|
44 |
+
}
|
45 |
+
|
46 |
+
div = form = null;
|
47 |
+
|
48 |
+
return isSupported;
|
49 |
+
})()
|
50 |
+
},
|
51 |
+
|
52 |
+
ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
|
53 |
+
JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
|
54 |
+
|
55 |
+
emptyFunction: function() { },
|
56 |
+
|
57 |
+
K: function(x) { return x }
|
58 |
+
};
|
59 |
+
|
60 |
+
if (Prototype.Browser.MobileSafari)
|
61 |
+
Prototype.BrowserFeatures.SpecificElementExtensions = false;
|
62 |
+
|
63 |
+
|
64 |
+
var Abstract = { };
|
65 |
+
|
66 |
+
|
67 |
+
var Try = {
|
68 |
+
these: function() {
|
69 |
+
var returnValue;
|
70 |
+
|
71 |
+
for (var i = 0, length = arguments.length; i < length; i++) {
|
72 |
+
var lambda = arguments[i];
|
73 |
+
try {
|
74 |
+
returnValue = lambda();
|
75 |
+
break;
|
76 |
+
} catch (e) { }
|
77 |
+
}
|
78 |
+
|
79 |
+
return returnValue;
|
80 |
+
}
|
81 |
+
};
|
82 |
+
|
83 |
+
/* Based on Alex Arnell's inheritance implementation. */
|
84 |
+
|
85 |
+
var Class = (function() {
|
86 |
+
|
87 |
+
var IS_DONTENUM_BUGGY = (function(){
|
88 |
+
for (var p in { toString: 1 }) {
|
89 |
+
if (p === 'toString') return false;
|
90 |
+
}
|
91 |
+
return true;
|
92 |
+
})();
|
93 |
+
|
94 |
+
function subclass() {};
|
95 |
+
function create() {
|
96 |
+
var parent = null, properties = $A(arguments);
|
97 |
+
if (Object.isFunction(properties[0]))
|
98 |
+
parent = properties.shift();
|
99 |
+
|
100 |
+
function klass() {
|
101 |
+
this.initialize.apply(this, arguments);
|
102 |
+
}
|
103 |
+
|
104 |
+
Object.extend(klass, Class.Methods);
|
105 |
+
klass.superclass = parent;
|
106 |
+
klass.subclasses = [];
|
107 |
+
|
108 |
+
if (parent) {
|
109 |
+
subclass.prototype = parent.prototype;
|
110 |
+
klass.prototype = new subclass;
|
111 |
+
parent.subclasses.push(klass);
|
112 |
+
}
|
113 |
+
|
114 |
+
for (var i = 0, length = properties.length; i < length; i++)
|
115 |
+
klass.addMethods(properties[i]);
|
116 |
+
|
117 |
+
if (!klass.prototype.initialize)
|
118 |
+
klass.prototype.initialize = Prototype.emptyFunction;
|
119 |
+
|
120 |
+
klass.prototype.constructor = klass;
|
121 |
+
return klass;
|
122 |
+
}
|
123 |
+
|
124 |
+
function addMethods(source) {
|
125 |
+
var ancestor = this.superclass && this.superclass.prototype,
|
126 |
+
properties = Object.keys(source);
|
127 |
+
|
128 |
+
if (IS_DONTENUM_BUGGY) {
|
129 |
+
if (source.toString != Object.prototype.toString)
|
130 |
+
properties.push("toString");
|
131 |
+
if (source.valueOf != Object.prototype.valueOf)
|
132 |
+
properties.push("valueOf");
|
133 |
+
}
|
134 |
+
|
135 |
+
for (var i = 0, length = properties.length; i < length; i++) {
|
136 |
+
var property = properties[i], value = source[property];
|
137 |
+
if (ancestor && Object.isFunction(value) &&
|
138 |
+
value.argumentNames()[0] == "$super") {
|
139 |
+
var method = value;
|
140 |
+
value = (function(m) {
|
141 |
+
return function() { return ancestor[m].apply(this, arguments); };
|
142 |
+
})(property).wrap(method);
|
143 |
+
|
144 |
+
value.valueOf = method.valueOf.bind(method);
|
145 |
+
value.toString = method.toString.bind(method);
|
146 |
+
}
|
147 |
+
this.prototype[property] = value;
|
148 |
+
}
|
149 |
+
|
150 |
+
return this;
|
151 |
+
}
|
152 |
+
|
153 |
+
return {
|
154 |
+
create: create,
|
155 |
+
Methods: {
|
156 |
+
addMethods: addMethods
|
157 |
+
}
|
158 |
+
};
|
159 |
+
})();
|
160 |
+
(function() {
|
161 |
+
|
162 |
+
var _toString = Object.prototype.toString,
|
163 |
+
NULL_TYPE = 'Null',
|
164 |
+
UNDEFINED_TYPE = 'Undefined',
|
165 |
+
BOOLEAN_TYPE = 'Boolean',
|
166 |
+
NUMBER_TYPE = 'Number',
|
167 |
+
STRING_TYPE = 'String',
|
168 |
+
OBJECT_TYPE = 'Object',
|
169 |
+
FUNCTION_CLASS = '[object Function]',
|
170 |
+
BOOLEAN_CLASS = '[object Boolean]',
|
171 |
+
NUMBER_CLASS = '[object Number]',
|
172 |
+
STRING_CLASS = '[object String]',
|
173 |
+
ARRAY_CLASS = '[object Array]',
|
174 |
+
DATE_CLASS = '[object Date]',
|
175 |
+
NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON &&
|
176 |
+
typeof JSON.stringify === 'function' &&
|
177 |
+
JSON.stringify(0) === '0' &&
|
178 |
+
typeof JSON.stringify(Prototype.K) === 'undefined';
|
179 |
+
|
180 |
+
function Type(o) {
|
181 |
+
switch(o) {
|
182 |
+
case null: return NULL_TYPE;
|
183 |
+
case (void 0): return UNDEFINED_TYPE;
|
184 |
+
}
|
185 |
+
var type = typeof o;
|
186 |
+
switch(type) {
|
187 |
+
case 'boolean': return BOOLEAN_TYPE;
|
188 |
+
case 'number': return NUMBER_TYPE;
|
189 |
+
case 'string': return STRING_TYPE;
|
190 |
+
}
|
191 |
+
return OBJECT_TYPE;
|
192 |
+
}
|
193 |
+
|
194 |
+
function extend(destination, source) {
|
195 |
+
for (var property in source)
|
196 |
+
destination[property] = source[property];
|
197 |
+
return destination;
|
198 |
+
}
|
199 |
+
|
200 |
+
function inspect(object) {
|
201 |
+
try {
|
202 |
+
if (isUndefined(object)) return 'undefined';
|
203 |
+
if (object === null) return 'null';
|
204 |
+
return object.inspect ? object.inspect() : String(object);
|
205 |
+
} catch (e) {
|
206 |
+
if (e instanceof RangeError) return '...';
|
207 |
+
throw e;
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
function toJSON(value) {
|
212 |
+
return Str('', { '': value }, []);
|
213 |
+
}
|
214 |
+
|
215 |
+
function Str(key, holder, stack) {
|
216 |
+
var value = holder[key],
|
217 |
+
type = typeof value;
|
218 |
+
|
219 |
+
if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') {
|
220 |
+
value = value.toJSON(key);
|
221 |
+
}
|
222 |
+
|
223 |
+
var _class = _toString.call(value);
|
224 |
+
|
225 |
+
switch (_class) {
|
226 |
+
case NUMBER_CLASS:
|
227 |
+
case BOOLEAN_CLASS:
|
228 |
+
case STRING_CLASS:
|
229 |
+
value = value.valueOf();
|
230 |
+
}
|
231 |
+
|
232 |
+
switch (value) {
|
233 |
+
case null: return 'null';
|
234 |
+
case true: return 'true';
|
235 |
+
case false: return 'false';
|
236 |
+
}
|
237 |
+
|
238 |
+
type = typeof value;
|
239 |
+
switch (type) {
|
240 |
+
case 'string':
|
241 |
+
return value.inspect(true);
|
242 |
+
case 'number':
|
243 |
+
return isFinite(value) ? String(value) : 'null';
|
244 |
+
case 'object':
|
245 |
+
|
246 |
+
for (var i = 0, length = stack.length; i < length; i++) {
|
247 |
+
if (stack[i] === value) { throw new TypeError(); }
|
248 |
+
}
|
249 |
+
stack.push(value);
|
250 |
+
|
251 |
+
var partial = [];
|
252 |
+
if (_class === ARRAY_CLASS) {
|
253 |
+
for (var i = 0, length = value.length; i < length; i++) {
|
254 |
+
var str = Str(i, value, stack);
|
255 |
+
partial.push(typeof str === 'undefined' ? 'null' : str);
|
256 |
+
}
|
257 |
+
partial = '[' + partial.join(',') + ']';
|
258 |
+
} else {
|
259 |
+
var keys = Object.keys(value);
|
260 |
+
for (var i = 0, length = keys.length; i < length; i++) {
|
261 |
+
var key = keys[i], str = Str(key, value, stack);
|
262 |
+
if (typeof str !== "undefined") {
|
263 |
+
partial.push(key.inspect(true)+ ':' + str);
|
264 |
+
}
|
265 |
+
}
|
266 |
+
partial = '{' + partial.join(',') + '}';
|
267 |
+
}
|
268 |
+
stack.pop();
|
269 |
+
return partial;
|
270 |
+
}
|
271 |
+
}
|
272 |
+
|
273 |
+
function stringify(object) {
|
274 |
+
return JSON.stringify(object);
|
275 |
+
}
|
276 |
+
|
277 |
+
function toQueryString(object) {
|
278 |
+
return $H(object).toQueryString();
|
279 |
+
}
|
280 |
+
|
281 |
+
function toHTML(object) {
|
282 |
+
return object && object.toHTML ? object.toHTML() : String.interpret(object);
|
283 |
+
}
|
284 |
+
|
285 |
+
function keys(object) {
|
286 |
+
if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); }
|
287 |
+
var results = [];
|
288 |
+
for (var property in object) {
|
289 |
+
if (object.hasOwnProperty(property)) {
|
290 |
+
results.push(property);
|
291 |
+
}
|
292 |
+
}
|
293 |
+
return results;
|
294 |
+
}
|
295 |
+
|
296 |
+
function values(object) {
|
297 |
+
var results = [];
|
298 |
+
for (var property in object)
|
299 |
+
results.push(object[property]);
|
300 |
+
return results;
|
301 |
+
}
|
302 |
+
|
303 |
+
function clone(object) {
|
304 |
+
return extend({ }, object);
|
305 |
+
}
|
306 |
+
|
307 |
+
function isElement(object) {
|
308 |
+
return !!(object && object.nodeType == 1);
|
309 |
+
}
|
310 |
+
|
311 |
+
function isArray(object) {
|
312 |
+
return _toString.call(object) === ARRAY_CLASS;
|
313 |
+
}
|
314 |
+
|
315 |
+
var hasNativeIsArray = (typeof Array.isArray == 'function')
|
316 |
+
&& Array.isArray([]) && !Array.isArray({});
|
317 |
+
|
318 |
+
if (hasNativeIsArray) {
|
319 |
+
isArray = Array.isArray;
|
320 |
+
}
|
321 |
+
|
322 |
+
function isHash(object) {
|
323 |
+
return object instanceof Hash;
|
324 |
+
}
|
325 |
+
|
326 |
+
function isFunction(object) {
|
327 |
+
return _toString.call(object) === FUNCTION_CLASS;
|
328 |
+
}
|
329 |
+
|
330 |
+
function isString(object) {
|
331 |
+
return _toString.call(object) === STRING_CLASS;
|
332 |
+
}
|
333 |
+
|
334 |
+
function isNumber(object) {
|
335 |
+
return _toString.call(object) === NUMBER_CLASS;
|
336 |
+
}
|
337 |
+
|
338 |
+
function isDate(object) {
|
339 |
+
return _toString.call(object) === DATE_CLASS;
|
340 |
+
}
|
341 |
+
|
342 |
+
function isUndefined(object) {
|
343 |
+
return typeof object === "undefined";
|
344 |
+
}
|
345 |
+
|
346 |
+
extend(Object, {
|
347 |
+
extend: extend,
|
348 |
+
inspect: inspect,
|
349 |
+
toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON,
|
350 |
+
toQueryString: toQueryString,
|
351 |
+
toHTML: toHTML,
|
352 |
+
keys: Object.keys || keys,
|
353 |
+
values: values,
|
354 |
+
clone: clone,
|
355 |
+
isElement: isElement,
|
356 |
+
isArray: isArray,
|
357 |
+
isHash: isHash,
|
358 |
+
isFunction: isFunction,
|
359 |
+
isString: isString,
|
360 |
+
isNumber: isNumber,
|
361 |
+
isDate: isDate,
|
362 |
+
isUndefined: isUndefined
|
363 |
+
});
|
364 |
+
})();
|
365 |
+
Object.extend(Function.prototype, (function() {
|
366 |
+
var slice = Array.prototype.slice;
|
367 |
+
|
368 |
+
function update(array, args) {
|
369 |
+
var arrayLength = array.length, length = args.length;
|
370 |
+
while (length--) array[arrayLength + length] = args[length];
|
371 |
+
return array;
|
372 |
+
}
|
373 |
+
|
374 |
+
function merge(array, args) {
|
375 |
+
array = slice.call(array, 0);
|
376 |
+
return update(array, args);
|
377 |
+
}
|
378 |
+
|
379 |
+
function argumentNames() {
|
380 |
+
var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]
|
381 |
+
.replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')
|
382 |
+
.replace(/\s+/g, '').split(',');
|
383 |
+
return names.length == 1 && !names[0] ? [] : names;
|
384 |
+
}
|
385 |
+
|
386 |
+
function bind(context) {
|
387 |
+
if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
|
388 |
+
var __method = this, args = slice.call(arguments, 1);
|
389 |
+
return function() {
|
390 |
+
var a = merge(args, arguments);
|
391 |
+
return __method.apply(context, a);
|
392 |
+
}
|
393 |
+
}
|
394 |
+
|
395 |
+
function bindAsEventListener(context) {
|
396 |
+
var __method = this, args = slice.call(arguments, 1);
|
397 |
+
return function(event) {
|
398 |
+
var a = update([event || window.event], args);
|
399 |
+
return __method.apply(context, a);
|
400 |
+
}
|
401 |
+
}
|
402 |
+
|
403 |
+
function curry() {
|
404 |
+
if (!arguments.length) return this;
|
405 |
+
var __method = this, args = slice.call(arguments, 0);
|
406 |
+
return function() {
|
407 |
+
var a = merge(args, arguments);
|
408 |
+
return __method.apply(this, a);
|
409 |
+
}
|
410 |
+
}
|
411 |
+
|
412 |
+
function delay(timeout) {
|
413 |
+
var __method = this, args = slice.call(arguments, 1);
|
414 |
+
timeout = timeout * 1000;
|
415 |
+
return window.setTimeout(function() {
|
416 |
+
return __method.apply(__method, args);
|
417 |
+
}, timeout);
|
418 |
+
}
|
419 |
+
|
420 |
+
function defer() {
|
421 |
+
var args = update([0.01], arguments);
|
422 |
+
return this.delay.apply(this, args);
|
423 |
+
}
|
424 |
+
|
425 |
+
function wrap(wrapper) {
|
426 |
+
var __method = this;
|
427 |
+
return function() {
|
428 |
+
var a = update([__method.bind(this)], arguments);
|
429 |
+
return wrapper.apply(this, a);
|
430 |
+
}
|
431 |
+
}
|
432 |
+
|
433 |
+
function methodize() {
|
434 |
+
if (this._methodized) return this._methodized;
|
435 |
+
var __method = this;
|
436 |
+
return this._methodized = function() {
|
437 |
+
var a = update([this], arguments);
|
438 |
+
return __method.apply(null, a);
|
439 |
+
};
|
440 |
+
}
|
441 |
+
|
442 |
+
return {
|
443 |
+
argumentNames: argumentNames,
|
444 |
+
bind: bind,
|
445 |
+
bindAsEventListener: bindAsEventListener,
|
446 |
+
curry: curry,
|
447 |
+
delay: delay,
|
448 |
+
defer: defer,
|
449 |
+
wrap: wrap,
|
450 |
+
methodize: methodize
|
451 |
+
}
|
452 |
+
})());
|
453 |
+
|
454 |
+
|
455 |
+
|
456 |
+
(function(proto) {
|
457 |
+
|
458 |
+
|
459 |
+
function toISOString() {
|
460 |
+
return this.getUTCFullYear() + '-' +
|
461 |
+
(this.getUTCMonth() + 1).toPaddedString(2) + '-' +
|
462 |
+
this.getUTCDate().toPaddedString(2) + 'T' +
|
463 |
+
this.getUTCHours().toPaddedString(2) + ':' +
|
464 |
+
this.getUTCMinutes().toPaddedString(2) + ':' +
|
465 |
+
this.getUTCSeconds().toPaddedString(2) + 'Z';
|
466 |
+
}
|
467 |
+
|
468 |
+
|
469 |
+
function toJSON() {
|
470 |
+
return this.toISOString();
|
471 |
+
}
|
472 |
+
|
473 |
+
if (!proto.toISOString) proto.toISOString = toISOString;
|
474 |
+
if (!proto.toJSON) proto.toJSON = toJSON;
|
475 |
+
|
476 |
+
})(Date.prototype);
|
477 |
+
|
478 |
+
|
479 |
+
RegExp.prototype.match = RegExp.prototype.test;
|
480 |
+
|
481 |
+
RegExp.escape = function(str) {
|
482 |
+
return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
|
483 |
+
};
|
484 |
+
var PeriodicalExecuter = Class.create({
|
485 |
+
initialize: function(callback, frequency) {
|
486 |
+
this.callback = callback;
|
487 |
+
this.frequency = frequency;
|
488 |
+
this.currentlyExecuting = false;
|
489 |
+
|
490 |
+
this.registerCallback();
|
491 |
+
},
|
492 |
+
|
493 |
+
registerCallback: function() {
|
494 |
+
this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
|
495 |
+
},
|
496 |
+
|
497 |
+
execute: function() {
|
498 |
+
this.callback(this);
|
499 |
+
},
|
500 |
+
|
501 |
+
stop: function() {
|
502 |
+
if (!this.timer) return;
|
503 |
+
clearInterval(this.timer);
|
504 |
+
this.timer = null;
|
505 |
+
},
|
506 |
+
|
507 |
+
onTimerEvent: function() {
|
508 |
+
if (!this.currentlyExecuting) {
|
509 |
+
try {
|
510 |
+
this.currentlyExecuting = true;
|
511 |
+
this.execute();
|
512 |
+
this.currentlyExecuting = false;
|
513 |
+
} catch(e) {
|
514 |
+
this.currentlyExecuting = false;
|
515 |
+
throw e;
|
516 |
+
}
|
517 |
+
}
|
518 |
+
}
|
519 |
+
});
|
520 |
+
Object.extend(String, {
|
521 |
+
interpret: function(value) {
|
522 |
+
return value == null ? '' : String(value);
|
523 |
+
},
|
524 |
+
specialChar: {
|
525 |
+
'\b': '\\b',
|
526 |
+
'\t': '\\t',
|
527 |
+
'\n': '\\n',
|
528 |
+
'\f': '\\f',
|
529 |
+
'\r': '\\r',
|
530 |
+
'\\': '\\\\'
|
531 |
+
}
|
532 |
+
});
|
533 |
+
|
534 |
+
Object.extend(String.prototype, (function() {
|
535 |
+
var NATIVE_JSON_PARSE_SUPPORT = window.JSON &&
|
536 |
+
typeof JSON.parse === 'function' &&
|
537 |
+
JSON.parse('{"test": true}').test;
|
538 |
+
|
539 |
+
function prepareReplacement(replacement) {
|
540 |
+
if (Object.isFunction(replacement)) return replacement;
|
541 |
+
var template = new Template(replacement);
|
542 |
+
return function(match) { return template.evaluate(match) };
|
543 |
+
}
|
544 |
+
|
545 |
+
function gsub(pattern, replacement) {
|
546 |
+
var result = '', source = this, match;
|
547 |
+
replacement = prepareReplacement(replacement);
|
548 |
+
|
549 |
+
if (Object.isString(pattern))
|
550 |
+
pattern = RegExp.escape(pattern);
|
551 |
+
|
552 |
+
if (!(pattern.length || pattern.source)) {
|
553 |
+
replacement = replacement('');
|
554 |
+
return replacement + source.split('').join(replacement) + replacement;
|
555 |
+
}
|
556 |
+
|
557 |
+
while (source.length > 0) {
|
558 |
+
if (match = source.match(pattern)) {
|
559 |
+
result += source.slice(0, match.index);
|
560 |
+
result += String.interpret(replacement(match));
|
561 |
+
source = source.slice(match.index + match[0].length);
|
562 |
+
} else {
|
563 |
+
result += source, source = '';
|
564 |
+
}
|
565 |
+
}
|
566 |
+
return result;
|
567 |
+
}
|
568 |
+
|
569 |
+
function sub(pattern, replacement, count) {
|
570 |
+
replacement = prepareReplacement(replacement);
|
571 |
+
count = Object.isUndefined(count) ? 1 : count;
|
572 |
+
|
573 |
+
return this.gsub(pattern, function(match) {
|
574 |
+
if (--count < 0) return match[0];
|
575 |
+
return replacement(match);
|
576 |
+
});
|
577 |
+
}
|
578 |
+
|
579 |
+
function scan(pattern, iterator) {
|
580 |
+
this.gsub(pattern, iterator);
|
581 |
+
return String(this);
|
582 |
+
}
|
583 |
+
|
584 |
+
function truncate(length, truncation) {
|
585 |
+
length = length || 30;
|
586 |
+
truncation = Object.isUndefined(truncation) ? '...' : truncation;
|
587 |
+
return this.length > length ?
|
588 |
+
this.slice(0, length - truncation.length) + truncation : String(this);
|
589 |
+
}
|
590 |
+
|
591 |
+
function strip() {
|
592 |
+
return this.replace(/^\s+/, '').replace(/\s+$/, '');
|
593 |
+
}
|
594 |
+
|
595 |
+
function stripTags() {
|
596 |
+
return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, '');
|
597 |
+
}
|
598 |
+
|
599 |
+
function stripScripts() {
|
600 |
+
return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
|
601 |
+
}
|
602 |
+
|
603 |
+
function extractScripts() {
|
604 |
+
var matchAll = new RegExp(Prototype.ScriptFragment, 'img'),
|
605 |
+
matchOne = new RegExp(Prototype.ScriptFragment, 'im');
|
606 |
+
return (this.match(matchAll) || []).map(function(scriptTag) {
|
607 |
+
return (scriptTag.match(matchOne) || ['', ''])[1];
|
608 |
+
});
|
609 |
+
}
|
610 |
+
|
611 |
+
function evalScripts() {
|
612 |
+
return this.extractScripts().map(function(script) { return eval(script) });
|
613 |
+
}
|
614 |
+
|
615 |
+
function escapeHTML() {
|
616 |
+
return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
|
617 |
+
}
|
618 |
+
|
619 |
+
function unescapeHTML() {
|
620 |
+
return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&');
|
621 |
+
}
|
622 |
+
|
623 |
+
|
624 |
+
function toQueryParams(separator) {
|
625 |
+
var match = this.strip().match(/([^?#]*)(#.*)?$/);
|
626 |
+
if (!match) return { };
|
627 |
+
|
628 |
+
return match[1].split(separator || '&').inject({ }, function(hash, pair) {
|
629 |
+
if ((pair = pair.split('='))[0]) {
|
630 |
+
var key = decodeURIComponent(pair.shift()),
|
631 |
+
value = pair.length > 1 ? pair.join('=') : pair[0];
|
632 |
+
|
633 |
+
if (value != undefined) value = decodeURIComponent(value);
|
634 |
+
|
635 |
+
if (key in hash) {
|
636 |
+
if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
|
637 |
+
hash[key].push(value);
|
638 |
+
}
|
639 |
+
else hash[key] = value;
|
640 |
+
}
|
641 |
+
return hash;
|
642 |
+
});
|
643 |
+
}
|
644 |
+
|
645 |
+
function toArray() {
|
646 |
+
return this.split('');
|
647 |
+
}
|
648 |
+
|
649 |
+
function succ() {
|
650 |
+
return this.slice(0, this.length - 1) +
|
651 |
+
String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
|
652 |
+
}
|
653 |
+
|
654 |
+
function times(count) {
|
655 |
+
return count < 1 ? '' : new Array(count + 1).join(this);
|
656 |
+
}
|
657 |
+
|
658 |
+
function camelize() {
|
659 |
+
return this.replace(/-+(.)?/g, function(match, chr) {
|
660 |
+
return chr ? chr.toUpperCase() : '';
|
661 |
+
});
|
662 |
+
}
|
663 |
+
|
664 |
+
function capitalize() {
|
665 |
+
return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
|
666 |
+
}
|
667 |
+
|
668 |
+
function underscore() {
|
669 |
+
return this.replace(/::/g, '/')
|
670 |
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
|
671 |
+
.replace(/([a-z\d])([A-Z])/g, '$1_$2')
|
672 |
+
.replace(/-/g, '_')
|
673 |
+
.toLowerCase();
|
674 |
+
}
|
675 |
+
|
676 |
+
function dasherize() {
|
677 |
+
return this.replace(/_/g, '-');
|
678 |
+
}
|
679 |
+
|
680 |
+
function inspect(useDoubleQuotes) {
|
681 |
+
var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) {
|
682 |
+
if (character in String.specialChar) {
|
683 |
+
return String.specialChar[character];
|
684 |
+
}
|
685 |
+
return '\\u00' + character.charCodeAt().toPaddedString(2, 16);
|
686 |
+
});
|
687 |
+
if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
|
688 |
+
return "'" + escapedString.replace(/'/g, '\\\'') + "'";
|
689 |
+
}
|
690 |
+
|
691 |
+
function unfilterJSON(filter) {
|
692 |
+
return this.replace(filter || Prototype.JSONFilter, '$1');
|
693 |
+
}
|
694 |
+
|
695 |
+
function isJSON() {
|
696 |
+
var str = this;
|
697 |
+
if (str.blank()) return false;
|
698 |
+
str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@');
|
699 |
+
str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']');
|
700 |
+
str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
|
701 |
+
return (/^[\],:{}\s]*$/).test(str);
|
702 |
+
}
|
703 |
+
|
704 |
+
function evalJSON(sanitize) {
|
705 |
+
var json = this.unfilterJSON(),
|
706 |
+
cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
707 |
+
if (cx.test(json)) {
|
708 |
+
json = json.replace(cx, function (a) {
|
709 |
+
return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
710 |
+
});
|
711 |
+
}
|
712 |
+
try {
|
713 |
+
if (!sanitize || json.isJSON()) return eval('(' + json + ')');
|
714 |
+
} catch (e) { }
|
715 |
+
throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
|
716 |
+
}
|
717 |
+
|
718 |
+
function parseJSON() {
|
719 |
+
var json = this.unfilterJSON();
|
720 |
+
return JSON.parse(json);
|
721 |
+
}
|
722 |
+
|
723 |
+
function include(pattern) {
|
724 |
+
return this.indexOf(pattern) > -1;
|
725 |
+
}
|
726 |
+
|
727 |
+
function startsWith(pattern) {
|
728 |
+
return this.lastIndexOf(pattern, 0) === 0;
|
729 |
+
}
|
730 |
+
|
731 |
+
function endsWith(pattern) {
|
732 |
+
var d = this.length - pattern.length;
|
733 |
+
return d >= 0 && this.indexOf(pattern, d) === d;
|
734 |
+
}
|
735 |
+
|
736 |
+
function empty() {
|
737 |
+
return this == '';
|
738 |
+
}
|
739 |
+
|
740 |
+
function blank() {
|
741 |
+
return /^\s*$/.test(this);
|
742 |
+
}
|
743 |
+
|
744 |
+
function interpolate(object, pattern) {
|
745 |
+
return new Template(this, pattern).evaluate(object);
|
746 |
+
}
|
747 |
+
|
748 |
+
return {
|
749 |
+
gsub: gsub,
|
750 |
+
sub: sub,
|
751 |
+
scan: scan,
|
752 |
+
truncate: truncate,
|
753 |
+
strip: String.prototype.trim || strip,
|
754 |
+
stripTags: stripTags,
|
755 |
+
stripScripts: stripScripts,
|
756 |
+
extractScripts: extractScripts,
|
757 |
+
evalScripts: evalScripts,
|
758 |
+
escapeHTML: escapeHTML,
|
759 |
+
unescapeHTML: unescapeHTML,
|
760 |
+
toQueryParams: toQueryParams,
|
761 |
+
parseQuery: toQueryParams,
|
762 |
+
toArray: toArray,
|
763 |
+
succ: succ,
|
764 |
+
times: times,
|
765 |
+
camelize: camelize,
|
766 |
+
capitalize: capitalize,
|
767 |
+
underscore: underscore,
|
768 |
+
dasherize: dasherize,
|
769 |
+
inspect: inspect,
|
770 |
+
unfilterJSON: unfilterJSON,
|
771 |
+
isJSON: isJSON,
|
772 |
+
evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON,
|
773 |
+
include: include,
|
774 |
+
startsWith: startsWith,
|
775 |
+
endsWith: endsWith,
|
776 |
+
empty: empty,
|
777 |
+
blank: blank,
|
778 |
+
interpolate: interpolate
|
779 |
+
};
|
780 |
+
})());
|
781 |
+
|
782 |
+
var Template = Class.create({
|
783 |
+
initialize: function(template, pattern) {
|
784 |
+
this.template = template.toString();
|
785 |
+
this.pattern = pattern || Template.Pattern;
|
786 |
+
},
|
787 |
+
|
788 |
+
evaluate: function(object) {
|
789 |
+
if (object && Object.isFunction(object.toTemplateReplacements))
|
790 |
+
object = object.toTemplateReplacements();
|
791 |
+
|
792 |
+
return this.template.gsub(this.pattern, function(match) {
|
793 |
+
if (object == null) return (match[1] + '');
|
794 |
+
|
795 |
+
var before = match[1] || '';
|
796 |
+
if (before == '\\') return match[2];
|
797 |
+
|
798 |
+
var ctx = object, expr = match[3],
|
799 |
+
pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
|
800 |
+
|
801 |
+
match = pattern.exec(expr);
|
802 |
+
if (match == null) return before;
|
803 |
+
|
804 |
+
while (match != null) {
|
805 |
+
var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1];
|
806 |
+
ctx = ctx[comp];
|
807 |
+
if (null == ctx || '' == match[3]) break;
|
808 |
+
expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
|
809 |
+
match = pattern.exec(expr);
|
810 |
+
}
|
811 |
+
|
812 |
+
return before + String.interpret(ctx);
|
813 |
+
});
|
814 |
+
}
|
815 |
+
});
|
816 |
+
Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
|
817 |
+
|
818 |
+
var $break = { };
|
819 |
+
|
820 |
+
var Enumerable = (function() {
|
821 |
+
function each(iterator, context) {
|
822 |
+
var index = 0;
|
823 |
+
try {
|
824 |
+
this._each(function(value) {
|
825 |
+
iterator.call(context, value, index++);
|
826 |
+
});
|
827 |
+
} catch (e) {
|
828 |
+
if (e != $break) throw e;
|
829 |
+
}
|
830 |
+
return this;
|
831 |
+
}
|
832 |
+
|
833 |
+
function eachSlice(number, iterator, context) {
|
834 |
+
var index = -number, slices = [], array = this.toArray();
|
835 |
+
if (number < 1) return array;
|
836 |
+
while ((index += number) < array.length)
|
837 |
+
slices.push(array.slice(index, index+number));
|
838 |
+
return slices.collect(iterator, context);
|
839 |
+
}
|
840 |
+
|
841 |
+
function all(iterator, context) {
|
842 |
+
iterator = iterator || Prototype.K;
|
843 |
+
var result = true;
|
844 |
+
this.each(function(value, index) {
|
845 |
+
result = result && !!iterator.call(context, value, index);
|
846 |
+
if (!result) throw $break;
|
847 |
+
});
|
848 |
+
return result;
|
849 |
+
}
|
850 |
+
|
851 |
+
function any(iterator, context) {
|
852 |
+
iterator = iterator || Prototype.K;
|
853 |
+
var result = false;
|
854 |
+
this.each(function(value, index) {
|
855 |
+
if (result = !!iterator.call(context, value, index))
|
856 |
+
throw $break;
|
857 |
+
});
|
858 |
+
return result;
|
859 |
+
}
|
860 |
+
|
861 |
+
function collect(iterator, context) {
|
862 |
+
iterator = iterator || Prototype.K;
|
863 |
+
var results = [];
|
864 |
+
this.each(function(value, index) {
|
865 |
+
results.push(iterator.call(context, value, index));
|
866 |
+
});
|
867 |
+
return results;
|
868 |
+
}
|
869 |
+
|
870 |
+
function detect(iterator, context) {
|
871 |
+
var result;
|
872 |
+
this.each(function(value, index) {
|
873 |
+
if (iterator.call(context, value, index)) {
|
874 |
+
result = value;
|
875 |
+
throw $break;
|
876 |
+
}
|
877 |
+
});
|
878 |
+
return result;
|
879 |
+
}
|
880 |
+
|
881 |
+
function findAll(iterator, context) {
|
882 |
+
var results = [];
|
883 |
+
this.each(function(value, index) {
|
884 |
+
if (iterator.call(context, value, index))
|
885 |
+
results.push(value);
|
886 |
+
});
|
887 |
+
return results;
|
888 |
+
}
|
889 |
+
|
890 |
+
function grep(filter, iterator, context) {
|
891 |
+
iterator = iterator || Prototype.K;
|
892 |
+
var results = [];
|
893 |
+
|
894 |
+
if (Object.isString(filter))
|
895 |
+
filter = new RegExp(RegExp.escape(filter));
|
896 |
+
|
897 |
+
this.each(function(value, index) {
|
898 |
+
if (filter.match(value))
|
899 |
+
results.push(iterator.call(context, value, index));
|
900 |
+
});
|
901 |
+
return results;
|
902 |
+
}
|
903 |
+
|
904 |
+
function include(object) {
|
905 |
+
if (Object.isFunction(this.indexOf))
|
906 |
+
if (this.indexOf(object) != -1) return true;
|
907 |
+
|
908 |
+
var found = false;
|
909 |
+
this.each(function(value) {
|
910 |
+
if (value == object) {
|
911 |
+
found = true;
|
912 |
+
throw $break;
|
913 |
+
}
|
914 |
+
});
|
915 |
+
return found;
|
916 |
+
}
|
917 |
+
|
918 |
+
function inGroupsOf(number, fillWith) {
|
919 |
+
fillWith = Object.isUndefined(fillWith) ? null : fillWith;
|
920 |
+
return this.eachSlice(number, function(slice) {
|
921 |
+
while(slice.length < number) slice.push(fillWith);
|
922 |
+
return slice;
|
923 |
+
});
|
924 |
+
}
|
925 |
+
|
926 |
+
function inject(memo, iterator, context) {
|
927 |
+
this.each(function(value, index) {
|
928 |
+
memo = iterator.call(context, memo, value, index);
|
929 |
+
});
|
930 |
+
return memo;
|
931 |
+
}
|
932 |
+
|
933 |
+
function invoke(method) {
|
934 |
+
var args = $A(arguments).slice(1);
|
935 |
+
return this.map(function(value) {
|
936 |
+
return value[method].apply(value, args);
|
937 |
+
});
|
938 |
+
}
|
939 |
+
|
940 |
+
function max(iterator, context) {
|
941 |
+
iterator = iterator || Prototype.K;
|
942 |
+
var result;
|
943 |
+
this.each(function(value, index) {
|
944 |
+
value = iterator.call(context, value, index);
|
945 |
+
if (result == null || value >= result)
|
946 |
+
result = value;
|
947 |
+
});
|
948 |
+
return result;
|
949 |
+
}
|
950 |
+
|
951 |
+
function min(iterator, context) {
|
952 |
+
iterator = iterator || Prototype.K;
|
953 |
+
var result;
|
954 |
+
this.each(function(value, index) {
|
955 |
+
value = iterator.call(context, value, index);
|
956 |
+
if (result == null || value < result)
|
957 |
+
result = value;
|
958 |
+
});
|
959 |
+
return result;
|
960 |
+
}
|
961 |
+
|
962 |
+
function partition(iterator, context) {
|
963 |
+
iterator = iterator || Prototype.K;
|
964 |
+
var trues = [], falses = [];
|
965 |
+
this.each(function(value, index) {
|
966 |
+
(iterator.call(context, value, index) ?
|
967 |
+
trues : falses).push(value);
|
968 |
+
});
|
969 |
+
return [trues, falses];
|
970 |
+
}
|
971 |
+
|
972 |
+
function pluck(property) {
|
973 |
+
var results = [];
|
974 |
+
this.each(function(value) {
|
975 |
+
results.push(value[property]);
|
976 |
+
});
|
977 |
+
return results;
|
978 |
+
}
|
979 |
+
|
980 |
+
function reject(iterator, context) {
|
981 |
+
var results = [];
|
982 |
+
this.each(function(value, index) {
|
983 |
+
if (!iterator.call(context, value, index))
|
984 |
+
results.push(value);
|
985 |
+
});
|
986 |
+
return results;
|
987 |
+
}
|
988 |
+
|
989 |
+
function sortBy(iterator, context) {
|
990 |
+
return this.map(function(value, index) {
|
991 |
+
return {
|
992 |
+
value: value,
|
993 |
+
criteria: iterator.call(context, value, index)
|
994 |
+
};
|
995 |
+
}).sort(function(left, right) {
|
996 |
+
var a = left.criteria, b = right.criteria;
|
997 |
+
return a < b ? -1 : a > b ? 1 : 0;
|
998 |
+
}).pluck('value');
|
999 |
+
}
|
1000 |
+
|
1001 |
+
function toArray() {
|
1002 |
+
return this.map();
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
function zip() {
|
1006 |
+
var iterator = Prototype.K, args = $A(arguments);
|
1007 |
+
if (Object.isFunction(args.last()))
|
1008 |
+
iterator = args.pop();
|
1009 |
+
|
1010 |
+
var collections = [this].concat(args).map($A);
|
1011 |
+
return this.map(function(value, index) {
|
1012 |
+
return iterator(collections.pluck(index));
|
1013 |
+
});
|
1014 |
+
}
|
1015 |
+
|
1016 |
+
function size() {
|
1017 |
+
return this.toArray().length;
|
1018 |
+
}
|
1019 |
+
|
1020 |
+
function inspect() {
|
1021 |
+
return '#<Enumerable:' + this.toArray().inspect() + '>';
|
1022 |
+
}
|
1023 |
+
|
1024 |
+
|
1025 |
+
|
1026 |
+
|
1027 |
+
|
1028 |
+
|
1029 |
+
|
1030 |
+
|
1031 |
+
|
1032 |
+
return {
|
1033 |
+
each: each,
|
1034 |
+
eachSlice: eachSlice,
|
1035 |
+
all: all,
|
1036 |
+
every: all,
|
1037 |
+
any: any,
|
1038 |
+
some: any,
|
1039 |
+
collect: collect,
|
1040 |
+
map: collect,
|
1041 |
+
detect: detect,
|
1042 |
+
findAll: findAll,
|
1043 |
+
select: findAll,
|
1044 |
+
filter: findAll,
|
1045 |
+
grep: grep,
|
1046 |
+
include: include,
|
1047 |
+
member: include,
|
1048 |
+
inGroupsOf: inGroupsOf,
|
1049 |
+
inject: inject,
|
1050 |
+
invoke: invoke,
|
1051 |
+
max: max,
|
1052 |
+
min: min,
|
1053 |
+
partition: partition,
|
1054 |
+
pluck: pluck,
|
1055 |
+
reject: reject,
|
1056 |
+
sortBy: sortBy,
|
1057 |
+
toArray: toArray,
|
1058 |
+
entries: toArray,
|
1059 |
+
zip: zip,
|
1060 |
+
size: size,
|
1061 |
+
inspect: inspect,
|
1062 |
+
find: detect
|
1063 |
+
};
|
1064 |
+
})();
|
1065 |
+
|
1066 |
+
function $A(iterable) {
|
1067 |
+
if (!iterable) return [];
|
1068 |
+
if ('toArray' in Object(iterable)) return iterable.toArray();
|
1069 |
+
var length = iterable.length || 0, results = new Array(length);
|
1070 |
+
while (length--) results[length] = iterable[length];
|
1071 |
+
return results;
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
|
1075 |
+
function $w(string) {
|
1076 |
+
if (!Object.isString(string)) return [];
|
1077 |
+
string = string.strip();
|
1078 |
+
return string ? string.split(/\s+/) : [];
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
Array.from = $A;
|
1082 |
+
|
1083 |
+
|
1084 |
+
(function() {
|
1085 |
+
var arrayProto = Array.prototype,
|
1086 |
+
slice = arrayProto.slice,
|
1087 |
+
_each = arrayProto.forEach; // use native browser JS 1.6 implementation if available
|
1088 |
+
|
1089 |
+
function each(iterator, context) {
|
1090 |
+
for (var i = 0, length = this.length >>> 0; i < length; i++) {
|
1091 |
+
if (i in this) iterator.call(context, this[i], i, this);
|
1092 |
+
}
|
1093 |
+
}
|
1094 |
+
if (!_each) _each = each;
|
1095 |
+
|
1096 |
+
function clear() {
|
1097 |
+
this.length = 0;
|
1098 |
+
return this;
|
1099 |
+
}
|
1100 |
+
|
1101 |
+
function first() {
|
1102 |
+
return this[0];
|
1103 |
+
}
|
1104 |
+
|
1105 |
+
function last() {
|
1106 |
+
return this[this.length - 1];
|
1107 |
+
}
|
1108 |
+
|
1109 |
+
function compact() {
|
1110 |
+
return this.select(function(value) {
|
1111 |
+
return value != null;
|
1112 |
+
});
|
1113 |
+
}
|
1114 |
+
|
1115 |
+
function flatten() {
|
1116 |
+
return this.inject([], function(array, value) {
|
1117 |
+
if (Object.isArray(value))
|
1118 |
+
return array.concat(value.flatten());
|
1119 |
+
array.push(value);
|
1120 |
+
return array;
|
1121 |
+
});
|
1122 |
+
}
|
1123 |
+
|
1124 |
+
function without() {
|
1125 |
+
var values = slice.call(arguments, 0);
|
1126 |
+
return this.select(function(value) {
|
1127 |
+
return !values.include(value);
|
1128 |
+
});
|
1129 |
+
}
|
1130 |
+
|
1131 |
+
function reverse(inline) {
|
1132 |
+
return (inline === false ? this.toArray() : this)._reverse();
|
1133 |
+
}
|
1134 |
+
|
1135 |
+
function uniq(sorted) {
|
1136 |
+
return this.inject([], function(array, value, index) {
|
1137 |
+
if (0 == index || (sorted ? array.last() != value : !array.include(value)))
|
1138 |
+
array.push(value);
|
1139 |
+
return array;
|
1140 |
+
});
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
function intersect(array) {
|
1144 |
+
return this.uniq().findAll(function(item) {
|
1145 |
+
return array.detect(function(value) { return item === value });
|
1146 |
+
});
|
1147 |
+
}
|
1148 |
+
|
1149 |
+
|
1150 |
+
function clone() {
|
1151 |
+
return slice.call(this, 0);
|
1152 |
+
}
|
1153 |
+
|
1154 |
+
function size() {
|
1155 |
+
return this.length;
|
1156 |
+
}
|
1157 |
+
|
1158 |
+
function inspect() {
|
1159 |
+
return '[' + this.map(Object.inspect).join(', ') + ']';
|
1160 |
+
}
|
1161 |
+
|
1162 |
+
function indexOf(item, i) {
|
1163 |
+
i || (i = 0);
|
1164 |
+
var length = this.length;
|
1165 |
+
if (i < 0) i = length + i;
|
1166 |
+
for (; i < length; i++)
|
1167 |
+
if (this[i] === item) return i;
|
1168 |
+
return -1;
|
1169 |
+
}
|
1170 |
+
|
1171 |
+
function lastIndexOf(item, i) {
|
1172 |
+
i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
|
1173 |
+
var n = this.slice(0, i).reverse().indexOf(item);
|
1174 |
+
return (n < 0) ? n : i - n - 1;
|
1175 |
+
}
|
1176 |
+
|
1177 |
+
function concat() {
|
1178 |
+
var array = slice.call(this, 0), item;
|
1179 |
+
for (var i = 0, length = arguments.length; i < length; i++) {
|
1180 |
+
item = arguments[i];
|
1181 |
+
if (Object.isArray(item) && !('callee' in item)) {
|
1182 |
+
for (var j = 0, arrayLength = item.length; j < arrayLength; j++)
|
1183 |
+
array.push(item[j]);
|
1184 |
+
} else {
|
1185 |
+
array.push(item);
|
1186 |
+
}
|
1187 |
+
}
|
1188 |
+
return array;
|
1189 |
+
}
|
1190 |
+
|
1191 |
+
Object.extend(arrayProto, Enumerable);
|
1192 |
+
|
1193 |
+
if (!arrayProto._reverse)
|
1194 |
+
arrayProto._reverse = arrayProto.reverse;
|
1195 |
+
|
1196 |
+
Object.extend(arrayProto, {
|
1197 |
+
_each: _each,
|
1198 |
+
clear: clear,
|
1199 |
+
first: first,
|
1200 |
+
last: last,
|
1201 |
+
compact: compact,
|
1202 |
+
flatten: flatten,
|
1203 |
+
without: without,
|
1204 |
+
reverse: reverse,
|
1205 |
+
uniq: uniq,
|
1206 |
+
intersect: intersect,
|
1207 |
+
clone: clone,
|
1208 |
+
toArray: clone,
|
1209 |
+
size: size,
|
1210 |
+
inspect: inspect
|
1211 |
+
});
|
1212 |
+
|
1213 |
+
var CONCAT_ARGUMENTS_BUGGY = (function() {
|
1214 |
+
return [].concat(arguments)[0][0] !== 1;
|
1215 |
+
})(1,2)
|
1216 |
+
|
1217 |
+
if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat;
|
1218 |
+
|
1219 |
+
if (!arrayProto.indexOf) arrayProto.indexOf = indexOf;
|
1220 |
+
if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf;
|
1221 |
+
})();
|
1222 |
+
function $H(object) {
|
1223 |
+
return new Hash(object);
|
1224 |
+
};
|
1225 |
+
|
1226 |
+
var Hash = Class.create(Enumerable, (function() {
|
1227 |
+
function initialize(object) {
|
1228 |
+
this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
|
1229 |
+
}
|
1230 |
+
|
1231 |
+
|
1232 |
+
function _each(iterator) {
|
1233 |
+
for (var key in this._object) {
|
1234 |
+
var value = this._object[key], pair = [key, value];
|
1235 |
+
pair.key = key;
|
1236 |
+
pair.value = value;
|
1237 |
+
iterator(pair);
|
1238 |
+
}
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
function set(key, value) {
|
1242 |
+
return this._object[key] = value;
|
1243 |
+
}
|
1244 |
+
|
1245 |
+
function get(key) {
|
1246 |
+
if (this._object[key] !== Object.prototype[key])
|
1247 |
+
return this._object[key];
|
1248 |
+
}
|
1249 |
+
|
1250 |
+
function unset(key) {
|
1251 |
+
var value = this._object[key];
|
1252 |
+
delete this._object[key];
|
1253 |
+
return value;
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
function toObject() {
|
1257 |
+
return Object.clone(this._object);
|
1258 |
+
}
|
1259 |
+
|
1260 |
+
|
1261 |
+
|
1262 |
+
function keys() {
|
1263 |
+
return this.pluck('key');
|
1264 |
+
}
|
1265 |
+
|
1266 |
+
function values() {
|
1267 |
+
return this.pluck('value');
|
1268 |
+
}
|
1269 |
+
|
1270 |
+
function index(value) {
|
1271 |
+
var match = this.detect(function(pair) {
|
1272 |
+
return pair.value === value;
|
1273 |
+
});
|
1274 |
+
return match && match.key;
|
1275 |
+
}
|
1276 |
+
|
1277 |
+
function merge(object) {
|
1278 |
+
return this.clone().update(object);
|
1279 |
+
}
|
1280 |
+
|
1281 |
+
function update(object) {
|
1282 |
+
return new Hash(object).inject(this, function(result, pair) {
|
1283 |
+
result.set(pair.key, pair.value);
|
1284 |
+
return result;
|
1285 |
+
});
|
1286 |
+
}
|
1287 |
+
|
1288 |
+
function toQueryPair(key, value) {
|
1289 |
+
if (Object.isUndefined(value)) return key;
|
1290 |
+
return key + '=' + encodeURIComponent(String.interpret(value));
|
1291 |
+
}
|
1292 |
+
|
1293 |
+
function toQueryString() {
|
1294 |
+
return this.inject([], function(results, pair) {
|
1295 |
+
var key = encodeURIComponent(pair.key), values = pair.value;
|
1296 |
+
|
1297 |
+
if (values && typeof values == 'object') {
|
1298 |
+
if (Object.isArray(values)) {
|
1299 |
+
var queryValues = [];
|
1300 |
+
for (var i = 0, len = values.length, value; i < len; i++) {
|
1301 |
+
value = values[i];
|
1302 |
+
queryValues.push(toQueryPair(key, value));
|
1303 |
+
}
|
1304 |
+
return results.concat(queryValues);
|
1305 |
+
}
|
1306 |
+
} else results.push(toQueryPair(key, values));
|
1307 |
+
return results;
|
1308 |
+
}).join('&');
|
1309 |
+
}
|
1310 |
+
|
1311 |
+
function inspect() {
|
1312 |
+
return '#<Hash:{' + this.map(function(pair) {
|
1313 |
+
return pair.map(Object.inspect).join(': ');
|
1314 |
+
}).join(', ') + '}>';
|
1315 |
+
}
|
1316 |
+
|
1317 |
+
function clone() {
|
1318 |
+
return new Hash(this);
|
1319 |
+
}
|
1320 |
+
|
1321 |
+
return {
|
1322 |
+
initialize: initialize,
|
1323 |
+
_each: _each,
|
1324 |
+
set: set,
|
1325 |
+
get: get,
|
1326 |
+
unset: unset,
|
1327 |
+
toObject: toObject,
|
1328 |
+
toTemplateReplacements: toObject,
|
1329 |
+
keys: keys,
|
1330 |
+
values: values,
|
1331 |
+
index: index,
|
1332 |
+
merge: merge,
|
1333 |
+
update: update,
|
1334 |
+
toQueryString: toQueryString,
|
1335 |
+
inspect: inspect,
|
1336 |
+
toJSON: toObject,
|
1337 |
+
clone: clone
|
1338 |
+
};
|
1339 |
+
})());
|
1340 |
+
|
1341 |
+
Hash.from = $H;
|
1342 |
+
Object.extend(Number.prototype, (function() {
|
1343 |
+
function toColorPart() {
|
1344 |
+
return this.toPaddedString(2, 16);
|
1345 |
+
}
|
1346 |
+
|
1347 |
+
function succ() {
|
1348 |
+
return this + 1;
|
1349 |
+
}
|
1350 |
+
|
1351 |
+
function times(iterator, context) {
|
1352 |
+
$R(0, this, true).each(iterator, context);
|
1353 |
+
return this;
|
1354 |
+
}
|
1355 |
+
|
1356 |
+
function toPaddedString(length, radix) {
|
1357 |
+
var string = this.toString(radix || 10);
|
1358 |
+
return '0'.times(length - string.length) + string;
|
1359 |
+
}
|
1360 |
+
|
1361 |
+
function abs() {
|
1362 |
+
return Math.abs(this);
|
1363 |
+
}
|
1364 |
+
|
1365 |
+
function round() {
|
1366 |
+
return Math.round(this);
|
1367 |
+
}
|
1368 |
+
|
1369 |
+
function ceil() {
|
1370 |
+
return Math.ceil(this);
|
1371 |
+
}
|
1372 |
+
|
1373 |
+
function floor() {
|
1374 |
+
return Math.floor(this);
|
1375 |
+
}
|
1376 |
+
|
1377 |
+
return {
|
1378 |
+
toColorPart: toColorPart,
|
1379 |
+
succ: succ,
|
1380 |
+
times: times,
|
1381 |
+
toPaddedString: toPaddedString,
|
1382 |
+
abs: abs,
|
1383 |
+
round: round,
|
1384 |
+
ceil: ceil,
|
1385 |
+
floor: floor
|
1386 |
+
};
|
1387 |
+
})());
|
1388 |
+
|
1389 |
+
function $R(start, end, exclusive) {
|
1390 |
+
return new ObjectRange(start, end, exclusive);
|
1391 |
+
}
|
1392 |
+
|
1393 |
+
var ObjectRange = Class.create(Enumerable, (function() {
|
1394 |
+
function initialize(start, end, exclusive) {
|
1395 |
+
this.start = start;
|
1396 |
+
this.end = end;
|
1397 |
+
this.exclusive = exclusive;
|
1398 |
+
}
|
1399 |
+
|
1400 |
+
function _each(iterator) {
|
1401 |
+
var value = this.start;
|
1402 |
+
while (this.include(value)) {
|
1403 |
+
iterator(value);
|
1404 |
+
value = value.succ();
|
1405 |
+
}
|
1406 |
+
}
|
1407 |
+
|
1408 |
+
function include(value) {
|
1409 |
+
if (value < this.start)
|
1410 |
+
return false;
|
1411 |
+
if (this.exclusive)
|
1412 |
+
return value < this.end;
|
1413 |
+
return value <= this.end;
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
return {
|
1417 |
+
initialize: initialize,
|
1418 |
+
_each: _each,
|
1419 |
+
include: include
|
1420 |
+
};
|
1421 |
+
})());
|
1422 |
+
|
1423 |
+
|
1424 |
+
|
1425 |
+
var Ajax = {
|
1426 |
+
getTransport: function() {
|
1427 |
+
return Try.these(
|
1428 |
+
function() {return new XMLHttpRequest()},
|
1429 |
+
function() {return new ActiveXObject('Msxml2.XMLHTTP')},
|
1430 |
+
function() {return new ActiveXObject('Microsoft.XMLHTTP')}
|
1431 |
+
) || false;
|
1432 |
+
},
|
1433 |
+
|
1434 |
+
activeRequestCount: 0
|
1435 |
+
};
|
1436 |
+
|
1437 |
+
Ajax.Responders = {
|
1438 |
+
responders: [],
|
1439 |
+
|
1440 |
+
_each: function(iterator) {
|
1441 |
+
this.responders._each(iterator);
|
1442 |
+
},
|
1443 |
+
|
1444 |
+
register: function(responder) {
|
1445 |
+
if (!this.include(responder))
|
1446 |
+
this.responders.push(responder);
|
1447 |
+
},
|
1448 |
+
|
1449 |
+
unregister: function(responder) {
|
1450 |
+
this.responders = this.responders.without(responder);
|
1451 |
+
},
|
1452 |
+
|
1453 |
+
dispatch: function(callback, request, transport, json) {
|
1454 |
+
this.each(function(responder) {
|
1455 |
+
if (Object.isFunction(responder[callback])) {
|
1456 |
+
try {
|
1457 |
+
responder[callback].apply(responder, [request, transport, json]);
|
1458 |
+
} catch (e) { }
|
1459 |
+
}
|
1460 |
+
});
|
1461 |
+
}
|
1462 |
+
};
|
1463 |
+
|
1464 |
+
Object.extend(Ajax.Responders, Enumerable);
|
1465 |
+
|
1466 |
+
Ajax.Responders.register({
|
1467 |
+
onCreate: function() { Ajax.activeRequestCount++ },
|
1468 |
+
onComplete: function() { Ajax.activeRequestCount-- }
|
1469 |
+
});
|
1470 |
+
Ajax.Base = Class.create({
|
1471 |
+
initialize: function(options) {
|
1472 |
+
this.options = {
|
1473 |
+
method: 'post',
|
1474 |
+
asynchronous: true,
|
1475 |
+
contentType: 'application/x-www-form-urlencoded',
|
1476 |
+
encoding: 'UTF-8',
|
1477 |
+
parameters: '',
|
1478 |
+
evalJSON: true,
|
1479 |
+
evalJS: true
|
1480 |
+
};
|
1481 |
+
Object.extend(this.options, options || { });
|
1482 |
+
|
1483 |
+
this.options.method = this.options.method.toLowerCase();
|
1484 |
+
|
1485 |
+
if (Object.isHash(this.options.parameters))
|
1486 |
+
this.options.parameters = this.options.parameters.toObject();
|
1487 |
+
}
|
1488 |
+
});
|
1489 |
+
Ajax.Request = Class.create(Ajax.Base, {
|
1490 |
+
_complete: false,
|
1491 |
+
|
1492 |
+
initialize: function($super, url, options) {
|
1493 |
+
$super(options);
|
1494 |
+
this.transport = Ajax.getTransport();
|
1495 |
+
this.request(url);
|
1496 |
+
},
|
1497 |
+
|
1498 |
+
request: function(url) {
|
1499 |
+
this.url = url;
|
1500 |
+
this.method = this.options.method;
|
1501 |
+
var params = Object.isString(this.options.parameters) ?
|
1502 |
+
this.options.parameters :
|
1503 |
+
Object.toQueryString(this.options.parameters);
|
1504 |
+
|
1505 |
+
if (!['get', 'post'].include(this.method)) {
|
1506 |
+
params += (params ? '&' : '') + "_method=" + this.method;
|
1507 |
+
this.method = 'post';
|
1508 |
+
}
|
1509 |
+
|
1510 |
+
if (params && this.method === 'get') {
|
1511 |
+
this.url += (this.url.include('?') ? '&' : '?') + params;
|
1512 |
+
}
|
1513 |
+
|
1514 |
+
this.parameters = params.toQueryParams();
|
1515 |
+
|
1516 |
+
try {
|
1517 |
+
var response = new Ajax.Response(this);
|
1518 |
+
if (this.options.onCreate) this.options.onCreate(response);
|
1519 |
+
Ajax.Responders.dispatch('onCreate', this, response);
|
1520 |
+
|
1521 |
+
this.transport.open(this.method.toUpperCase(), this.url,
|
1522 |
+
this.options.asynchronous);
|
1523 |
+
|
1524 |
+
if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
|
1525 |
+
|
1526 |
+
this.transport.onreadystatechange = this.onStateChange.bind(this);
|
1527 |
+
this.setRequestHeaders();
|
1528 |
+
|
1529 |
+
this.body = this.method == 'post' ? (this.options.postBody || params) : null;
|
1530 |
+
this.transport.send(this.body);
|
1531 |
+
|
1532 |
+
/* Force Firefox to handle ready state 4 for synchronous requests */
|
1533 |
+
if (!this.options.asynchronous && this.transport.overrideMimeType)
|
1534 |
+
this.onStateChange();
|
1535 |
+
|
1536 |
+
}
|
1537 |
+
catch (e) {
|
1538 |
+
this.dispatchException(e);
|
1539 |
+
}
|
1540 |
+
},
|
1541 |
+
|
1542 |
+
onStateChange: function() {
|
1543 |
+
var readyState = this.transport.readyState;
|
1544 |
+
if (readyState > 1 && !((readyState == 4) && this._complete))
|
1545 |
+
this.respondToReadyState(this.transport.readyState);
|
1546 |
+
},
|
1547 |
+
|
1548 |
+
setRequestHeaders: function() {
|
1549 |
+
var headers = {
|
1550 |
+
'X-Requested-With': 'XMLHttpRequest',
|
1551 |
+
'X-Prototype-Version': Prototype.Version,
|
1552 |
+
'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
|
1553 |
+
};
|
1554 |
+
|
1555 |
+
if (this.method == 'post') {
|
1556 |
+
headers['Content-type'] = this.options.contentType +
|
1557 |
+
(this.options.encoding ? '; charset=' + this.options.encoding : '');
|
1558 |
+
|
1559 |
+
/* Force "Connection: close" for older Mozilla browsers to work
|
1560 |
+
* around a bug where XMLHttpRequest sends an incorrect
|
1561 |
+
* Content-length header. See Mozilla Bugzilla #246651.
|
1562 |
+
*/
|
1563 |
+
if (this.transport.overrideMimeType &&
|
1564 |
+
(navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
|
1565 |
+
headers['Connection'] = 'close';
|
1566 |
+
}
|
1567 |
+
|
1568 |
+
if (typeof this.options.requestHeaders == 'object') {
|
1569 |
+
var extras = this.options.requestHeaders;
|
1570 |
+
|
1571 |
+
if (Object.isFunction(extras.push))
|
1572 |
+
for (var i = 0, length = extras.length; i < length; i += 2)
|
1573 |
+
headers[extras[i]] = extras[i+1];
|
1574 |
+
else
|
1575 |
+
$H(extras).each(function(pair) { headers[pair.key] = pair.value });
|
1576 |
+
}
|
1577 |
+
|
1578 |
+
for (var name in headers)
|
1579 |
+
this.transport.setRequestHeader(name, headers[name]);
|
1580 |
+
},
|
1581 |
+
|
1582 |
+
success: function() {
|
1583 |
+
var status = this.getStatus();
|
1584 |
+
return !status || (status >= 200 && status < 300) || status == 304;
|
1585 |
+
},
|
1586 |
+
|
1587 |
+
getStatus: function() {
|
1588 |
+
try {
|
1589 |
+
if (this.transport.status === 1223) return 204;
|
1590 |
+
return this.transport.status || 0;
|
1591 |
+
} catch (e) { return 0 }
|
1592 |
+
},
|
1593 |
+
|
1594 |
+
respondToReadyState: function(readyState) {
|
1595 |
+
var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
|
1596 |
+
|
1597 |
+
if (state == 'Complete') {
|
1598 |
+
try {
|
1599 |
+
this._complete = true;
|
1600 |
+
(this.options['on' + response.status]
|
1601 |
+
|| this.options['on' + (this.success() ? 'Success' : 'Failure')]
|
1602 |
+
|| Prototype.emptyFunction)(response, response.headerJSON);
|
1603 |
+
} catch (e) {
|
1604 |
+
this.dispatchException(e);
|
1605 |
+
}
|
1606 |
+
|
1607 |
+
var contentType = response.getHeader('Content-type');
|
1608 |
+
if (this.options.evalJS == 'force'
|
1609 |
+
|| (this.options.evalJS && this.isSameOrigin() && contentType
|
1610 |
+
&& contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
|
1611 |
+
this.evalResponse();
|
1612 |
+
}
|
1613 |
+
|
1614 |
+
try {
|
1615 |
+
(this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
|
1616 |
+
Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
|
1617 |
+
} catch (e) {
|
1618 |
+
this.dispatchException(e);
|
1619 |
+
}
|
1620 |
+
|
1621 |
+
if (state == 'Complete') {
|
1622 |
+
this.transport.onreadystatechange = Prototype.emptyFunction;
|
1623 |
+
}
|
1624 |
+
},
|
1625 |
+
|
1626 |
+
isSameOrigin: function() {
|
1627 |
+
var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
|
1628 |
+
return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
|
1629 |
+
protocol: location.protocol,
|
1630 |
+
domain: document.domain,
|
1631 |
+
port: location.port ? ':' + location.port : ''
|
1632 |
+
}));
|
1633 |
+
},
|
1634 |
+
|
1635 |
+
getHeader: function(name) {
|
1636 |
+
try {
|
1637 |
+
return this.transport.getResponseHeader(name) || null;
|
1638 |
+
} catch (e) { return null; }
|
1639 |
+
},
|
1640 |
+
|
1641 |
+
evalResponse: function() {
|
1642 |
+
try {
|
1643 |
+
return eval((this.transport.responseText || '').unfilterJSON());
|
1644 |
+
} catch (e) {
|
1645 |
+
this.dispatchException(e);
|
1646 |
+
}
|
1647 |
+
},
|
1648 |
+
|
1649 |
+
dispatchException: function(exception) {
|
1650 |
+
(this.options.onException || Prototype.emptyFunction)(this, exception);
|
1651 |
+
Ajax.Responders.dispatch('onException', this, exception);
|
1652 |
+
}
|
1653 |
+
});
|
1654 |
+
|
1655 |
+
Ajax.Request.Events =
|
1656 |
+
['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
|
1657 |
+
|
1658 |
+
|
1659 |
+
|
1660 |
+
|
1661 |
+
|
1662 |
+
|
1663 |
+
|
1664 |
+
|
1665 |
+
Ajax.Response = Class.create({
|
1666 |
+
initialize: function(request){
|
1667 |
+
this.request = request;
|
1668 |
+
var transport = this.transport = request.transport,
|
1669 |
+
readyState = this.readyState = transport.readyState;
|
1670 |
+
|
1671 |
+
if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
|
1672 |
+
this.status = this.getStatus();
|
1673 |
+
this.statusText = this.getStatusText();
|
1674 |
+
this.responseText = String.interpret(transport.responseText);
|
1675 |
+
this.headerJSON = this._getHeaderJSON();
|
1676 |
+
}
|
1677 |
+
|
1678 |
+
if (readyState == 4) {
|
1679 |
+
var xml = transport.responseXML;
|
1680 |
+
this.responseXML = Object.isUndefined(xml) ? null : xml;
|
1681 |
+
this.responseJSON = this._getResponseJSON();
|
1682 |
+
}
|
1683 |
+
},
|
1684 |
+
|
1685 |
+
status: 0,
|
1686 |
+
|
1687 |
+
statusText: '',
|
1688 |
+
|
1689 |
+
getStatus: Ajax.Request.prototype.getStatus,
|
1690 |
+
|
1691 |
+
getStatusText: function() {
|
1692 |
+
try {
|
1693 |
+
return this.transport.statusText || '';
|
1694 |
+
} catch (e) { return '' }
|
1695 |
+
},
|
1696 |
+
|
1697 |
+
getHeader: Ajax.Request.prototype.getHeader,
|
1698 |
+
|
1699 |
+
getAllHeaders: function() {
|
1700 |
+
try {
|
1701 |
+
return this.getAllResponseHeaders();
|
1702 |
+
} catch (e) { return null }
|
1703 |
+
},
|
1704 |
+
|
1705 |
+
getResponseHeader: function(name) {
|
1706 |
+
return this.transport.getResponseHeader(name);
|
1707 |
+
},
|
1708 |
+
|
1709 |
+
getAllResponseHeaders: function() {
|
1710 |
+
return this.transport.getAllResponseHeaders();
|
1711 |
+
},
|
1712 |
+
|
1713 |
+
_getHeaderJSON: function() {
|
1714 |
+
var json = this.getHeader('X-JSON');
|
1715 |
+
if (!json) return null;
|
1716 |
+
json = decodeURIComponent(escape(json));
|
1717 |
+
try {
|
1718 |
+
return json.evalJSON(this.request.options.sanitizeJSON ||
|
1719 |
+
!this.request.isSameOrigin());
|
1720 |
+
} catch (e) {
|
1721 |
+
this.request.dispatchException(e);
|
1722 |
+
}
|
1723 |
+
},
|
1724 |
+
|
1725 |
+
_getResponseJSON: function() {
|
1726 |
+
var options = this.request.options;
|
1727 |
+
if (!options.evalJSON || (options.evalJSON != 'force' &&
|
1728 |
+
!(this.getHeader('Content-type') || '').include('application/json')) ||
|
1729 |
+
this.responseText.blank())
|
1730 |
+
return null;
|
1731 |
+
try {
|
1732 |
+
return this.responseText.evalJSON(options.sanitizeJSON ||
|
1733 |
+
!this.request.isSameOrigin());
|
1734 |
+
} catch (e) {
|
1735 |
+
this.request.dispatchException(e);
|
1736 |
+
}
|
1737 |
+
}
|
1738 |
+
});
|
1739 |
+
|
1740 |
+
Ajax.Updater = Class.create(Ajax.Request, {
|
1741 |
+
initialize: function($super, container, url, options) {
|
1742 |
+
this.container = {
|
1743 |
+
success: (container.success || container),
|
1744 |
+
failure: (container.failure || (container.success ? null : container))
|
1745 |
+
};
|
1746 |
+
|
1747 |
+
options = Object.clone(options);
|
1748 |
+
var onComplete = options.onComplete;
|
1749 |
+
options.onComplete = (function(response, json) {
|
1750 |
+
this.updateContent(response.responseText);
|
1751 |
+
if (Object.isFunction(onComplete)) onComplete(response, json);
|
1752 |
+
}).bind(this);
|
1753 |
+
|
1754 |
+
$super(url, options);
|
1755 |
+
},
|
1756 |
+
|
1757 |
+
updateContent: function(responseText) {
|
1758 |
+
var receiver = this.container[this.success() ? 'success' : 'failure'],
|
1759 |
+
options = this.options;
|
1760 |
+
|
1761 |
+
if (!options.evalScripts) responseText = responseText.stripScripts();
|
1762 |
+
|
1763 |
+
if (receiver = $(receiver)) {
|
1764 |
+
if (options.insertion) {
|
1765 |
+
if (Object.isString(options.insertion)) {
|
1766 |
+
var insertion = { }; insertion[options.insertion] = responseText;
|
1767 |
+
receiver.insert(insertion);
|
1768 |
+
}
|
1769 |
+
else options.insertion(receiver, responseText);
|
1770 |
+
}
|
1771 |
+
else receiver.update(responseText);
|
1772 |
+
}
|
1773 |
+
}
|
1774 |
+
});
|
1775 |
+
|
1776 |
+
Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
|
1777 |
+
initialize: function($super, container, url, options) {
|
1778 |
+
$super(options);
|
1779 |
+
this.onComplete = this.options.onComplete;
|
1780 |
+
|
1781 |
+
this.frequency = (this.options.frequency || 2);
|
1782 |
+
this.decay = (this.options.decay || 1);
|
1783 |
+
|
1784 |
+
this.updater = { };
|
1785 |
+
this.container = container;
|
1786 |
+
this.url = url;
|
1787 |
+
|
1788 |
+
this.start();
|
1789 |
+
},
|
1790 |
+
|
1791 |
+
start: function() {
|
1792 |
+
this.options.onComplete = this.updateComplete.bind(this);
|
1793 |
+
this.onTimerEvent();
|
1794 |
+
},
|
1795 |
+
|
1796 |
+
stop: function() {
|
1797 |
+
this.updater.options.onComplete = undefined;
|
1798 |
+
clearTimeout(this.timer);
|
1799 |
+
(this.onComplete || Prototype.emptyFunction).apply(this, arguments);
|
1800 |
+
},
|
1801 |
+
|
1802 |
+
updateComplete: function(response) {
|
1803 |
+
if (this.options.decay) {
|
1804 |
+
this.decay = (response.responseText == this.lastText ?
|
1805 |
+
this.decay * this.options.decay : 1);
|
1806 |
+
|
1807 |
+
this.lastText = response.responseText;
|
1808 |
+
}
|
1809 |
+
this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
|
1810 |
+
},
|
1811 |
+
|
1812 |
+
onTimerEvent: function() {
|
1813 |
+
this.updater = new Ajax.Updater(this.container, this.url, this.options);
|
1814 |
+
}
|
1815 |
+
});
|
1816 |
+
|
1817 |
+
|
1818 |
+
function $(element) {
|
1819 |
+
if (arguments.length > 1) {
|
1820 |
+
for (var i = 0, elements = [], length = arguments.length; i < length; i++)
|
1821 |
+
elements.push($(arguments[i]));
|
1822 |
+
return elements;
|
1823 |
+
}
|
1824 |
+
if (Object.isString(element))
|
1825 |
+
element = document.getElementById(element);
|
1826 |
+
return Element.extend(element);
|
1827 |
+
}
|
1828 |
+
|
1829 |
+
if (Prototype.BrowserFeatures.XPath) {
|
1830 |
+
document._getElementsByXPath = function(expression, parentElement) {
|
1831 |
+
var results = [];
|
1832 |
+
var query = document.evaluate(expression, $(parentElement) || document,
|
1833 |
+
null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
|
1834 |
+
for (var i = 0, length = query.snapshotLength; i < length; i++)
|
1835 |
+
results.push(Element.extend(query.snapshotItem(i)));
|
1836 |
+
return results;
|
1837 |
+
};
|
1838 |
+
}
|
1839 |
+
|
1840 |
+
/*--------------------------------------------------------------------------*/
|
1841 |
+
|
1842 |
+
if (!Node) var Node = { };
|
1843 |
+
|
1844 |
+
if (!Node.ELEMENT_NODE) {
|
1845 |
+
Object.extend(Node, {
|
1846 |
+
ELEMENT_NODE: 1,
|
1847 |
+
ATTRIBUTE_NODE: 2,
|
1848 |
+
TEXT_NODE: 3,
|
1849 |
+
CDATA_SECTION_NODE: 4,
|
1850 |
+
ENTITY_REFERENCE_NODE: 5,
|
1851 |
+
ENTITY_NODE: 6,
|
1852 |
+
PROCESSING_INSTRUCTION_NODE: 7,
|
1853 |
+
COMMENT_NODE: 8,
|
1854 |
+
DOCUMENT_NODE: 9,
|
1855 |
+
DOCUMENT_TYPE_NODE: 10,
|
1856 |
+
DOCUMENT_FRAGMENT_NODE: 11,
|
1857 |
+
NOTATION_NODE: 12
|
1858 |
+
});
|
1859 |
+
}
|
1860 |
+
|
1861 |
+
|
1862 |
+
|
1863 |
+
(function(global) {
|
1864 |
+
function shouldUseCache(tagName, attributes) {
|
1865 |
+
if (tagName === 'select') return false;
|
1866 |
+
if ('type' in attributes) return false;
|
1867 |
+
return true;
|
1868 |
+
}
|
1869 |
+
|
1870 |
+
var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){
|
1871 |
+
try {
|
1872 |
+
var el = document.createElement('<input name="x">');
|
1873 |
+
return el.tagName.toLowerCase() === 'input' && el.name === 'x';
|
1874 |
+
}
|
1875 |
+
catch(err) {
|
1876 |
+
return false;
|
1877 |
+
}
|
1878 |
+
})();
|
1879 |
+
|
1880 |
+
var element = global.Element;
|
1881 |
+
|
1882 |
+
global.Element = function(tagName, attributes) {
|
1883 |
+
attributes = attributes || { };
|
1884 |
+
tagName = tagName.toLowerCase();
|
1885 |
+
var cache = Element.cache;
|
1886 |
+
|
1887 |
+
if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) {
|
1888 |
+
tagName = '<' + tagName + ' name="' + attributes.name + '">';
|
1889 |
+
delete attributes.name;
|
1890 |
+
return Element.writeAttribute(document.createElement(tagName), attributes);
|
1891 |
+
}
|
1892 |
+
|
1893 |
+
if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
|
1894 |
+
|
1895 |
+
var node = shouldUseCache(tagName, attributes) ?
|
1896 |
+
cache[tagName].cloneNode(false) : document.createElement(tagName);
|
1897 |
+
|
1898 |
+
return Element.writeAttribute(node, attributes);
|
1899 |
+
};
|
1900 |
+
|
1901 |
+
Object.extend(global.Element, element || { });
|
1902 |
+
if (element) global.Element.prototype = element.prototype;
|
1903 |
+
|
1904 |
+
})(this);
|
1905 |
+
|
1906 |
+
Element.idCounter = 1;
|
1907 |
+
Element.cache = { };
|
1908 |
+
|
1909 |
+
Element._purgeElement = function(element) {
|
1910 |
+
var uid = element._prototypeUID;
|
1911 |
+
if (uid) {
|
1912 |
+
Element.stopObserving(element);
|
1913 |
+
element._prototypeUID = void 0;
|
1914 |
+
delete Element.Storage[uid];
|
1915 |
+
}
|
1916 |
+
}
|
1917 |
+
|
1918 |
+
Element.Methods = {
|
1919 |
+
visible: function(element) {
|
1920 |
+
return $(element).style.display != 'none';
|
1921 |
+
},
|
1922 |
+
|
1923 |
+
toggle: function(element) {
|
1924 |
+
element = $(element);
|
1925 |
+
Element[Element.visible(element) ? 'hide' : 'show'](element);
|
1926 |
+
return element;
|
1927 |
+
},
|
1928 |
+
|
1929 |
+
hide: function(element) {
|
1930 |
+
element = $(element);
|
1931 |
+
element.style.display = 'none';
|
1932 |
+
return element;
|
1933 |
+
},
|
1934 |
+
|
1935 |
+
show: function(element) {
|
1936 |
+
element = $(element);
|
1937 |
+
element.style.display = '';
|
1938 |
+
return element;
|
1939 |
+
},
|
1940 |
+
|
1941 |
+
remove: function(element) {
|
1942 |
+
element = $(element);
|
1943 |
+
element.parentNode.removeChild(element);
|
1944 |
+
return element;
|
1945 |
+
},
|
1946 |
+
|
1947 |
+
update: (function(){
|
1948 |
+
|
1949 |
+
var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){
|
1950 |
+
var el = document.createElement("select"),
|
1951 |
+
isBuggy = true;
|
1952 |
+
el.innerHTML = "<option value=\"test\">test</option>";
|
1953 |
+
if (el.options && el.options[0]) {
|
1954 |
+
isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION";
|
1955 |
+
}
|
1956 |
+
el = null;
|
1957 |
+
return isBuggy;
|
1958 |
+
})();
|
1959 |
+
|
1960 |
+
var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){
|
1961 |
+
try {
|
1962 |
+
var el = document.createElement("table");
|
1963 |
+
if (el && el.tBodies) {
|
1964 |
+
el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>";
|
1965 |
+
var isBuggy = typeof el.tBodies[0] == "undefined";
|
1966 |
+
el = null;
|
1967 |
+
return isBuggy;
|
1968 |
+
}
|
1969 |
+
} catch (e) {
|
1970 |
+
return true;
|
1971 |
+
}
|
1972 |
+
})();
|
1973 |
+
|
1974 |
+
var LINK_ELEMENT_INNERHTML_BUGGY = (function() {
|
1975 |
+
try {
|
1976 |
+
var el = document.createElement('div');
|
1977 |
+
el.innerHTML = "<link>";
|
1978 |
+
var isBuggy = (el.childNodes.length === 0);
|
1979 |
+
el = null;
|
1980 |
+
return isBuggy;
|
1981 |
+
} catch(e) {
|
1982 |
+
return true;
|
1983 |
+
}
|
1984 |
+
})();
|
1985 |
+
|
1986 |
+
var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY ||
|
1987 |
+
TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY;
|
1988 |
+
|
1989 |
+
var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () {
|
1990 |
+
var s = document.createElement("script"),
|
1991 |
+
isBuggy = false;
|
1992 |
+
try {
|
1993 |
+
s.appendChild(document.createTextNode(""));
|
1994 |
+
isBuggy = !s.firstChild ||
|
1995 |
+
s.firstChild && s.firstChild.nodeType !== 3;
|
1996 |
+
} catch (e) {
|
1997 |
+
isBuggy = true;
|
1998 |
+
}
|
1999 |
+
s = null;
|
2000 |
+
return isBuggy;
|
2001 |
+
})();
|
2002 |
+
|
2003 |
+
|
2004 |
+
function update(element, content) {
|
2005 |
+
element = $(element);
|
2006 |
+
var purgeElement = Element._purgeElement;
|
2007 |
+
|
2008 |
+
var descendants = element.getElementsByTagName('*'),
|
2009 |
+
i = descendants.length;
|
2010 |
+
while (i--) purgeElement(descendants[i]);
|
2011 |
+
|
2012 |
+
if (content && content.toElement)
|
2013 |
+
content = content.toElement();
|
2014 |
+
|
2015 |
+
if (Object.isElement(content))
|
2016 |
+
return element.update().insert(content);
|
2017 |
+
|
2018 |
+
content = Object.toHTML(content);
|
2019 |
+
|
2020 |
+
var tagName = element.tagName.toUpperCase();
|
2021 |
+
|
2022 |
+
if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {
|
2023 |
+
element.text = content;
|
2024 |
+
return element;
|
2025 |
+
}
|
2026 |
+
|
2027 |
+
if (ANY_INNERHTML_BUGGY) {
|
2028 |
+
if (tagName in Element._insertionTranslations.tags) {
|
2029 |
+
while (element.firstChild) {
|
2030 |
+
element.removeChild(element.firstChild);
|
2031 |
+
}
|
2032 |
+
Element._getContentFromAnonymousElement(tagName, content.stripScripts())
|
2033 |
+
.each(function(node) {
|
2034 |
+
element.appendChild(node)
|
2035 |
+
});
|
2036 |
+
} else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) {
|
2037 |
+
while (element.firstChild) {
|
2038 |
+
element.removeChild(element.firstChild);
|
2039 |
+
}
|
2040 |
+
var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true);
|
2041 |
+
nodes.each(function(node) { element.appendChild(node) });
|
2042 |
+
}
|
2043 |
+
else {
|
2044 |
+
element.innerHTML = content.stripScripts();
|
2045 |
+
}
|
2046 |
+
}
|
2047 |
+
else {
|
2048 |
+
element.innerHTML = content.stripScripts();
|
2049 |
+
}
|
2050 |
+
|
2051 |
+
content.evalScripts.bind(content).defer();
|
2052 |
+
return element;
|
2053 |
+
}
|
2054 |
+
|
2055 |
+
return update;
|
2056 |
+
})(),
|
2057 |
+
|
2058 |
+
replace: function(element, content) {
|
2059 |
+
element = $(element);
|
2060 |
+
if (content && content.toElement) content = content.toElement();
|
2061 |
+
else if (!Object.isElement(content)) {
|
2062 |
+
content = Object.toHTML(content);
|
2063 |
+
var range = element.ownerDocument.createRange();
|
2064 |
+
range.selectNode(element);
|
2065 |
+
content.evalScripts.bind(content).defer();
|
2066 |
+
content = range.createContextualFragment(content.stripScripts());
|
2067 |
+
}
|
2068 |
+
element.parentNode.replaceChild(content, element);
|
2069 |
+
return element;
|
2070 |
+
},
|
2071 |
+
|
2072 |
+
insert: function(element, insertions) {
|
2073 |
+
element = $(element);
|
2074 |
+
|
2075 |
+
if (Object.isString(insertions) || Object.isNumber(insertions) ||
|
2076 |
+
Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
|
2077 |
+
insertions = {bottom:insertions};
|
2078 |
+
|
2079 |
+
var content, insert, tagName, childNodes;
|
2080 |
+
|
2081 |
+
for (var position in insertions) {
|
2082 |
+
content = insertions[position];
|
2083 |
+
position = position.toLowerCase();
|
2084 |
+
insert = Element._insertionTranslations[position];
|
2085 |
+
|
2086 |
+
if (content && content.toElement) content = content.toElement();
|
2087 |
+
if (Object.isElement(content)) {
|
2088 |
+
insert(element, content);
|
2089 |
+
continue;
|
2090 |
+
}
|
2091 |
+
|
2092 |
+
content = Object.toHTML(content);
|
2093 |
+
|
2094 |
+
tagName = ((position == 'before' || position == 'after')
|
2095 |
+
? element.parentNode : element).tagName.toUpperCase();
|
2096 |
+
|
2097 |
+
childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
|
2098 |
+
|
2099 |
+
if (position == 'top' || position == 'after') childNodes.reverse();
|
2100 |
+
childNodes.each(insert.curry(element));
|
2101 |
+
|
2102 |
+
content.evalScripts.bind(content).defer();
|
2103 |
+
}
|
2104 |
+
|
2105 |
+
return element;
|
2106 |
+
},
|
2107 |
+
|
2108 |
+
wrap: function(element, wrapper, attributes) {
|
2109 |
+
element = $(element);
|
2110 |
+
if (Object.isElement(wrapper))
|
2111 |
+
$(wrapper).writeAttribute(attributes || { });
|
2112 |
+
else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
|
2113 |
+
else wrapper = new Element('div', wrapper);
|
2114 |
+
if (element.parentNode)
|
2115 |
+
element.parentNode.replaceChild(wrapper, element);
|
2116 |
+
wrapper.appendChild(element);
|
2117 |
+
return wrapper;
|
2118 |
+
},
|
2119 |
+
|
2120 |
+
inspect: function(element) {
|
2121 |
+
element = $(element);
|
2122 |
+
var result = '<' + element.tagName.toLowerCase();
|
2123 |
+
$H({'id': 'id', 'className': 'class'}).each(function(pair) {
|
2124 |
+
var property = pair.first(),
|
2125 |
+
attribute = pair.last(),
|
2126 |
+
value = (element[property] || '').toString();
|
2127 |
+
if (value) result += ' ' + attribute + '=' + value.inspect(true);
|
2128 |
+
});
|
2129 |
+
return result + '>';
|
2130 |
+
},
|
2131 |
+
|
2132 |
+
recursivelyCollect: function(element, property, maximumLength) {
|
2133 |
+
element = $(element);
|
2134 |
+
maximumLength = maximumLength || -1;
|
2135 |
+
var elements = [];
|
2136 |
+
|
2137 |
+
while (element = element[property]) {
|
2138 |
+
if (element.nodeType == 1)
|
2139 |
+
elements.push(Element.extend(element));
|
2140 |
+
if (elements.length == maximumLength)
|
2141 |
+
break;
|
2142 |
+
}
|
2143 |
+
|
2144 |
+
return elements;
|
2145 |
+
},
|
2146 |
+
|
2147 |
+
ancestors: function(element) {
|
2148 |
+
return Element.recursivelyCollect(element, 'parentNode');
|
2149 |
+
},
|
2150 |
+
|
2151 |
+
descendants: function(element) {
|
2152 |
+
return Element.select(element, "*");
|
2153 |
+
},
|
2154 |
+
|
2155 |
+
firstDescendant: function(element) {
|
2156 |
+
element = $(element).firstChild;
|
2157 |
+
while (element && element.nodeType != 1) element = element.nextSibling;
|
2158 |
+
return $(element);
|
2159 |
+
},
|
2160 |
+
|
2161 |
+
immediateDescendants: function(element) {
|
2162 |
+
var results = [], child = $(element).firstChild;
|
2163 |
+
while (child) {
|
2164 |
+
if (child.nodeType === 1) {
|
2165 |
+
results.push(Element.extend(child));
|
2166 |
+
}
|
2167 |
+
child = child.nextSibling;
|
2168 |
+
}
|
2169 |
+
return results;
|
2170 |
+
},
|
2171 |
+
|
2172 |
+
previousSiblings: function(element, maximumLength) {
|
2173 |
+
return Element.recursivelyCollect(element, 'previousSibling');
|
2174 |
+
},
|
2175 |
+
|
2176 |
+
nextSiblings: function(element) {
|
2177 |
+
return Element.recursivelyCollect(element, 'nextSibling');
|
2178 |
+
},
|
2179 |
+
|
2180 |
+
siblings: function(element) {
|
2181 |
+
element = $(element);
|
2182 |
+
return Element.previousSiblings(element).reverse()
|
2183 |
+
.concat(Element.nextSiblings(element));
|
2184 |
+
},
|
2185 |
+
|
2186 |
+
match: function(element, selector) {
|
2187 |
+
element = $(element);
|
2188 |
+
if (Object.isString(selector))
|
2189 |
+
return Prototype.Selector.match(element, selector);
|
2190 |
+
return selector.match(element);
|
2191 |
+
},
|
2192 |
+
|
2193 |
+
up: function(element, expression, index) {
|
2194 |
+
element = $(element);
|
2195 |
+
if (arguments.length == 1) return $(element.parentNode);
|
2196 |
+
var ancestors = Element.ancestors(element);
|
2197 |
+
return Object.isNumber(expression) ? ancestors[expression] :
|
2198 |
+
Prototype.Selector.find(ancestors, expression, index);
|
2199 |
+
},
|
2200 |
+
|
2201 |
+
down: function(element, expression, index) {
|
2202 |
+
element = $(element);
|
2203 |
+
if (arguments.length == 1) return Element.firstDescendant(element);
|
2204 |
+
return Object.isNumber(expression) ? Element.descendants(element)[expression] :
|
2205 |
+
Element.select(element, expression)[index || 0];
|
2206 |
+
},
|
2207 |
+
|
2208 |
+
previous: function(element, expression, index) {
|
2209 |
+
element = $(element);
|
2210 |
+
if (Object.isNumber(expression)) index = expression, expression = false;
|
2211 |
+
if (!Object.isNumber(index)) index = 0;
|
2212 |
+
|
2213 |
+
if (expression) {
|
2214 |
+
return Prototype.Selector.find(element.previousSiblings(), expression, index);
|
2215 |
+
} else {
|
2216 |
+
return element.recursivelyCollect("previousSibling", index + 1)[index];
|
2217 |
+
}
|
2218 |
+
},
|
2219 |
+
|
2220 |
+
next: function(element, expression, index) {
|
2221 |
+
element = $(element);
|
2222 |
+
if (Object.isNumber(expression)) index = expression, expression = false;
|
2223 |
+
if (!Object.isNumber(index)) index = 0;
|
2224 |
+
|
2225 |
+
if (expression) {
|
2226 |
+
return Prototype.Selector.find(element.nextSiblings(), expression, index);
|
2227 |
+
} else {
|
2228 |
+
var maximumLength = Object.isNumber(index) ? index + 1 : 1;
|
2229 |
+
return element.recursivelyCollect("nextSibling", index + 1)[index];
|
2230 |
+
}
|
2231 |
+
},
|
2232 |
+
|
2233 |
+
|
2234 |
+
select: function(element) {
|
2235 |
+
element = $(element);
|
2236 |
+
var expressions = Array.prototype.slice.call(arguments, 1).join(', ');
|
2237 |
+
return Prototype.Selector.select(expressions, element);
|
2238 |
+
},
|
2239 |
+
|
2240 |
+
adjacent: function(element) {
|
2241 |
+
element = $(element);
|
2242 |
+
var expressions = Array.prototype.slice.call(arguments, 1).join(', ');
|
2243 |
+
return Prototype.Selector.select(expressions, element.parentNode).without(element);
|
2244 |
+
},
|
2245 |
+
|
2246 |
+
identify: function(element) {
|
2247 |
+
element = $(element);
|
2248 |
+
var id = Element.readAttribute(element, 'id');
|
2249 |
+
if (id) return id;
|
2250 |
+
do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id));
|
2251 |
+
Element.writeAttribute(element, 'id', id);
|
2252 |
+
return id;
|
2253 |
+
},
|
2254 |
+
|
2255 |
+
readAttribute: function(element, name) {
|
2256 |
+
element = $(element);
|
2257 |
+
if (Prototype.Browser.IE) {
|
2258 |
+
var t = Element._attributeTranslations.read;
|
2259 |
+
if (t.values[name]) return t.values[name](element, name);
|
2260 |
+
if (t.names[name]) name = t.names[name];
|
2261 |
+
if (name.include(':')) {
|
2262 |
+
return (!element.attributes || !element.attributes[name]) ? null :
|
2263 |
+
element.attributes[name].value;
|
2264 |
+
}
|
2265 |
+
}
|
2266 |
+
return element.getAttribute(name);
|
2267 |
+
},
|
2268 |
+
|
2269 |
+
writeAttribute: function(element, name, value) {
|
2270 |
+
element = $(element);
|
2271 |
+
var attributes = { }, t = Element._attributeTranslations.write;
|
2272 |
+
|
2273 |
+
if (typeof name == 'object') attributes = name;
|
2274 |
+
else attributes[name] = Object.isUndefined(value) ? true : value;
|
2275 |
+
|
2276 |
+
for (var attr in attributes) {
|
2277 |
+
name = t.names[attr] || attr;
|
2278 |
+
value = attributes[attr];
|
2279 |
+
if (t.values[attr]) name = t.values[attr](element, value);
|
2280 |
+
if (value === false || value === null)
|
2281 |
+
element.removeAttribute(name);
|
2282 |
+
else if (value === true)
|
2283 |
+
element.setAttribute(name, name);
|
2284 |
+
else element.setAttribute(name, value);
|
2285 |
+
}
|
2286 |
+
return element;
|
2287 |
+
},
|
2288 |
+
|
2289 |
+
getHeight: function(element) {
|
2290 |
+
return Element.getDimensions(element).height;
|
2291 |
+
},
|
2292 |
+
|
2293 |
+
getWidth: function(element) {
|
2294 |
+
return Element.getDimensions(element).width;
|
2295 |
+
},
|
2296 |
+
|
2297 |
+
classNames: function(element) {
|
2298 |
+
return new Element.ClassNames(element);
|
2299 |
+
},
|
2300 |
+
|
2301 |
+
hasClassName: function(element, className) {
|
2302 |
+
if (!(element = $(element))) return;
|
2303 |
+
var elementClassName = element.className;
|
2304 |
+
return (elementClassName.length > 0 && (elementClassName == className ||
|
2305 |
+
new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
|
2306 |
+
},
|
2307 |
+
|
2308 |
+
addClassName: function(element, className) {
|
2309 |
+
if (!(element = $(element))) return;
|
2310 |
+
if (!Element.hasClassName(element, className))
|
2311 |
+
element.className += (element.className ? ' ' : '') + className;
|
2312 |
+
return element;
|
2313 |
+
},
|
2314 |
+
|
2315 |
+
removeClassName: function(element, className) {
|
2316 |
+
if (!(element = $(element))) return;
|
2317 |
+
element.className = element.className.replace(
|
2318 |
+
new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
|
2319 |
+
return element;
|
2320 |
+
},
|
2321 |
+
|
2322 |
+
toggleClassName: function(element, className) {
|
2323 |
+
if (!(element = $(element))) return;
|
2324 |
+
return Element[Element.hasClassName(element, className) ?
|
2325 |
+
'removeClassName' : 'addClassName'](element, className);
|
2326 |
+
},
|
2327 |
+
|
2328 |
+
cleanWhitespace: function(element) {
|
2329 |
+
element = $(element);
|
2330 |
+
var node = element.firstChild;
|
2331 |
+
while (node) {
|
2332 |
+
var nextNode = node.nextSibling;
|
2333 |
+
if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
|
2334 |
+
element.removeChild(node);
|
2335 |
+
node = nextNode;
|
2336 |
+
}
|
2337 |
+
return element;
|
2338 |
+
},
|
2339 |
+
|
2340 |
+
empty: function(element) {
|
2341 |
+
return $(element).innerHTML.blank();
|
2342 |
+
},
|
2343 |
+
|
2344 |
+
descendantOf: function(element, ancestor) {
|
2345 |
+
element = $(element), ancestor = $(ancestor);
|
2346 |
+
|
2347 |
+
if (element.compareDocumentPosition)
|
2348 |
+
return (element.compareDocumentPosition(ancestor) & 8) === 8;
|
2349 |
+
|
2350 |
+
if (ancestor.contains)
|
2351 |
+
return ancestor.contains(element) && ancestor !== element;
|
2352 |
+
|
2353 |
+
while (element = element.parentNode)
|
2354 |
+
if (element == ancestor) return true;
|
2355 |
+
|
2356 |
+
return false;
|
2357 |
+
},
|
2358 |
+
|
2359 |
+
scrollTo: function(element) {
|
2360 |
+
element = $(element);
|
2361 |
+
var pos = Element.cumulativeOffset(element);
|
2362 |
+
window.scrollTo(pos[0], pos[1]);
|
2363 |
+
return element;
|
2364 |
+
},
|
2365 |
+
|
2366 |
+
getStyle: function(element, style) {
|
2367 |
+
element = $(element);
|
2368 |
+
style = style == 'float' ? 'cssFloat' : style.camelize();
|
2369 |
+
var value = element.style[style];
|
2370 |
+
if (!value || value == 'auto') {
|
2371 |
+
var css = document.defaultView.getComputedStyle(element, null);
|
2372 |
+
value = css ? css[style] : null;
|
2373 |
+
}
|
2374 |
+
if (style == 'opacity') return value ? parseFloat(value) : 1.0;
|
2375 |
+
return value == 'auto' ? null : value;
|
2376 |
+
},
|
2377 |
+
|
2378 |
+
getOpacity: function(element) {
|
2379 |
+
return $(element).getStyle('opacity');
|
2380 |
+
},
|
2381 |
+
|
2382 |
+
setStyle: function(element, styles) {
|
2383 |
+
element = $(element);
|
2384 |
+
var elementStyle = element.style, match;
|
2385 |
+
if (Object.isString(styles)) {
|
2386 |
+
element.style.cssText += ';' + styles;
|
2387 |
+
return styles.include('opacity') ?
|
2388 |
+
element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
|
2389 |
+
}
|
2390 |
+
for (var property in styles)
|
2391 |
+
if (property == 'opacity') element.setOpacity(styles[property]);
|
2392 |
+
else
|
2393 |
+
elementStyle[(property == 'float' || property == 'cssFloat') ?
|
2394 |
+
(Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
|
2395 |
+
property] = styles[property];
|
2396 |
+
|
2397 |
+
return element;
|
2398 |
+
},
|
2399 |
+
|
2400 |
+
setOpacity: function(element, value) {
|
2401 |
+
element = $(element);
|
2402 |
+
element.style.opacity = (value == 1 || value === '') ? '' :
|
2403 |
+
(value < 0.00001) ? 0 : value;
|
2404 |
+
return element;
|
2405 |
+
},
|
2406 |
+
|
2407 |
+
makePositioned: function(element) {
|
2408 |
+
element = $(element);
|
2409 |
+
var pos = Element.getStyle(element, 'position');
|
2410 |
+
if (pos == 'static' || !pos) {
|
2411 |
+
element._madePositioned = true;
|
2412 |
+
element.style.position = 'relative';
|
2413 |
+
if (Prototype.Browser.Opera) {
|
2414 |
+
element.style.top = 0;
|
2415 |
+
element.style.left = 0;
|
2416 |
+
}
|
2417 |
+
}
|
2418 |
+
return element;
|
2419 |
+
},
|
2420 |
+
|
2421 |
+
undoPositioned: function(element) {
|
2422 |
+
element = $(element);
|
2423 |
+
if (element._madePositioned) {
|
2424 |
+
element._madePositioned = undefined;
|
2425 |
+
element.style.position =
|
2426 |
+
element.style.top =
|
2427 |
+
element.style.left =
|
2428 |
+
element.style.bottom =
|
2429 |
+
element.style.right = '';
|
2430 |
+
}
|
2431 |
+
return element;
|
2432 |
+
},
|
2433 |
+
|
2434 |
+
makeClipping: function(element) {
|
2435 |
+
element = $(element);
|
2436 |
+
if (element._overflow) return element;
|
2437 |
+
element._overflow = Element.getStyle(element, 'overflow') || 'auto';
|
2438 |
+
if (element._overflow !== 'hidden')
|
2439 |
+
element.style.overflow = 'hidden';
|
2440 |
+
return element;
|
2441 |
+
},
|
2442 |
+
|
2443 |
+
undoClipping: function(element) {
|
2444 |
+
element = $(element);
|
2445 |
+
if (!element._overflow) return element;
|
2446 |
+
element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
|
2447 |
+
element._overflow = null;
|
2448 |
+
return element;
|
2449 |
+
},
|
2450 |
+
|
2451 |
+
clonePosition: function(element, source) {
|
2452 |
+
var options = Object.extend({
|
2453 |
+
setLeft: true,
|
2454 |
+
setTop: true,
|
2455 |
+
setWidth: true,
|
2456 |
+
setHeight: true,
|
2457 |
+
offsetTop: 0,
|
2458 |
+
offsetLeft: 0
|
2459 |
+
}, arguments[2] || { });
|
2460 |
+
|
2461 |
+
source = $(source);
|
2462 |
+
var p = Element.viewportOffset(source), delta = [0, 0], parent = null;
|
2463 |
+
|
2464 |
+
element = $(element);
|
2465 |
+
|
2466 |
+
if (Element.getStyle(element, 'position') == 'absolute') {
|
2467 |
+
parent = Element.getOffsetParent(element);
|
2468 |
+
delta = Element.viewportOffset(parent);
|
2469 |
+
}
|
2470 |
+
|
2471 |
+
if (parent == document.body) {
|
2472 |
+
delta[0] -= document.body.offsetLeft;
|
2473 |
+
delta[1] -= document.body.offsetTop;
|
2474 |
+
}
|
2475 |
+
|
2476 |
+
if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
|
2477 |
+
if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
|
2478 |
+
if (options.setWidth) element.style.width = source.offsetWidth + 'px';
|
2479 |
+
if (options.setHeight) element.style.height = source.offsetHeight + 'px';
|
2480 |
+
return element;
|
2481 |
+
}
|
2482 |
+
};
|
2483 |
+
|
2484 |
+
Object.extend(Element.Methods, {
|
2485 |
+
getElementsBySelector: Element.Methods.select,
|
2486 |
+
|
2487 |
+
childElements: Element.Methods.immediateDescendants
|
2488 |
+
});
|
2489 |
+
|
2490 |
+
Element._attributeTranslations = {
|
2491 |
+
write: {
|
2492 |
+
names: {
|
2493 |
+
className: 'class',
|
2494 |
+
htmlFor: 'for'
|
2495 |
+
},
|
2496 |
+
values: { }
|
2497 |
+
}
|
2498 |
+
};
|
2499 |
+
|
2500 |
+
if (Prototype.Browser.Opera) {
|
2501 |
+
Element.Methods.getStyle = Element.Methods.getStyle.wrap(
|
2502 |
+
function(proceed, element, style) {
|
2503 |
+
switch (style) {
|
2504 |
+
case 'height': case 'width':
|
2505 |
+
if (!Element.visible(element)) return null;
|
2506 |
+
|
2507 |
+
var dim = parseInt(proceed(element, style), 10);
|
2508 |
+
|
2509 |
+
if (dim !== element['offset' + style.capitalize()])
|
2510 |
+
return dim + 'px';
|
2511 |
+
|
2512 |
+
var properties;
|
2513 |
+
if (style === 'height') {
|
2514 |
+
properties = ['border-top-width', 'padding-top',
|
2515 |
+
'padding-bottom', 'border-bottom-width'];
|
2516 |
+
}
|
2517 |
+
else {
|
2518 |
+
properties = ['border-left-width', 'padding-left',
|
2519 |
+
'padding-right', 'border-right-width'];
|
2520 |
+
}
|
2521 |
+
return properties.inject(dim, function(memo, property) {
|
2522 |
+
var val = proceed(element, property);
|
2523 |
+
return val === null ? memo : memo - parseInt(val, 10);
|
2524 |
+
}) + 'px';
|
2525 |
+
default: return proceed(element, style);
|
2526 |
+
}
|
2527 |
+
}
|
2528 |
+
);
|
2529 |
+
|
2530 |
+
Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
|
2531 |
+
function(proceed, element, attribute) {
|
2532 |
+
if (attribute === 'title') return element.title;
|
2533 |
+
return proceed(element, attribute);
|
2534 |
+
}
|
2535 |
+
);
|
2536 |
+
}
|
2537 |
+
|
2538 |
+
else if (Prototype.Browser.IE) {
|
2539 |
+
Element.Methods.getStyle = function(element, style) {
|
2540 |
+
element = $(element);
|
2541 |
+
style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
|
2542 |
+
var value = element.style[style];
|
2543 |
+
if (!value && element.currentStyle) value = element.currentStyle[style];
|
2544 |
+
|
2545 |
+
if (style == 'opacity') {
|
2546 |
+
if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
|
2547 |
+
if (value[1]) return parseFloat(value[1]) / 100;
|
2548 |
+
return 1.0;
|
2549 |
+
}
|
2550 |
+
|
2551 |
+
if (value == 'auto') {
|
2552 |
+
if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
|
2553 |
+
return element['offset' + style.capitalize()] + 'px';
|
2554 |
+
return null;
|
2555 |
+
}
|
2556 |
+
return value;
|
2557 |
+
};
|
2558 |
+
|
2559 |
+
Element.Methods.setOpacity = function(element, value) {
|
2560 |
+
function stripAlpha(filter){
|
2561 |
+
return filter.replace(/alpha\([^\)]*\)/gi,'');
|
2562 |
+
}
|
2563 |
+
element = $(element);
|
2564 |
+
var currentStyle = element.currentStyle;
|
2565 |
+
if ((currentStyle && !currentStyle.hasLayout) ||
|
2566 |
+
(!currentStyle && element.style.zoom == 'normal'))
|
2567 |
+
element.style.zoom = 1;
|
2568 |
+
|
2569 |
+
var filter = element.getStyle('filter'), style = element.style;
|
2570 |
+
if (value == 1 || value === '') {
|
2571 |
+
(filter = stripAlpha(filter)) ?
|
2572 |
+
style.filter = filter : style.removeAttribute('filter');
|
2573 |
+
return element;
|
2574 |
+
} else if (value < 0.00001) value = 0;
|
2575 |
+
style.filter = stripAlpha(filter) +
|
2576 |
+
'alpha(opacity=' + (value * 100) + ')';
|
2577 |
+
return element;
|
2578 |
+
};
|
2579 |
+
|
2580 |
+
Element._attributeTranslations = (function(){
|
2581 |
+
|
2582 |
+
var classProp = 'className',
|
2583 |
+
forProp = 'for',
|
2584 |
+
el = document.createElement('div');
|
2585 |
+
|
2586 |
+
el.setAttribute(classProp, 'x');
|
2587 |
+
|
2588 |
+
if (el.className !== 'x') {
|
2589 |
+
el.setAttribute('class', 'x');
|
2590 |
+
if (el.className === 'x') {
|
2591 |
+
classProp = 'class';
|
2592 |
+
}
|
2593 |
+
}
|
2594 |
+
el = null;
|
2595 |
+
|
2596 |
+
el = document.createElement('label');
|
2597 |
+
el.setAttribute(forProp, 'x');
|
2598 |
+
if (el.htmlFor !== 'x') {
|
2599 |
+
el.setAttribute('htmlFor', 'x');
|
2600 |
+
if (el.htmlFor === 'x') {
|
2601 |
+
forProp = 'htmlFor';
|
2602 |
+
}
|
2603 |
+
}
|
2604 |
+
el = null;
|
2605 |
+
|
2606 |
+
return {
|
2607 |
+
read: {
|
2608 |
+
names: {
|
2609 |
+
'class': classProp,
|
2610 |
+
'className': classProp,
|
2611 |
+
'for': forProp,
|
2612 |
+
'htmlFor': forProp
|
2613 |
+
},
|
2614 |
+
values: {
|
2615 |
+
_getAttr: function(element, attribute) {
|
2616 |
+
return element.getAttribute(attribute);
|
2617 |
+
},
|
2618 |
+
_getAttr2: function(element, attribute) {
|
2619 |
+
return element.getAttribute(attribute, 2);
|
2620 |
+
},
|
2621 |
+
_getAttrNode: function(element, attribute) {
|
2622 |
+
var node = element.getAttributeNode(attribute);
|
2623 |
+
return node ? node.value : "";
|
2624 |
+
},
|
2625 |
+
_getEv: (function(){
|
2626 |
+
|
2627 |
+
var el = document.createElement('div'), f;
|
2628 |
+
el.onclick = Prototype.emptyFunction;
|
2629 |
+
var value = el.getAttribute('onclick');
|
2630 |
+
|
2631 |
+
if (String(value).indexOf('{') > -1) {
|
2632 |
+
f = function(element, attribute) {
|
2633 |
+
attribute = element.getAttribute(attribute);
|
2634 |
+
if (!attribute) return null;
|
2635 |
+
attribute = attribute.toString();
|
2636 |
+
attribute = attribute.split('{')[1];
|
2637 |
+
attribute = attribute.split('}')[0];
|
2638 |
+
return attribute.strip();
|
2639 |
+
};
|
2640 |
+
}
|
2641 |
+
else if (value === '') {
|
2642 |
+
f = function(element, attribute) {
|
2643 |
+
attribute = element.getAttribute(attribute);
|
2644 |
+
if (!attribute) return null;
|
2645 |
+
return attribute.strip();
|
2646 |
+
};
|
2647 |
+
}
|
2648 |
+
el = null;
|
2649 |
+
return f;
|
2650 |
+
})(),
|
2651 |
+
_flag: function(element, attribute) {
|
2652 |
+
return $(element).hasAttribute(attribute) ? attribute : null;
|
2653 |
+
},
|
2654 |
+
style: function(element) {
|
2655 |
+
return element.style.cssText.toLowerCase();
|
2656 |
+
},
|
2657 |
+
title: function(element) {
|
2658 |
+
return element.title;
|
2659 |
+
}
|
2660 |
+
}
|
2661 |
+
}
|
2662 |
+
}
|
2663 |
+
})();
|
2664 |
+
|
2665 |
+
Element._attributeTranslations.write = {
|
2666 |
+
names: Object.extend({
|
2667 |
+
cellpadding: 'cellPadding',
|
2668 |
+
cellspacing: 'cellSpacing'
|
2669 |
+
}, Element._attributeTranslations.read.names),
|
2670 |
+
values: {
|
2671 |
+
checked: function(element, value) {
|
2672 |
+
element.checked = !!value;
|
2673 |
+
},
|
2674 |
+
|
2675 |
+
style: function(element, value) {
|
2676 |
+
element.style.cssText = value ? value : '';
|
2677 |
+
}
|
2678 |
+
}
|
2679 |
+
};
|
2680 |
+
|
2681 |
+
Element._attributeTranslations.has = {};
|
2682 |
+
|
2683 |
+
$w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
|
2684 |
+
'encType maxLength readOnly longDesc frameBorder').each(function(attr) {
|
2685 |
+
Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
|
2686 |
+
Element._attributeTranslations.has[attr.toLowerCase()] = attr;
|
2687 |
+
});
|
2688 |
+
|
2689 |
+
(function(v) {
|
2690 |
+
Object.extend(v, {
|
2691 |
+
href: v._getAttr2,
|
2692 |
+
src: v._getAttr2,
|
2693 |
+
type: v._getAttr,
|
2694 |
+
action: v._getAttrNode,
|
2695 |
+
disabled: v._flag,
|
2696 |
+
checked: v._flag,
|
2697 |
+
readonly: v._flag,
|
2698 |
+
multiple: v._flag,
|
2699 |
+
onload: v._getEv,
|
2700 |
+
onunload: v._getEv,
|
2701 |
+
onclick: v._getEv,
|
2702 |
+
ondblclick: v._getEv,
|
2703 |
+
onmousedown: v._getEv,
|
2704 |
+
onmouseup: v._getEv,
|
2705 |
+
onmouseover: v._getEv,
|
2706 |
+
onmousemove: v._getEv,
|
2707 |
+
onmouseout: v._getEv,
|
2708 |
+
onfocus: v._getEv,
|
2709 |
+
onblur: v._getEv,
|
2710 |
+
onkeypress: v._getEv,
|
2711 |
+
onkeydown: v._getEv,
|
2712 |
+
onkeyup: v._getEv,
|
2713 |
+
onsubmit: v._getEv,
|
2714 |
+
onreset: v._getEv,
|
2715 |
+
onselect: v._getEv,
|
2716 |
+
onchange: v._getEv
|
2717 |
+
});
|
2718 |
+
})(Element._attributeTranslations.read.values);
|
2719 |
+
|
2720 |
+
if (Prototype.BrowserFeatures.ElementExtensions) {
|
2721 |
+
(function() {
|
2722 |
+
function _descendants(element) {
|
2723 |
+
var nodes = element.getElementsByTagName('*'), results = [];
|
2724 |
+
for (var i = 0, node; node = nodes[i]; i++)
|
2725 |
+
if (node.tagName !== "!") // Filter out comment nodes.
|
2726 |
+
results.push(node);
|
2727 |
+
return results;
|
2728 |
+
}
|
2729 |
+
|
2730 |
+
Element.Methods.down = function(element, expression, index) {
|
2731 |
+
element = $(element);
|
2732 |
+
if (arguments.length == 1) return element.firstDescendant();
|
2733 |
+
return Object.isNumber(expression) ? _descendants(element)[expression] :
|
2734 |
+
Element.select(element, expression)[index || 0];
|
2735 |
+
}
|
2736 |
+
})();
|
2737 |
+
}
|
2738 |
+
|
2739 |
+
}
|
2740 |
+
|
2741 |
+
else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
|
2742 |
+
Element.Methods.setOpacity = function(element, value) {
|
2743 |
+
element = $(element);
|
2744 |
+
element.style.opacity = (value == 1) ? 0.999999 :
|
2745 |
+
(value === '') ? '' : (value < 0.00001) ? 0 : value;
|
2746 |
+
return element;
|
2747 |
+
};
|
2748 |
+
}
|
2749 |
+
|
2750 |
+
else if (Prototype.Browser.WebKit) {
|
2751 |
+
Element.Methods.setOpacity = function(element, value) {
|
2752 |
+
element = $(element);
|
2753 |
+
element.style.opacity = (value == 1 || value === '') ? '' :
|
2754 |
+
(value < 0.00001) ? 0 : value;
|
2755 |
+
|
2756 |
+
if (value == 1)
|
2757 |
+
if (element.tagName.toUpperCase() == 'IMG' && element.width) {
|
2758 |
+
element.width++; element.width--;
|
2759 |
+
} else try {
|
2760 |
+
var n = document.createTextNode(' ');
|
2761 |
+
element.appendChild(n);
|
2762 |
+
element.removeChild(n);
|
2763 |
+
} catch (e) { }
|
2764 |
+
|
2765 |
+
return element;
|
2766 |
+
};
|
2767 |
+
}
|
2768 |
+
|
2769 |
+
if ('outerHTML' in document.documentElement) {
|
2770 |
+
Element.Methods.replace = function(element, content) {
|
2771 |
+
element = $(element);
|
2772 |
+
|
2773 |
+
if (content && content.toElement) content = content.toElement();
|
2774 |
+
if (Object.isElement(content)) {
|
2775 |
+
element.parentNode.replaceChild(content, element);
|
2776 |
+
return element;
|
2777 |
+
}
|
2778 |
+
|
2779 |
+
content = Object.toHTML(content);
|
2780 |
+
var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
|
2781 |
+
|
2782 |
+
if (Element._insertionTranslations.tags[tagName]) {
|
2783 |
+
var nextSibling = element.next(),
|
2784 |
+
fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
|
2785 |
+
parent.removeChild(element);
|
2786 |
+
if (nextSibling)
|
2787 |
+
fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
|
2788 |
+
else
|
2789 |
+
fragments.each(function(node) { parent.appendChild(node) });
|
2790 |
+
}
|
2791 |
+
else element.outerHTML = content.stripScripts();
|
2792 |
+
|
2793 |
+
content.evalScripts.bind(content).defer();
|
2794 |
+
return element;
|
2795 |
+
};
|
2796 |
+
}
|
2797 |
+
|
2798 |
+
Element._returnOffset = function(l, t) {
|
2799 |
+
var result = [l, t];
|
2800 |
+
result.left = l;
|
2801 |
+
result.top = t;
|
2802 |
+
return result;
|
2803 |
+
};
|
2804 |
+
|
2805 |
+
Element._getContentFromAnonymousElement = function(tagName, html, force) {
|
2806 |
+
var div = new Element('div'),
|
2807 |
+
t = Element._insertionTranslations.tags[tagName];
|
2808 |
+
|
2809 |
+
var workaround = false;
|
2810 |
+
if (t) workaround = true;
|
2811 |
+
else if (force) {
|
2812 |
+
workaround = true;
|
2813 |
+
t = ['', '', 0];
|
2814 |
+
}
|
2815 |
+
|
2816 |
+
if (workaround) {
|
2817 |
+
div.innerHTML = ' ' + t[0] + html + t[1];
|
2818 |
+
div.removeChild(div.firstChild);
|
2819 |
+
for (var i = t[2]; i--; ) {
|
2820 |
+
div = div.firstChild;
|
2821 |
+
}
|
2822 |
+
}
|
2823 |
+
else {
|
2824 |
+
div.innerHTML = html;
|
2825 |
+
}
|
2826 |
+
return $A(div.childNodes);
|
2827 |
+
};
|
2828 |
+
|
2829 |
+
Element._insertionTranslations = {
|
2830 |
+
before: function(element, node) {
|
2831 |
+
element.parentNode.insertBefore(node, element);
|
2832 |
+
},
|
2833 |
+
top: function(element, node) {
|
2834 |
+
element.insertBefore(node, element.firstChild);
|
2835 |
+
},
|
2836 |
+
bottom: function(element, node) {
|
2837 |
+
element.appendChild(node);
|
2838 |
+
},
|
2839 |
+
after: function(element, node) {
|
2840 |
+
element.parentNode.insertBefore(node, element.nextSibling);
|
2841 |
+
},
|
2842 |
+
tags: {
|
2843 |
+
TABLE: ['<table>', '</table>', 1],
|
2844 |
+
TBODY: ['<table><tbody>', '</tbody></table>', 2],
|
2845 |
+
TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3],
|
2846 |
+
TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
|
2847 |
+
SELECT: ['<select>', '</select>', 1]
|
2848 |
+
}
|
2849 |
+
};
|
2850 |
+
|
2851 |
+
(function() {
|
2852 |
+
var tags = Element._insertionTranslations.tags;
|
2853 |
+
Object.extend(tags, {
|
2854 |
+
THEAD: tags.TBODY,
|
2855 |
+
TFOOT: tags.TBODY,
|
2856 |
+
TH: tags.TD
|
2857 |
+
});
|
2858 |
+
})();
|
2859 |
+
|
2860 |
+
Element.Methods.Simulated = {
|
2861 |
+
hasAttribute: function(element, attribute) {
|
2862 |
+
attribute = Element._attributeTranslations.has[attribute] || attribute;
|
2863 |
+
var node = $(element).getAttributeNode(attribute);
|
2864 |
+
return !!(node && node.specified);
|
2865 |
+
}
|
2866 |
+
};
|
2867 |
+
|
2868 |
+
Element.Methods.ByTag = { };
|
2869 |
+
|
2870 |
+
Object.extend(Element, Element.Methods);
|
2871 |
+
|
2872 |
+
(function(div) {
|
2873 |
+
|
2874 |
+
if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {
|
2875 |
+
window.HTMLElement = { };
|
2876 |
+
window.HTMLElement.prototype = div['__proto__'];
|
2877 |
+
Prototype.BrowserFeatures.ElementExtensions = true;
|
2878 |
+
}
|
2879 |
+
|
2880 |
+
div = null;
|
2881 |
+
|
2882 |
+
})(document.createElement('div'));
|
2883 |
+
|
2884 |
+
Element.extend = (function() {
|
2885 |
+
|
2886 |
+
function checkDeficiency(tagName) {
|
2887 |
+
if (typeof window.Element != 'undefined') {
|
2888 |
+
var proto = window.Element.prototype;
|
2889 |
+
if (proto) {
|
2890 |
+
var id = '_' + (Math.random()+'').slice(2),
|
2891 |
+
el = document.createElement(tagName);
|
2892 |
+
proto[id] = 'x';
|
2893 |
+
var isBuggy = (el[id] !== 'x');
|
2894 |
+
delete proto[id];
|
2895 |
+
el = null;
|
2896 |
+
return isBuggy;
|
2897 |
+
}
|
2898 |
+
}
|
2899 |
+
return false;
|
2900 |
+
}
|
2901 |
+
|
2902 |
+
function extendElementWith(element, methods) {
|
2903 |
+
for (var property in methods) {
|
2904 |
+
var value = methods[property];
|
2905 |
+
if (Object.isFunction(value) && !(property in element))
|
2906 |
+
element[property] = value.methodize();
|
2907 |
+
}
|
2908 |
+
}
|
2909 |
+
|
2910 |
+
var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object');
|
2911 |
+
|
2912 |
+
if (Prototype.BrowserFeatures.SpecificElementExtensions) {
|
2913 |
+
if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) {
|
2914 |
+
return function(element) {
|
2915 |
+
if (element && typeof element._extendedByPrototype == 'undefined') {
|
2916 |
+
var t = element.tagName;
|
2917 |
+
if (t && (/^(?:object|applet|embed)$/i.test(t))) {
|
2918 |
+
extendElementWith(element, Element.Methods);
|
2919 |
+
extendElementWith(element, Element.Methods.Simulated);
|
2920 |
+
extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]);
|
2921 |
+
}
|
2922 |
+
}
|
2923 |
+
return element;
|
2924 |
+
}
|
2925 |
+
}
|
2926 |
+
return Prototype.K;
|
2927 |
+
}
|
2928 |
+
|
2929 |
+
var Methods = { }, ByTag = Element.Methods.ByTag;
|
2930 |
+
|
2931 |
+
var extend = Object.extend(function(element) {
|
2932 |
+
if (!element || typeof element._extendedByPrototype != 'undefined' ||
|
2933 |
+
element.nodeType != 1 || element == window) return element;
|
2934 |
+
|
2935 |
+
var methods = Object.clone(Methods),
|
2936 |
+
tagName = element.tagName.toUpperCase();
|
2937 |
+
|
2938 |
+
if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
|
2939 |
+
|
2940 |
+
extendElementWith(element, methods);
|
2941 |
+
|
2942 |
+
element._extendedByPrototype = Prototype.emptyFunction;
|
2943 |
+
return element;
|
2944 |
+
|
2945 |
+
}, {
|
2946 |
+
refresh: function() {
|
2947 |
+
if (!Prototype.BrowserFeatures.ElementExtensions) {
|
2948 |
+
Object.extend(Methods, Element.Methods);
|
2949 |
+
Object.extend(Methods, Element.Methods.Simulated);
|
2950 |
+
}
|
2951 |
+
}
|
2952 |
+
});
|
2953 |
+
|
2954 |
+
extend.refresh();
|
2955 |
+
return extend;
|
2956 |
+
})();
|
2957 |
+
|
2958 |
+
if (document.documentElement.hasAttribute) {
|
2959 |
+
Element.hasAttribute = function(element, attribute) {
|
2960 |
+
return element.hasAttribute(attribute);
|
2961 |
+
};
|
2962 |
+
}
|
2963 |
+
else {
|
2964 |
+
Element.hasAttribute = Element.Methods.Simulated.hasAttribute;
|
2965 |
+
}
|
2966 |
+
|
2967 |
+
Element.addMethods = function(methods) {
|
2968 |
+
var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
|
2969 |
+
|
2970 |
+
if (!methods) {
|
2971 |
+
Object.extend(Form, Form.Methods);
|
2972 |
+
Object.extend(Form.Element, Form.Element.Methods);
|
2973 |
+
Object.extend(Element.Methods.ByTag, {
|
2974 |
+
"FORM": Object.clone(Form.Methods),
|
2975 |
+
"INPUT": Object.clone(Form.Element.Methods),
|
2976 |
+
"SELECT": Object.clone(Form.Element.Methods),
|
2977 |
+
"TEXTAREA": Object.clone(Form.Element.Methods),
|
2978 |
+
"BUTTON": Object.clone(Form.Element.Methods)
|
2979 |
+
});
|
2980 |
+
}
|
2981 |
+
|
2982 |
+
if (arguments.length == 2) {
|
2983 |
+
var tagName = methods;
|
2984 |
+
methods = arguments[1];
|
2985 |
+
}
|
2986 |
+
|
2987 |
+
if (!tagName) Object.extend(Element.Methods, methods || { });
|
2988 |
+
else {
|
2989 |
+
if (Object.isArray(tagName)) tagName.each(extend);
|
2990 |
+
else extend(tagName);
|
2991 |
+
}
|
2992 |
+
|
2993 |
+
function extend(tagName) {
|
2994 |
+
tagName = tagName.toUpperCase();
|
2995 |
+
if (!Element.Methods.ByTag[tagName])
|
2996 |
+
Element.Methods.ByTag[tagName] = { };
|
2997 |
+
Object.extend(Element.Methods.ByTag[tagName], methods);
|
2998 |
+
}
|
2999 |
+
|
3000 |
+
function copy(methods, destination, onlyIfAbsent) {
|
3001 |
+
onlyIfAbsent = onlyIfAbsent || false;
|
3002 |
+
for (var property in methods) {
|
3003 |
+
var value = methods[property];
|
3004 |
+
if (!Object.isFunction(value)) continue;
|
3005 |
+
if (!onlyIfAbsent || !(property in destination))
|
3006 |
+
destination[property] = value.methodize();
|
3007 |
+
}
|
3008 |
+
}
|
3009 |
+
|
3010 |
+
function findDOMClass(tagName) {
|
3011 |
+
var klass;
|
3012 |
+
var trans = {
|
3013 |
+
"OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
|
3014 |
+
"FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
|
3015 |
+
"DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
|
3016 |
+
"H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
|
3017 |
+
"INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
|
3018 |
+
"TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
|
3019 |
+
"TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
|
3020 |
+
"TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
|
3021 |
+
"FrameSet", "IFRAME": "IFrame"
|
3022 |
+
};
|
3023 |
+
if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
|
3024 |
+
if (window[klass]) return window[klass];
|
3025 |
+
klass = 'HTML' + tagName + 'Element';
|
3026 |
+
if (window[klass]) return window[klass];
|
3027 |
+
klass = 'HTML' + tagName.capitalize() + 'Element';
|
3028 |
+
if (window[klass]) return window[klass];
|
3029 |
+
|
3030 |
+
var element = document.createElement(tagName),
|
3031 |
+
proto = element['__proto__'] || element.constructor.prototype;
|
3032 |
+
|
3033 |
+
element = null;
|
3034 |
+
return proto;
|
3035 |
+
}
|
3036 |
+
|
3037 |
+
var elementPrototype = window.HTMLElement ? HTMLElement.prototype :
|
3038 |
+
Element.prototype;
|
3039 |
+
|
3040 |
+
if (F.ElementExtensions) {
|
3041 |
+
copy(Element.Methods, elementPrototype);
|
3042 |
+
copy(Element.Methods.Simulated, elementPrototype, true);
|
3043 |
+
}
|
3044 |
+
|
3045 |
+
if (F.SpecificElementExtensions) {
|
3046 |
+
for (var tag in Element.Methods.ByTag) {
|
3047 |
+
var klass = findDOMClass(tag);
|
3048 |
+
if (Object.isUndefined(klass)) continue;
|
3049 |
+
copy(T[tag], klass.prototype);
|
3050 |
+
}
|
3051 |
+
}
|
3052 |
+
|
3053 |
+
Object.extend(Element, Element.Methods);
|
3054 |
+
delete Element.ByTag;
|
3055 |
+
|
3056 |
+
if (Element.extend.refresh) Element.extend.refresh();
|
3057 |
+
Element.cache = { };
|
3058 |
+
};
|
3059 |
+
|
3060 |
+
|
3061 |
+
document.viewport = {
|
3062 |
+
|
3063 |
+
getDimensions: function() {
|
3064 |
+
return { width: this.getWidth(), height: this.getHeight() };
|
3065 |
+
},
|
3066 |
+
|
3067 |
+
getScrollOffsets: function() {
|
3068 |
+
return Element._returnOffset(
|
3069 |
+
window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
|
3070 |
+
window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
|
3071 |
+
}
|
3072 |
+
};
|
3073 |
+
|
3074 |
+
(function(viewport) {
|
3075 |
+
var B = Prototype.Browser, doc = document, element, property = {};
|
3076 |
+
|
3077 |
+
function getRootElement() {
|
3078 |
+
if (B.WebKit && !doc.evaluate)
|
3079 |
+
return document;
|
3080 |
+
|
3081 |
+
if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)
|
3082 |
+
return document.body;
|
3083 |
+
|
3084 |
+
return document.documentElement;
|
3085 |
+
}
|
3086 |
+
|
3087 |
+
function define(D) {
|
3088 |
+
if (!element) element = getRootElement();
|
3089 |
+
|
3090 |
+
property[D] = 'client' + D;
|
3091 |
+
|
3092 |
+
viewport['get' + D] = function() { return element[property[D]] };
|
3093 |
+
return viewport['get' + D]();
|
3094 |
+
}
|
3095 |
+
|
3096 |
+
viewport.getWidth = define.curry('Width');
|
3097 |
+
|
3098 |
+
viewport.getHeight = define.curry('Height');
|
3099 |
+
})(document.viewport);
|
3100 |
+
|
3101 |
+
|
3102 |
+
Element.Storage = {
|
3103 |
+
UID: 1
|
3104 |
+
};
|
3105 |
+
|
3106 |
+
Element.addMethods({
|
3107 |
+
getStorage: function(element) {
|
3108 |
+
if (!(element = $(element))) return;
|
3109 |
+
|
3110 |
+
var uid;
|
3111 |
+
if (element === window) {
|
3112 |
+
uid = 0;
|
3113 |
+
} else {
|
3114 |
+
if (typeof element._prototypeUID === "undefined")
|
3115 |
+
element._prototypeUID = Element.Storage.UID++;
|
3116 |
+
uid = element._prototypeUID;
|
3117 |
+
}
|
3118 |
+
|
3119 |
+
if (!Element.Storage[uid])
|
3120 |
+
Element.Storage[uid] = $H();
|
3121 |
+
|
3122 |
+
return Element.Storage[uid];
|
3123 |
+
},
|
3124 |
+
|
3125 |
+
store: function(element, key, value) {
|
3126 |
+
if (!(element = $(element))) return;
|
3127 |
+
|
3128 |
+
if (arguments.length === 2) {
|
3129 |
+
Element.getStorage(element).update(key);
|
3130 |
+
} else {
|
3131 |
+
Element.getStorage(element).set(key, value);
|
3132 |
+
}
|
3133 |
+
|
3134 |
+
return element;
|
3135 |
+
},
|
3136 |
+
|
3137 |
+
retrieve: function(element, key, defaultValue) {
|
3138 |
+
if (!(element = $(element))) return;
|
3139 |
+
var hash = Element.getStorage(element), value = hash.get(key);
|
3140 |
+
|
3141 |
+
if (Object.isUndefined(value)) {
|
3142 |
+
hash.set(key, defaultValue);
|
3143 |
+
value = defaultValue;
|
3144 |
+
}
|
3145 |
+
|
3146 |
+
return value;
|
3147 |
+
},
|
3148 |
+
|
3149 |
+
clone: function(element, deep) {
|
3150 |
+
if (!(element = $(element))) return;
|
3151 |
+
var clone = element.cloneNode(deep);
|
3152 |
+
clone._prototypeUID = void 0;
|
3153 |
+
if (deep) {
|
3154 |
+
var descendants = Element.select(clone, '*'),
|
3155 |
+
i = descendants.length;
|
3156 |
+
while (i--) {
|
3157 |
+
descendants[i]._prototypeUID = void 0;
|
3158 |
+
}
|
3159 |
+
}
|
3160 |
+
return Element.extend(clone);
|
3161 |
+
},
|
3162 |
+
|
3163 |
+
purge: function(element) {
|
3164 |
+
if (!(element = $(element))) return;
|
3165 |
+
var purgeElement = Element._purgeElement;
|
3166 |
+
|
3167 |
+
purgeElement(element);
|
3168 |
+
|
3169 |
+
var descendants = element.getElementsByTagName('*'),
|
3170 |
+
i = descendants.length;
|
3171 |
+
|
3172 |
+
while (i--) purgeElement(descendants[i]);
|
3173 |
+
|
3174 |
+
return null;
|
3175 |
+
}
|
3176 |
+
});
|
3177 |
+
|
3178 |
+
(function() {
|
3179 |
+
|
3180 |
+
function toDecimal(pctString) {
|
3181 |
+
var match = pctString.match(/^(\d+)%?$/i);
|
3182 |
+
if (!match) return null;
|
3183 |
+
return (Number(match[1]) / 100);
|
3184 |
+
}
|
3185 |
+
|
3186 |
+
function getPixelValue(value, property, context) {
|
3187 |
+
var element = null;
|
3188 |
+
if (Object.isElement(value)) {
|
3189 |
+
element = value;
|
3190 |
+
value = element.getStyle(property);
|
3191 |
+
}
|
3192 |
+
|
3193 |
+
if (value === null) {
|
3194 |
+
return null;
|
3195 |
+
}
|
3196 |
+
|
3197 |
+
if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) {
|
3198 |
+
return window.parseFloat(value);
|
3199 |
+
}
|
3200 |
+
|
3201 |
+
var isPercentage = value.include('%'), isViewport = (context === document.viewport);
|
3202 |
+
|
3203 |
+
if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) {
|
3204 |
+
var style = element.style.left, rStyle = element.runtimeStyle.left;
|
3205 |
+
element.runtimeStyle.left = element.currentStyle.left;
|
3206 |
+
element.style.left = value || 0;
|
3207 |
+
value = element.style.pixelLeft;
|
3208 |
+
element.style.left = style;
|
3209 |
+
element.runtimeStyle.left = rStyle;
|
3210 |
+
|
3211 |
+
return value;
|
3212 |
+
}
|
3213 |
+
|
3214 |
+
if (element && isPercentage) {
|
3215 |
+
context = context || element.parentNode;
|
3216 |
+
var decimal = toDecimal(value);
|
3217 |
+
var whole = null;
|
3218 |
+
var position = element.getStyle('position');
|
3219 |
+
|
3220 |
+
var isHorizontal = property.include('left') || property.include('right') ||
|
3221 |
+
property.include('width');
|
3222 |
+
|
3223 |
+
var isVertical = property.include('top') || property.include('bottom') ||
|
3224 |
+
property.include('height');
|
3225 |
+
|
3226 |
+
if (context === document.viewport) {
|
3227 |
+
if (isHorizontal) {
|
3228 |
+
whole = document.viewport.getWidth();
|
3229 |
+
} else if (isVertical) {
|
3230 |
+
whole = document.viewport.getHeight();
|
3231 |
+
}
|
3232 |
+
} else {
|
3233 |
+
if (isHorizontal) {
|
3234 |
+
whole = $(context).measure('width');
|
3235 |
+
} else if (isVertical) {
|
3236 |
+
whole = $(context).measure('height');
|
3237 |
+
}
|
3238 |
+
}
|
3239 |
+
|
3240 |
+
return (whole === null) ? 0 : whole * decimal;
|
3241 |
+
}
|
3242 |
+
|
3243 |
+
return 0;
|
3244 |
+
}
|
3245 |
+
|
3246 |
+
function toCSSPixels(number) {
|
3247 |
+
if (Object.isString(number) && number.endsWith('px')) {
|
3248 |
+
return number;
|
3249 |
+
}
|
3250 |
+
return number + 'px';
|
3251 |
+
}
|
3252 |
+
|
3253 |
+
function isDisplayed(element) {
|
3254 |
+
var originalElement = element;
|
3255 |
+
while (element && element.parentNode) {
|
3256 |
+
var display = element.getStyle('display');
|
3257 |
+
if (display === 'none') {
|
3258 |
+
return false;
|
3259 |
+
}
|
3260 |
+
element = $(element.parentNode);
|
3261 |
+
}
|
3262 |
+
return true;
|
3263 |
+
}
|
3264 |
+
|
3265 |
+
var hasLayout = Prototype.K;
|
3266 |
+
if ('currentStyle' in document.documentElement) {
|
3267 |
+
hasLayout = function(element) {
|
3268 |
+
if (!element.currentStyle.hasLayout) {
|
3269 |
+
element.style.zoom = 1;
|
3270 |
+
}
|
3271 |
+
return element;
|
3272 |
+
};
|
3273 |
+
}
|
3274 |
+
|
3275 |
+
function cssNameFor(key) {
|
3276 |
+
if (key.include('border')) key = key + '-width';
|
3277 |
+
return key.camelize();
|
3278 |
+
}
|
3279 |
+
|
3280 |
+
Element.Layout = Class.create(Hash, {
|
3281 |
+
initialize: function($super, element, preCompute) {
|
3282 |
+
$super();
|
3283 |
+
this.element = $(element);
|
3284 |
+
|
3285 |
+
Element.Layout.PROPERTIES.each( function(property) {
|
3286 |
+
this._set(property, null);
|
3287 |
+
}, this);
|
3288 |
+
|
3289 |
+
if (preCompute) {
|
3290 |
+
this._preComputing = true;
|
3291 |
+
this._begin();
|
3292 |
+
Element.Layout.PROPERTIES.each( this._compute, this );
|
3293 |
+
this._end();
|
3294 |
+
this._preComputing = false;
|
3295 |
+
}
|
3296 |
+
},
|
3297 |
+
|
3298 |
+
_set: function(property, value) {
|
3299 |
+
return Hash.prototype.set.call(this, property, value);
|
3300 |
+
},
|
3301 |
+
|
3302 |
+
set: function(property, value) {
|
3303 |
+
throw "Properties of Element.Layout are read-only.";
|
3304 |
+
},
|
3305 |
+
|
3306 |
+
get: function($super, property) {
|
3307 |
+
var value = $super(property);
|
3308 |
+
return value === null ? this._compute(property) : value;
|
3309 |
+
},
|
3310 |
+
|
3311 |
+
_begin: function() {
|
3312 |
+
if (this._prepared) return;
|
3313 |
+
|
3314 |
+
var element = this.element;
|
3315 |
+
if (isDisplayed(element)) {
|
3316 |
+
this._prepared = true;
|
3317 |
+
return;
|
3318 |
+
}
|
3319 |
+
|
3320 |
+
var originalStyles = {
|
3321 |
+
position: element.style.position || '',
|
3322 |
+
width: element.style.width || '',
|
3323 |
+
visibility: element.style.visibility || '',
|
3324 |
+
display: element.style.display || ''
|
3325 |
+
};
|
3326 |
+
|
3327 |
+
element.store('prototype_original_styles', originalStyles);
|
3328 |
+
|
3329 |
+
var position = element.getStyle('position'),
|
3330 |
+
width = element.getStyle('width');
|
3331 |
+
|
3332 |
+
if (width === "0px" || width === null) {
|
3333 |
+
element.style.display = 'block';
|
3334 |
+
width = element.getStyle('width');
|
3335 |
+
}
|
3336 |
+
|
3337 |
+
var context = (position === 'fixed') ? document.viewport :
|
3338 |
+
element.parentNode;
|
3339 |
+
|
3340 |
+
element.setStyle({
|
3341 |
+
position: 'absolute',
|
3342 |
+
visibility: 'hidden',
|
3343 |
+
display: 'block'
|
3344 |
+
});
|
3345 |
+
|
3346 |
+
var positionedWidth = element.getStyle('width');
|
3347 |
+
|
3348 |
+
var newWidth;
|
3349 |
+
if (width && (positionedWidth === width)) {
|
3350 |
+
newWidth = getPixelValue(element, 'width', context);
|
3351 |
+
} else if (position === 'absolute' || position === 'fixed') {
|
3352 |
+
newWidth = getPixelValue(element, 'width', context);
|
3353 |
+
} else {
|
3354 |
+
var parent = element.parentNode, pLayout = $(parent).getLayout();
|
3355 |
+
|
3356 |
+
newWidth = pLayout.get('width') -
|
3357 |
+
this.get('margin-left') -
|
3358 |
+
this.get('border-left') -
|
3359 |
+
this.get('padding-left') -
|
3360 |
+
this.get('padding-right') -
|
3361 |
+
this.get('border-right') -
|
3362 |
+
this.get('margin-right');
|
3363 |
+
}
|
3364 |
+
|
3365 |
+
element.setStyle({ width: newWidth + 'px' });
|
3366 |
+
|
3367 |
+
this._prepared = true;
|
3368 |
+
},
|
3369 |
+
|
3370 |
+
_end: function() {
|
3371 |
+
var element = this.element;
|
3372 |
+
var originalStyles = element.retrieve('prototype_original_styles');
|
3373 |
+
element.store('prototype_original_styles', null);
|
3374 |
+
element.setStyle(originalStyles);
|
3375 |
+
this._prepared = false;
|
3376 |
+
},
|
3377 |
+
|
3378 |
+
_compute: function(property) {
|
3379 |
+
var COMPUTATIONS = Element.Layout.COMPUTATIONS;
|
3380 |
+
if (!(property in COMPUTATIONS)) {
|
3381 |
+
throw "Property not found.";
|
3382 |
+
}
|
3383 |
+
|
3384 |
+
return this._set(property, COMPUTATIONS[property].call(this, this.element));
|
3385 |
+
},
|
3386 |
+
|
3387 |
+
toObject: function() {
|
3388 |
+
var args = $A(arguments);
|
3389 |
+
var keys = (args.length === 0) ? Element.Layout.PROPERTIES :
|
3390 |
+
args.join(' ').split(' ');
|
3391 |
+
var obj = {};
|
3392 |
+
keys.each( function(key) {
|
3393 |
+
if (!Element.Layout.PROPERTIES.include(key)) return;
|
3394 |
+
var value = this.get(key);
|
3395 |
+
if (value != null) obj[key] = value;
|
3396 |
+
}, this);
|
3397 |
+
return obj;
|
3398 |
+
},
|
3399 |
+
|
3400 |
+
toHash: function() {
|
3401 |
+
var obj = this.toObject.apply(this, arguments);
|
3402 |
+
return new Hash(obj);
|
3403 |
+
},
|
3404 |
+
|
3405 |
+
toCSS: function() {
|
3406 |
+
var args = $A(arguments);
|
3407 |
+
var keys = (args.length === 0) ? Element.Layout.PROPERTIES :
|
3408 |
+
args.join(' ').split(' ');
|
3409 |
+
var css = {};
|
3410 |
+
|
3411 |
+
keys.each( function(key) {
|
3412 |
+
if (!Element.Layout.PROPERTIES.include(key)) return;
|
3413 |
+
if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return;
|
3414 |
+
|
3415 |
+
var value = this.get(key);
|
3416 |
+
if (value != null) css[cssNameFor(key)] = value + 'px';
|
3417 |
+
}, this);
|
3418 |
+
return css;
|
3419 |
+
},
|
3420 |
+
|
3421 |
+
inspect: function() {
|
3422 |
+
return "#<Element.Layout>";
|
3423 |
+
}
|
3424 |
+
});
|
3425 |
+
|
3426 |
+
Object.extend(Element.Layout, {
|
3427 |
+
PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'),
|
3428 |
+
|
3429 |
+
COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'),
|
3430 |
+
|
3431 |
+
COMPUTATIONS: {
|
3432 |
+
'height': function(element) {
|
3433 |
+
if (!this._preComputing) this._begin();
|
3434 |
+
|
3435 |
+
var bHeight = this.get('border-box-height');
|
3436 |
+
if (bHeight <= 0) {
|
3437 |
+
if (!this._preComputing) this._end();
|
3438 |
+
return 0;
|
3439 |
+
}
|
3440 |
+
|
3441 |
+
var bTop = this.get('border-top'),
|
3442 |
+
bBottom = this.get('border-bottom');
|
3443 |
+
|
3444 |
+
var pTop = this.get('padding-top'),
|
3445 |
+
pBottom = this.get('padding-bottom');
|
3446 |
+
|
3447 |
+
if (!this._preComputing) this._end();
|
3448 |
+
|
3449 |
+
return bHeight - bTop - bBottom - pTop - pBottom;
|
3450 |
+
},
|
3451 |
+
|
3452 |
+
'width': function(element) {
|
3453 |
+
if (!this._preComputing) this._begin();
|
3454 |
+
|
3455 |
+
var bWidth = this.get('border-box-width');
|
3456 |
+
if (bWidth <= 0) {
|
3457 |
+
if (!this._preComputing) this._end();
|
3458 |
+
return 0;
|
3459 |
+
}
|
3460 |
+
|
3461 |
+
var bLeft = this.get('border-left'),
|
3462 |
+
bRight = this.get('border-right');
|
3463 |
+
|
3464 |
+
var pLeft = this.get('padding-left'),
|
3465 |
+
pRight = this.get('padding-right');
|
3466 |
+
|
3467 |
+
if (!this._preComputing) this._end();
|
3468 |
+
|
3469 |
+
return bWidth - bLeft - bRight - pLeft - pRight;
|
3470 |
+
},
|
3471 |
+
|
3472 |
+
'padding-box-height': function(element) {
|
3473 |
+
var height = this.get('height'),
|
3474 |
+
pTop = this.get('padding-top'),
|
3475 |
+
pBottom = this.get('padding-bottom');
|
3476 |
+
|
3477 |
+
return height + pTop + pBottom;
|
3478 |
+
},
|
3479 |
+
|
3480 |
+
'padding-box-width': function(element) {
|
3481 |
+
var width = this.get('width'),
|
3482 |
+
pLeft = this.get('padding-left'),
|
3483 |
+
pRight = this.get('padding-right');
|
3484 |
+
|
3485 |
+
return width + pLeft + pRight;
|
3486 |
+
},
|
3487 |
+
|
3488 |
+
'border-box-height': function(element) {
|
3489 |
+
if (!this._preComputing) this._begin();
|
3490 |
+
var height = element.offsetHeight;
|
3491 |
+
if (!this._preComputing) this._end();
|
3492 |
+
return height;
|
3493 |
+
},
|
3494 |
+
|
3495 |
+
'border-box-width': function(element) {
|
3496 |
+
if (!this._preComputing) this._begin();
|
3497 |
+
var width = element.offsetWidth;
|
3498 |
+
if (!this._preComputing) this._end();
|
3499 |
+
return width;
|
3500 |
+
},
|
3501 |
+
|
3502 |
+
'margin-box-height': function(element) {
|
3503 |
+
var bHeight = this.get('border-box-height'),
|
3504 |
+
mTop = this.get('margin-top'),
|
3505 |
+
mBottom = this.get('margin-bottom');
|
3506 |
+
|
3507 |
+
if (bHeight <= 0) return 0;
|
3508 |
+
|
3509 |
+
return bHeight + mTop + mBottom;
|
3510 |
+
},
|
3511 |
+
|
3512 |
+
'margin-box-width': function(element) {
|
3513 |
+
var bWidth = this.get('border-box-width'),
|
3514 |
+
mLeft = this.get('margin-left'),
|
3515 |
+
mRight = this.get('margin-right');
|
3516 |
+
|
3517 |
+
if (bWidth <= 0) return 0;
|
3518 |
+
|
3519 |
+
return bWidth + mLeft + mRight;
|
3520 |
+
},
|
3521 |
+
|
3522 |
+
'top': function(element) {
|
3523 |
+
var offset = element.positionedOffset();
|
3524 |
+
return offset.top;
|
3525 |
+
},
|
3526 |
+
|
3527 |
+
'bottom': function(element) {
|
3528 |
+
var offset = element.positionedOffset(),
|
3529 |
+
parent = element.getOffsetParent(),
|
3530 |
+
pHeight = parent.measure('height');
|
3531 |
+
|
3532 |
+
var mHeight = this.get('border-box-height');
|
3533 |
+
|
3534 |
+
return pHeight - mHeight - offset.top;
|
3535 |
+
},
|
3536 |
+
|
3537 |
+
'left': function(element) {
|
3538 |
+
var offset = element.positionedOffset();
|
3539 |
+
return offset.left;
|
3540 |
+
},
|
3541 |
+
|
3542 |
+
'right': function(element) {
|
3543 |
+
var offset = element.positionedOffset(),
|
3544 |
+
parent = element.getOffsetParent(),
|
3545 |
+
pWidth = parent.measure('width');
|
3546 |
+
|
3547 |
+
var mWidth = this.get('border-box-width');
|
3548 |
+
|
3549 |
+
return pWidth - mWidth - offset.left;
|
3550 |
+
},
|
3551 |
+
|
3552 |
+
'padding-top': function(element) {
|
3553 |
+
return getPixelValue(element, 'paddingTop');
|
3554 |
+
},
|
3555 |
+
|
3556 |
+
'padding-bottom': function(element) {
|
3557 |
+
return getPixelValue(element, 'paddingBottom');
|
3558 |
+
},
|
3559 |
+
|
3560 |
+
'padding-left': function(element) {
|
3561 |
+
return getPixelValue(element, 'paddingLeft');
|
3562 |
+
},
|
3563 |
+
|
3564 |
+
'padding-right': function(element) {
|
3565 |
+
return getPixelValue(element, 'paddingRight');
|
3566 |
+
},
|
3567 |
+
|
3568 |
+
'border-top': function(element) {
|
3569 |
+
return getPixelValue(element, 'borderTopWidth');
|
3570 |
+
},
|
3571 |
+
|
3572 |
+
'border-bottom': function(element) {
|
3573 |
+
return getPixelValue(element, 'borderBottomWidth');
|
3574 |
+
},
|
3575 |
+
|
3576 |
+
'border-left': function(element) {
|
3577 |
+
return getPixelValue(element, 'borderLeftWidth');
|
3578 |
+
},
|
3579 |
+
|
3580 |
+
'border-right': function(element) {
|
3581 |
+
return getPixelValue(element, 'borderRightWidth');
|
3582 |
+
},
|
3583 |
+
|
3584 |
+
'margin-top': function(element) {
|
3585 |
+
return getPixelValue(element, 'marginTop');
|
3586 |
+
},
|
3587 |
+
|
3588 |
+
'margin-bottom': function(element) {
|
3589 |
+
return getPixelValue(element, 'marginBottom');
|
3590 |
+
},
|
3591 |
+
|
3592 |
+
'margin-left': function(element) {
|
3593 |
+
return getPixelValue(element, 'marginLeft');
|
3594 |
+
},
|
3595 |
+
|
3596 |
+
'margin-right': function(element) {
|
3597 |
+
return getPixelValue(element, 'marginRight');
|
3598 |
+
}
|
3599 |
+
}
|
3600 |
+
});
|
3601 |
+
|
3602 |
+
if ('getBoundingClientRect' in document.documentElement) {
|
3603 |
+
Object.extend(Element.Layout.COMPUTATIONS, {
|
3604 |
+
'right': function(element) {
|
3605 |
+
var parent = hasLayout(element.getOffsetParent());
|
3606 |
+
var rect = element.getBoundingClientRect(),
|
3607 |
+
pRect = parent.getBoundingClientRect();
|
3608 |
+
|
3609 |
+
return (pRect.right - rect.right).round();
|
3610 |
+
},
|
3611 |
+
|
3612 |
+
'bottom': function(element) {
|
3613 |
+
var parent = hasLayout(element.getOffsetParent());
|
3614 |
+
var rect = element.getBoundingClientRect(),
|
3615 |
+
pRect = parent.getBoundingClientRect();
|
3616 |
+
|
3617 |
+
return (pRect.bottom - rect.bottom).round();
|
3618 |
+
}
|
3619 |
+
});
|
3620 |
+
}
|
3621 |
+
|
3622 |
+
Element.Offset = Class.create({
|
3623 |
+
initialize: function(left, top) {
|
3624 |
+
this.left = left.round();
|
3625 |
+
this.top = top.round();
|
3626 |
+
|
3627 |
+
this[0] = this.left;
|
3628 |
+
this[1] = this.top;
|
3629 |
+
},
|
3630 |
+
|
3631 |
+
relativeTo: function(offset) {
|
3632 |
+
return new Element.Offset(
|
3633 |
+
this.left - offset.left,
|
3634 |
+
this.top - offset.top
|
3635 |
+
);
|
3636 |
+
},
|
3637 |
+
|
3638 |
+
inspect: function() {
|
3639 |
+
return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this);
|
3640 |
+
},
|
3641 |
+
|
3642 |
+
toString: function() {
|
3643 |
+
return "[#{left}, #{top}]".interpolate(this);
|
3644 |
+
},
|
3645 |
+
|
3646 |
+
toArray: function() {
|
3647 |
+
return [this.left, this.top];
|
3648 |
+
}
|
3649 |
+
});
|
3650 |
+
|
3651 |
+
function getLayout(element, preCompute) {
|
3652 |
+
return new Element.Layout(element, preCompute);
|
3653 |
+
}
|
3654 |
+
|
3655 |
+
function measure(element, property) {
|
3656 |
+
return $(element).getLayout().get(property);
|
3657 |
+
}
|
3658 |
+
|
3659 |
+
function getDimensions(element) {
|
3660 |
+
element = $(element);
|
3661 |
+
var display = Element.getStyle(element, 'display');
|
3662 |
+
|
3663 |
+
if (display && display !== 'none') {
|
3664 |
+
return { width: element.offsetWidth, height: element.offsetHeight };
|
3665 |
+
}
|
3666 |
+
|
3667 |
+
var style = element.style;
|
3668 |
+
var originalStyles = {
|
3669 |
+
visibility: style.visibility,
|
3670 |
+
position: style.position,
|
3671 |
+
display: style.display
|
3672 |
+
};
|
3673 |
+
|
3674 |
+
var newStyles = {
|
3675 |
+
visibility: 'hidden',
|
3676 |
+
display: 'block'
|
3677 |
+
};
|
3678 |
+
|
3679 |
+
if (originalStyles.position !== 'fixed')
|
3680 |
+
newStyles.position = 'absolute';
|
3681 |
+
|
3682 |
+
Element.setStyle(element, newStyles);
|
3683 |
+
|
3684 |
+
var dimensions = {
|
3685 |
+
width: element.offsetWidth,
|
3686 |
+
height: element.offsetHeight
|
3687 |
+
};
|
3688 |
+
|
3689 |
+
Element.setStyle(element, originalStyles);
|
3690 |
+
|
3691 |
+
return dimensions;
|
3692 |
+
}
|
3693 |
+
|
3694 |
+
function getOffsetParent(element) {
|
3695 |
+
element = $(element);
|
3696 |
+
|
3697 |
+
if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))
|
3698 |
+
return $(document.body);
|
3699 |
+
|
3700 |
+
var isInline = (Element.getStyle(element, 'display') === 'inline');
|
3701 |
+
if (!isInline && element.offsetParent) return $(element.offsetParent);
|
3702 |
+
|
3703 |
+
while ((element = element.parentNode) && element !== document.body) {
|
3704 |
+
if (Element.getStyle(element, 'position') !== 'static') {
|
3705 |
+
return isHtml(element) ? $(document.body) : $(element);
|
3706 |
+
}
|
3707 |
+
}
|
3708 |
+
|
3709 |
+
return $(document.body);
|
3710 |
+
}
|
3711 |
+
|
3712 |
+
|
3713 |
+
function cumulativeOffset(element) {
|
3714 |
+
element = $(element);
|
3715 |
+
var valueT = 0, valueL = 0;
|
3716 |
+
if (element.parentNode) {
|
3717 |
+
do {
|
3718 |
+
valueT += element.offsetTop || 0;
|
3719 |
+
valueL += element.offsetLeft || 0;
|
3720 |
+
element = element.offsetParent;
|
3721 |
+
} while (element);
|
3722 |
+
}
|
3723 |
+
return new Element.Offset(valueL, valueT);
|
3724 |
+
}
|
3725 |
+
|
3726 |
+
function positionedOffset(element) {
|
3727 |
+
element = $(element);
|
3728 |
+
|
3729 |
+
var layout = element.getLayout();
|
3730 |
+
|
3731 |
+
var valueT = 0, valueL = 0;
|
3732 |
+
do {
|
3733 |
+
valueT += element.offsetTop || 0;
|
3734 |
+
valueL += element.offsetLeft || 0;
|
3735 |
+
element = element.offsetParent;
|
3736 |
+
if (element) {
|
3737 |
+
if (isBody(element)) break;
|
3738 |
+
var p = Element.getStyle(element, 'position');
|
3739 |
+
if (p !== 'static') break;
|
3740 |
+
}
|
3741 |
+
} while (element);
|
3742 |
+
|
3743 |
+
valueL -= layout.get('margin-top');
|
3744 |
+
valueT -= layout.get('margin-left');
|
3745 |
+
|
3746 |
+
return new Element.Offset(valueL, valueT);
|
3747 |
+
}
|
3748 |
+
|
3749 |
+
function cumulativeScrollOffset(element) {
|
3750 |
+
var valueT = 0, valueL = 0;
|
3751 |
+
do {
|
3752 |
+
valueT += element.scrollTop || 0;
|
3753 |
+
valueL += element.scrollLeft || 0;
|
3754 |
+
element = element.parentNode;
|
3755 |
+
} while (element);
|
3756 |
+
return new Element.Offset(valueL, valueT);
|
3757 |
+
}
|
3758 |
+
|
3759 |
+
function viewportOffset(forElement) {
|
3760 |
+
element = $(element);
|
3761 |
+
var valueT = 0, valueL = 0, docBody = document.body;
|
3762 |
+
|
3763 |
+
var element = forElement;
|
3764 |
+
do {
|
3765 |
+
valueT += element.offsetTop || 0;
|
3766 |
+
valueL += element.offsetLeft || 0;
|
3767 |
+
if (element.offsetParent == docBody &&
|
3768 |
+
Element.getStyle(element, 'position') == 'absolute') break;
|
3769 |
+
} while (element = element.offsetParent);
|
3770 |
+
|
3771 |
+
element = forElement;
|
3772 |
+
do {
|
3773 |
+
if (element != docBody) {
|
3774 |
+
valueT -= element.scrollTop || 0;
|
3775 |
+
valueL -= element.scrollLeft || 0;
|
3776 |
+
}
|
3777 |
+
} while (element = element.parentNode);
|
3778 |
+
return new Element.Offset(valueL, valueT);
|
3779 |
+
}
|
3780 |
+
|
3781 |
+
function absolutize(element) {
|
3782 |
+
element = $(element);
|
3783 |
+
|
3784 |
+
if (Element.getStyle(element, 'position') === 'absolute') {
|
3785 |
+
return element;
|
3786 |
+
}
|
3787 |
+
|
3788 |
+
var offsetParent = getOffsetParent(element);
|
3789 |
+
var eOffset = element.viewportOffset(),
|
3790 |
+
pOffset = offsetParent.viewportOffset();
|
3791 |
+
|
3792 |
+
var offset = eOffset.relativeTo(pOffset);
|
3793 |
+
var layout = element.getLayout();
|
3794 |
+
|
3795 |
+
element.store('prototype_absolutize_original_styles', {
|
3796 |
+
left: element.getStyle('left'),
|
3797 |
+
top: element.getStyle('top'),
|
3798 |
+
width: element.getStyle('width'),
|
3799 |
+
height: element.getStyle('height')
|
3800 |
+
});
|
3801 |
+
|
3802 |
+
element.setStyle({
|
3803 |
+
position: 'absolute',
|
3804 |
+
top: offset.top + 'px',
|
3805 |
+
left: offset.left + 'px',
|
3806 |
+
width: layout.get('width') + 'px',
|
3807 |
+
height: layout.get('height') + 'px'
|
3808 |
+
});
|
3809 |
+
|
3810 |
+
return element;
|
3811 |
+
}
|
3812 |
+
|
3813 |
+
function relativize(element) {
|
3814 |
+
element = $(element);
|
3815 |
+
if (Element.getStyle(element, 'position') === 'relative') {
|
3816 |
+
return element;
|
3817 |
+
}
|
3818 |
+
|
3819 |
+
var originalStyles =
|
3820 |
+
element.retrieve('prototype_absolutize_original_styles');
|
3821 |
+
|
3822 |
+
if (originalStyles) element.setStyle(originalStyles);
|
3823 |
+
return element;
|
3824 |
+
}
|
3825 |
+
|
3826 |
+
if (Prototype.Browser.IE) {
|
3827 |
+
getOffsetParent = getOffsetParent.wrap(
|
3828 |
+
function(proceed, element) {
|
3829 |
+
element = $(element);
|
3830 |
+
|
3831 |
+
if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))
|
3832 |
+
return $(document.body);
|
3833 |
+
|
3834 |
+
var position = element.getStyle('position');
|
3835 |
+
if (position !== 'static') return proceed(element);
|
3836 |
+
|
3837 |
+
element.setStyle({ position: 'relative' });
|
3838 |
+
var value = proceed(element);
|
3839 |
+
element.setStyle({ position: position });
|
3840 |
+
return value;
|
3841 |
+
}
|
3842 |
+
);
|
3843 |
+
|
3844 |
+
positionedOffset = positionedOffset.wrap(function(proceed, element) {
|
3845 |
+
element = $(element);
|
3846 |
+
if (!element.parentNode) return new Element.Offset(0, 0);
|
3847 |
+
var position = element.getStyle('position');
|
3848 |
+
if (position !== 'static') return proceed(element);
|
3849 |
+
|
3850 |
+
var offsetParent = element.getOffsetParent();
|
3851 |
+
if (offsetParent && offsetParent.getStyle('position') === 'fixed')
|
3852 |
+
hasLayout(offsetParent);
|
3853 |
+
|
3854 |
+
element.setStyle({ position: 'relative' });
|
3855 |
+
var value = proceed(element);
|
3856 |
+
element.setStyle({ position: position });
|
3857 |
+
return value;
|
3858 |
+
});
|
3859 |
+
} else if (Prototype.Browser.Webkit) {
|
3860 |
+
cumulativeOffset = function(element) {
|
3861 |
+
element = $(element);
|
3862 |
+
var valueT = 0, valueL = 0;
|
3863 |
+
do {
|
3864 |
+
valueT += element.offsetTop || 0;
|
3865 |
+
valueL += element.offsetLeft || 0;
|
3866 |
+
if (element.offsetParent == document.body)
|
3867 |
+
if (Element.getStyle(element, 'position') == 'absolute') break;
|
3868 |
+
|
3869 |
+
element = element.offsetParent;
|
3870 |
+
} while (element);
|
3871 |
+
|
3872 |
+
return new Element.Offset(valueL, valueT);
|
3873 |
+
};
|
3874 |
+
}
|
3875 |
+
|
3876 |
+
|
3877 |
+
Element.addMethods({
|
3878 |
+
getLayout: getLayout,
|
3879 |
+
measure: measure,
|
3880 |
+
getDimensions: getDimensions,
|
3881 |
+
getOffsetParent: getOffsetParent,
|
3882 |
+
cumulativeOffset: cumulativeOffset,
|
3883 |
+
positionedOffset: positionedOffset,
|
3884 |
+
cumulativeScrollOffset: cumulativeScrollOffset,
|
3885 |
+
viewportOffset: viewportOffset,
|
3886 |
+
absolutize: absolutize,
|
3887 |
+
relativize: relativize
|
3888 |
+
});
|
3889 |
+
|
3890 |
+
function isBody(element) {
|
3891 |
+
return element.nodeName.toUpperCase() === 'BODY';
|
3892 |
+
}
|
3893 |
+
|
3894 |
+
function isHtml(element) {
|
3895 |
+
return element.nodeName.toUpperCase() === 'HTML';
|
3896 |
+
}
|
3897 |
+
|
3898 |
+
function isDocument(element) {
|
3899 |
+
return element.nodeType === Node.DOCUMENT_NODE;
|
3900 |
+
}
|
3901 |
+
|
3902 |
+
function isDetached(element) {
|
3903 |
+
return element !== document.body &&
|
3904 |
+
!Element.descendantOf(element, document.body);
|
3905 |
+
}
|
3906 |
+
|
3907 |
+
if ('getBoundingClientRect' in document.documentElement) {
|
3908 |
+
Element.addMethods({
|
3909 |
+
viewportOffset: function(element) {
|
3910 |
+
element = $(element);
|
3911 |
+
if (isDetached(element)) return new Element.Offset(0, 0);
|
3912 |
+
|
3913 |
+
var rect = element.getBoundingClientRect(),
|
3914 |
+
docEl = document.documentElement;
|
3915 |
+
return new Element.Offset(rect.left - docEl.clientLeft,
|
3916 |
+
rect.top - docEl.clientTop);
|
3917 |
+
}
|
3918 |
+
});
|
3919 |
+
}
|
3920 |
+
})();
|
3921 |
+
window.$$ = function() {
|
3922 |
+
var expression = $A(arguments).join(', ');
|
3923 |
+
return Prototype.Selector.select(expression, document);
|
3924 |
+
};
|
3925 |
+
|
3926 |
+
Prototype.Selector = (function() {
|
3927 |
+
|
3928 |
+
function select() {
|
3929 |
+
throw new Error('Method "Prototype.Selector.select" must be defined.');
|
3930 |
+
}
|
3931 |
+
|
3932 |
+
function match() {
|
3933 |
+
throw new Error('Method "Prototype.Selector.match" must be defined.');
|
3934 |
+
}
|
3935 |
+
|
3936 |
+
function find(elements, expression, index) {
|
3937 |
+
index = index || 0;
|
3938 |
+
var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i;
|
3939 |
+
|
3940 |
+
for (i = 0; i < length; i++) {
|
3941 |
+
if (match(elements[i], expression) && index == matchIndex++) {
|
3942 |
+
return Element.extend(elements[i]);
|
3943 |
+
}
|
3944 |
+
}
|
3945 |
+
}
|
3946 |
+
|
3947 |
+
function extendElements(elements) {
|
3948 |
+
for (var i = 0, length = elements.length; i < length; i++) {
|
3949 |
+
Element.extend(elements[i]);
|
3950 |
+
}
|
3951 |
+
return elements;
|
3952 |
+
}
|
3953 |
+
|
3954 |
+
|
3955 |
+
var K = Prototype.K;
|
3956 |
+
|
3957 |
+
return {
|
3958 |
+
select: select,
|
3959 |
+
match: match,
|
3960 |
+
find: find,
|
3961 |
+
extendElements: (Element.extend === K) ? K : extendElements,
|
3962 |
+
extendElement: Element.extend
|
3963 |
+
};
|
3964 |
+
})();
|
3965 |
+
Prototype._original_property = window.Sizzle;
|
3966 |
+
/*!
|
3967 |
+
* Sizzle CSS Selector Engine - v1.0
|
3968 |
+
* Copyright 2009, The Dojo Foundation
|
3969 |
+
* Released under the MIT, BSD, and GPL Licenses.
|
3970 |
+
* More information: http://sizzlejs.com/
|
3971 |
+
*/
|
3972 |
+
(function(){
|
3973 |
+
|
3974 |
+
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
3975 |
+
done = 0,
|
3976 |
+
toString = Object.prototype.toString,
|
3977 |
+
hasDuplicate = false,
|
3978 |
+
baseHasDuplicate = true;
|
3979 |
+
|
3980 |
+
[0, 0].sort(function(){
|
3981 |
+
baseHasDuplicate = false;
|
3982 |
+
return 0;
|
3983 |
+
});
|
3984 |
+
|
3985 |
+
var Sizzle = function(selector, context, results, seed) {
|
3986 |
+
results = results || [];
|
3987 |
+
var origContext = context = context || document;
|
3988 |
+
|
3989 |
+
if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
|
3990 |
+
return [];
|
3991 |
+
}
|
3992 |
+
|
3993 |
+
if ( !selector || typeof selector !== "string" ) {
|
3994 |
+
return results;
|
3995 |
+
}
|
3996 |
+
|
3997 |
+
var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
|
3998 |
+
soFar = selector;
|
3999 |
+
|
4000 |
+
while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
|
4001 |
+
soFar = m[3];
|
4002 |
+
|
4003 |
+
parts.push( m[1] );
|
4004 |
+
|
4005 |
+
if ( m[2] ) {
|
4006 |
+
extra = m[3];
|
4007 |
+
break;
|
4008 |
+
}
|
4009 |
+
}
|
4010 |
+
|
4011 |
+
if ( parts.length > 1 && origPOS.exec( selector ) ) {
|
4012 |
+
if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
|
4013 |
+
set = posProcess( parts[0] + parts[1], context );
|
4014 |
+
} else {
|
4015 |
+
set = Expr.relative[ parts[0] ] ?
|
4016 |
+
[ context ] :
|
4017 |
+
Sizzle( parts.shift(), context );
|
4018 |
+
|
4019 |
+
while ( parts.length ) {
|
4020 |
+
selector = parts.shift();
|
4021 |
+
|
4022 |
+
if ( Expr.relative[ selector ] )
|
4023 |
+
selector += parts.shift();
|
4024 |
+
|
4025 |
+
set = posProcess( selector, set );
|
4026 |
+
}
|
4027 |
+
}
|
4028 |
+
} else {
|
4029 |
+
if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
|
4030 |
+
Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
|
4031 |
+
var ret = Sizzle.find( parts.shift(), context, contextXML );
|
4032 |
+
context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
|
4033 |
+
}
|
4034 |
+
|
4035 |
+
if ( context ) {
|
4036 |
+
var ret = seed ?
|
4037 |
+
{ expr: parts.pop(), set: makeArray(seed) } :
|
4038 |
+
Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
|
4039 |
+
set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
|
4040 |
+
|
4041 |
+
if ( parts.length > 0 ) {
|
4042 |
+
checkSet = makeArray(set);
|
4043 |
+
} else {
|
4044 |
+
prune = false;
|
4045 |
+
}
|
4046 |
+
|
4047 |
+
while ( parts.length ) {
|
4048 |
+
var cur = parts.pop(), pop = cur;
|
4049 |
+
|
4050 |
+
if ( !Expr.relative[ cur ] ) {
|
4051 |
+
cur = "";
|
4052 |
+
} else {
|
4053 |
+
pop = parts.pop();
|
4054 |
+
}
|
4055 |
+
|
4056 |
+
if ( pop == null ) {
|
4057 |
+
pop = context;
|
4058 |
+
}
|
4059 |
+
|
4060 |
+
Expr.relative[ cur ]( checkSet, pop, contextXML );
|
4061 |
+
}
|
4062 |
+
} else {
|
4063 |
+
checkSet = parts = [];
|
4064 |
+
}
|
4065 |
+
}
|
4066 |
+
|
4067 |
+
if ( !checkSet ) {
|
4068 |
+
checkSet = set;
|
4069 |
+
}
|
4070 |
+
|
4071 |
+
if ( !checkSet ) {
|
4072 |
+
throw "Syntax error, unrecognized expression: " + (cur || selector);
|
4073 |
+
}
|
4074 |
+
|
4075 |
+
if ( toString.call(checkSet) === "[object Array]" ) {
|
4076 |
+
if ( !prune ) {
|
4077 |
+
results.push.apply( results, checkSet );
|
4078 |
+
} else if ( context && context.nodeType === 1 ) {
|
4079 |
+
for ( var i = 0; checkSet[i] != null; i++ ) {
|
4080 |
+
if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
|
4081 |
+
results.push( set[i] );
|
4082 |
+
}
|
4083 |
+
}
|
4084 |
+
} else {
|
4085 |
+
for ( var i = 0; checkSet[i] != null; i++ ) {
|
4086 |
+
if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
|
4087 |
+
results.push( set[i] );
|
4088 |
+
}
|
4089 |
+
}
|
4090 |
+
}
|
4091 |
+
} else {
|
4092 |
+
makeArray( checkSet, results );
|
4093 |
+
}
|
4094 |
+
|
4095 |
+
if ( extra ) {
|
4096 |
+
Sizzle( extra, origContext, results, seed );
|
4097 |
+
Sizzle.uniqueSort( results );
|
4098 |
+
}
|
4099 |
+
|
4100 |
+
return results;
|
4101 |
+
};
|
4102 |
+
|
4103 |
+
Sizzle.uniqueSort = function(results){
|
4104 |
+
if ( sortOrder ) {
|
4105 |
+
hasDuplicate = baseHasDuplicate;
|
4106 |
+
results.sort(sortOrder);
|
4107 |
+
|
4108 |
+
if ( hasDuplicate ) {
|
4109 |
+
for ( var i = 1; i < results.length; i++ ) {
|
4110 |
+
if ( results[i] === results[i-1] ) {
|
4111 |
+
results.splice(i--, 1);
|
4112 |
+
}
|
4113 |
+
}
|
4114 |
+
}
|
4115 |
+
}
|
4116 |
+
|
4117 |
+
return results;
|
4118 |
+
};
|
4119 |
+
|
4120 |
+
Sizzle.matches = function(expr, set){
|
4121 |
+
return Sizzle(expr, null, null, set);
|
4122 |
+
};
|
4123 |
+
|
4124 |
+
Sizzle.find = function(expr, context, isXML){
|
4125 |
+
var set, match;
|
4126 |
+
|
4127 |
+
if ( !expr ) {
|
4128 |
+
return [];
|
4129 |
+
}
|
4130 |
+
|
4131 |
+
for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
|
4132 |
+
var type = Expr.order[i], match;
|
4133 |
+
|
4134 |
+
if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
|
4135 |
+
var left = match[1];
|
4136 |
+
match.splice(1,1);
|
4137 |
+
|
4138 |
+
if ( left.substr( left.length - 1 ) !== "\\" ) {
|
4139 |
+
match[1] = (match[1] || "").replace(/\\/g, "");
|
4140 |
+
set = Expr.find[ type ]( match, context, isXML );
|
4141 |
+
if ( set != null ) {
|
4142 |
+
expr = expr.replace( Expr.match[ type ], "" );
|
4143 |
+
break;
|
4144 |
+
}
|
4145 |
+
}
|
4146 |
+
}
|
4147 |
+
}
|
4148 |
+
|
4149 |
+
if ( !set ) {
|
4150 |
+
set = context.getElementsByTagName("*");
|
4151 |
+
}
|
4152 |
+
|
4153 |
+
return {set: set, expr: expr};
|
4154 |
+
};
|
4155 |
+
|
4156 |
+
Sizzle.filter = function(expr, set, inplace, not){
|
4157 |
+
var old = expr, result = [], curLoop = set, match, anyFound,
|
4158 |
+
isXMLFilter = set && set[0] && isXML(set[0]);
|
4159 |
+
|
4160 |
+
while ( expr && set.length ) {
|
4161 |
+
for ( var type in Expr.filter ) {
|
4162 |
+
if ( (match = Expr.match[ type ].exec( expr )) != null ) {
|
4163 |
+
var filter = Expr.filter[ type ], found, item;
|
4164 |
+
anyFound = false;
|
4165 |
+
|
4166 |
+
if ( curLoop == result ) {
|
4167 |
+
result = [];
|
4168 |
+
}
|
4169 |
+
|
4170 |
+
if ( Expr.preFilter[ type ] ) {
|
4171 |
+
match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
|
4172 |
+
|
4173 |
+
if ( !match ) {
|
4174 |
+
anyFound = found = true;
|
4175 |
+
} else if ( match === true ) {
|
4176 |
+
continue;
|
4177 |
+
}
|
4178 |
+
}
|
4179 |
+
|
4180 |
+
if ( match ) {
|
4181 |
+
for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
|
4182 |
+
if ( item ) {
|
4183 |
+
found = filter( item, match, i, curLoop );
|
4184 |
+
var pass = not ^ !!found;
|
4185 |
+
|
4186 |
+
if ( inplace && found != null ) {
|
4187 |
+
if ( pass ) {
|
4188 |
+
anyFound = true;
|
4189 |
+
} else {
|
4190 |
+
curLoop[i] = false;
|
4191 |
+
}
|
4192 |
+
} else if ( pass ) {
|
4193 |
+
result.push( item );
|
4194 |
+
anyFound = true;
|
4195 |
+
}
|
4196 |
+
}
|
4197 |
+
}
|
4198 |
+
}
|
4199 |
+
|
4200 |
+
if ( found !== undefined ) {
|
4201 |
+
if ( !inplace ) {
|
4202 |
+
curLoop = result;
|
4203 |
+
}
|
4204 |
+
|
4205 |
+
expr = expr.replace( Expr.match[ type ], "" );
|
4206 |
+
|
4207 |
+
if ( !anyFound ) {
|
4208 |
+
return [];
|
4209 |
+
}
|
4210 |
+
|
4211 |
+
break;
|
4212 |
+
}
|
4213 |
+
}
|
4214 |
+
}
|
4215 |
+
|
4216 |
+
if ( expr == old ) {
|
4217 |
+
if ( anyFound == null ) {
|
4218 |
+
throw "Syntax error, unrecognized expression: " + expr;
|
4219 |
+
} else {
|
4220 |
+
break;
|
4221 |
+
}
|
4222 |
+
}
|
4223 |
+
|
4224 |
+
old = expr;
|
4225 |
+
}
|
4226 |
+
|
4227 |
+
return curLoop;
|
4228 |
+
};
|
4229 |
+
|
4230 |
+
var Expr = Sizzle.selectors = {
|
4231 |
+
order: [ "ID", "NAME", "TAG" ],
|
4232 |
+
match: {
|
4233 |
+
ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
|
4234 |
+
CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
|
4235 |
+
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
|
4236 |
+
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
|
4237 |
+
TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
|
4238 |
+
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
|
4239 |
+
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
|
4240 |
+
PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
|
4241 |
+
},
|
4242 |
+
leftMatch: {},
|
4243 |
+
attrMap: {
|
4244 |
+
"class": "className",
|
4245 |
+
"for": "htmlFor"
|
4246 |
+
},
|
4247 |
+
attrHandle: {
|
4248 |
+
href: function(elem){
|
4249 |
+
return elem.getAttribute("href");
|
4250 |
+
}
|
4251 |
+
},
|
4252 |
+
relative: {
|
4253 |
+
"+": function(checkSet, part, isXML){
|
4254 |
+
var isPartStr = typeof part === "string",
|
4255 |
+
isTag = isPartStr && !/\W/.test(part),
|
4256 |
+
isPartStrNotTag = isPartStr && !isTag;
|
4257 |
+
|
4258 |
+
if ( isTag && !isXML ) {
|
4259 |
+
part = part.toUpperCase();
|
4260 |
+
}
|
4261 |
+
|
4262 |
+
for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
|
4263 |
+
if ( (elem = checkSet[i]) ) {
|
4264 |
+
while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
|
4265 |
+
|
4266 |
+
checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
|
4267 |
+
elem || false :
|
4268 |
+
elem === part;
|
4269 |
+
}
|
4270 |
+
}
|
4271 |
+
|
4272 |
+
if ( isPartStrNotTag ) {
|
4273 |
+
Sizzle.filter( part, checkSet, true );
|
4274 |
+
}
|
4275 |
+
},
|
4276 |
+
">": function(checkSet, part, isXML){
|
4277 |
+
var isPartStr = typeof part === "string";
|
4278 |
+
|
4279 |
+
if ( isPartStr && !/\W/.test(part) ) {
|
4280 |
+
part = isXML ? part : part.toUpperCase();
|
4281 |
+
|
4282 |
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
4283 |
+
var elem = checkSet[i];
|
4284 |
+
if ( elem ) {
|
4285 |
+
var parent = elem.parentNode;
|
4286 |
+
checkSet[i] = parent.nodeName === part ? parent : false;
|
4287 |
+
}
|
4288 |
+
}
|
4289 |
+
} else {
|
4290 |
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
4291 |
+
var elem = checkSet[i];
|
4292 |
+
if ( elem ) {
|
4293 |
+
checkSet[i] = isPartStr ?
|
4294 |
+
elem.parentNode :
|
4295 |
+
elem.parentNode === part;
|
4296 |
+
}
|
4297 |
+
}
|
4298 |
+
|
4299 |
+
if ( isPartStr ) {
|
4300 |
+
Sizzle.filter( part, checkSet, true );
|
4301 |
+
}
|
4302 |
+
}
|
4303 |
+
},
|
4304 |
+
"": function(checkSet, part, isXML){
|
4305 |
+
var doneName = done++, checkFn = dirCheck;
|
4306 |
+
|
4307 |
+
if ( !/\W/.test(part) ) {
|
4308 |
+
var nodeCheck = part = isXML ? part : part.toUpperCase();
|
4309 |
+
checkFn = dirNodeCheck;
|
4310 |
+
}
|
4311 |
+
|
4312 |
+
checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
|
4313 |
+
},
|
4314 |
+
"~": function(checkSet, part, isXML){
|
4315 |
+
var doneName = done++, checkFn = dirCheck;
|
4316 |
+
|
4317 |
+
if ( typeof part === "string" && !/\W/.test(part) ) {
|
4318 |
+
var nodeCheck = part = isXML ? part : part.toUpperCase();
|
4319 |
+
checkFn = dirNodeCheck;
|
4320 |
+
}
|
4321 |
+
|
4322 |
+
checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
|
4323 |
+
}
|
4324 |
+
},
|
4325 |
+
find: {
|
4326 |
+
ID: function(match, context, isXML){
|
4327 |
+
if ( typeof context.getElementById !== "undefined" && !isXML ) {
|
4328 |
+
var m = context.getElementById(match[1]);
|
4329 |
+
return m ? [m] : [];
|
4330 |
+
}
|
4331 |
+
},
|
4332 |
+
NAME: function(match, context, isXML){
|
4333 |
+
if ( typeof context.getElementsByName !== "undefined" ) {
|
4334 |
+
var ret = [], results = context.getElementsByName(match[1]);
|
4335 |
+
|
4336 |
+
for ( var i = 0, l = results.length; i < l; i++ ) {
|
4337 |
+
if ( results[i].getAttribute("name") === match[1] ) {
|
4338 |
+
ret.push( results[i] );
|
4339 |
+
}
|
4340 |
+
}
|
4341 |
+
|
4342 |
+
return ret.length === 0 ? null : ret;
|
4343 |
+
}
|
4344 |
+
},
|
4345 |
+
TAG: function(match, context){
|
4346 |
+
return context.getElementsByTagName(match[1]);
|
4347 |
+
}
|
4348 |
+
},
|
4349 |
+
preFilter: {
|
4350 |
+
CLASS: function(match, curLoop, inplace, result, not, isXML){
|
4351 |
+
match = " " + match[1].replace(/\\/g, "") + " ";
|
4352 |
+
|
4353 |
+
if ( isXML ) {
|
4354 |
+
return match;
|
4355 |
+
}
|
4356 |
+
|
4357 |
+
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
|
4358 |
+
if ( elem ) {
|
4359 |
+
if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
|
4360 |
+
if ( !inplace )
|
4361 |
+
result.push( elem );
|
4362 |
+
} else if ( inplace ) {
|
4363 |
+
curLoop[i] = false;
|
4364 |
+
}
|
4365 |
+
}
|
4366 |
+
}
|
4367 |
+
|
4368 |
+
return false;
|
4369 |
+
},
|
4370 |
+
ID: function(match){
|
4371 |
+
return match[1].replace(/\\/g, "");
|
4372 |
+
},
|
4373 |
+
TAG: function(match, curLoop){
|
4374 |
+
for ( var i = 0; curLoop[i] === false; i++ ){}
|
4375 |
+
return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
|
4376 |
+
},
|
4377 |
+
CHILD: function(match){
|
4378 |
+
if ( match[1] == "nth" ) {
|
4379 |
+
var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
|
4380 |
+
match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
|
4381 |
+
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
|
4382 |
+
|
4383 |
+
match[2] = (test[1] + (test[2] || 1)) - 0;
|
4384 |
+
match[3] = test[3] - 0;
|
4385 |
+
}
|
4386 |
+
|
4387 |
+
match[0] = done++;
|
4388 |
+
|
4389 |
+
return match;
|
4390 |
+
},
|
4391 |
+
ATTR: function(match, curLoop, inplace, result, not, isXML){
|
4392 |
+
var name = match[1].replace(/\\/g, "");
|
4393 |
+
|
4394 |
+
if ( !isXML && Expr.attrMap[name] ) {
|
4395 |
+
match[1] = Expr.attrMap[name];
|
4396 |
+
}
|
4397 |
+
|
4398 |
+
if ( match[2] === "~=" ) {
|
4399 |
+
match[4] = " " + match[4] + " ";
|
4400 |
+
}
|
4401 |
+
|
4402 |
+
return match;
|
4403 |
+
},
|
4404 |
+
PSEUDO: function(match, curLoop, inplace, result, not){
|
4405 |
+
if ( match[1] === "not" ) {
|
4406 |
+
if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
|
4407 |
+
match[3] = Sizzle(match[3], null, null, curLoop);
|
4408 |
+
} else {
|
4409 |
+
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
|
4410 |
+
if ( !inplace ) {
|
4411 |
+
result.push.apply( result, ret );
|
4412 |
+
}
|
4413 |
+
return false;
|
4414 |
+
}
|
4415 |
+
} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
|
4416 |
+
return true;
|
4417 |
+
}
|
4418 |
+
|
4419 |
+
return match;
|
4420 |
+
},
|
4421 |
+
POS: function(match){
|
4422 |
+
match.unshift( true );
|
4423 |
+
return match;
|
4424 |
+
}
|
4425 |
+
},
|
4426 |
+
filters: {
|
4427 |
+
enabled: function(elem){
|
4428 |
+
return elem.disabled === false && elem.type !== "hidden";
|
4429 |
+
},
|
4430 |
+
disabled: function(elem){
|
4431 |
+
return elem.disabled === true;
|
4432 |
+
},
|
4433 |
+
checked: function(elem){
|
4434 |
+
return elem.checked === true;
|
4435 |
+
},
|
4436 |
+
selected: function(elem){
|
4437 |
+
elem.parentNode.selectedIndex;
|
4438 |
+
return elem.selected === true;
|
4439 |
+
},
|
4440 |
+
parent: function(elem){
|
4441 |
+
return !!elem.firstChild;
|
4442 |
+
},
|
4443 |
+
empty: function(elem){
|
4444 |
+
return !elem.firstChild;
|
4445 |
+
},
|
4446 |
+
has: function(elem, i, match){
|
4447 |
+
return !!Sizzle( match[3], elem ).length;
|
4448 |
+
},
|
4449 |
+
header: function(elem){
|
4450 |
+
return /h\d/i.test( elem.nodeName );
|
4451 |
+
},
|
4452 |
+
text: function(elem){
|
4453 |
+
return "text" === elem.type;
|
4454 |
+
},
|
4455 |
+
radio: function(elem){
|
4456 |
+
return "radio" === elem.type;
|
4457 |
+
},
|
4458 |
+
checkbox: function(elem){
|
4459 |
+
return "checkbox" === elem.type;
|
4460 |
+
},
|
4461 |
+
file: function(elem){
|
4462 |
+
return "file" === elem.type;
|
4463 |
+
},
|
4464 |
+
password: function(elem){
|
4465 |
+
return "password" === elem.type;
|
4466 |
+
},
|
4467 |
+
submit: function(elem){
|
4468 |
+
return "submit" === elem.type;
|
4469 |
+
},
|
4470 |
+
image: function(elem){
|
4471 |
+
return "image" === elem.type;
|
4472 |
+
},
|
4473 |
+
reset: function(elem){
|
4474 |
+
return "reset" === elem.type;
|
4475 |
+
},
|
4476 |
+
button: function(elem){
|
4477 |
+
return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
|
4478 |
+
},
|
4479 |
+
input: function(elem){
|
4480 |
+
return /input|select|textarea|button/i.test(elem.nodeName);
|
4481 |
+
}
|
4482 |
+
},
|
4483 |
+
setFilters: {
|
4484 |
+
first: function(elem, i){
|
4485 |
+
return i === 0;
|
4486 |
+
},
|
4487 |
+
last: function(elem, i, match, array){
|
4488 |
+
return i === array.length - 1;
|
4489 |
+
},
|
4490 |
+
even: function(elem, i){
|
4491 |
+
return i % 2 === 0;
|
4492 |
+
},
|
4493 |
+
odd: function(elem, i){
|
4494 |
+
return i % 2 === 1;
|
4495 |
+
},
|
4496 |
+
lt: function(elem, i, match){
|
4497 |
+
return i < match[3] - 0;
|
4498 |
+
},
|
4499 |
+
gt: function(elem, i, match){
|
4500 |
+
return i > match[3] - 0;
|
4501 |
+
},
|
4502 |
+
nth: function(elem, i, match){
|
4503 |
+
return match[3] - 0 == i;
|
4504 |
+
},
|
4505 |
+
eq: function(elem, i, match){
|
4506 |
+
return match[3] - 0 == i;
|
4507 |
+
}
|
4508 |
+
},
|
4509 |
+
filter: {
|
4510 |
+
PSEUDO: function(elem, match, i, array){
|
4511 |
+
var name = match[1], filter = Expr.filters[ name ];
|
4512 |
+
|
4513 |
+
if ( filter ) {
|
4514 |
+
return filter( elem, i, match, array );
|
4515 |
+
} else if ( name === "contains" ) {
|
4516 |
+
return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
|
4517 |
+
} else if ( name === "not" ) {
|
4518 |
+
var not = match[3];
|
4519 |
+
|
4520 |
+
for ( var i = 0, l = not.length; i < l; i++ ) {
|
4521 |
+
if ( not[i] === elem ) {
|
4522 |
+
return false;
|
4523 |
+
}
|
4524 |
+
}
|
4525 |
+
|
4526 |
+
return true;
|
4527 |
+
}
|
4528 |
+
},
|
4529 |
+
CHILD: function(elem, match){
|
4530 |
+
var type = match[1], node = elem;
|
4531 |
+
switch (type) {
|
4532 |
+
case 'only':
|
4533 |
+
case 'first':
|
4534 |
+
while ( (node = node.previousSibling) ) {
|
4535 |
+
if ( node.nodeType === 1 ) return false;
|
4536 |
+
}
|
4537 |
+
if ( type == 'first') return true;
|
4538 |
+
node = elem;
|
4539 |
+
case 'last':
|
4540 |
+
while ( (node = node.nextSibling) ) {
|
4541 |
+
if ( node.nodeType === 1 ) return false;
|
4542 |
+
}
|
4543 |
+
return true;
|
4544 |
+
case 'nth':
|
4545 |
+
var first = match[2], last = match[3];
|
4546 |
+
|
4547 |
+
if ( first == 1 && last == 0 ) {
|
4548 |
+
return true;
|
4549 |
+
}
|
4550 |
+
|
4551 |
+
var doneName = match[0],
|
4552 |
+
parent = elem.parentNode;
|
4553 |
+
|
4554 |
+
if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
|
4555 |
+
var count = 0;
|
4556 |
+
for ( node = parent.firstChild; node; node = node.nextSibling ) {
|
4557 |
+
if ( node.nodeType === 1 ) {
|
4558 |
+
node.nodeIndex = ++count;
|
4559 |
+
}
|
4560 |
+
}
|
4561 |
+
parent.sizcache = doneName;
|
4562 |
+
}
|
4563 |
+
|
4564 |
+
var diff = elem.nodeIndex - last;
|
4565 |
+
if ( first == 0 ) {
|
4566 |
+
return diff == 0;
|
4567 |
+
} else {
|
4568 |
+
return ( diff % first == 0 && diff / first >= 0 );
|
4569 |
+
}
|
4570 |
+
}
|
4571 |
+
},
|
4572 |
+
ID: function(elem, match){
|
4573 |
+
return elem.nodeType === 1 && elem.getAttribute("id") === match;
|
4574 |
+
},
|
4575 |
+
TAG: function(elem, match){
|
4576 |
+
return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
|
4577 |
+
},
|
4578 |
+
CLASS: function(elem, match){
|
4579 |
+
return (" " + (elem.className || elem.getAttribute("class")) + " ")
|
4580 |
+
.indexOf( match ) > -1;
|
4581 |
+
},
|
4582 |
+
ATTR: function(elem, match){
|
4583 |
+
var name = match[1],
|
4584 |
+
result = Expr.attrHandle[ name ] ?
|
4585 |
+
Expr.attrHandle[ name ]( elem ) :
|
4586 |
+
elem[ name ] != null ?
|
4587 |
+
elem[ name ] :
|
4588 |
+
elem.getAttribute( name ),
|
4589 |
+
value = result + "",
|
4590 |
+
type = match[2],
|
4591 |
+
check = match[4];
|
4592 |
+
|
4593 |
+
return result == null ?
|
4594 |
+
type === "!=" :
|
4595 |
+
type === "=" ?
|
4596 |
+
value === check :
|
4597 |
+
type === "*=" ?
|
4598 |
+
value.indexOf(check) >= 0 :
|
4599 |
+
type === "~=" ?
|
4600 |
+
(" " + value + " ").indexOf(check) >= 0 :
|
4601 |
+
!check ?
|
4602 |
+
value && result !== false :
|
4603 |
+
type === "!=" ?
|
4604 |
+
value != check :
|
4605 |
+
type === "^=" ?
|
4606 |
+
value.indexOf(check) === 0 :
|
4607 |
+
type === "$=" ?
|
4608 |
+
value.substr(value.length - check.length) === check :
|
4609 |
+
type === "|=" ?
|
4610 |
+
value === check || value.substr(0, check.length + 1) === check + "-" :
|
4611 |
+
false;
|
4612 |
+
},
|
4613 |
+
POS: function(elem, match, i, array){
|
4614 |
+
var name = match[2], filter = Expr.setFilters[ name ];
|
4615 |
+
|
4616 |
+
if ( filter ) {
|
4617 |
+
return filter( elem, i, match, array );
|
4618 |
+
}
|
4619 |
+
}
|
4620 |
+
}
|
4621 |
+
};
|
4622 |
+
|
4623 |
+
var origPOS = Expr.match.POS;
|
4624 |
+
|
4625 |
+
for ( var type in Expr.match ) {
|
4626 |
+
Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
|
4627 |
+
Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
|
4628 |
+
}
|
4629 |
+
|
4630 |
+
var makeArray = function(array, results) {
|
4631 |
+
array = Array.prototype.slice.call( array, 0 );
|
4632 |
+
|
4633 |
+
if ( results ) {
|
4634 |
+
results.push.apply( results, array );
|
4635 |
+
return results;
|
4636 |
+
}
|
4637 |
+
|
4638 |
+
return array;
|
4639 |
+
};
|
4640 |
+
|
4641 |
+
try {
|
4642 |
+
Array.prototype.slice.call( document.documentElement.childNodes, 0 );
|
4643 |
+
|
4644 |
+
} catch(e){
|
4645 |
+
makeArray = function(array, results) {
|
4646 |
+
var ret = results || [];
|
4647 |
+
|
4648 |
+
if ( toString.call(array) === "[object Array]" ) {
|
4649 |
+
Array.prototype.push.apply( ret, array );
|
4650 |
+
} else {
|
4651 |
+
if ( typeof array.length === "number" ) {
|
4652 |
+
for ( var i = 0, l = array.length; i < l; i++ ) {
|
4653 |
+
ret.push( array[i] );
|
4654 |
+
}
|
4655 |
+
} else {
|
4656 |
+
for ( var i = 0; array[i]; i++ ) {
|
4657 |
+
ret.push( array[i] );
|
4658 |
+
}
|
4659 |
+
}
|
4660 |
+
}
|
4661 |
+
|
4662 |
+
return ret;
|
4663 |
+
};
|
4664 |
+
}
|
4665 |
+
|
4666 |
+
var sortOrder;
|
4667 |
+
|
4668 |
+
if ( document.documentElement.compareDocumentPosition ) {
|
4669 |
+
sortOrder = function( a, b ) {
|
4670 |
+
if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
|
4671 |
+
if ( a == b ) {
|
4672 |
+
hasDuplicate = true;
|
4673 |
+
}
|
4674 |
+
return 0;
|
4675 |
+
}
|
4676 |
+
|
4677 |
+
var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
|
4678 |
+
if ( ret === 0 ) {
|
4679 |
+
hasDuplicate = true;
|
4680 |
+
}
|
4681 |
+
return ret;
|
4682 |
+
};
|
4683 |
+
} else if ( "sourceIndex" in document.documentElement ) {
|
4684 |
+
sortOrder = function( a, b ) {
|
4685 |
+
if ( !a.sourceIndex || !b.sourceIndex ) {
|
4686 |
+
if ( a == b ) {
|
4687 |
+
hasDuplicate = true;
|
4688 |
+
}
|
4689 |
+
return 0;
|
4690 |
+
}
|
4691 |
+
|
4692 |
+
var ret = a.sourceIndex - b.sourceIndex;
|
4693 |
+
if ( ret === 0 ) {
|
4694 |
+
hasDuplicate = true;
|
4695 |
+
}
|
4696 |
+
return ret;
|
4697 |
+
};
|
4698 |
+
} else if ( document.createRange ) {
|
4699 |
+
sortOrder = function( a, b ) {
|
4700 |
+
if ( !a.ownerDocument || !b.ownerDocument ) {
|
4701 |
+
if ( a == b ) {
|
4702 |
+
hasDuplicate = true;
|
4703 |
+
}
|
4704 |
+
return 0;
|
4705 |
+
}
|
4706 |
+
|
4707 |
+
var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
|
4708 |
+
aRange.setStart(a, 0);
|
4709 |
+
aRange.setEnd(a, 0);
|
4710 |
+
bRange.setStart(b, 0);
|
4711 |
+
bRange.setEnd(b, 0);
|
4712 |
+
var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
|
4713 |
+
if ( ret === 0 ) {
|
4714 |
+
hasDuplicate = true;
|
4715 |
+
}
|
4716 |
+
return ret;
|
4717 |
+
};
|
4718 |
+
}
|
4719 |
+
|
4720 |
+
(function(){
|
4721 |
+
var form = document.createElement("div"),
|
4722 |
+
id = "script" + (new Date).getTime();
|
4723 |
+
form.innerHTML = "<a name='" + id + "'/>";
|
4724 |
+
|
4725 |
+
var root = document.documentElement;
|
4726 |
+
root.insertBefore( form, root.firstChild );
|
4727 |
+
|
4728 |
+
if ( !!document.getElementById( id ) ) {
|
4729 |
+
Expr.find.ID = function(match, context, isXML){
|
4730 |
+
if ( typeof context.getElementById !== "undefined" && !isXML ) {
|
4731 |
+
var m = context.getElementById(match[1]);
|
4732 |
+
return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
|
4733 |
+
}
|
4734 |
+
};
|
4735 |
+
|
4736 |
+
Expr.filter.ID = function(elem, match){
|
4737 |
+
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
|
4738 |
+
return elem.nodeType === 1 && node && node.nodeValue === match;
|
4739 |
+
};
|
4740 |
+
}
|
4741 |
+
|
4742 |
+
root.removeChild( form );
|
4743 |
+
root = form = null; // release memory in IE
|
4744 |
+
})();
|
4745 |
+
|
4746 |
+
(function(){
|
4747 |
+
|
4748 |
+
var div = document.createElement("div");
|
4749 |
+
div.appendChild( document.createComment("") );
|
4750 |
+
|
4751 |
+
if ( div.getElementsByTagName("*").length > 0 ) {
|
4752 |
+
Expr.find.TAG = function(match, context){
|
4753 |
+
var results = context.getElementsByTagName(match[1]);
|
4754 |
+
|
4755 |
+
if ( match[1] === "*" ) {
|
4756 |
+
var tmp = [];
|
4757 |
+
|
4758 |
+
for ( var i = 0; results[i]; i++ ) {
|
4759 |
+
if ( results[i].nodeType === 1 ) {
|
4760 |
+
tmp.push( results[i] );
|
4761 |
+
}
|
4762 |
+
}
|
4763 |
+
|
4764 |
+
results = tmp;
|
4765 |
+
}
|
4766 |
+
|
4767 |
+
return results;
|
4768 |
+
};
|
4769 |
+
}
|
4770 |
+
|
4771 |
+
div.innerHTML = "<a href='#'></a>";
|
4772 |
+
if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
|
4773 |
+
div.firstChild.getAttribute("href") !== "#" ) {
|
4774 |
+
Expr.attrHandle.href = function(elem){
|
4775 |
+
return elem.getAttribute("href", 2);
|
4776 |
+
};
|
4777 |
+
}
|
4778 |
+
|
4779 |
+
div = null; // release memory in IE
|
4780 |
+
})();
|
4781 |
+
|
4782 |
+
if ( document.querySelectorAll ) (function(){
|
4783 |
+
var oldSizzle = Sizzle, div = document.createElement("div");
|
4784 |
+
div.innerHTML = "<p class='TEST'></p>";
|
4785 |
+
|
4786 |
+
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
|
4787 |
+
return;
|
4788 |
+
}
|
4789 |
+
|
4790 |
+
Sizzle = function(query, context, extra, seed){
|
4791 |
+
context = context || document;
|
4792 |
+
|
4793 |
+
if ( !seed && context.nodeType === 9 && !isXML(context) ) {
|
4794 |
+
try {
|
4795 |
+
return makeArray( context.querySelectorAll(query), extra );
|
4796 |
+
} catch(e){}
|
4797 |
+
}
|
4798 |
+
|
4799 |
+
return oldSizzle(query, context, extra, seed);
|
4800 |
+
};
|
4801 |
+
|
4802 |
+
for ( var prop in oldSizzle ) {
|
4803 |
+
Sizzle[ prop ] = oldSizzle[ prop ];
|
4804 |
+
}
|
4805 |
+
|
4806 |
+
div = null; // release memory in IE
|
4807 |
+
})();
|
4808 |
+
|
4809 |
+
if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
|
4810 |
+
var div = document.createElement("div");
|
4811 |
+
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
|
4812 |
+
|
4813 |
+
if ( div.getElementsByClassName("e").length === 0 )
|
4814 |
+
return;
|
4815 |
+
|
4816 |
+
div.lastChild.className = "e";
|
4817 |
+
|
4818 |
+
if ( div.getElementsByClassName("e").length === 1 )
|
4819 |
+
return;
|
4820 |
+
|
4821 |
+
Expr.order.splice(1, 0, "CLASS");
|
4822 |
+
Expr.find.CLASS = function(match, context, isXML) {
|
4823 |
+
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
|
4824 |
+
return context.getElementsByClassName(match[1]);
|
4825 |
+
}
|
4826 |
+
};
|
4827 |
+
|
4828 |
+
div = null; // release memory in IE
|
4829 |
+
})();
|
4830 |
+
|
4831 |
+
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
|
4832 |
+
var sibDir = dir == "previousSibling" && !isXML;
|
4833 |
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
4834 |
+
var elem = checkSet[i];
|
4835 |
+
if ( elem ) {
|
4836 |
+
if ( sibDir && elem.nodeType === 1 ){
|
4837 |
+
elem.sizcache = doneName;
|
4838 |
+
elem.sizset = i;
|
4839 |
+
}
|
4840 |
+
elem = elem[dir];
|
4841 |
+
var match = false;
|
4842 |
+
|
4843 |
+
while ( elem ) {
|
4844 |
+
if ( elem.sizcache === doneName ) {
|
4845 |
+
match = checkSet[elem.sizset];
|
4846 |
+
break;
|
4847 |
+
}
|
4848 |
+
|
4849 |
+
if ( elem.nodeType === 1 && !isXML ){
|
4850 |
+
elem.sizcache = doneName;
|
4851 |
+
elem.sizset = i;
|
4852 |
+
}
|
4853 |
+
|
4854 |
+
if ( elem.nodeName === cur ) {
|
4855 |
+
match = elem;
|
4856 |
+
break;
|
4857 |
+
}
|
4858 |
+
|
4859 |
+
elem = elem[dir];
|
4860 |
+
}
|
4861 |
+
|
4862 |
+
checkSet[i] = match;
|
4863 |
+
}
|
4864 |
+
}
|
4865 |
+
}
|
4866 |
+
|
4867 |
+
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
|
4868 |
+
var sibDir = dir == "previousSibling" && !isXML;
|
4869 |
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
4870 |
+
var elem = checkSet[i];
|
4871 |
+
if ( elem ) {
|
4872 |
+
if ( sibDir && elem.nodeType === 1 ) {
|
4873 |
+
elem.sizcache = doneName;
|
4874 |
+
elem.sizset = i;
|
4875 |
+
}
|
4876 |
+
elem = elem[dir];
|
4877 |
+
var match = false;
|
4878 |
+
|
4879 |
+
while ( elem ) {
|
4880 |
+
if ( elem.sizcache === doneName ) {
|
4881 |
+
match = checkSet[elem.sizset];
|
4882 |
+
break;
|
4883 |
+
}
|
4884 |
+
|
4885 |
+
if ( elem.nodeType === 1 ) {
|
4886 |
+
if ( !isXML ) {
|
4887 |
+
elem.sizcache = doneName;
|
4888 |
+
elem.sizset = i;
|
4889 |
+
}
|
4890 |
+
if ( typeof cur !== "string" ) {
|
4891 |
+
if ( elem === cur ) {
|
4892 |
+
match = true;
|
4893 |
+
break;
|
4894 |
+
}
|
4895 |
+
|
4896 |
+
} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
|
4897 |
+
match = elem;
|
4898 |
+
break;
|
4899 |
+
}
|
4900 |
+
}
|
4901 |
+
|
4902 |
+
elem = elem[dir];
|
4903 |
+
}
|
4904 |
+
|
4905 |
+
checkSet[i] = match;
|
4906 |
+
}
|
4907 |
+
}
|
4908 |
+
}
|
4909 |
+
|
4910 |
+
var contains = document.compareDocumentPosition ? function(a, b){
|
4911 |
+
return a.compareDocumentPosition(b) & 16;
|
4912 |
+
} : function(a, b){
|
4913 |
+
return a !== b && (a.contains ? a.contains(b) : true);
|
4914 |
+
};
|
4915 |
+
|
4916 |
+
var isXML = function(elem){
|
4917 |
+
return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
|
4918 |
+
!!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
|
4919 |
+
};
|
4920 |
+
|
4921 |
+
var posProcess = function(selector, context){
|
4922 |
+
var tmpSet = [], later = "", match,
|
4923 |
+
root = context.nodeType ? [context] : context;
|
4924 |
+
|
4925 |
+
while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
|
4926 |
+
later += match[0];
|
4927 |
+
selector = selector.replace( Expr.match.PSEUDO, "" );
|
4928 |
+
}
|
4929 |
+
|
4930 |
+
selector = Expr.relative[selector] ? selector + "*" : selector;
|
4931 |
+
|
4932 |
+
for ( var i = 0, l = root.length; i < l; i++ ) {
|
4933 |
+
Sizzle( selector, root[i], tmpSet );
|
4934 |
+
}
|
4935 |
+
|
4936 |
+
return Sizzle.filter( later, tmpSet );
|
4937 |
+
};
|
4938 |
+
|
4939 |
+
|
4940 |
+
window.Sizzle = Sizzle;
|
4941 |
+
|
4942 |
+
})();
|
4943 |
+
|
4944 |
+
;(function(engine) {
|
4945 |
+
var extendElements = Prototype.Selector.extendElements;
|
4946 |
+
|
4947 |
+
function select(selector, scope) {
|
4948 |
+
return extendElements(engine(selector, scope || document));
|
4949 |
+
}
|
4950 |
+
|
4951 |
+
function match(element, selector) {
|
4952 |
+
return engine.matches(selector, [element]).length == 1;
|
4953 |
+
}
|
4954 |
+
|
4955 |
+
Prototype.Selector.engine = engine;
|
4956 |
+
Prototype.Selector.select = select;
|
4957 |
+
Prototype.Selector.match = match;
|
4958 |
+
})(Sizzle);
|
4959 |
+
|
4960 |
+
window.Sizzle = Prototype._original_property;
|
4961 |
+
delete Prototype._original_property;
|
4962 |
+
|
4963 |
+
var Form = {
|
4964 |
+
reset: function(form) {
|
4965 |
+
form = $(form);
|
4966 |
+
form.reset();
|
4967 |
+
return form;
|
4968 |
+
},
|
4969 |
+
|
4970 |
+
serializeElements: function(elements, options) {
|
4971 |
+
if (typeof options != 'object') options = { hash: !!options };
|
4972 |
+
else if (Object.isUndefined(options.hash)) options.hash = true;
|
4973 |
+
var key, value, submitted = false, submit = options.submit, accumulator, initial;
|
4974 |
+
|
4975 |
+
if (options.hash) {
|
4976 |
+
initial = {};
|
4977 |
+
accumulator = function(result, key, value) {
|
4978 |
+
if (key in result) {
|
4979 |
+
if (!Object.isArray(result[key])) result[key] = [result[key]];
|
4980 |
+
result[key].push(value);
|
4981 |
+
} else result[key] = value;
|
4982 |
+
return result;
|
4983 |
+
};
|
4984 |
+
} else {
|
4985 |
+
initial = '';
|
4986 |
+
accumulator = function(result, key, value) {
|
4987 |
+
return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value);
|
4988 |
+
}
|
4989 |
+
}
|
4990 |
+
|
4991 |
+
return elements.inject(initial, function(result, element) {
|
4992 |
+
if (!element.disabled && element.name) {
|
4993 |
+
key = element.name; value = $(element).getValue();
|
4994 |
+
if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&
|
4995 |
+
submit !== false && (!submit || key == submit) && (submitted = true)))) {
|
4996 |
+
result = accumulator(result, key, value);
|
4997 |
+
}
|
4998 |
+
}
|
4999 |
+
return result;
|
5000 |
+
});
|
5001 |
+
}
|
5002 |
+
};
|
5003 |
+
|
5004 |
+
Form.Methods = {
|
5005 |
+
serialize: function(form, options) {
|
5006 |
+
return Form.serializeElements(Form.getElements(form), options);
|
5007 |
+
},
|
5008 |
+
|
5009 |
+
getElements: function(form) {
|
5010 |
+
var elements = $(form).getElementsByTagName('*'),
|
5011 |
+
element,
|
5012 |
+
arr = [ ],
|
5013 |
+
serializers = Form.Element.Serializers;
|
5014 |
+
for (var i = 0; element = elements[i]; i++) {
|
5015 |
+
arr.push(element);
|
5016 |
+
}
|
5017 |
+
return arr.inject([], function(elements, child) {
|
5018 |
+
if (serializers[child.tagName.toLowerCase()])
|
5019 |
+
elements.push(Element.extend(child));
|
5020 |
+
return elements;
|
5021 |
+
})
|
5022 |
+
},
|
5023 |
+
|
5024 |
+
getInputs: function(form, typeName, name) {
|
5025 |
+
form = $(form);
|
5026 |
+
var inputs = form.getElementsByTagName('input');
|
5027 |
+
|
5028 |
+
if (!typeName && !name) return $A(inputs).map(Element.extend);
|
5029 |
+
|
5030 |
+
for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
|
5031 |
+
var input = inputs[i];
|
5032 |
+
if ((typeName && input.type != typeName) || (name && input.name != name))
|
5033 |
+
continue;
|
5034 |
+
matchingInputs.push(Element.extend(input));
|
5035 |
+
}
|
5036 |
+
|
5037 |
+
return matchingInputs;
|
5038 |
+
},
|
5039 |
+
|
5040 |
+
disable: function(form) {
|
5041 |
+
form = $(form);
|
5042 |
+
Form.getElements(form).invoke('disable');
|
5043 |
+
return form;
|
5044 |
+
},
|
5045 |
+
|
5046 |
+
enable: function(form) {
|
5047 |
+
form = $(form);
|
5048 |
+
Form.getElements(form).invoke('enable');
|
5049 |
+
return form;
|
5050 |
+
},
|
5051 |
+
|
5052 |
+
findFirstElement: function(form) {
|
5053 |
+
var elements = $(form).getElements().findAll(function(element) {
|
5054 |
+
return 'hidden' != element.type && !element.disabled;
|
5055 |
+
});
|
5056 |
+
var firstByIndex = elements.findAll(function(element) {
|
5057 |
+
return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
|
5058 |
+
}).sortBy(function(element) { return element.tabIndex }).first();
|
5059 |
+
|
5060 |
+
return firstByIndex ? firstByIndex : elements.find(function(element) {
|
5061 |
+
return /^(?:input|select|textarea)$/i.test(element.tagName);
|
5062 |
+
});
|
5063 |
+
},
|
5064 |
+
|
5065 |
+
focusFirstElement: function(form) {
|
5066 |
+
form = $(form);
|
5067 |
+
var element = form.findFirstElement();
|
5068 |
+
if (element) element.activate();
|
5069 |
+
return form;
|
5070 |
+
},
|
5071 |
+
|
5072 |
+
request: function(form, options) {
|
5073 |
+
form = $(form), options = Object.clone(options || { });
|
5074 |
+
|
5075 |
+
var params = options.parameters, action = form.readAttribute('action') || '';
|
5076 |
+
if (action.blank()) action = window.location.href;
|
5077 |
+
options.parameters = form.serialize(true);
|
5078 |
+
|
5079 |
+
if (params) {
|
5080 |
+
if (Object.isString(params)) params = params.toQueryParams();
|
5081 |
+
Object.extend(options.parameters, params);
|
5082 |
+
}
|
5083 |
+
|
5084 |
+
if (form.hasAttribute('method') && !options.method)
|
5085 |
+
options.method = form.method;
|
5086 |
+
|
5087 |
+
return new Ajax.Request(action, options);
|
5088 |
+
}
|
5089 |
+
};
|
5090 |
+
|
5091 |
+
/*--------------------------------------------------------------------------*/
|
5092 |
+
|
5093 |
+
|
5094 |
+
Form.Element = {
|
5095 |
+
focus: function(element) {
|
5096 |
+
$(element).focus();
|
5097 |
+
return element;
|
5098 |
+
},
|
5099 |
+
|
5100 |
+
select: function(element) {
|
5101 |
+
$(element).select();
|
5102 |
+
return element;
|
5103 |
+
}
|
5104 |
+
};
|
5105 |
+
|
5106 |
+
Form.Element.Methods = {
|
5107 |
+
|
5108 |
+
serialize: function(element) {
|
5109 |
+
element = $(element);
|
5110 |
+
if (!element.disabled && element.name) {
|
5111 |
+
var value = element.getValue();
|
5112 |
+
if (value != undefined) {
|
5113 |
+
var pair = { };
|
5114 |
+
pair[element.name] = value;
|
5115 |
+
return Object.toQueryString(pair);
|
5116 |
+
}
|
5117 |
+
}
|
5118 |
+
return '';
|
5119 |
+
},
|
5120 |
+
|
5121 |
+
getValue: function(element) {
|
5122 |
+
element = $(element);
|
5123 |
+
var method = element.tagName.toLowerCase();
|
5124 |
+
return Form.Element.Serializers[method](element);
|
5125 |
+
},
|
5126 |
+
|
5127 |
+
setValue: function(element, value) {
|
5128 |
+
element = $(element);
|
5129 |
+
var method = element.tagName.toLowerCase();
|
5130 |
+
Form.Element.Serializers[method](element, value);
|
5131 |
+
return element;
|
5132 |
+
},
|
5133 |
+
|
5134 |
+
clear: function(element) {
|
5135 |
+
$(element).value = '';
|
5136 |
+
return element;
|
5137 |
+
},
|
5138 |
+
|
5139 |
+
present: function(element) {
|
5140 |
+
return $(element).value != '';
|
5141 |
+
},
|
5142 |
+
|
5143 |
+
activate: function(element) {
|
5144 |
+
element = $(element);
|
5145 |
+
try {
|
5146 |
+
element.focus();
|
5147 |
+
if (element.select && (element.tagName.toLowerCase() != 'input' ||
|
5148 |
+
!(/^(?:button|reset|submit)$/i.test(element.type))))
|
5149 |
+
element.select();
|
5150 |
+
} catch (e) { }
|
5151 |
+
return element;
|
5152 |
+
},
|
5153 |
+
|
5154 |
+
disable: function(element) {
|
5155 |
+
element = $(element);
|
5156 |
+
element.disabled = true;
|
5157 |
+
return element;
|
5158 |
+
},
|
5159 |
+
|
5160 |
+
enable: function(element) {
|
5161 |
+
element = $(element);
|
5162 |
+
element.disabled = false;
|
5163 |
+
return element;
|
5164 |
+
}
|
5165 |
+
};
|
5166 |
+
|
5167 |
+
/*--------------------------------------------------------------------------*/
|
5168 |
+
|
5169 |
+
var Field = Form.Element;
|
5170 |
+
|
5171 |
+
var $F = Form.Element.Methods.getValue;
|
5172 |
+
|
5173 |
+
/*--------------------------------------------------------------------------*/
|
5174 |
+
|
5175 |
+
Form.Element.Serializers = (function() {
|
5176 |
+
function input(element, value) {
|
5177 |
+
switch (element.type.toLowerCase()) {
|
5178 |
+
case 'checkbox':
|
5179 |
+
case 'radio':
|
5180 |
+
return inputSelector(element, value);
|
5181 |
+
default:
|
5182 |
+
return valueSelector(element, value);
|
5183 |
+
}
|
5184 |
+
}
|
5185 |
+
|
5186 |
+
function inputSelector(element, value) {
|
5187 |
+
if (Object.isUndefined(value))
|
5188 |
+
return element.checked ? element.value : null;
|
5189 |
+
else element.checked = !!value;
|
5190 |
+
}
|
5191 |
+
|
5192 |
+
function valueSelector(element, value) {
|
5193 |
+
if (Object.isUndefined(value)) return element.value;
|
5194 |
+
else element.value = value;
|
5195 |
+
}
|
5196 |
+
|
5197 |
+
function select(element, value) {
|
5198 |
+
if (Object.isUndefined(value))
|
5199 |
+
return (element.type === 'select-one' ? selectOne : selectMany)(element);
|
5200 |
+
|
5201 |
+
var opt, currentValue, single = !Object.isArray(value);
|
5202 |
+
for (var i = 0, length = element.length; i < length; i++) {
|
5203 |
+
opt = element.options[i];
|
5204 |
+
currentValue = this.optionValue(opt);
|
5205 |
+
if (single) {
|
5206 |
+
if (currentValue == value) {
|
5207 |
+
opt.selected = true;
|
5208 |
+
return;
|
5209 |
+
}
|
5210 |
+
}
|
5211 |
+
else opt.selected = value.include(currentValue);
|
5212 |
+
}
|
5213 |
+
}
|
5214 |
+
|
5215 |
+
function selectOne(element) {
|
5216 |
+
var index = element.selectedIndex;
|
5217 |
+
return index >= 0 ? optionValue(element.options[index]) : null;
|
5218 |
+
}
|
5219 |
+
|
5220 |
+
function selectMany(element) {
|
5221 |
+
var values, length = element.length;
|
5222 |
+
if (!length) return null;
|
5223 |
+
|
5224 |
+
for (var i = 0, values = []; i < length; i++) {
|
5225 |
+
var opt = element.options[i];
|
5226 |
+
if (opt.selected) values.push(optionValue(opt));
|
5227 |
+
}
|
5228 |
+
return values;
|
5229 |
+
}
|
5230 |
+
|
5231 |
+
function optionValue(opt) {
|
5232 |
+
return Element.hasAttribute(opt, 'value') ? opt.value : opt.text;
|
5233 |
+
}
|
5234 |
+
|
5235 |
+
return {
|
5236 |
+
input: input,
|
5237 |
+
inputSelector: inputSelector,
|
5238 |
+
textarea: valueSelector,
|
5239 |
+
select: select,
|
5240 |
+
selectOne: selectOne,
|
5241 |
+
selectMany: selectMany,
|
5242 |
+
optionValue: optionValue,
|
5243 |
+
button: valueSelector
|
5244 |
+
};
|
5245 |
+
})();
|
5246 |
+
|
5247 |
+
/*--------------------------------------------------------------------------*/
|
5248 |
+
|
5249 |
+
|
5250 |
+
Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
|
5251 |
+
initialize: function($super, element, frequency, callback) {
|
5252 |
+
$super(callback, frequency);
|
5253 |
+
this.element = $(element);
|
5254 |
+
this.lastValue = this.getValue();
|
5255 |
+
},
|
5256 |
+
|
5257 |
+
execute: function() {
|
5258 |
+
var value = this.getValue();
|
5259 |
+
if (Object.isString(this.lastValue) && Object.isString(value) ?
|
5260 |
+
this.lastValue != value : String(this.lastValue) != String(value)) {
|
5261 |
+
this.callback(this.element, value);
|
5262 |
+
this.lastValue = value;
|
5263 |
+
}
|
5264 |
+
}
|
5265 |
+
});
|
5266 |
+
|
5267 |
+
Form.Element.Observer = Class.create(Abstract.TimedObserver, {
|
5268 |
+
getValue: function() {
|
5269 |
+
return Form.Element.getValue(this.element);
|
5270 |
+
}
|
5271 |
+
});
|
5272 |
+
|
5273 |
+
Form.Observer = Class.create(Abstract.TimedObserver, {
|
5274 |
+
getValue: function() {
|
5275 |
+
return Form.serialize(this.element);
|
5276 |
+
}
|
5277 |
+
});
|
5278 |
+
|
5279 |
+
/*--------------------------------------------------------------------------*/
|
5280 |
+
|
5281 |
+
Abstract.EventObserver = Class.create({
|
5282 |
+
initialize: function(element, callback) {
|
5283 |
+
this.element = $(element);
|
5284 |
+
this.callback = callback;
|
5285 |
+
|
5286 |
+
this.lastValue = this.getValue();
|
5287 |
+
if (this.element.tagName.toLowerCase() == 'form')
|
5288 |
+
this.registerFormCallbacks();
|
5289 |
+
else
|
5290 |
+
this.registerCallback(this.element);
|
5291 |
+
},
|
5292 |
+
|
5293 |
+
onElementEvent: function() {
|
5294 |
+
var value = this.getValue();
|
5295 |
+
if (this.lastValue != value) {
|
5296 |
+
this.callback(this.element, value);
|
5297 |
+
this.lastValue = value;
|
5298 |
+
}
|
5299 |
+
},
|
5300 |
+
|
5301 |
+
registerFormCallbacks: function() {
|
5302 |
+
Form.getElements(this.element).each(this.registerCallback, this);
|
5303 |
+
},
|
5304 |
+
|
5305 |
+
registerCallback: function(element) {
|
5306 |
+
if (element.type) {
|
5307 |
+
switch (element.type.toLowerCase()) {
|
5308 |
+
case 'checkbox':
|
5309 |
+
case 'radio':
|
5310 |
+
Event.observe(element, 'click', this.onElementEvent.bind(this));
|
5311 |
+
break;
|
5312 |
+
default:
|
5313 |
+
Event.observe(element, 'change', this.onElementEvent.bind(this));
|
5314 |
+
break;
|
5315 |
+
}
|
5316 |
+
}
|
5317 |
+
}
|
5318 |
+
});
|
5319 |
+
|
5320 |
+
Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
|
5321 |
+
getValue: function() {
|
5322 |
+
return Form.Element.getValue(this.element);
|
5323 |
+
}
|
5324 |
+
});
|
5325 |
+
|
5326 |
+
Form.EventObserver = Class.create(Abstract.EventObserver, {
|
5327 |
+
getValue: function() {
|
5328 |
+
return Form.serialize(this.element);
|
5329 |
+
}
|
5330 |
+
});
|
5331 |
+
(function() {
|
5332 |
+
|
5333 |
+
var Event = {
|
5334 |
+
KEY_BACKSPACE: 8,
|
5335 |
+
KEY_TAB: 9,
|
5336 |
+
KEY_RETURN: 13,
|
5337 |
+
KEY_ESC: 27,
|
5338 |
+
KEY_LEFT: 37,
|
5339 |
+
KEY_UP: 38,
|
5340 |
+
KEY_RIGHT: 39,
|
5341 |
+
KEY_DOWN: 40,
|
5342 |
+
KEY_DELETE: 46,
|
5343 |
+
KEY_HOME: 36,
|
5344 |
+
KEY_END: 35,
|
5345 |
+
KEY_PAGEUP: 33,
|
5346 |
+
KEY_PAGEDOWN: 34,
|
5347 |
+
KEY_INSERT: 45,
|
5348 |
+
|
5349 |
+
cache: {}
|
5350 |
+
};
|
5351 |
+
|
5352 |
+
var docEl = document.documentElement;
|
5353 |
+
var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl
|
5354 |
+
&& 'onmouseleave' in docEl;
|
5355 |
+
|
5356 |
+
|
5357 |
+
|
5358 |
+
var isIELegacyEvent = function(event) { return false; };
|
5359 |
+
|
5360 |
+
if (window.attachEvent) {
|
5361 |
+
if (window.addEventListener) {
|
5362 |
+
isIELegacyEvent = function(event) {
|
5363 |
+
return !(event instanceof window.Event);
|
5364 |
+
};
|
5365 |
+
} else {
|
5366 |
+
isIELegacyEvent = function(event) { return true; };
|
5367 |
+
}
|
5368 |
+
}
|
5369 |
+
|
5370 |
+
var _isButton;
|
5371 |
+
|
5372 |
+
function _isButtonForDOMEvents(event, code) {
|
5373 |
+
return event.which ? (event.which === code + 1) : (event.button === code);
|
5374 |
+
}
|
5375 |
+
|
5376 |
+
var legacyButtonMap = { 0: 1, 1: 4, 2: 2 };
|
5377 |
+
function _isButtonForLegacyEvents(event, code) {
|
5378 |
+
return event.button === legacyButtonMap[code];
|
5379 |
+
}
|
5380 |
+
|
5381 |
+
function _isButtonForWebKit(event, code) {
|
5382 |
+
switch (code) {
|
5383 |
+
case 0: return event.which == 1 && !event.metaKey;
|
5384 |
+
case 1: return event.which == 2 || (event.which == 1 && event.metaKey);
|
5385 |
+
case 2: return event.which == 3;
|
5386 |
+
default: return false;
|
5387 |
+
}
|
5388 |
+
}
|
5389 |
+
|
5390 |
+
if (window.attachEvent) {
|
5391 |
+
if (!window.addEventListener) {
|
5392 |
+
_isButton = _isButtonForLegacyEvents;
|
5393 |
+
} else {
|
5394 |
+
_isButton = function(event, code) {
|
5395 |
+
return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) :
|
5396 |
+
_isButtonForDOMEvents(event, code);
|
5397 |
+
}
|
5398 |
+
}
|
5399 |
+
} else if (Prototype.Browser.WebKit) {
|
5400 |
+
_isButton = _isButtonForWebKit;
|
5401 |
+
} else {
|
5402 |
+
_isButton = _isButtonForDOMEvents;
|
5403 |
+
}
|
5404 |
+
|
5405 |
+
function isLeftClick(event) { return _isButton(event, 0) }
|
5406 |
+
|
5407 |
+
function isMiddleClick(event) { return _isButton(event, 1) }
|
5408 |
+
|
5409 |
+
function isRightClick(event) { return _isButton(event, 2) }
|
5410 |
+
|
5411 |
+
function element(event) {
|
5412 |
+
event = Event.extend(event);
|
5413 |
+
|
5414 |
+
var node = event.target, type = event.type,
|
5415 |
+
currentTarget = event.currentTarget;
|
5416 |
+
|
5417 |
+
if (currentTarget && currentTarget.tagName) {
|
5418 |
+
if (type === 'load' || type === 'error' ||
|
5419 |
+
(type === 'click' && currentTarget.tagName.toLowerCase() === 'input'
|
5420 |
+
&& currentTarget.type === 'radio'))
|
5421 |
+
node = currentTarget;
|
5422 |
+
}
|
5423 |
+
|
5424 |
+
if (node.nodeType == Node.TEXT_NODE)
|
5425 |
+
node = node.parentNode;
|
5426 |
+
|
5427 |
+
return Element.extend(node);
|
5428 |
+
}
|
5429 |
+
|
5430 |
+
function findElement(event, expression) {
|
5431 |
+
var element = Event.element(event);
|
5432 |
+
|
5433 |
+
if (!expression) return element;
|
5434 |
+
while (element) {
|
5435 |
+
if (Object.isElement(element) && Prototype.Selector.match(element, expression)) {
|
5436 |
+
return Element.extend(element);
|
5437 |
+
}
|
5438 |
+
element = element.parentNode;
|
5439 |
+
}
|
5440 |
+
}
|
5441 |
+
|
5442 |
+
function pointer(event) {
|
5443 |
+
return { x: pointerX(event), y: pointerY(event) };
|
5444 |
+
}
|
5445 |
+
|
5446 |
+
function pointerX(event) {
|
5447 |
+
var docElement = document.documentElement,
|
5448 |
+
body = document.body || { scrollLeft: 0 };
|
5449 |
+
|
5450 |
+
return event.pageX || (event.clientX +
|
5451 |
+
(docElement.scrollLeft || body.scrollLeft) -
|
5452 |
+
(docElement.clientLeft || 0));
|
5453 |
+
}
|
5454 |
+
|
5455 |
+
function pointerY(event) {
|
5456 |
+
var docElement = document.documentElement,
|
5457 |
+
body = document.body || { scrollTop: 0 };
|
5458 |
+
|
5459 |
+
return event.pageY || (event.clientY +
|
5460 |
+
(docElement.scrollTop || body.scrollTop) -
|
5461 |
+
(docElement.clientTop || 0));
|
5462 |
+
}
|
5463 |
+
|
5464 |
+
|
5465 |
+
function stop(event) {
|
5466 |
+
Event.extend(event);
|
5467 |
+
event.preventDefault();
|
5468 |
+
event.stopPropagation();
|
5469 |
+
|
5470 |
+
event.stopped = true;
|
5471 |
+
}
|
5472 |
+
|
5473 |
+
|
5474 |
+
Event.Methods = {
|
5475 |
+
isLeftClick: isLeftClick,
|
5476 |
+
isMiddleClick: isMiddleClick,
|
5477 |
+
isRightClick: isRightClick,
|
5478 |
+
|
5479 |
+
element: element,
|
5480 |
+
findElement: findElement,
|
5481 |
+
|
5482 |
+
pointer: pointer,
|
5483 |
+
pointerX: pointerX,
|
5484 |
+
pointerY: pointerY,
|
5485 |
+
|
5486 |
+
stop: stop
|
5487 |
+
};
|
5488 |
+
|
5489 |
+
var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
|
5490 |
+
m[name] = Event.Methods[name].methodize();
|
5491 |
+
return m;
|
5492 |
+
});
|
5493 |
+
|
5494 |
+
if (window.attachEvent) {
|
5495 |
+
function _relatedTarget(event) {
|
5496 |
+
var element;
|
5497 |
+
switch (event.type) {
|
5498 |
+
case 'mouseover':
|
5499 |
+
case 'mouseenter':
|
5500 |
+
element = event.fromElement;
|
5501 |
+
break;
|
5502 |
+
case 'mouseout':
|
5503 |
+
case 'mouseleave':
|
5504 |
+
element = event.toElement;
|
5505 |
+
break;
|
5506 |
+
default:
|
5507 |
+
return null;
|
5508 |
+
}
|
5509 |
+
return Element.extend(element);
|
5510 |
+
}
|
5511 |
+
|
5512 |
+
var additionalMethods = {
|
5513 |
+
stopPropagation: function() { this.cancelBubble = true },
|
5514 |
+
preventDefault: function() { this.returnValue = false },
|
5515 |
+
inspect: function() { return '[object Event]' }
|
5516 |
+
};
|
5517 |
+
|
5518 |
+
Event.extend = function(event, element) {
|
5519 |
+
if (!event) return false;
|
5520 |
+
|
5521 |
+
if (!isIELegacyEvent(event)) return event;
|
5522 |
+
|
5523 |
+
if (event._extendedByPrototype) return event;
|
5524 |
+
event._extendedByPrototype = Prototype.emptyFunction;
|
5525 |
+
|
5526 |
+
var pointer = Event.pointer(event);
|
5527 |
+
|
5528 |
+
Object.extend(event, {
|
5529 |
+
target: event.srcElement || element,
|
5530 |
+
relatedTarget: _relatedTarget(event),
|
5531 |
+
pageX: pointer.x,
|
5532 |
+
pageY: pointer.y
|
5533 |
+
});
|
5534 |
+
|
5535 |
+
Object.extend(event, methods);
|
5536 |
+
Object.extend(event, additionalMethods);
|
5537 |
+
|
5538 |
+
return event;
|
5539 |
+
};
|
5540 |
+
} else {
|
5541 |
+
Event.extend = Prototype.K;
|
5542 |
+
}
|
5543 |
+
|
5544 |
+
if (window.addEventListener) {
|
5545 |
+
Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__;
|
5546 |
+
Object.extend(Event.prototype, methods);
|
5547 |
+
}
|
5548 |
+
|
5549 |
+
function _createResponder(element, eventName, handler) {
|
5550 |
+
var registry = Element.retrieve(element, 'prototype_event_registry');
|
5551 |
+
|
5552 |
+
if (Object.isUndefined(registry)) {
|
5553 |
+
CACHE.push(element);
|
5554 |
+
registry = Element.retrieve(element, 'prototype_event_registry', $H());
|
5555 |
+
}
|
5556 |
+
|
5557 |
+
var respondersForEvent = registry.get(eventName);
|
5558 |
+
if (Object.isUndefined(respondersForEvent)) {
|
5559 |
+
respondersForEvent = [];
|
5560 |
+
registry.set(eventName, respondersForEvent);
|
5561 |
+
}
|
5562 |
+
|
5563 |
+
if (respondersForEvent.pluck('handler').include(handler)) return false;
|
5564 |
+
|
5565 |
+
var responder;
|
5566 |
+
if (eventName.include(":")) {
|
5567 |
+
responder = function(event) {
|
5568 |
+
if (Object.isUndefined(event.eventName))
|
5569 |
+
return false;
|
5570 |
+
|
5571 |
+
if (event.eventName !== eventName)
|
5572 |
+
return false;
|
5573 |
+
|
5574 |
+
Event.extend(event, element);
|
5575 |
+
handler.call(element, event);
|
5576 |
+
};
|
5577 |
+
} else {
|
5578 |
+
if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&
|
5579 |
+
(eventName === "mouseenter" || eventName === "mouseleave")) {
|
5580 |
+
if (eventName === "mouseenter" || eventName === "mouseleave") {
|
5581 |
+
responder = function(event) {
|
5582 |
+
Event.extend(event, element);
|
5583 |
+
|
5584 |
+
var parent = event.relatedTarget;
|
5585 |
+
while (parent && parent !== element) {
|
5586 |
+
try { parent = parent.parentNode; }
|
5587 |
+
catch(e) { parent = element; }
|
5588 |
+
}
|
5589 |
+
|
5590 |
+
if (parent === element) return;
|
5591 |
+
|
5592 |
+
handler.call(element, event);
|
5593 |
+
};
|
5594 |
+
}
|
5595 |
+
} else {
|
5596 |
+
responder = function(event) {
|
5597 |
+
Event.extend(event, element);
|
5598 |
+
handler.call(element, event);
|
5599 |
+
};
|
5600 |
+
}
|
5601 |
+
}
|
5602 |
+
|
5603 |
+
responder.handler = handler;
|
5604 |
+
respondersForEvent.push(responder);
|
5605 |
+
return responder;
|
5606 |
+
}
|
5607 |
+
|
5608 |
+
function _destroyCache() {
|
5609 |
+
for (var i = 0, length = CACHE.length; i < length; i++) {
|
5610 |
+
Event.stopObserving(CACHE[i]);
|
5611 |
+
CACHE[i] = null;
|
5612 |
+
}
|
5613 |
+
}
|
5614 |
+
|
5615 |
+
var CACHE = [];
|
5616 |
+
|
5617 |
+
if (Prototype.Browser.IE)
|
5618 |
+
window.attachEvent('onunload', _destroyCache);
|
5619 |
+
|
5620 |
+
if (Prototype.Browser.WebKit)
|
5621 |
+
window.addEventListener('unload', Prototype.emptyFunction, false);
|
5622 |
+
|
5623 |
+
|
5624 |
+
var _getDOMEventName = Prototype.K,
|
5625 |
+
translations = { mouseenter: "mouseover", mouseleave: "mouseout" };
|
5626 |
+
|
5627 |
+
if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) {
|
5628 |
+
_getDOMEventName = function(eventName) {
|
5629 |
+
return (translations[eventName] || eventName);
|
5630 |
+
};
|
5631 |
+
}
|
5632 |
+
|
5633 |
+
function observe(element, eventName, handler) {
|
5634 |
+
element = $(element);
|
5635 |
+
|
5636 |
+
var responder = _createResponder(element, eventName, handler);
|
5637 |
+
|
5638 |
+
if (!responder) return element;
|
5639 |
+
|
5640 |
+
if (eventName.include(':')) {
|
5641 |
+
if (element.addEventListener)
|
5642 |
+
element.addEventListener("dataavailable", responder, false);
|
5643 |
+
else {
|
5644 |
+
element.attachEvent("ondataavailable", responder);
|
5645 |
+
element.attachEvent("onlosecapture", responder);
|
5646 |
+
}
|
5647 |
+
} else {
|
5648 |
+
var actualEventName = _getDOMEventName(eventName);
|
5649 |
+
|
5650 |
+
if (element.addEventListener)
|
5651 |
+
element.addEventListener(actualEventName, responder, false);
|
5652 |
+
else
|
5653 |
+
element.attachEvent("on" + actualEventName, responder);
|
5654 |
+
}
|
5655 |
+
|
5656 |
+
return element;
|
5657 |
+
}
|
5658 |
+
|
5659 |
+
function stopObserving(element, eventName, handler) {
|
5660 |
+
element = $(element);
|
5661 |
+
|
5662 |
+
var registry = Element.retrieve(element, 'prototype_event_registry');
|
5663 |
+
if (!registry) return element;
|
5664 |
+
|
5665 |
+
if (!eventName) {
|
5666 |
+
registry.each( function(pair) {
|
5667 |
+
var eventName = pair.key;
|
5668 |
+
stopObserving(element, eventName);
|
5669 |
+
});
|
5670 |
+
return element;
|
5671 |
+
}
|
5672 |
+
|
5673 |
+
var responders = registry.get(eventName);
|
5674 |
+
if (!responders) return element;
|
5675 |
+
|
5676 |
+
if (!handler) {
|
5677 |
+
responders.each(function(r) {
|
5678 |
+
stopObserving(element, eventName, r.handler);
|
5679 |
+
});
|
5680 |
+
return element;
|
5681 |
+
}
|
5682 |
+
|
5683 |
+
var i = responders.length, responder;
|
5684 |
+
while (i--) {
|
5685 |
+
if (responders[i].handler === handler) {
|
5686 |
+
responder = responders[i];
|
5687 |
+
break;
|
5688 |
+
}
|
5689 |
+
}
|
5690 |
+
if (!responder) return element;
|
5691 |
+
|
5692 |
+
if (eventName.include(':')) {
|
5693 |
+
if (element.removeEventListener)
|
5694 |
+
element.removeEventListener("dataavailable", responder, false);
|
5695 |
+
else {
|
5696 |
+
element.detachEvent("ondataavailable", responder);
|
5697 |
+
element.detachEvent("onlosecapture", responder);
|
5698 |
+
}
|
5699 |
+
} else {
|
5700 |
+
var actualEventName = _getDOMEventName(eventName);
|
5701 |
+
if (element.removeEventListener)
|
5702 |
+
element.removeEventListener(actualEventName, responder, false);
|
5703 |
+
else
|
5704 |
+
element.detachEvent('on' + actualEventName, responder);
|
5705 |
+
}
|
5706 |
+
|
5707 |
+
registry.set(eventName, responders.without(responder));
|
5708 |
+
|
5709 |
+
return element;
|
5710 |
+
}
|
5711 |
+
|
5712 |
+
function fire(element, eventName, memo, bubble) {
|
5713 |
+
element = $(element);
|
5714 |
+
|
5715 |
+
if (Object.isUndefined(bubble))
|
5716 |
+
bubble = true;
|
5717 |
+
|
5718 |
+
if (element == document && document.createEvent && !element.dispatchEvent)
|
5719 |
+
element = document.documentElement;
|
5720 |
+
|
5721 |
+
var event;
|
5722 |
+
if (document.createEvent) {
|
5723 |
+
event = document.createEvent('HTMLEvents');
|
5724 |
+
event.initEvent('dataavailable', bubble, true);
|
5725 |
+
} else {
|
5726 |
+
event = document.createEventObject();
|
5727 |
+
event.eventType = bubble ? 'ondataavailable' : 'onlosecapture';
|
5728 |
+
}
|
5729 |
+
|
5730 |
+
event.eventName = eventName;
|
5731 |
+
event.memo = memo || { };
|
5732 |
+
|
5733 |
+
if (document.createEvent)
|
5734 |
+
element.dispatchEvent(event);
|
5735 |
+
else
|
5736 |
+
element.fireEvent(event.eventType, event);
|
5737 |
+
|
5738 |
+
return Event.extend(event);
|
5739 |
+
}
|
5740 |
+
|
5741 |
+
Event.Handler = Class.create({
|
5742 |
+
initialize: function(element, eventName, selector, callback) {
|
5743 |
+
this.element = $(element);
|
5744 |
+
this.eventName = eventName;
|
5745 |
+
this.selector = selector;
|
5746 |
+
this.callback = callback;
|
5747 |
+
this.handler = this.handleEvent.bind(this);
|
5748 |
+
},
|
5749 |
+
|
5750 |
+
start: function() {
|
5751 |
+
Event.observe(this.element, this.eventName, this.handler);
|
5752 |
+
return this;
|
5753 |
+
},
|
5754 |
+
|
5755 |
+
stop: function() {
|
5756 |
+
Event.stopObserving(this.element, this.eventName, this.handler);
|
5757 |
+
return this;
|
5758 |
+
},
|
5759 |
+
|
5760 |
+
handleEvent: function(event) {
|
5761 |
+
var element = Event.findElement(event, this.selector);
|
5762 |
+
if (element) this.callback.call(this.element, event, element);
|
5763 |
+
}
|
5764 |
+
});
|
5765 |
+
|
5766 |
+
function on(element, eventName, selector, callback) {
|
5767 |
+
element = $(element);
|
5768 |
+
if (Object.isFunction(selector) && Object.isUndefined(callback)) {
|
5769 |
+
callback = selector, selector = null;
|
5770 |
+
}
|
5771 |
+
|
5772 |
+
return new Event.Handler(element, eventName, selector, callback).start();
|
5773 |
+
}
|
5774 |
+
|
5775 |
+
Object.extend(Event, Event.Methods);
|
5776 |
+
|
5777 |
+
Object.extend(Event, {
|
5778 |
+
fire: fire,
|
5779 |
+
observe: observe,
|
5780 |
+
stopObserving: stopObserving,
|
5781 |
+
on: on
|
5782 |
+
});
|
5783 |
+
|
5784 |
+
Element.addMethods({
|
5785 |
+
fire: fire,
|
5786 |
+
|
5787 |
+
observe: observe,
|
5788 |
+
|
5789 |
+
stopObserving: stopObserving,
|
5790 |
+
|
5791 |
+
on: on
|
5792 |
+
});
|
5793 |
+
|
5794 |
+
Object.extend(document, {
|
5795 |
+
fire: fire.methodize(),
|
5796 |
+
|
5797 |
+
observe: observe.methodize(),
|
5798 |
+
|
5799 |
+
stopObserving: stopObserving.methodize(),
|
5800 |
+
|
5801 |
+
on: on.methodize(),
|
5802 |
+
|
5803 |
+
loaded: false
|
5804 |
+
});
|
5805 |
+
|
5806 |
+
if (window.Event) Object.extend(window.Event, Event);
|
5807 |
+
else window.Event = Event;
|
5808 |
+
})();
|
5809 |
+
|
5810 |
+
(function() {
|
5811 |
+
/* Support for the DOMContentLoaded event is based on work by Dan Webb,
|
5812 |
+
Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */
|
5813 |
+
|
5814 |
+
var timer;
|
5815 |
+
|
5816 |
+
function fireContentLoadedEvent() {
|
5817 |
+
if (document.loaded) return;
|
5818 |
+
if (timer) window.clearTimeout(timer);
|
5819 |
+
document.loaded = true;
|
5820 |
+
document.fire('dom:loaded');
|
5821 |
+
}
|
5822 |
+
|
5823 |
+
function checkReadyState() {
|
5824 |
+
if (document.readyState === 'complete') {
|
5825 |
+
document.stopObserving('readystatechange', checkReadyState);
|
5826 |
+
fireContentLoadedEvent();
|
5827 |
+
}
|
5828 |
+
}
|
5829 |
+
|
5830 |
+
function pollDoScroll() {
|
5831 |
+
try { document.documentElement.doScroll('left'); }
|
5832 |
+
catch(e) {
|
5833 |
+
timer = pollDoScroll.defer();
|
5834 |
+
return;
|
5835 |
+
}
|
5836 |
+
fireContentLoadedEvent();
|
5837 |
+
}
|
5838 |
+
|
5839 |
+
if (document.addEventListener) {
|
5840 |
+
document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);
|
5841 |
+
} else {
|
5842 |
+
document.observe('readystatechange', checkReadyState);
|
5843 |
+
if (window == top)
|
5844 |
+
timer = pollDoScroll.defer();
|
5845 |
+
}
|
5846 |
+
|
5847 |
+
Event.observe(window, 'load', fireContentLoadedEvent);
|
5848 |
+
})();
|
5849 |
+
|
5850 |
+
Element.addMethods();
|
5851 |
+
|
5852 |
+
/*------------------------------- DEPRECATED -------------------------------*/
|
5853 |
+
|
5854 |
+
Hash.toQueryString = Object.toQueryString;
|
5855 |
+
|
5856 |
+
var Toggle = { display: Element.toggle };
|
5857 |
+
|
5858 |
+
Element.Methods.childOf = Element.Methods.descendantOf;
|
5859 |
+
|
5860 |
+
var Insertion = {
|
5861 |
+
Before: function(element, content) {
|
5862 |
+
return Element.insert(element, {before:content});
|
5863 |
+
},
|
5864 |
+
|
5865 |
+
Top: function(element, content) {
|
5866 |
+
return Element.insert(element, {top:content});
|
5867 |
+
},
|
5868 |
+
|
5869 |
+
Bottom: function(element, content) {
|
5870 |
+
return Element.insert(element, {bottom:content});
|
5871 |
+
},
|
5872 |
+
|
5873 |
+
After: function(element, content) {
|
5874 |
+
return Element.insert(element, {after:content});
|
5875 |
+
}
|
5876 |
+
};
|
5877 |
+
|
5878 |
+
var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
|
5879 |
+
|
5880 |
+
var Position = {
|
5881 |
+
includeScrollOffsets: false,
|
5882 |
+
|
5883 |
+
prepare: function() {
|
5884 |
+
this.deltaX = window.pageXOffset
|
5885 |
+
|| document.documentElement.scrollLeft
|
5886 |
+
|| document.body.scrollLeft
|
5887 |
+
|| 0;
|
5888 |
+
this.deltaY = window.pageYOffset
|
5889 |
+
|| document.documentElement.scrollTop
|
5890 |
+
|| document.body.scrollTop
|
5891 |
+
|| 0;
|
5892 |
+
},
|
5893 |
+
|
5894 |
+
within: function(element, x, y) {
|
5895 |
+
if (this.includeScrollOffsets)
|
5896 |
+
return this.withinIncludingScrolloffsets(element, x, y);
|
5897 |
+
this.xcomp = x;
|
5898 |
+
this.ycomp = y;
|
5899 |
+
this.offset = Element.cumulativeOffset(element);
|
5900 |
+
|
5901 |
+
return (y >= this.offset[1] &&
|
5902 |
+
y < this.offset[1] + element.offsetHeight &&
|
5903 |
+
x >= this.offset[0] &&
|
5904 |
+
x < this.offset[0] + element.offsetWidth);
|
5905 |
+
},
|
5906 |
+
|
5907 |
+
withinIncludingScrolloffsets: function(element, x, y) {
|
5908 |
+
var offsetcache = Element.cumulativeScrollOffset(element);
|
5909 |
+
|
5910 |
+
this.xcomp = x + offsetcache[0] - this.deltaX;
|
5911 |
+
this.ycomp = y + offsetcache[1] - this.deltaY;
|
5912 |
+
this.offset = Element.cumulativeOffset(element);
|
5913 |
+
|
5914 |
+
return (this.ycomp >= this.offset[1] &&
|
5915 |
+
this.ycomp < this.offset[1] + element.offsetHeight &&
|
5916 |
+
this.xcomp >= this.offset[0] &&
|
5917 |
+
this.xcomp < this.offset[0] + element.offsetWidth);
|
5918 |
+
},
|
5919 |
+
|
5920 |
+
overlap: function(mode, element) {
|
5921 |
+
if (!mode) return 0;
|
5922 |
+
if (mode == 'vertical')
|
5923 |
+
return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
|
5924 |
+
element.offsetHeight;
|
5925 |
+
if (mode == 'horizontal')
|
5926 |
+
return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
|
5927 |
+
element.offsetWidth;
|
5928 |
+
},
|
5929 |
+
|
5930 |
+
|
5931 |
+
cumulativeOffset: Element.Methods.cumulativeOffset,
|
5932 |
+
|
5933 |
+
positionedOffset: Element.Methods.positionedOffset,
|
5934 |
+
|
5935 |
+
absolutize: function(element) {
|
5936 |
+
Position.prepare();
|
5937 |
+
return Element.absolutize(element);
|
5938 |
+
},
|
5939 |
+
|
5940 |
+
relativize: function(element) {
|
5941 |
+
Position.prepare();
|
5942 |
+
return Element.relativize(element);
|
5943 |
+
},
|
5944 |
+
|
5945 |
+
realOffset: Element.Methods.cumulativeScrollOffset,
|
5946 |
+
|
5947 |
+
offsetParent: Element.Methods.getOffsetParent,
|
5948 |
+
|
5949 |
+
page: Element.Methods.viewportOffset,
|
5950 |
+
|
5951 |
+
clone: function(source, target, options) {
|
5952 |
+
options = options || { };
|
5953 |
+
return Element.clonePosition(target, source, options);
|
5954 |
+
}
|
5955 |
+
};
|
5956 |
+
|
5957 |
+
/*--------------------------------------------------------------------------*/
|
5958 |
+
|
5959 |
+
if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
|
5960 |
+
function iter(name) {
|
5961 |
+
return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
|
5962 |
+
}
|
5963 |
+
|
5964 |
+
instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
|
5965 |
+
function(element, className) {
|
5966 |
+
className = className.toString().strip();
|
5967 |
+
var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
|
5968 |
+
return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
|
5969 |
+
} : function(element, className) {
|
5970 |
+
className = className.toString().strip();
|
5971 |
+
var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
|
5972 |
+
if (!classNames && !className) return elements;
|
5973 |
+
|
5974 |
+
var nodes = $(element).getElementsByTagName('*');
|
5975 |
+
className = ' ' + className + ' ';
|
5976 |
+
|
5977 |
+
for (var i = 0, child, cn; child = nodes[i]; i++) {
|
5978 |
+
if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
|
5979 |
+
(classNames && classNames.all(function(name) {
|
5980 |
+
return !name.toString().blank() && cn.include(' ' + name + ' ');
|
5981 |
+
}))))
|
5982 |
+
elements.push(Element.extend(child));
|
5983 |
+
}
|
5984 |
+
return elements;
|
5985 |
+
};
|
5986 |
+
|
5987 |
+
return function(className, parentElement) {
|
5988 |
+
return $(parentElement || document.body).getElementsByClassName(className);
|
5989 |
+
};
|
5990 |
+
}(Element.Methods);
|
5991 |
+
|
5992 |
+
/*--------------------------------------------------------------------------*/
|
5993 |
+
|
5994 |
+
Element.ClassNames = Class.create();
|
5995 |
+
Element.ClassNames.prototype = {
|
5996 |
+
initialize: function(element) {
|
5997 |
+
this.element = $(element);
|
5998 |
+
},
|
5999 |
+
|
6000 |
+
_each: function(iterator) {
|
6001 |
+
this.element.className.split(/\s+/).select(function(name) {
|
6002 |
+
return name.length > 0;
|
6003 |
+
})._each(iterator);
|
6004 |
+
},
|
6005 |
+
|
6006 |
+
set: function(className) {
|
6007 |
+
this.element.className = className;
|
6008 |
+
},
|
6009 |
+
|
6010 |
+
add: function(classNameToAdd) {
|
6011 |
+
if (this.include(classNameToAdd)) return;
|
6012 |
+
this.set($A(this).concat(classNameToAdd).join(' '));
|
6013 |
+
},
|
6014 |
+
|
6015 |
+
remove: function(classNameToRemove) {
|
6016 |
+
if (!this.include(classNameToRemove)) return;
|
6017 |
+
this.set($A(this).without(classNameToRemove).join(' '));
|
6018 |
+
},
|
6019 |
+
|
6020 |
+
toString: function() {
|
6021 |
+
return $A(this).join(' ');
|
6022 |
+
}
|
6023 |
+
};
|
6024 |
+
|
6025 |
+
Object.extend(Element.ClassNames.prototype, Enumerable);
|
6026 |
+
|
6027 |
+
/*--------------------------------------------------------------------------*/
|
6028 |
+
|
6029 |
+
(function() {
|
6030 |
+
window.Selector = Class.create({
|
6031 |
+
initialize: function(expression) {
|
6032 |
+
this.expression = expression.strip();
|
6033 |
+
},
|
6034 |
+
|
6035 |
+
findElements: function(rootElement) {
|
6036 |
+
return Prototype.Selector.select(this.expression, rootElement);
|
6037 |
+
},
|
6038 |
+
|
6039 |
+
match: function(element) {
|
6040 |
+
return Prototype.Selector.match(element, this.expression);
|
6041 |
+
},
|
6042 |
+
|
6043 |
+
toString: function() {
|
6044 |
+
return this.expression;
|
6045 |
+
},
|
6046 |
+
|
6047 |
+
inspect: function() {
|
6048 |
+
return "#<Selector: " + this.expression + ">";
|
6049 |
+
}
|
6050 |
+
});
|
6051 |
+
|
6052 |
+
Object.extend(Selector, {
|
6053 |
+
matchElements: function(elements, expression) {
|
6054 |
+
var match = Prototype.Selector.match,
|
6055 |
+
results = [];
|
6056 |
+
|
6057 |
+
for (var i = 0, length = elements.length; i < length; i++) {
|
6058 |
+
var element = elements[i];
|
6059 |
+
if (match(element, expression)) {
|
6060 |
+
results.push(Element.extend(element));
|
6061 |
+
}
|
6062 |
+
}
|
6063 |
+
return results;
|
6064 |
+
},
|
6065 |
+
|
6066 |
+
findElement: function(elements, expression, index) {
|
6067 |
+
index = index || 0;
|
6068 |
+
var matchIndex = 0, element;
|
6069 |
+
for (var i = 0, length = elements.length; i < length; i++) {
|
6070 |
+
element = elements[i];
|
6071 |
+
if (Prototype.Selector.match(element, expression) && index === matchIndex++) {
|
6072 |
+
return Element.extend(element);
|
6073 |
+
}
|
6074 |
+
}
|
6075 |
+
},
|
6076 |
+
|
6077 |
+
findChildElements: function(element, expressions) {
|
6078 |
+
var selector = expressions.toArray().join(', ');
|
6079 |
+
return Prototype.Selector.select(selector, element || document);
|
6080 |
+
}
|
6081 |
+
});
|
6082 |
+
})();
|
common/libs/chosen-v1.8.3/docsupport/style.css
ADDED
@@ -0,0 +1,219 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Reset */
|
2 |
+
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; }
|
3 |
+
|
4 |
+
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; }
|
5 |
+
|
6 |
+
blockquote, q { quotes: none; }
|
7 |
+
blockquote:before, blockquote:after, q:before, q:after { content: ""; content: none; }
|
8 |
+
ins { background-color: #ff9; color: #000; text-decoration: none; }
|
9 |
+
mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; }
|
10 |
+
del { text-decoration: line-through; }
|
11 |
+
abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; }
|
12 |
+
table { border-collapse: collapse; border-spacing: 0; }
|
13 |
+
hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
|
14 |
+
input, select { vertical-align: middle; }
|
15 |
+
|
16 |
+
body { font:13px/1.231 sans-serif; *font-size:small; } /* Hack retained to preserve specificity */
|
17 |
+
select, input, textarea, button { font:99% sans-serif; }
|
18 |
+
pre, code, kbd, samp { font-family: monospace, sans-serif; }
|
19 |
+
|
20 |
+
|
21 |
+
body { background: #EEE; color: #444; line-height: 1.4em; }
|
22 |
+
|
23 |
+
header h1 { color: black; font-size: 2em; line-height: 1.1em; display: inline-block; height: 27px; margin: 20px 0 25px; }
|
24 |
+
header h1 small { font-size: 0.6em; }
|
25 |
+
|
26 |
+
div#content { background: white; border: 1px solid #ccc; border-width: 0 1px 1px; margin: 0 auto; padding: 40px 50px 40px; width: 738px; }
|
27 |
+
|
28 |
+
footer { color: #999; padding-top: 40px; font-size: 0.8em; text-align: center; }
|
29 |
+
|
30 |
+
body { font-family: sans-serif; font-size: 1em; }
|
31 |
+
|
32 |
+
p { margin: 0 0 .7em; max-width: 700px; }
|
33 |
+
table+p { margin-top: 1em; }
|
34 |
+
|
35 |
+
h2 { border-bottom: 1px solid #ccc; font-size: 1.2em; margin: 3em 0 1em 0; font-weight: bold;}
|
36 |
+
h3 { font-weight: bold; }
|
37 |
+
|
38 |
+
h2.intro { border-bottom: none; font-size: 1em; font-weight: normal; margin-top:0; }
|
39 |
+
|
40 |
+
ul li { list-style: disc; margin-left: 1em; margin-bottom: 1.25em; }
|
41 |
+
ol li { margin-left: 1.25em; }
|
42 |
+
ol ul, ul ul { margin: .25em 0 0; }
|
43 |
+
ol ul li, ul ul li { list-style-type: circle; margin: 0 0 .25em 1em; }
|
44 |
+
|
45 |
+
li > p { margin-top: .25em; }
|
46 |
+
|
47 |
+
div.side-by-side { width: 100%; margin-bottom: 1em; }
|
48 |
+
div.side-by-side > div { float: left; width: 49%; }
|
49 |
+
div.side-by-side > div > em { margin-bottom: 10px; display: block; }
|
50 |
+
|
51 |
+
.faqs em { display: block; }
|
52 |
+
|
53 |
+
.clearfix:after {
|
54 |
+
content: "\0020";
|
55 |
+
display: block;
|
56 |
+
height: 0;
|
57 |
+
clear: both;
|
58 |
+
overflow: hidden;
|
59 |
+
visibility: hidden;
|
60 |
+
}
|
61 |
+
|
62 |
+
a { color: #F36C00; outline: none; text-decoration: none; }
|
63 |
+
a:hover { text-decoration: underline; }
|
64 |
+
|
65 |
+
ul.credits li { margin-bottom: .25em; }
|
66 |
+
|
67 |
+
strong { font-weight: bold; }
|
68 |
+
i { font-style: italic; }
|
69 |
+
|
70 |
+
.button {
|
71 |
+
background: #fafafa;
|
72 |
+
background: -webkit-linear-gradient(top, #ffffff, #eeeeee);
|
73 |
+
background: -moz-linear-gradient(top, #ffffff, #eeeeee);
|
74 |
+
background: -o-linear-gradient(top, #ffffff, #eeeeee);
|
75 |
+
background: linear-gradient(to bottom, #ffffff, #eeeeee);
|
76 |
+
border: 1px solid #bbbbbb;
|
77 |
+
border-radius: 4px;
|
78 |
+
box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.2);
|
79 |
+
color: #555555;
|
80 |
+
cursor: pointer;
|
81 |
+
display: inline-block;
|
82 |
+
font-family: "Helvetica Neue", Arial, Verdana, "Nimbus Sans L", sans-serif;
|
83 |
+
font-size: 13px;
|
84 |
+
font-weight: 500;
|
85 |
+
height: 31px;
|
86 |
+
line-height: 28px;
|
87 |
+
outline: none;
|
88 |
+
padding: 0 13px;
|
89 |
+
text-shadow: 0 1px 0 white;
|
90 |
+
text-decoration: none;
|
91 |
+
vertical-align: middle;
|
92 |
+
white-space: nowrap;
|
93 |
+
-webkit-font-smoothing: antialiased;
|
94 |
+
-webkit-box-sizing: border-box;
|
95 |
+
-moz-box-sizing: border-box;
|
96 |
+
box-sizing: border-box;
|
97 |
+
}
|
98 |
+
|
99 |
+
.button-blue {
|
100 |
+
background: #1385e5;
|
101 |
+
background: -webkit-linear-gradient(top, #53b2fc, #1385e5);
|
102 |
+
background: -moz-linear-gradient(top, #53b2fc, #1385e5);
|
103 |
+
background: -o-linear-gradient(top, #53b2fc, #1385e5);
|
104 |
+
background: linear-gradient(to bottom, #53b2fc, #1385e5);
|
105 |
+
border-color: #075fa9;
|
106 |
+
color: white;
|
107 |
+
font-weight: bold;
|
108 |
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4);
|
109 |
+
}
|
110 |
+
|
111 |
+
|
112 |
+
/* Tweak navbar brand link to be super sleek
|
113 |
+
-------------------------------------------------- */
|
114 |
+
.oss-bar {
|
115 |
+
top: 0;
|
116 |
+
right: 20px;
|
117 |
+
position: fixed;
|
118 |
+
z-index: 1030;
|
119 |
+
}
|
120 |
+
.oss-bar ul {
|
121 |
+
float: right;
|
122 |
+
margin: 0;
|
123 |
+
list-style: none;
|
124 |
+
}
|
125 |
+
.oss-bar ul li {
|
126 |
+
list-style: none;
|
127 |
+
float: left;
|
128 |
+
line-height: 0;
|
129 |
+
margin: 0;
|
130 |
+
}
|
131 |
+
.oss-bar ul li a {
|
132 |
+
-moz-box-sizing: border-box;
|
133 |
+
-webkit-box-sizing: border-box;
|
134 |
+
-ms-box-sizing: border-box;
|
135 |
+
box-sizing: border-box;
|
136 |
+
border: 0;
|
137 |
+
margin-top: -10px;
|
138 |
+
display: block;
|
139 |
+
height: 58px;
|
140 |
+
background: #F36C00 url(oss-credit.png) no-repeat 20px 22px;
|
141 |
+
padding: 22px 20px 12px 20px;
|
142 |
+
text-indent: 120%; /* stupid padding */
|
143 |
+
white-space: nowrap;
|
144 |
+
overflow: hidden;
|
145 |
+
-webkit-transition: all 0.10s ease-in-out;
|
146 |
+
-moz-transition: all 0.10s ease-in-out;
|
147 |
+
transition: all 0.15s ease-in-out;
|
148 |
+
}
|
149 |
+
.oss-bar ul li a:hover {
|
150 |
+
margin-top: 0px;
|
151 |
+
}
|
152 |
+
.oss-bar a.harvest {
|
153 |
+
width: 196px;
|
154 |
+
background-color: #F36C00;
|
155 |
+
background-position: -142px 22px;
|
156 |
+
padding-right: 22px; /* optical illusion */
|
157 |
+
}
|
158 |
+
.oss-bar a.fork {
|
159 |
+
width: 162px;
|
160 |
+
background-color: #333333;
|
161 |
+
}
|
162 |
+
|
163 |
+
.docs-table th, .docs-table td {
|
164 |
+
border: 1px solid #000;
|
165 |
+
padding: 4px 6px;
|
166 |
+
white-space: nowrap;
|
167 |
+
}
|
168 |
+
|
169 |
+
.docs-table td:last-child {
|
170 |
+
white-space: normal;
|
171 |
+
}
|
172 |
+
|
173 |
+
.docs-table th {
|
174 |
+
font-weight: bold;
|
175 |
+
text-align: left;
|
176 |
+
}
|
177 |
+
|
178 |
+
#content pre[class*=language-] {
|
179 |
+
font-size: 14px;
|
180 |
+
margin-bottom: 20px;
|
181 |
+
}
|
182 |
+
|
183 |
+
#content pre[class*=language-] code {
|
184 |
+
font-size: 14px;
|
185 |
+
padding: 0;
|
186 |
+
}
|
187 |
+
|
188 |
+
#content code[class*=language-] {
|
189 |
+
font-size: 12px;
|
190 |
+
padding: 2px 4px;
|
191 |
+
}
|
192 |
+
|
193 |
+
.anchor {
|
194 |
+
color: inherit;
|
195 |
+
position: relative;
|
196 |
+
}
|
197 |
+
|
198 |
+
.anchor:hover {
|
199 |
+
background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSIjNDE0MDQyIj48cGF0aCBkPSJNOS44IDdoLS45bC0uOS0uMWMtLjctLjMtMS40LS43LTEuOC0xLjMtLjItLjEtLjMtLjMtLjMtLjVsLS4zLS40Yy0uMS0uNC0uMi0uOC0uMi0xLjIgMC0uNC4xLS44LjItMS4yaDEuN2MtLjMuNC0uNC44LS40IDEuMiAwIC40LjEuOC4zIDEuMS4xLjIuMi4zLjQuNC4xLjEuMi4yLjQuMy4zLjIuNy4zIDEgLjNoMy40YzEuMiAwIDIuMi0uOSAyLjItMi4xcy0xLTIuMS0yLjItMi4xaC0xLjRjLS4zLS42LS43LTEtMS4yLTEuNGgyLjZjMiAwIDMuNiAxLjYgMy42IDMuNXMtMS42IDMuNS0zLjYgMy41aC0yLjZ6TTguNCAyYy0uMS0uMS0uMi0uMy0uNC0uMy0uMy0uMi0uNy0uMy0xLS4zaC0zLjRjLTEuMiAwLTIuMi45LTIuMiAyLjEgMCAxLjIgMSAyLjEgMi4yIDIuMWgxLjRjLjMuNS43IDEgMS4yIDEuNGgtMi42Yy0yIDAtMy42LTEuNi0zLjYtMy41czEuNi0zLjUgMy42LTMuNWgzLjUwMDAwMDAwMDAwMDAwMDRsLjkuMWMuNy4yIDEuNC43IDEuOCAxLjMuMS4xLjIuMy4zLjUuMS4xLjIuMy4yLjUuMS40LjIuOC4yIDEuMiAwIC40LS4xLjgtLjIgMS4yaC0xLjZjLjMtLjUuNC0uOS40LTEuM3MtLjEtLjgtLjMtMS4xYy0uMS0uMi0uMi0uMy0uNC0uNHoiLz48L2c+PC9zdmc+) 0 50% no-repeat;
|
200 |
+
background-size: 21px 9px;
|
201 |
+
margin-left: -27px;
|
202 |
+
padding-left: 27px;
|
203 |
+
text-decoration: none;
|
204 |
+
}
|
205 |
+
|
206 |
+
.select,
|
207 |
+
.chosen-select,
|
208 |
+
.chosen-select-no-single,
|
209 |
+
.chosen-select-no-results,
|
210 |
+
.chosen-select-deselect,
|
211 |
+
.chosen-select-rtl,
|
212 |
+
.chosen-select-width {
|
213 |
+
width: 350px;
|
214 |
+
}
|
215 |
+
|
216 |
+
.jquery-version-refer {
|
217 |
+
margin-top: 40px;
|
218 |
+
font-style: italic;
|
219 |
+
}
|
common/libs/chosen-v1.8.3/index.html
ADDED
@@ -0,0 +1,1473 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!doctype html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="utf-8">
|
5 |
+
<title>Chosen: A jQuery Plugin by Harvest to Tame Unwieldy Select Boxes</title>
|
6 |
+
<link rel="stylesheet" href="docsupport/style.css">
|
7 |
+
<link rel="stylesheet" href="docsupport/prism.css">
|
8 |
+
<link rel="stylesheet" href="chosen.css">
|
9 |
+
|
10 |
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://ajax.googleapis.com; style-src 'self'; img-src 'self' data:">
|
11 |
+
|
12 |
+
</head>
|
13 |
+
<body>
|
14 |
+
<form>
|
15 |
+
<div id="container">
|
16 |
+
<div id="content">
|
17 |
+
<header>
|
18 |
+
<h1>Chosen <small>(<span id="latest-version">v1.8.3</span>)</small></h1>
|
19 |
+
</header>
|
20 |
+
<p>Chosen is a jQuery plugin that makes long, unwieldy select boxes much more user-friendly.</p>
|
21 |
+
|
22 |
+
<p>
|
23 |
+
<a class="button button-blue" href="https://github.com/harvesthq/chosen/releases">Downloads</a>
|
24 |
+
<a class="button" href="https://github.com/harvesthq/chosen">Project Source</a>
|
25 |
+
<a class="button" href="https://github.com/harvesthq/chosen/blob/master/contributing.md">Contribute</a>
|
26 |
+
</p>
|
27 |
+
|
28 |
+
<h2><a name="standard-select" class="anchor" href="#standard-select">Standard Select</a></h2>
|
29 |
+
<div class="side-by-side clearfix">
|
30 |
+
<div>
|
31 |
+
<em>Turns This</em>
|
32 |
+
<select data-placeholder="Choose a Country..." class="select" tabindex="1">
|
33 |
+
<option value=""></option>
|
34 |
+
<option value="United States">United States</option>
|
35 |
+
<option value="United Kingdom">United Kingdom</option>
|
36 |
+
<option value="Afghanistan">Afghanistan</option>
|
37 |
+
<option value="Aland Islands">Aland Islands</option>
|
38 |
+
<option value="Albania">Albania</option>
|
39 |
+
<option value="Algeria">Algeria</option>
|
40 |
+
<option value="American Samoa">American Samoa</option>
|
41 |
+
<option value="Andorra">Andorra</option>
|
42 |
+
<option value="Angola">Angola</option>
|
43 |
+
<option value="Anguilla">Anguilla</option>
|
44 |
+
<option value="Antarctica">Antarctica</option>
|
45 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
46 |
+
<option value="Argentina">Argentina</option>
|
47 |
+
<option value="Armenia">Armenia</option>
|
48 |
+
<option value="Aruba">Aruba</option>
|
49 |
+
<option value="Australia">Australia</option>
|
50 |
+
<option value="Austria">Austria</option>
|
51 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
52 |
+
<option value="Bahamas">Bahamas</option>
|
53 |
+
<option value="Bahrain">Bahrain</option>
|
54 |
+
<option value="Bangladesh">Bangladesh</option>
|
55 |
+
<option value="Barbados">Barbados</option>
|
56 |
+
<option value="Belarus">Belarus</option>
|
57 |
+
<option value="Belgium">Belgium</option>
|
58 |
+
<option value="Belize">Belize</option>
|
59 |
+
<option value="Benin">Benin</option>
|
60 |
+
<option value="Bermuda">Bermuda</option>
|
61 |
+
<option value="Bhutan">Bhutan</option>
|
62 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
63 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
64 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
65 |
+
<option value="Botswana">Botswana</option>
|
66 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
67 |
+
<option value="Brazil">Brazil</option>
|
68 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
69 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
70 |
+
<option value="Bulgaria">Bulgaria</option>
|
71 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
72 |
+
<option value="Burundi">Burundi</option>
|
73 |
+
<option value="Cambodia">Cambodia</option>
|
74 |
+
<option value="Cameroon">Cameroon</option>
|
75 |
+
<option value="Canada">Canada</option>
|
76 |
+
<option value="Cape Verde">Cape Verde</option>
|
77 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
78 |
+
<option value="Central African Republic">Central African Republic</option>
|
79 |
+
<option value="Chad">Chad</option>
|
80 |
+
<option value="Chile">Chile</option>
|
81 |
+
<option value="China">China</option>
|
82 |
+
<option value="Christmas Island">Christmas Island</option>
|
83 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
84 |
+
<option value="Colombia">Colombia</option>
|
85 |
+
<option value="Comoros">Comoros</option>
|
86 |
+
<option value="Congo">Congo</option>
|
87 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
88 |
+
<option value="Cook Islands">Cook Islands</option>
|
89 |
+
<option value="Costa Rica">Costa Rica</option>
|
90 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
91 |
+
<option value="Croatia">Croatia</option>
|
92 |
+
<option value="Cuba">Cuba</option>
|
93 |
+
<option value="Curacao">Curacao</option>
|
94 |
+
<option value="Cyprus">Cyprus</option>
|
95 |
+
<option value="Czech Republic">Czech Republic</option>
|
96 |
+
<option value="Denmark">Denmark</option>
|
97 |
+
<option value="Djibouti">Djibouti</option>
|
98 |
+
<option value="Dominica">Dominica</option>
|
99 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
100 |
+
<option value="Ecuador">Ecuador</option>
|
101 |
+
<option value="Egypt">Egypt</option>
|
102 |
+
<option value="El Salvador">El Salvador</option>
|
103 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
104 |
+
<option value="Eritrea">Eritrea</option>
|
105 |
+
<option value="Estonia">Estonia</option>
|
106 |
+
<option value="Ethiopia">Ethiopia</option>
|
107 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
108 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
109 |
+
<option value="Fiji">Fiji</option>
|
110 |
+
<option value="Finland">Finland</option>
|
111 |
+
<option value="France">France</option>
|
112 |
+
<option value="French Guiana">French Guiana</option>
|
113 |
+
<option value="French Polynesia">French Polynesia</option>
|
114 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
115 |
+
<option value="Gabon">Gabon</option>
|
116 |
+
<option value="Gambia">Gambia</option>
|
117 |
+
<option value="Georgia">Georgia</option>
|
118 |
+
<option value="Germany">Germany</option>
|
119 |
+
<option value="Ghana">Ghana</option>
|
120 |
+
<option value="Gibraltar">Gibraltar</option>
|
121 |
+
<option value="Greece">Greece</option>
|
122 |
+
<option value="Greenland">Greenland</option>
|
123 |
+
<option value="Grenada">Grenada</option>
|
124 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
125 |
+
<option value="Guam">Guam</option>
|
126 |
+
<option value="Guatemala">Guatemala</option>
|
127 |
+
<option value="Guernsey">Guernsey</option>
|
128 |
+
<option value="Guinea">Guinea</option>
|
129 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
130 |
+
<option value="Guyana">Guyana</option>
|
131 |
+
<option value="Haiti">Haiti</option>
|
132 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
133 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
134 |
+
<option value="Honduras">Honduras</option>
|
135 |
+
<option value="Hong Kong">Hong Kong</option>
|
136 |
+
<option value="Hungary">Hungary</option>
|
137 |
+
<option value="Iceland">Iceland</option>
|
138 |
+
<option value="India">India</option>
|
139 |
+
<option value="Indonesia">Indonesia</option>
|
140 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
141 |
+
<option value="Iraq">Iraq</option>
|
142 |
+
<option value="Ireland">Ireland</option>
|
143 |
+
<option value="Isle of Man">Isle of Man</option>
|
144 |
+
<option value="Israel">Israel</option>
|
145 |
+
<option value="Italy">Italy</option>
|
146 |
+
<option value="Jamaica">Jamaica</option>
|
147 |
+
<option value="Japan">Japan</option>
|
148 |
+
<option value="Jersey">Jersey</option>
|
149 |
+
<option value="Jordan">Jordan</option>
|
150 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
151 |
+
<option value="Kenya">Kenya</option>
|
152 |
+
<option value="Kiribati">Kiribati</option>
|
153 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
154 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
155 |
+
<option value="Kuwait">Kuwait</option>
|
156 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
157 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
158 |
+
<option value="Latvia">Latvia</option>
|
159 |
+
<option value="Lebanon">Lebanon</option>
|
160 |
+
<option value="Lesotho">Lesotho</option>
|
161 |
+
<option value="Liberia">Liberia</option>
|
162 |
+
<option value="Libya">Libya</option>
|
163 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
164 |
+
<option value="Lithuania">Lithuania</option>
|
165 |
+
<option value="Luxembourg">Luxembourg</option>
|
166 |
+
<option value="Macao">Macao</option>
|
167 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
168 |
+
<option value="Madagascar">Madagascar</option>
|
169 |
+
<option value="Malawi">Malawi</option>
|
170 |
+
<option value="Malaysia">Malaysia</option>
|
171 |
+
<option value="Maldives">Maldives</option>
|
172 |
+
<option value="Mali">Mali</option>
|
173 |
+
<option value="Malta">Malta</option>
|
174 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
175 |
+
<option value="Martinique">Martinique</option>
|
176 |
+
<option value="Mauritania">Mauritania</option>
|
177 |
+
<option value="Mauritius">Mauritius</option>
|
178 |
+
<option value="Mayotte">Mayotte</option>
|
179 |
+
<option value="Mexico">Mexico</option>
|
180 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
181 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
182 |
+
<option value="Monaco">Monaco</option>
|
183 |
+
<option value="Mongolia">Mongolia</option>
|
184 |
+
<option value="Montenegro">Montenegro</option>
|
185 |
+
<option value="Montserrat">Montserrat</option>
|
186 |
+
<option value="Morocco">Morocco</option>
|
187 |
+
<option value="Mozambique">Mozambique</option>
|
188 |
+
<option value="Myanmar">Myanmar</option>
|
189 |
+
<option value="Namibia">Namibia</option>
|
190 |
+
<option value="Nauru">Nauru</option>
|
191 |
+
<option value="Nepal">Nepal</option>
|
192 |
+
<option value="Netherlands">Netherlands</option>
|
193 |
+
<option value="New Caledonia">New Caledonia</option>
|
194 |
+
<option value="New Zealand">New Zealand</option>
|
195 |
+
<option value="Nicaragua">Nicaragua</option>
|
196 |
+
<option value="Niger">Niger</option>
|
197 |
+
<option value="Nigeria">Nigeria</option>
|
198 |
+
<option value="Niue">Niue</option>
|
199 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
200 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
201 |
+
<option value="Norway">Norway</option>
|
202 |
+
<option value="Oman">Oman</option>
|
203 |
+
<option value="Pakistan">Pakistan</option>
|
204 |
+
<option value="Palau">Palau</option>
|
205 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
206 |
+
<option value="Panama">Panama</option>
|
207 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
208 |
+
<option value="Paraguay">Paraguay</option>
|
209 |
+
<option value="Peru">Peru</option>
|
210 |
+
<option value="Philippines">Philippines</option>
|
211 |
+
<option value="Pitcairn">Pitcairn</option>
|
212 |
+
<option value="Poland">Poland</option>
|
213 |
+
<option value="Portugal">Portugal</option>
|
214 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
215 |
+
<option value="Qatar">Qatar</option>
|
216 |
+
<option value="Reunion">Reunion</option>
|
217 |
+
<option value="Romania">Romania</option>
|
218 |
+
<option value="Russian Federation">Russian Federation</option>
|
219 |
+
<option value="Rwanda">Rwanda</option>
|
220 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
221 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
222 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
223 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
224 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
225 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
226 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
227 |
+
<option value="Samoa">Samoa</option>
|
228 |
+
<option value="San Marino">San Marino</option>
|
229 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
230 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
231 |
+
<option value="Senegal">Senegal</option>
|
232 |
+
<option value="Serbia">Serbia</option>
|
233 |
+
<option value="Seychelles">Seychelles</option>
|
234 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
235 |
+
<option value="Singapore">Singapore</option>
|
236 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
237 |
+
<option value="Slovakia">Slovakia</option>
|
238 |
+
<option value="Slovenia">Slovenia</option>
|
239 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
240 |
+
<option value="Somalia">Somalia</option>
|
241 |
+
<option value="South Africa">South Africa</option>
|
242 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
243 |
+
<option value="South Sudan">South Sudan</option>
|
244 |
+
<option value="Spain">Spain</option>
|
245 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
246 |
+
<option value="Sudan">Sudan</option>
|
247 |
+
<option value="Suriname">Suriname</option>
|
248 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
249 |
+
<option value="Swaziland">Swaziland</option>
|
250 |
+
<option value="Sweden">Sweden</option>
|
251 |
+
<option value="Switzerland">Switzerland</option>
|
252 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
253 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
254 |
+
<option value="Tajikistan">Tajikistan</option>
|
255 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
256 |
+
<option value="Thailand">Thailand</option>
|
257 |
+
<option value="Timor-leste">Timor-leste</option>
|
258 |
+
<option value="Togo">Togo</option>
|
259 |
+
<option value="Tokelau">Tokelau</option>
|
260 |
+
<option value="Tonga">Tonga</option>
|
261 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
262 |
+
<option value="Tunisia">Tunisia</option>
|
263 |
+
<option value="Turkey">Turkey</option>
|
264 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
265 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
266 |
+
<option value="Tuvalu">Tuvalu</option>
|
267 |
+
<option value="Uganda">Uganda</option>
|
268 |
+
<option value="Ukraine">Ukraine</option>
|
269 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
270 |
+
<option value="United Kingdom">United Kingdom</option>
|
271 |
+
<option value="United States">United States</option>
|
272 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
273 |
+
<option value="Uruguay">Uruguay</option>
|
274 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
275 |
+
<option value="Vanuatu">Vanuatu</option>
|
276 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
277 |
+
<option value="Viet Nam">Viet Nam</option>
|
278 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
279 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
280 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
281 |
+
<option value="Western Sahara">Western Sahara</option>
|
282 |
+
<option value="Yemen">Yemen</option>
|
283 |
+
<option value="Zambia">Zambia</option>
|
284 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
285 |
+
</select>
|
286 |
+
</div>
|
287 |
+
<div>
|
288 |
+
<em>Into This</em>
|
289 |
+
<select data-placeholder="Choose a Country..." class="chosen-select" tabindex="2">
|
290 |
+
<option value=""></option>
|
291 |
+
<option value="United States">United States</option>
|
292 |
+
<option value="United Kingdom">United Kingdom</option>
|
293 |
+
<option value="Afghanistan">Afghanistan</option>
|
294 |
+
<option value="Aland Islands">Aland Islands</option>
|
295 |
+
<option value="Albania">Albania</option>
|
296 |
+
<option value="Algeria">Algeria</option>
|
297 |
+
<option value="American Samoa">American Samoa</option>
|
298 |
+
<option value="Andorra">Andorra</option>
|
299 |
+
<option value="Angola">Angola</option>
|
300 |
+
<option value="Anguilla">Anguilla</option>
|
301 |
+
<option value="Antarctica">Antarctica</option>
|
302 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
303 |
+
<option value="Argentina">Argentina</option>
|
304 |
+
<option value="Armenia">Armenia</option>
|
305 |
+
<option value="Aruba">Aruba</option>
|
306 |
+
<option value="Australia">Australia</option>
|
307 |
+
<option value="Austria">Austria</option>
|
308 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
309 |
+
<option value="Bahamas">Bahamas</option>
|
310 |
+
<option value="Bahrain">Bahrain</option>
|
311 |
+
<option value="Bangladesh">Bangladesh</option>
|
312 |
+
<option value="Barbados">Barbados</option>
|
313 |
+
<option value="Belarus">Belarus</option>
|
314 |
+
<option value="Belgium">Belgium</option>
|
315 |
+
<option value="Belize">Belize</option>
|
316 |
+
<option value="Benin">Benin</option>
|
317 |
+
<option value="Bermuda">Bermuda</option>
|
318 |
+
<option value="Bhutan">Bhutan</option>
|
319 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
320 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
321 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
322 |
+
<option value="Botswana">Botswana</option>
|
323 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
324 |
+
<option value="Brazil">Brazil</option>
|
325 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
326 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
327 |
+
<option value="Bulgaria">Bulgaria</option>
|
328 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
329 |
+
<option value="Burundi">Burundi</option>
|
330 |
+
<option value="Cambodia">Cambodia</option>
|
331 |
+
<option value="Cameroon">Cameroon</option>
|
332 |
+
<option value="Canada">Canada</option>
|
333 |
+
<option value="Cape Verde">Cape Verde</option>
|
334 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
335 |
+
<option value="Central African Republic">Central African Republic</option>
|
336 |
+
<option value="Chad">Chad</option>
|
337 |
+
<option value="Chile">Chile</option>
|
338 |
+
<option value="China">China</option>
|
339 |
+
<option value="Christmas Island">Christmas Island</option>
|
340 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
341 |
+
<option value="Colombia">Colombia</option>
|
342 |
+
<option value="Comoros">Comoros</option>
|
343 |
+
<option value="Congo">Congo</option>
|
344 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
345 |
+
<option value="Cook Islands">Cook Islands</option>
|
346 |
+
<option value="Costa Rica">Costa Rica</option>
|
347 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
348 |
+
<option value="Croatia">Croatia</option>
|
349 |
+
<option value="Cuba">Cuba</option>
|
350 |
+
<option value="Curacao">Curacao</option>
|
351 |
+
<option value="Cyprus">Cyprus</option>
|
352 |
+
<option value="Czech Republic">Czech Republic</option>
|
353 |
+
<option value="Denmark">Denmark</option>
|
354 |
+
<option value="Djibouti">Djibouti</option>
|
355 |
+
<option value="Dominica">Dominica</option>
|
356 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
357 |
+
<option value="Ecuador">Ecuador</option>
|
358 |
+
<option value="Egypt">Egypt</option>
|
359 |
+
<option value="El Salvador">El Salvador</option>
|
360 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
361 |
+
<option value="Eritrea">Eritrea</option>
|
362 |
+
<option value="Estonia">Estonia</option>
|
363 |
+
<option value="Ethiopia">Ethiopia</option>
|
364 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
365 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
366 |
+
<option value="Fiji">Fiji</option>
|
367 |
+
<option value="Finland">Finland</option>
|
368 |
+
<option value="France">France</option>
|
369 |
+
<option value="French Guiana">French Guiana</option>
|
370 |
+
<option value="French Polynesia">French Polynesia</option>
|
371 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
372 |
+
<option value="Gabon">Gabon</option>
|
373 |
+
<option value="Gambia">Gambia</option>
|
374 |
+
<option value="Georgia">Georgia</option>
|
375 |
+
<option value="Germany">Germany</option>
|
376 |
+
<option value="Ghana">Ghana</option>
|
377 |
+
<option value="Gibraltar">Gibraltar</option>
|
378 |
+
<option value="Greece">Greece</option>
|
379 |
+
<option value="Greenland">Greenland</option>
|
380 |
+
<option value="Grenada">Grenada</option>
|
381 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
382 |
+
<option value="Guam">Guam</option>
|
383 |
+
<option value="Guatemala">Guatemala</option>
|
384 |
+
<option value="Guernsey">Guernsey</option>
|
385 |
+
<option value="Guinea">Guinea</option>
|
386 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
387 |
+
<option value="Guyana">Guyana</option>
|
388 |
+
<option value="Haiti">Haiti</option>
|
389 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
390 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
391 |
+
<option value="Honduras">Honduras</option>
|
392 |
+
<option value="Hong Kong">Hong Kong</option>
|
393 |
+
<option value="Hungary">Hungary</option>
|
394 |
+
<option value="Iceland">Iceland</option>
|
395 |
+
<option value="India">India</option>
|
396 |
+
<option value="Indonesia">Indonesia</option>
|
397 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
398 |
+
<option value="Iraq">Iraq</option>
|
399 |
+
<option value="Ireland">Ireland</option>
|
400 |
+
<option value="Isle of Man">Isle of Man</option>
|
401 |
+
<option value="Israel">Israel</option>
|
402 |
+
<option value="Italy">Italy</option>
|
403 |
+
<option value="Jamaica">Jamaica</option>
|
404 |
+
<option value="Japan">Japan</option>
|
405 |
+
<option value="Jersey">Jersey</option>
|
406 |
+
<option value="Jordan">Jordan</option>
|
407 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
408 |
+
<option value="Kenya">Kenya</option>
|
409 |
+
<option value="Kiribati">Kiribati</option>
|
410 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
411 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
412 |
+
<option value="Kuwait">Kuwait</option>
|
413 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
414 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
415 |
+
<option value="Latvia">Latvia</option>
|
416 |
+
<option value="Lebanon">Lebanon</option>
|
417 |
+
<option value="Lesotho">Lesotho</option>
|
418 |
+
<option value="Liberia">Liberia</option>
|
419 |
+
<option value="Libya">Libya</option>
|
420 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
421 |
+
<option value="Lithuania">Lithuania</option>
|
422 |
+
<option value="Luxembourg">Luxembourg</option>
|
423 |
+
<option value="Macao">Macao</option>
|
424 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
425 |
+
<option value="Madagascar">Madagascar</option>
|
426 |
+
<option value="Malawi">Malawi</option>
|
427 |
+
<option value="Malaysia">Malaysia</option>
|
428 |
+
<option value="Maldives">Maldives</option>
|
429 |
+
<option value="Mali">Mali</option>
|
430 |
+
<option value="Malta">Malta</option>
|
431 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
432 |
+
<option value="Martinique">Martinique</option>
|
433 |
+
<option value="Mauritania">Mauritania</option>
|
434 |
+
<option value="Mauritius">Mauritius</option>
|
435 |
+
<option value="Mayotte">Mayotte</option>
|
436 |
+
<option value="Mexico">Mexico</option>
|
437 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
438 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
439 |
+
<option value="Monaco">Monaco</option>
|
440 |
+
<option value="Mongolia">Mongolia</option>
|
441 |
+
<option value="Montenegro">Montenegro</option>
|
442 |
+
<option value="Montserrat">Montserrat</option>
|
443 |
+
<option value="Morocco">Morocco</option>
|
444 |
+
<option value="Mozambique">Mozambique</option>
|
445 |
+
<option value="Myanmar">Myanmar</option>
|
446 |
+
<option value="Namibia">Namibia</option>
|
447 |
+
<option value="Nauru">Nauru</option>
|
448 |
+
<option value="Nepal">Nepal</option>
|
449 |
+
<option value="Netherlands">Netherlands</option>
|
450 |
+
<option value="New Caledonia">New Caledonia</option>
|
451 |
+
<option value="New Zealand">New Zealand</option>
|
452 |
+
<option value="Nicaragua">Nicaragua</option>
|
453 |
+
<option value="Niger">Niger</option>
|
454 |
+
<option value="Nigeria">Nigeria</option>
|
455 |
+
<option value="Niue">Niue</option>
|
456 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
457 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
458 |
+
<option value="Norway">Norway</option>
|
459 |
+
<option value="Oman">Oman</option>
|
460 |
+
<option value="Pakistan">Pakistan</option>
|
461 |
+
<option value="Palau">Palau</option>
|
462 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
463 |
+
<option value="Panama">Panama</option>
|
464 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
465 |
+
<option value="Paraguay">Paraguay</option>
|
466 |
+
<option value="Peru">Peru</option>
|
467 |
+
<option value="Philippines">Philippines</option>
|
468 |
+
<option value="Pitcairn">Pitcairn</option>
|
469 |
+
<option value="Poland">Poland</option>
|
470 |
+
<option value="Portugal">Portugal</option>
|
471 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
472 |
+
<option value="Qatar">Qatar</option>
|
473 |
+
<option value="Reunion">Reunion</option>
|
474 |
+
<option value="Romania">Romania</option>
|
475 |
+
<option value="Russian Federation">Russian Federation</option>
|
476 |
+
<option value="Rwanda">Rwanda</option>
|
477 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
478 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
479 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
480 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
481 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
482 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
483 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
484 |
+
<option value="Samoa">Samoa</option>
|
485 |
+
<option value="San Marino">San Marino</option>
|
486 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
487 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
488 |
+
<option value="Senegal">Senegal</option>
|
489 |
+
<option value="Serbia">Serbia</option>
|
490 |
+
<option value="Seychelles">Seychelles</option>
|
491 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
492 |
+
<option value="Singapore">Singapore</option>
|
493 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
494 |
+
<option value="Slovakia">Slovakia</option>
|
495 |
+
<option value="Slovenia">Slovenia</option>
|
496 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
497 |
+
<option value="Somalia">Somalia</option>
|
498 |
+
<option value="South Africa">South Africa</option>
|
499 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
500 |
+
<option value="South Sudan">South Sudan</option>
|
501 |
+
<option value="Spain">Spain</option>
|
502 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
503 |
+
<option value="Sudan">Sudan</option>
|
504 |
+
<option value="Suriname">Suriname</option>
|
505 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
506 |
+
<option value="Swaziland">Swaziland</option>
|
507 |
+
<option value="Sweden">Sweden</option>
|
508 |
+
<option value="Switzerland">Switzerland</option>
|
509 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
510 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
511 |
+
<option value="Tajikistan">Tajikistan</option>
|
512 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
513 |
+
<option value="Thailand">Thailand</option>
|
514 |
+
<option value="Timor-leste">Timor-leste</option>
|
515 |
+
<option value="Togo">Togo</option>
|
516 |
+
<option value="Tokelau">Tokelau</option>
|
517 |
+
<option value="Tonga">Tonga</option>
|
518 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
519 |
+
<option value="Tunisia">Tunisia</option>
|
520 |
+
<option value="Turkey">Turkey</option>
|
521 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
522 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
523 |
+
<option value="Tuvalu">Tuvalu</option>
|
524 |
+
<option value="Uganda">Uganda</option>
|
525 |
+
<option value="Ukraine">Ukraine</option>
|
526 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
527 |
+
<option value="United Kingdom">United Kingdom</option>
|
528 |
+
<option value="United States">United States</option>
|
529 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
530 |
+
<option value="Uruguay">Uruguay</option>
|
531 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
532 |
+
<option value="Vanuatu">Vanuatu</option>
|
533 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
534 |
+
<option value="Viet Nam">Viet Nam</option>
|
535 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
536 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
537 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
538 |
+
<option value="Western Sahara">Western Sahara</option>
|
539 |
+
<option value="Yemen">Yemen</option>
|
540 |
+
<option value="Zambia">Zambia</option>
|
541 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
542 |
+
</select>
|
543 |
+
</div>
|
544 |
+
</div>
|
545 |
+
|
546 |
+
<h2><a name="multiple-select" class="anchor" href="#multiple-select">Multiple Select</a></h2>
|
547 |
+
<div class="side-by-side clearfix">
|
548 |
+
<div>
|
549 |
+
<em>Turns This</em>
|
550 |
+
<select data-placeholder="Choose a Country..." class="select" multiple tabindex="3">
|
551 |
+
<option value=""></option>
|
552 |
+
<option value="United States">United States</option>
|
553 |
+
<option value="United Kingdom">United Kingdom</option>
|
554 |
+
<option value="Afghanistan">Afghanistan</option>
|
555 |
+
<option value="Aland Islands">Aland Islands</option>
|
556 |
+
<option value="Albania">Albania</option>
|
557 |
+
<option value="Algeria">Algeria</option>
|
558 |
+
<option value="American Samoa">American Samoa</option>
|
559 |
+
<option value="Andorra">Andorra</option>
|
560 |
+
<option value="Angola">Angola</option>
|
561 |
+
<option value="Anguilla">Anguilla</option>
|
562 |
+
<option value="Antarctica">Antarctica</option>
|
563 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
564 |
+
<option value="Argentina">Argentina</option>
|
565 |
+
<option value="Armenia">Armenia</option>
|
566 |
+
<option value="Aruba">Aruba</option>
|
567 |
+
<option value="Australia">Australia</option>
|
568 |
+
<option value="Austria">Austria</option>
|
569 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
570 |
+
<option value="Bahamas">Bahamas</option>
|
571 |
+
<option value="Bahrain">Bahrain</option>
|
572 |
+
<option value="Bangladesh">Bangladesh</option>
|
573 |
+
<option value="Barbados">Barbados</option>
|
574 |
+
<option value="Belarus">Belarus</option>
|
575 |
+
<option value="Belgium">Belgium</option>
|
576 |
+
<option value="Belize">Belize</option>
|
577 |
+
<option value="Benin">Benin</option>
|
578 |
+
<option value="Bermuda">Bermuda</option>
|
579 |
+
<option value="Bhutan">Bhutan</option>
|
580 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
581 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
582 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
583 |
+
<option value="Botswana">Botswana</option>
|
584 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
585 |
+
<option value="Brazil">Brazil</option>
|
586 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
587 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
588 |
+
<option value="Bulgaria">Bulgaria</option>
|
589 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
590 |
+
<option value="Burundi">Burundi</option>
|
591 |
+
<option value="Cambodia">Cambodia</option>
|
592 |
+
<option value="Cameroon">Cameroon</option>
|
593 |
+
<option value="Canada">Canada</option>
|
594 |
+
<option value="Cape Verde">Cape Verde</option>
|
595 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
596 |
+
<option value="Central African Republic">Central African Republic</option>
|
597 |
+
<option value="Chad">Chad</option>
|
598 |
+
<option value="Chile">Chile</option>
|
599 |
+
<option value="China">China</option>
|
600 |
+
<option value="Christmas Island">Christmas Island</option>
|
601 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
602 |
+
<option value="Colombia">Colombia</option>
|
603 |
+
<option value="Comoros">Comoros</option>
|
604 |
+
<option value="Congo">Congo</option>
|
605 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
606 |
+
<option value="Cook Islands">Cook Islands</option>
|
607 |
+
<option value="Costa Rica">Costa Rica</option>
|
608 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
609 |
+
<option value="Croatia">Croatia</option>
|
610 |
+
<option value="Cuba">Cuba</option>
|
611 |
+
<option value="Curacao">Curacao</option>
|
612 |
+
<option value="Cyprus">Cyprus</option>
|
613 |
+
<option value="Czech Republic">Czech Republic</option>
|
614 |
+
<option value="Denmark">Denmark</option>
|
615 |
+
<option value="Djibouti">Djibouti</option>
|
616 |
+
<option value="Dominica">Dominica</option>
|
617 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
618 |
+
<option value="Ecuador">Ecuador</option>
|
619 |
+
<option value="Egypt">Egypt</option>
|
620 |
+
<option value="El Salvador">El Salvador</option>
|
621 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
622 |
+
<option value="Eritrea">Eritrea</option>
|
623 |
+
<option value="Estonia">Estonia</option>
|
624 |
+
<option value="Ethiopia">Ethiopia</option>
|
625 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
626 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
627 |
+
<option value="Fiji">Fiji</option>
|
628 |
+
<option value="Finland">Finland</option>
|
629 |
+
<option value="France">France</option>
|
630 |
+
<option value="French Guiana">French Guiana</option>
|
631 |
+
<option value="French Polynesia">French Polynesia</option>
|
632 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
633 |
+
<option value="Gabon">Gabon</option>
|
634 |
+
<option value="Gambia">Gambia</option>
|
635 |
+
<option value="Georgia">Georgia</option>
|
636 |
+
<option value="Germany">Germany</option>
|
637 |
+
<option value="Ghana">Ghana</option>
|
638 |
+
<option value="Gibraltar">Gibraltar</option>
|
639 |
+
<option value="Greece">Greece</option>
|
640 |
+
<option value="Greenland">Greenland</option>
|
641 |
+
<option value="Grenada">Grenada</option>
|
642 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
643 |
+
<option value="Guam">Guam</option>
|
644 |
+
<option value="Guatemala">Guatemala</option>
|
645 |
+
<option value="Guernsey">Guernsey</option>
|
646 |
+
<option value="Guinea">Guinea</option>
|
647 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
648 |
+
<option value="Guyana">Guyana</option>
|
649 |
+
<option value="Haiti">Haiti</option>
|
650 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
651 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
652 |
+
<option value="Honduras">Honduras</option>
|
653 |
+
<option value="Hong Kong">Hong Kong</option>
|
654 |
+
<option value="Hungary">Hungary</option>
|
655 |
+
<option value="Iceland">Iceland</option>
|
656 |
+
<option value="India">India</option>
|
657 |
+
<option value="Indonesia">Indonesia</option>
|
658 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
659 |
+
<option value="Iraq">Iraq</option>
|
660 |
+
<option value="Ireland">Ireland</option>
|
661 |
+
<option value="Isle of Man">Isle of Man</option>
|
662 |
+
<option value="Israel">Israel</option>
|
663 |
+
<option value="Italy">Italy</option>
|
664 |
+
<option value="Jamaica">Jamaica</option>
|
665 |
+
<option value="Japan">Japan</option>
|
666 |
+
<option value="Jersey">Jersey</option>
|
667 |
+
<option value="Jordan">Jordan</option>
|
668 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
669 |
+
<option value="Kenya">Kenya</option>
|
670 |
+
<option value="Kiribati">Kiribati</option>
|
671 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
672 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
673 |
+
<option value="Kuwait">Kuwait</option>
|
674 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
675 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
676 |
+
<option value="Latvia">Latvia</option>
|
677 |
+
<option value="Lebanon">Lebanon</option>
|
678 |
+
<option value="Lesotho">Lesotho</option>
|
679 |
+
<option value="Liberia">Liberia</option>
|
680 |
+
<option value="Libya">Libya</option>
|
681 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
682 |
+
<option value="Lithuania">Lithuania</option>
|
683 |
+
<option value="Luxembourg">Luxembourg</option>
|
684 |
+
<option value="Macao">Macao</option>
|
685 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
686 |
+
<option value="Madagascar">Madagascar</option>
|
687 |
+
<option value="Malawi">Malawi</option>
|
688 |
+
<option value="Malaysia">Malaysia</option>
|
689 |
+
<option value="Maldives">Maldives</option>
|
690 |
+
<option value="Mali">Mali</option>
|
691 |
+
<option value="Malta">Malta</option>
|
692 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
693 |
+
<option value="Martinique">Martinique</option>
|
694 |
+
<option value="Mauritania">Mauritania</option>
|
695 |
+
<option value="Mauritius">Mauritius</option>
|
696 |
+
<option value="Mayotte">Mayotte</option>
|
697 |
+
<option value="Mexico">Mexico</option>
|
698 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
699 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
700 |
+
<option value="Monaco">Monaco</option>
|
701 |
+
<option value="Mongolia">Mongolia</option>
|
702 |
+
<option value="Montenegro">Montenegro</option>
|
703 |
+
<option value="Montserrat">Montserrat</option>
|
704 |
+
<option value="Morocco">Morocco</option>
|
705 |
+
<option value="Mozambique">Mozambique</option>
|
706 |
+
<option value="Myanmar">Myanmar</option>
|
707 |
+
<option value="Namibia">Namibia</option>
|
708 |
+
<option value="Nauru">Nauru</option>
|
709 |
+
<option value="Nepal">Nepal</option>
|
710 |
+
<option value="Netherlands">Netherlands</option>
|
711 |
+
<option value="New Caledonia">New Caledonia</option>
|
712 |
+
<option value="New Zealand">New Zealand</option>
|
713 |
+
<option value="Nicaragua">Nicaragua</option>
|
714 |
+
<option value="Niger">Niger</option>
|
715 |
+
<option value="Nigeria">Nigeria</option>
|
716 |
+
<option value="Niue">Niue</option>
|
717 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
718 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
719 |
+
<option value="Norway">Norway</option>
|
720 |
+
<option value="Oman">Oman</option>
|
721 |
+
<option value="Pakistan">Pakistan</option>
|
722 |
+
<option value="Palau">Palau</option>
|
723 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
724 |
+
<option value="Panama">Panama</option>
|
725 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
726 |
+
<option value="Paraguay">Paraguay</option>
|
727 |
+
<option value="Peru">Peru</option>
|
728 |
+
<option value="Philippines">Philippines</option>
|
729 |
+
<option value="Pitcairn">Pitcairn</option>
|
730 |
+
<option value="Poland">Poland</option>
|
731 |
+
<option value="Portugal">Portugal</option>
|
732 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
733 |
+
<option value="Qatar">Qatar</option>
|
734 |
+
<option value="Reunion">Reunion</option>
|
735 |
+
<option value="Romania">Romania</option>
|
736 |
+
<option value="Russian Federation">Russian Federation</option>
|
737 |
+
<option value="Rwanda">Rwanda</option>
|
738 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
739 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
740 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
741 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
742 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
743 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
744 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
745 |
+
<option value="Samoa">Samoa</option>
|
746 |
+
<option value="San Marino">San Marino</option>
|
747 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
748 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
749 |
+
<option value="Senegal">Senegal</option>
|
750 |
+
<option value="Serbia">Serbia</option>
|
751 |
+
<option value="Seychelles">Seychelles</option>
|
752 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
753 |
+
<option value="Singapore">Singapore</option>
|
754 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
755 |
+
<option value="Slovakia">Slovakia</option>
|
756 |
+
<option value="Slovenia">Slovenia</option>
|
757 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
758 |
+
<option value="Somalia">Somalia</option>
|
759 |
+
<option value="South Africa">South Africa</option>
|
760 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
761 |
+
<option value="South Sudan">South Sudan</option>
|
762 |
+
<option value="Spain">Spain</option>
|
763 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
764 |
+
<option value="Sudan">Sudan</option>
|
765 |
+
<option value="Suriname">Suriname</option>
|
766 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
767 |
+
<option value="Swaziland">Swaziland</option>
|
768 |
+
<option value="Sweden">Sweden</option>
|
769 |
+
<option value="Switzerland">Switzerland</option>
|
770 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
771 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
772 |
+
<option value="Tajikistan">Tajikistan</option>
|
773 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
774 |
+
<option value="Thailand">Thailand</option>
|
775 |
+
<option value="Timor-leste">Timor-leste</option>
|
776 |
+
<option value="Togo">Togo</option>
|
777 |
+
<option value="Tokelau">Tokelau</option>
|
778 |
+
<option value="Tonga">Tonga</option>
|
779 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
780 |
+
<option value="Tunisia">Tunisia</option>
|
781 |
+
<option value="Turkey">Turkey</option>
|
782 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
783 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
784 |
+
<option value="Tuvalu">Tuvalu</option>
|
785 |
+
<option value="Uganda">Uganda</option>
|
786 |
+
<option value="Ukraine">Ukraine</option>
|
787 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
788 |
+
<option value="United Kingdom">United Kingdom</option>
|
789 |
+
<option value="United States">United States</option>
|
790 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
791 |
+
<option value="Uruguay">Uruguay</option>
|
792 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
793 |
+
<option value="Vanuatu">Vanuatu</option>
|
794 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
795 |
+
<option value="Viet Nam">Viet Nam</option>
|
796 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
797 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
798 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
799 |
+
<option value="Western Sahara">Western Sahara</option>
|
800 |
+
<option value="Yemen">Yemen</option>
|
801 |
+
<option value="Zambia">Zambia</option>
|
802 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
803 |
+
</select>
|
804 |
+
</div>
|
805 |
+
<div>
|
806 |
+
<em>Into This</em>
|
807 |
+
<select data-placeholder="Choose a Country..." class="chosen-select" multiple tabindex="4">
|
808 |
+
<option value=""></option>
|
809 |
+
<option value="United States">United States</option>
|
810 |
+
<option value="United Kingdom">United Kingdom</option>
|
811 |
+
<option value="Afghanistan">Afghanistan</option>
|
812 |
+
<option value="Aland Islands">Aland Islands</option>
|
813 |
+
<option value="Albania">Albania</option>
|
814 |
+
<option value="Algeria">Algeria</option>
|
815 |
+
<option value="American Samoa">American Samoa</option>
|
816 |
+
<option value="Andorra">Andorra</option>
|
817 |
+
<option value="Angola">Angola</option>
|
818 |
+
<option value="Anguilla">Anguilla</option>
|
819 |
+
<option value="Antarctica">Antarctica</option>
|
820 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
821 |
+
<option value="Argentina">Argentina</option>
|
822 |
+
<option value="Armenia">Armenia</option>
|
823 |
+
<option value="Aruba">Aruba</option>
|
824 |
+
<option value="Australia">Australia</option>
|
825 |
+
<option value="Austria">Austria</option>
|
826 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
827 |
+
<option value="Bahamas">Bahamas</option>
|
828 |
+
<option value="Bahrain">Bahrain</option>
|
829 |
+
<option value="Bangladesh">Bangladesh</option>
|
830 |
+
<option value="Barbados">Barbados</option>
|
831 |
+
<option value="Belarus">Belarus</option>
|
832 |
+
<option value="Belgium">Belgium</option>
|
833 |
+
<option value="Belize">Belize</option>
|
834 |
+
<option value="Benin">Benin</option>
|
835 |
+
<option value="Bermuda">Bermuda</option>
|
836 |
+
<option value="Bhutan">Bhutan</option>
|
837 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
838 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
839 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
840 |
+
<option value="Botswana">Botswana</option>
|
841 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
842 |
+
<option value="Brazil">Brazil</option>
|
843 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
844 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
845 |
+
<option value="Bulgaria">Bulgaria</option>
|
846 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
847 |
+
<option value="Burundi">Burundi</option>
|
848 |
+
<option value="Cambodia">Cambodia</option>
|
849 |
+
<option value="Cameroon">Cameroon</option>
|
850 |
+
<option value="Canada">Canada</option>
|
851 |
+
<option value="Cape Verde">Cape Verde</option>
|
852 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
853 |
+
<option value="Central African Republic">Central African Republic</option>
|
854 |
+
<option value="Chad">Chad</option>
|
855 |
+
<option value="Chile">Chile</option>
|
856 |
+
<option value="China">China</option>
|
857 |
+
<option value="Christmas Island">Christmas Island</option>
|
858 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
859 |
+
<option value="Colombia">Colombia</option>
|
860 |
+
<option value="Comoros">Comoros</option>
|
861 |
+
<option value="Congo">Congo</option>
|
862 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
863 |
+
<option value="Cook Islands">Cook Islands</option>
|
864 |
+
<option value="Costa Rica">Costa Rica</option>
|
865 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
866 |
+
<option value="Croatia">Croatia</option>
|
867 |
+
<option value="Cuba">Cuba</option>
|
868 |
+
<option value="Curacao">Curacao</option>
|
869 |
+
<option value="Cyprus">Cyprus</option>
|
870 |
+
<option value="Czech Republic">Czech Republic</option>
|
871 |
+
<option value="Denmark">Denmark</option>
|
872 |
+
<option value="Djibouti">Djibouti</option>
|
873 |
+
<option value="Dominica">Dominica</option>
|
874 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
875 |
+
<option value="Ecuador">Ecuador</option>
|
876 |
+
<option value="Egypt">Egypt</option>
|
877 |
+
<option value="El Salvador">El Salvador</option>
|
878 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
879 |
+
<option value="Eritrea">Eritrea</option>
|
880 |
+
<option value="Estonia">Estonia</option>
|
881 |
+
<option value="Ethiopia">Ethiopia</option>
|
882 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
883 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
884 |
+
<option value="Fiji">Fiji</option>
|
885 |
+
<option value="Finland">Finland</option>
|
886 |
+
<option value="France">France</option>
|
887 |
+
<option value="French Guiana">French Guiana</option>
|
888 |
+
<option value="French Polynesia">French Polynesia</option>
|
889 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
890 |
+
<option value="Gabon">Gabon</option>
|
891 |
+
<option value="Gambia">Gambia</option>
|
892 |
+
<option value="Georgia">Georgia</option>
|
893 |
+
<option value="Germany">Germany</option>
|
894 |
+
<option value="Ghana">Ghana</option>
|
895 |
+
<option value="Gibraltar">Gibraltar</option>
|
896 |
+
<option value="Greece">Greece</option>
|
897 |
+
<option value="Greenland">Greenland</option>
|
898 |
+
<option value="Grenada">Grenada</option>
|
899 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
900 |
+
<option value="Guam">Guam</option>
|
901 |
+
<option value="Guatemala">Guatemala</option>
|
902 |
+
<option value="Guernsey">Guernsey</option>
|
903 |
+
<option value="Guinea">Guinea</option>
|
904 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
905 |
+
<option value="Guyana">Guyana</option>
|
906 |
+
<option value="Haiti">Haiti</option>
|
907 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
908 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
909 |
+
<option value="Honduras">Honduras</option>
|
910 |
+
<option value="Hong Kong">Hong Kong</option>
|
911 |
+
<option value="Hungary">Hungary</option>
|
912 |
+
<option value="Iceland">Iceland</option>
|
913 |
+
<option value="India">India</option>
|
914 |
+
<option value="Indonesia">Indonesia</option>
|
915 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
916 |
+
<option value="Iraq">Iraq</option>
|
917 |
+
<option value="Ireland">Ireland</option>
|
918 |
+
<option value="Isle of Man">Isle of Man</option>
|
919 |
+
<option value="Israel">Israel</option>
|
920 |
+
<option value="Italy">Italy</option>
|
921 |
+
<option value="Jamaica">Jamaica</option>
|
922 |
+
<option value="Japan">Japan</option>
|
923 |
+
<option value="Jersey">Jersey</option>
|
924 |
+
<option value="Jordan">Jordan</option>
|
925 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
926 |
+
<option value="Kenya">Kenya</option>
|
927 |
+
<option value="Kiribati">Kiribati</option>
|
928 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
929 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
930 |
+
<option value="Kuwait">Kuwait</option>
|
931 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
932 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
933 |
+
<option value="Latvia">Latvia</option>
|
934 |
+
<option value="Lebanon">Lebanon</option>
|
935 |
+
<option value="Lesotho">Lesotho</option>
|
936 |
+
<option value="Liberia">Liberia</option>
|
937 |
+
<option value="Libya">Libya</option>
|
938 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
939 |
+
<option value="Lithuania">Lithuania</option>
|
940 |
+
<option value="Luxembourg">Luxembourg</option>
|
941 |
+
<option value="Macao">Macao</option>
|
942 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
943 |
+
<option value="Madagascar">Madagascar</option>
|
944 |
+
<option value="Malawi">Malawi</option>
|
945 |
+
<option value="Malaysia">Malaysia</option>
|
946 |
+
<option value="Maldives">Maldives</option>
|
947 |
+
<option value="Mali">Mali</option>
|
948 |
+
<option value="Malta">Malta</option>
|
949 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
950 |
+
<option value="Martinique">Martinique</option>
|
951 |
+
<option value="Mauritania">Mauritania</option>
|
952 |
+
<option value="Mauritius">Mauritius</option>
|
953 |
+
<option value="Mayotte">Mayotte</option>
|
954 |
+
<option value="Mexico">Mexico</option>
|
955 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
956 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
957 |
+
<option value="Monaco">Monaco</option>
|
958 |
+
<option value="Mongolia">Mongolia</option>
|
959 |
+
<option value="Montenegro">Montenegro</option>
|
960 |
+
<option value="Montserrat">Montserrat</option>
|
961 |
+
<option value="Morocco">Morocco</option>
|
962 |
+
<option value="Mozambique">Mozambique</option>
|
963 |
+
<option value="Myanmar">Myanmar</option>
|
964 |
+
<option value="Namibia">Namibia</option>
|
965 |
+
<option value="Nauru">Nauru</option>
|
966 |
+
<option value="Nepal">Nepal</option>
|
967 |
+
<option value="Netherlands">Netherlands</option>
|
968 |
+
<option value="New Caledonia">New Caledonia</option>
|
969 |
+
<option value="New Zealand">New Zealand</option>
|
970 |
+
<option value="Nicaragua">Nicaragua</option>
|
971 |
+
<option value="Niger">Niger</option>
|
972 |
+
<option value="Nigeria">Nigeria</option>
|
973 |
+
<option value="Niue">Niue</option>
|
974 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
975 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
976 |
+
<option value="Norway">Norway</option>
|
977 |
+
<option value="Oman">Oman</option>
|
978 |
+
<option value="Pakistan">Pakistan</option>
|
979 |
+
<option value="Palau">Palau</option>
|
980 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
981 |
+
<option value="Panama">Panama</option>
|
982 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
983 |
+
<option value="Paraguay">Paraguay</option>
|
984 |
+
<option value="Peru">Peru</option>
|
985 |
+
<option value="Philippines">Philippines</option>
|
986 |
+
<option value="Pitcairn">Pitcairn</option>
|
987 |
+
<option value="Poland">Poland</option>
|
988 |
+
<option value="Portugal">Portugal</option>
|
989 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
990 |
+
<option value="Qatar">Qatar</option>
|
991 |
+
<option value="Reunion">Reunion</option>
|
992 |
+
<option value="Romania">Romania</option>
|
993 |
+
<option value="Russian Federation">Russian Federation</option>
|
994 |
+
<option value="Rwanda">Rwanda</option>
|
995 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
996 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
997 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
998 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
999 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
1000 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
1001 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
1002 |
+
<option value="Samoa">Samoa</option>
|
1003 |
+
<option value="San Marino">San Marino</option>
|
1004 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
1005 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
1006 |
+
<option value="Senegal">Senegal</option>
|
1007 |
+
<option value="Serbia">Serbia</option>
|
1008 |
+
<option value="Seychelles">Seychelles</option>
|
1009 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
1010 |
+
<option value="Singapore">Singapore</option>
|
1011 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
1012 |
+
<option value="Slovakia">Slovakia</option>
|
1013 |
+
<option value="Slovenia">Slovenia</option>
|
1014 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
1015 |
+
<option value="Somalia">Somalia</option>
|
1016 |
+
<option value="South Africa">South Africa</option>
|
1017 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
1018 |
+
<option value="South Sudan">South Sudan</option>
|
1019 |
+
<option value="Spain">Spain</option>
|
1020 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
1021 |
+
<option value="Sudan">Sudan</option>
|
1022 |
+
<option value="Suriname">Suriname</option>
|
1023 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
1024 |
+
<option value="Swaziland">Swaziland</option>
|
1025 |
+
<option value="Sweden">Sweden</option>
|
1026 |
+
<option value="Switzerland">Switzerland</option>
|
1027 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
1028 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
1029 |
+
<option value="Tajikistan">Tajikistan</option>
|
1030 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
1031 |
+
<option value="Thailand">Thailand</option>
|
1032 |
+
<option value="Timor-leste">Timor-leste</option>
|
1033 |
+
<option value="Togo">Togo</option>
|
1034 |
+
<option value="Tokelau">Tokelau</option>
|
1035 |
+
<option value="Tonga">Tonga</option>
|
1036 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
1037 |
+
<option value="Tunisia">Tunisia</option>
|
1038 |
+
<option value="Turkey">Turkey</option>
|
1039 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
1040 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
1041 |
+
<option value="Tuvalu">Tuvalu</option>
|
1042 |
+
<option value="Uganda">Uganda</option>
|
1043 |
+
<option value="Ukraine">Ukraine</option>
|
1044 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
1045 |
+
<option value="United Kingdom">United Kingdom</option>
|
1046 |
+
<option value="United States">United States</option>
|
1047 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
1048 |
+
<option value="Uruguay">Uruguay</option>
|
1049 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
1050 |
+
<option value="Vanuatu">Vanuatu</option>
|
1051 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
1052 |
+
<option value="Viet Nam">Viet Nam</option>
|
1053 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
1054 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
1055 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
1056 |
+
<option value="Western Sahara">Western Sahara</option>
|
1057 |
+
<option value="Yemen">Yemen</option>
|
1058 |
+
<option value="Zambia">Zambia</option>
|
1059 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
1060 |
+
</select>
|
1061 |
+
</div>
|
1062 |
+
</div>
|
1063 |
+
|
1064 |
+
<h2><a name="optgroup-support" class="anchor" href="#optgroup-support"><optgroup> Support</a></h2>
|
1065 |
+
<div class="side-by-side clearfix">
|
1066 |
+
<div>
|
1067 |
+
<em>Single Select with Groups</em>
|
1068 |
+
<select data-placeholder="Your Favorite Football Team" class="chosen-select" tabindex="5">
|
1069 |
+
<option value=""></option>
|
1070 |
+
<optgroup label="NFC EAST">
|
1071 |
+
<option>Dallas Cowboys</option>
|
1072 |
+
<option>New York Giants</option>
|
1073 |
+
<option>Philadelphia Eagles</option>
|
1074 |
+
<option>Washington Redskins</option>
|
1075 |
+
</optgroup>
|
1076 |
+
<optgroup label="NFC NORTH">
|
1077 |
+
<option>Chicago Bears</option>
|
1078 |
+
<option>Detroit Lions</option>
|
1079 |
+
<option>Green Bay Packers</option>
|
1080 |
+
<option>Minnesota Vikings</option>
|
1081 |
+
</optgroup>
|
1082 |
+
<optgroup label="NFC SOUTH">
|
1083 |
+
<option>Atlanta Falcons</option>
|
1084 |
+
<option>Carolina Panthers</option>
|
1085 |
+
<option>New Orleans Saints</option>
|
1086 |
+
<option>Tampa Bay Buccaneers</option>
|
1087 |
+
</optgroup>
|
1088 |
+
<optgroup label="NFC WEST">
|
1089 |
+
<option>Arizona Cardinals</option>
|
1090 |
+
<option>St. Louis Rams</option>
|
1091 |
+
<option>San Francisco 49ers</option>
|
1092 |
+
<option>Seattle Seahawks</option>
|
1093 |
+
</optgroup>
|
1094 |
+
<optgroup label="AFC EAST">
|
1095 |
+
<option>Buffalo Bills</option>
|
1096 |
+
<option>Miami Dolphins</option>
|
1097 |
+
<option>New England Patriots</option>
|
1098 |
+
<option>New York Jets</option>
|
1099 |
+
</optgroup>
|
1100 |
+
<optgroup label="AFC NORTH">
|
1101 |
+
<option>Baltimore Ravens</option>
|
1102 |
+
<option>Cincinnati Bengals</option>
|
1103 |
+
<option>Cleveland Browns</option>
|
1104 |
+
<option>Pittsburgh Steelers</option>
|
1105 |
+
</optgroup>
|
1106 |
+
<optgroup label="AFC SOUTH">
|
1107 |
+
<option>Houston Texans</option>
|
1108 |
+
<option>Indianapolis Colts</option>
|
1109 |
+
<option>Jacksonville Jaguars</option>
|
1110 |
+
<option>Tennessee Titans</option>
|
1111 |
+
</optgroup>
|
1112 |
+
<optgroup label="AFC WEST">
|
1113 |
+
<option>Denver Broncos</option>
|
1114 |
+
<option>Kansas City Chiefs</option>
|
1115 |
+
<option>Oakland Raiders</option>
|
1116 |
+
<option>San Diego Chargers</option>
|
1117 |
+
</optgroup>
|
1118 |
+
</select>
|
1119 |
+
</div>
|
1120 |
+
<div>
|
1121 |
+
<em>Multiple Select with Groups</em>
|
1122 |
+
<select data-placeholder="Your Favorite Football Team" class="chosen-select" multiple tabindex="6">
|
1123 |
+
<option value=""></option>
|
1124 |
+
<optgroup label="NFC EAST">
|
1125 |
+
<option>Dallas Cowboys</option>
|
1126 |
+
<option>New York Giants</option>
|
1127 |
+
<option>Philadelphia Eagles</option>
|
1128 |
+
<option>Washington Redskins</option>
|
1129 |
+
</optgroup>
|
1130 |
+
<optgroup label="NFC NORTH">
|
1131 |
+
<option>Chicago Bears</option>
|
1132 |
+
<option>Detroit Lions</option>
|
1133 |
+
<option>Green Bay Packers</option>
|
1134 |
+
<option>Minnesota Vikings</option>
|
1135 |
+
</optgroup>
|
1136 |
+
<optgroup label="NFC SOUTH">
|
1137 |
+
<option>Atlanta Falcons</option>
|
1138 |
+
<option>Carolina Panthers</option>
|
1139 |
+
<option>New Orleans Saints</option>
|
1140 |
+
<option>Tampa Bay Buccaneers</option>
|
1141 |
+
</optgroup>
|
1142 |
+
<optgroup label="NFC WEST">
|
1143 |
+
<option>Arizona Cardinals</option>
|
1144 |
+
<option>St. Louis Rams</option>
|
1145 |
+
<option>San Francisco 49ers</option>
|
1146 |
+
<option>Seattle Seahawks</option>
|
1147 |
+
</optgroup>
|
1148 |
+
<optgroup label="AFC EAST">
|
1149 |
+
<option>Buffalo Bills</option>
|
1150 |
+
<option>Miami Dolphins</option>
|
1151 |
+
<option>New England Patriots</option>
|
1152 |
+
<option>New York Jets</option>
|
1153 |
+
</optgroup>
|
1154 |
+
<optgroup label="AFC NORTH">
|
1155 |
+
<option>Baltimore Ravens</option>
|
1156 |
+
<option>Cincinnati Bengals</option>
|
1157 |
+
<option>Cleveland Browns</option>
|
1158 |
+
<option>Pittsburgh Steelers</option>
|
1159 |
+
</optgroup>
|
1160 |
+
<optgroup label="AFC SOUTH">
|
1161 |
+
<option>Houston Texans</option>
|
1162 |
+
<option>Indianapolis Colts</option>
|
1163 |
+
<option>Jacksonville Jaguars</option>
|
1164 |
+
<option>Tennessee Titans</option>
|
1165 |
+
</optgroup>
|
1166 |
+
<optgroup label="AFC WEST">
|
1167 |
+
<option>Denver Broncos</option>
|
1168 |
+
<option>Kansas City Chiefs</option>
|
1169 |
+
<option>Oakland Raiders</option>
|
1170 |
+
<option>San Diego Chargers</option>
|
1171 |
+
</optgroup>
|
1172 |
+
</select>
|
1173 |
+
</div>
|
1174 |
+
</div>
|
1175 |
+
|
1176 |
+
<h2><a name="selected-and-disabled-support" class="anchor" href="#selected-and-disabled-support">Selected and Disabled Support</a></h2>
|
1177 |
+
<div class="side-by-side clearfix">
|
1178 |
+
<p>Chosen automatically highlights selected options and removes disabled options.</p>
|
1179 |
+
<div>
|
1180 |
+
<em>Single Select</em>
|
1181 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select" tabindex="7">
|
1182 |
+
<option value=""></option>
|
1183 |
+
<option>American Black Bear</option>
|
1184 |
+
<option>Asiatic Black Bear</option>
|
1185 |
+
<option>Brown Bear</option>
|
1186 |
+
<option>Giant Panda</option>
|
1187 |
+
<option selected>Sloth Bear</option>
|
1188 |
+
<option disabled>Sun Bear</option>
|
1189 |
+
<option>Polar Bear</option>
|
1190 |
+
<option disabled>Spectacled Bear</option>
|
1191 |
+
</select>
|
1192 |
+
</div>
|
1193 |
+
<div>
|
1194 |
+
<em>Multiple Select</em>
|
1195 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="8">
|
1196 |
+
<option value=""></option>
|
1197 |
+
<option>American Black Bear</option>
|
1198 |
+
<option>Asiatic Black Bear</option>
|
1199 |
+
<option>Brown Bear</option>
|
1200 |
+
<option>Giant Panda</option>
|
1201 |
+
<option selected>Sloth Bear</option>
|
1202 |
+
<option disabled>Sun Bear</option>
|
1203 |
+
<option selected>Polar Bear</option>
|
1204 |
+
<option disabled>Spectacled Bear</option>
|
1205 |
+
</select>
|
1206 |
+
</div>
|
1207 |
+
</div>
|
1208 |
+
|
1209 |
+
<h2><a name="hide-search-on-single-select" class="anchor" href="#hide-search-on-single-select">Hide Search on Single Select</a></h2>
|
1210 |
+
<div class="side-by-side clearfix">
|
1211 |
+
<p>The <code>disable_search_threshold</code> option can be specified to hide the search input on single selects if there are <i>n</i> or fewer options.</p>
|
1212 |
+
<pre><code class="language-javascript">$(".chosen-select").chosen({disable_search_threshold: 10});</code></pre>
|
1213 |
+
<p></p>
|
1214 |
+
<div>
|
1215 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-no-single" tabindex="9">
|
1216 |
+
<option value=""></option>
|
1217 |
+
<option>American Black Bear</option>
|
1218 |
+
<option>Asiatic Black Bear</option>
|
1219 |
+
<option>Brown Bear</option>
|
1220 |
+
<option>Giant Panda</option>
|
1221 |
+
<option selected disabled>Sloth Bear</option>
|
1222 |
+
<option disabled>Sun Bear</option>
|
1223 |
+
<option selected disabled>Paddington Bear</option>
|
1224 |
+
<option selected>Polar Bear</option>
|
1225 |
+
<option disabled>Spectacled Bear</option>
|
1226 |
+
</select>
|
1227 |
+
</div>
|
1228 |
+
</div>
|
1229 |
+
|
1230 |
+
<h2><a name="default-text-support" class="anchor" href="#default-text-support">Default Text Support</a></h2>
|
1231 |
+
<div class="side-by-side clearfix">
|
1232 |
+
<p>Chosen automatically sets the default field text ("Choose a country...") by reading the select element's data-placeholder value. If no data-placeholder value is present, it will default to "Select an Option" or "Select Some Options" depending on whether the select is single or multiple. You can change these elements in the plugin js file as you see fit.</p>
|
1233 |
+
<pre><code class="language-markup"><select <strong>data-placeholder="Choose a country..."</strong> multiple class="chosen-select"></code></pre>
|
1234 |
+
<p><strong>Note:</strong> on single selects, the first element is assumed to be selected by the browser. To take advantage of the default text support, you will need to include a blank option as the first element of your select list.</p>
|
1235 |
+
</div>
|
1236 |
+
|
1237 |
+
<h2><a name="no-results-text-support" class="anchor" href="#no-results-text-support">No Results Text Support</a></h2>
|
1238 |
+
<div class="side-by-side clearfix">
|
1239 |
+
<p>Setting the "No results" search text is as easy as passing an option when you create Chosen:</p>
|
1240 |
+
<pre><code class="language-javascript"> $(".chosen-select").chosen({no_results_text: "Oops, nothing found!"}); </code></pre>
|
1241 |
+
<p></p>
|
1242 |
+
<div>
|
1243 |
+
<em>Single Select</em>
|
1244 |
+
<select data-placeholder="Type 'C' to view" class="chosen-select-no-results" tabindex="10">
|
1245 |
+
<option value=""></option>
|
1246 |
+
<option>American Black Bear</option>
|
1247 |
+
<option>Asiatic Black Bear</option>
|
1248 |
+
<option>Brown Bear</option>
|
1249 |
+
<option>Giant Panda</option>
|
1250 |
+
<option>Sloth Bear</option>
|
1251 |
+
<option>Sun Bear</option>
|
1252 |
+
<option>Polar Bear</option>
|
1253 |
+
<option>Spectacled Bear</option>
|
1254 |
+
</select>
|
1255 |
+
</div>
|
1256 |
+
<div>
|
1257 |
+
<em>Multiple Select</em>
|
1258 |
+
<select data-placeholder="Type 'C' to view" multiple class="chosen-select-no-results" tabindex="11">
|
1259 |
+
<option value=""></option>
|
1260 |
+
<option>American Black Bear</option>
|
1261 |
+
<option>Asiatic Black Bear</option>
|
1262 |
+
<option>Brown Bear</option>
|
1263 |
+
<option>Giant Panda</option>
|
1264 |
+
<option>Sloth Bear</option>
|
1265 |
+
<option>Sun Bear</option>
|
1266 |
+
<option>Polar Bear</option>
|
1267 |
+
<option>Spectacled Bear</option>
|
1268 |
+
</select>
|
1269 |
+
</div>
|
1270 |
+
</div>
|
1271 |
+
|
1272 |
+
<h2><a name="limit-selected-options-in-multiselect" class="anchor" href="#limit-selected-options-in-multiselect">Limit Selected Options in Multiselect</a></h2>
|
1273 |
+
<div class="side-by-side clearfix">
|
1274 |
+
<p>You can easily limit how many options the user can select:</p>
|
1275 |
+
<pre><code class="language-javascript">$(".chosen-select").chosen({max_selected_options: 5});</code></pre>
|
1276 |
+
<p>If you try to select another option with limit reached <code class="language-javascript">chosen:maxselected</code> event is triggered:</p>
|
1277 |
+
<pre><code class="language-javascript"> $(".chosen-select").bind("chosen:maxselected", function () { ... }); </code></pre>
|
1278 |
+
</div>
|
1279 |
+
|
1280 |
+
<h2><a name="allow-deselect-on-single-selects" class="anchor" href="#allow-deselect-on-single-selects">Allow Deselect on Single Selects</a></h2>
|
1281 |
+
<div class="side-by-side clearfix">
|
1282 |
+
<p>When a single select box isn't a required field, you can set <code class="language-javascript">allow_single_deselect: true</code> and Chosen will add a UI element for option deselection. This will only work if the first option has blank text.</p>
|
1283 |
+
<div class="side-by-side clearfix">
|
1284 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-deselect" tabindex="12">
|
1285 |
+
<option value=""></option>
|
1286 |
+
<option>American Black Bear</option>
|
1287 |
+
<option>Asiatic Black Bear</option>
|
1288 |
+
<option>Brown Bear</option>
|
1289 |
+
<option>Giant Panda</option>
|
1290 |
+
<option selected>Sloth Bear</option>
|
1291 |
+
<option>Sun Bear</option>
|
1292 |
+
<option>Polar Bear</option>
|
1293 |
+
<option>Spectacled Bear</option>
|
1294 |
+
</select>
|
1295 |
+
</div>
|
1296 |
+
</div>
|
1297 |
+
|
1298 |
+
<h2><a name="right-to-left-support" class="anchor" href="#right-to-left-support">Right-to-Left Support</a></h2>
|
1299 |
+
<div class="side-by-side clearfix">
|
1300 |
+
<p>You can set right-to-left text by setting <code class="language-javascript">rtl: true</code></p>
|
1301 |
+
<pre><code class="language-javascript"> $(".chosen-select").chosen({rtl: true}); </code></pre>
|
1302 |
+
|
1303 |
+
<div>
|
1304 |
+
<em>Single Right-to-Left Select</em>
|
1305 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-rtl" tabindex="13">
|
1306 |
+
<option value=""></option>
|
1307 |
+
<option>American Black Bear</option>
|
1308 |
+
<option>Asiatic Black Bear</option>
|
1309 |
+
<option>Brown Bear</option>
|
1310 |
+
<option>Giant Panda</option>
|
1311 |
+
<option selected>Sloth Bear</option>
|
1312 |
+
<option>Polar Bear</option>
|
1313 |
+
</select>
|
1314 |
+
</div>
|
1315 |
+
<div>
|
1316 |
+
<em>Multiple Right-to-Left Select</em>
|
1317 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select-rtl" tabindex="14">
|
1318 |
+
<option value=""></option>
|
1319 |
+
<option>American Black Bear</option>
|
1320 |
+
<option>Asiatic Black Bear</option>
|
1321 |
+
<option>Brown Bear</option>
|
1322 |
+
<option>Giant Panda</option>
|
1323 |
+
<option selected>Sloth Bear</option>
|
1324 |
+
<option selected>Polar Bear</option>
|
1325 |
+
</select>
|
1326 |
+
</div>
|
1327 |
+
</div>
|
1328 |
+
|
1329 |
+
<h2><a name="change-update-events" class="anchor" href="#change-update-events">Observing, Updating, and Destroying Chosen</a></h2>
|
1330 |
+
<div class="side-by-side clearfix">
|
1331 |
+
<ul>
|
1332 |
+
<li>
|
1333 |
+
<h3>Observing Form Field Changes</h3>
|
1334 |
+
<p>When working with form fields, you often want to perform some behavior after a value has been selected or deselected. Whenever a user selects a field in Chosen, it triggers a "change" event on the original form field. That lets you do something like this:</p>
|
1335 |
+
<pre><code class="language-javascript">$("#form_field").chosen().change( … );</code></pre>
|
1336 |
+
</li>
|
1337 |
+
<li>
|
1338 |
+
<h3>Updating Chosen Dynamically</h3>
|
1339 |
+
<p>If you need to update the options in your select field and want Chosen to pick up the changes, you'll need to trigger the "chosen:updated" event on the field. Chosen will re-build itself based on the updated content.</p>
|
1340 |
+
<pre><code class="language-javascript">$("#form_field").trigger("chosen:updated");</code></pre>
|
1341 |
+
</li>
|
1342 |
+
<li>
|
1343 |
+
<h3>Destroying Chosen</h3>
|
1344 |
+
<p>To destroy Chosen and revert back to the native select:</p>
|
1345 |
+
<pre><code class="language-javascript">$("#form_field").chosen("destroy");</code></pre>
|
1346 |
+
</li>
|
1347 |
+
</ul>
|
1348 |
+
</div>
|
1349 |
+
|
1350 |
+
<h2><a name="custom-width-support" class="anchor" href="#custom-width-support">Custom Width Support</a></h2>
|
1351 |
+
<div class="side-by-side clearfix">
|
1352 |
+
<p>Using a custom width with Chosen is as easy as passing an option when you create Chosen:</p>
|
1353 |
+
<pre><code class="language-javascript"> $(".chosen-select").chosen({width: "95%"}); </code></pre>
|
1354 |
+
<div>
|
1355 |
+
<em>Single Select</em>
|
1356 |
+
<select data-placeholder="Your Favorite Types of Bear" class="chosen-select-width" tabindex="15">
|
1357 |
+
<option value=""></option>
|
1358 |
+
<option selected>American Black Bear</option>
|
1359 |
+
<option>Asiatic Black Bear</option>
|
1360 |
+
<option>Brown Bear</option>
|
1361 |
+
<option>Giant Panda</option>
|
1362 |
+
<option>Sloth Bear</option>
|
1363 |
+
<option>Sun Bear</option>
|
1364 |
+
<option>Polar Bear</option>
|
1365 |
+
<option>Spectacled Bear</option>
|
1366 |
+
</select>
|
1367 |
+
</div>
|
1368 |
+
<div>
|
1369 |
+
<em>Multiple Select</em>
|
1370 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select-width" tabindex="16">
|
1371 |
+
<option value=""></option>
|
1372 |
+
<option>American Black Bear</option>
|
1373 |
+
<option>Asiatic Black Bear</option>
|
1374 |
+
<option>Brown Bear</option>
|
1375 |
+
<option selected>Giant Panda</option>
|
1376 |
+
<option>Sloth Bear</option>
|
1377 |
+
<option>Sun Bear</option>
|
1378 |
+
<option>Polar Bear</option>
|
1379 |
+
<option>Spectacled Bear</option>
|
1380 |
+
</select>
|
1381 |
+
</div>
|
1382 |
+
</div>
|
1383 |
+
|
1384 |
+
<h2><a name="labels-work-too" class="anchor" href="#labels-work-too">Labels work, too</a></h2>
|
1385 |
+
<div class="side-by-side clearfix">
|
1386 |
+
<p>Use labels just like you would a standard select</p>
|
1387 |
+
<p></p>
|
1388 |
+
<div>
|
1389 |
+
<em><label for="single-label-example">Click to Highlight Single Select</label></em>
|
1390 |
+
<select data-placeholder="Your Favorite Types of Bear" class="chosen-select" tabindex="17" id="single-label-example">
|
1391 |
+
<option value=""></option>
|
1392 |
+
<option selected>American Black Bear</option>
|
1393 |
+
<option>Asiatic Black Bear</option>
|
1394 |
+
<option>Brown Bear</option>
|
1395 |
+
<option>Giant Panda</option>
|
1396 |
+
<option>Sloth Bear</option>
|
1397 |
+
<option>Sun Bear</option>
|
1398 |
+
<option>Polar Bear</option>
|
1399 |
+
<option>Spectacled Bear</option>
|
1400 |
+
</select>
|
1401 |
+
</div>
|
1402 |
+
<div>
|
1403 |
+
<em><label for="multiple-label-example">Click to Highlight Multiple Select</label></em>
|
1404 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="18" id="multiple-label-example">
|
1405 |
+
<option value=""></option>
|
1406 |
+
<option>American Black Bear</option>
|
1407 |
+
<option>Asiatic Black Bear</option>
|
1408 |
+
<option>Brown Bear</option>
|
1409 |
+
<option selected>Giant Panda</option>
|
1410 |
+
<option>Sloth Bear</option>
|
1411 |
+
<option>Sun Bear</option>
|
1412 |
+
<option>Polar Bear</option>
|
1413 |
+
<option>Spectacled Bear</option>
|
1414 |
+
</select>
|
1415 |
+
</div>
|
1416 |
+
</div>
|
1417 |
+
|
1418 |
+
<h2><a name="setup" class="anchor" href="#setup">Setup</a></h2>
|
1419 |
+
<p>Using Chosen is easy as can be.</p>
|
1420 |
+
<ol>
|
1421 |
+
<li><a href="https://github.com/harvesthq/chosen/releases">Download</a> the plugin and copy the chosen files to your app.</li>
|
1422 |
+
<li>Activate the plugin on the select boxes of your choice: <code class="language-javascript">$(".chosen-select").chosen()</code></li>
|
1423 |
+
<li><a href="http://www.youtube.com/watch?feature=player_detailpage&v=UkSPUDpe0U8#t=11s">Disco</a>.</li>
|
1424 |
+
</ol>
|
1425 |
+
|
1426 |
+
<h2><a name="faqs" class="anchor" href="#faqs">FAQs</a></h2>
|
1427 |
+
<ul class="faqs">
|
1428 |
+
<li>
|
1429 |
+
<h3>Do you have all the available options documented somewhere?</h3>
|
1430 |
+
<p>Yes! You can find them on <a href="options.html">the options page</a>.</p>
|
1431 |
+
</li>
|
1432 |
+
<li>
|
1433 |
+
<h3>Something doesn't work. Can you fix it?</h3>
|
1434 |
+
<p>Yes! Please report all issues using the <a href="http://github.com/harvesthq/chosen/issues">GitHub issue tracking tool</a>. Please include the plugin version (jQuery or Prototype), browser and OS. The more information provided, the easier it is to fix a problem.</p>
|
1435 |
+
</li>
|
1436 |
+
<li>
|
1437 |
+
<h3>What browsers are supported?</h3>
|
1438 |
+
<p>All modern desktop browsers are supported (Firefox, Chrome, Safari and IE9). Legacy support for IE8 is also enabled. Chosen is disabled on iPhone, iPod Touch, and Android mobile devices (<a href="https://github.com/harvesthq/chosen/pull/1388">more information</a>).</p>
|
1439 |
+
</li>
|
1440 |
+
<li>
|
1441 |
+
<h3>Didn't there used to be a Prototype version of Chosen?</h3>
|
1442 |
+
<p><a href="index.proto.html">There still is!</a></p>
|
1443 |
+
</li>
|
1444 |
+
</ul>
|
1445 |
+
|
1446 |
+
<h2><a name="credits" class="anchor" href="#credits">Credits</a></h2>
|
1447 |
+
|
1448 |
+
<ul class="credits">
|
1449 |
+
<li>Concept and development by <a href="http://patrickfiller.com">Patrick Filler</a> for <a href="https://getharvest.com">Harvest</a>.</li>
|
1450 |
+
<li>Design and CSS by <a href="http://matthewlettini.com">Matthew Lettini</a>.</li>
|
1451 |
+
<li>Repository maintained by <a href="https://github.com/pfiller">@pfiller</a>, <a href="https://github.com/kenearley">@kenearley</a>, <a href="https://github.com/stof">@stof</a>, <a href="https://github.com/koenpunt">@koenpunt</a>, and <a href="https://github.com/tjschuck">@tjschuck</a>.</li>
|
1452 |
+
<li>Chosen includes <a href="https://github.com/harvesthq/chosen/contributors">contributions by many fine folks</a>.</li>
|
1453 |
+
</ul>
|
1454 |
+
|
1455 |
+
<footer>
|
1456 |
+
© 2011–2016 <a href="http://www.getharvest.com/">Harvest</a>. Chosen is licensed under the <a href="https://github.com/harvesthq/chosen/blob/master/LICENSE.md">MIT license</a>.
|
1457 |
+
</footer>
|
1458 |
+
|
1459 |
+
</div>
|
1460 |
+
</div>
|
1461 |
+
<script src="docsupport/jquery-3.2.1.min.js" type="text/javascript"></script>
|
1462 |
+
<script src="chosen.jquery.js" type="text/javascript"></script>
|
1463 |
+
<script src="docsupport/prism.js" type="text/javascript" charset="utf-8"></script>
|
1464 |
+
<script src="docsupport/init.js" type="text/javascript" charset="utf-8"></script>
|
1465 |
+
</form>
|
1466 |
+
<div class="oss-bar">
|
1467 |
+
<ul>
|
1468 |
+
<li><a class="fork" href="https://github.com/harvesthq/chosen">Fork on Github</a></li>
|
1469 |
+
<li><a class="harvest" href="http://www.getharvest.com/">Built by Harvest</a></li>
|
1470 |
+
</ul>
|
1471 |
+
</div>
|
1472 |
+
</body>
|
1473 |
+
</html>
|
common/libs/chosen-v1.8.3/index.proto.html
ADDED
@@ -0,0 +1,1472 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!doctype html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="utf-8">
|
5 |
+
<title>Chosen: A Prototype Plugin by Harvest to Tame Unwieldy Select Boxes</title>
|
6 |
+
<link rel="stylesheet" href="docsupport/style.css">
|
7 |
+
<link rel="stylesheet" href="docsupport/prism.css">
|
8 |
+
<link rel="stylesheet" href="chosen.css">
|
9 |
+
|
10 |
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://ajax.googleapis.com; style-src 'self'; img-src 'self' data:">
|
11 |
+
|
12 |
+
</head>
|
13 |
+
<body>
|
14 |
+
<div id="container">
|
15 |
+
<div id="content">
|
16 |
+
<header>
|
17 |
+
<h1>Chosen - Prototype Version <small>(<span id="latest-version">v1.8.3</span>)</small></h1>
|
18 |
+
</header>
|
19 |
+
<p>Chosen is a Prototype plugin that makes long, unwieldy select boxes much more user-friendly.</p>
|
20 |
+
|
21 |
+
<p>
|
22 |
+
<a class="button button-blue" href="https://github.com/harvesthq/chosen/releases">Downloads</a>
|
23 |
+
<a class="button" href="https://github.com/harvesthq/chosen">Project Source</a>
|
24 |
+
<a class="button" href="https://github.com/harvesthq/chosen/blob/master/contributing.md">Contribute</a>
|
25 |
+
</p>
|
26 |
+
|
27 |
+
<p class="jquery-version-refer">Looking for the <a href="index.html">jQuery version?</a></p>
|
28 |
+
|
29 |
+
<h2><a name="standard-select" class="anchor" href="#standard-select">Standard Select</a></h2>
|
30 |
+
<div class="side-by-side clearfix">
|
31 |
+
<div>
|
32 |
+
<em>Turns This</em>
|
33 |
+
<select data-placeholder="Choose a Country..." class="select" tabindex="1">
|
34 |
+
<option value=""></option>
|
35 |
+
<option value="United States">United States</option>
|
36 |
+
<option value="United Kingdom">United Kingdom</option>
|
37 |
+
<option value="Afghanistan">Afghanistan</option>
|
38 |
+
<option value="Aland Islands">Aland Islands</option>
|
39 |
+
<option value="Albania">Albania</option>
|
40 |
+
<option value="Algeria">Algeria</option>
|
41 |
+
<option value="American Samoa">American Samoa</option>
|
42 |
+
<option value="Andorra">Andorra</option>
|
43 |
+
<option value="Angola">Angola</option>
|
44 |
+
<option value="Anguilla">Anguilla</option>
|
45 |
+
<option value="Antarctica">Antarctica</option>
|
46 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
47 |
+
<option value="Argentina">Argentina</option>
|
48 |
+
<option value="Armenia">Armenia</option>
|
49 |
+
<option value="Aruba">Aruba</option>
|
50 |
+
<option value="Australia">Australia</option>
|
51 |
+
<option value="Austria">Austria</option>
|
52 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
53 |
+
<option value="Bahamas">Bahamas</option>
|
54 |
+
<option value="Bahrain">Bahrain</option>
|
55 |
+
<option value="Bangladesh">Bangladesh</option>
|
56 |
+
<option value="Barbados">Barbados</option>
|
57 |
+
<option value="Belarus">Belarus</option>
|
58 |
+
<option value="Belgium">Belgium</option>
|
59 |
+
<option value="Belize">Belize</option>
|
60 |
+
<option value="Benin">Benin</option>
|
61 |
+
<option value="Bermuda">Bermuda</option>
|
62 |
+
<option value="Bhutan">Bhutan</option>
|
63 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
64 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
65 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
66 |
+
<option value="Botswana">Botswana</option>
|
67 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
68 |
+
<option value="Brazil">Brazil</option>
|
69 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
70 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
71 |
+
<option value="Bulgaria">Bulgaria</option>
|
72 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
73 |
+
<option value="Burundi">Burundi</option>
|
74 |
+
<option value="Cambodia">Cambodia</option>
|
75 |
+
<option value="Cameroon">Cameroon</option>
|
76 |
+
<option value="Canada">Canada</option>
|
77 |
+
<option value="Cape Verde">Cape Verde</option>
|
78 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
79 |
+
<option value="Central African Republic">Central African Republic</option>
|
80 |
+
<option value="Chad">Chad</option>
|
81 |
+
<option value="Chile">Chile</option>
|
82 |
+
<option value="China">China</option>
|
83 |
+
<option value="Christmas Island">Christmas Island</option>
|
84 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
85 |
+
<option value="Colombia">Colombia</option>
|
86 |
+
<option value="Comoros">Comoros</option>
|
87 |
+
<option value="Congo">Congo</option>
|
88 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
89 |
+
<option value="Cook Islands">Cook Islands</option>
|
90 |
+
<option value="Costa Rica">Costa Rica</option>
|
91 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
92 |
+
<option value="Croatia">Croatia</option>
|
93 |
+
<option value="Cuba">Cuba</option>
|
94 |
+
<option value="Curacao">Curacao</option>
|
95 |
+
<option value="Cyprus">Cyprus</option>
|
96 |
+
<option value="Czech Republic">Czech Republic</option>
|
97 |
+
<option value="Denmark">Denmark</option>
|
98 |
+
<option value="Djibouti">Djibouti</option>
|
99 |
+
<option value="Dominica">Dominica</option>
|
100 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
101 |
+
<option value="Ecuador">Ecuador</option>
|
102 |
+
<option value="Egypt">Egypt</option>
|
103 |
+
<option value="El Salvador">El Salvador</option>
|
104 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
105 |
+
<option value="Eritrea">Eritrea</option>
|
106 |
+
<option value="Estonia">Estonia</option>
|
107 |
+
<option value="Ethiopia">Ethiopia</option>
|
108 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
109 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
110 |
+
<option value="Fiji">Fiji</option>
|
111 |
+
<option value="Finland">Finland</option>
|
112 |
+
<option value="France">France</option>
|
113 |
+
<option value="French Guiana">French Guiana</option>
|
114 |
+
<option value="French Polynesia">French Polynesia</option>
|
115 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
116 |
+
<option value="Gabon">Gabon</option>
|
117 |
+
<option value="Gambia">Gambia</option>
|
118 |
+
<option value="Georgia">Georgia</option>
|
119 |
+
<option value="Germany">Germany</option>
|
120 |
+
<option value="Ghana">Ghana</option>
|
121 |
+
<option value="Gibraltar">Gibraltar</option>
|
122 |
+
<option value="Greece">Greece</option>
|
123 |
+
<option value="Greenland">Greenland</option>
|
124 |
+
<option value="Grenada">Grenada</option>
|
125 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
126 |
+
<option value="Guam">Guam</option>
|
127 |
+
<option value="Guatemala">Guatemala</option>
|
128 |
+
<option value="Guernsey">Guernsey</option>
|
129 |
+
<option value="Guinea">Guinea</option>
|
130 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
131 |
+
<option value="Guyana">Guyana</option>
|
132 |
+
<option value="Haiti">Haiti</option>
|
133 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
134 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
135 |
+
<option value="Honduras">Honduras</option>
|
136 |
+
<option value="Hong Kong">Hong Kong</option>
|
137 |
+
<option value="Hungary">Hungary</option>
|
138 |
+
<option value="Iceland">Iceland</option>
|
139 |
+
<option value="India">India</option>
|
140 |
+
<option value="Indonesia">Indonesia</option>
|
141 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
142 |
+
<option value="Iraq">Iraq</option>
|
143 |
+
<option value="Ireland">Ireland</option>
|
144 |
+
<option value="Isle of Man">Isle of Man</option>
|
145 |
+
<option value="Israel">Israel</option>
|
146 |
+
<option value="Italy">Italy</option>
|
147 |
+
<option value="Jamaica">Jamaica</option>
|
148 |
+
<option value="Japan">Japan</option>
|
149 |
+
<option value="Jersey">Jersey</option>
|
150 |
+
<option value="Jordan">Jordan</option>
|
151 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
152 |
+
<option value="Kenya">Kenya</option>
|
153 |
+
<option value="Kiribati">Kiribati</option>
|
154 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
155 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
156 |
+
<option value="Kuwait">Kuwait</option>
|
157 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
158 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
159 |
+
<option value="Latvia">Latvia</option>
|
160 |
+
<option value="Lebanon">Lebanon</option>
|
161 |
+
<option value="Lesotho">Lesotho</option>
|
162 |
+
<option value="Liberia">Liberia</option>
|
163 |
+
<option value="Libya">Libya</option>
|
164 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
165 |
+
<option value="Lithuania">Lithuania</option>
|
166 |
+
<option value="Luxembourg">Luxembourg</option>
|
167 |
+
<option value="Macao">Macao</option>
|
168 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
169 |
+
<option value="Madagascar">Madagascar</option>
|
170 |
+
<option value="Malawi">Malawi</option>
|
171 |
+
<option value="Malaysia">Malaysia</option>
|
172 |
+
<option value="Maldives">Maldives</option>
|
173 |
+
<option value="Mali">Mali</option>
|
174 |
+
<option value="Malta">Malta</option>
|
175 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
176 |
+
<option value="Martinique">Martinique</option>
|
177 |
+
<option value="Mauritania">Mauritania</option>
|
178 |
+
<option value="Mauritius">Mauritius</option>
|
179 |
+
<option value="Mayotte">Mayotte</option>
|
180 |
+
<option value="Mexico">Mexico</option>
|
181 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
182 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
183 |
+
<option value="Monaco">Monaco</option>
|
184 |
+
<option value="Mongolia">Mongolia</option>
|
185 |
+
<option value="Montenegro">Montenegro</option>
|
186 |
+
<option value="Montserrat">Montserrat</option>
|
187 |
+
<option value="Morocco">Morocco</option>
|
188 |
+
<option value="Mozambique">Mozambique</option>
|
189 |
+
<option value="Myanmar">Myanmar</option>
|
190 |
+
<option value="Namibia">Namibia</option>
|
191 |
+
<option value="Nauru">Nauru</option>
|
192 |
+
<option value="Nepal">Nepal</option>
|
193 |
+
<option value="Netherlands">Netherlands</option>
|
194 |
+
<option value="New Caledonia">New Caledonia</option>
|
195 |
+
<option value="New Zealand">New Zealand</option>
|
196 |
+
<option value="Nicaragua">Nicaragua</option>
|
197 |
+
<option value="Niger">Niger</option>
|
198 |
+
<option value="Nigeria">Nigeria</option>
|
199 |
+
<option value="Niue">Niue</option>
|
200 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
201 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
202 |
+
<option value="Norway">Norway</option>
|
203 |
+
<option value="Oman">Oman</option>
|
204 |
+
<option value="Pakistan">Pakistan</option>
|
205 |
+
<option value="Palau">Palau</option>
|
206 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
207 |
+
<option value="Panama">Panama</option>
|
208 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
209 |
+
<option value="Paraguay">Paraguay</option>
|
210 |
+
<option value="Peru">Peru</option>
|
211 |
+
<option value="Philippines">Philippines</option>
|
212 |
+
<option value="Pitcairn">Pitcairn</option>
|
213 |
+
<option value="Poland">Poland</option>
|
214 |
+
<option value="Portugal">Portugal</option>
|
215 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
216 |
+
<option value="Qatar">Qatar</option>
|
217 |
+
<option value="Reunion">Reunion</option>
|
218 |
+
<option value="Romania">Romania</option>
|
219 |
+
<option value="Russian Federation">Russian Federation</option>
|
220 |
+
<option value="Rwanda">Rwanda</option>
|
221 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
222 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
223 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
224 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
225 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
226 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
227 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
228 |
+
<option value="Samoa">Samoa</option>
|
229 |
+
<option value="San Marino">San Marino</option>
|
230 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
231 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
232 |
+
<option value="Senegal">Senegal</option>
|
233 |
+
<option value="Serbia">Serbia</option>
|
234 |
+
<option value="Seychelles">Seychelles</option>
|
235 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
236 |
+
<option value="Singapore">Singapore</option>
|
237 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
238 |
+
<option value="Slovakia">Slovakia</option>
|
239 |
+
<option value="Slovenia">Slovenia</option>
|
240 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
241 |
+
<option value="Somalia">Somalia</option>
|
242 |
+
<option value="South Africa">South Africa</option>
|
243 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
244 |
+
<option value="South Sudan">South Sudan</option>
|
245 |
+
<option value="Spain">Spain</option>
|
246 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
247 |
+
<option value="Sudan">Sudan</option>
|
248 |
+
<option value="Suriname">Suriname</option>
|
249 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
250 |
+
<option value="Swaziland">Swaziland</option>
|
251 |
+
<option value="Sweden">Sweden</option>
|
252 |
+
<option value="Switzerland">Switzerland</option>
|
253 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
254 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
255 |
+
<option value="Tajikistan">Tajikistan</option>
|
256 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
257 |
+
<option value="Thailand">Thailand</option>
|
258 |
+
<option value="Timor-leste">Timor-leste</option>
|
259 |
+
<option value="Togo">Togo</option>
|
260 |
+
<option value="Tokelau">Tokelau</option>
|
261 |
+
<option value="Tonga">Tonga</option>
|
262 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
263 |
+
<option value="Tunisia">Tunisia</option>
|
264 |
+
<option value="Turkey">Turkey</option>
|
265 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
266 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
267 |
+
<option value="Tuvalu">Tuvalu</option>
|
268 |
+
<option value="Uganda">Uganda</option>
|
269 |
+
<option value="Ukraine">Ukraine</option>
|
270 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
271 |
+
<option value="United Kingdom">United Kingdom</option>
|
272 |
+
<option value="United States">United States</option>
|
273 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
274 |
+
<option value="Uruguay">Uruguay</option>
|
275 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
276 |
+
<option value="Vanuatu">Vanuatu</option>
|
277 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
278 |
+
<option value="Viet Nam">Viet Nam</option>
|
279 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
280 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
281 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
282 |
+
<option value="Western Sahara">Western Sahara</option>
|
283 |
+
<option value="Yemen">Yemen</option>
|
284 |
+
<option value="Zambia">Zambia</option>
|
285 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
286 |
+
</select>
|
287 |
+
</div>
|
288 |
+
<div>
|
289 |
+
<em>Into This</em>
|
290 |
+
<select data-placeholder="Choose a Country..." class="chosen-select" tabindex="2">
|
291 |
+
<option value=""></option>
|
292 |
+
<option value="United States">United States</option>
|
293 |
+
<option value="United Kingdom">United Kingdom</option>
|
294 |
+
<option value="Afghanistan">Afghanistan</option>
|
295 |
+
<option value="Aland Islands">Aland Islands</option>
|
296 |
+
<option value="Albania">Albania</option>
|
297 |
+
<option value="Algeria">Algeria</option>
|
298 |
+
<option value="American Samoa">American Samoa</option>
|
299 |
+
<option value="Andorra">Andorra</option>
|
300 |
+
<option value="Angola">Angola</option>
|
301 |
+
<option value="Anguilla">Anguilla</option>
|
302 |
+
<option value="Antarctica">Antarctica</option>
|
303 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
304 |
+
<option value="Argentina">Argentina</option>
|
305 |
+
<option value="Armenia">Armenia</option>
|
306 |
+
<option value="Aruba">Aruba</option>
|
307 |
+
<option value="Australia">Australia</option>
|
308 |
+
<option value="Austria">Austria</option>
|
309 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
310 |
+
<option value="Bahamas">Bahamas</option>
|
311 |
+
<option value="Bahrain">Bahrain</option>
|
312 |
+
<option value="Bangladesh">Bangladesh</option>
|
313 |
+
<option value="Barbados">Barbados</option>
|
314 |
+
<option value="Belarus">Belarus</option>
|
315 |
+
<option value="Belgium">Belgium</option>
|
316 |
+
<option value="Belize">Belize</option>
|
317 |
+
<option value="Benin">Benin</option>
|
318 |
+
<option value="Bermuda">Bermuda</option>
|
319 |
+
<option value="Bhutan">Bhutan</option>
|
320 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
321 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
322 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
323 |
+
<option value="Botswana">Botswana</option>
|
324 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
325 |
+
<option value="Brazil">Brazil</option>
|
326 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
327 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
328 |
+
<option value="Bulgaria">Bulgaria</option>
|
329 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
330 |
+
<option value="Burundi">Burundi</option>
|
331 |
+
<option value="Cambodia">Cambodia</option>
|
332 |
+
<option value="Cameroon">Cameroon</option>
|
333 |
+
<option value="Canada">Canada</option>
|
334 |
+
<option value="Cape Verde">Cape Verde</option>
|
335 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
336 |
+
<option value="Central African Republic">Central African Republic</option>
|
337 |
+
<option value="Chad">Chad</option>
|
338 |
+
<option value="Chile">Chile</option>
|
339 |
+
<option value="China">China</option>
|
340 |
+
<option value="Christmas Island">Christmas Island</option>
|
341 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
342 |
+
<option value="Colombia">Colombia</option>
|
343 |
+
<option value="Comoros">Comoros</option>
|
344 |
+
<option value="Congo">Congo</option>
|
345 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
346 |
+
<option value="Cook Islands">Cook Islands</option>
|
347 |
+
<option value="Costa Rica">Costa Rica</option>
|
348 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
349 |
+
<option value="Croatia">Croatia</option>
|
350 |
+
<option value="Cuba">Cuba</option>
|
351 |
+
<option value="Curacao">Curacao</option>
|
352 |
+
<option value="Cyprus">Cyprus</option>
|
353 |
+
<option value="Czech Republic">Czech Republic</option>
|
354 |
+
<option value="Denmark">Denmark</option>
|
355 |
+
<option value="Djibouti">Djibouti</option>
|
356 |
+
<option value="Dominica">Dominica</option>
|
357 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
358 |
+
<option value="Ecuador">Ecuador</option>
|
359 |
+
<option value="Egypt">Egypt</option>
|
360 |
+
<option value="El Salvador">El Salvador</option>
|
361 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
362 |
+
<option value="Eritrea">Eritrea</option>
|
363 |
+
<option value="Estonia">Estonia</option>
|
364 |
+
<option value="Ethiopia">Ethiopia</option>
|
365 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
366 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
367 |
+
<option value="Fiji">Fiji</option>
|
368 |
+
<option value="Finland">Finland</option>
|
369 |
+
<option value="France">France</option>
|
370 |
+
<option value="French Guiana">French Guiana</option>
|
371 |
+
<option value="French Polynesia">French Polynesia</option>
|
372 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
373 |
+
<option value="Gabon">Gabon</option>
|
374 |
+
<option value="Gambia">Gambia</option>
|
375 |
+
<option value="Georgia">Georgia</option>
|
376 |
+
<option value="Germany">Germany</option>
|
377 |
+
<option value="Ghana">Ghana</option>
|
378 |
+
<option value="Gibraltar">Gibraltar</option>
|
379 |
+
<option value="Greece">Greece</option>
|
380 |
+
<option value="Greenland">Greenland</option>
|
381 |
+
<option value="Grenada">Grenada</option>
|
382 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
383 |
+
<option value="Guam">Guam</option>
|
384 |
+
<option value="Guatemala">Guatemala</option>
|
385 |
+
<option value="Guernsey">Guernsey</option>
|
386 |
+
<option value="Guinea">Guinea</option>
|
387 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
388 |
+
<option value="Guyana">Guyana</option>
|
389 |
+
<option value="Haiti">Haiti</option>
|
390 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
391 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
392 |
+
<option value="Honduras">Honduras</option>
|
393 |
+
<option value="Hong Kong">Hong Kong</option>
|
394 |
+
<option value="Hungary">Hungary</option>
|
395 |
+
<option value="Iceland">Iceland</option>
|
396 |
+
<option value="India">India</option>
|
397 |
+
<option value="Indonesia">Indonesia</option>
|
398 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
399 |
+
<option value="Iraq">Iraq</option>
|
400 |
+
<option value="Ireland">Ireland</option>
|
401 |
+
<option value="Isle of Man">Isle of Man</option>
|
402 |
+
<option value="Israel">Israel</option>
|
403 |
+
<option value="Italy">Italy</option>
|
404 |
+
<option value="Jamaica">Jamaica</option>
|
405 |
+
<option value="Japan">Japan</option>
|
406 |
+
<option value="Jersey">Jersey</option>
|
407 |
+
<option value="Jordan">Jordan</option>
|
408 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
409 |
+
<option value="Kenya">Kenya</option>
|
410 |
+
<option value="Kiribati">Kiribati</option>
|
411 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
412 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
413 |
+
<option value="Kuwait">Kuwait</option>
|
414 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
415 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
416 |
+
<option value="Latvia">Latvia</option>
|
417 |
+
<option value="Lebanon">Lebanon</option>
|
418 |
+
<option value="Lesotho">Lesotho</option>
|
419 |
+
<option value="Liberia">Liberia</option>
|
420 |
+
<option value="Libya">Libya</option>
|
421 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
422 |
+
<option value="Lithuania">Lithuania</option>
|
423 |
+
<option value="Luxembourg">Luxembourg</option>
|
424 |
+
<option value="Macao">Macao</option>
|
425 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
426 |
+
<option value="Madagascar">Madagascar</option>
|
427 |
+
<option value="Malawi">Malawi</option>
|
428 |
+
<option value="Malaysia">Malaysia</option>
|
429 |
+
<option value="Maldives">Maldives</option>
|
430 |
+
<option value="Mali">Mali</option>
|
431 |
+
<option value="Malta">Malta</option>
|
432 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
433 |
+
<option value="Martinique">Martinique</option>
|
434 |
+
<option value="Mauritania">Mauritania</option>
|
435 |
+
<option value="Mauritius">Mauritius</option>
|
436 |
+
<option value="Mayotte">Mayotte</option>
|
437 |
+
<option value="Mexico">Mexico</option>
|
438 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
439 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
440 |
+
<option value="Monaco">Monaco</option>
|
441 |
+
<option value="Mongolia">Mongolia</option>
|
442 |
+
<option value="Montenegro">Montenegro</option>
|
443 |
+
<option value="Montserrat">Montserrat</option>
|
444 |
+
<option value="Morocco">Morocco</option>
|
445 |
+
<option value="Mozambique">Mozambique</option>
|
446 |
+
<option value="Myanmar">Myanmar</option>
|
447 |
+
<option value="Namibia">Namibia</option>
|
448 |
+
<option value="Nauru">Nauru</option>
|
449 |
+
<option value="Nepal">Nepal</option>
|
450 |
+
<option value="Netherlands">Netherlands</option>
|
451 |
+
<option value="New Caledonia">New Caledonia</option>
|
452 |
+
<option value="New Zealand">New Zealand</option>
|
453 |
+
<option value="Nicaragua">Nicaragua</option>
|
454 |
+
<option value="Niger">Niger</option>
|
455 |
+
<option value="Nigeria">Nigeria</option>
|
456 |
+
<option value="Niue">Niue</option>
|
457 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
458 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
459 |
+
<option value="Norway">Norway</option>
|
460 |
+
<option value="Oman">Oman</option>
|
461 |
+
<option value="Pakistan">Pakistan</option>
|
462 |
+
<option value="Palau">Palau</option>
|
463 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
464 |
+
<option value="Panama">Panama</option>
|
465 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
466 |
+
<option value="Paraguay">Paraguay</option>
|
467 |
+
<option value="Peru">Peru</option>
|
468 |
+
<option value="Philippines">Philippines</option>
|
469 |
+
<option value="Pitcairn">Pitcairn</option>
|
470 |
+
<option value="Poland">Poland</option>
|
471 |
+
<option value="Portugal">Portugal</option>
|
472 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
473 |
+
<option value="Qatar">Qatar</option>
|
474 |
+
<option value="Reunion">Reunion</option>
|
475 |
+
<option value="Romania">Romania</option>
|
476 |
+
<option value="Russian Federation">Russian Federation</option>
|
477 |
+
<option value="Rwanda">Rwanda</option>
|
478 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
479 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
480 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
481 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
482 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
483 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
484 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
485 |
+
<option value="Samoa">Samoa</option>
|
486 |
+
<option value="San Marino">San Marino</option>
|
487 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
488 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
489 |
+
<option value="Senegal">Senegal</option>
|
490 |
+
<option value="Serbia">Serbia</option>
|
491 |
+
<option value="Seychelles">Seychelles</option>
|
492 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
493 |
+
<option value="Singapore">Singapore</option>
|
494 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
495 |
+
<option value="Slovakia">Slovakia</option>
|
496 |
+
<option value="Slovenia">Slovenia</option>
|
497 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
498 |
+
<option value="Somalia">Somalia</option>
|
499 |
+
<option value="South Africa">South Africa</option>
|
500 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
501 |
+
<option value="South Sudan">South Sudan</option>
|
502 |
+
<option value="Spain">Spain</option>
|
503 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
504 |
+
<option value="Sudan">Sudan</option>
|
505 |
+
<option value="Suriname">Suriname</option>
|
506 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
507 |
+
<option value="Swaziland">Swaziland</option>
|
508 |
+
<option value="Sweden">Sweden</option>
|
509 |
+
<option value="Switzerland">Switzerland</option>
|
510 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
511 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
512 |
+
<option value="Tajikistan">Tajikistan</option>
|
513 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
514 |
+
<option value="Thailand">Thailand</option>
|
515 |
+
<option value="Timor-leste">Timor-leste</option>
|
516 |
+
<option value="Togo">Togo</option>
|
517 |
+
<option value="Tokelau">Tokelau</option>
|
518 |
+
<option value="Tonga">Tonga</option>
|
519 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
520 |
+
<option value="Tunisia">Tunisia</option>
|
521 |
+
<option value="Turkey">Turkey</option>
|
522 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
523 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
524 |
+
<option value="Tuvalu">Tuvalu</option>
|
525 |
+
<option value="Uganda">Uganda</option>
|
526 |
+
<option value="Ukraine">Ukraine</option>
|
527 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
528 |
+
<option value="United Kingdom">United Kingdom</option>
|
529 |
+
<option value="United States">United States</option>
|
530 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
531 |
+
<option value="Uruguay">Uruguay</option>
|
532 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
533 |
+
<option value="Vanuatu">Vanuatu</option>
|
534 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
535 |
+
<option value="Viet Nam">Viet Nam</option>
|
536 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
537 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
538 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
539 |
+
<option value="Western Sahara">Western Sahara</option>
|
540 |
+
<option value="Yemen">Yemen</option>
|
541 |
+
<option value="Zambia">Zambia</option>
|
542 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
543 |
+
</select>
|
544 |
+
</div>
|
545 |
+
</div>
|
546 |
+
|
547 |
+
<h2><a name="multiple-select" class="anchor" href="#multiple-select">Multiple Select</a></h2>
|
548 |
+
<div class="side-by-side clearfix">
|
549 |
+
<div>
|
550 |
+
<em>Turns This</em>
|
551 |
+
<select data-placeholder="Choose a Country..." class="select" multiple tabindex="3">
|
552 |
+
<option value=""></option>
|
553 |
+
<option value="United States">United States</option>
|
554 |
+
<option value="United Kingdom">United Kingdom</option>
|
555 |
+
<option value="Afghanistan">Afghanistan</option>
|
556 |
+
<option value="Aland Islands">Aland Islands</option>
|
557 |
+
<option value="Albania">Albania</option>
|
558 |
+
<option value="Algeria">Algeria</option>
|
559 |
+
<option value="American Samoa">American Samoa</option>
|
560 |
+
<option value="Andorra">Andorra</option>
|
561 |
+
<option value="Angola">Angola</option>
|
562 |
+
<option value="Anguilla">Anguilla</option>
|
563 |
+
<option value="Antarctica">Antarctica</option>
|
564 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
565 |
+
<option value="Argentina">Argentina</option>
|
566 |
+
<option value="Armenia">Armenia</option>
|
567 |
+
<option value="Aruba">Aruba</option>
|
568 |
+
<option value="Australia">Australia</option>
|
569 |
+
<option value="Austria">Austria</option>
|
570 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
571 |
+
<option value="Bahamas">Bahamas</option>
|
572 |
+
<option value="Bahrain">Bahrain</option>
|
573 |
+
<option value="Bangladesh">Bangladesh</option>
|
574 |
+
<option value="Barbados">Barbados</option>
|
575 |
+
<option value="Belarus">Belarus</option>
|
576 |
+
<option value="Belgium">Belgium</option>
|
577 |
+
<option value="Belize">Belize</option>
|
578 |
+
<option value="Benin">Benin</option>
|
579 |
+
<option value="Bermuda">Bermuda</option>
|
580 |
+
<option value="Bhutan">Bhutan</option>
|
581 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
582 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
583 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
584 |
+
<option value="Botswana">Botswana</option>
|
585 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
586 |
+
<option value="Brazil">Brazil</option>
|
587 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
588 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
589 |
+
<option value="Bulgaria">Bulgaria</option>
|
590 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
591 |
+
<option value="Burundi">Burundi</option>
|
592 |
+
<option value="Cambodia">Cambodia</option>
|
593 |
+
<option value="Cameroon">Cameroon</option>
|
594 |
+
<option value="Canada">Canada</option>
|
595 |
+
<option value="Cape Verde">Cape Verde</option>
|
596 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
597 |
+
<option value="Central African Republic">Central African Republic</option>
|
598 |
+
<option value="Chad">Chad</option>
|
599 |
+
<option value="Chile">Chile</option>
|
600 |
+
<option value="China">China</option>
|
601 |
+
<option value="Christmas Island">Christmas Island</option>
|
602 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
603 |
+
<option value="Colombia">Colombia</option>
|
604 |
+
<option value="Comoros">Comoros</option>
|
605 |
+
<option value="Congo">Congo</option>
|
606 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
607 |
+
<option value="Cook Islands">Cook Islands</option>
|
608 |
+
<option value="Costa Rica">Costa Rica</option>
|
609 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
610 |
+
<option value="Croatia">Croatia</option>
|
611 |
+
<option value="Cuba">Cuba</option>
|
612 |
+
<option value="Curacao">Curacao</option>
|
613 |
+
<option value="Cyprus">Cyprus</option>
|
614 |
+
<option value="Czech Republic">Czech Republic</option>
|
615 |
+
<option value="Denmark">Denmark</option>
|
616 |
+
<option value="Djibouti">Djibouti</option>
|
617 |
+
<option value="Dominica">Dominica</option>
|
618 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
619 |
+
<option value="Ecuador">Ecuador</option>
|
620 |
+
<option value="Egypt">Egypt</option>
|
621 |
+
<option value="El Salvador">El Salvador</option>
|
622 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
623 |
+
<option value="Eritrea">Eritrea</option>
|
624 |
+
<option value="Estonia">Estonia</option>
|
625 |
+
<option value="Ethiopia">Ethiopia</option>
|
626 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
627 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
628 |
+
<option value="Fiji">Fiji</option>
|
629 |
+
<option value="Finland">Finland</option>
|
630 |
+
<option value="France">France</option>
|
631 |
+
<option value="French Guiana">French Guiana</option>
|
632 |
+
<option value="French Polynesia">French Polynesia</option>
|
633 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
634 |
+
<option value="Gabon">Gabon</option>
|
635 |
+
<option value="Gambia">Gambia</option>
|
636 |
+
<option value="Georgia">Georgia</option>
|
637 |
+
<option value="Germany">Germany</option>
|
638 |
+
<option value="Ghana">Ghana</option>
|
639 |
+
<option value="Gibraltar">Gibraltar</option>
|
640 |
+
<option value="Greece">Greece</option>
|
641 |
+
<option value="Greenland">Greenland</option>
|
642 |
+
<option value="Grenada">Grenada</option>
|
643 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
644 |
+
<option value="Guam">Guam</option>
|
645 |
+
<option value="Guatemala">Guatemala</option>
|
646 |
+
<option value="Guernsey">Guernsey</option>
|
647 |
+
<option value="Guinea">Guinea</option>
|
648 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
649 |
+
<option value="Guyana">Guyana</option>
|
650 |
+
<option value="Haiti">Haiti</option>
|
651 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
652 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
653 |
+
<option value="Honduras">Honduras</option>
|
654 |
+
<option value="Hong Kong">Hong Kong</option>
|
655 |
+
<option value="Hungary">Hungary</option>
|
656 |
+
<option value="Iceland">Iceland</option>
|
657 |
+
<option value="India">India</option>
|
658 |
+
<option value="Indonesia">Indonesia</option>
|
659 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
660 |
+
<option value="Iraq">Iraq</option>
|
661 |
+
<option value="Ireland">Ireland</option>
|
662 |
+
<option value="Isle of Man">Isle of Man</option>
|
663 |
+
<option value="Israel">Israel</option>
|
664 |
+
<option value="Italy">Italy</option>
|
665 |
+
<option value="Jamaica">Jamaica</option>
|
666 |
+
<option value="Japan">Japan</option>
|
667 |
+
<option value="Jersey">Jersey</option>
|
668 |
+
<option value="Jordan">Jordan</option>
|
669 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
670 |
+
<option value="Kenya">Kenya</option>
|
671 |
+
<option value="Kiribati">Kiribati</option>
|
672 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
673 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
674 |
+
<option value="Kuwait">Kuwait</option>
|
675 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
676 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
677 |
+
<option value="Latvia">Latvia</option>
|
678 |
+
<option value="Lebanon">Lebanon</option>
|
679 |
+
<option value="Lesotho">Lesotho</option>
|
680 |
+
<option value="Liberia">Liberia</option>
|
681 |
+
<option value="Libya">Libya</option>
|
682 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
683 |
+
<option value="Lithuania">Lithuania</option>
|
684 |
+
<option value="Luxembourg">Luxembourg</option>
|
685 |
+
<option value="Macao">Macao</option>
|
686 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
687 |
+
<option value="Madagascar">Madagascar</option>
|
688 |
+
<option value="Malawi">Malawi</option>
|
689 |
+
<option value="Malaysia">Malaysia</option>
|
690 |
+
<option value="Maldives">Maldives</option>
|
691 |
+
<option value="Mali">Mali</option>
|
692 |
+
<option value="Malta">Malta</option>
|
693 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
694 |
+
<option value="Martinique">Martinique</option>
|
695 |
+
<option value="Mauritania">Mauritania</option>
|
696 |
+
<option value="Mauritius">Mauritius</option>
|
697 |
+
<option value="Mayotte">Mayotte</option>
|
698 |
+
<option value="Mexico">Mexico</option>
|
699 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
700 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
701 |
+
<option value="Monaco">Monaco</option>
|
702 |
+
<option value="Mongolia">Mongolia</option>
|
703 |
+
<option value="Montenegro">Montenegro</option>
|
704 |
+
<option value="Montserrat">Montserrat</option>
|
705 |
+
<option value="Morocco">Morocco</option>
|
706 |
+
<option value="Mozambique">Mozambique</option>
|
707 |
+
<option value="Myanmar">Myanmar</option>
|
708 |
+
<option value="Namibia">Namibia</option>
|
709 |
+
<option value="Nauru">Nauru</option>
|
710 |
+
<option value="Nepal">Nepal</option>
|
711 |
+
<option value="Netherlands">Netherlands</option>
|
712 |
+
<option value="New Caledonia">New Caledonia</option>
|
713 |
+
<option value="New Zealand">New Zealand</option>
|
714 |
+
<option value="Nicaragua">Nicaragua</option>
|
715 |
+
<option value="Niger">Niger</option>
|
716 |
+
<option value="Nigeria">Nigeria</option>
|
717 |
+
<option value="Niue">Niue</option>
|
718 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
719 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
720 |
+
<option value="Norway">Norway</option>
|
721 |
+
<option value="Oman">Oman</option>
|
722 |
+
<option value="Pakistan">Pakistan</option>
|
723 |
+
<option value="Palau">Palau</option>
|
724 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
725 |
+
<option value="Panama">Panama</option>
|
726 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
727 |
+
<option value="Paraguay">Paraguay</option>
|
728 |
+
<option value="Peru">Peru</option>
|
729 |
+
<option value="Philippines">Philippines</option>
|
730 |
+
<option value="Pitcairn">Pitcairn</option>
|
731 |
+
<option value="Poland">Poland</option>
|
732 |
+
<option value="Portugal">Portugal</option>
|
733 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
734 |
+
<option value="Qatar">Qatar</option>
|
735 |
+
<option value="Reunion">Reunion</option>
|
736 |
+
<option value="Romania">Romania</option>
|
737 |
+
<option value="Russian Federation">Russian Federation</option>
|
738 |
+
<option value="Rwanda">Rwanda</option>
|
739 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
740 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
741 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
742 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
743 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
744 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
745 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
746 |
+
<option value="Samoa">Samoa</option>
|
747 |
+
<option value="San Marino">San Marino</option>
|
748 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
749 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
750 |
+
<option value="Senegal">Senegal</option>
|
751 |
+
<option value="Serbia">Serbia</option>
|
752 |
+
<option value="Seychelles">Seychelles</option>
|
753 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
754 |
+
<option value="Singapore">Singapore</option>
|
755 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
756 |
+
<option value="Slovakia">Slovakia</option>
|
757 |
+
<option value="Slovenia">Slovenia</option>
|
758 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
759 |
+
<option value="Somalia">Somalia</option>
|
760 |
+
<option value="South Africa">South Africa</option>
|
761 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
762 |
+
<option value="South Sudan">South Sudan</option>
|
763 |
+
<option value="Spain">Spain</option>
|
764 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
765 |
+
<option value="Sudan">Sudan</option>
|
766 |
+
<option value="Suriname">Suriname</option>
|
767 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
768 |
+
<option value="Swaziland">Swaziland</option>
|
769 |
+
<option value="Sweden">Sweden</option>
|
770 |
+
<option value="Switzerland">Switzerland</option>
|
771 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
772 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
773 |
+
<option value="Tajikistan">Tajikistan</option>
|
774 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
775 |
+
<option value="Thailand">Thailand</option>
|
776 |
+
<option value="Timor-leste">Timor-leste</option>
|
777 |
+
<option value="Togo">Togo</option>
|
778 |
+
<option value="Tokelau">Tokelau</option>
|
779 |
+
<option value="Tonga">Tonga</option>
|
780 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
781 |
+
<option value="Tunisia">Tunisia</option>
|
782 |
+
<option value="Turkey">Turkey</option>
|
783 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
784 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
785 |
+
<option value="Tuvalu">Tuvalu</option>
|
786 |
+
<option value="Uganda">Uganda</option>
|
787 |
+
<option value="Ukraine">Ukraine</option>
|
788 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
789 |
+
<option value="United Kingdom">United Kingdom</option>
|
790 |
+
<option value="United States">United States</option>
|
791 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
792 |
+
<option value="Uruguay">Uruguay</option>
|
793 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
794 |
+
<option value="Vanuatu">Vanuatu</option>
|
795 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
796 |
+
<option value="Viet Nam">Viet Nam</option>
|
797 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
798 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
799 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
800 |
+
<option value="Western Sahara">Western Sahara</option>
|
801 |
+
<option value="Yemen">Yemen</option>
|
802 |
+
<option value="Zambia">Zambia</option>
|
803 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
804 |
+
</select>
|
805 |
+
</div>
|
806 |
+
<div>
|
807 |
+
<em>Into This</em>
|
808 |
+
<select data-placeholder="Choose a Country..." class="chosen-select" multiple tabindex="4">
|
809 |
+
<option value=""></option>
|
810 |
+
<option value="United States">United States</option>
|
811 |
+
<option value="United Kingdom">United Kingdom</option>
|
812 |
+
<option value="Afghanistan">Afghanistan</option>
|
813 |
+
<option value="Aland Islands">Aland Islands</option>
|
814 |
+
<option value="Albania">Albania</option>
|
815 |
+
<option value="Algeria">Algeria</option>
|
816 |
+
<option value="American Samoa">American Samoa</option>
|
817 |
+
<option value="Andorra">Andorra</option>
|
818 |
+
<option value="Angola">Angola</option>
|
819 |
+
<option value="Anguilla">Anguilla</option>
|
820 |
+
<option value="Antarctica">Antarctica</option>
|
821 |
+
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
|
822 |
+
<option value="Argentina">Argentina</option>
|
823 |
+
<option value="Armenia">Armenia</option>
|
824 |
+
<option value="Aruba">Aruba</option>
|
825 |
+
<option value="Australia">Australia</option>
|
826 |
+
<option value="Austria">Austria</option>
|
827 |
+
<option value="Azerbaijan">Azerbaijan</option>
|
828 |
+
<option value="Bahamas">Bahamas</option>
|
829 |
+
<option value="Bahrain">Bahrain</option>
|
830 |
+
<option value="Bangladesh">Bangladesh</option>
|
831 |
+
<option value="Barbados">Barbados</option>
|
832 |
+
<option value="Belarus">Belarus</option>
|
833 |
+
<option value="Belgium">Belgium</option>
|
834 |
+
<option value="Belize">Belize</option>
|
835 |
+
<option value="Benin">Benin</option>
|
836 |
+
<option value="Bermuda">Bermuda</option>
|
837 |
+
<option value="Bhutan">Bhutan</option>
|
838 |
+
<option value="Bolivia, Plurinational State of">Bolivia, Plurinational State of</option>
|
839 |
+
<option value="Bonaire, Sint Eustatius and Saba">Bonaire, Sint Eustatius and Saba</option>
|
840 |
+
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
|
841 |
+
<option value="Botswana">Botswana</option>
|
842 |
+
<option value="Bouvet Island">Bouvet Island</option>
|
843 |
+
<option value="Brazil">Brazil</option>
|
844 |
+
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
|
845 |
+
<option value="Brunei Darussalam">Brunei Darussalam</option>
|
846 |
+
<option value="Bulgaria">Bulgaria</option>
|
847 |
+
<option value="Burkina Faso">Burkina Faso</option>
|
848 |
+
<option value="Burundi">Burundi</option>
|
849 |
+
<option value="Cambodia">Cambodia</option>
|
850 |
+
<option value="Cameroon">Cameroon</option>
|
851 |
+
<option value="Canada">Canada</option>
|
852 |
+
<option value="Cape Verde">Cape Verde</option>
|
853 |
+
<option value="Cayman Islands">Cayman Islands</option>
|
854 |
+
<option value="Central African Republic">Central African Republic</option>
|
855 |
+
<option value="Chad">Chad</option>
|
856 |
+
<option value="Chile">Chile</option>
|
857 |
+
<option value="China">China</option>
|
858 |
+
<option value="Christmas Island">Christmas Island</option>
|
859 |
+
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
|
860 |
+
<option value="Colombia">Colombia</option>
|
861 |
+
<option value="Comoros">Comoros</option>
|
862 |
+
<option value="Congo">Congo</option>
|
863 |
+
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>
|
864 |
+
<option value="Cook Islands">Cook Islands</option>
|
865 |
+
<option value="Costa Rica">Costa Rica</option>
|
866 |
+
<option value="Cote D'ivoire">Cote D'ivoire</option>
|
867 |
+
<option value="Croatia">Croatia</option>
|
868 |
+
<option value="Cuba">Cuba</option>
|
869 |
+
<option value="Curacao">Curacao</option>
|
870 |
+
<option value="Cyprus">Cyprus</option>
|
871 |
+
<option value="Czech Republic">Czech Republic</option>
|
872 |
+
<option value="Denmark">Denmark</option>
|
873 |
+
<option value="Djibouti">Djibouti</option>
|
874 |
+
<option value="Dominica">Dominica</option>
|
875 |
+
<option value="Dominican Republic">Dominican Republic</option>
|
876 |
+
<option value="Ecuador">Ecuador</option>
|
877 |
+
<option value="Egypt">Egypt</option>
|
878 |
+
<option value="El Salvador">El Salvador</option>
|
879 |
+
<option value="Equatorial Guinea">Equatorial Guinea</option>
|
880 |
+
<option value="Eritrea">Eritrea</option>
|
881 |
+
<option value="Estonia">Estonia</option>
|
882 |
+
<option value="Ethiopia">Ethiopia</option>
|
883 |
+
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
|
884 |
+
<option value="Faroe Islands">Faroe Islands</option>
|
885 |
+
<option value="Fiji">Fiji</option>
|
886 |
+
<option value="Finland">Finland</option>
|
887 |
+
<option value="France">France</option>
|
888 |
+
<option value="French Guiana">French Guiana</option>
|
889 |
+
<option value="French Polynesia">French Polynesia</option>
|
890 |
+
<option value="French Southern Territories">French Southern Territories</option>
|
891 |
+
<option value="Gabon">Gabon</option>
|
892 |
+
<option value="Gambia">Gambia</option>
|
893 |
+
<option value="Georgia">Georgia</option>
|
894 |
+
<option value="Germany">Germany</option>
|
895 |
+
<option value="Ghana">Ghana</option>
|
896 |
+
<option value="Gibraltar">Gibraltar</option>
|
897 |
+
<option value="Greece">Greece</option>
|
898 |
+
<option value="Greenland">Greenland</option>
|
899 |
+
<option value="Grenada">Grenada</option>
|
900 |
+
<option value="Guadeloupe">Guadeloupe</option>
|
901 |
+
<option value="Guam">Guam</option>
|
902 |
+
<option value="Guatemala">Guatemala</option>
|
903 |
+
<option value="Guernsey">Guernsey</option>
|
904 |
+
<option value="Guinea">Guinea</option>
|
905 |
+
<option value="Guinea-bissau">Guinea-bissau</option>
|
906 |
+
<option value="Guyana">Guyana</option>
|
907 |
+
<option value="Haiti">Haiti</option>
|
908 |
+
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>
|
909 |
+
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
|
910 |
+
<option value="Honduras">Honduras</option>
|
911 |
+
<option value="Hong Kong">Hong Kong</option>
|
912 |
+
<option value="Hungary">Hungary</option>
|
913 |
+
<option value="Iceland">Iceland</option>
|
914 |
+
<option value="India">India</option>
|
915 |
+
<option value="Indonesia">Indonesia</option>
|
916 |
+
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
|
917 |
+
<option value="Iraq">Iraq</option>
|
918 |
+
<option value="Ireland">Ireland</option>
|
919 |
+
<option value="Isle of Man">Isle of Man</option>
|
920 |
+
<option value="Israel">Israel</option>
|
921 |
+
<option value="Italy">Italy</option>
|
922 |
+
<option value="Jamaica">Jamaica</option>
|
923 |
+
<option value="Japan">Japan</option>
|
924 |
+
<option value="Jersey">Jersey</option>
|
925 |
+
<option value="Jordan">Jordan</option>
|
926 |
+
<option value="Kazakhstan">Kazakhstan</option>
|
927 |
+
<option value="Kenya">Kenya</option>
|
928 |
+
<option value="Kiribati">Kiribati</option>
|
929 |
+
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
|
930 |
+
<option value="Korea, Republic of">Korea, Republic of</option>
|
931 |
+
<option value="Kuwait">Kuwait</option>
|
932 |
+
<option value="Kyrgyzstan">Kyrgyzstan</option>
|
933 |
+
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
|
934 |
+
<option value="Latvia">Latvia</option>
|
935 |
+
<option value="Lebanon">Lebanon</option>
|
936 |
+
<option value="Lesotho">Lesotho</option>
|
937 |
+
<option value="Liberia">Liberia</option>
|
938 |
+
<option value="Libya">Libya</option>
|
939 |
+
<option value="Liechtenstein">Liechtenstein</option>
|
940 |
+
<option value="Lithuania">Lithuania</option>
|
941 |
+
<option value="Luxembourg">Luxembourg</option>
|
942 |
+
<option value="Macao">Macao</option>
|
943 |
+
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>
|
944 |
+
<option value="Madagascar">Madagascar</option>
|
945 |
+
<option value="Malawi">Malawi</option>
|
946 |
+
<option value="Malaysia">Malaysia</option>
|
947 |
+
<option value="Maldives">Maldives</option>
|
948 |
+
<option value="Mali">Mali</option>
|
949 |
+
<option value="Malta">Malta</option>
|
950 |
+
<option value="Marshall Islands">Marshall Islands</option>
|
951 |
+
<option value="Martinique">Martinique</option>
|
952 |
+
<option value="Mauritania">Mauritania</option>
|
953 |
+
<option value="Mauritius">Mauritius</option>
|
954 |
+
<option value="Mayotte">Mayotte</option>
|
955 |
+
<option value="Mexico">Mexico</option>
|
956 |
+
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option>
|
957 |
+
<option value="Moldova, Republic of">Moldova, Republic of</option>
|
958 |
+
<option value="Monaco">Monaco</option>
|
959 |
+
<option value="Mongolia">Mongolia</option>
|
960 |
+
<option value="Montenegro">Montenegro</option>
|
961 |
+
<option value="Montserrat">Montserrat</option>
|
962 |
+
<option value="Morocco">Morocco</option>
|
963 |
+
<option value="Mozambique">Mozambique</option>
|
964 |
+
<option value="Myanmar">Myanmar</option>
|
965 |
+
<option value="Namibia">Namibia</option>
|
966 |
+
<option value="Nauru">Nauru</option>
|
967 |
+
<option value="Nepal">Nepal</option>
|
968 |
+
<option value="Netherlands">Netherlands</option>
|
969 |
+
<option value="New Caledonia">New Caledonia</option>
|
970 |
+
<option value="New Zealand">New Zealand</option>
|
971 |
+
<option value="Nicaragua">Nicaragua</option>
|
972 |
+
<option value="Niger">Niger</option>
|
973 |
+
<option value="Nigeria">Nigeria</option>
|
974 |
+
<option value="Niue">Niue</option>
|
975 |
+
<option value="Norfolk Island">Norfolk Island</option>
|
976 |
+
<option value="Northern Mariana Islands">Northern Mariana Islands</option>
|
977 |
+
<option value="Norway">Norway</option>
|
978 |
+
<option value="Oman">Oman</option>
|
979 |
+
<option value="Pakistan">Pakistan</option>
|
980 |
+
<option value="Palau">Palau</option>
|
981 |
+
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>
|
982 |
+
<option value="Panama">Panama</option>
|
983 |
+
<option value="Papua New Guinea">Papua New Guinea</option>
|
984 |
+
<option value="Paraguay">Paraguay</option>
|
985 |
+
<option value="Peru">Peru</option>
|
986 |
+
<option value="Philippines">Philippines</option>
|
987 |
+
<option value="Pitcairn">Pitcairn</option>
|
988 |
+
<option value="Poland">Poland</option>
|
989 |
+
<option value="Portugal">Portugal</option>
|
990 |
+
<option value="Puerto Rico">Puerto Rico</option>
|
991 |
+
<option value="Qatar">Qatar</option>
|
992 |
+
<option value="Reunion">Reunion</option>
|
993 |
+
<option value="Romania">Romania</option>
|
994 |
+
<option value="Russian Federation">Russian Federation</option>
|
995 |
+
<option value="Rwanda">Rwanda</option>
|
996 |
+
<option value="Saint Barthelemy">Saint Barthelemy</option>
|
997 |
+
<option value="Saint Helena, Ascension and Tristan da Cunha">Saint Helena, Ascension and Tristan da Cunha</option>
|
998 |
+
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
|
999 |
+
<option value="Saint Lucia">Saint Lucia</option>
|
1000 |
+
<option value="Saint Martin (French part)">Saint Martin (French part)</option>
|
1001 |
+
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
|
1002 |
+
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>
|
1003 |
+
<option value="Samoa">Samoa</option>
|
1004 |
+
<option value="San Marino">San Marino</option>
|
1005 |
+
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
|
1006 |
+
<option value="Saudi Arabia">Saudi Arabia</option>
|
1007 |
+
<option value="Senegal">Senegal</option>
|
1008 |
+
<option value="Serbia">Serbia</option>
|
1009 |
+
<option value="Seychelles">Seychelles</option>
|
1010 |
+
<option value="Sierra Leone">Sierra Leone</option>
|
1011 |
+
<option value="Singapore">Singapore</option>
|
1012 |
+
<option value="Sint Maarten (Dutch part)">Sint Maarten (Dutch part)</option>
|
1013 |
+
<option value="Slovakia">Slovakia</option>
|
1014 |
+
<option value="Slovenia">Slovenia</option>
|
1015 |
+
<option value="Solomon Islands">Solomon Islands</option>
|
1016 |
+
<option value="Somalia">Somalia</option>
|
1017 |
+
<option value="South Africa">South Africa</option>
|
1018 |
+
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>
|
1019 |
+
<option value="South Sudan">South Sudan</option>
|
1020 |
+
<option value="Spain">Spain</option>
|
1021 |
+
<option value="Sri Lanka">Sri Lanka</option>
|
1022 |
+
<option value="Sudan">Sudan</option>
|
1023 |
+
<option value="Suriname">Suriname</option>
|
1024 |
+
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
|
1025 |
+
<option value="Swaziland">Swaziland</option>
|
1026 |
+
<option value="Sweden">Sweden</option>
|
1027 |
+
<option value="Switzerland">Switzerland</option>
|
1028 |
+
<option value="Syrian Arab Republic">Syrian Arab Republic</option>
|
1029 |
+
<option value="Taiwan, Province of China">Taiwan, Province of China</option>
|
1030 |
+
<option value="Tajikistan">Tajikistan</option>
|
1031 |
+
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option>
|
1032 |
+
<option value="Thailand">Thailand</option>
|
1033 |
+
<option value="Timor-leste">Timor-leste</option>
|
1034 |
+
<option value="Togo">Togo</option>
|
1035 |
+
<option value="Tokelau">Tokelau</option>
|
1036 |
+
<option value="Tonga">Tonga</option>
|
1037 |
+
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
|
1038 |
+
<option value="Tunisia">Tunisia</option>
|
1039 |
+
<option value="Turkey">Turkey</option>
|
1040 |
+
<option value="Turkmenistan">Turkmenistan</option>
|
1041 |
+
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
|
1042 |
+
<option value="Tuvalu">Tuvalu</option>
|
1043 |
+
<option value="Uganda">Uganda</option>
|
1044 |
+
<option value="Ukraine">Ukraine</option>
|
1045 |
+
<option value="United Arab Emirates">United Arab Emirates</option>
|
1046 |
+
<option value="United Kingdom">United Kingdom</option>
|
1047 |
+
<option value="United States">United States</option>
|
1048 |
+
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
|
1049 |
+
<option value="Uruguay">Uruguay</option>
|
1050 |
+
<option value="Uzbekistan">Uzbekistan</option>
|
1051 |
+
<option value="Vanuatu">Vanuatu</option>
|
1052 |
+
<option value="Venezuela, Bolivarian Republic of">Venezuela, Bolivarian Republic of</option>
|
1053 |
+
<option value="Viet Nam">Viet Nam</option>
|
1054 |
+
<option value="Virgin Islands, British">Virgin Islands, British</option>
|
1055 |
+
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
|
1056 |
+
<option value="Wallis and Futuna">Wallis and Futuna</option>
|
1057 |
+
<option value="Western Sahara">Western Sahara</option>
|
1058 |
+
<option value="Yemen">Yemen</option>
|
1059 |
+
<option value="Zambia">Zambia</option>
|
1060 |
+
<option value="Zimbabwe">Zimbabwe</option>
|
1061 |
+
</select>
|
1062 |
+
</div>
|
1063 |
+
</div>
|
1064 |
+
|
1065 |
+
<h2><a name="optgroup-support" class="anchor" href="#optgroup-support"><optgroup> Support</a></h2>
|
1066 |
+
<div class="side-by-side clearfix">
|
1067 |
+
<div>
|
1068 |
+
<em>Single Select with Groups</em>
|
1069 |
+
<select data-placeholder="Your Favorite Football Team" class="chosen-select" tabindex="5">
|
1070 |
+
<option value=""></option>
|
1071 |
+
<optgroup label="NFC EAST">
|
1072 |
+
<option>Dallas Cowboys</option>
|
1073 |
+
<option>New York Giants</option>
|
1074 |
+
<option>Philadelphia Eagles</option>
|
1075 |
+
<option>Washington Redskins</option>
|
1076 |
+
</optgroup>
|
1077 |
+
<optgroup label="NFC NORTH">
|
1078 |
+
<option>Chicago Bears</option>
|
1079 |
+
<option>Detroit Lions</option>
|
1080 |
+
<option>Green Bay Packers</option>
|
1081 |
+
<option>Minnesota Vikings</option>
|
1082 |
+
</optgroup>
|
1083 |
+
<optgroup label="NFC SOUTH">
|
1084 |
+
<option>Atlanta Falcons</option>
|
1085 |
+
<option>Carolina Panthers</option>
|
1086 |
+
<option>New Orleans Saints</option>
|
1087 |
+
<option>Tampa Bay Buccaneers</option>
|
1088 |
+
</optgroup>
|
1089 |
+
<optgroup label="NFC WEST">
|
1090 |
+
<option>Arizona Cardinals</option>
|
1091 |
+
<option>St. Louis Rams</option>
|
1092 |
+
<option>San Francisco 49ers</option>
|
1093 |
+
<option>Seattle Seahawks</option>
|
1094 |
+
</optgroup>
|
1095 |
+
<optgroup label="AFC EAST">
|
1096 |
+
<option>Buffalo Bills</option>
|
1097 |
+
<option>Miami Dolphins</option>
|
1098 |
+
<option>New England Patriots</option>
|
1099 |
+
<option>New York Jets</option>
|
1100 |
+
</optgroup>
|
1101 |
+
<optgroup label="AFC NORTH">
|
1102 |
+
<option>Baltimore Ravens</option>
|
1103 |
+
<option>Cincinnati Bengals</option>
|
1104 |
+
<option>Cleveland Browns</option>
|
1105 |
+
<option>Pittsburgh Steelers</option>
|
1106 |
+
</optgroup>
|
1107 |
+
<optgroup label="AFC SOUTH">
|
1108 |
+
<option>Houston Texans</option>
|
1109 |
+
<option>Indianapolis Colts</option>
|
1110 |
+
<option>Jacksonville Jaguars</option>
|
1111 |
+
<option>Tennessee Titans</option>
|
1112 |
+
</optgroup>
|
1113 |
+
<optgroup label="AFC WEST">
|
1114 |
+
<option>Denver Broncos</option>
|
1115 |
+
<option>Kansas City Chiefs</option>
|
1116 |
+
<option>Oakland Raiders</option>
|
1117 |
+
<option>San Diego Chargers</option>
|
1118 |
+
</optgroup>
|
1119 |
+
</select>
|
1120 |
+
</div>
|
1121 |
+
<div>
|
1122 |
+
<em>Multiple Select with Groups</em>
|
1123 |
+
<select data-placeholder="Your Favorite Football Team" class="chosen-select" multiple tabindex="6">
|
1124 |
+
<option value=""></option>
|
1125 |
+
<optgroup label="NFC EAST">
|
1126 |
+
<option>Dallas Cowboys</option>
|
1127 |
+
<option>New York Giants</option>
|
1128 |
+
<option>Philadelphia Eagles</option>
|
1129 |
+
<option>Washington Redskins</option>
|
1130 |
+
</optgroup>
|
1131 |
+
<optgroup label="NFC NORTH">
|
1132 |
+
<option>Chicago Bears</option>
|
1133 |
+
<option>Detroit Lions</option>
|
1134 |
+
<option>Green Bay Packers</option>
|
1135 |
+
<option>Minnesota Vikings</option>
|
1136 |
+
</optgroup>
|
1137 |
+
<optgroup label="NFC SOUTH">
|
1138 |
+
<option>Atlanta Falcons</option>
|
1139 |
+
<option>Carolina Panthers</option>
|
1140 |
+
<option>New Orleans Saints</option>
|
1141 |
+
<option>Tampa Bay Buccaneers</option>
|
1142 |
+
</optgroup>
|
1143 |
+
<optgroup label="NFC WEST">
|
1144 |
+
<option>Arizona Cardinals</option>
|
1145 |
+
<option>St. Louis Rams</option>
|
1146 |
+
<option>San Francisco 49ers</option>
|
1147 |
+
<option>Seattle Seahawks</option>
|
1148 |
+
</optgroup>
|
1149 |
+
<optgroup label="AFC EAST">
|
1150 |
+
<option>Buffalo Bills</option>
|
1151 |
+
<option>Miami Dolphins</option>
|
1152 |
+
<option>New England Patriots</option>
|
1153 |
+
<option>New York Jets</option>
|
1154 |
+
</optgroup>
|
1155 |
+
<optgroup label="AFC NORTH">
|
1156 |
+
<option>Baltimore Ravens</option>
|
1157 |
+
<option>Cincinnati Bengals</option>
|
1158 |
+
<option>Cleveland Browns</option>
|
1159 |
+
<option>Pittsburgh Steelers</option>
|
1160 |
+
</optgroup>
|
1161 |
+
<optgroup label="AFC SOUTH">
|
1162 |
+
<option>Houston Texans</option>
|
1163 |
+
<option>Indianapolis Colts</option>
|
1164 |
+
<option>Jacksonville Jaguars</option>
|
1165 |
+
<option>Tennessee Titans</option>
|
1166 |
+
</optgroup>
|
1167 |
+
<optgroup label="AFC WEST">
|
1168 |
+
<option>Denver Broncos</option>
|
1169 |
+
<option>Kansas City Chiefs</option>
|
1170 |
+
<option>Oakland Raiders</option>
|
1171 |
+
<option>San Diego Chargers</option>
|
1172 |
+
</optgroup>
|
1173 |
+
</select>
|
1174 |
+
</div>
|
1175 |
+
</div>
|
1176 |
+
|
1177 |
+
<h2><a name="selected-and-disabled-support" class="anchor" href="#selected-and-disabled-support">Selected and Disabled Support</a></h2>
|
1178 |
+
<div class="side-by-side clearfix">
|
1179 |
+
<p>Chosen automatically highlights selected options and removes disabled options.</p>
|
1180 |
+
<div>
|
1181 |
+
<em>Single Select</em>
|
1182 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select" tabindex="7">
|
1183 |
+
<option value=""></option>
|
1184 |
+
<option>American Black Bear</option>
|
1185 |
+
<option>Asiatic Black Bear</option>
|
1186 |
+
<option>Brown Bear</option>
|
1187 |
+
<option>Giant Panda</option>
|
1188 |
+
<option selected>Sloth Bear</option>
|
1189 |
+
<option disabled>Sun Bear</option>
|
1190 |
+
<option>Polar Bear</option>
|
1191 |
+
<option disabled>Spectacled Bear</option>
|
1192 |
+
</select>
|
1193 |
+
</div>
|
1194 |
+
<div>
|
1195 |
+
<em>Multiple Select</em>
|
1196 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="8">
|
1197 |
+
<option value=""></option>
|
1198 |
+
<option>American Black Bear</option>
|
1199 |
+
<option>Asiatic Black Bear</option>
|
1200 |
+
<option>Brown Bear</option>
|
1201 |
+
<option>Giant Panda</option>
|
1202 |
+
<option selected>Sloth Bear</option>
|
1203 |
+
<option disabled>Sun Bear</option>
|
1204 |
+
<option selected>Polar Bear</option>
|
1205 |
+
<option disabled>Spectacled Bear</option>
|
1206 |
+
</select>
|
1207 |
+
</div>
|
1208 |
+
</div>
|
1209 |
+
|
1210 |
+
<h2><a name="hide-search-on-single-select" class="anchor" href="#hide-search-on-single-select">Hide Search on Single Select</a></h2>
|
1211 |
+
<div class="side-by-side clearfix">
|
1212 |
+
<p>The <code>disable_search_threshold</code> option can be specified to hide the search input on single selects if there are <i>n</i> or fewer options.</p>
|
1213 |
+
<pre><code class="language-javascript"> new Chosen($("chosen_select_field"),{disable_search_threshold: 10}); </code></pre>
|
1214 |
+
<p></p>
|
1215 |
+
<div>
|
1216 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-no-single" tabindex="9">
|
1217 |
+
<option value=""></option>
|
1218 |
+
<option>American Black Bear</option>
|
1219 |
+
<option>Asiatic Black Bear</option>
|
1220 |
+
<option>Brown Bear</option>
|
1221 |
+
<option>Giant Panda</option>
|
1222 |
+
<option selected disabled>Sloth Bear</option>
|
1223 |
+
<option disabled>Sun Bear</option>
|
1224 |
+
<option selected>Paddington Bear</option>
|
1225 |
+
<option selected>Polar Bear</option>
|
1226 |
+
<option disabled>Spectacled Bear</option>
|
1227 |
+
</select>
|
1228 |
+
</div>
|
1229 |
+
</div>
|
1230 |
+
|
1231 |
+
<h2><a name="default-text-support" class="anchor" href="#default-text-support">Default Text Support</a></h2>
|
1232 |
+
<div class="side-by-side clearfix">
|
1233 |
+
<p>Chosen automatically sets the default field text ("Choose a country...") by reading the select element's data-placeholder value. If no data-placeholder value is present, it will default to "Select an Option" or "Select Some Options" depending on whether the select is single or multiple. You can change these elements in the plugin js file as you see fit.</p>
|
1234 |
+
<pre><code class="language-markup"><select <strong>data-placeholder="Choose a country..."</strong> multiple class="chosen-select"></code></pre>
|
1235 |
+
<p><strong>Note:</strong> on single selects, the first element is assumed to be selected by the browser. To take advantage of the default text support, you will need to include a blank option as the first element of your select list.</p>
|
1236 |
+
</div>
|
1237 |
+
|
1238 |
+
<h2><a name="no-results-text-support" class="anchor" href="#no-results-text-support">No Results Text Support</a></h2>
|
1239 |
+
<div class="side-by-side clearfix">
|
1240 |
+
<p>Setting the "No results" search text is as easy as passing an option when you create Chosen:</p>
|
1241 |
+
<pre><code class="language-javascript">new Chosen($("chosen_select_field"),{no_results_text: "Oops, nothing found!"}); </code></pre>
|
1242 |
+
|
1243 |
+
<div>
|
1244 |
+
<em>Single Select</em>
|
1245 |
+
<select data-placeholder="Type 'C' to view" class="chosen-select-no-results" tabindex="10">
|
1246 |
+
<option value=""></option>
|
1247 |
+
<option>American Black Bear</option>
|
1248 |
+
<option>Asiatic Black Bear</option>
|
1249 |
+
<option>Brown Bear</option>
|
1250 |
+
<option>Giant Panda</option>
|
1251 |
+
<option>Sloth Bear</option>
|
1252 |
+
<option>Sun Bear</option>
|
1253 |
+
<option>Polar Bear</option>
|
1254 |
+
<option>Spectacled Bear</option>
|
1255 |
+
</select>
|
1256 |
+
</div>
|
1257 |
+
<div>
|
1258 |
+
<em>Multiple Select</em>
|
1259 |
+
<select data-placeholder="Type 'C' to view" multiple class="chosen-select-no-results" tabindex="11">
|
1260 |
+
<option value=""></option>
|
1261 |
+
<option>American Black Bear</option>
|
1262 |
+
<option>Asiatic Black Bear</option>
|
1263 |
+
<option>Brown Bear</option>
|
1264 |
+
<option>Giant Panda</option>
|
1265 |
+
<option>Sloth Bear</option>
|
1266 |
+
<option>Sun Bear</option>
|
1267 |
+
<option>Polar Bear</option>
|
1268 |
+
<option>Spectacled Bear</option>
|
1269 |
+
</select>
|
1270 |
+
</div>
|
1271 |
+
</div>
|
1272 |
+
|
1273 |
+
<h2><a name="limit-selected-options-in-multiselect" class="anchor" href="#limit-selected-options-in-multiselect">Limit Selected Options in Multiselect</a></h2>
|
1274 |
+
<div class="side-by-side clearfix">
|
1275 |
+
<p>You can easily limit how many options the user can select:</p>
|
1276 |
+
<pre><code class="language-javascript">new Chosen($("chosen_select_field"),{max_selected_options: 5}); </code></pre>
|
1277 |
+
<p>If you try to select another option with limit reached <code>chosen:maxselected</code> event is triggered:</p>
|
1278 |
+
<pre><code class="language-javascript">$("chosen_select_field").observe("chosen:maxselected", function(evt) { ... }); </code></pre>
|
1279 |
+
</div>
|
1280 |
+
|
1281 |
+
<h2><a name="allow-deselect-on-single-selects" class="anchor" href="#allow-deselect-on-single-selects">Allow Deselect on Single Selects</a></h2>
|
1282 |
+
<div class="side-by-side clearfix">
|
1283 |
+
<p>When a single select box isn't a required field, you can set <code class="language-javascript">allow_single_deselect: true</code> and Chosen will add a UI element for option deselection. This will only work if the first option has blank text.</p>
|
1284 |
+
<div class="side-by-side clearfix">
|
1285 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-deselect" tabindex="12">
|
1286 |
+
<option value=""></option>
|
1287 |
+
<option>American Black Bear</option>
|
1288 |
+
<option>Asiatic Black Bear</option>
|
1289 |
+
<option>Brown Bear</option>
|
1290 |
+
<option>Giant Panda</option>
|
1291 |
+
<option selected>Sloth Bear</option>
|
1292 |
+
<option>Sun Bear</option>
|
1293 |
+
<option>Polar Bear</option>
|
1294 |
+
<option>Spectacled Bear</option>
|
1295 |
+
</select>
|
1296 |
+
</div>
|
1297 |
+
</div>
|
1298 |
+
|
1299 |
+
<h2><a name="right-to-left-support" class="anchor" href="#right-to-left-support">Right-to-Left Support</a></h2>
|
1300 |
+
<div class="side-by-side clearfix">
|
1301 |
+
<p>You can set right-to-left text by setting <code class="language-javascript">rtl: true</code></p>
|
1302 |
+
<pre><code class="language-javascript"> $(".chosen-select").chosen({rtl: true}); </code></pre>
|
1303 |
+
<div>
|
1304 |
+
<em>Single Right-to-Left Select</em>
|
1305 |
+
<select data-placeholder="Your Favorite Type of Bear" class="chosen-select-rtl" tabindex="13">
|
1306 |
+
<option value=""></option>
|
1307 |
+
<option>American Black Bear</option>
|
1308 |
+
<option>Asiatic Black Bear</option>
|
1309 |
+
<option>Brown Bear</option>
|
1310 |
+
<option>Giant Panda</option>
|
1311 |
+
<option selected>Sloth Bear</option>
|
1312 |
+
<option>Polar Bear</option>
|
1313 |
+
</select>
|
1314 |
+
</div>
|
1315 |
+
<div>
|
1316 |
+
<em>Multiple Right-to-Left Select</em>
|
1317 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select-rtl" tabindex="14">
|
1318 |
+
<option value=""></option>
|
1319 |
+
<option>American Black Bear</option>
|
1320 |
+
<option>Asiatic Black Bear</option>
|
1321 |
+
<option>Brown Bear</option>
|
1322 |
+
<option>Giant Panda</option>
|
1323 |
+
<option selected>Sloth Bear</option>
|
1324 |
+
<option selected>Polar Bear</option>
|
1325 |
+
</select>
|
1326 |
+
</div>
|
1327 |
+
</div>
|
1328 |
+
|
1329 |
+
<h2><a name="change-update-events" class="anchor" href="#change-update-events">Observing, Updating, and Destroying Chosen</a></h2>
|
1330 |
+
<div class="side-by-side clearfix">
|
1331 |
+
<ul>
|
1332 |
+
<li>
|
1333 |
+
<h3>Observing Form Field Changes</h3>
|
1334 |
+
<p>When working with form fields, you often want to perform some behavior after a value has been selected or deselected. Whenever a user selects a field in Chosen, it triggers a "change" event on the original form field. That lets you do something like this:</p>
|
1335 |
+
<pre><code class="language-javascript">$("#form_field").chosen().change( … );</code></pre>
|
1336 |
+
<p><strong>Note:</strong> Prototype doesn't offer support for triggering standard browser events. <a href="https://github.com/kangax/protolicious/blob/5b56fdafcd7d7662c9d648534225039b2e78e371/event.simulate.js">Event.simulate</a> is required to trigger the change event when using the Prototype version.</p>
|
1337 |
+
</li>
|
1338 |
+
<li>
|
1339 |
+
<h3>Updating Chosen Dynamically</h3>
|
1340 |
+
<p>If you need to update the options in your select field and want Chosen to pick up the changes, you'll need to trigger the "chosen:updated" event on the field. Chosen will re-build itself based on the updated content.</p>
|
1341 |
+
<pre><code class="language-javascript">Event.fire($("form_field"), "chosen:updated");</code></pre>
|
1342 |
+
</li>
|
1343 |
+
<li>
|
1344 |
+
<h3>Destroying Chosen</h3>
|
1345 |
+
<p>To destroy Chosen and revert back to the native select, call <code class="language-javascript">destroy</code> on the Chosen instance:</p>
|
1346 |
+
<pre><code class="language-javascript">chosen = new Chosen($("form_field"));
|
1347 |
+
|
1348 |
+
// ...later
|
1349 |
+
chosen.destroy();</code></pre>
|
1350 |
+
</li>
|
1351 |
+
</ul>
|
1352 |
+
</div>
|
1353 |
+
|
1354 |
+
<h2><a name="custom-width-support" class="anchor" href="#custom-width-support">Custom Width Support</a></h2>
|
1355 |
+
<div class="side-by-side clearfix">
|
1356 |
+
<p>Using a custom width with Chosen is as easy as passing an option when you create Chosen:</p>
|
1357 |
+
<pre><code class="language-javascript">new Chosen($("chosen_select_field"),{width: "95%"}); </code></pre>
|
1358 |
+
<div>
|
1359 |
+
<em>Single Select</em>
|
1360 |
+
<select data-placeholder="Your Favorite Types of Bear" class="chosen-select-width" tabindex="15">
|
1361 |
+
<option value=""></option>
|
1362 |
+
<option selected>American Black Bear</option>
|
1363 |
+
<option>Asiatic Black Bear</option>
|
1364 |
+
<option>Brown Bear</option>
|
1365 |
+
<option>Giant Panda</option>
|
1366 |
+
<option>Sloth Bear</option>
|
1367 |
+
<option>Sun Bear</option>
|
1368 |
+
<option>Polar Bear</option>
|
1369 |
+
<option>Spectacled Bear</option>
|
1370 |
+
</select>
|
1371 |
+
</div>
|
1372 |
+
<div>
|
1373 |
+
<em>Multiple Select</em>
|
1374 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select-width" tabindex="16">
|
1375 |
+
<option value=""></option>
|
1376 |
+
<option>American Black Bear</option>
|
1377 |
+
<option>Asiatic Black Bear</option>
|
1378 |
+
<option>Brown Bear</option>
|
1379 |
+
<option selected>Giant Panda</option>
|
1380 |
+
<option>Sloth Bear</option>
|
1381 |
+
<option>Sun Bear</option>
|
1382 |
+
<option>Polar Bear</option>
|
1383 |
+
<option>Spectacled Bear</option>
|
1384 |
+
</select>
|
1385 |
+
</div>
|
1386 |
+
</div>
|
1387 |
+
|
1388 |
+
<h2><a name="labels-work-too" class="anchor" href="#labels-work-too">Labels work, too</a></h2>
|
1389 |
+
<div class="side-by-side clearfix">
|
1390 |
+
<p>Use labels just like you would a standard select</p>
|
1391 |
+
<p></p>
|
1392 |
+
<div>
|
1393 |
+
<em><label for="single-label-example">Click to Highlight Single Select</label></em>
|
1394 |
+
<select data-placeholder="Your Favorite Types of Bear" class="chosen-select" tabindex="17" id="single-label-example">
|
1395 |
+
<option value=""></option>
|
1396 |
+
<option selected>American Black Bear</option>
|
1397 |
+
<option>Asiatic Black Bear</option>
|
1398 |
+
<option>Brown Bear</option>
|
1399 |
+
<option>Giant Panda</option>
|
1400 |
+
<option>Sloth Bear</option>
|
1401 |
+
<option>Sun Bear</option>
|
1402 |
+
<option>Polar Bear</option>
|
1403 |
+
<option>Spectacled Bear</option>
|
1404 |
+
</select>
|
1405 |
+
</div>
|
1406 |
+
<div>
|
1407 |
+
<em><label for="multiple-label-example">Click to Highlight Multiple Select</label></em>
|
1408 |
+
<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="18" id="multiple-label-example">
|
1409 |
+
<option value=""></option>
|
1410 |
+
<option>American Black Bear</option>
|
1411 |
+
<option>Asiatic Black Bear</option>
|
1412 |
+
<option>Brown Bear</option>
|
1413 |
+
<option selected>Giant Panda</option>
|
1414 |
+
<option>Sloth Bear</option>
|
1415 |
+
<option>Sun Bear</option>
|
1416 |
+
<option>Polar Bear</option>
|
1417 |
+
<option>Spectacled Bear</option>
|
1418 |
+
</select>
|
1419 |
+
</div>
|
1420 |
+
</div>
|
1421 |
+
|
1422 |
+
<h2><a name="setup" class="anchor" href="#setup">Setup</a></h2>
|
1423 |
+
<p>Using Chosen is easy as can be.</p>
|
1424 |
+
<ol>
|
1425 |
+
<li><a href="https://github.com/harvesthq/chosen/releases">Download</a> the plugin and copy the chosen files to your app.</li>
|
1426 |
+
<li>Activate the plugin by creating a new instance of Chosen: New Chosen(<em>some_form_field</em>,<em>some_options</em>);</li>
|
1427 |
+
<li><a href="http://www.youtube.com/watch?feature=player_detailpage&v=UkSPUDpe0U8#t=11s">Disco</a>.</li>
|
1428 |
+
</ol>
|
1429 |
+
|
1430 |
+
<h2><a name="faqs" class="anchor" href="#faqs">FAQs</a></h2>
|
1431 |
+
<ul class="faqs">
|
1432 |
+
<li>
|
1433 |
+
<h3>Do you have all the available options documented somewhere?</h3>
|
1434 |
+
<p>Yes! You can find them on <a href="options.html">the options page</a>.</p>
|
1435 |
+
</li>
|
1436 |
+
<li>
|
1437 |
+
<h3>Something doesn't work. Can you fix it?</h3>
|
1438 |
+
<p>Yes! Please report all issues using the <a href="http://github.com/harvesthq/chosen/issues">GitHub issue tracking tool</a>. Please include the plugin version (jQuery or Prototype), browser and OS. The more information provided, the easier it is to fix a problem.</p>
|
1439 |
+
</li>
|
1440 |
+
<li>
|
1441 |
+
<h3>What browsers are supported?</h3>
|
1442 |
+
<p>All modern desktop browsers are supported (Firefox, Chrome, Safari and IE9). Legacy support for IE8 is also enabled. Chosen is disabled on iPhone, iPod Touch, and Android mobile devices (<a href="https://github.com/harvesthq/chosen/pull/1388">more information</a>).</p>
|
1443 |
+
</li>
|
1444 |
+
</ul>
|
1445 |
+
|
1446 |
+
<h2><a name="credits" class="anchor" href="#credits">Credits</a></h2>
|
1447 |
+
|
1448 |
+
<ul class="credits">
|
1449 |
+
<li>Concept and development by <a href="http://patrickfiller.com">Patrick Filler</a> for <a href="https://getharvest.com">Harvest</a>.</li>
|
1450 |
+
<li>Design and CSS by <a href="http://matthewlettini.com">Matthew Lettini</a>.</li>
|
1451 |
+
<li>Repository maintained by <a href="https://github.com/pfiller">@pfiller</a>, <a href="https://github.com/kenearley">@kenearley</a>, <a href="https://github.com/stof">@stof</a>, <a href="https://github.com/koenpunt">@koenpunt</a>, and <a href="https://github.com/tjschuck">@tjschuck</a>.</li>
|
1452 |
+
<li>Chosen includes <a href="https://github.com/harvesthq/chosen/contributors">contributions by many fine folks</a>.</li>
|
1453 |
+
</ul>
|
1454 |
+
|
1455 |
+
<footer>
|
1456 |
+
© 2011–2016 <a href="http://www.getharvest.com/">Harvest</a>. Chosen is licensed under the <a href="https://github.com/harvesthq/chosen/blob/master/LICENSE.md">MIT license</a>.
|
1457 |
+
</footer>
|
1458 |
+
|
1459 |
+
</div>
|
1460 |
+
</div>
|
1461 |
+
<script src="docsupport/prototype-1.7.0.0.js" type="text/javascript"></script>
|
1462 |
+
<script src="chosen.proto.js" type="text/javascript"></script>
|
1463 |
+
<script src="docsupport/prism.js" type="text/javascript" charset="utf-8"></script>
|
1464 |
+
<script src="docsupport/init.proto.js" type="text/javascript" charset="utf-8"></script>
|
1465 |
+
<div class="oss-bar">
|
1466 |
+
<ul>
|
1467 |
+
<li><a class="fork" href="https://github.com/harvesthq/chosen">Fork on Github</a></li>
|
1468 |
+
<li><a class="harvest" href="http://www.getharvest.com/">Built by Harvest</a></li>
|
1469 |
+
</ul>
|
1470 |
+
</div>
|
1471 |
+
</body>
|
1472 |
+
</html>
|
common/libs/chosen-v1.8.3/options.html
ADDED
@@ -0,0 +1,311 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!doctype html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="utf-8">
|
5 |
+
<title>Chosen: A jQuery Plugin by Harvest to Tame Unwieldy Select Boxes</title>
|
6 |
+
<link rel="stylesheet" href="docsupport/style.css">
|
7 |
+
<link rel="stylesheet" href="docsupport/prism.css">
|
8 |
+
<link rel="stylesheet" href="chosen.css">
|
9 |
+
<style type="text/css" media="all">
|
10 |
+
/* fix rtl for demo */
|
11 |
+
.chosen-rtl .chosen-drop { left: -9000px; }
|
12 |
+
</style>
|
13 |
+
</head>
|
14 |
+
<body>
|
15 |
+
<div id="container">
|
16 |
+
<div id="content">
|
17 |
+
<header>
|
18 |
+
<h1>Chosen <small>(<span id="latest-version">v1.8.3</span>)</small></h1>
|
19 |
+
</header>
|
20 |
+
<p>Chosen has a number of options and attributes that allow you to have full control of your select boxes.</p>
|
21 |
+
|
22 |
+
<h2><a name="options" class="anchor" href="#options">Options</a></h2>
|
23 |
+
<p>The following options are available to pass into Chosen on instantiation.</p>
|
24 |
+
|
25 |
+
<h3>Example:</h3>
|
26 |
+
<pre>
|
27 |
+
<code class="language-javascript">$(".my_select_box").chosen({
|
28 |
+
disable_search_threshold: 10,
|
29 |
+
no_results_text: "Oops, nothing found!",
|
30 |
+
width: "95%"
|
31 |
+
});</code>
|
32 |
+
</pre>
|
33 |
+
|
34 |
+
<table class="docs-table">
|
35 |
+
<tr>
|
36 |
+
<th>Option</th><th>Default</th><th>Description</th>
|
37 |
+
</tr>
|
38 |
+
<tr>
|
39 |
+
<td>allow_single_deselect</td>
|
40 |
+
<td>false</td>
|
41 |
+
<td>When set to <code class="language-javascript">true</code> on a single select, Chosen adds a UI element which selects the first element (if it is blank).</td>
|
42 |
+
</tr>
|
43 |
+
<tr>
|
44 |
+
<td>disable_search</td>
|
45 |
+
<td>false</td>
|
46 |
+
<td>When set to <code class="language-javascript">true</code>, Chosen will not display the search field (single selects only).</td>
|
47 |
+
</tr>
|
48 |
+
<tr>
|
49 |
+
<td>disable_search_threshold</td>
|
50 |
+
<td>0</td>
|
51 |
+
<td>Hide the search input on single selects if there are <i>n</i> or fewer options.</td>
|
52 |
+
</tr>
|
53 |
+
<tr>
|
54 |
+
<td>enable_split_word_search</td>
|
55 |
+
<td>true</td>
|
56 |
+
<td>By default, searching will match on any word within an option tag. Set this option to <code class="language-javascript">false</code> if you want to only match on the entire text of an option tag.</td>
|
57 |
+
</tr>
|
58 |
+
<tr>
|
59 |
+
<td>inherit_select_classes</td>
|
60 |
+
<td>false</td>
|
61 |
+
<td>When set to <code class="language-javascript">true</code>, Chosen will grab any classes on the original select field and add them to Chosen’s container div.</td>
|
62 |
+
</tr>
|
63 |
+
<tr>
|
64 |
+
<td>max_selected_options</td>
|
65 |
+
<td>Infinity</td>
|
66 |
+
<td>Limits how many options the user can select. When the limit is reached, the <code class="language-javascript">chosen:maxselected</code> event is triggered.</td>
|
67 |
+
</tr>
|
68 |
+
<tr>
|
69 |
+
<td>no_results_text</td>
|
70 |
+
<td>"No results match"</td>
|
71 |
+
<td>The text to be displayed when no matching results are found. The current search is shown at the end of the text (<i>e.g.</i>,
|
72 |
+
No results match "Bad Search").</td>
|
73 |
+
</tr>
|
74 |
+
<tr>
|
75 |
+
<td>placeholder_text_multiple</td>
|
76 |
+
<td>"Select Some Options"</td>
|
77 |
+
<td>The text to be displayed as a placeholder when no options are selected for a multiple select.</td>
|
78 |
+
</tr>
|
79 |
+
<tr>
|
80 |
+
<td>placeholder_text_single</td>
|
81 |
+
<td>"Select an Option"</td>
|
82 |
+
<td>The text to be displayed as a placeholder when no options are selected for a single select.</td>
|
83 |
+
</tr>
|
84 |
+
<tr>
|
85 |
+
<td>search_contains</td>
|
86 |
+
<td>false</td>
|
87 |
+
<td>By default, Chosen’s search matches starting at the beginning of a word. Setting this option to <code class="language-javascript">true</code> allows matches starting from anywhere within a word. This is especially useful for options that include a lot of special characters or phrases in ()s and []s.</td>
|
88 |
+
</tr>
|
89 |
+
<tr>
|
90 |
+
<td>group_search</td>
|
91 |
+
<td>true</td>
|
92 |
+
<td>By default, Chosen will search group labels as well as options, and filter to show all options below matching groups. Set this to <code class="language-javascript">false</code> to search only in the options.</td>
|
93 |
+
</tr>
|
94 |
+
<tr>
|
95 |
+
<td>single_backstroke_delete</td>
|
96 |
+
<td>true</td>
|
97 |
+
<td>By default, pressing delete/backspace on multiple selects will remove a selected choice. When <code class="language-javascript">false</code>, pressing delete/backspace will highlight the last choice, and a second press deselects it.</td>
|
98 |
+
</tr>
|
99 |
+
<tr>
|
100 |
+
<td>width</td>
|
101 |
+
<td>Original select width.</td>
|
102 |
+
<td>The width of the Chosen select box. By default, Chosen attempts to match the width of the select box you are replacing. If your select is hidden when Chosen is instantiated, you must specify a width or the select will show up with a width of 0.</td>
|
103 |
+
</tr>
|
104 |
+
<tr>
|
105 |
+
<td>display_disabled_options</td>
|
106 |
+
<td>true</td>
|
107 |
+
<td>By default, Chosen includes disabled options in search results with a special styling. Setting this option to false will hide disabled results and exclude them from searches.</td>
|
108 |
+
</tr>
|
109 |
+
<tr>
|
110 |
+
<td>display_selected_options</td>
|
111 |
+
<td>true</td>
|
112 |
+
<td>
|
113 |
+
<p>By default, Chosen includes selected options in search results with a special styling. Setting this option to false will hide selected results and exclude them from searches.</p>
|
114 |
+
<p><strong>Note:</strong> this is for multiple selects only. In single selects, the selected result will always be displayed.</p>
|
115 |
+
</td>
|
116 |
+
</tr>
|
117 |
+
<tr>
|
118 |
+
<td>include_group_label_in_selected</td>
|
119 |
+
<td>false</td>
|
120 |
+
<td>
|
121 |
+
<p>By default, Chosen only shows the text of a selected option. Setting this option to <code class="language-javascript">true</code> will show the text and group (if any) of the selected option.</p>
|
122 |
+
</td>
|
123 |
+
</tr>
|
124 |
+
<tr>
|
125 |
+
<td>max_shown_results</td>
|
126 |
+
<td>Infinity</td>
|
127 |
+
<td>
|
128 |
+
<p>Only show the first (n) matching options in the results. This can be used to increase performance for selects with very many options.</p>
|
129 |
+
</td>
|
130 |
+
</tr>
|
131 |
+
<tr>
|
132 |
+
<td>case_sensitive_search</td>
|
133 |
+
<td>false</td>
|
134 |
+
<td>
|
135 |
+
<p>By default, Chosen's search is case-insensitive. Setting this option to <code class="language-javascript">true</code> makes the search case-sensitive.</p>
|
136 |
+
</td>
|
137 |
+
</tr>
|
138 |
+
<tr>
|
139 |
+
<td>hide_results_on_select</td>
|
140 |
+
<td>true</td>
|
141 |
+
<td>
|
142 |
+
<p>By default, Chosen's results are hidden after a option is selected. Setting this option to <code class="language-javascript">false</code> will keep the results open after selection. This only applies to multiple selects.</p>
|
143 |
+
</td>
|
144 |
+
</tr>
|
145 |
+
<tr>
|
146 |
+
<td>rtl</td>
|
147 |
+
<td>false</td>
|
148 |
+
<td>
|
149 |
+
<p>Chosen supports right-to-left text in select boxes. Set this option to <code class="language-javascript">true</code> to support right-to-left text options.</p>
|
150 |
+
<p><strong>Note:</strong> <a href="#classes">the <code class="language-javascript">chosen-rtl</code> class</a> on the select has precedence over this option. However, the classname approach is deprecated and will be removed in future versions of Chosen.</p>
|
151 |
+
</td>
|
152 |
+
</tr>
|
153 |
+
</table>
|
154 |
+
|
155 |
+
<h2><a name="attributes" class="anchor" href="#attributes">Attributes</a></h2>
|
156 |
+
<p>Certain attributes placed on the select tag or its options can be used to configure Chosen.</p>
|
157 |
+
|
158 |
+
<h3>Example:</h3>
|
159 |
+
|
160 |
+
<pre>
|
161 |
+
<code class="language-markup"><select class="my_select_box" data-placeholder="Select Your Options">
|
162 |
+
<option value="1">Option 1</option>
|
163 |
+
<option value="2" selected>Option 2</option>
|
164 |
+
<option value="3" disabled>Option 3</option>
|
165 |
+
</select></code>
|
166 |
+
</pre>
|
167 |
+
|
168 |
+
<table class="docs-table">
|
169 |
+
<tr>
|
170 |
+
<th>Attribute</th><th>Description</th>
|
171 |
+
</tr>
|
172 |
+
<tr>
|
173 |
+
<td>data-placeholder</td>
|
174 |
+
<td>
|
175 |
+
<p>The text to be displayed as a placeholder when no options are selected for a select. Defaults to "Select an Option" for single selects or "Select Some Options" for multiple selects.</p>
|
176 |
+
<p><strong>Note:</strong>This attribute overrides anything set in the <code class="language-javascript">placeholder_text_multiple</code> or <code class="language-javascript">placeholder_text_single</code> options.</p>
|
177 |
+
</td>
|
178 |
+
</tr>
|
179 |
+
<tr>
|
180 |
+
<td>multiple</td>
|
181 |
+
<td>The attribute <code class="language-html">multiple</code> on your select box dictates whether Chosen will render a multiple or single select.</td>
|
182 |
+
</tr>
|
183 |
+
<tr>
|
184 |
+
<td>selected, disabled</td>
|
185 |
+
<td>Chosen automatically highlights selected options and disables disabled options.</td>
|
186 |
+
</tr>
|
187 |
+
</table>
|
188 |
+
|
189 |
+
<h2><a name="classes" class="anchor" href="#classes">Classes</a></h2>
|
190 |
+
<p>Classes placed on the select tag can be used to configure Chosen.</p>
|
191 |
+
|
192 |
+
<h3>Example:</h3>
|
193 |
+
|
194 |
+
<pre>
|
195 |
+
<code class="language-markup"><select class="my_select_box chosen-rtl">
|
196 |
+
<option value="1">Option 1</option>
|
197 |
+
<option value="2">Option 2</option>
|
198 |
+
<option value="3">Option 3</option>
|
199 |
+
</select></code>
|
200 |
+
</pre>
|
201 |
+
|
202 |
+
<table class="docs-table">
|
203 |
+
<tr>
|
204 |
+
<th>Classname</th>
|
205 |
+
<th>Description</th>
|
206 |
+
</tr>
|
207 |
+
<tr>
|
208 |
+
<td>chosen-rtl</td>
|
209 |
+
<td>
|
210 |
+
<p>Chosen supports right-to-left text in select boxes. Add the class <code class="language-html">chosen-rtl</code> to your select tag to support right-to-left text options.</p>
|
211 |
+
<p><strong>Note:</strong> The <code class="language-html">chosen-rtl</code> class will pass through to the Chosen select even when the <code class="language-javascript">inherit_select_classes</code> option is set to <code class="language-javascript">false</code>.</p>
|
212 |
+
<p><strong>Note:</strong> This is deprecated in favor of using the <code class="language-javascript">rtl: true</code> option (see the <a href="#options">Options section</a>).</p>
|
213 |
+
</td>
|
214 |
+
</tr>
|
215 |
+
</table>
|
216 |
+
|
217 |
+
<h2><a name="triggered-events" class="anchor" href="#triggered-events">Triggered Events</a></h2>
|
218 |
+
<p>Chosen triggers a number of standard and custom events on the original select field.</p>
|
219 |
+
|
220 |
+
<h3>Example:</h3>
|
221 |
+
|
222 |
+
<pre>
|
223 |
+
<code class="language-javascript">$('.my_select_box').on('change', function(evt, params) {
|
224 |
+
do_something(evt, params);
|
225 |
+
});</code>
|
226 |
+
</pre>
|
227 |
+
|
228 |
+
<table class="docs-table">
|
229 |
+
<tr>
|
230 |
+
<th>Event</th><th>Description</th>
|
231 |
+
</tr>
|
232 |
+
<tr>
|
233 |
+
<td>change</td>
|
234 |
+
<td>
|
235 |
+
<p>Chosen triggers the standard DOM event whenever a selection is made (it also sends a <code class="language-javascript">selected</code> or <code class="language-javascript">deselected</code> parameter that tells you which option was changed).</p>
|
236 |
+
<p><strong>Note:</strong> The selected and deselected parameters are not available for Prototype.</p>
|
237 |
+
</td>
|
238 |
+
</tr>
|
239 |
+
<tr>
|
240 |
+
<td>chosen:ready</td>
|
241 |
+
<td>Triggered after Chosen has been fully instantiated.</td>
|
242 |
+
</tr>
|
243 |
+
<tr>
|
244 |
+
<td>chosen:maxselected</td>
|
245 |
+
<td>Triggered if <code class="language-javascript">max_selected_options</code> is set and that total is broken.</td>
|
246 |
+
</tr>
|
247 |
+
<tr>
|
248 |
+
<td>chosen:showing_dropdown</td>
|
249 |
+
<td>Triggered when Chosen’s dropdown is opened.</td>
|
250 |
+
</tr>
|
251 |
+
<tr>
|
252 |
+
<td>chosen:hiding_dropdown</td>
|
253 |
+
<td>Triggered when Chosen’s dropdown is closed.</td>
|
254 |
+
</tr>
|
255 |
+
<tr>
|
256 |
+
<td>chosen:no_results</td>
|
257 |
+
<td>Triggered when a search returns no matching results.</td>
|
258 |
+
</tr>
|
259 |
+
</table>
|
260 |
+
|
261 |
+
<p>
|
262 |
+
<strong>Note:</strong> all custom Chosen events (those that begin with <code class="language-javascript">chosen:</code>) also include the <code class="language-javascript">chosen</code> object as a parameter.
|
263 |
+
</p>
|
264 |
+
|
265 |
+
<h2><a name="triggerable-events" class="anchor" href="#triggerable-events">Triggerable Events</a></h2>
|
266 |
+
<p>You can trigger several events on the original select field to invoke a behavior in Chosen.</p>
|
267 |
+
|
268 |
+
<h3>Example:</h3>
|
269 |
+
|
270 |
+
<pre>
|
271 |
+
<code class="language-javascript">// tell Chosen that a select has changed
|
272 |
+
$('.my_select_box').trigger('chosen:updated');</code>
|
273 |
+
</pre>
|
274 |
+
|
275 |
+
<table class="docs-table">
|
276 |
+
<tr>
|
277 |
+
<th>Event</th><th>Description</th>
|
278 |
+
</tr>
|
279 |
+
<tr>
|
280 |
+
<td>chosen:updated</td>
|
281 |
+
<td>This event should be triggered whenever Chosen’s underlying select element changes (such as a change in selected options).</td>
|
282 |
+
</tr>
|
283 |
+
<tr>
|
284 |
+
<td>chosen:activate</td>
|
285 |
+
<td>This is the equivalant of focusing a standard HTML select field. When activated, Chosen will capure keypress events as if you had clicked the field directly.</td>
|
286 |
+
</tr>
|
287 |
+
<tr>
|
288 |
+
<td>chosen:open</td>
|
289 |
+
<td>This event activates Chosen and also displays the search results.</td>
|
290 |
+
</tr>
|
291 |
+
<tr>
|
292 |
+
<td>chosen:close</td>
|
293 |
+
<td>This event deactivates Chosen and hides the search results.</td>
|
294 |
+
</tr>
|
295 |
+
</table>
|
296 |
+
|
297 |
+
<footer>
|
298 |
+
© 2011–2016 <a href="http://www.getharvest.com/">Harvest</a>. Chosen is licensed under the <a href="https://github.com/harvesthq/chosen/blob/master/LICENSE.md">MIT license</a>.
|
299 |
+
</footer>
|
300 |
+
|
301 |
+
</div>
|
302 |
+
</div>
|
303 |
+
<div class="oss-bar">
|
304 |
+
<ul>
|
305 |
+
<li><a class="fork" href="https://github.com/harvesthq/chosen">Fork on Github</a></li>
|
306 |
+
<li><a class="harvest" href="http://www.getharvest.com/">Built by Harvest</a></li>
|
307 |
+
</ul>
|
308 |
+
</div>
|
309 |
+
<script src="docsupport/prism.js" type="text/javascript" charset="utf-8"></script>
|
310 |
+
</body>
|
311 |
+
</html>
|
composer.json
CHANGED
@@ -16,7 +16,6 @@
|
|
16 |
"require": {
|
17 |
"php": ">=5.6.20",
|
18 |
"pimple/pimple": "3.2.3.*",
|
19 |
-
"publishpress/wordpress-reviews": "^1.1",
|
20 |
"publishpress/wordpress-version-notices": "dev-master"
|
21 |
}
|
22 |
}
|
16 |
"require": {
|
17 |
"php": ">=5.6.20",
|
18 |
"pimple/pimple": "3.2.3.*",
|
|
|
19 |
"publishpress/wordpress-version-notices": "dev-master"
|
20 |
}
|
21 |
}
|
framework/lib/formating.php
CHANGED
@@ -53,7 +53,7 @@ function ak_admin_error( $message )
|
|
53 |
{
|
54 |
if ( is_admin() ) {
|
55 |
echo '<div id="error" class="error"><p><strong>' . $message . '</strong></p></div>';
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
}
|
53 |
{
|
54 |
if ( is_admin() ) {
|
55 |
echo '<div id="error" class="error"><p><strong>' . $message . '</strong></p></div>';
|
56 |
+
}
|
57 |
+
|
58 |
+
do_action('pp_capabilities_error');
|
59 |
}
|
includes-core/CoreAdmin.php
CHANGED
@@ -30,10 +30,6 @@ class CoreAdmin {
|
|
30 |
}
|
31 |
|
32 |
add_action('pp-capabilities-admin-submenus', [$this, 'actCapabilitiesSubmenus']);
|
33 |
-
|
34 |
-
//Editor feature metaboxes promo
|
35 |
-
add_action('pp_capabilities_features_gutenberg_after_table_tr', [$this, 'metaboxesPromo']);
|
36 |
-
add_action('pp_capabilities_features_classic_after_table_tr', [$this, 'metaboxesPromo']);
|
37 |
}
|
38 |
|
39 |
function setUpgradeMenuLink() {
|
@@ -67,9 +63,4 @@ class CoreAdmin {
|
|
67 |
wp_enqueue_style('pp-capabilities-admin-core', plugin_dir_url(CME_FILE) . 'includes-core/admin-core.css', [], PUBLISHPRESS_CAPS_VERSION, 'all');
|
68 |
include (dirname(__FILE__) . '/nav-menus-promo.php');
|
69 |
}
|
70 |
-
|
71 |
-
function metaboxesPromo(){
|
72 |
-
wp_enqueue_style('pp-capabilities-admin-core', plugin_dir_url(CME_FILE) . 'includes-core/admin-core.css', [], PUBLISHPRESS_CAPS_VERSION, 'all');
|
73 |
-
include (dirname(__FILE__) . '/editor-features-promo.php');
|
74 |
-
}
|
75 |
}
|
30 |
}
|
31 |
|
32 |
add_action('pp-capabilities-admin-submenus', [$this, 'actCapabilitiesSubmenus']);
|
|
|
|
|
|
|
|
|
33 |
}
|
34 |
|
35 |
function setUpgradeMenuLink() {
|
63 |
wp_enqueue_style('pp-capabilities-admin-core', plugin_dir_url(CME_FILE) . 'includes-core/admin-core.css', [], PUBLISHPRESS_CAPS_VERSION, 'all');
|
64 |
include (dirname(__FILE__) . '/nav-menus-promo.php');
|
65 |
}
|
|
|
|
|
|
|
|
|
|
|
66 |
}
|
includes-core/admin-core.css
CHANGED
@@ -95,61 +95,6 @@ div.pp-capability-menus-wrapper-promo select.ppc-nav-menu-role {
|
|
95 |
height: 370px;
|
96 |
}
|
97 |
|
98 |
-
tr.pp-promo-blur {
|
99 |
-
filter: blur(1.5px);
|
100 |
-
}
|
101 |
-
|
102 |
-
.pp-promo-overlay-row input[type=checkbox], input[type=radio] {
|
103 |
-
cursor: not-allowed !important;
|
104 |
-
}
|
105 |
-
|
106 |
-
.pp-promo-overlay-row .ppc-custom-features-delete {
|
107 |
-
color: red;
|
108 |
-
}
|
109 |
-
|
110 |
-
.pp-promo-overlay-row .pp-promo-upgrade-notice {
|
111 |
-
position: absolute;
|
112 |
-
margin-top: -100px;
|
113 |
-
left: calc(50% - 225px);
|
114 |
-
text-align: center;
|
115 |
-
background: #655897;
|
116 |
-
padding: 20px 20px 35px;
|
117 |
-
border-radius: 6px;
|
118 |
-
width: 450px;
|
119 |
-
box-sizing: border-box;
|
120 |
-
box-shadow: 0 0 25px #ccc;
|
121 |
-
z-index: 999;
|
122 |
-
}
|
123 |
-
|
124 |
-
.pp-promo-overlay-row .pp-promo-upgrade-notice p {
|
125 |
-
line-height: 1.4em;
|
126 |
-
font-size: 16px;
|
127 |
-
margin-bottom: 20px !important;
|
128 |
-
margin-top: 0 !important;
|
129 |
-
color: #fff;
|
130 |
-
padding: 0;
|
131 |
-
}
|
132 |
-
|
133 |
-
.pp-promo-overlay-row .pp-promo-upgrade-notice p:last-of-type {
|
134 |
-
margin-bottom: 0 !important;
|
135 |
-
}
|
136 |
-
|
137 |
-
.pp-promo-overlay-row .pp-promo-upgrade-notice a {
|
138 |
-
font-size: 17px;
|
139 |
-
background: #FCB223;
|
140 |
-
color: #000;
|
141 |
-
font-weight: normal;
|
142 |
-
text-decoration: none;
|
143 |
-
padding: 9px 12px;
|
144 |
-
-webkit-border-radius: 4px;
|
145 |
-
-moz-border-radius: 4px;
|
146 |
-
border-radius: 4px;
|
147 |
-
box-sizing: border-box;
|
148 |
-
border: 1px solid #fca871;
|
149 |
-
break-inside: avoid;
|
150 |
-
white-space: nowrap;
|
151 |
-
}
|
152 |
-
|
153 |
@media (max-width: 979px) {
|
154 |
|
155 |
#pp-capability-menu-wrapper div.pp-capability-menus-promo .pp-capability-menus-promo-inner img.pp-capability-mobile {
|
@@ -169,12 +114,4 @@ filter: blur(1.5px);
|
|
169 |
padding: 20px 20px 35px;
|
170 |
width: 300px;
|
171 |
}
|
172 |
-
|
173 |
-
.pp-promo-overlay-row .pp-promo-upgrade-notice {
|
174 |
-
left: 0;
|
175 |
-
padding: 20px 20px 35px;
|
176 |
-
width: fit-content;
|
177 |
-
margin-left: 10px;
|
178 |
-
margin-right: 10px;
|
179 |
-
}
|
180 |
}
|
95 |
height: 370px;
|
96 |
}
|
97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
@media (max-width: 979px) {
|
99 |
|
100 |
#pp-capability-menu-wrapper div.pp-capability-menus-promo .pp-capability-menus-promo-inner img.pp-capability-mobile {
|
114 |
padding: 20px 20px 35px;
|
115 |
width: 300px;
|
116 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
}
|
includes-core/editor-features-promo.php
DELETED
@@ -1,147 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Capability Manager Editor Features Promo.
|
4 |
-
*
|
5 |
-
* Copyright 2020, PublishPress <help@publishpress.com>
|
6 |
-
*
|
7 |
-
* This program is free software; you can redistribute it and/or
|
8 |
-
* modify it under the terms of the GNU General Public License
|
9 |
-
* version 2 as published by the Free Software Foundation.
|
10 |
-
*
|
11 |
-
* This program is distributed in the hope that it will be useful,
|
12 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
-
* GNU General Public License for more details.
|
15 |
-
*
|
16 |
-
* You should have received a copy of the GNU General Public License
|
17 |
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18 |
-
*/
|
19 |
-
|
20 |
-
?>
|
21 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
22 |
-
|
23 |
-
<td colspan="3">
|
24 |
-
<h4 class="ppc-menu-row-section"><?php _e('Metaboxes', 'capsman-enhanced'); ?></h4>
|
25 |
-
</td>
|
26 |
-
</tr>
|
27 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
28 |
-
|
29 |
-
<td class="menu-column ppc-menu-item">
|
30 |
-
|
31 |
-
<span class="gutenberg menu-item-link">
|
32 |
-
<strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Checklist', 'capsman-enhanced'); ?> </strong></span>
|
33 |
-
</td>
|
34 |
-
|
35 |
-
<td class="restrict-column ppc-menu-checkbox">
|
36 |
-
<input type="checkbox">
|
37 |
-
</td>
|
38 |
-
<td class="restrict-column ppc-menu-checkbox">
|
39 |
-
<input type="checkbox">
|
40 |
-
</td>
|
41 |
-
</tr>
|
42 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
43 |
-
<td class="menu-column ppc-menu-item">
|
44 |
-
<span class="gutenberg menu-item-link restricted">
|
45 |
-
<strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Editorial Comments', 'capsman-enhanced'); ?></strong></span>
|
46 |
-
</td>
|
47 |
-
|
48 |
-
<td class="restrict-column ppc-menu-checkbox">
|
49 |
-
<input type="checkbox">
|
50 |
-
</td>
|
51 |
-
<td class="restrict-column ppc-menu-checkbox">
|
52 |
-
<input type="checkbox">
|
53 |
-
</td>
|
54 |
-
</tr>
|
55 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
56 |
-
<td class="menu-column ppc-menu-item">
|
57 |
-
<span class="gutenberg menu-item-link">
|
58 |
-
<strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Notifications', 'capsman-enhanced'); ?></strong></span>
|
59 |
-
</td>
|
60 |
-
|
61 |
-
<td class="restrict-column ppc-menu-checkbox">
|
62 |
-
<input type="checkbox">
|
63 |
-
</td>
|
64 |
-
<td class="restrict-column ppc-menu-checkbox">
|
65 |
-
<input type="checkbox">
|
66 |
-
</td>
|
67 |
-
</tr>
|
68 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
69 |
-
<td class="menu-column ppc-menu-item">
|
70 |
-
<span class="gutenberg menu-item-link">
|
71 |
-
<strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('TaxoPress - Settings', 'capsman-enhanced'); ?></strong></span>
|
72 |
-
</td>
|
73 |
-
|
74 |
-
<td class="restrict-column ppc-menu-checkbox">
|
75 |
-
<input type="checkbox">
|
76 |
-
</td>
|
77 |
-
<td class="restrict-column ppc-menu-checkbox">
|
78 |
-
<input type="checkbox">
|
79 |
-
</td>
|
80 |
-
</tr>
|
81 |
-
|
82 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row">
|
83 |
-
<td colspan="3">
|
84 |
-
<div class="pp-promo-upgrade-notice">
|
85 |
-
<p>
|
86 |
-
<?php _e('You can hide plugin metaboxes. You can also hide specific items by entering their CSS class or ID. This feature is available in PublishPress Capabilities Pro.',
|
87 |
-
'capsman-enhanced'); ?>
|
88 |
-
</p>
|
89 |
-
<p>
|
90 |
-
<a href="https://publishpress.com/links/capabilities-banner" target="_blank">
|
91 |
-
<?php _e('Upgrade to Pro', 'capsman-enhanced'); ?>
|
92 |
-
</a>
|
93 |
-
</p>
|
94 |
-
</div>
|
95 |
-
</td>
|
96 |
-
</tr>
|
97 |
-
|
98 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
99 |
-
|
100 |
-
<td colspan="3">
|
101 |
-
<h4 class="ppc-menu-row-section"><?php _e('Custom Items', 'capsman-enhanced'); ?></h4>
|
102 |
-
</td>
|
103 |
-
</tr>
|
104 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
105 |
-
<td class="menu-column ppc-menu-item">
|
106 |
-
<span class="gutenberg menu-item-link">
|
107 |
-
<strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Custom item one', 'capsman-enhanced'); ?> <small>(.custom-plugin-item, #custom-plugin-item)</small> <span
|
108 |
-
class="ppc-custom-features-delete"><small>(<?php _e('Delete', 'capsman-enhanced'); ?>)</small></span></strong></span>
|
109 |
-
</td>
|
110 |
-
|
111 |
-
<td class="restrict-column ppc-menu-checkbox">
|
112 |
-
<input type="checkbox">
|
113 |
-
</td>
|
114 |
-
<td class="restrict-column ppc-menu-checkbox">
|
115 |
-
<input type="checkbox">
|
116 |
-
</td>
|
117 |
-
</tr>
|
118 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
119 |
-
<td class="menu-column ppc-menu-item">
|
120 |
-
<span class="gutenberg menu-item-link restricted">
|
121 |
-
<strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Permalink: Descriptive Caption', 'capsman-enhanced'); ?> <small>(.editor-post-link p)</small> <span
|
122 |
-
class="ppc-custom-features-delete"><small>(<?php _e('Delete', 'capsman-enhanced'); ?>)</small></span> </strong></span>
|
123 |
-
</td>
|
124 |
-
|
125 |
-
<td class="restrict-column ppc-menu-checkbox">
|
126 |
-
<input type="checkbox">
|
127 |
-
</td>
|
128 |
-
<td class="restrict-column ppc-menu-checkbox">
|
129 |
-
<input type="checkbox">
|
130 |
-
</td>
|
131 |
-
</tr>
|
132 |
-
<tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
|
133 |
-
<td class="menu-column ppc-menu-item">
|
134 |
-
<span class="gutenberg menu-item-link">
|
135 |
-
<strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Page Attributes: Order', 'capsman-enhanced'); ?> <small>(.editor-page-attributes__order)</small> <span class="ppc-custom-features-delete"><small>(<?php _e('Delete', 'capsman-enhanced'); ?>)</small></span> </strong></span>
|
136 |
-
</td>
|
137 |
-
|
138 |
-
<td class="restrict-column ppc-menu-checkbox">
|
139 |
-
<input type="checkbox">
|
140 |
-
</td>
|
141 |
-
<td class="restrict-column ppc-menu-checkbox">
|
142 |
-
<input type="checkbox">
|
143 |
-
</td>
|
144 |
-
</tr>
|
145 |
-
|
146 |
-
|
147 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes-core/pp-capabilities-permissions.php
DELETED
@@ -1,445 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Original Author: danieliser
|
4 |
-
* Original Author URL: https://danieliser.com
|
5 |
-
*/
|
6 |
-
|
7 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
-
exit;
|
9 |
-
}
|
10 |
-
|
11 |
-
/**
|
12 |
-
* Class Ppc_Install_Permissions
|
13 |
-
*
|
14 |
-
* This class adds a message inviting to install Permissions
|
15 |
-
*/
|
16 |
-
if( !class_exists('Ppc_Install_Permissions') ) {
|
17 |
-
class Ppc_Install_Permissions {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Tracking API Endpoint.
|
21 |
-
*
|
22 |
-
* @var string
|
23 |
-
*/
|
24 |
-
public static $api_url = '';
|
25 |
-
|
26 |
-
/**
|
27 |
-
*
|
28 |
-
*/
|
29 |
-
public static function init() {
|
30 |
-
if (!isset( $_GET['pp-after-click'])) {
|
31 |
-
self::hooks();
|
32 |
-
|
33 |
-
add_action( 'wp_ajax_ppc_permissions_action', array( __CLASS__, 'ajax_handler' ) );
|
34 |
-
}
|
35 |
-
}
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Hook into relevant WP actions.
|
39 |
-
*/
|
40 |
-
public static function hooks() {
|
41 |
-
if ( is_admin() && current_user_can( 'edit_posts' ) ) {
|
42 |
-
self::installed_on();
|
43 |
-
add_action( 'admin_notices', array( __CLASS__, 'admin_notices' ) );
|
44 |
-
add_action( 'network_admin_notices', array( __CLASS__, 'admin_notices' ) );
|
45 |
-
add_action( 'user_admin_notices', array( __CLASS__, 'admin_notices' ) );
|
46 |
-
}
|
47 |
-
}
|
48 |
-
|
49 |
-
/**
|
50 |
-
* Get the install date for comparisons. Sets the date to now if none is found.
|
51 |
-
*
|
52 |
-
* @return false|string
|
53 |
-
*/
|
54 |
-
public static function installed_on() {
|
55 |
-
$installed_on = get_option( 'ppc_permissions_installed_on', false );
|
56 |
-
|
57 |
-
if ( ! $installed_on ) {
|
58 |
-
$installed_on = current_time( 'mysql' );
|
59 |
-
update_option( 'ppc_permissions_installed_on', $installed_on );
|
60 |
-
}
|
61 |
-
|
62 |
-
return $installed_on;
|
63 |
-
}
|
64 |
-
|
65 |
-
/**
|
66 |
-
*
|
67 |
-
*/
|
68 |
-
public static function ajax_handler() {
|
69 |
-
$args = wp_parse_args( $_REQUEST, array(
|
70 |
-
'group' => self::get_trigger_group(),
|
71 |
-
'code' => self::get_trigger_code(),
|
72 |
-
'pri' => self::get_current_trigger( 'pri' ),
|
73 |
-
'reason' => 'maybe_later',
|
74 |
-
) );
|
75 |
-
|
76 |
-
if ( ! wp_verify_nonce( $_REQUEST['nonce'], 'ppc_permissions_action' ) ) {
|
77 |
-
wp_send_json_error();
|
78 |
-
}
|
79 |
-
|
80 |
-
try {
|
81 |
-
$user_id = get_current_user_id();
|
82 |
-
|
83 |
-
$dismissed_triggers = self::dismissed_triggers();
|
84 |
-
$dismissed_triggers[ $args['group'] ] = $args['pri'];
|
85 |
-
update_user_meta( $user_id, '_ppc_permissions_dismissed_triggers', $dismissed_triggers );
|
86 |
-
update_user_meta( $user_id, '_ppc_permissions_last_dismissed', current_time( 'mysql' ) );
|
87 |
-
|
88 |
-
switch ( $args['reason'] ) {
|
89 |
-
case 'maybe_later':
|
90 |
-
update_user_meta( $user_id, '_ppc_permissions_last_dismissed', current_time( 'mysql' ) );
|
91 |
-
break;
|
92 |
-
case 'am_now':
|
93 |
-
case 'already_did':
|
94 |
-
self::already_did( true );
|
95 |
-
break;
|
96 |
-
}
|
97 |
-
|
98 |
-
wp_send_json_success();
|
99 |
-
|
100 |
-
} catch ( Exception $e ) {
|
101 |
-
wp_send_json_error( $e );
|
102 |
-
}
|
103 |
-
}
|
104 |
-
|
105 |
-
/**
|
106 |
-
* @return int|string
|
107 |
-
*/
|
108 |
-
public static function get_trigger_group() {
|
109 |
-
static $selected;
|
110 |
-
|
111 |
-
if ( ! isset( $selected ) ) {
|
112 |
-
|
113 |
-
$dismissed_triggers = self::dismissed_triggers();
|
114 |
-
|
115 |
-
$triggers = self::triggers();
|
116 |
-
|
117 |
-
foreach ( $triggers as $g => $group ) {
|
118 |
-
foreach ( $group['triggers'] as $t => $trigger ) {
|
119 |
-
if ( ! in_array( false, $trigger['conditions'] ) && ( empty( $dismissed_triggers[ $g ] ) || $dismissed_triggers[ $g ] < $trigger['pri'] ) ) {
|
120 |
-
$selected = $g;
|
121 |
-
break;
|
122 |
-
}
|
123 |
-
}
|
124 |
-
|
125 |
-
if ( isset( $selected ) ) {
|
126 |
-
break;
|
127 |
-
}
|
128 |
-
}
|
129 |
-
}
|
130 |
-
|
131 |
-
return $selected;
|
132 |
-
}
|
133 |
-
|
134 |
-
/**
|
135 |
-
* @return int|string
|
136 |
-
*/
|
137 |
-
public static function get_trigger_code() {
|
138 |
-
static $selected;
|
139 |
-
|
140 |
-
if ( ! isset( $selected ) ) {
|
141 |
-
|
142 |
-
$dismissed_triggers = self::dismissed_triggers();
|
143 |
-
|
144 |
-
foreach ( self::triggers() as $g => $group ) {
|
145 |
-
foreach ( $group['triggers'] as $t => $trigger ) {
|
146 |
-
if ( ! in_array( false, $trigger['conditions'] ) && ( empty( $dismissed_triggers[ $g ] ) || $dismissed_triggers[ $g ] < $trigger['pri'] ) ) {
|
147 |
-
$selected = $t;
|
148 |
-
break;
|
149 |
-
}
|
150 |
-
}
|
151 |
-
|
152 |
-
if ( isset( $selected ) ) {
|
153 |
-
break;
|
154 |
-
}
|
155 |
-
}
|
156 |
-
}
|
157 |
-
|
158 |
-
return $selected;
|
159 |
-
}
|
160 |
-
|
161 |
-
/**
|
162 |
-
* @param null $key
|
163 |
-
*
|
164 |
-
* @return bool|mixed|void
|
165 |
-
*/
|
166 |
-
public static function get_current_trigger( $key = null ) {
|
167 |
-
$group = self::get_trigger_group();
|
168 |
-
$code = self::get_trigger_code();
|
169 |
-
|
170 |
-
if ( ! $group || ! $code ) {
|
171 |
-
return false;
|
172 |
-
}
|
173 |
-
|
174 |
-
$trigger = self::triggers( $group, $code );
|
175 |
-
|
176 |
-
if(empty($key)){
|
177 |
-
$return = $trigger;
|
178 |
-
}elseif(isset($trigger[$key])){
|
179 |
-
$return = $trigger[$key];
|
180 |
-
}else {
|
181 |
-
$return = false;
|
182 |
-
}
|
183 |
-
|
184 |
-
return $return;
|
185 |
-
}
|
186 |
-
|
187 |
-
/**
|
188 |
-
* Returns an array of dismissed trigger groups.
|
189 |
-
*
|
190 |
-
* Array contains the group key and highest priority trigger that has been shown previously for each group.
|
191 |
-
*
|
192 |
-
* $return = array(
|
193 |
-
* 'group1' => 20
|
194 |
-
* );
|
195 |
-
*
|
196 |
-
* @return array|mixed
|
197 |
-
*/
|
198 |
-
public static function dismissed_triggers() {
|
199 |
-
$user_id = get_current_user_id();
|
200 |
-
|
201 |
-
$dismissed_triggers = get_user_meta( $user_id, '_ppc_permissions_dismissed_triggers', true );
|
202 |
-
|
203 |
-
if ( ! $dismissed_triggers ) {
|
204 |
-
$dismissed_triggers = array();
|
205 |
-
}
|
206 |
-
|
207 |
-
return $dismissed_triggers;
|
208 |
-
}
|
209 |
-
|
210 |
-
/**
|
211 |
-
* Returns true if the user has opted to never see this again. Or sets the option.
|
212 |
-
*
|
213 |
-
* @param bool $set If set this will mark the user as having opted to never see this again.
|
214 |
-
*
|
215 |
-
* @return bool
|
216 |
-
*/
|
217 |
-
public static function already_did( $set = false ) {
|
218 |
-
$user_id = get_current_user_id();
|
219 |
-
|
220 |
-
if ( $set ) {
|
221 |
-
update_user_meta( $user_id, '_ppc_permissions_already_did', true );
|
222 |
-
|
223 |
-
return true;
|
224 |
-
}
|
225 |
-
|
226 |
-
return (bool) get_user_meta( $user_id, '_ppc_permissions_already_did', true );
|
227 |
-
}
|
228 |
-
|
229 |
-
/**
|
230 |
-
* Gets a list of triggers.
|
231 |
-
*
|
232 |
-
* @param null $group
|
233 |
-
* @param null $code
|
234 |
-
*
|
235 |
-
* @return bool|mixed|void
|
236 |
-
*/
|
237 |
-
public static function triggers( $group = null, $code = null ) {
|
238 |
-
static $triggers;
|
239 |
-
|
240 |
-
if ( ! isset( $triggers ) ) {
|
241 |
-
|
242 |
-
$time_message = __( 'Do you want to control permissions for specific posts and pages?', 'capsman-enhanced' );
|
243 |
-
|
244 |
-
$triggers = apply_filters( 'ppc_permissions_triggers', array(
|
245 |
-
'time_installed' => array(
|
246 |
-
'triggers' => array(
|
247 |
-
'one_week' => array(
|
248 |
-
'message' => sprintf( $time_message, __( '1 week', 'capsman-enhanced' ) ),
|
249 |
-
'conditions' => array(
|
250 |
-
strtotime( self::installed_on() . ' +1 week' ) < time(),
|
251 |
-
),
|
252 |
-
'link' => admin_url( 'plugin-install.php?s=publishpress+permissions+control+access&tab=search&type=term&pp-after-click' ),
|
253 |
-
'pri' => 10,
|
254 |
-
),
|
255 |
-
),
|
256 |
-
'pri' => 10,
|
257 |
-
),
|
258 |
-
) );
|
259 |
-
|
260 |
-
// Sort Groups
|
261 |
-
uasort( $triggers, array( __CLASS__, 'rsort_by_priority' ) );
|
262 |
-
|
263 |
-
// Sort each groups triggers.
|
264 |
-
foreach ( $triggers as $k => $v ) {
|
265 |
-
uasort( $triggers[ $k ]['triggers'], array( __CLASS__, 'rsort_by_priority' ) );
|
266 |
-
}
|
267 |
-
}
|
268 |
-
|
269 |
-
if ( isset( $group ) ) {
|
270 |
-
if ( ! isset( $triggers[ $group ] ) ) {
|
271 |
-
return false;
|
272 |
-
}
|
273 |
-
|
274 |
-
if (!isset($code)) {
|
275 |
-
$return = $triggers[$group];
|
276 |
-
} elseif (isset($triggers[$group]['triggers'][$code])) {
|
277 |
-
$return = $triggers[$group]['triggers'][$code];
|
278 |
-
} else {
|
279 |
-
$return = false;
|
280 |
-
}
|
281 |
-
|
282 |
-
return $return;
|
283 |
-
}
|
284 |
-
|
285 |
-
return $triggers;
|
286 |
-
}
|
287 |
-
|
288 |
-
/**
|
289 |
-
* Render admin notices if available.
|
290 |
-
*/
|
291 |
-
public static function admin_notices() {
|
292 |
-
if ( self::hide_notices() ) {
|
293 |
-
return;
|
294 |
-
}
|
295 |
-
|
296 |
-
$group = self::get_trigger_group();
|
297 |
-
$code = self::get_trigger_code();
|
298 |
-
$pri = self::get_current_trigger( 'pri' );
|
299 |
-
$tigger = self::get_current_trigger();
|
300 |
-
|
301 |
-
// Used to anonymously distinguish unique site+user combinations in terms of effectiveness of each trigger.
|
302 |
-
$uuid = wp_hash( home_url() . '-' . get_current_user_id() );
|
303 |
-
|
304 |
-
?>
|
305 |
-
|
306 |
-
<script type="text/javascript">
|
307 |
-
(function ($) {
|
308 |
-
var trigger = {
|
309 |
-
group: '<?php echo $group; ?>',
|
310 |
-
code: '<?php echo $code; ?>',
|
311 |
-
pri: '<?php echo $pri; ?>'
|
312 |
-
};
|
313 |
-
|
314 |
-
function dismiss(reason) {
|
315 |
-
$.ajax({
|
316 |
-
method: "POST",
|
317 |
-
dataType: "json",
|
318 |
-
url: ajaxurl,
|
319 |
-
data: {
|
320 |
-
action: 'ppc_permissions_action',
|
321 |
-
nonce: '<?php echo wp_create_nonce( 'ppc_permissions_action' ); ?>',
|
322 |
-
group: trigger.group,
|
323 |
-
code: trigger.code,
|
324 |
-
pri: trigger.pri,
|
325 |
-
reason: reason
|
326 |
-
}
|
327 |
-
});
|
328 |
-
|
329 |
-
<?php if ( ! empty( self::$api_url ) ) : ?>
|
330 |
-
$.ajax({
|
331 |
-
method: "POST",
|
332 |
-
dataType: "json",
|
333 |
-
url: '<?php echo self::$api_url; ?>',
|
334 |
-
data: {
|
335 |
-
trigger_group: trigger.group,
|
336 |
-
trigger_code: trigger.code,
|
337 |
-
reason: reason,
|
338 |
-
uuid: '<?php echo $uuid; ?>'
|
339 |
-
}
|
340 |
-
});
|
341 |
-
<?php endif; ?>
|
342 |
-
}
|
343 |
-
|
344 |
-
$(document)
|
345 |
-
.on('click', '.ppc-notice .ppc-dismiss', function (event) {
|
346 |
-
var $this = $(this),
|
347 |
-
reason = $this.data('reason'),
|
348 |
-
notice = $this.parents('.ppc-notice');
|
349 |
-
|
350 |
-
notice.fadeTo(100, 0, function () {
|
351 |
-
notice.slideUp(100, function () {
|
352 |
-
notice.remove();
|
353 |
-
});
|
354 |
-
});
|
355 |
-
|
356 |
-
dismiss(reason);
|
357 |
-
})
|
358 |
-
.ready(function () {
|
359 |
-
setTimeout(function () {
|
360 |
-
$('.ppc-notice button.notice-dismiss').click(function (event) {
|
361 |
-
dismiss('maybe_later');
|
362 |
-
});
|
363 |
-
}, 1000);
|
364 |
-
});
|
365 |
-
}(jQuery));
|
366 |
-
</script>
|
367 |
-
|
368 |
-
<div class="notice notice-success is-dismissible ppc-notice">
|
369 |
-
|
370 |
-
<p>
|
371 |
-
<?php echo $tigger['message']; ?>
|
372 |
-
</p>
|
373 |
-
<p>
|
374 |
-
<a class="button button-primary ppc-dismiss" target="_blank" href="<?php echo admin_url( 'plugin-install.php?s=publishpress+permissions+control+access&tab=search&type=term&pp-after-click' ) ?>" data-reason="am_now">
|
375 |
-
<strong><?php _e( 'Install PublishPress Permissions', 'capsman-enhanced' ); ?></strong>
|
376 |
-
</a>
|
377 |
-
</p>
|
378 |
-
|
379 |
-
</div>
|
380 |
-
|
381 |
-
<?php
|
382 |
-
}
|
383 |
-
|
384 |
-
/**
|
385 |
-
* Checks if notices should be shown.
|
386 |
-
*
|
387 |
-
* @return bool
|
388 |
-
*/
|
389 |
-
public static function hide_notices() {
|
390 |
-
$conditions = array(
|
391 |
-
self::already_did(),
|
392 |
-
self::last_dismissed() && strtotime( self::last_dismissed() . ' +2 weeks' ) > time(),
|
393 |
-
empty( self::get_trigger_code() ),
|
394 |
-
);
|
395 |
-
|
396 |
-
return in_array( true, $conditions );
|
397 |
-
}
|
398 |
-
|
399 |
-
/**
|
400 |
-
* Gets the last dismissed date.
|
401 |
-
*
|
402 |
-
* @return false|string
|
403 |
-
*/
|
404 |
-
public static function last_dismissed() {
|
405 |
-
$user_id = get_current_user_id();
|
406 |
-
|
407 |
-
return get_user_meta( $user_id, '_ppc_permissions_last_dismissed', true );
|
408 |
-
}
|
409 |
-
|
410 |
-
/**
|
411 |
-
* Sort array by priority value
|
412 |
-
*
|
413 |
-
* @param $a
|
414 |
-
* @param $b
|
415 |
-
*
|
416 |
-
* @return int
|
417 |
-
*/
|
418 |
-
public static function sort_by_priority( $a, $b ) {
|
419 |
-
if ( ! isset( $a['pri'] ) || ! isset( $b['pri'] ) || $a['pri'] === $b['pri'] ) {
|
420 |
-
return 0;
|
421 |
-
}
|
422 |
-
|
423 |
-
return ( $a['pri'] < $b['pri'] ) ? - 1 : 1;
|
424 |
-
}
|
425 |
-
|
426 |
-
/**
|
427 |
-
* Sort array in reverse by priority value
|
428 |
-
*
|
429 |
-
* @param $a
|
430 |
-
* @param $b
|
431 |
-
*
|
432 |
-
* @return int
|
433 |
-
*/
|
434 |
-
public static function rsort_by_priority( $a, $b ) {
|
435 |
-
if ( ! isset( $a['pri'] ) || ! isset( $b['pri'] ) || $a['pri'] === $b['pri'] ) {
|
436 |
-
return 0;
|
437 |
-
}
|
438 |
-
|
439 |
-
return ( $a['pri'] < $b['pri'] ) ? 1 : - 1;
|
440 |
-
}
|
441 |
-
|
442 |
-
}
|
443 |
-
|
444 |
-
Ppc_Install_Permissions::init();
|
445 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/admin-load.php
DELETED
@@ -1,310 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* PublishPress Capabilities [Free]
|
5 |
-
*
|
6 |
-
* Admin execution controller: menu registration and other filters and actions that need to be loaded for every wp-admin URL
|
7 |
-
*
|
8 |
-
* This module should not include full functions related to our own plugin screens.
|
9 |
-
* Instead, use these filter and action handlers to load other classes when needed.
|
10 |
-
*
|
11 |
-
*/
|
12 |
-
class PP_Capabilities_Admin_UI {
|
13 |
-
function __construct() {
|
14 |
-
global $pagenow;
|
15 |
-
|
16 |
-
/**
|
17 |
-
* The class responsible for handling notifications
|
18 |
-
*/
|
19 |
-
require_once (dirname(CME_FILE) . '/classes/pp-capabilities-notices.php');
|
20 |
-
|
21 |
-
add_action('init', [$this, 'featureRestrictionsGutenberg']);
|
22 |
-
|
23 |
-
if (is_admin()) {
|
24 |
-
add_action('admin_init', [$this, 'featureRestrictionsClassic']);
|
25 |
-
}
|
26 |
-
|
27 |
-
add_action('admin_enqueue_scripts', [$this, 'adminScripts'], 100);
|
28 |
-
add_action('admin_print_scripts', [$this, 'adminPrintScripts']);
|
29 |
-
|
30 |
-
add_action('profile_update', [$this, 'action_profile_update'], 10, 2);
|
31 |
-
|
32 |
-
if (is_multisite()) {
|
33 |
-
add_action('add_user_to_blog', [$this, 'action_profile_update'], 9);
|
34 |
-
} else {
|
35 |
-
add_action('user_register', [$this, 'action_profile_update'], 9);
|
36 |
-
}
|
37 |
-
|
38 |
-
if (is_admin() && (isset($_REQUEST['page']) && (in_array($_REQUEST['page'], ['pp-capabilities', 'pp-capabilities-backup', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-editor-features', 'pp-capabilities-nav-menus', 'pp-capabilities-settings', 'pp-capabilities-admin-features']))
|
39 |
-
|
40 |
-
|| (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], ['pp-roles-add-role', 'pp-roles-delete-role', 'pp-roles-hide-role', 'pp-roles-unhide-role']))
|
41 |
-
|| ( ! empty($_SERVER['SCRIPT_NAME']) && strpos( $_SERVER['SCRIPT_NAME'], 'p-admin/plugins.php' ) && ! empty($_REQUEST['action'] ) )
|
42 |
-
|| ( isset($_GET['action']) && 'reset-defaults' == $_GET['action'] )
|
43 |
-
|| in_array( $pagenow, array( 'users.php', 'user-edit.php', 'profile.php', 'user-new.php' ) )
|
44 |
-
) ) {
|
45 |
-
global $capsman;
|
46 |
-
|
47 |
-
// Run the plugin
|
48 |
-
require_once ( dirname(CME_FILE) . '/framework/lib/formating.php' );
|
49 |
-
require_once ( dirname(CME_FILE) . '/framework/lib/users.php' );
|
50 |
-
|
51 |
-
require_once ( dirname(CME_FILE) . '/includes/manager.php' );
|
52 |
-
$capsman = new CapabilityManager();
|
53 |
-
} else {
|
54 |
-
add_action( 'admin_menu', [$this, 'cmeSubmenus'], 20 );
|
55 |
-
}
|
56 |
-
|
57 |
-
add_action('init', function() { // late execution avoids clash with autoloaders in other plugins
|
58 |
-
global $pagenow;
|
59 |
-
|
60 |
-
if ((($pagenow == 'admin.php') && isset($_GET['page']) && in_array($_GET['page'], ['pp-capabilities', 'pp-capabilities-roles', 'pp-capabilities-backup'])) // @todo: CSS for button alignment in Editor Features, Admin Features
|
61 |
-
|| (defined('DOING_AJAX') && DOING_AJAX && (false !== strpos($_REQUEST['action'], 'capability-manager-enhanced')))
|
62 |
-
) {
|
63 |
-
if (!class_exists('\PublishPress\WordPressReviews\ReviewsController')) {
|
64 |
-
include_once PUBLISHPRESS_CAPS_ABSPATH . '/vendor/publishpress/wordpress-reviews/ReviewsController.php';
|
65 |
-
}
|
66 |
-
|
67 |
-
if (class_exists('\PublishPress\WordPressReviews\ReviewsController')) {
|
68 |
-
$reviews = new \PublishPress\WordPressReviews\ReviewsController(
|
69 |
-
'capability-manager-enhanced',
|
70 |
-
'PublishPress Capabilities',
|
71 |
-
plugin_dir_url(CME_FILE) . 'common/img/capabilities-wp-logo.png'
|
72 |
-
);
|
73 |
-
|
74 |
-
add_filter('publishpress_wp_reviews_display_banner_capability-manager-enhanced', [$this, 'shouldDisplayBanner']);
|
75 |
-
|
76 |
-
$reviews->init();
|
77 |
-
}
|
78 |
-
}
|
79 |
-
});
|
80 |
-
}
|
81 |
-
|
82 |
-
public function shouldDisplayBanner() {
|
83 |
-
global $pagenow;
|
84 |
-
|
85 |
-
return ($pagenow == 'admin.php') && isset($_GET['page']) && in_array($_GET['page'], ['pp-capabilities', 'pp-capabilities-roles', 'pp-capabilities-backup']);
|
86 |
-
}
|
87 |
-
|
88 |
-
private function applyFeatureRestrictions($editor = 'gutenberg') {
|
89 |
-
global $pagenow;
|
90 |
-
|
91 |
-
// Return if not a post editor request
|
92 |
-
if (!in_array($pagenow, ['post.php', 'post-new.php'])) {
|
93 |
-
return;
|
94 |
-
}
|
95 |
-
|
96 |
-
static $def_post_types; // avoid redundant filter application
|
97 |
-
|
98 |
-
if (!isset($def_post_types)) {
|
99 |
-
//$def_post_types = apply_filters('pp_capabilities_feature_post_types', get_post_types(['public' => true]));
|
100 |
-
$def_post_types = apply_filters('pp_capabilities_feature_post_types', ['post', 'page']);
|
101 |
-
}
|
102 |
-
|
103 |
-
$post_type = pp_capabilities_get_post_type();
|
104 |
-
|
105 |
-
// Return if not a supported post type
|
106 |
-
if (!in_array($post_type, $def_post_types)) {
|
107 |
-
return;
|
108 |
-
}
|
109 |
-
|
110 |
-
switch ($editor) {
|
111 |
-
case 'gutenberg':
|
112 |
-
if (_pp_capabilities_is_block_editor_active()) {
|
113 |
-
require_once ( dirname(CME_FILE) . '/includes/features/restrict-editor-features.php' );
|
114 |
-
PP_Capabilities_Post_Features::applyRestrictions($post_type);
|
115 |
-
}
|
116 |
-
|
117 |
-
break;
|
118 |
-
|
119 |
-
case 'classic':
|
120 |
-
if (!_pp_capabilities_is_block_editor_active()) {
|
121 |
-
require_once ( dirname(CME_FILE) . '/includes/features/restrict-editor-features.php' );
|
122 |
-
PP_Capabilities_Post_Features::adminInitClassic($post_type);
|
123 |
-
}
|
124 |
-
}
|
125 |
-
}
|
126 |
-
|
127 |
-
function featureRestrictionsGutenberg() {
|
128 |
-
$this->applyFeatureRestrictions();
|
129 |
-
}
|
130 |
-
|
131 |
-
function featureRestrictionsClassic() {
|
132 |
-
$this->applyFeatureRestrictions('classic');
|
133 |
-
}
|
134 |
-
|
135 |
-
function adminScripts() {
|
136 |
-
global $publishpress;
|
137 |
-
|
138 |
-
if (function_exists('get_current_screen') && (!defined('PUBLISHPRESS_VERSION') || empty($publishpress) || empty($publishpress->modules) || empty($publishpress->modules->roles))) {
|
139 |
-
$screen = get_current_screen();
|
140 |
-
|
141 |
-
if ('user-edit' === $screen->base || ('user' === $screen->base && 'add' === $screen->action && defined('PP_CAPABILITIES_ADD_USER_MULTI_ROLES'))) {
|
142 |
-
// Check if we are on the user's profile page
|
143 |
-
wp_enqueue_script(
|
144 |
-
'pp-capabilities-chosen-js',
|
145 |
-
plugin_dir_url(CME_FILE) . 'common/libs/chosen-v1.8.3/chosen.jquery.js',
|
146 |
-
['jquery'],
|
147 |
-
CAPSMAN_VERSION
|
148 |
-
);
|
149 |
-
|
150 |
-
wp_enqueue_script(
|
151 |
-
'pp-capabilities-roles-profile-js',
|
152 |
-
plugin_dir_url(CME_FILE) . 'common/js/profile.js',
|
153 |
-
['jquery', 'pp-capabilities-chosen-js'],
|
154 |
-
CAPSMAN_VERSION
|
155 |
-
);
|
156 |
-
|
157 |
-
wp_enqueue_style(
|
158 |
-
'pp-capabilities-chosen-css',
|
159 |
-
plugin_dir_url(CME_FILE) . 'common/libs/chosen-v1.8.3/chosen.css',
|
160 |
-
false,
|
161 |
-
CAPSMAN_VERSION
|
162 |
-
);
|
163 |
-
wp_enqueue_style(
|
164 |
-
'pp-capabilities-roles-profile-css',
|
165 |
-
plugin_dir_url(CME_FILE) . 'common/css/profile.css',
|
166 |
-
['pp-capabilities-chosen-css'],
|
167 |
-
CAPSMAN_VERSION
|
168 |
-
);
|
169 |
-
|
170 |
-
$roles = !empty($_GET['user_id']) ?$this->getUsersRoles($_GET['user_id']) : [];
|
171 |
-
|
172 |
-
if (empty($roles)) {
|
173 |
-
$roles = (array) get_option('default_role');
|
174 |
-
}
|
175 |
-
|
176 |
-
wp_localize_script(
|
177 |
-
'pp-capabilities-roles-profile-js',
|
178 |
-
'ppCapabilitiesProfileData',
|
179 |
-
[
|
180 |
-
'selected_roles' => $roles
|
181 |
-
]
|
182 |
-
);
|
183 |
-
}
|
184 |
-
}
|
185 |
-
}
|
186 |
-
|
187 |
-
function adminPrintScripts() {
|
188 |
-
// Counteract overzealous menu icon styling in PublishPress <= 3.2.0 :)
|
189 |
-
if (defined('PUBLISHPRESS_VERSION') && version_compare(constant('PUBLISHPRESS_VERSION'), '3.2.0', '<=') && defined('PP_CAPABILITIES_FIX_ADMIN_ICON')):?>
|
190 |
-
<style type="text/css">
|
191 |
-
#toplevel_page_pp-capabilities .dashicons-before::before, #toplevel_page_pp-capabilities .wp-has-current-submenu .dashicons-before::before {
|
192 |
-
background-image: inherit !important;
|
193 |
-
content: "\f112" !important;
|
194 |
-
}
|
195 |
-
</style>
|
196 |
-
<?php endif;
|
197 |
-
}
|
198 |
-
|
199 |
-
/**
|
200 |
-
* Returns a list of roles with name and display name to populate a select field.
|
201 |
-
*
|
202 |
-
* @param int $userId
|
203 |
-
*
|
204 |
-
* @return array
|
205 |
-
*/
|
206 |
-
protected function getUsersRoles($userId)
|
207 |
-
{
|
208 |
-
if (empty($userId)) {
|
209 |
-
return [];
|
210 |
-
}
|
211 |
-
|
212 |
-
$user = get_user_by('id', $userId);
|
213 |
-
|
214 |
-
if (empty($user)) {
|
215 |
-
return [];
|
216 |
-
}
|
217 |
-
|
218 |
-
return $user->roles;
|
219 |
-
}
|
220 |
-
|
221 |
-
public function action_profile_update($userId, $oldUserData = [])
|
222 |
-
{
|
223 |
-
// Check if we need to update the user's roles, allowing to set multiple roles.
|
224 |
-
if (isset($_POST['pp_roles']) && current_user_can('promote_users')) {
|
225 |
-
// Remove the user's roles
|
226 |
-
$user = get_user_by('ID', $userId);
|
227 |
-
|
228 |
-
$newRoles = $_POST['pp_roles'];
|
229 |
-
$currentRoles = $user->roles;
|
230 |
-
|
231 |
-
if (empty($newRoles) || !is_array($newRoles)) {
|
232 |
-
return;
|
233 |
-
}
|
234 |
-
|
235 |
-
// Remove unselected roles
|
236 |
-
foreach ($currentRoles as $role) {
|
237 |
-
// Check if it is a bbPress rule. If so, don't remove it.
|
238 |
-
$isBBPressRole = preg_match('/^bbp_/', $role);
|
239 |
-
|
240 |
-
if (!in_array($role, $newRoles) && !$isBBPressRole) {
|
241 |
-
$user->remove_role($role);
|
242 |
-
}
|
243 |
-
}
|
244 |
-
|
245 |
-
// Add new roles
|
246 |
-
foreach ($newRoles as $role) {
|
247 |
-
if (!in_array($role, $currentRoles)) {
|
248 |
-
$user->add_role($role);
|
249 |
-
}
|
250 |
-
}
|
251 |
-
}
|
252 |
-
}
|
253 |
-
|
254 |
-
|
255 |
-
// perf enhancement: display submenu links without loading framework and plugin code
|
256 |
-
function cmeSubmenus() {
|
257 |
-
// First we check if user is administrator and can 'manage_capabilities'.
|
258 |
-
if (current_user_can('administrator') && ! current_user_can('manage_capabilities')) {
|
259 |
-
if ($admin = get_role('administrator')) {
|
260 |
-
$admin->add_cap('manage_capabilities');
|
261 |
-
}
|
262 |
-
}
|
263 |
-
|
264 |
-
$cap_name = (is_multisite() && is_super_admin()) ? 'read' : 'manage_capabilities';
|
265 |
-
|
266 |
-
$permissions_title = __('Capabilities', 'capsman-enhanced');
|
267 |
-
|
268 |
-
$menu_order = 72;
|
269 |
-
|
270 |
-
if (defined('PUBLISHPRESS_PERMISSIONS_MENU_GROUPING')) {
|
271 |
-
foreach ((array)get_option('active_plugins') as $plugin_file) {
|
272 |
-
if ( false !== strpos($plugin_file, 'publishpress.php') ) {
|
273 |
-
$menu_order = 27;
|
274 |
-
}
|
275 |
-
}
|
276 |
-
}
|
277 |
-
|
278 |
-
add_menu_page(
|
279 |
-
$permissions_title,
|
280 |
-
$permissions_title,
|
281 |
-
$cap_name,
|
282 |
-
'pp-capabilities',
|
283 |
-
'cme_fakefunc',
|
284 |
-
'dashicons-admin-network',
|
285 |
-
$menu_order
|
286 |
-
);
|
287 |
-
|
288 |
-
add_submenu_page('pp-capabilities', __('Roles', 'capsman-enhanced'), __('Roles', 'capsman-enhanced'), $cap_name, 'pp-capabilities-roles', 'cme_fakefunc');
|
289 |
-
add_submenu_page('pp-capabilities', __('Editor Features', 'capsman-enhanced'), __('Editor Features', 'capsman-enhanced'), $cap_name, 'pp-capabilities-editor-features', 'cme_fakefunc');
|
290 |
-
add_submenu_page('pp-capabilities', __('Admin Features', 'capsman-enhanced'), __('Admin Features', 'capsman-enhanced'), $cap_name, 'pp-capabilities-admin-features', 'cme_fakefunc');
|
291 |
-
add_submenu_page('pp-capabilities', __('Admin Menus', 'capsman-enhanced'), __('Admin Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-admin-menus', 'cme_fakefunc');
|
292 |
-
add_submenu_page('pp-capabilities', __('Nav Menus', 'capsman-enhanced'), __('Nav Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-nav-menus', 'cme_fakefunc');
|
293 |
-
add_submenu_page('pp-capabilities', __('Backup', 'capsman-enhanced'), __('Backup', 'capsman-enhanced'), $cap_name, 'pp-capabilities-backup', 'cme_fakefunc');
|
294 |
-
|
295 |
-
if (defined('PUBLISHPRESS_CAPS_PRO_VERSION')) {
|
296 |
-
add_submenu_page('pp-capabilities', __('Settings', 'capsman-enhanced'), __('Settings', 'capsman-enhanced'), $cap_name, 'pp-capabilities-settings', 'cme_fakefunc');
|
297 |
-
}
|
298 |
-
|
299 |
-
if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION')) {
|
300 |
-
add_submenu_page(
|
301 |
-
'pp-capabilities',
|
302 |
-
__('Upgrade to Pro', 'capsman-enhanced'),
|
303 |
-
__('Upgrade to Pro', 'capsman-enhanced'),
|
304 |
-
'manage_capabilities',
|
305 |
-
'capsman-enhanced',
|
306 |
-
'cme_fakefunc'
|
307 |
-
);
|
308 |
-
}
|
309 |
-
}
|
310 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/admin.php
CHANGED
@@ -1,1342 +1,1187 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
*
|
4 |
-
*
|
5 |
-
*
|
6 |
-
*
|
7 |
-
*
|
8 |
-
*
|
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 |
-
if (
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
require_once
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
$pp_metagroup_caps =
|
52 |
-
}
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
?>
|
65 |
-
|
66 |
-
<?php
|
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 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
$
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
}
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
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 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
'
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
'
|
391 |
-
|
392 |
-
'
|
393 |
-
'
|
394 |
-
'
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
$
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
$
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
$
|
814 |
-
}
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
<
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
</
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
}
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
</
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
<?php _e( "Member support forum", 'capsman-enhanced' );?>
|
1189 |
-
</li>
|
1190 |
-
|
1191 |
-
</ul></div>
|
1192 |
-
|
1193 |
-
<?php
|
1194 |
-
echo '<div>';
|
1195 |
-
printf( __('%1$sgrab%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . cme_plugin_info_url('press-permit-core') . '" class="thickbox" title="' . sprintf( __('%s (free install)', 'capsman-enhanced'), 'Permissions Pro' ) . '">Permissions Pro</a></span>' );
|
1196 |
-
echo ' • ';
|
1197 |
-
printf( __('%1$sbuy%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<a href="https://publishpress.com/presspermit/" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman-enhanced'), 'Permissions Pro' ) . '">Permissions Pro</a>' );
|
1198 |
-
echo ' • ';
|
1199 |
-
echo '<a href="#pp-hide">hide</a>';
|
1200 |
-
echo '</div></div>';
|
1201 |
-
|
1202 |
-
///
|
1203 |
-
?>
|
1204 |
-
<script type="text/javascript">
|
1205 |
-
/* <![CDATA[ */
|
1206 |
-
jQuery(document).ready( function($) {
|
1207 |
-
$('a[href="#toggle_type_caps"]').click( function() {
|
1208 |
-
var chks = $(this).closest('tr').find('input');
|
1209 |
-
var set_checked = ! $(chks).first().is(':checked');
|
1210 |
-
|
1211 |
-
$(chks).each(function(i,e) {
|
1212 |
-
$('input[name="' + $(this).attr('name') + '"]').prop('checked', set_checked);
|
1213 |
-
});
|
1214 |
-
|
1215 |
-
return false;
|
1216 |
-
});
|
1217 |
-
|
1218 |
-
$('input[name^="caps["]').click(function() {
|
1219 |
-
$('input[name="' + $(this).attr('name') + '"]').prop('checked', $(this).prop('checked'));
|
1220 |
-
});
|
1221 |
-
});
|
1222 |
-
/* ]]> */
|
1223 |
-
</script>
|
1224 |
-
|
1225 |
-
<div style="display:inline-block; float:right;">
|
1226 |
-
<?php
|
1227 |
-
$level = ak_caps2level($rcaps);
|
1228 |
-
?>
|
1229 |
-
<span title="<?php _e('Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities.', 'capsman-enhanced');?>">
|
1230 |
-
|
1231 |
-
<?php (in_array(get_locale(), ['en_EN', 'en_US'])) ? printf('Role Level:') : _e('Level:', 'capsman-enhanced');?> <select name="level">
|
1232 |
-
<?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
|
1233 |
-
<option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>> <?php echo $l; ?> </option>
|
1234 |
-
<?php }
|
1235 |
-
?>
|
1236 |
-
</select>
|
1237 |
-
</span>
|
1238 |
-
|
1239 |
-
</div>
|
1240 |
-
|
1241 |
-
<?php
|
1242 |
-
$support_pp_only_roles = defined('PRESSPERMIT_ACTIVE');
|
1243 |
-
cme_network_role_ui( $default );
|
1244 |
-
?>
|
1245 |
-
|
1246 |
-
<p class="submit" style="padding-top:0;">
|
1247 |
-
<input type="hidden" name="action" value="update" />
|
1248 |
-
<input type="hidden" name="current" value="<?php echo $default; ?>" />
|
1249 |
-
<input type="submit" name="SaveRole" value="<?php echo (in_array(get_locale(), ['en_EN', 'en_US'])) ? 'Save Capabilities' : _e('Save Changes', 'capsman-enhanced');?>" class="button-primary" />
|
1250 |
-
|
1251 |
-
<?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
|
1252 |
-
<a class="ak-delete" title="<?php echo esc_attr(__('Delete this role', 'capsman-enhanced')) ?>" href="<?php echo wp_nonce_url("admin.php?page={$this->ID}&action=delete&role={$default}", 'delete-role_' . $default); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete the %s role.\n\n 'Cancel' to stop, 'OK' to delete.", 'capsman-enhanced'), $roles[$default])); ?>') ) { return true;}return false;"><?php _e('Delete Role', 'capsman-enhanced')?></a>
|
1253 |
-
<?php endif; ?>
|
1254 |
-
</p>
|
1255 |
-
|
1256 |
-
</td>
|
1257 |
-
<td class="sidebar">
|
1258 |
-
<?php do_action('publishpress-caps_sidebar_top');?>
|
1259 |
-
|
1260 |
-
<dl>
|
1261 |
-
<dt><?php _e('Add Capability', 'capsman-enhanced'); ?></dt>
|
1262 |
-
<dd style="text-align:center;">
|
1263 |
-
<p><input type="text" name="capability-name" class="regular-text" placeholder="<?php echo 'capability_name';?>" /><br />
|
1264 |
-
<input type="submit" name="AddCap" value="<?php _e('Add to role', 'capsman-enhanced') ?>" class="button" /></p>
|
1265 |
-
</dd>
|
1266 |
-
</dl>
|
1267 |
-
|
1268 |
-
<?php
|
1269 |
-
$pp_ui->pp_types_ui( $defined['type'] );
|
1270 |
-
$pp_ui->pp_taxonomies_ui( $defined['taxonomy'] );
|
1271 |
-
|
1272 |
-
do_action('publishpress-caps_sidebar_bottom');
|
1273 |
-
?>
|
1274 |
-
|
1275 |
-
<dl>
|
1276 |
-
<dt><?php (!in_array(get_locale(), ['en_EN', 'en_US'])) ? _e('Copy this role to', 'capsman-enhanced') : printf('Copy %s Role', translate_user_role($roles[$default])); ?></dt>
|
1277 |
-
<dd style="text-align:center;">
|
1278 |
-
<?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
|
1279 |
-
<p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Role Name', 'capsman-enhanced') ?>" />
|
1280 |
-
|
1281 |
-
<?php if( $support_pp_only_roles ) : ?>
|
1282 |
-
<label for="copy_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" autocomplete="off" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
|
1283 |
-
<?php endif; ?>
|
1284 |
-
|
1285 |
-
<br />
|
1286 |
-
<input type="submit" name="CopyRole" value="<?php _e('Copy', 'capsman-enhanced') ?>" class="button" />
|
1287 |
-
</p>
|
1288 |
-
</dd>
|
1289 |
-
</dl>
|
1290 |
-
|
1291 |
-
<dl>
|
1292 |
-
<dt><?php _e('Rename Role', 'capsman-enhanced'); ?></dt>
|
1293 |
-
<dd style="text-align:center;">
|
1294 |
-
<p><input type="text" name="rename-name" class="regular-text" placeholder="<?php _e('New Role Name', 'capsman-enhanced') ?>" />
|
1295 |
-
|
1296 |
-
<br />
|
1297 |
-
<input type="submit" name="RenameRole" value="<?php _e('Rename', 'capsman-enhanced') ?>" class="button" />
|
1298 |
-
</p>
|
1299 |
-
</dd>
|
1300 |
-
</dl>
|
1301 |
-
</td>
|
1302 |
-
</tr>
|
1303 |
-
</table>
|
1304 |
-
</fieldset>
|
1305 |
-
</form>
|
1306 |
-
|
1307 |
-
<?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
|
1308 |
-
cme_publishpressFooter();
|
1309 |
-
}
|
1310 |
-
?>
|
1311 |
-
</div>
|
1312 |
-
|
1313 |
-
<?php
|
1314 |
-
function cme_network_role_ui( $default ) {
|
1315 |
-
if (!is_multisite() || !is_super_admin() || !is_main_site()) {
|
1316 |
-
return false;
|
1317 |
-
}
|
1318 |
-
?>
|
1319 |
-
|
1320 |
-
<div style="float:right;margin-left:10px;margin-right:10px">
|
1321 |
-
<?php
|
1322 |
-
if ( ! $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) )
|
1323 |
-
$autocreate_roles = array();
|
1324 |
-
?>
|
1325 |
-
<div style="margin-bottom: 5px">
|
1326 |
-
<label for="cme_autocreate_role" title="<?php _e('Create this role definition in new (future) sites', 'capsman-enhanced');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" autocomplete="off" value="1" <?php echo checked(in_array($default, $autocreate_roles));?>> <?php _e('include in new sites', 'capsman-enhanced'); ?> </label>
|
1327 |
-
</div>
|
1328 |
-
<div>
|
1329 |
-
<label for="cme_net_sync_role" title="<?php echo esc_attr(__('Copy / update this role definition to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" autocomplete="off" value="1"> <?php _e('sync role to all sites now', 'capsman-enhanced'); ?> </label>
|
1330 |
-
</div>
|
1331 |
-
<div>
|
1332 |
-
<label for="cme_net_sync_options" title="<?php echo esc_attr(__('Copy option settings to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_options" id="cme_net_sync_options" autocomplete="off" value="1"> <?php _e('sync options to all sites now', 'capsman-enhanced'); ?> </label>
|
1333 |
-
</div>
|
1334 |
-
</div>
|
1335 |
-
<?php
|
1336 |
-
return true;
|
1337 |
-
}
|
1338 |
-
|
1339 |
-
function cme_plugin_info_url( $plugin_slug ) {
|
1340 |
-
$_url = "plugin-install.php?tab=plugin-information&plugin=$plugin_slug&TB_iframe=true&width=640&height=678";
|
1341 |
-
return ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
|
1342 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* General Admin for Role Capabilities.
|
4 |
+
* Provides admin pages to create and manage roles and capabilities.
|
5 |
+
*
|
6 |
+
* @author Jordi Canals, Kevin Behrens
|
7 |
+
* @copyright Copyright (C) 2009, 2010 Jordi Canals, (C) 2020 PublishPress
|
8 |
+
* @license GNU General Public License version 2
|
9 |
+
* @link https://publishpress.com
|
10 |
+
*
|
11 |
+
*
|
12 |
+
* Copyright 2009, 2010 Jordi Canals <devel@jcanals.cat>
|
13 |
+
* Modifications Copyright 2020, PublishPress <help@publishpress.com>
|
14 |
+
*
|
15 |
+
* This program is free software; you can redistribute it and/or
|
16 |
+
* modify it under the terms of the GNU General Public License
|
17 |
+
* version 2 as 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, see <http://www.gnu.org/licenses/>.
|
26 |
+
**/
|
27 |
+
|
28 |
+
global $capsman, $cme_cap_helper, $current_user;
|
29 |
+
|
30 |
+
do_action('publishpress-caps_manager-load');
|
31 |
+
|
32 |
+
$roles = $this->roles;
|
33 |
+
$default = $this->current;
|
34 |
+
|
35 |
+
if ( $block_read_removal = _cme_is_read_removal_blocked( $this->current ) ) {
|
36 |
+
if ( $current = get_role($default) ) {
|
37 |
+
if ( empty( $current->capabilities['read'] ) ) {
|
38 |
+
ak_admin_error( sprintf( __( 'Warning: This role cannot access the dashboard without the read capability. %1$sClick here to fix this now%2$s.', 'capsman-enhanced' ), '<a href="javascript:void(0)" class="cme-fix-read-cap">', '</a>' ) );
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
require_once (dirname(CME_FILE) . '/includes/roles/roles-functions.php');
|
44 |
+
|
45 |
+
require_once( dirname(__FILE__).'/pp-ui.php' );
|
46 |
+
$pp_ui = new Capsman_PP_UI();
|
47 |
+
|
48 |
+
if( defined('PRESSPERMIT_ACTIVE') ) {
|
49 |
+
$pp_metagroup_caps = $pp_ui->get_metagroup_caps( $default );
|
50 |
+
} else {
|
51 |
+
$pp_metagroup_caps = array();
|
52 |
+
}
|
53 |
+
?>
|
54 |
+
<div class="wrap publishpress-caps-manage pressshack-admin-wrapper">
|
55 |
+
<?php /*if( defined('PRESSPERMIT_ACTIVE') ) :
|
56 |
+
pp_icon();
|
57 |
+
$style = 'style="height:60px;"';
|
58 |
+
*/
|
59 |
+
?>
|
60 |
+
<?php /* else: */
|
61 |
+
$style = '';
|
62 |
+
?>
|
63 |
+
<div id="icon-capsman-admin" class="icon32"></div>
|
64 |
+
<?php /* endif; */ ?>
|
65 |
+
|
66 |
+
<h1 <?php echo $style;?>><?php _e('Role Capabilities', 'capsman-enhanced') ?></h1>
|
67 |
+
|
68 |
+
<?php
|
69 |
+
echo pp_capabilities_roles()->notify->display();
|
70 |
+
?>
|
71 |
+
|
72 |
+
<script type="text/javascript">
|
73 |
+
/* <![CDATA[ */
|
74 |
+
jQuery(document).ready( function($) {
|
75 |
+
$('#publishpress_caps_form').attr('action', 'admin.php?page=pp-capabilities&role=' + $('select[name="role"]').val());
|
76 |
+
|
77 |
+
$('select[name="role"]').change(function(){
|
78 |
+
window.location = '<?php echo admin_url('admin.php?page=pp-capabilities&role='); ?>' + $(this).val() + '';
|
79 |
+
});
|
80 |
+
});
|
81 |
+
/* ]]> */
|
82 |
+
</script>
|
83 |
+
|
84 |
+
<form id="publishpress_caps_form" method="post" action="admin.php?page=<?php echo $this->ID ?>">
|
85 |
+
<?php wp_nonce_field('capsman-general-manager'); ?>
|
86 |
+
|
87 |
+
<p>
|
88 |
+
<select name="role">
|
89 |
+
<?php
|
90 |
+
foreach ( $roles as $role => $name ) {
|
91 |
+
if (pp_capabilities_is_editable_role($role)) {
|
92 |
+
$name = translate_user_role($name);
|
93 |
+
echo '<option value="' . $role .'"'; selected($default, $role); echo '> ' . $name . ' </option>';
|
94 |
+
}
|
95 |
+
}
|
96 |
+
?>
|
97 |
+
</select>
|
98 |
+
</p>
|
99 |
+
|
100 |
+
<fieldset>
|
101 |
+
<table id="akmin">
|
102 |
+
<tr>
|
103 |
+
<td class="content">
|
104 |
+
<dl>
|
105 |
+
<dd>
|
106 |
+
<div style="float:right">
|
107 |
+
<input type="submit" name="SaveRole" value="<?php echo (in_array(get_locale(), ['en_EN', 'en_US'])) ? 'Save Capabilities' : _e('Save Changes', 'capsman-enhanced'); ?>" class="button-primary" />
|
108 |
+
</div>
|
109 |
+
|
110 |
+
<?php
|
111 |
+
global $capsman;
|
112 |
+
$img_url = $capsman->mod_url . '/images/';
|
113 |
+
?>
|
114 |
+
<div class="publishpress-headline">
|
115 |
+
<span class="cme-subtext">
|
116 |
+
<?php
|
117 |
+
$msg = __( '<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation.', 'capsman-enhanced' );
|
118 |
+
|
119 |
+
if (defined('PRESSPERMIT_ACTIVE') && function_exists('presspermit')) {
|
120 |
+
if ($group = presspermit()->groups()->getMetagroup('wp_role', $this->current)) {
|
121 |
+
$msg = sprintf(
|
122 |
+
__('<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation. You can also configure this role as a %sPermission Group%s.', 'capsman-enhanced'),
|
123 |
+
'<a href="' . admin_url("admin.php?page=presspermit-edit-permissions&action=edit&agent_id={$group->ID}") . '">',
|
124 |
+
'</a>'
|
125 |
+
);
|
126 |
+
}
|
127 |
+
}
|
128 |
+
echo $msg;
|
129 |
+
?>
|
130 |
+
</span>
|
131 |
+
</div>
|
132 |
+
|
133 |
+
<?php
|
134 |
+
if ( defined( 'PRESSPERMIT_ACTIVE' ) ) {
|
135 |
+
$pp_ui->show_capability_hints( $default );
|
136 |
+
}
|
137 |
+
?>
|
138 |
+
|
139 |
+
<script type="text/javascript">
|
140 |
+
/* <![CDATA[ */
|
141 |
+
jQuery(document).ready( function($) {
|
142 |
+
$('a[href="#pp-more"]').click( function() {
|
143 |
+
$('#pp_features').show();
|
144 |
+
return false;
|
145 |
+
});
|
146 |
+
$('a[href="#pp-hide"]').click( function() {
|
147 |
+
$('#pp_features').hide();
|
148 |
+
return false;
|
149 |
+
});
|
150 |
+
});
|
151 |
+
/* ]]> */
|
152 |
+
</script>
|
153 |
+
|
154 |
+
<?php /* play.png icon by Pavel: http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN */ ?>
|
155 |
+
|
156 |
+
<br /><div id="pp_features" style="display:none"><div class="pp-logo"><a href="https://publishpress.com/presspermit/"><img src="<?php echo $img_url;?>pp-logo.png" alt="<?php _e('PublishPress Permissions', 'capsman-enhanced');?>" /></a></div><div class="features-wrap"><ul class="pp-features">
|
157 |
+
<li>
|
158 |
+
<?php _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", 'capsman-enhanced' );?>
|
159 |
+
<a href="https://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
160 |
+
|
161 |
+
<li>
|
162 |
+
<?php _e( "Assign standard WP roles supplementally for a specific post type", 'capsman-enhanced' );?>
|
163 |
+
<a href="https://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
164 |
+
|
165 |
+
<li>
|
166 |
+
<?php _e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", 'capsman-enhanced' );?>
|
167 |
+
</li>
|
168 |
+
|
169 |
+
<li>
|
170 |
+
<?php _e( "Customize reading permissions per-category or per-post", 'capsman-enhanced' );?>
|
171 |
+
<a href="https://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
172 |
+
|
173 |
+
<li>
|
174 |
+
<?php _e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", 'capsman-enhanced' );?>
|
175 |
+
<a href="https://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
176 |
+
|
177 |
+
<li>
|
178 |
+
<?php _e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", 'capsman-enhanced' );?>
|
179 |
+
<a href="https://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
180 |
+
|
181 |
+
<li>
|
182 |
+
<?php _e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", 'capsman-enhanced' );?>
|
183 |
+
<a href="https://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
184 |
+
|
185 |
+
<li>
|
186 |
+
<?php _e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", 'capsman-enhanced' );?>
|
187 |
+
<a href="https://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
188 |
+
|
189 |
+
<li>
|
190 |
+
<?php _e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", 'capsman-enhanced' );?>
|
191 |
+
<a href="https://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
192 |
+
|
193 |
+
<li>
|
194 |
+
<?php _e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", 'capsman-enhanced' );?>
|
195 |
+
</li>
|
196 |
+
|
197 |
+
<li>
|
198 |
+
<?php _e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", 'capsman-enhanced' );?>
|
199 |
+
<a href="https://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
|
200 |
+
|
201 |
+
<li>
|
202 |
+
<?php _e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", 'capsman-enhanced' );?>
|
203 |
+
</li>
|
204 |
+
|
205 |
+
<li>
|
206 |
+
<?php _e( "Member support forum", 'capsman-enhanced' );?>
|
207 |
+
</li>
|
208 |
+
|
209 |
+
</ul></div>
|
210 |
+
|
211 |
+
<?php
|
212 |
+
echo '<div>';
|
213 |
+
printf( __('%1$sgrab%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . cme_plugin_info_url('press-permit-core') . '" class="thickbox" title="' . sprintf( __('%s (free install)', 'capsman-enhanced'), 'Permissions Pro' ) . '">Permissions Pro</a></span>' );
|
214 |
+
echo ' • ';
|
215 |
+
printf( __('%1$sbuy%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<a href="https://publishpress.com/presspermit/" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman-enhanced'), 'Permissions Pro' ) . '">Permissions Pro</a>' );
|
216 |
+
echo ' • ';
|
217 |
+
echo '<a href="#pp-hide">hide</a>';
|
218 |
+
echo '</div></div>';
|
219 |
+
|
220 |
+
if ( MULTISITE ) {
|
221 |
+
global $wp_roles;
|
222 |
+
global $wpdb;
|
223 |
+
|
224 |
+
if ( ! empty($_REQUEST['cme_net_sync_role'] ) ) {
|
225 |
+
$main_site_id = (function_exists('get_main_site_id')) ? get_main_site_id() : 1;
|
226 |
+
switch_to_blog($main_site_id);
|
227 |
+
wp_cache_delete( $wpdb->prefix . 'user_roles', 'options' );
|
228 |
+
}
|
229 |
+
|
230 |
+
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
231 |
+
}
|
232 |
+
$capsman->reinstate_db_roles();
|
233 |
+
|
234 |
+
$current = get_role($default);
|
235 |
+
|
236 |
+
$rcaps = $current->capabilities;
|
237 |
+
|
238 |
+
$is_administrator = current_user_can( 'administrator' ) || (is_multisite() && is_super_admin());
|
239 |
+
|
240 |
+
$custom_types = get_post_types( array( '_builtin' => false ), 'names' );
|
241 |
+
$custom_tax = get_taxonomies( array( '_builtin' => false ), 'names' );
|
242 |
+
|
243 |
+
$defined = [];
|
244 |
+
$defined['type'] = apply_filters('cme_filterable_post_types', get_post_types(['public' => true, 'show_ui' => true], 'object', 'or'));
|
245 |
+
$defined['taxonomy'] = apply_filters('cme_filterable_taxonomies', get_taxonomies(['public' => true, 'show_ui' => true], 'object', 'or'));
|
246 |
+
|
247 |
+
// bbPress' dynamic role def requires additional code to enforce stored caps
|
248 |
+
$unfiltered['type'] = apply_filters('presspermit_unfiltered_post_types', ['forum','topic','reply','wp_block']);
|
249 |
+
$unfiltered['type'] = (defined('PP_CAPABILITIES_NO_LEGACY_FILTERS')) ? $unfiltered['type'] : apply_filters('pp_unfiltered_post_types', $unfiltered['type']);
|
250 |
+
|
251 |
+
$unfiltered['taxonomy'] = apply_filters('presspermit_unfiltered_post_types', ['post_status', 'topic-tag']); // avoid confusion with Edit Flow administrative taxonomy
|
252 |
+
$unfiltered['taxonomy'] = (defined('PP_CAPABILITIES_NO_LEGACY_FILTERS')) ? $unfiltered['taxonomy'] : apply_filters('pp_unfiltered_taxonomies', $unfiltered['taxonomy']);
|
253 |
+
|
254 |
+
$enabled_taxonomies = cme_get_assisted_taxonomies();
|
255 |
+
|
256 |
+
/*
|
257 |
+
if ( ( count($custom_types) || count($custom_tax) ) && ( $is_administrator || current_user_can( 'manage_pp_settings' ) ) ) {
|
258 |
+
$cap_properties[''] = array();
|
259 |
+
$force_distinct_ui = true;
|
260 |
+
}
|
261 |
+
*/
|
262 |
+
|
263 |
+
$cap_properties['edit']['type'] = array( 'edit_posts' );
|
264 |
+
|
265 |
+
foreach( $defined['type'] as $type_obj ) {
|
266 |
+
if ( 'attachment' != $type_obj->name ) {
|
267 |
+
if ( isset( $type_obj->cap->create_posts ) && ( $type_obj->cap->create_posts != $type_obj->cap->edit_posts ) ) {
|
268 |
+
$cap_properties['edit']['type'][]= 'create_posts';
|
269 |
+
break;
|
270 |
+
}
|
271 |
+
}
|
272 |
+
}
|
273 |
+
|
274 |
+
$cap_properties['edit']['type'][]= 'edit_others_posts';
|
275 |
+
$cap_properties['edit']['type'] = array_merge( $cap_properties['edit']['type'], array( 'publish_posts', 'edit_published_posts', 'edit_private_posts' ) );
|
276 |
+
|
277 |
+
$cap_properties['edit']['taxonomy'] = array( 'manage_terms' );
|
278 |
+
|
279 |
+
if ( ! defined( 'OLD_PRESSPERMIT_ACTIVE' ) )
|
280 |
+
$cap_properties['edit']['taxonomy'] = array_merge( $cap_properties['edit']['taxonomy'], array( 'edit_terms', 'assign_terms' ) );
|
281 |
+
|
282 |
+
$cap_properties['delete']['type'] = array( 'delete_posts', 'delete_others_posts' );
|
283 |
+
$cap_properties['delete']['type'] = array_merge( $cap_properties['delete']['type'], array( 'delete_published_posts', 'delete_private_posts' ) );
|
284 |
+
|
285 |
+
if ( ! defined( 'OLD_PRESSPERMIT_ACTIVE' ) )
|
286 |
+
$cap_properties['delete']['taxonomy'] = array( 'delete_terms' );
|
287 |
+
else
|
288 |
+
$cap_properties['delete']['taxonomy'] = array();
|
289 |
+
|
290 |
+
$cap_properties['read']['type'] = array( 'read_private_posts' );
|
291 |
+
$cap_properties['read']['taxonomy'] = array();
|
292 |
+
|
293 |
+
$stati = get_post_stati( array( 'internal' => false ) );
|
294 |
+
|
295 |
+
$cap_type_names = array(
|
296 |
+
'' => __( ' ', 'capsman-enhanced' ),
|
297 |
+
'read' => __( 'Reading', 'capsman-enhanced' ),
|
298 |
+
'edit' => __( 'Editing Capabilities', 'capsman-enhanced' ),
|
299 |
+
'delete' => __( 'Deletion Capabilities', 'capsman-enhanced' )
|
300 |
+
);
|
301 |
+
|
302 |
+
$cap_tips = array(
|
303 |
+
'read_private' => __( 'can read posts which are currently published with private visibility', 'capsman-enhanced' ),
|
304 |
+
'edit' => __( 'has basic editing capability (but may need other capabilities based on post status and ownership)', 'capsman-enhanced' ),
|
305 |
+
'edit_others' => __( 'can edit posts which were created by other users', 'capsman-enhanced' ),
|
306 |
+
'edit_published' => __( 'can edit posts which are currently published', 'capsman-enhanced' ),
|
307 |
+
'edit_private' => __( 'can edit posts which are currently published with private visibility', 'capsman-enhanced' ),
|
308 |
+
'publish' => __( 'can make a post publicly visible', 'capsman-enhanced' ),
|
309 |
+
'delete' => __( 'has basic deletion capability (but may need other capabilities based on post status and ownership)', 'capsman-enhanced' ),
|
310 |
+
'delete_others' => __( 'can delete posts which were created by other users', 'capsman-enhanced' ),
|
311 |
+
'delete_published' => __( 'can delete posts which are currently published', 'capsman-enhanced' ),
|
312 |
+
'delete_private' => __( 'can delete posts which are currently published with private visibility', 'capsman-enhanced' ),
|
313 |
+
);
|
314 |
+
|
315 |
+
$default_caps = array( 'read_private_posts', 'edit_posts', 'edit_others_posts', 'edit_published_posts', 'edit_private_posts', 'publish_posts', 'delete_posts', 'delete_others_posts', 'delete_published_posts', 'delete_private_posts',
|
316 |
+
'read_private_pages', 'edit_pages', 'edit_others_pages', 'edit_published_pages', 'edit_private_pages', 'publish_pages', 'delete_pages', 'delete_others_pages', 'delete_published_pages', 'delete_private_pages',
|
317 |
+
'manage_categories'
|
318 |
+
);
|
319 |
+
$type_caps = array();
|
320 |
+
$type_metacaps = array();
|
321 |
+
|
322 |
+
// Role Scoper and PP1 adjust attachment access based only on user's capabilities for the parent post
|
323 |
+
if ( defined('OLD_PRESSPERMIT_ACTIVE') ) {
|
324 |
+
unset( $defined['type']['attachment'] );
|
325 |
+
}
|
326 |
+
|
327 |
+
echo '<ul class="cme-listhoriz">';
|
328 |
+
|
329 |
+
// cap_types: read, edit, deletion
|
330 |
+
foreach( array_keys($cap_properties) as $cap_type ) {
|
331 |
+
echo '<li>';
|
332 |
+
echo '<h3>' . $cap_type_names[$cap_type] . '</h3>';
|
333 |
+
|
334 |
+
echo "<div class='cme-cap-type-tables cme-cap-type-tables-$cap_type'>";
|
335 |
+
|
336 |
+
foreach( array_keys($defined) as $item_type ) {
|
337 |
+
if ( ( 'delete' == $cap_type ) && ( 'taxonomy' == $item_type ) ) {
|
338 |
+
if ( defined('OLD_PRESSPERMIT_ACTIVE') ) {
|
339 |
+
continue;
|
340 |
+
}
|
341 |
+
|
342 |
+
$any_term_deletion_caps = false;
|
343 |
+
foreach( array_keys($defined['taxonomy']) as $_tax ) {
|
344 |
+
if ( isset( $defined['taxonomy'][$_tax]->cap->delete_terms ) && ( 'manage_categories' != $defined['taxonomy'][$_tax]->cap->delete_terms ) && ! in_array( $_tax, $unfiltered['taxonomy'] ) ) {
|
345 |
+
$any_term_deletion_caps = true;
|
346 |
+
break;
|
347 |
+
}
|
348 |
+
}
|
349 |
+
|
350 |
+
if ( ! $any_term_deletion_caps )
|
351 |
+
continue;
|
352 |
+
}
|
353 |
+
|
354 |
+
if ( ! count( $cap_properties[$cap_type][$item_type] ) )
|
355 |
+
continue;
|
356 |
+
|
357 |
+
echo "<table class='cme-typecaps cme-typecaps-$cap_type'>";
|
358 |
+
|
359 |
+
echo '<tr><th></th>';
|
360 |
+
|
361 |
+
// label cap properties
|
362 |
+
foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
|
363 |
+
$prop = str_replace( '_posts', '', $prop );
|
364 |
+
$prop = str_replace( '_pages', '', $prop );
|
365 |
+
$prop = str_replace( '_terms', '', $prop );
|
366 |
+
$tip = ( isset( $cap_tips[$prop] ) ) ? "title='{$cap_tips[$prop]}'" : '';
|
367 |
+
$prop = str_replace( '_', '<br />', $prop );
|
368 |
+
$th_class = ( 'taxonomy' == $item_type ) ? ' class="term-cap"' : ' class="post-cap"';
|
369 |
+
echo "<th $tip{$th_class}>";
|
370 |
+
|
371 |
+
if ( ( 'delete' != $prop ) || ( 'taxonomy' != $item_type ) || cme_get_detailed_taxonomies() ) {
|
372 |
+
echo ucwords($prop);
|
373 |
+
}
|
374 |
+
|
375 |
+
echo '</th>';
|
376 |
+
}
|
377 |
+
|
378 |
+
echo '</tr>';
|
379 |
+
|
380 |
+
foreach( $defined[$item_type] as $key => $type_obj ) {
|
381 |
+
if ( in_array( $key, $unfiltered[$item_type] ) )
|
382 |
+
continue;
|
383 |
+
|
384 |
+
$row = "<tr class='cme_type_{$key}'>";
|
385 |
+
|
386 |
+
if ( $cap_type ) {
|
387 |
+
if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
|
388 |
+
continue;
|
389 |
+
|
390 |
+
$type_label = (defined('CME_LEGACY_MENU_NAME_LABEL') && !empty($type_obj->labels->menu_name)) ? $type_obj->labels->menu_name : $type_obj->labels->name;
|
391 |
+
|
392 |
+
$row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_label . '</a>';
|
393 |
+
$row .= '<a href="#" class="neg-type-caps"> x </a>';
|
394 |
+
$row .= '</td>';
|
395 |
+
|
396 |
+
$display_row = ! empty($force_distinct_ui);
|
397 |
+
|
398 |
+
foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
|
399 |
+
$td_classes = array();
|
400 |
+
$checkbox = '';
|
401 |
+
$title = '';
|
402 |
+
|
403 |
+
if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
|
404 |
+
|| ! in_array( $type_obj->cap->$prop, $default_caps )
|
405 |
+
|| ( ( 'manage_categories' == $type_obj->cap->$prop ) && ( 'manage_terms' == $prop ) && ( 'category' == $type_obj->name ) ) ) ) {
|
406 |
+
|
407 |
+
// if edit_published or edit_private cap is same as edit_posts cap, don't display a checkbox for it
|
408 |
+
if ( ( ! in_array( $prop, array( 'edit_published_posts', 'edit_private_posts', 'create_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->edit_posts ) )
|
409 |
+
&& ( ! in_array( $prop, array( 'delete_published_posts', 'delete_private_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->delete_posts ) )
|
410 |
+
&& ( ! in_array( $prop, array( 'edit_terms', 'delete_terms' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->manage_terms ) )
|
411 |
+
|
412 |
+
&& ( ! in_array( $prop, array( 'manage_terms', 'edit_terms', 'delete_terms', 'assign_terms' ) )
|
413 |
+
|| empty($cme_cap_helper->all_taxonomy_caps[$type_obj->cap->$prop])
|
414 |
+
|| ( $cme_cap_helper->all_taxonomy_caps[ $type_obj->cap->$prop ] <= 1 )
|
415 |
+
|| $type_obj->cap->$prop == str_replace( '_terms', "_{$type_obj->name}s", $prop )
|
416 |
+
|| $type_obj->cap->$prop == str_replace( '_terms', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
|
417 |
+
)
|
418 |
+
|
419 |
+
&& ( in_array( $prop, array( 'manage_terms', 'edit_terms', 'delete_terms', 'assign_terms' ) )
|
420 |
+
|| empty($cme_cap_helper->all_type_caps[$type_obj->cap->$prop])
|
421 |
+
|| ( $cme_cap_helper->all_type_caps[ $type_obj->cap->$prop ] <= 1 )
|
422 |
+
|| $type_obj->cap->$prop == 'upload_files' && 'create_posts' == $prop && 'attachment' == $type_obj->name
|
423 |
+
|| $type_obj->cap->$prop == str_replace( '_posts', "_{$type_obj->name}s", $prop )
|
424 |
+
|| $type_obj->cap->$prop == str_replace( '_pages', "_{$type_obj->name}s", $prop )
|
425 |
+
|| $type_obj->cap->$prop == str_replace( '_posts', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
|
426 |
+
|| $type_obj->cap->$prop == str_replace( '_pages', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
|
427 |
+
)
|
428 |
+
) {
|
429 |
+
// only present these term caps up top if we are ensuring that they get enforced separately from manage_terms
|
430 |
+
if ( in_array( $prop, array( 'edit_terms', 'delete_terms', 'assign_terms' ) ) && ( ! in_array( $type_obj->name, cme_get_detailed_taxonomies() ) || defined( 'OLD_PRESSPERMIT_ACTIVE' ) ) ) {
|
431 |
+
continue;
|
432 |
+
}
|
433 |
+
|
434 |
+
$cap_name = $type_obj->cap->$prop;
|
435 |
+
|
436 |
+
if ( 'taxonomy' == $item_type )
|
437 |
+
$td_classes []= "term-cap";
|
438 |
+
else
|
439 |
+
$td_classes []= "post-cap";
|
440 |
+
|
441 |
+
if ( ! empty($pp_metagroup_caps[$cap_name]) )
|
442 |
+
$td_classes []='cm-has-via-pp';
|
443 |
+
|
444 |
+
if ( $is_administrator || current_user_can($cap_name) ) {
|
445 |
+
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
|
446 |
+
$title = ' title="' . sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name ) . '"';
|
447 |
+
} else {
|
448 |
+
$title = ' title="' . $cap_name . '"';
|
449 |
+
}
|
450 |
+
|
451 |
+
$disabled = '';
|
452 |
+
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
|
453 |
+
|
454 |
+
$checkbox = '<input type="checkbox"' . $title . ' name="caps[' . $cap_name . ']" autocomplete="off" value="1" ' . $checked . $disabled . ' />';
|
455 |
+
|
456 |
+
$type_caps [$cap_name] = true;
|
457 |
+
$display_row = true;
|
458 |
+
}
|
459 |
+
} else {
|
460 |
+
//$td_classes []= "cap-unreg";
|
461 |
+
$title = 'title="' . sprintf( __( 'shared capability: %s', 'capsman-enhanced' ), esc_attr( $type_obj->cap->$prop ) ) . '"';
|
462 |
+
}
|
463 |
+
|
464 |
+
if ( isset($rcaps[$cap_name]) && empty($rcaps[$cap_name]) ) {
|
465 |
+
$td_classes []= "cap-neg";
|
466 |
+
}
|
467 |
+
} else {
|
468 |
+
$td_classes []= "cap-unreg";
|
469 |
+
}
|
470 |
+
|
471 |
+
$td_class = ( $td_classes ) ? 'class="' . implode(' ', $td_classes) . '"' : '';
|
472 |
+
|
473 |
+
$row .= "<td $td_class $title><span class='cap-x'>X</span>$checkbox";
|
474 |
+
|
475 |
+
if ( false !== strpos( $td_class, 'cap-neg' ) )
|
476 |
+
$row .= '<input type="hidden" class="cme-negation-input" name="caps[' . $cap_name . ']" value="" />';
|
477 |
+
|
478 |
+
$row .= "</td>";
|
479 |
+
}
|
480 |
+
|
481 |
+
if (!empty($type_obj->map_meta_cap) && !defined('PP_CAPABILITIES_NO_INVALID_SECTION')) {
|
482 |
+
if ('type' == $item_type) {
|
483 |
+
$type_metacaps[$type_obj->cap->read_post] = true;
|
484 |
+
$type_metacaps[$type_obj->cap->edit_post] = isset($type_obj->cap->edit_posts) && ($type_obj->cap->edit_post != $type_obj->cap->edit_posts);
|
485 |
+
$type_metacaps[$type_obj->cap->delete_post] = isset($type_obj->cap->delete_posts) && ($type_obj->cap->delete_post != $type_obj->cap->delete_posts);
|
486 |
+
|
487 |
+
} elseif ('taxonomy' == $item_type && !empty($type_obj->cap->edit_term) && !empty($type_obj->cap->delete_term)) {
|
488 |
+
$type_metacaps[$type_obj->cap->edit_term] = true;
|
489 |
+
$type_metacaps[$type_obj->cap->delete_term] = true;
|
490 |
+
}
|
491 |
+
}
|
492 |
+
}
|
493 |
+
|
494 |
+
if ( $display_row ) {
|
495 |
+
$row .= '</tr>';
|
496 |
+
echo $row;
|
497 |
+
}
|
498 |
+
}
|
499 |
+
|
500 |
+
echo '</table>';
|
501 |
+
|
502 |
+
} // end foreach item type
|
503 |
+
|
504 |
+
echo '</div>';
|
505 |
+
|
506 |
+
echo '</li>';
|
507 |
+
}
|
508 |
+
|
509 |
+
|
510 |
+
do_action('publishpress-caps_manager_postcaps_section', compact('current', 'rcaps', 'pp_metagroup_caps', 'is_administrator', 'default_caps', 'custom_types', 'defined', 'unfiltered', 'pp_metagroup_caps'));
|
511 |
+
|
512 |
+
$type_caps = apply_filters('publishpress_caps_manager_typecaps', $type_caps);
|
513 |
+
|
514 |
+
echo '</ul>';
|
515 |
+
|
516 |
+
// clicking on post type name toggles corresponding checkbox selections
|
517 |
+
?>
|
518 |
+
<script type="text/javascript">
|
519 |
+
/* <![CDATA[ */
|
520 |
+
jQuery(document).ready( function($) {
|
521 |
+
$('a[href="#toggle_type_caps"]').click( function() {
|
522 |
+
var chks = $(this).closest('tr').find('input');
|
523 |
+
var set_checked = ! $(chks).first().is(':checked');
|
524 |
+
|
525 |
+
$(chks).each(function(i,e) {
|
526 |
+
$('input[name="' + $(this).attr('name') + '"]').prop('checked', set_checked);
|
527 |
+
});
|
528 |
+
|
529 |
+
return false;
|
530 |
+
});
|
531 |
+
|
532 |
+
$('input[name^="caps["]').click(function() {
|
533 |
+
$('input[name="' + $(this).attr('name') + '"]').prop('checked', $(this).prop('checked'));
|
534 |
+
});
|
535 |
+
});
|
536 |
+
/* ]]> */
|
537 |
+
</script>
|
538 |
+
<?php
|
539 |
+
|
540 |
+
echo '<p> </p><h3>' . __( 'Other WordPress Core Capabilities', 'capsman-enhanced' ) . '</h3>';
|
541 |
+
echo '<table class="form-table cme-checklist"><tr>';
|
542 |
+
|
543 |
+
$checks_per_row = get_option( 'cme_form-rows', 5 );
|
544 |
+
$i = 0; $first_row = true;
|
545 |
+
|
546 |
+
$core_caps = _cme_core_caps();
|
547 |
+
foreach( array_keys($core_caps) as $cap_name ) {
|
548 |
+
if ( ! $is_administrator && ! current_user_can($cap_name) )
|
549 |
+
continue;
|
550 |
+
|
551 |
+
if ( $i == $checks_per_row ) {
|
552 |
+
echo '</tr><tr>';
|
553 |
+
$i = 0;
|
554 |
+
}
|
555 |
+
|
556 |
+
if ( ! isset( $rcaps[$cap_name] ) )
|
557 |
+
$class = 'cap-no';
|
558 |
+
else
|
559 |
+
$class = ( $rcaps[$cap_name] ) ? 'cap-yes' : 'cap-neg';
|
560 |
+
|
561 |
+
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
|
562 |
+
$class .= ' cap-metagroup';
|
563 |
+
$title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
|
564 |
+
} else {
|
565 |
+
$title_text = $cap_name;
|
566 |
+
}
|
567 |
+
|
568 |
+
$disabled = '';
|
569 |
+
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
|
570 |
+
$lock_capability = false;
|
571 |
+
$title = $title_text;
|
572 |
+
|
573 |
+
if ( 'read' == $cap_name ) {
|
574 |
+
if ( ! empty( $block_read_removal ) ) {
|
575 |
+
// prevent the read capability from being removed from a core role, but don't force it to be added
|
576 |
+
if ( $checked || apply_filters( 'pp_caps_force_capability_storage', false, 'read', $default ) ) {
|
577 |
+
if ( apply_filters( 'pp_caps_lock_capability', true, 'read', $default ) ) {
|
578 |
+
$lock_capability = true;
|
579 |
+
$class .= ' cap-locked';
|
580 |
+
$disabled = 'disabled="disabled"';
|
581 |
+
if ( 'administrator' != $this->current ) {
|
582 |
+
$title = esc_attr( __('Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add "dashboard_lockout_ok" capability', 'capsman-enhanced' ) );
|
583 |
+
}
|
584 |
+
}
|
585 |
+
}
|
586 |
+
}
|
587 |
+
}
|
588 |
+
|
589 |
+
?>
|
590 |
+
<td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" autocomplete="off" value="1" <?php echo $checked . $disabled;?> />
|
591 |
+
<span>
|
592 |
+
<?php
|
593 |
+
echo str_replace( '_', ' ', $cap_name );
|
594 |
+
?>
|
595 |
+
</span></label><a href="#" class="neg-cap"> x </a>
|
596 |
+
<?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
|
597 |
+
<input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
|
598 |
+
<?php endif; ?>
|
599 |
+
</td>
|
600 |
+
|
601 |
+
<?php
|
602 |
+
|
603 |
+
if ( $lock_capability ) {
|
604 |
+
echo '<input type="hidden" name="caps[' . $cap_name . ']" value="1" />';
|
605 |
+
}
|
606 |
+
|
607 |
+
++$i;
|
608 |
+
}
|
609 |
+
|
610 |
+
if ( $i == $checks_per_row ) {
|
611 |
+
echo '</tr>';
|
612 |
+
$i = 0;
|
613 |
+
} elseif ( ! $first_row ) {
|
614 |
+
// Now close a wellformed table
|
615 |
+
for ( $i; $i < $checks_per_row; $i++ ){
|
616 |
+
echo '<td> </td>';
|
617 |
+
}
|
618 |
+
echo '</tr>';
|
619 |
+
}
|
620 |
+
?>
|
621 |
+
|
622 |
+
<tr class="cme-bulk-select">
|
623 |
+
<td colspan="<?php echo $checks_per_row;?>">
|
624 |
+
<span style="float:right">
|
625 |
+
<input type="checkbox" class="cme-check-all" autocomplete="off" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>"> <a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
|
626 |
+
</span>
|
627 |
+
</td></tr>
|
628 |
+
|
629 |
+
</table>
|
630 |
+
<?php
|
631 |
+
$all_capabilities = apply_filters( 'capsman_get_capabilities', array_keys( $this->capabilities ), $this->ID );
|
632 |
+
$all_capabilities = apply_filters( 'members_get_capabilities', $all_capabilities );
|
633 |
+
|
634 |
+
/*
|
635 |
+
$publishpress_status_change_caps = array();
|
636 |
+
foreach( $all_capabilities as $cap_name ) {
|
637 |
+
if (0 === strpos($cap_name, 'status_change_')) {
|
638 |
+
$publishpress_status_change_caps []= $cap_name;
|
639 |
+
}
|
640 |
+
}
|
641 |
+
*/
|
642 |
+
|
643 |
+
$plugin_caps = [];
|
644 |
+
|
645 |
+
if (defined('PUBLISHPRESS_VERSION')) {
|
646 |
+
$plugin_caps['PublishPress'] = apply_filters('cme_publishpress_capabilities',
|
647 |
+
array(
|
648 |
+
'edit_metadata',
|
649 |
+
'edit_post_subscriptions',
|
650 |
+
'pp_manage_roles',
|
651 |
+
'pp_set_notification_channel',
|
652 |
+
'pp_view_calendar',
|
653 |
+
'pp_view_content_overview',
|
654 |
+
)
|
655 |
+
);
|
656 |
+
}
|
657 |
+
|
658 |
+
if (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION')) {
|
659 |
+
if ($_caps = apply_filters('cme_multiple_authors_capabilities', array())) {
|
660 |
+
$plugin_caps['PublishPress Authors'] = $_caps;
|
661 |
+
}
|
662 |
+
}
|
663 |
+
|
664 |
+
if (defined('PRESSPERMIT_VERSION')) {
|
665 |
+
$plugin_caps['PublishPress Permissions'] = apply_filters('cme_presspermit_capabilities',
|
666 |
+
array(
|
667 |
+
'edit_own_attachments',
|
668 |
+
'list_others_unattached_files',
|
669 |
+
'pp_administer_content',
|
670 |
+
'pp_assign_roles',
|
671 |
+
'pp_associate_any_page',
|
672 |
+
'pp_create_groups',
|
673 |
+
'pp_create_network_groups',
|
674 |
+
'pp_define_moderation',
|
675 |
+
'pp_define_post_status',
|
676 |
+
'pp_define_privacy',
|
677 |
+
'pp_delete_groups',
|
678 |
+
'pp_edit_groups',
|
679 |
+
'pp_exempt_edit_circle',
|
680 |
+
'pp_exempt_read_circle',
|
681 |
+
'pp_force_quick_edit',
|
682 |
+
'pp_list_all_files',
|
683 |
+
'pp_manage_capabilities',
|
684 |
+
'pp_manage_members',
|
685 |
+
'pp_manage_network_members',
|
686 |
+
'pp_manage_settings',
|
687 |
+
'pp_moderate_any',
|
688 |
+
'pp_set_associate_exceptions',
|
689 |
+
'pp_set_edit_exceptions',
|
690 |
+
'pp_set_read_exceptions',
|
691 |
+
'pp_set_revise_exceptions',
|
692 |
+
'pp_set_term_assign_exceptions',
|
693 |
+
'pp_set_term_associate_exceptions',
|
694 |
+
'pp_set_term_manage_exceptions',
|
695 |
+
'pp_unfiltered',
|
696 |
+
'set_posts_status',
|
697 |
+
)
|
698 |
+
);
|
699 |
+
}
|
700 |
+
|
701 |
+
if (defined('WC_PLUGIN_FILE')) {
|
702 |
+
$plugin_caps['WooCommerce'] = apply_filters('cme_woocommerce_capabilities',
|
703 |
+
array(
|
704 |
+
'assign_product_terms',
|
705 |
+
'assign_shop_coupon_terms',
|
706 |
+
'assign_shop_discount_terms',
|
707 |
+
'assign_shop_order_terms',
|
708 |
+
'assign_shop_payment_terms',
|
709 |
+
'create_shop_orders',
|
710 |
+
'delete_others_products',
|
711 |
+
'delete_others_shop_coupons',
|
712 |
+
'delete_others_shop_discounts',
|
713 |
+
'delete_others_shop_orders',
|
714 |
+
'delete_others_shop_payments',
|
715 |
+
'delete_private_products',
|
716 |
+
'delete_private_shop_coupons',
|
717 |
+
'delete_private_shop_orders',
|
718 |
+
'delete_private_shop_discounts',
|
719 |
+
'delete_private_shop_payments',
|
720 |
+
'delete_product_terms',
|
721 |
+
'delete_products',
|
722 |
+
'delete_published_products',
|
723 |
+
'delete_published_shop_coupons',
|
724 |
+
'delete_published_shop_discounts',
|
725 |
+
'delete_published_shop_orders',
|
726 |
+
'delete_published_shop_payments',
|
727 |
+
'delete_shop_coupons',
|
728 |
+
'delete_shop_coupon_terms',
|
729 |
+
'delete_shop_discount_terms',
|
730 |
+
'delete_shop_discounts',
|
731 |
+
'delete_shop_order_terms',
|
732 |
+
'delete_shop_orders',
|
733 |
+
'delete_shop_payments',
|
734 |
+
'delete_shop_payment_terms',
|
735 |
+
'edit_others_products',
|
736 |
+
'edit_others_shop_coupons',
|
737 |
+
'edit_others_shop_discounts',
|
738 |
+
'edit_others_shop_orders',
|
739 |
+
'edit_others_shop_payments',
|
740 |
+
'edit_private_products',
|
741 |
+
'edit_private_shop_coupons',
|
742 |
+
'edit_private_shop_discounts',
|
743 |
+
'edit_private_shop_orders',
|
744 |
+
'edit_private_shop_payments',
|
745 |
+
'edit_product_terms',
|
746 |
+
'edit_products',
|
747 |
+
'edit_published_products',
|
748 |
+
'edit_published_shop_coupons',
|
749 |
+
'edit_published_shop_discounts',
|
750 |
+
'edit_published_shop_orders',
|
751 |
+
'edit_published_shop_payments',
|
752 |
+
'edit_shop_coupon_terms',
|
753 |
+
'edit_shop_coupons',
|
754 |
+
'edit_shop_discounts',
|
755 |
+
'edit_shop_discount_terms',
|
756 |
+
'edit_shop_order_terms',
|
757 |
+
'edit_shop_orders',
|
758 |
+
'edit_shop_payments',
|
759 |
+
'edit_shop_payment_terms',
|
760 |
+
'export_shop_payments',
|
761 |
+
'export_shop_reports',
|
762 |
+
'import_shop_discounts',
|
763 |
+
'import_shop_payments',
|
764 |
+
'manage_product_terms',
|
765 |
+
'manage_shop_coupon_terms',
|
766 |
+
'manage_shop_discounts',
|
767 |
+
'manage_shop_discount_terms',
|
768 |
+
'manage_shop_payment_terms',
|
769 |
+
'manage_shop_order_terms',
|
770 |
+
'manage_shop_settings',
|
771 |
+
'manage_woocommerce',
|
772 |
+
'publish_products',
|
773 |
+
'publish_shop_coupons',
|
774 |
+
'publish_shop_discounts',
|
775 |
+
'publish_shop_orders',
|
776 |
+
'publish_shop_payments',
|
777 |
+
'read_private_products',
|
778 |
+
'read_private_shop_coupons',
|
779 |
+
'read_private_shop_discounts',
|
780 |
+
'read_private_shop_payments',
|
781 |
+
'read_private_shop_orders',
|
782 |
+
'view_admin_dashboard',
|
783 |
+
'view_shop_discount_stats',
|
784 |
+
'view_shop_payment_stats',
|
785 |
+
'view_shop_reports',
|
786 |
+
'view_shop_sensitive_data',
|
787 |
+
'view_woocommerce_reports',
|
788 |
+
)
|
789 |
+
);
|
790 |
+
}
|
791 |
+
|
792 |
+
$plugin_caps = apply_filters('cme_plugin_capabilities', $plugin_caps);
|
793 |
+
|
794 |
+
foreach($plugin_caps as $plugin => $__plugin_caps) {
|
795 |
+
$_plugin_caps = array_fill_keys($__plugin_caps, true);
|
796 |
+
|
797 |
+
echo '<h3 class="cme-cap-section">' . sprintf(__( '%s Capabilities', 'capsman-enhanced' ), str_replace('_', ' ', $plugin )) . '</h3>';
|
798 |
+
echo '<table class="form-table cme-checklist"><tr>';
|
799 |
+
|
800 |
+
$checks_per_row = get_option( 'cme_form-rows', 5 );
|
801 |
+
$i = 0; $first_row = true;
|
802 |
+
|
803 |
+
foreach( array_keys($_plugin_caps) as $cap_name ) {
|
804 |
+
if ( isset( $type_caps[$cap_name] ) || isset($core_caps[$cap_name]) || isset($type_metacaps[$cap_name]) ) {
|
805 |
+
continue;
|
806 |
+
}
|
807 |
+
|
808 |
+
if ( ! $is_administrator && ! current_user_can($cap_name) )
|
809 |
+
continue;
|
810 |
+
|
811 |
+
if ( $i == $checks_per_row ) {
|
812 |
+
echo '</tr><tr>';
|
813 |
+
$i = 0;
|
814 |
+
}
|
815 |
+
|
816 |
+
if ( ! isset( $rcaps[$cap_name] ) )
|
817 |
+
$class = 'cap-no';
|
818 |
+
else
|
819 |
+
$class = ( $rcaps[$cap_name] ) ? 'cap-yes' : 'cap-neg';
|
820 |
+
|
821 |
+
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
|
822 |
+
$class .= ' cap-metagroup';
|
823 |
+
$title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
|
824 |
+
} else {
|
825 |
+
$title_text = $cap_name;
|
826 |
+
}
|
827 |
+
|
828 |
+
$disabled = '';
|
829 |
+
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
|
830 |
+
$title = $title_text;
|
831 |
+
?>
|
832 |
+
<td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" autocomplete="off" value="1" <?php echo $checked . $disabled;?> />
|
833 |
+
<span>
|
834 |
+
<?php
|
835 |
+
echo str_replace( '_', ' ', $cap_name );
|
836 |
+
?>
|
837 |
+
</span></label><a href="#" class="neg-cap"> x </a>
|
838 |
+
<?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
|
839 |
+
<input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
|
840 |
+
<?php endif; ?>
|
841 |
+
</td>
|
842 |
+
|
843 |
+
<?php
|
844 |
+
++$i;
|
845 |
+
}
|
846 |
+
|
847 |
+
if ( $i == $checks_per_row ) {
|
848 |
+
echo '</tr>';
|
849 |
+
$i = 0;
|
850 |
+
} elseif ( ! $first_row ) {
|
851 |
+
// Now close a wellformed table
|
852 |
+
for ( $i; $i < $checks_per_row; $i++ ){
|
853 |
+
echo '<td> </td>';
|
854 |
+
}
|
855 |
+
echo '</tr>';
|
856 |
+
}
|
857 |
+
?>
|
858 |
+
|
859 |
+
<tr class="cme-bulk-select">
|
860 |
+
<td colspan="<?php echo $checks_per_row;?>">
|
861 |
+
<span style="float:right">
|
862 |
+
<input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>"> <a class="cme-neg-all" href="#" autocomplete="off" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
|
863 |
+
</span>
|
864 |
+
</td></tr>
|
865 |
+
|
866 |
+
</table>
|
867 |
+
<?php
|
868 |
+
}
|
869 |
+
|
870 |
+
|
871 |
+
if (array_intersect(array_keys(array_filter($type_metacaps)), $all_capabilities) && array_intersect_key($type_metacaps, array_filter($rcaps))) {
|
872 |
+
|
873 |
+
echo '<h3 class="cme-cap-section">' . __( 'Invalid Capabilities', 'capsman-enhanced' ) . '</h3>';
|
874 |
+
?>
|
875 |
+
|
876 |
+
<div>
|
877 |
+
<span class="cme-subtext">
|
878 |
+
<?php _e('The following entries have no effect. Please assign desired capabilities in the Read / Edit / Delete grid above.', 'capsman-enhanced');?>
|
879 |
+
</span>
|
880 |
+
</div>
|
881 |
+
|
882 |
+
<table class="form-table cme-checklist">
|
883 |
+
<tr>
|
884 |
+
<?php
|
885 |
+
$i = 0; $first_row = true;
|
886 |
+
|
887 |
+
foreach( $all_capabilities as $cap_name ) {
|
888 |
+
if ( ! isset($this->capabilities[$cap_name]) )
|
889 |
+
$this->capabilities[$cap_name] = str_replace( '_', ' ', $cap_name );
|
890 |
+
}
|
891 |
+
|
892 |
+
uasort( $this->capabilities, 'strnatcasecmp' ); // sort by array values, but maintain keys );
|
893 |
+
|
894 |
+
foreach ( $this->capabilities as $cap_name => $cap ) :
|
895 |
+
if (!isset($type_metacaps[$cap_name]) || empty($rcaps[$cap_name])) {
|
896 |
+
continue;
|
897 |
+
}
|
898 |
+
|
899 |
+
if ( ! $is_administrator && empty( $current_user->allcaps[$cap_name] ) ) {
|
900 |
+
continue;
|
901 |
+
}
|
902 |
+
|
903 |
+
if ( $i == $checks_per_row ) {
|
904 |
+
echo '</tr><tr>';
|
905 |
+
$i = 0; $first_row = false;
|
906 |
+
}
|
907 |
+
|
908 |
+
if ( ! isset( $rcaps[$cap_name] ) )
|
909 |
+
$class = 'cap-no';
|
910 |
+
else
|
911 |
+
$class = ( $rcaps[$cap_name] ) ? 'cap-yes' : 'cap-neg';
|
912 |
+
|
913 |
+
$title_text = $cap_name;
|
914 |
+
|
915 |
+
$disabled = '';
|
916 |
+
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
|
917 |
+
?>
|
918 |
+
<td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title_text;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" autocomplete="off" value="1" <?php echo $checked . $disabled;?> />
|
919 |
+
<span>
|
920 |
+
<?php
|
921 |
+
echo str_replace( '_', ' ', $cap );
|
922 |
+
?>
|
923 |
+
</span></label><a href="#" class="neg-cap"> x </a>
|
924 |
+
<?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
|
925 |
+
<input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
|
926 |
+
<?php endif; ?>
|
927 |
+
</td>
|
928 |
+
<?php
|
929 |
+
$i++;
|
930 |
+
endforeach;
|
931 |
+
|
932 |
+
if ( ! empty($lock_manage_caps_capability) ) {
|
933 |
+
echo '<input type="hidden" name="caps[manage_capabilities]" value="1" />';
|
934 |
+
}
|
935 |
+
|
936 |
+
if ( $i == $checks_per_row ) {
|
937 |
+
echo '</tr><tr>';
|
938 |
+
$i = 0;
|
939 |
+
} else {
|
940 |
+
if ( ! $first_row ) {
|
941 |
+
// Now close a wellformed table
|
942 |
+
for ( $i; $i < $checks_per_row; $i++ ){
|
943 |
+
echo '<td> </td>';
|
944 |
+
}
|
945 |
+
echo '</tr>';
|
946 |
+
}
|
947 |
+
}
|
948 |
+
?>
|
949 |
+
|
950 |
+
</table><p> </p>
|
951 |
+
<?php
|
952 |
+
} // endif any invalid caps
|
953 |
+
|
954 |
+
|
955 |
+
echo '<p> </p><h3 class="cme-cap-section">' . __( 'Additional Capabilities', 'capsman-enhanced' ) . '</h3>';
|
956 |
+
|
957 |
+
?>
|
958 |
+
<table class="form-table cme-checklist">
|
959 |
+
<tr>
|
960 |
+
<?php
|
961 |
+
$i = 0; $first_row = true;
|
962 |
+
|
963 |
+
foreach( $all_capabilities as $cap_name ) {
|
964 |
+
if ( ! isset($this->capabilities[$cap_name]) )
|
965 |
+
$this->capabilities[$cap_name] = str_replace( '_', ' ', $cap_name );
|
966 |
+
}
|
967 |
+
|
968 |
+
uasort( $this->capabilities, 'strnatcasecmp' ); // sort by array values, but maintain keys );
|
969 |
+
|
970 |
+
$additional_caps = apply_filters('publishpress_caps_manage_additional_caps', $this->capabilities);
|
971 |
+
|
972 |
+
foreach ($additional_caps as $cap_name => $cap) :
|
973 |
+
|
974 |
+
if ((isset($type_caps[$cap_name]) && !isset($type_metacaps[$cap_name]))
|
975 |
+
|| isset($core_caps[$cap_name])
|
976 |
+
|| (isset($type_metacaps[$cap_name]) && !empty($rcaps[$cap_name])) ) {
|
977 |
+
continue;
|
978 |
+
}
|
979 |
+
|
980 |
+
if (!isset($type_metacaps[$cap_name]) || !empty($rcaps[$cap_name])) {
|
981 |
+
foreach(array_keys($plugin_caps) as $plugin) {
|
982 |
+
if ( in_array( $cap_name, $plugin_caps[$plugin]) ) {
|
983 |
+
continue 2;
|
984 |
+
}
|
985 |
+
}
|
986 |
+
}
|
987 |
+
|
988 |
+
if ( ! $is_administrator && empty( $current_user->allcaps[$cap_name] ) ) {
|
989 |
+
continue;
|
990 |
+
}
|
991 |
+
|
992 |
+
// Levels are not shown.
|
993 |
+
if ( preg_match( '/^level_(10|[0-9])$/i', $cap_name ) ) {
|
994 |
+
continue;
|
995 |
+
}
|
996 |
+
|
997 |
+
if ( $i == $checks_per_row ) {
|
998 |
+
echo '</tr><tr>';
|
999 |
+
$i = 0; $first_row = false;
|
1000 |
+
}
|
1001 |
+
|
1002 |
+
if ( ! isset( $rcaps[$cap_name] ) )
|
1003 |
+
$class = 'cap-no';
|
1004 |
+
else
|
1005 |
+
$class = ( $rcaps[$cap_name] ) ? 'cap-yes' : 'cap-neg';
|
1006 |
+
|
1007 |
+
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
|
1008 |
+
$class .= ' cap-metagroup';
|
1009 |
+
$title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
|
1010 |
+
} else {
|
1011 |
+
$title_text = $cap_name;
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
$disabled = '';
|
1015 |
+
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
|
1016 |
+
|
1017 |
+
if ( 'manage_capabilities' == $cap_name ) {
|
1018 |
+
if (!current_user_can('administrator') && (!is_multisite() || !is_super_admin())) {
|
1019 |
+
continue;
|
1020 |
+
} elseif ( 'administrator' == $default ) {
|
1021 |
+
$class .= ' cap-locked';
|
1022 |
+
$lock_manage_caps_capability = true;
|
1023 |
+
$disabled = 'disabled="disabled"';
|
1024 |
+
}
|
1025 |
+
}
|
1026 |
+
?>
|
1027 |
+
<td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title_text;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" autocomplete="off" value="1" <?php echo $checked . $disabled;?> />
|
1028 |
+
<span>
|
1029 |
+
<?php
|
1030 |
+
echo str_replace( '_', ' ', $cap );
|
1031 |
+
?>
|
1032 |
+
</span></label><a href="#" class="neg-cap"> x </a>
|
1033 |
+
<?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
|
1034 |
+
<input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
|
1035 |
+
<?php endif; ?>
|
1036 |
+
</td>
|
1037 |
+
<?php
|
1038 |
+
$i++;
|
1039 |
+
endforeach;
|
1040 |
+
|
1041 |
+
if ( ! empty($lock_manage_caps_capability) ) {
|
1042 |
+
echo '<input type="hidden" name="caps[manage_capabilities]" value="1" />';
|
1043 |
+
}
|
1044 |
+
|
1045 |
+
if ( $i == $checks_per_row ) {
|
1046 |
+
echo '</tr><tr>';
|
1047 |
+
$i = 0;
|
1048 |
+
} else {
|
1049 |
+
if ( ! $first_row ) {
|
1050 |
+
// Now close a wellformed table
|
1051 |
+
for ( $i; $i < $checks_per_row; $i++ ){
|
1052 |
+
echo '<td> </td>';
|
1053 |
+
}
|
1054 |
+
echo '</tr>';
|
1055 |
+
}
|
1056 |
+
}
|
1057 |
+
?>
|
1058 |
+
|
1059 |
+
<tr class="cme-bulk-select">
|
1060 |
+
<td colspan="<?php echo $checks_per_row;?>">
|
1061 |
+
<span style="float:right">
|
1062 |
+
<input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>"> <a class="cme-neg-all" href="#" autocomplete="off" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
|
1063 |
+
</span>
|
1064 |
+
</td></tr>
|
1065 |
+
|
1066 |
+
</table>
|
1067 |
+
|
1068 |
+
<div>
|
1069 |
+
<?php
|
1070 |
+
$level = ak_caps2level($rcaps);
|
1071 |
+
?>
|
1072 |
+
<span title="<?php _e('Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities.', 'capsman-enhanced');?>">
|
1073 |
+
|
1074 |
+
<?php (in_array(get_locale(), ['en_EN', 'en_US'])) ? printf('Role Level:') : _e('Level:', 'capsman-enhanced');?> <select name="level">
|
1075 |
+
<?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
|
1076 |
+
<option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>> <?php echo $l; ?> </option>
|
1077 |
+
<?php }
|
1078 |
+
?>
|
1079 |
+
</select>
|
1080 |
+
</span>
|
1081 |
+
|
1082 |
+
</div>
|
1083 |
+
</dd>
|
1084 |
+
</dl>
|
1085 |
+
|
1086 |
+
<?php
|
1087 |
+
$support_pp_only_roles = defined('PRESSPERMIT_ACTIVE');
|
1088 |
+
cme_network_role_ui( $default );
|
1089 |
+
?>
|
1090 |
+
|
1091 |
+
<p class="submit">
|
1092 |
+
<input type="hidden" name="action" value="update" />
|
1093 |
+
<input type="hidden" name="current" value="<?php echo $default; ?>" />
|
1094 |
+
<input type="submit" name="SaveRole" value="<?php echo (in_array(get_locale(), ['en_EN', 'en_US'])) ? 'Save Capabilities' : _e('Save Changes', 'capsman-enhanced');?>" class="button-primary" />
|
1095 |
+
|
1096 |
+
<?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
|
1097 |
+
<a class="ak-delete" title="<?php echo esc_attr(__('Delete this role', 'capsman-enhanced')) ?>" href="<?php echo wp_nonce_url("admin.php?page={$this->ID}&action=delete&role={$default}", 'delete-role_' . $default); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete the %s role.\n\n 'Cancel' to stop, 'OK' to delete.", 'capsman-enhanced'), $roles[$default])); ?>') ) { return true;}return false;"><?php _e('Delete Role', 'capsman-enhanced')?></a>
|
1098 |
+
<?php endif; ?>
|
1099 |
+
</p>
|
1100 |
+
|
1101 |
+
</td>
|
1102 |
+
<td class="sidebar">
|
1103 |
+
<?php do_action('publishpress-caps_sidebar_top');?>
|
1104 |
+
|
1105 |
+
<dl>
|
1106 |
+
<dt><?php _e('Add Capability', 'capsman-enhanced'); ?></dt>
|
1107 |
+
<dd style="text-align:center;">
|
1108 |
+
<p><input type="text" name="capability-name" class="regular-text" placeholder="<?php echo 'capability_name';?>" /><br />
|
1109 |
+
<input type="submit" name="AddCap" value="<?php _e('Add to role', 'capsman-enhanced') ?>" class="button" /></p>
|
1110 |
+
</dd>
|
1111 |
+
</dl>
|
1112 |
+
|
1113 |
+
<?php
|
1114 |
+
$pp_ui->pp_types_ui( $defined['type'] );
|
1115 |
+
$pp_ui->pp_taxonomies_ui( $defined['taxonomy'] );
|
1116 |
+
|
1117 |
+
do_action('publishpress-caps_sidebar_bottom');
|
1118 |
+
?>
|
1119 |
+
|
1120 |
+
<dl>
|
1121 |
+
<dt><?php (!in_array(get_locale(), ['en_EN', 'en_US'])) ? _e('Copy this role to', 'capsman-enhanced') : printf('Copy %s Role', translate_user_role($roles[$default])); ?></dt>
|
1122 |
+
<dd style="text-align:center;">
|
1123 |
+
<?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
|
1124 |
+
<p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Role Name', 'capsman-enhanced') ?>" />
|
1125 |
+
|
1126 |
+
<?php if( $support_pp_only_roles ) : ?>
|
1127 |
+
<label for="copy_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" autocomplete="off" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
|
1128 |
+
<?php endif; ?>
|
1129 |
+
|
1130 |
+
<br />
|
1131 |
+
<input type="submit" name="CopyRole" value="<?php _e('Copy', 'capsman-enhanced') ?>" class="button" />
|
1132 |
+
</p>
|
1133 |
+
</dd>
|
1134 |
+
</dl>
|
1135 |
+
|
1136 |
+
<dl>
|
1137 |
+
<dt><?php _e('Rename Role', 'capsman-enhanced'); ?></dt>
|
1138 |
+
<dd style="text-align:center;">
|
1139 |
+
<p><input type="text" name="rename-name" class="regular-text" placeholder="<?php _e('New Role Name', 'capsman-enhanced') ?>" />
|
1140 |
+
|
1141 |
+
<br />
|
1142 |
+
<input type="submit" name="RenameRole" value="<?php _e('Rename', 'capsman-enhanced') ?>" class="button" />
|
1143 |
+
</p>
|
1144 |
+
</dd>
|
1145 |
+
</dl>
|
1146 |
+
</td>
|
1147 |
+
</tr>
|
1148 |
+
</table>
|
1149 |
+
</fieldset>
|
1150 |
+
</form>
|
1151 |
+
|
1152 |
+
<?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
|
1153 |
+
cme_publishpressFooter();
|
1154 |
+
}
|
1155 |
+
?>
|
1156 |
+
</div>
|
1157 |
+
|
1158 |
+
<?php
|
1159 |
+
function cme_network_role_ui( $default ) {
|
1160 |
+
if (!is_multisite() || !is_super_admin() || !is_main_site()) {
|
1161 |
+
return false;
|
1162 |
+
}
|
1163 |
+
?>
|
1164 |
+
|
1165 |
+
<div style="float:right;margin-left:10px;margin-right:10px">
|
1166 |
+
<?php
|
1167 |
+
if ( ! $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) )
|
1168 |
+
$autocreate_roles = array();
|
1169 |
+
?>
|
1170 |
+
<div style="margin-bottom: 5px">
|
1171 |
+
<label for="cme_autocreate_role" title="<?php _e('Create this role definition in new (future) sites', 'capsman-enhanced');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" autocomplete="off" value="1" <?php echo checked(in_array($default, $autocreate_roles));?>> <?php _e('include in new sites', 'capsman-enhanced'); ?> </label>
|
1172 |
+
</div>
|
1173 |
+
<div>
|
1174 |
+
<label for="cme_net_sync_role" title="<?php echo esc_attr(__('Copy / update this role definition to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" autocomplete="off" value="1"> <?php _e('sync role to all sites now', 'capsman-enhanced'); ?> </label>
|
1175 |
+
</div>
|
1176 |
+
<div>
|
1177 |
+
<label for="cme_net_sync_options" title="<?php echo esc_attr(__('Copy option settings to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_options" id="cme_net_sync_options" autocomplete="off" value="1"> <?php _e('sync options to all sites now', 'capsman-enhanced'); ?> </label>
|
1178 |
+
</div>
|
1179 |
+
</div>
|
1180 |
+
<?php
|
1181 |
+
return true;
|
1182 |
+
}
|
1183 |
+
|
1184 |
+
function cme_plugin_info_url( $plugin_slug ) {
|
1185 |
+
$_url = "plugin-install.php?tab=plugin-information&plugin=$plugin_slug&TB_iframe=true&width=640&height=678";
|
1186 |
+
return ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
|
1187 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/backup-handler.php
CHANGED
@@ -1,10 +1,4 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* PublishPress Capabilities [Free]
|
4 |
-
*
|
5 |
-
* Process update operations from Backup screen
|
6 |
-
*
|
7 |
-
*/
|
8 |
|
9 |
class Capsman_BackupHandler
|
10 |
{
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
class Capsman_BackupHandler
|
4 |
{
|
includes/backup.php
CHANGED
@@ -222,7 +222,7 @@ $auto_backups = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb-
|
|
222 |
?>
|
223 |
|
224 |
<h4<?php echo $role_class;?>><?php printf(__('%s (level %s)', 'capsman-enhanced'), translate_user_role($role_caption), $level); ?></h4>
|
225 |
-
|
226 |
<?php
|
227 |
$items = [];
|
228 |
$any_changes = false;
|
222 |
?>
|
223 |
|
224 |
<h4<?php echo $role_class;?>><?php printf(__('%s (level %s)', 'capsman-enhanced'), translate_user_role($role_caption), $level); ?></h4>
|
225 |
+
|
226 |
<?php
|
227 |
$items = [];
|
228 |
$any_changes = false;
|
includes/cap-helper.php
CHANGED
@@ -1,13 +1,6 @@
|
|
1 |
<?php
|
2 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
|
4 |
-
/*
|
5 |
-
* PublishPress Capabilities [Free]
|
6 |
-
*
|
7 |
-
* For post types and taxonomies with "Type-Specific Capabilities" enabled, modify defined capabilities to be unique
|
8 |
-
*
|
9 |
-
*/
|
10 |
-
|
11 |
// @todo: port improvements back to PP Core
|
12 |
|
13 |
class CME_Cap_Helper {
|
1 |
<?php
|
2 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
// @todo: port improvements back to PP Core
|
5 |
|
6 |
class CME_Cap_Helper {
|
includes/features/admin-features.php
DELETED
@@ -1,303 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Capability Manager Admin Features.
|
4 |
-
* Hide and block selected Admin Features like toolbar, dashboard widgets etc per-role.
|
5 |
-
*
|
6 |
-
* Copyright 2020, PublishPress <help@publishpress.com>
|
7 |
-
*
|
8 |
-
* This program is free software; you can redistribute it and/or
|
9 |
-
* modify it under the terms of the GNU General Public License
|
10 |
-
* version 2 as published by the Free Software Foundation.
|
11 |
-
*
|
12 |
-
* This program is distributed in the hope that it will be useful,
|
13 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
-
* GNU General Public License for more details.
|
16 |
-
*
|
17 |
-
* You should have received a copy of the GNU General Public License
|
18 |
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19 |
-
*/
|
20 |
-
|
21 |
-
require_once(dirname(CME_FILE) . '/includes/features/restrict-admin-features.php');
|
22 |
-
|
23 |
-
global $capsman;
|
24 |
-
|
25 |
-
$roles = $capsman->roles;
|
26 |
-
$default_role = $capsman->get_last_role();
|
27 |
-
|
28 |
-
|
29 |
-
$disabled_admin_items = !empty(get_option('capsman_disabled_admin_features')) ? (array)get_option('capsman_disabled_admin_features') : [];
|
30 |
-
$disabled_admin_items = array_key_exists($default_role, $disabled_admin_items) ? (array)$disabled_admin_items[$default_role] : [];
|
31 |
-
|
32 |
-
$admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
|
33 |
-
?>
|
34 |
-
|
35 |
-
<div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper">
|
36 |
-
<div id="icon-capsman-admin" class="icon32"></div>
|
37 |
-
<h2><?php _e('Admin Feature Restrictions', 'capabilities-pro'); ?></h2>
|
38 |
-
|
39 |
-
<form method="post" id="ppc-admin-features-form" action="admin.php?page=pp-capabilities-admin-features">
|
40 |
-
<?php wp_nonce_field('pp-capabilities-admin-features'); ?>
|
41 |
-
|
42 |
-
<fieldset>
|
43 |
-
<table id="akmin">
|
44 |
-
<tr>
|
45 |
-
<td class="content">
|
46 |
-
|
47 |
-
<div class="publishpress-headline">
|
48 |
-
<span class="cme-subtext">
|
49 |
-
<span class='pp-capability-role-caption'>
|
50 |
-
<?php
|
51 |
-
_e('Note: You are only restricting access to admin features screens. Some plugins may also add features to other areas of WordPress.',
|
52 |
-
'capabilities-pro');
|
53 |
-
?>
|
54 |
-
</span>
|
55 |
-
</span>
|
56 |
-
</div>
|
57 |
-
<div class="publishpress-filters">
|
58 |
-
<select name="ppc-admin-features-role" class="ppc-admin-features-role">
|
59 |
-
<?php
|
60 |
-
foreach ($roles as $role => $name) :
|
61 |
-
$name = translate_user_role($name);
|
62 |
-
?>
|
63 |
-
<option value="<?php echo $role; ?>" <?php selected($default_role,
|
64 |
-
$role); ?>><?php echo $name; ?></option>
|
65 |
-
<?php
|
66 |
-
endforeach;
|
67 |
-
?>
|
68 |
-
</select>
|
69 |
-
|
70 |
-
<img class="loading" src="<?php echo $capsman->mod_url; ?>/images/wpspin_light.gif"
|
71 |
-
style="display: none">
|
72 |
-
|
73 |
-
<input type="submit" name="admin-features-submit"
|
74 |
-
value="<?php _e('Save Changes', 'capabilities-pro') ?>"
|
75 |
-
class="button-primary ppc-admin-features-submit" style="float:right"/>
|
76 |
-
</div>
|
77 |
-
|
78 |
-
<div id="pp-capability-menu-wrapper" class="postbox">
|
79 |
-
<div class="pp-capability-menus">
|
80 |
-
|
81 |
-
<div class="pp-capability-menus-wrap">
|
82 |
-
<div id="pp-capability-menus-general"
|
83 |
-
class="pp-capability-menus-content editable-role" style="display: block;">
|
84 |
-
|
85 |
-
<table
|
86 |
-
class="wp-list-table widefat fixed striped pp-capability-menus-select">
|
87 |
-
|
88 |
-
<thead>
|
89 |
-
<tr class="ppc-menu-row parent-menu">
|
90 |
-
|
91 |
-
<td class="restrict-column ppc-menu-checkbox">
|
92 |
-
<input id="check-all-item"
|
93 |
-
class="check-item check-all-menu-item" type="checkbox"/>
|
94 |
-
</td>
|
95 |
-
<td class="menu-column ppc-menu-item">
|
96 |
-
<label for="check-all-item">
|
97 |
-
<span class="menu-item-link check-all-menu-link">
|
98 |
-
<strong>
|
99 |
-
<?php _e('Toggle all', 'capabilities-pro'); ?>
|
100 |
-
</strong>
|
101 |
-
</span></label>
|
102 |
-
</td>
|
103 |
-
|
104 |
-
</tr>
|
105 |
-
</thead>
|
106 |
-
|
107 |
-
<tfoot>
|
108 |
-
<tr class="ppc-menu-row parent-menu">
|
109 |
-
|
110 |
-
<td class="restrict-column ppc-menu-checkbox">
|
111 |
-
<input id="check-all-item-2"
|
112 |
-
class="check-item check-all-menu-item" type="checkbox"/>
|
113 |
-
</td>
|
114 |
-
<td class="menu-column ppc-menu-item">
|
115 |
-
<label for="check-all-item-2">
|
116 |
-
<span class="menu-item-link check-all-menu-link">
|
117 |
-
<strong>
|
118 |
-
<?php _e('Toggle all', 'capabilities-pro'); ?>
|
119 |
-
</strong>
|
120 |
-
</span>
|
121 |
-
</label>
|
122 |
-
</td>
|
123 |
-
|
124 |
-
</tr>
|
125 |
-
</tfoot>
|
126 |
-
|
127 |
-
<tbody>
|
128 |
-
|
129 |
-
<?php
|
130 |
-
$icon_list = (array)PP_Capabilities_Admin_Features::elementLayoutItemIcons();
|
131 |
-
|
132 |
-
$sn = 0;
|
133 |
-
foreach ($admin_features_elements as $section_title => $section_elements) {
|
134 |
-
$sn++;
|
135 |
-
$section_slug = strtolower(ppc_remove_non_alphanumeric_space_characters($section_title));
|
136 |
-
$icon_name = isset($icon_list[$section_slug]) ? $icon_list[$section_slug] : '—';
|
137 |
-
?>
|
138 |
-
|
139 |
-
|
140 |
-
<tr class="ppc-menu-row parent-menu">
|
141 |
-
|
142 |
-
<td class="features-section-header" colspan="2">
|
143 |
-
<strong><i
|
144 |
-
class="dashicons dashicons-<?php echo $icon_name ?>"></i> <?php echo $section_title; ?>
|
145 |
-
</strong>
|
146 |
-
</td>
|
147 |
-
|
148 |
-
</tr>
|
149 |
-
|
150 |
-
<?php
|
151 |
-
foreach ($section_elements as $section_id => $section_array) {
|
152 |
-
$sn++;
|
153 |
-
if (!$section_id) {
|
154 |
-
continue;
|
155 |
-
}
|
156 |
-
$item_name = $section_array['label'];
|
157 |
-
$item_action = $section_array['action'];
|
158 |
-
$restrict_value = $item_action.'||'.$section_id;
|
159 |
-
if($item_action === 'ppc_dashboard_widget'){
|
160 |
-
$restrict_value .= '||'.$section_array['context'];
|
161 |
-
}
|
162 |
-
?>
|
163 |
-
|
164 |
-
<tr class="ppc-menu-row child-menu">
|
165 |
-
|
166 |
-
<td class="restrict-column ppc-menu-checkbox">
|
167 |
-
<input
|
168 |
-
id="check-item-<?php echo $sn; ?>"
|
169 |
-
class="check-item" type="checkbox"
|
170 |
-
name="capsman_disabled_admin_features[]"
|
171 |
-
value="<?php echo $restrict_value; ?>"
|
172 |
-
<?php echo (in_array($restrict_value, $disabled_admin_items)) ? 'checked' : ''; ?>/>
|
173 |
-
</td>
|
174 |
-
<td class="menu-column ppc-menu-item'">
|
175 |
-
|
176 |
-
<label for="check-item-<?php echo $sn; ?>">
|
177 |
-
<span
|
178 |
-
class="menu-item-link<?php echo (in_array($restrict_value,
|
179 |
-
$disabled_admin_items)) ? ' restricted' : ''; ?>">
|
180 |
-
<strong>
|
181 |
-
<?php
|
182 |
-
if ((isset($section_array['step']) && $section_array['step'] > 0) && isset($section_array['parent']) && !empty($section_array['parent'])) {
|
183 |
-
$step_margin = $section_array['step'] * 20;
|
184 |
-
echo '<span style="margin-left: ' . $step_margin . 'px;"></span>';
|
185 |
-
echo ' ' . $section_array['position'] . '. ';
|
186 |
-
} else {
|
187 |
-
if (isset($icon_list[$section_id])) {
|
188 |
-
echo '<i class="dashicons dashicons-' . $icon_list[$section_id] . '"></i>';
|
189 |
-
} else {
|
190 |
-
echo '—';
|
191 |
-
}
|
192 |
-
}
|
193 |
-
?>
|
194 |
-
<?php echo $item_name; ?>
|
195 |
-
</strong></span>
|
196 |
-
</label>
|
197 |
-
</td>
|
198 |
-
|
199 |
-
</tr>
|
200 |
-
|
201 |
-
<?php
|
202 |
-
}//end $section_elements subsection loop
|
203 |
-
}// end $admin_features_elements section loop
|
204 |
-
|
205 |
-
?>
|
206 |
-
</tbody>
|
207 |
-
</table>
|
208 |
-
</div>
|
209 |
-
|
210 |
-
</div>
|
211 |
-
</div>
|
212 |
-
</div>
|
213 |
-
<input type="submit" name="admin-features-submit"
|
214 |
-
value="<?php _e('Save Changes', 'capabilities-pro') ?>"
|
215 |
-
class="button-primary ppc-admin-features-submit"/>
|
216 |
-
</td>
|
217 |
-
</tr>
|
218 |
-
</table>
|
219 |
-
|
220 |
-
</fieldset>
|
221 |
-
|
222 |
-
</form>
|
223 |
-
|
224 |
-
<script type="text/javascript">
|
225 |
-
/* <![CDATA[ */
|
226 |
-
jQuery(document).ready(function($) {
|
227 |
-
|
228 |
-
// -------------------------------------------------------------
|
229 |
-
// reload page for instant reflection if user is updating own role
|
230 |
-
// -------------------------------------------------------------
|
231 |
-
<?php if(!empty($ppc_page_reload) && (int)$ppc_page_reload === 1){ ?>
|
232 |
-
window.location = '<?php echo admin_url('admin.php?page=pp-capabilities-admin-features&role=' . $default_role . ''); ?>'
|
233 |
-
<?php } ?>
|
234 |
-
|
235 |
-
// -------------------------------------------------------------
|
236 |
-
// Set form action attribute to include role
|
237 |
-
// -------------------------------------------------------------
|
238 |
-
$('#ppc-admin-features-form').attr('action', '<?php echo admin_url('admin.php?page=pp-capabilities-admin-features&role=' . $default_role . ''); ?>')
|
239 |
-
|
240 |
-
// -------------------------------------------------------------
|
241 |
-
// Instant restricted item class
|
242 |
-
// -------------------------------------------------------------
|
243 |
-
$(document).on('change', '.pp-capability-menus-wrapper .ppc-menu-row .check-item', function() {
|
244 |
-
|
245 |
-
if ($(this).is(':checked')) {
|
246 |
-
//add class if value is checked
|
247 |
-
$(this).closest('tr').find('.menu-item-link').addClass('restricted')
|
248 |
-
|
249 |
-
//toggle all checkbox
|
250 |
-
if ($(this).hasClass('check-all-menu-item')) {
|
251 |
-
$("input[type='checkbox'][name='capsman_disabled_admin_features[]']").prop('checked', true)
|
252 |
-
$('.menu-item-link').addClass('restricted')
|
253 |
-
} else {
|
254 |
-
$('.check-all-menu-link').removeClass('restricted')
|
255 |
-
$('.check-all-menu-item').prop('checked', false)
|
256 |
-
}
|
257 |
-
|
258 |
-
} else {
|
259 |
-
//unchecked value
|
260 |
-
$(this).closest('tr').find('.menu-item-link').removeClass('restricted')
|
261 |
-
|
262 |
-
//toggle all checkbox
|
263 |
-
if ($(this).hasClass('check-all-menu-item')) {
|
264 |
-
$("input[type='checkbox'][name='capsman_disabled_admin_features[]']").prop('checked', false)
|
265 |
-
$('.menu-item-link').removeClass('restricted')
|
266 |
-
} else {
|
267 |
-
$('.check-all-menu-link').removeClass('restricted')
|
268 |
-
$('.check-all-menu-item').prop('checked', false)
|
269 |
-
}
|
270 |
-
|
271 |
-
}
|
272 |
-
|
273 |
-
})
|
274 |
-
|
275 |
-
// -------------------------------------------------------------
|
276 |
-
// Load selected roles menu
|
277 |
-
// -------------------------------------------------------------
|
278 |
-
$(document).on('change', '.pp-capability-menus-wrapper .ppc-admin-features-role', function() {
|
279 |
-
|
280 |
-
//disable select
|
281 |
-
$('.pp-capability-menus-wrapper .ppc-admin-features-role').attr('disabled', true)
|
282 |
-
|
283 |
-
//hide button
|
284 |
-
$('.pp-capability-menus-wrapper .ppc-admin-features-submit').hide()
|
285 |
-
|
286 |
-
//show loading
|
287 |
-
$('#pp-capability-menu-wrapper').hide()
|
288 |
-
$('div.publishpress-caps-manage img.loading').show()
|
289 |
-
|
290 |
-
//go to url
|
291 |
-
window.location = '<?php echo admin_url('admin.php?page=pp-capabilities-admin-features&role='); ?>' + $(this).val() + ''
|
292 |
-
|
293 |
-
})
|
294 |
-
})
|
295 |
-
/* ]]> */
|
296 |
-
</script>
|
297 |
-
|
298 |
-
<?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
|
299 |
-
cme_publishpressFooter();
|
300 |
-
}
|
301 |
-
?>
|
302 |
-
</div>
|
303 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/features/editor-features-classic.php
CHANGED
@@ -15,7 +15,7 @@ foreach($def_post_types as $post_type) {
|
|
15 |
<?php foreach(['thead', 'tfoot'] as $tag):?>
|
16 |
<<?php echo $tag;?>>
|
17 |
<tr>
|
18 |
-
<th class="menu-column"><?php
|
19 |
|
20 |
<?php foreach($def_post_types as $post_type) :
|
21 |
$type_obj = get_post_type_object($post_type);
|
@@ -31,23 +31,10 @@ foreach($def_post_types as $post_type) {
|
|
31 |
<tbody>
|
32 |
<?php
|
33 |
foreach ($ce_elements as $section_title => $arr) {
|
34 |
-
$section_slug = strtolower(ppc_remove_non_alphanumeric_space_characters($section_title));
|
35 |
?>
|
36 |
<tr class="ppc-menu-row parent-menu">
|
37 |
<td colspan="<?php echo (count($def_post_types) + 1);?>">
|
38 |
<h4 class="ppc-menu-row-section"><?php echo $section_title;?></h4>
|
39 |
-
<?php
|
40 |
-
/**
|
41 |
-
* Add support for section description
|
42 |
-
*
|
43 |
-
* @param array $def_post_types Post type.
|
44 |
-
* @param array $ce_elements All classic editor elements.
|
45 |
-
* @param array $ce_post_disabled All classic editor disabled post type element.
|
46 |
-
*
|
47 |
-
* @since 2.1.1
|
48 |
-
*/
|
49 |
-
do_action( "pp_capabilities_feature_classic_{$section_slug}_section", $def_post_types, $ce_elements, $ce_post_disabled );
|
50 |
-
?>
|
51 |
</td>
|
52 |
</tr>
|
53 |
|
@@ -76,12 +63,7 @@ foreach($def_post_types as $post_type) {
|
|
76 |
<?php
|
77 |
}
|
78 |
}
|
79 |
-
|
80 |
-
do_action('pp_capabilities_features_classic_after_table_tr');
|
81 |
?>
|
82 |
|
83 |
</tbody>
|
84 |
-
</table>
|
85 |
-
|
86 |
-
<?php
|
87 |
-
do_action('pp_capabilities_features_classic_after_table');
|
15 |
<?php foreach(['thead', 'tfoot'] as $tag):?>
|
16 |
<<?php echo $tag;?>>
|
17 |
<tr>
|
18 |
+
<th class="menu-column"><?php _e('Classic Editor Screen', 'capsman-enhanced') ?></th>
|
19 |
|
20 |
<?php foreach($def_post_types as $post_type) :
|
21 |
$type_obj = get_post_type_object($post_type);
|
31 |
<tbody>
|
32 |
<?php
|
33 |
foreach ($ce_elements as $section_title => $arr) {
|
|
|
34 |
?>
|
35 |
<tr class="ppc-menu-row parent-menu">
|
36 |
<td colspan="<?php echo (count($def_post_types) + 1);?>">
|
37 |
<h4 class="ppc-menu-row-section"><?php echo $section_title;?></h4>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
</td>
|
39 |
</tr>
|
40 |
|
63 |
<?php
|
64 |
}
|
65 |
}
|
|
|
|
|
66 |
?>
|
67 |
|
68 |
</tbody>
|
69 |
+
</table>
|
|
|
|
|
|
includes/features/editor-features-gutenberg.php
CHANGED
@@ -15,7 +15,7 @@ foreach($def_post_types as $post_type) {
|
|
15 |
<?php foreach(['thead', 'tfoot'] as $tag):?>
|
16 |
<<?php echo $tag;?>>
|
17 |
<tr>
|
18 |
-
<th class="menu-column"><?php
|
19 |
|
20 |
<?php foreach($def_post_types as $post_type) :
|
21 |
$type_obj = get_post_type_object($post_type);
|
@@ -31,23 +31,10 @@ foreach($def_post_types as $post_type) {
|
|
31 |
<tbody>
|
32 |
<?php
|
33 |
foreach ($gutenberg_elements as $section_title => $arr) {
|
34 |
-
$section_slug = strtolower(ppc_remove_non_alphanumeric_space_characters($section_title));
|
35 |
?>
|
36 |
<tr class="ppc-menu-row parent-menu">
|
37 |
<td colspan="<?php echo (count($def_post_types) + 1);?>">
|
38 |
<h4 class="ppc-menu-row-section"><?php echo $section_title;?></h4>
|
39 |
-
<?php
|
40 |
-
/**
|
41 |
-
* Add support for section description
|
42 |
-
*
|
43 |
-
* @param array $def_post_types Post type.
|
44 |
-
* @param array $gutenberg_elements All gutenberg elements.
|
45 |
-
* @param array $gutenberg_post_disabled All gutenberg disabled post type element.
|
46 |
-
*
|
47 |
-
* @since 2.1.1
|
48 |
-
*/
|
49 |
-
do_action( "pp_capabilities_feature_gutenberg_{$section_slug}_section", $def_post_types, $gutenberg_elements, $gutenberg_post_disabled );
|
50 |
-
?>
|
51 |
</td>
|
52 |
</tr>
|
53 |
|
@@ -73,12 +60,7 @@ foreach($def_post_types as $post_type) {
|
|
73 |
<?php
|
74 |
}
|
75 |
}
|
76 |
-
|
77 |
-
do_action('pp_capabilities_features_gutenberg_after_table_tr');
|
78 |
?>
|
79 |
|
80 |
</tbody>
|
81 |
-
</table>
|
82 |
-
|
83 |
-
<?php
|
84 |
-
do_action('pp_capabilities_features_gutenberg_after_table');
|
15 |
<?php foreach(['thead', 'tfoot'] as $tag):?>
|
16 |
<<?php echo $tag;?>>
|
17 |
<tr>
|
18 |
+
<th class="menu-column"><?php _e('Gutenberg Screen', 'capsman-enhanced') ?></th>
|
19 |
|
20 |
<?php foreach($def_post_types as $post_type) :
|
21 |
$type_obj = get_post_type_object($post_type);
|
31 |
<tbody>
|
32 |
<?php
|
33 |
foreach ($gutenberg_elements as $section_title => $arr) {
|
|
|
34 |
?>
|
35 |
<tr class="ppc-menu-row parent-menu">
|
36 |
<td colspan="<?php echo (count($def_post_types) + 1);?>">
|
37 |
<h4 class="ppc-menu-row-section"><?php echo $section_title;?></h4>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
</td>
|
39 |
</tr>
|
40 |
|
60 |
<?php
|
61 |
}
|
62 |
}
|
|
|
|
|
63 |
?>
|
64 |
|
65 |
</tbody>
|
66 |
+
</table>
|
|
|
|
|
|
includes/features/editor-features.php
CHANGED
@@ -22,8 +22,7 @@ require_once (dirname(CME_FILE) . '/includes/features/restrict-editor-features.p
|
|
22 |
|
23 |
global $capsman;
|
24 |
$roles = $capsman->roles;
|
25 |
-
|
26 |
-
$default_role = $capsman->get_last_role();
|
27 |
|
28 |
$classic_editor = pp_capabilities_is_classic_editor_available();
|
29 |
?>
|
@@ -188,10 +187,7 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
|
|
188 |
}
|
189 |
});
|
190 |
|
191 |
-
$(
|
192 |
-
if($(e.target).parent().hasClass('ppc-custom-features-delete')){
|
193 |
-
return;
|
194 |
-
}
|
195 |
var chks = $(this).closest('tr').find('input');
|
196 |
$(chks).prop('checked', !$(this).hasClass('restricted'));
|
197 |
$(this).toggleClass('restricted', $(chks).filter(':checked').length);
|
22 |
|
23 |
global $capsman;
|
24 |
$roles = $capsman->roles;
|
25 |
+
$default_role = $capsman->current;
|
|
|
26 |
|
27 |
$classic_editor = pp_capabilities_is_classic_editor_available();
|
28 |
?>
|
187 |
}
|
188 |
});
|
189 |
|
190 |
+
$('span.menu-item-link').click(function(e) {
|
|
|
|
|
|
|
191 |
var chks = $(this).closest('tr').find('input');
|
192 |
$(chks).prop('checked', !$(this).hasClass('restricted'));
|
193 |
$(this).toggleClass('restricted', $(chks).filter(':checked').length);
|
includes/features/restrict-admin-features.php
DELETED
@@ -1,323 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class PP_Capabilities_Admin_Features
|
4 |
-
{
|
5 |
-
|
6 |
-
/**
|
7 |
-
* Get all admin features layout.
|
8 |
-
*
|
9 |
-
* @return array Elements layout.
|
10 |
-
*/
|
11 |
-
public static function elementsLayout()
|
12 |
-
{
|
13 |
-
$elements = [];
|
14 |
-
|
15 |
-
//Add toolbar
|
16 |
-
$elements[__('Admin Toolbar', 'capsman-enhanced')] = self::formatAdminToolbar();
|
17 |
-
|
18 |
-
//Add dashboard widget
|
19 |
-
$elements[__('Dashboard widgets', 'capsman-enhanced')] = self::formatDashboardWidgets();
|
20 |
-
|
21 |
-
return apply_filters('pp_capabilities_admin_features_elements', $elements);
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Retrieve all items icons.
|
26 |
-
*
|
27 |
-
* @return array Items icons.
|
28 |
-
*/
|
29 |
-
public static function elementLayoutItemIcons()
|
30 |
-
{
|
31 |
-
$icons = [];
|
32 |
-
|
33 |
-
$icons['admintoolbar'] = 'open-folder';
|
34 |
-
$icons['dashboardwidgets'] = 'dashboard';
|
35 |
-
$icons['menu-toggle'] = 'menu';
|
36 |
-
$icons['wp-logo'] = 'wordpress';
|
37 |
-
$icons['site-name'] = 'admin-home';
|
38 |
-
$icons['updates'] = 'update';
|
39 |
-
$icons['comments'] = 'admin-comments';
|
40 |
-
$icons['new-content'] = 'plus';
|
41 |
-
$icons['wpseo-menu'] = 'open-folder';
|
42 |
-
$icons['top-secondary'] = 'admin-users';
|
43 |
-
|
44 |
-
return apply_filters('pp_capabilities_admin_features_icons', $icons);
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* Let provide support for known adminbar with empty title due to icon title only.
|
49 |
-
*
|
50 |
-
*/
|
51 |
-
public static function elementToolbarTitleFallback($id)
|
52 |
-
{
|
53 |
-
$title = [];
|
54 |
-
|
55 |
-
$title['menu-toggle'] = __('Mobile Menu Toggle', 'capsman-enhanced');
|
56 |
-
$title['wp-logo'] = __('WordPress Logo', 'capsman-enhanced');
|
57 |
-
$title['wp-logo-external'] = __('WordPress External Links', 'capsman-enhanced');
|
58 |
-
$title['updates'] = __('Updates', 'capsman-enhanced');
|
59 |
-
$title['comments'] = __('Comments', 'capsman-enhanced');
|
60 |
-
$title['top-secondary'] = __('Right bar', 'capsman-enhanced');
|
61 |
-
$title['user-actions'] = __('User actions', 'capsman-enhanced');
|
62 |
-
$title['new-content'] = __('New', 'capsman-enhanced');
|
63 |
-
$title['new-content'] = __('New', 'capsman-enhanced');
|
64 |
-
$title['user-info'] = __('User Display Name', 'capsman-enhanced');
|
65 |
-
$title['wpseo-menu'] = __('Yoast SEO', 'capsman-enhanced');
|
66 |
-
|
67 |
-
return isset($title[$id]) ? $title[$id] : $id;
|
68 |
-
}
|
69 |
-
|
70 |
-
/**
|
71 |
-
* Get the list of dashboard widgets.
|
72 |
-
*
|
73 |
-
* @return array dashboard widgets.
|
74 |
-
*/
|
75 |
-
public static function dashboardWidgets()
|
76 |
-
{
|
77 |
-
global $wp_meta_boxes;
|
78 |
-
|
79 |
-
$screen = is_network_admin() ? 'dashboard-network' : 'dashboard';
|
80 |
-
$action = is_network_admin() ? 'wp_network_dashboard_setup' : 'wp_dashboard_setup';
|
81 |
-
$current_screen = get_current_screen();
|
82 |
-
|
83 |
-
//set current screen as dashboard to get widgets
|
84 |
-
if (!isset($wp_meta_boxes[$screen]) || !is_array($wp_meta_boxes[$screen])) {
|
85 |
-
require_once ABSPATH . '/wp-admin/includes/dashboard.php';
|
86 |
-
set_current_screen($screen);
|
87 |
-
remove_action( $action, [ __CLASS__, 'disableDashboardWidgets' ], 99 );
|
88 |
-
wp_dashboard_setup();
|
89 |
-
add_action( $action, [ __CLASS__, 'disableDashboardWidgets' ], 99 );
|
90 |
-
}
|
91 |
-
|
92 |
-
$widgets = [];
|
93 |
-
if (isset($wp_meta_boxes[$screen])) {
|
94 |
-
$widgets = $wp_meta_boxes[$screen];
|
95 |
-
}
|
96 |
-
|
97 |
-
//set current screen to it original stage
|
98 |
-
set_current_screen($current_screen);
|
99 |
-
|
100 |
-
return $widgets;
|
101 |
-
}
|
102 |
-
|
103 |
-
/**
|
104 |
-
* Format dashboard widgets.
|
105 |
-
*
|
106 |
-
* @return array Elements layout item.
|
107 |
-
*/
|
108 |
-
public static function formatDashboardWidgets()
|
109 |
-
{
|
110 |
-
$widgets = self::dashboardWidgets();
|
111 |
-
|
112 |
-
$elements_widget = [];
|
113 |
-
//add widget that may not be part of wp_meta_boxes
|
114 |
-
$elements_widget['dashboard_welcome_panel'] = ['label' => __('Welcome panel', 'capsman-enhanced'), 'context' => 'normal', 'action' => 'ppc_dashboard_widget'];
|
115 |
-
//loop other widgets
|
116 |
-
foreach ($widgets as $context => $priority) {
|
117 |
-
foreach ($priority as $data) {
|
118 |
-
foreach ($data as $id => $widget) {
|
119 |
-
if ($widget) {
|
120 |
-
$widget_title = isset($widget['title']) ? wp_strip_all_tags($widget['title']) : '';
|
121 |
-
$elements_widget[$id] = ['label' => $widget_title, 'context' => $context, 'action' => 'ppc_dashboard_widget'];
|
122 |
-
}
|
123 |
-
}
|
124 |
-
}
|
125 |
-
}
|
126 |
-
|
127 |
-
return $elements_widget;
|
128 |
-
}
|
129 |
-
|
130 |
-
/**
|
131 |
-
* Format admin toolbar.
|
132 |
-
*
|
133 |
-
* @return array Elements layout item.
|
134 |
-
*/
|
135 |
-
public static function formatAdminToolbar()
|
136 |
-
{
|
137 |
-
global $toolbar_items;
|
138 |
-
|
139 |
-
$toolbars = (array)$GLOBALS['ppcAdminBar'];
|
140 |
-
$toolbarTree = self::formatAdminToolbarTree($toolbars);
|
141 |
-
//set toolbar element with steps
|
142 |
-
self::setAdminToolbarElement($toolbarTree);
|
143 |
-
|
144 |
-
return $toolbar_items;
|
145 |
-
}
|
146 |
-
|
147 |
-
/**
|
148 |
-
* Build multidimensional array for admin toolbar.
|
149 |
-
*
|
150 |
-
* @return array.
|
151 |
-
*/
|
152 |
-
public static function formatAdminToolbarTree(array $items, $parentId = '')
|
153 |
-
{
|
154 |
-
$branch = [];
|
155 |
-
|
156 |
-
foreach ($items as $item) {
|
157 |
-
if ($item['parent'] == $parentId) {
|
158 |
-
$children = self::formatAdminToolbarTree($items, $item['id']);
|
159 |
-
if ($children) {
|
160 |
-
$item['children'] = $children;
|
161 |
-
}
|
162 |
-
$branch[] = $item;
|
163 |
-
}
|
164 |
-
}
|
165 |
-
|
166 |
-
return $branch;
|
167 |
-
}
|
168 |
-
|
169 |
-
/**
|
170 |
-
* Set admin toolbar element.
|
171 |
-
*
|
172 |
-
*/
|
173 |
-
public static function setAdminToolbarElement(array $toolbarTrees, $steps = 1, $step_list = [])
|
174 |
-
{
|
175 |
-
global $toolbar_items;
|
176 |
-
|
177 |
-
$position = 0;
|
178 |
-
foreach ($toolbarTrees as $toolbarTree) {
|
179 |
-
$position++;
|
180 |
-
$id = $toolbarTree['id'];
|
181 |
-
$itemTitle = self::cleanTitleText($toolbarTree['title']);
|
182 |
-
|
183 |
-
//let fall back to known title/id if title still empty
|
184 |
-
if (empty(trim($itemTitle))) {
|
185 |
-
$itemTitle = self::elementToolbarTitleFallback($id);
|
186 |
-
}
|
187 |
-
|
188 |
-
$toolbar_items[$id] = ['label' => $itemTitle,
|
189 |
-
'parent' => $toolbarTree['parent'],
|
190 |
-
'step' => $steps,
|
191 |
-
'position' => $position,
|
192 |
-
'action' => 'ppc_adminbar'
|
193 |
-
];
|
194 |
-
foreach ($toolbarTree as $key => $value) {
|
195 |
-
if (is_array($value)) {
|
196 |
-
self::setAdminToolbarElement($value, $steps + 1, $step_list);
|
197 |
-
}
|
198 |
-
}
|
199 |
-
}
|
200 |
-
}
|
201 |
-
|
202 |
-
/**
|
203 |
-
* Process admin features title.
|
204 |
-
*
|
205 |
-
*/
|
206 |
-
public static function cleanTitleText($title)
|
207 |
-
{
|
208 |
-
//strip span and div content
|
209 |
-
$title = preg_replace('#(<span.*?>).*?(</span>)#', '', $title);
|
210 |
-
$title = preg_replace('#(<img.*?>)#', '', $title);
|
211 |
-
|
212 |
-
//strip other html tags
|
213 |
-
$title = strip_tags($title);
|
214 |
-
|
215 |
-
return $title;
|
216 |
-
}
|
217 |
-
|
218 |
-
/**
|
219 |
-
* Get array elements that starts with a specific word
|
220 |
-
*
|
221 |
-
* @param array $restricted_features All restricted elements to check agains.
|
222 |
-
* @param string $start_with The word to look for in array.
|
223 |
-
*
|
224 |
-
* @return array Filtered array.
|
225 |
-
*/
|
226 |
-
public static function adminFeaturesRestrictedElements($restricted_elements, $start_with = 'ppc_adminbar')
|
227 |
-
{
|
228 |
-
//get all items of the array starting with the specified string.
|
229 |
-
$new_elements = array_filter(
|
230 |
-
$restricted_elements,
|
231 |
-
function($value, $key) use ($start_with) {return strpos($value, $start_with) === 0;}, ARRAY_FILTER_USE_BOTH
|
232 |
-
);
|
233 |
-
|
234 |
-
return $new_elements;
|
235 |
-
}
|
236 |
-
|
237 |
-
|
238 |
-
/**
|
239 |
-
* Apply admin feature restrictions
|
240 |
-
*/
|
241 |
-
public static function adminFeaturedRestriction()
|
242 |
-
{
|
243 |
-
global $ppc_disabled_toolbar, $ppc_disabled_widget;
|
244 |
-
// Get all user roles.
|
245 |
-
$user_roles = wp_get_current_user()->roles;
|
246 |
-
$disabled_features = get_option("capsman_disabled_admin_features", []);
|
247 |
-
|
248 |
-
$all_disabled_elements = [];
|
249 |
-
|
250 |
-
foreach ($user_roles as $role) {
|
251 |
-
if (!empty($disabled_features[$role])) {
|
252 |
-
$all_disabled_elements[] = $disabled_features[$role];
|
253 |
-
}
|
254 |
-
}
|
255 |
-
|
256 |
-
//merge all array values incase it's more than role
|
257 |
-
//$all_disabled_elements = array_merge(...$all_disabled_elements); // This is a PHP 7.4 operator
|
258 |
-
$all_disabled_elements = (is_array($all_disabled_elements) && isset($all_disabled_elements[0])) ? array_merge($all_disabled_elements[0]) : [];
|
259 |
-
|
260 |
-
//disable toolbar
|
261 |
-
$ppc_disabled_toolbar = self::adminFeaturesRestrictedElements($all_disabled_elements, 'ppc_adminbar');
|
262 |
-
if(count($ppc_disabled_toolbar) > 0){
|
263 |
-
add_action( 'wp_before_admin_bar_render', [ __CLASS__, 'disableDashboardBar' ], 99 );
|
264 |
-
}
|
265 |
-
|
266 |
-
if(is_admin()){
|
267 |
-
$ppc_disabled_widget = self::adminFeaturesRestrictedElements($all_disabled_elements, 'ppc_dashboard_widget');
|
268 |
-
//disable widget
|
269 |
-
if(count($ppc_disabled_widget) > 0){
|
270 |
-
add_action( 'wp_dashboard_setup', [ __CLASS__, 'disableDashboardWidgets' ], 99 );
|
271 |
-
add_action( 'wp_network_dashboard_setup', [ __CLASS__, 'disableDashboardWidgets' ], 99 );
|
272 |
-
}
|
273 |
-
}
|
274 |
-
}
|
275 |
-
|
276 |
-
/**
|
277 |
-
* Disable admin bar.
|
278 |
-
*
|
279 |
-
*/
|
280 |
-
public static function disableDashboardBar() {
|
281 |
-
global $wp_admin_bar, $ppc_disabled_toolbar;
|
282 |
-
$admin_bar_options = (array)$ppc_disabled_toolbar;
|
283 |
-
$admin_bar_items = (array)$GLOBALS['ppcAdminBar'];
|
284 |
-
|
285 |
-
if (count($admin_bar_options) > 0 && ( is_array($admin_bar_items) || is_object($admin_bar_items) ) ) {
|
286 |
-
foreach ($admin_bar_items as $barItem) {
|
287 |
-
$id = $barItem['id'];
|
288 |
-
$item_id = 'ppc_adminbar||'.$id;
|
289 |
-
if ($id && in_array($item_id, $admin_bar_options)) {
|
290 |
-
$wp_admin_bar->remove_menu($id);
|
291 |
-
}
|
292 |
-
}
|
293 |
-
}
|
294 |
-
|
295 |
-
}
|
296 |
-
|
297 |
-
/**
|
298 |
-
* Disable dashboard widgets.
|
299 |
-
*
|
300 |
-
*/
|
301 |
-
public static function disableDashboardWidgets() {
|
302 |
-
global $ppc_disabled_widget;
|
303 |
-
|
304 |
-
$widgets = (array)$ppc_disabled_widget;
|
305 |
-
|
306 |
-
if ( count($widgets) === 0 ) {
|
307 |
-
return;
|
308 |
-
}
|
309 |
-
|
310 |
-
foreach ( $widgets as $widget) {
|
311 |
-
$widget_data = explode("||", $widget);
|
312 |
-
$widget_id = $widget_data[1];
|
313 |
-
$widget_content = $widget_data[2];
|
314 |
-
|
315 |
-
if ( $widget_id === 'dashboard_welcome_panel' ) {
|
316 |
-
remove_action( 'welcome_panel', 'wp_welcome_panel' );
|
317 |
-
}else{
|
318 |
-
remove_meta_box( $widget_id, get_current_screen()->base, $widget_content );
|
319 |
-
}
|
320 |
-
}
|
321 |
-
}
|
322 |
-
|
323 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/features/restrict-editor-features.php
CHANGED
@@ -302,7 +302,7 @@ class PP_Capabilities_Post_Features {
|
|
302 |
'undo' => ['label' => __('Undo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__undo'],
|
303 |
'redo' => ['label' => __('Redo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__redo'],
|
304 |
'details' => ['label' => __('Details', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .table-of-contents'],
|
305 |
-
'outline' => ['label' => __('Outline', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .
|
306 |
],
|
307 |
|
308 |
__('Top Bar - Right', 'capabilities-pro') => [
|
302 |
'undo' => ['label' => __('Undo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__undo'],
|
303 |
'redo' => ['label' => __('Redo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__redo'],
|
304 |
'details' => ['label' => __('Details', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .table-of-contents'],
|
305 |
+
'outline' => ['label' => __('Outline', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .block-editor-block-navigation'],
|
306 |
],
|
307 |
|
308 |
__('Top Bar - Right', 'capabilities-pro') => [
|
includes/filters-admin.php
CHANGED
@@ -1,10 +1,4 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* PublishPress Capabilities [Free]
|
4 |
-
*
|
5 |
-
* Filters which are loaded for certain admin URLs
|
6 |
-
*
|
7 |
-
*/
|
8 |
class CME_AdminMenuNoPrivWorkaround {
|
9 |
var $create_posts_cap = '';
|
10 |
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
class CME_AdminMenuNoPrivWorkaround {
|
3 |
var $create_posts_cap = '';
|
4 |
|
includes/filters.php
CHANGED
@@ -1,13 +1,6 @@
|
|
1 |
<?php
|
2 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
3 |
|
4 |
-
/*
|
5 |
-
* PublishPress Capabilities [Free]
|
6 |
-
*
|
7 |
-
* Load general purpose filters which need to execute for any URL, even front end
|
8 |
-
*
|
9 |
-
*/
|
10 |
-
|
11 |
/**
|
12 |
* class CME_Extensions
|
13 |
*
|
@@ -53,6 +46,9 @@ if ( is_admin() ) {
|
|
53 |
|
54 |
add_filter('plugin_action_links_' . plugin_basename(CME_FILE), '_cme_fltPluginActionLinks', 10, 2);
|
55 |
|
|
|
|
|
|
|
56 |
add_action('plugins_loaded', '_cme_migrate_pp_options');
|
57 |
|
58 |
add_filter('cme_filterable_post_types', '_cme_filterable_post_types');
|
@@ -91,6 +87,59 @@ function _cme_migrate_pp_options() {
|
|
91 |
}
|
92 |
}
|
93 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
// allow edit_terms, delete_terms, assign_terms capabilities to function separately from manage_terms
|
96 |
function _cme_remap_term_meta_cap ( $caps, $cap, $user_id, $args ) {
|
1 |
<?php
|
2 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
/**
|
5 |
* class CME_Extensions
|
6 |
*
|
46 |
|
47 |
add_filter('plugin_action_links_' . plugin_basename(CME_FILE), '_cme_fltPluginActionLinks', 10, 2);
|
48 |
|
49 |
+
|
50 |
+
add_filter('pp_custom_status_list', 'cme_filter_custom_status_list', 10, 2);
|
51 |
+
|
52 |
add_action('plugins_loaded', '_cme_migrate_pp_options');
|
53 |
|
54 |
add_filter('cme_filterable_post_types', '_cme_filterable_post_types');
|
87 |
}
|
88 |
}
|
89 |
|
90 |
+
/**
|
91 |
+
* Filters the list of custom statuses
|
92 |
+
*
|
93 |
+
* @param array $custom_statuses
|
94 |
+
* @param WP_Post $post
|
95 |
+
*
|
96 |
+
* @return array
|
97 |
+
*/
|
98 |
+
function cme_filter_custom_status_list($custom_statuses, $post)
|
99 |
+
{
|
100 |
+
if (!get_option('cme_custom_status_control')) {
|
101 |
+
return $custom_statuses;
|
102 |
+
}
|
103 |
+
|
104 |
+
if (class_exists('publishpress') && method_exists('publishpress', 'instance')) {
|
105 |
+
$publishpress = publishpress::instance();
|
106 |
+
} else {
|
107 |
+
global $publishpress;
|
108 |
+
}
|
109 |
+
|
110 |
+
if (empty($publishpress)) {
|
111 |
+
return $custom_statuses;
|
112 |
+
}
|
113 |
+
|
114 |
+
$filtered = [];
|
115 |
+
$option_group = 'global';
|
116 |
+
|
117 |
+
$default_status = !empty($publishpress->custom_status->module->options->default_status) ? $publishpress->custom_status->module->options->default_status : 'draft';
|
118 |
+
|
119 |
+
if ( ! is_null($post)) {
|
120 |
+
// Adding a new post? Set the correct default status
|
121 |
+
if ('auto-draft' === $post->post_status) {
|
122 |
+
$post->post_status = $default_status;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
foreach ($custom_statuses as &$status) {
|
127 |
+
$slug = str_replace('-', '_', $status->slug);
|
128 |
+
|
129 |
+
// Check if the user, or any of his user groups are capable to use the status. If not, but it is the
|
130 |
+
// current status, we still display it.
|
131 |
+
if (('draft' == $slug)
|
132 |
+
|| current_user_can('status_change_' . $slug)
|
133 |
+
|| (is_null($post) ? false : $status->slug === $post->post_status)
|
134 |
+
|| $status->slug === $default_status
|
135 |
+
) {
|
136 |
+
$filtered[] = $status;
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
return $filtered;
|
141 |
+
}
|
142 |
+
|
143 |
|
144 |
// allow edit_terms, delete_terms, assign_terms capabilities to function separately from manage_terms
|
145 |
function _cme_remap_term_meta_cap ( $caps, $cap, $user_id, $args ) {
|
includes/functions-admin.php
CHANGED
@@ -1,11 +1,272 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
function cme_fakefunc() {
|
11 |
}
|
@@ -150,17 +411,3 @@ function _pp_capabilities_is_block_editor_active($post_type = '', $args = [])
|
|
150 |
// Returns true if at least one condition is true.
|
151 |
return $result;
|
152 |
}
|
153 |
-
|
154 |
-
/**
|
155 |
-
* Remove all non-alphanumeric and space characters from a string.
|
156 |
-
*
|
157 |
-
* @param string $string .
|
158 |
-
*
|
159 |
-
* @return string
|
160 |
-
*
|
161 |
-
* @since 2.1.1
|
162 |
-
*/
|
163 |
-
function ppc_remove_non_alphanumeric_space_characters($string)
|
164 |
-
{
|
165 |
-
return preg_replace("/(\W)+/", "", $string);
|
166 |
-
}
|
1 |
<?php
|
2 |
|
3 |
+
class PP_Capabilities_Admin_UI {
|
4 |
+
function __construct() {
|
5 |
+
global $pagenow;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* The class responsible for handling notifications
|
9 |
+
*/
|
10 |
+
require_once (dirname(CME_FILE) . '/classes/pp-capabilities-notices.php');
|
11 |
+
|
12 |
+
add_action('init', [$this, 'featureRestrictionsGutenberg']);
|
13 |
+
|
14 |
+
if (is_admin()) {
|
15 |
+
add_action('admin_init', [$this, 'featureRestrictionsClassic']);
|
16 |
+
}
|
17 |
+
|
18 |
+
add_action('admin_enqueue_scripts', [$this, 'adminScripts'], 100);
|
19 |
+
add_action('admin_print_scripts', [$this, 'adminPrintScripts']);
|
20 |
+
|
21 |
+
add_action('profile_update', [$this, 'action_profile_update'], 10, 2);
|
22 |
+
|
23 |
+
if (is_multisite()) {
|
24 |
+
add_action('add_user_to_blog', [$this, 'action_profile_update'], 9);
|
25 |
+
} else {
|
26 |
+
add_action('user_register', [$this, 'action_profile_update'], 9);
|
27 |
+
}
|
28 |
+
|
29 |
+
if (is_admin() && (isset($_REQUEST['page']) && (in_array($_REQUEST['page'], ['pp-capabilities', 'pp-capabilities-backup', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-editor-features', 'pp-capabilities-nav-menus', 'pp-capabilities-settings']))
|
30 |
+
|| (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], ['pp-roles-add-role', 'pp-roles-delete-role', 'pp-roles-hide-role', 'pp-roles-unhide-role']))
|
31 |
+
|| ( ! empty($_SERVER['SCRIPT_NAME']) && strpos( $_SERVER['SCRIPT_NAME'], 'p-admin/plugins.php' ) && ! empty($_REQUEST['action'] ) )
|
32 |
+
|| ( isset($_GET['action']) && 'reset-defaults' == $_GET['action'] )
|
33 |
+
|| in_array( $pagenow, array( 'users.php', 'user-edit.php', 'profile.php', 'user-new.php' ) )
|
34 |
+
) ) {
|
35 |
+
global $capsman;
|
36 |
+
|
37 |
+
// Run the plugin
|
38 |
+
require_once ( dirname(CME_FILE) . '/framework/lib/formating.php' );
|
39 |
+
require_once ( dirname(CME_FILE) . '/framework/lib/users.php' );
|
40 |
+
|
41 |
+
require_once ( dirname(CME_FILE) . '/includes/manager.php' );
|
42 |
+
$capsman = new CapabilityManager();
|
43 |
+
} else {
|
44 |
+
add_action( 'admin_menu', [$this, 'cmeSubmenus'], 20 );
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
private function applyFeatureRestrictions($editor = 'gutenberg') {
|
49 |
+
global $pagenow;
|
50 |
+
|
51 |
+
// Return if not a post editor request
|
52 |
+
if (!in_array($pagenow, ['post.php', 'post-new.php'])) {
|
53 |
+
return;
|
54 |
+
}
|
55 |
+
|
56 |
+
static $def_post_types; // avoid redundant filter application
|
57 |
+
|
58 |
+
if (!isset($def_post_types)) {
|
59 |
+
//$def_post_types = apply_filters('pp_capabilities_feature_post_types', get_post_types(['public' => true]));
|
60 |
+
$def_post_types = apply_filters('pp_capabilities_feature_post_types', ['post', 'page']);
|
61 |
+
}
|
62 |
+
|
63 |
+
$post_type = pp_capabilities_get_post_type();
|
64 |
+
|
65 |
+
// Return if not a supported post type
|
66 |
+
if (!in_array($post_type, $def_post_types)) {
|
67 |
+
return;
|
68 |
+
}
|
69 |
+
|
70 |
+
switch ($editor) {
|
71 |
+
case 'gutenberg':
|
72 |
+
if (_pp_capabilities_is_block_editor_active()) {
|
73 |
+
require_once ( dirname(CME_FILE) . '/includes/features/restrict-editor-features.php' );
|
74 |
+
PP_Capabilities_Post_Features::applyRestrictions($post_type);
|
75 |
+
}
|
76 |
+
|
77 |
+
break;
|
78 |
+
|
79 |
+
case 'classic':
|
80 |
+
if (!_pp_capabilities_is_block_editor_active()) {
|
81 |
+
require_once ( dirname(CME_FILE) . '/includes/features/restrict-editor-features.php' );
|
82 |
+
PP_Capabilities_Post_Features::adminInitClassic($post_type);
|
83 |
+
}
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
function featureRestrictionsGutenberg() {
|
88 |
+
$this->applyFeatureRestrictions();
|
89 |
+
}
|
90 |
+
|
91 |
+
function featureRestrictionsClassic() {
|
92 |
+
$this->applyFeatureRestrictions('classic');
|
93 |
+
}
|
94 |
+
|
95 |
+
function adminScripts() {
|
96 |
+
global $publishpress;
|
97 |
+
|
98 |
+
if (function_exists('get_current_screen') && (!defined('PUBLISHPRESS_VERSION') || empty($publishpress) || empty($publishpress->modules) || empty($publishpress->modules->roles))) {
|
99 |
+
$screen = get_current_screen();
|
100 |
+
|
101 |
+
if ('user-edit' === $screen->base || ('user' === $screen->base && 'add' === $screen->action && defined('PP_CAPABILITIES_ADD_USER_MULTI_ROLES'))) {
|
102 |
+
// Check if we are on the user's profile page
|
103 |
+
wp_enqueue_script(
|
104 |
+
'pp-capabilities-chosen-js',
|
105 |
+
plugin_dir_url(CME_FILE) . 'common/libs/chosen-v1.8.3/chosen.jquery.js',
|
106 |
+
['jquery'],
|
107 |
+
CAPSMAN_VERSION
|
108 |
+
);
|
109 |
+
|
110 |
+
wp_enqueue_script(
|
111 |
+
'pp-capabilities-roles-profile-js',
|
112 |
+
plugin_dir_url(CME_FILE) . 'common/js/profile.js',
|
113 |
+
['jquery', 'pp-capabilities-chosen-js'],
|
114 |
+
CAPSMAN_VERSION
|
115 |
+
);
|
116 |
+
|
117 |
+
wp_enqueue_style(
|
118 |
+
'pp-capabilities-chosen-css',
|
119 |
+
plugin_dir_url(CME_FILE) . 'common/libs/chosen-v1.8.3/chosen.css',
|
120 |
+
false,
|
121 |
+
CAPSMAN_VERSION
|
122 |
+
);
|
123 |
+
wp_enqueue_style(
|
124 |
+
'pp-capabilities-roles-profile-css',
|
125 |
+
plugin_dir_url(CME_FILE) . 'common/css/profile.css',
|
126 |
+
['pp-capabilities-chosen-css'],
|
127 |
+
CAPSMAN_VERSION
|
128 |
+
);
|
129 |
+
|
130 |
+
$roles = !empty($_GET['user_id']) ?$this->getUsersRoles($_GET['user_id']) : [];
|
131 |
+
|
132 |
+
if (empty($roles)) {
|
133 |
+
$roles = (array) get_option('default_role');
|
134 |
+
}
|
135 |
+
|
136 |
+
wp_localize_script(
|
137 |
+
'pp-capabilities-roles-profile-js',
|
138 |
+
'ppCapabilitiesProfileData',
|
139 |
+
[
|
140 |
+
'selected_roles' => $roles
|
141 |
+
]
|
142 |
+
);
|
143 |
+
}
|
144 |
+
}
|
145 |
+
}
|
146 |
+
|
147 |
+
function adminPrintScripts() {
|
148 |
+
// Counteract overzealous menu icon styling in PublishPress <= 3.2.0 :)
|
149 |
+
if (defined('PUBLISHPRESS_VERSION') && version_compare(constant('PUBLISHPRESS_VERSION'), '3.2.0', '<=') && defined('PP_CAPABILITIES_FIX_ADMIN_ICON')):?>
|
150 |
+
<style type="text/css">
|
151 |
+
#toplevel_page_pp-capabilities .dashicons-before::before, #toplevel_page_pp-capabilities .wp-has-current-submenu .dashicons-before::before {
|
152 |
+
background-image: inherit !important;
|
153 |
+
content: "\f112" !important;
|
154 |
+
}
|
155 |
+
</style>
|
156 |
+
<?php endif;
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Returns a list of roles with name and display name to populate a select field.
|
161 |
+
*
|
162 |
+
* @param int $userId
|
163 |
+
*
|
164 |
+
* @return array
|
165 |
+
*/
|
166 |
+
protected function getUsersRoles($userId)
|
167 |
+
{
|
168 |
+
if (empty($userId)) {
|
169 |
+
return [];
|
170 |
+
}
|
171 |
+
|
172 |
+
$user = get_user_by('id', $userId);
|
173 |
+
|
174 |
+
if (empty($user)) {
|
175 |
+
return [];
|
176 |
+
}
|
177 |
+
|
178 |
+
return $user->roles;
|
179 |
+
}
|
180 |
+
|
181 |
+
public function action_profile_update($userId, $oldUserData = [])
|
182 |
+
{
|
183 |
+
// Check if we need to update the user's roles, allowing to set multiple roles.
|
184 |
+
if (isset($_POST['pp_roles']) && current_user_can('promote_users')) {
|
185 |
+
// Remove the user's roles
|
186 |
+
$user = get_user_by('ID', $userId);
|
187 |
+
|
188 |
+
$newRoles = $_POST['pp_roles'];
|
189 |
+
$currentRoles = $user->roles;
|
190 |
+
|
191 |
+
if (empty($newRoles) || !is_array($newRoles)) {
|
192 |
+
return;
|
193 |
+
}
|
194 |
+
|
195 |
+
// Remove unselected roles
|
196 |
+
foreach ($currentRoles as $role) {
|
197 |
+
// Check if it is a bbPress rule. If so, don't remove it.
|
198 |
+
$isBBPressRole = preg_match('/^bbp_/', $role);
|
199 |
+
|
200 |
+
if (!in_array($role, $newRoles) && !$isBBPressRole) {
|
201 |
+
$user->remove_role($role);
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
// Add new roles
|
206 |
+
foreach ($newRoles as $role) {
|
207 |
+
if (!in_array($role, $currentRoles)) {
|
208 |
+
$user->add_role($role);
|
209 |
+
}
|
210 |
+
}
|
211 |
+
}
|
212 |
+
}
|
213 |
+
|
214 |
+
// perf enhancement: display submenu links without loading framework and plugin code
|
215 |
+
function cmeSubmenus() {
|
216 |
+
// First we check if user is administrator and can 'manage_capabilities'.
|
217 |
+
if (current_user_can('administrator') && ! current_user_can('manage_capabilities')) {
|
218 |
+
if ($admin = get_role('administrator')) {
|
219 |
+
$admin->add_cap('manage_capabilities');
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
$cap_name = (is_multisite() && is_super_admin()) ? 'read' : 'manage_capabilities';
|
224 |
+
|
225 |
+
$permissions_title = __('Capabilities', 'capsman-enhanced');
|
226 |
+
|
227 |
+
$menu_order = 72;
|
228 |
+
|
229 |
+
if (defined('PUBLISHPRESS_PERMISSIONS_MENU_GROUPING')) {
|
230 |
+
foreach ((array)get_option('active_plugins') as $plugin_file) {
|
231 |
+
if ( false !== strpos($plugin_file, 'publishpress.php') ) {
|
232 |
+
$menu_order = 27;
|
233 |
+
}
|
234 |
+
}
|
235 |
+
}
|
236 |
+
|
237 |
+
add_menu_page(
|
238 |
+
$permissions_title,
|
239 |
+
$permissions_title,
|
240 |
+
$cap_name,
|
241 |
+
'pp-capabilities',
|
242 |
+
'cme_fakefunc',
|
243 |
+
'dashicons-admin-network',
|
244 |
+
$menu_order
|
245 |
+
);
|
246 |
+
|
247 |
+
add_submenu_page('pp-capabilities', __('Roles', 'capsman-enhanced'), __('Roles', 'capsman-enhanced'), $cap_name, 'pp-capabilities-roles', 'cme_fakefunc');
|
248 |
+
add_submenu_page('pp-capabilities', __('Editor Features', 'capsman-enhanced'), __('Editor Features', 'capsman-enhanced'), $cap_name, 'pp-capabilities-editor-features', 'cme_fakefunc');
|
249 |
+
add_submenu_page('pp-capabilities', __('Admin Menus', 'capsman-enhanced'), __('Admin Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-admin-menus', 'cme_fakefunc');
|
250 |
+
add_submenu_page('pp-capabilities', __('Nav Menus', 'capsman-enhanced'), __('Nav Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-nav-menus', 'cme_fakefunc');
|
251 |
+
add_submenu_page('pp-capabilities', __('Backup', 'capsman-enhanced'), __('Backup', 'capsman-enhanced'), $cap_name, 'pp-capabilities-backup', 'cme_fakefunc');
|
252 |
+
|
253 |
+
if (defined('PUBLISHPRESS_CAPS_PRO_VERSION')) {
|
254 |
+
add_submenu_page('pp-capabilities', __('Settings', 'capsman-enhanced'), __('Settings', 'capsman-enhanced'), $cap_name, 'pp-capabilities-settings', 'cme_fakefunc');
|
255 |
+
}
|
256 |
+
|
257 |
+
if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION')) {
|
258 |
+
add_submenu_page(
|
259 |
+
'pp-capabilities',
|
260 |
+
__('Upgrade to Pro', 'capsman-enhanced'),
|
261 |
+
__('Upgrade to Pro', 'capsman-enhanced'),
|
262 |
+
'manage_capabilities',
|
263 |
+
'capsman-enhanced',
|
264 |
+
'cme_fakefunc'
|
265 |
+
);
|
266 |
+
}
|
267 |
+
}
|
268 |
+
|
269 |
+
}
|
270 |
|
271 |
function cme_fakefunc() {
|
272 |
}
|
411 |
// Returns true if at least one condition is true.
|
412 |
return $result;
|
413 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/functions.php
CHANGED
@@ -1,13 +1,4 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* PublishPress Capabilities [Free]
|
4 |
-
*
|
5 |
-
* Functions available for any URL, which are not contained within a class
|
6 |
-
*
|
7 |
-
* For performance and code separation, do not include functions that are only needed for wp-admin requests
|
8 |
-
*
|
9 |
-
*/
|
10 |
-
|
11 |
function pp_capabilities_is_editable_role($role_name, $args = []) {
|
12 |
static $editable_roles;
|
13 |
|
@@ -186,78 +177,5 @@ function pp_capabilities_is_classic_editor_available()
|
|
186 |
return class_exists('Classic_Editor')
|
187 |
|| function_exists( 'the_gutenberg_project' )
|
188 |
|| class_exists('Gutenberg_Ramp')
|
189 |
-
|| version_compare($wp_version, '5.0', '<')
|
190 |
-
|| (function_exists('et_get_option') && 'on' === et_get_option('et_enable_classic_editor', 'off'));
|
191 |
}
|
192 |
-
|
193 |
-
|
194 |
-
/**
|
195 |
-
* Get admin bar node and set as global for our usage.
|
196 |
-
* Due to admin toolbar, this function need to run in frontend as well
|
197 |
-
*
|
198 |
-
* @return array||object $wp_admin_bar nodes.
|
199 |
-
*/
|
200 |
-
function ppc_features_get_admin_bar_nodes($wp_admin_bar){
|
201 |
-
|
202 |
-
$adminBarNode = is_object($wp_admin_bar) ? $wp_admin_bar->get_nodes() : '';
|
203 |
-
$ppcAdminBar = [];
|
204 |
-
|
205 |
-
if (is_array($adminBarNode) || is_object($adminBarNode)) {
|
206 |
-
foreach ($adminBarNode as $adminBarnode) {
|
207 |
-
$id = $adminBarnode->id;
|
208 |
-
$title = $adminBarnode->title;
|
209 |
-
$parent = $adminBarnode->parent;
|
210 |
-
$ppcAdminBar[$id] = array('id' => $id, 'title' => $title, 'parent' => $parent);
|
211 |
-
}
|
212 |
-
}
|
213 |
-
|
214 |
-
$GLOBALS['ppcAdminBar'] = $ppcAdminBar;
|
215 |
-
}
|
216 |
-
add_action('admin_bar_menu', 'ppc_features_get_admin_bar_nodes', 999);
|
217 |
-
|
218 |
-
/**
|
219 |
-
* Implement admin features restriction.
|
220 |
-
* Due to admin toolbar, this function need to run in frontend as well
|
221 |
-
*
|
222 |
-
*/
|
223 |
-
function ppc_admin_feature_restrictions() {
|
224 |
-
require_once ( dirname(CME_FILE) . '/includes/features/restrict-admin-features.php' );
|
225 |
-
PP_Capabilities_Admin_Features::adminFeaturedRestriction();
|
226 |
-
}
|
227 |
-
add_action('plugins_loaded', 'ppc_admin_feature_restrictions');
|
228 |
-
|
229 |
-
/**
|
230 |
-
* List of capabilities admin pages
|
231 |
-
*
|
232 |
-
*/
|
233 |
-
function pp_capabilities_admin_pages(){
|
234 |
-
|
235 |
-
$pp_capabilities_pages = [
|
236 |
-
'pp-capabilities',
|
237 |
-
'pp-capabilities-roles',
|
238 |
-
'pp-capabilities-admin-menus',
|
239 |
-
'pp-capabilities-nav-menus',
|
240 |
-
'pp-capabilities-editor-features',
|
241 |
-
'pp-capabilities-backup',
|
242 |
-
'pp-capabilities-settings',
|
243 |
-
'pp-capabilities-admin-features'
|
244 |
-
];
|
245 |
-
|
246 |
-
return apply_filters('pp_capabilities_admin_pages', $pp_capabilities_pages);
|
247 |
-
}
|
248 |
-
|
249 |
-
/**
|
250 |
-
* Check if user is in capabilities admin page
|
251 |
-
*
|
252 |
-
*/
|
253 |
-
function is_pp_capabilities_admin_page(){
|
254 |
-
|
255 |
-
$pp_capabilities_pages = pp_capabilities_admin_pages();
|
256 |
-
|
257 |
-
$is_pp_capabilities_page = false;
|
258 |
-
if ( isset( $_GET['page'] ) && in_array( $_GET['page'], $pp_capabilities_pages )) {
|
259 |
-
$is_pp_capabilities_page = true;
|
260 |
-
}
|
261 |
-
|
262 |
-
return apply_filters('is_pp_capabilities_admin_page', $is_pp_capabilities_page);
|
263 |
-
}
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
function pp_capabilities_is_editable_role($role_name, $args = []) {
|
3 |
static $editable_roles;
|
4 |
|
177 |
return class_exists('Classic_Editor')
|
178 |
|| function_exists( 'the_gutenberg_project' )
|
179 |
|| class_exists('Gutenberg_Ramp')
|
180 |
+
|| version_compare($wp_version, '5.0', '<');
|
|
|
181 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/handler.php
CHANGED
@@ -1,11 +1,4 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* PublishPress Capabilities [Free]
|
4 |
-
*
|
5 |
-
* Process update operations from the Capabilities screen
|
6 |
-
*
|
7 |
-
*/
|
8 |
-
|
9 |
class CapsmanHandler
|
10 |
{
|
11 |
var $cm;
|
@@ -33,7 +26,7 @@ class CapsmanHandler
|
|
33 |
if ( ! empty($post['CreateRole']) ) {
|
34 |
if ( $newrole = $this->createRole($post['create-name']) ) {
|
35 |
ak_admin_notify(__('New role created.', 'capsman-enhanced'));
|
36 |
-
$this->cm->
|
37 |
} else {
|
38 |
if ( empty($post['create-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
|
39 |
ak_admin_error( 'Error: No role name specified.', 'capsman-enhanced' );
|
@@ -52,14 +45,14 @@ class CapsmanHandler
|
|
52 |
update_option($wp_roles->role_key, $wp_roles->roles);
|
53 |
|
54 |
ak_admin_notify(sprintf(__('Role "%s" (id %s) renamed to "%s"', 'capsman-enhanced'), $old_title, strtolower($current->name), $new_title));
|
55 |
-
$this->cm->
|
56 |
}
|
57 |
// Copy current role to a new one.
|
58 |
} elseif ( ! empty($post['CopyRole']) ) {
|
59 |
$current = get_role($post['current']);
|
60 |
if ( $newrole = $this->createRole($post['copy-name'], $current->capabilities) ) {
|
61 |
ak_admin_notify(__('New role created.', 'capsman-enhanced'));
|
62 |
-
$this->cm->
|
63 |
} else {
|
64 |
if ( empty($post['copy-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
|
65 |
ak_admin_error( 'Error: No role name specified.', 'capsman-enhanced' );
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
class CapsmanHandler
|
3 |
{
|
4 |
var $cm;
|
26 |
if ( ! empty($post['CreateRole']) ) {
|
27 |
if ( $newrole = $this->createRole($post['create-name']) ) {
|
28 |
ak_admin_notify(__('New role created.', 'capsman-enhanced'));
|
29 |
+
$this->cm->current = $newrole;
|
30 |
} else {
|
31 |
if ( empty($post['create-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
|
32 |
ak_admin_error( 'Error: No role name specified.', 'capsman-enhanced' );
|
45 |
update_option($wp_roles->role_key, $wp_roles->roles);
|
46 |
|
47 |
ak_admin_notify(sprintf(__('Role "%s" (id %s) renamed to "%s"', 'capsman-enhanced'), $old_title, strtolower($current->name), $new_title));
|
48 |
+
$this->cm->current = $current->name;
|
49 |
}
|
50 |
// Copy current role to a new one.
|
51 |
} elseif ( ! empty($post['CopyRole']) ) {
|
52 |
$current = get_role($post['current']);
|
53 |
if ( $newrole = $this->createRole($post['copy-name'], $current->capabilities) ) {
|
54 |
ak_admin_notify(__('New role created.', 'capsman-enhanced'));
|
55 |
+
$this->cm->current = $newrole;
|
56 |
} else {
|
57 |
if ( empty($post['copy-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
|
58 |
ak_admin_error( 'Error: No role name specified.', 'capsman-enhanced' );
|
includes/manager.php
CHANGED
@@ -1,14 +1,7 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
*
|
4 |
-
*
|
5 |
* Plugin to create and manage roles and capabilities.
|
6 |
-
*
|
7 |
-
* This is the plugin's original controller module, which is due for some refactoring.
|
8 |
-
* It registers and handles menus, loads javascript, and processes or routes update operations from the Capabilities screen.
|
9 |
-
*
|
10 |
-
* Note: for lower overhead, this module is only loaded for Capabilities Pro URLs.
|
11 |
-
* For all other wp-admin URLs, menus are registered by a separate skeleton module.
|
12 |
*
|
13 |
* @author Jordi Canals, Kevin Behrens
|
14 |
* @copyright Copyright (C) 2009, 2010 Jordi Canals, (C) 2020 PublishPress
|
@@ -175,14 +168,8 @@ class CapabilityManager
|
|
175 |
*/
|
176 |
function adminStyles()
|
177 |
{
|
178 |
-
if (empty($_REQUEST['page'])
|
179 |
-
|| !in_array(
|
180 |
-
$_REQUEST['page'],
|
181 |
-
['pp-capabilities', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-nav-menus', 'pp-capabilities-editor-features', 'pp-capabilities-backup', 'pp-capabilities-settings', 'pp-capabilities-admin-features']
|
182 |
-
)
|
183 |
-
) {
|
184 |
return;
|
185 |
-
}
|
186 |
|
187 |
wp_enqueue_style('cme-admin-common', $this->mod_url . '/common/css/pressshack-admin.css', [], PUBLISHPRESS_CAPS_VERSION);
|
188 |
|
@@ -195,16 +182,13 @@ class CapabilityManager
|
|
195 |
$suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
|
196 |
$url = $this->mod_url . "/common/js/admin{$suffix}.js";
|
197 |
wp_enqueue_script( 'cme_admin', $url, array('jquery'), PUBLISHPRESS_CAPS_VERSION, true );
|
198 |
-
wp_localize_script( 'cme_admin', 'cmeAdmin',
|
199 |
'negationCaption' => __( 'Explicity negate this capability by storing as disabled', 'capsman-enhanced' ),
|
200 |
'typeCapsNegationCaption' => __( 'Explicitly negate these capabilities by storing as disabled', 'capsman-enhanced' ),
|
201 |
'typeCapUnregistered' => __( 'Post type registration does not define this capability distinctly', 'capsman-enhanced' ),
|
202 |
'capNegated' => __( 'This capability is explicitly negated. Click to add/remove normally.', 'capsman-enhanced' ),
|
203 |
'chkCaption' => __( 'Add or remove this capability from the WordPress role', 'capsman-enhanced' ),
|
204 |
-
'switchableCaption' => __( 'Add or remove capability from the role normally', 'capsman-enhanced' )
|
205 |
-
'deleteWarning' => __( 'Are you sure you want to delete this item ?', 'capsman-enhanced' ),
|
206 |
-
'saveWarning' => __( 'Add or clear custom item entry before saving changes.', 'capsman-enhanced' )
|
207 |
-
]
|
208 |
);
|
209 |
}
|
210 |
|
@@ -244,26 +228,6 @@ class CapabilityManager
|
|
244 |
add_filter( 'plugins_loaded', array( &$this, 'processRoleUpdate' ) );
|
245 |
}
|
246 |
|
247 |
-
public function set_current_role($role_name) {
|
248 |
-
global $current_user;
|
249 |
-
|
250 |
-
if ($role_name && !empty($current_user) && !empty($current_user->ID)) {
|
251 |
-
update_option("capsman_last_role_{$current_user->ID}", $role_name);
|
252 |
-
}
|
253 |
-
}
|
254 |
-
|
255 |
-
public function get_last_role() {
|
256 |
-
global $current_user;
|
257 |
-
|
258 |
-
$role_name = get_option("capsman_last_role_{$current_user->ID}");
|
259 |
-
|
260 |
-
if (!$role_name || !get_role($role_name)) {
|
261 |
-
$role_name = get_option('default_role');
|
262 |
-
}
|
263 |
-
|
264 |
-
return $role_name;
|
265 |
-
}
|
266 |
-
|
267 |
// Direct query of stored role definitions
|
268 |
function log_db_roles( $legacy_arg = '' ) {
|
269 |
global $wpdb;
|
@@ -370,8 +334,6 @@ class CapabilityManager
|
|
370 |
|
371 |
add_submenu_page('pp-capabilities', __('Editor Features', 'capsman-enhanced'), __('Editor Features', 'capsman-enhanced'), $cap_name, 'pp-capabilities-editor-features', [$this, 'ManageEditorFeatures']);
|
372 |
|
373 |
-
add_submenu_page('pp-capabilities', __('Admin Features', 'capsman-enhanced'), __('Admin Features', 'capsman-enhanced'), $cap_name, 'pp-capabilities-admin-features', [$this, 'ManageAdminFeatures']);
|
374 |
-
|
375 |
do_action('pp-capabilities-admin-submenus');
|
376 |
|
377 |
add_submenu_page('pp-capabilities', __('Backup', 'capsman-enhanced'), __('Backup', 'capsman-enhanced'), $cap_name, 'pp-capabilities-backup', array($this, 'backupTool'));
|
@@ -444,12 +406,6 @@ class CapabilityManager
|
|
444 |
require_once ( dirname(CME_FILE) . '/includes/roles/roles.php' );
|
445 |
}
|
446 |
|
447 |
-
|
448 |
-
/**
|
449 |
-
* Manages Editor Features
|
450 |
-
*
|
451 |
-
* @return void
|
452 |
-
*/
|
453 |
public function ManageEditorFeatures() {
|
454 |
if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
|
455 |
// TODO: Implement exceptions.
|
@@ -461,7 +417,7 @@ class CapabilityManager
|
|
461 |
|
462 |
if (!isset($this->current)) {
|
463 |
if (empty($_POST) && !empty($_REQUEST['role'])) {
|
464 |
-
$this->
|
465 |
}
|
466 |
}
|
467 |
|
@@ -474,7 +430,7 @@ class CapabilityManager
|
|
474 |
}
|
475 |
|
476 |
if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['ppc-editor-features-role'])) {
|
477 |
-
$this->
|
478 |
|
479 |
$classic_editor = pp_capabilities_is_classic_editor_available();
|
480 |
|
@@ -498,56 +454,8 @@ class CapabilityManager
|
|
498 |
ak_admin_notify(__('Settings updated.', 'capabilities-pro'));
|
499 |
}
|
500 |
|
501 |
-
do_action('pp_capabilities_editor_features');
|
502 |
include(dirname(CME_FILE) . '/includes/features/editor-features.php');
|
503 |
}
|
504 |
-
|
505 |
-
/**
|
506 |
-
* Manages Admin Features
|
507 |
-
*
|
508 |
-
* @return void
|
509 |
-
*/
|
510 |
-
public function ManageAdminFeatures() {
|
511 |
-
if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
|
512 |
-
// TODO: Implement exceptions.
|
513 |
-
wp_die('<strong>' .__('You do not have permission to manage admin features.', 'capabilities-pro') . '</strong>');
|
514 |
-
}
|
515 |
-
|
516 |
-
$this->generateNames();
|
517 |
-
$roles = array_keys($this->roles);
|
518 |
-
|
519 |
-
if (!isset($this->current)) {
|
520 |
-
if (empty($_POST) && !empty($_REQUEST['role'])) {
|
521 |
-
$this->set_current_role($_REQUEST['role']);
|
522 |
-
}
|
523 |
-
}
|
524 |
-
|
525 |
-
if (!isset($this->current) || !get_role($this->current)) {
|
526 |
-
$this->current = get_option('default_role');
|
527 |
-
}
|
528 |
-
|
529 |
-
if (!in_array($this->current, $roles)) {
|
530 |
-
$this->current = array_shift($roles);
|
531 |
-
}
|
532 |
-
|
533 |
-
if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['ppc-admin-features-role'])) {
|
534 |
-
$this->set_current_role($_POST['ppc-admin-features-role']);
|
535 |
-
|
536 |
-
$disabled_admin_items = !empty(get_option('capsman_disabled_admin_features')) ? (array)get_option('capsman_disabled_admin_features') : [];
|
537 |
-
$disabled_admin_items[$_POST['ppc-admin-features-role']] = isset($_POST['capsman_disabled_admin_features']) ? $_POST['capsman_disabled_admin_features'] : '';
|
538 |
-
|
539 |
-
update_option('capsman_disabled_admin_features', $disabled_admin_items, false);
|
540 |
-
|
541 |
-
//set reload option for instant reflection if user is updating own role
|
542 |
-
if(in_array($_POST['ppc-admin-features-role'], wp_get_current_user()->roles)){
|
543 |
-
$ppc_page_reload = '1';
|
544 |
-
}
|
545 |
-
|
546 |
-
ak_admin_notify(__('Settings updated.', 'capabilities-pro'));
|
547 |
-
}
|
548 |
-
|
549 |
-
include(dirname(CME_FILE) . '/includes/features/admin-features.php');
|
550 |
-
}
|
551 |
|
552 |
/**
|
553 |
* Sets the 'manage_capabilities' cap to the administrator role.
|
@@ -575,7 +483,7 @@ class CapabilityManager
|
|
575 |
{
|
576 |
global $current_user;
|
577 |
|
578 |
-
if (function_exists('wp_get_current_user')
|
579 |
$this->generateNames();
|
580 |
$valid = array_keys($this->roles);
|
581 |
|
@@ -721,12 +629,12 @@ class CapabilityManager
|
|
721 |
wp_die(__('The selected role is not editable.', 'capsman-enhanced'));
|
722 |
}
|
723 |
|
724 |
-
$this->
|
725 |
}
|
726 |
}
|
727 |
|
728 |
if (!isset($this->current) || !get_role($this->current)) {
|
729 |
-
$this->current =
|
730 |
}
|
731 |
|
732 |
if ( ! in_array($this->current, $roles) ) { // Current role has been deleted.
|
@@ -754,12 +662,12 @@ class CapabilityManager
|
|
754 |
$post['caps'] = array();
|
755 |
}
|
756 |
|
|
|
|
|
757 |
// Select a new role.
|
758 |
if ( ! empty($post['LoadRole']) ) {
|
759 |
-
$this->
|
760 |
} else {
|
761 |
-
$this->set_current_role($post['current']);
|
762 |
-
|
763 |
require_once( dirname(__FILE__).'/handler.php' );
|
764 |
$capsman_modify = new CapsmanHandler( $this );
|
765 |
$capsman_modify->processAdminGeneral( $post );
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Capability Manager.
|
|
|
4 |
* Plugin to create and manage roles and capabilities.
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
*
|
6 |
* @author Jordi Canals, Kevin Behrens
|
7 |
* @copyright Copyright (C) 2009, 2010 Jordi Canals, (C) 2020 PublishPress
|
168 |
*/
|
169 |
function adminStyles()
|
170 |
{
|
171 |
+
if ( empty( $_REQUEST['page'] ) || ! in_array( $_REQUEST['page'], array( 'pp-capabilities', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-nav-menus', 'pp-capabilities-editor-features', 'pp-capabilities-backup', 'pp-capabilities-settings' ) ) )
|
|
|
|
|
|
|
|
|
|
|
172 |
return;
|
|
|
173 |
|
174 |
wp_enqueue_style('cme-admin-common', $this->mod_url . '/common/css/pressshack-admin.css', [], PUBLISHPRESS_CAPS_VERSION);
|
175 |
|
182 |
$suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
|
183 |
$url = $this->mod_url . "/common/js/admin{$suffix}.js";
|
184 |
wp_enqueue_script( 'cme_admin', $url, array('jquery'), PUBLISHPRESS_CAPS_VERSION, true );
|
185 |
+
wp_localize_script( 'cme_admin', 'cmeAdmin', array(
|
186 |
'negationCaption' => __( 'Explicity negate this capability by storing as disabled', 'capsman-enhanced' ),
|
187 |
'typeCapsNegationCaption' => __( 'Explicitly negate these capabilities by storing as disabled', 'capsman-enhanced' ),
|
188 |
'typeCapUnregistered' => __( 'Post type registration does not define this capability distinctly', 'capsman-enhanced' ),
|
189 |
'capNegated' => __( 'This capability is explicitly negated. Click to add/remove normally.', 'capsman-enhanced' ),
|
190 |
'chkCaption' => __( 'Add or remove this capability from the WordPress role', 'capsman-enhanced' ),
|
191 |
+
'switchableCaption' => __( 'Add or remove capability from the role normally', 'capsman-enhanced' ) )
|
|
|
|
|
|
|
192 |
);
|
193 |
}
|
194 |
|
228 |
add_filter( 'plugins_loaded', array( &$this, 'processRoleUpdate' ) );
|
229 |
}
|
230 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
// Direct query of stored role definitions
|
232 |
function log_db_roles( $legacy_arg = '' ) {
|
233 |
global $wpdb;
|
334 |
|
335 |
add_submenu_page('pp-capabilities', __('Editor Features', 'capsman-enhanced'), __('Editor Features', 'capsman-enhanced'), $cap_name, 'pp-capabilities-editor-features', [$this, 'ManageEditorFeatures']);
|
336 |
|
|
|
|
|
337 |
do_action('pp-capabilities-admin-submenus');
|
338 |
|
339 |
add_submenu_page('pp-capabilities', __('Backup', 'capsman-enhanced'), __('Backup', 'capsman-enhanced'), $cap_name, 'pp-capabilities-backup', array($this, 'backupTool'));
|
406 |
require_once ( dirname(CME_FILE) . '/includes/roles/roles.php' );
|
407 |
}
|
408 |
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
public function ManageEditorFeatures() {
|
410 |
if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
|
411 |
// TODO: Implement exceptions.
|
417 |
|
418 |
if (!isset($this->current)) {
|
419 |
if (empty($_POST) && !empty($_REQUEST['role'])) {
|
420 |
+
$this->current = $_REQUEST['role'];
|
421 |
}
|
422 |
}
|
423 |
|
430 |
}
|
431 |
|
432 |
if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['ppc-editor-features-role'])) {
|
433 |
+
$this->current = $_POST['ppc-editor-features-role'];
|
434 |
|
435 |
$classic_editor = pp_capabilities_is_classic_editor_available();
|
436 |
|
454 |
ak_admin_notify(__('Settings updated.', 'capabilities-pro'));
|
455 |
}
|
456 |
|
|
|
457 |
include(dirname(CME_FILE) . '/includes/features/editor-features.php');
|
458 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
459 |
|
460 |
/**
|
461 |
* Sets the 'manage_capabilities' cap to the administrator role.
|
483 |
{
|
484 |
global $current_user;
|
485 |
|
486 |
+
if (function_exists('wp_get_current_user')) { // Avoid downstream fatal error from premature current_user_can() call if get_editable_roles() is called too early
|
487 |
$this->generateNames();
|
488 |
$valid = array_keys($this->roles);
|
489 |
|
629 |
wp_die(__('The selected role is not editable.', 'capsman-enhanced'));
|
630 |
}
|
631 |
|
632 |
+
$this->current = $role;
|
633 |
}
|
634 |
}
|
635 |
|
636 |
if (!isset($this->current) || !get_role($this->current)) {
|
637 |
+
$this->current = get_option('default_role');
|
638 |
}
|
639 |
|
640 |
if ( ! in_array($this->current, $roles) ) { // Current role has been deleted.
|
662 |
$post['caps'] = array();
|
663 |
}
|
664 |
|
665 |
+
$this->current = $post['current'];
|
666 |
+
|
667 |
// Select a new role.
|
668 |
if ( ! empty($post['LoadRole']) ) {
|
669 |
+
$this->current = $post['role'];
|
670 |
} else {
|
|
|
|
|
671 |
require_once( dirname(__FILE__).'/handler.php' );
|
672 |
$capsman_modify = new CapsmanHandler( $this );
|
673 |
$capsman_modify->processAdminGeneral( $post );
|
includes/network.php
CHANGED
@@ -1,11 +1,4 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* PublishPress Capabilities [Free]
|
4 |
-
*
|
5 |
-
* Multisite-related functions / filter handlers
|
6 |
-
*
|
7 |
-
*/
|
8 |
-
|
9 |
add_action( 'wpmu_new_blog', '_cme_new_blog' );
|
10 |
function _cme_new_blog( $new_blog_id ) {
|
11 |
if ( $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) ) {
|
@@ -74,7 +67,7 @@ function _cme_new_blog( $new_blog_id ) {
|
|
74 |
if ( defined('PRESSPERMIT_ACTIVE') ) {
|
75 |
pp_capabilities_update_permissions_option('supplemental_role_defs', $blog_pp_only);
|
76 |
}
|
77 |
-
|
78 |
restore_current_blog();
|
79 |
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
80 |
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
add_action( 'wpmu_new_blog', '_cme_new_blog' );
|
3 |
function _cme_new_blog( $new_blog_id ) {
|
4 |
if ( $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) ) {
|
67 |
if ( defined('PRESSPERMIT_ACTIVE') ) {
|
68 |
pp_capabilities_update_permissions_option('supplemental_role_defs', $blog_pp_only);
|
69 |
}
|
70 |
+
|
71 |
restore_current_blog();
|
72 |
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
73 |
|
includes/pp-handler.php
CHANGED
@@ -1,10 +1,4 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* PublishPress Capabilities [Free]
|
4 |
-
*
|
5 |
-
* Process updates to Type-Specific Types / Taxonomies, Detailed Taxonomies
|
6 |
-
*
|
7 |
-
*/
|
8 |
|
9 |
function _cme_update_pp_usage() {
|
10 |
static $updated;
|
@@ -59,7 +53,7 @@ function _cme_update_pp_usage() {
|
|
59 |
// ensure smooth transition if Press Permit Core is deactivated
|
60 |
update_option( 'cme_enabled_post_types', $value );
|
61 |
}
|
62 |
-
|
63 |
if (defined('PRESSPERMIT_ACTIVE') && in_array($option_basename, ['enabled_post_types', 'enabled_taxonomies'])) {
|
64 |
pp_capabilities_update_permissions_option($option_basename, $value);
|
65 |
}
|
@@ -95,3 +89,4 @@ function _cme_update_pp_usage() {
|
|
95 |
|
96 |
return $updated;
|
97 |
}
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
function _cme_update_pp_usage() {
|
4 |
static $updated;
|
53 |
// ensure smooth transition if Press Permit Core is deactivated
|
54 |
update_option( 'cme_enabled_post_types', $value );
|
55 |
}
|
56 |
+
|
57 |
if (defined('PRESSPERMIT_ACTIVE') && in_array($option_basename, ['enabled_post_types', 'enabled_taxonomies'])) {
|
58 |
pp_capabilities_update_permissions_option($option_basename, $value);
|
59 |
}
|
89 |
|
90 |
return $updated;
|
91 |
}
|
92 |
+
|
includes/pp-ui.php
CHANGED
@@ -1,12 +1,4 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* PublishPress Capabilities [Free]
|
4 |
-
*
|
5 |
-
* Capabilities UI: PublishPress Permissions integration
|
6 |
-
*
|
7 |
-
* This module also contains the Settings UI for Type-Specific Types / Taxonomies, which were previously a front end to PublishPress Permissions
|
8 |
-
*
|
9 |
-
*/
|
10 |
|
11 |
class Capsman_PP_UI {
|
12 |
function get_metagroup_caps( $default ) {
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
class Capsman_PP_UI {
|
4 |
function get_metagroup_caps( $default ) {
|
includes/roles/class/class-pp-roles-actions.php
CHANGED
@@ -185,7 +185,7 @@ class Pp_Roles_Actions
|
|
185 |
* Validate input data
|
186 |
*/
|
187 |
require_once(dirname(CME_FILE).'/includes/handler.php');
|
188 |
-
|
189 |
$role = $capsman_handler->createNewName($_REQUEST['name']);
|
190 |
|
191 |
/**
|
185 |
* Validate input data
|
186 |
*/
|
187 |
require_once(dirname(CME_FILE).'/includes/handler.php');
|
188 |
+
$capsman_handler = new CapsmanHandler();
|
189 |
$role = $capsman_handler->createNewName($_REQUEST['name']);
|
190 |
|
191 |
/**
|
includes/settings.php
CHANGED
@@ -1,9 +1,7 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
*
|
4 |
-
*
|
5 |
-
* Settings UI
|
6 |
-
*
|
7 |
*/
|
8 |
|
9 |
global $wpdb;
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Capability Manager Settings
|
4 |
+
*
|
|
|
|
|
5 |
*/
|
6 |
|
7 |
global $wpdb;
|
languages/capsman-enhanced-en_US.mo
CHANGED
Binary file
|
languages/capsman-enhanced-en_US.po
CHANGED
@@ -2,8 +2,8 @@ msgid ""
|
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: PublishPress Capabilities\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date: 2021-
|
6 |
-
"PO-Revision-Date: 2021-
|
7 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
8 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
9 |
"Language: en_US\n"
|
@@ -49,11 +49,11 @@ msgstr ""
|
|
49 |
msgid "Settings saved."
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: includes-core/CoreAdmin.php:
|
53 |
msgid "Admin Menus"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: includes-core/CoreAdmin.php:
|
57 |
msgid "Nav Menus"
|
58 |
msgstr ""
|
59 |
|
@@ -62,9 +62,9 @@ msgid "Admin Menu Restrictions"
|
|
62 |
msgstr ""
|
63 |
|
64 |
#: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
|
65 |
-
#: includes/admin.php:
|
66 |
-
#: includes/features/editor-features.php:
|
67 |
-
#: includes/features/editor-features.php:
|
68 |
msgid "Save Changes"
|
69 |
msgstr ""
|
70 |
|
@@ -74,64 +74,12 @@ msgid ""
|
|
74 |
"PublishPress Capabilities Pro"
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: includes-core/admin-menus-promo.php:62
|
78 |
-
#: includes-
|
79 |
-
#: includes
|
80 |
-
#: includes/admin-load.php:272 includes/manager.php:384
|
81 |
-
#: includes/manager.php:385
|
82 |
msgid "Upgrade to Pro"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: includes-core/editor-features-promo.php:24
|
86 |
-
msgid "Metaboxes"
|
87 |
-
msgstr ""
|
88 |
-
|
89 |
-
#: includes-core/editor-features-promo.php:32
|
90 |
-
msgid "Checklist"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
#: includes-core/editor-features-promo.php:45
|
94 |
-
msgid "Editorial Comments"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
#: includes-core/editor-features-promo.php:58
|
98 |
-
msgid "Notifications"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: includes-core/editor-features-promo.php:71
|
102 |
-
msgid "TaxoPress - Settings"
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
-
#: includes-core/editor-features-promo.php:86
|
106 |
-
msgid ""
|
107 |
-
"You can select plugin metaboxes to hide, or enter a class or ID for custom "
|
108 |
-
"items. This feature is available in PublishPress Capabilities Pro."
|
109 |
-
msgstr ""
|
110 |
-
|
111 |
-
#: includes-core/editor-features-promo.php:101
|
112 |
-
msgid "Custom Items"
|
113 |
-
msgstr ""
|
114 |
-
|
115 |
-
#: includes-core/editor-features-promo.php:107
|
116 |
-
msgid "Custom item one"
|
117 |
-
msgstr ""
|
118 |
-
|
119 |
-
#: includes-core/editor-features-promo.php:108
|
120 |
-
#: includes-core/editor-features-promo.php:122
|
121 |
-
#: includes-core/editor-features-promo.php:135
|
122 |
-
#: includes/roles/class/class-pp-roles-list-table.php:168
|
123 |
-
#: includes/roles/class/class-pp-roles-list-table.php:307
|
124 |
-
msgid "Delete"
|
125 |
-
msgstr ""
|
126 |
-
|
127 |
-
#: includes-core/editor-features-promo.php:121
|
128 |
-
msgid "Permalink: Descriptive Caption"
|
129 |
-
msgstr ""
|
130 |
-
|
131 |
-
#: includes-core/editor-features-promo.php:135
|
132 |
-
msgid "Page Attributes: Order"
|
133 |
-
msgstr ""
|
134 |
-
|
135 |
#: includes-core/nav-menus-promo.php:29
|
136 |
msgid "Navigation Menu Restrictions"
|
137 |
msgstr ""
|
@@ -142,47 +90,24 @@ msgid ""
|
|
142 |
"PublishPress Capabilities Pro"
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: includes/admin
|
146 |
-
#: includes/roles/class/class-pp-roles-list-table.php:125
|
147 |
-
msgid "Capabilities"
|
148 |
-
msgstr ""
|
149 |
-
|
150 |
-
#: includes/admin-load.php:258 includes/manager.php:359
|
151 |
-
#: includes/roles/roles.php:4
|
152 |
-
msgid "Roles"
|
153 |
-
msgstr ""
|
154 |
-
|
155 |
-
#: includes/admin-load.php:259 includes/manager.php:371
|
156 |
-
msgid "Editor Features"
|
157 |
-
msgstr ""
|
158 |
-
|
159 |
-
#: includes/admin-load.php:262 includes/backup.php:47 includes/manager.php:375
|
160 |
-
msgid "Backup"
|
161 |
-
msgstr ""
|
162 |
-
|
163 |
-
#: includes/admin-load.php:265
|
164 |
-
#: includes/features/restrict-editor-features.php:313 includes/manager.php:378
|
165 |
-
msgid "Settings"
|
166 |
-
msgstr ""
|
167 |
-
|
168 |
-
#: includes/admin.php:40
|
169 |
#, php-format
|
170 |
msgid ""
|
171 |
"Warning: This role cannot access the dashboard without the read capability. "
|
172 |
"%1$sClick here to fix this now%2$s."
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: includes/admin.php:
|
176 |
msgid "Role Capabilities"
|
177 |
msgstr ""
|
178 |
|
179 |
-
#: includes/admin.php:
|
180 |
msgid ""
|
181 |
"<strong>Note:</strong> Capability changes <strong>remain in the database</"
|
182 |
"strong> after plugin deactivation."
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: includes/admin.php:
|
186 |
#, php-format
|
187 |
msgid ""
|
188 |
"<strong>Note:</strong> Capability changes <strong>remain in the database</"
|
@@ -190,222 +115,222 @@ msgid ""
|
|
190 |
"%sPermission Group%s."
|
191 |
msgstr ""
|
192 |
|
193 |
-
#: includes/admin.php:
|
194 |
msgid "PublishPress Permissions"
|
195 |
msgstr ""
|
196 |
|
197 |
-
#: includes/admin.php:
|
198 |
msgid ""
|
199 |
"Automatically define type-specific capabilities for your custom post types "
|
200 |
"and taxonomies"
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: includes/admin.php:
|
204 |
msgid "Assign standard WP roles supplementally for a specific post type"
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: includes/admin.php:
|
208 |
msgid ""
|
209 |
"Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: includes/admin.php:
|
213 |
msgid "Customize reading permissions per-category or per-post"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/admin.php:
|
217 |
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: includes/admin.php:
|
221 |
msgid ""
|
222 |
"Custom Post Visibility statuses, fully implemented throughout wp-admin "
|
223 |
"<em>(Pro)</em>"
|
224 |
msgstr ""
|
225 |
|
226 |
-
#: includes/admin.php:
|
227 |
msgid ""
|
228 |
"Custom Moderation statuses for access-controlled, multi-step publishing "
|
229 |
"workflow <em>(Pro)</em>"
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: includes/admin.php:
|
233 |
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
|
234 |
msgstr ""
|
235 |
|
236 |
-
#: includes/admin.php:
|
237 |
msgid ""
|
238 |
"Customize the moderated editing of published content with Revisionary or "
|
239 |
"Post Forking <em>(Pro)</em>"
|
240 |
msgstr ""
|
241 |
|
242 |
-
#: includes/admin.php:
|
243 |
msgid ""
|
244 |
"Grant Spectator, Participant or Moderator access to specific bbPress forums "
|
245 |
"<em>(Pro)</em>"
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: includes/admin.php:
|
249 |
msgid ""
|
250 |
"Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: includes/admin.php:
|
254 |
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
|
255 |
msgstr ""
|
256 |
|
257 |
-
#: includes/admin.php:
|
258 |
msgid "Member support forum"
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: includes/admin.php:
|
262 |
#, php-format
|
263 |
msgid "%1$sgrab%2$s %3$s"
|
264 |
msgstr ""
|
265 |
|
266 |
-
#: includes/admin.php:
|
267 |
#, php-format
|
268 |
msgid "%s (free install)"
|
269 |
msgstr ""
|
270 |
|
271 |
-
#: includes/admin.php:
|
272 |
#, php-format
|
273 |
msgid "%1$sbuy%2$s %3$s"
|
274 |
msgstr ""
|
275 |
|
276 |
-
#: includes/admin.php:
|
277 |
#, php-format
|
278 |
msgid "%s info/purchase"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: includes/admin.php:
|
282 |
msgid " "
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: includes/admin.php:
|
286 |
msgid "Reading"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: includes/admin.php:
|
290 |
msgid "Editing Capabilities"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: includes/admin.php:
|
294 |
msgid "Deletion Capabilities"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: includes/admin.php:
|
298 |
msgid "can read posts which are currently published with private visibility"
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: includes/admin.php:
|
302 |
msgid ""
|
303 |
"has basic editing capability (but may need other capabilities based on post "
|
304 |
"status and ownership)"
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: includes/admin.php:
|
308 |
msgid "can edit posts which were created by other users"
|
309 |
msgstr ""
|
310 |
|
311 |
-
#: includes/admin.php:
|
312 |
msgid "can edit posts which are currently published"
|
313 |
msgstr ""
|
314 |
|
315 |
-
#: includes/admin.php:
|
316 |
msgid "can edit posts which are currently published with private visibility"
|
317 |
msgstr ""
|
318 |
|
319 |
-
#: includes/admin.php:
|
320 |
msgid "can make a post publicly visible"
|
321 |
msgstr ""
|
322 |
|
323 |
-
#: includes/admin.php:
|
324 |
msgid ""
|
325 |
"has basic deletion capability (but may need other capabilities based on post "
|
326 |
"status and ownership)"
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: includes/admin.php:
|
330 |
msgid "can delete posts which were created by other users"
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: includes/admin.php:
|
334 |
msgid "can delete posts which are currently published"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: includes/admin.php:
|
338 |
msgid "can delete posts which are currently published with private visibility"
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: includes/admin.php:
|
342 |
-
#: includes/admin.php:
|
343 |
#, php-format
|
344 |
msgid "%s: assigned by Permission Group"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: includes/admin.php:
|
348 |
#, php-format
|
349 |
msgid "shared capability: %s"
|
350 |
msgstr ""
|
351 |
|
352 |
-
#: includes/admin.php:
|
353 |
msgid "Other WordPress Core Capabilities"
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: includes/admin.php:
|
357 |
msgid ""
|
358 |
"Lockout Prevention: To remove read capability, first remove WordPress "
|
359 |
"admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: includes/admin.php:
|
363 |
msgid "check/uncheck all"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: includes/admin.php:
|
367 |
msgid "negate all (storing as disabled capabilities)"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: includes/admin.php:
|
371 |
msgid "negate none (add/remove all capabilities normally)"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: includes/admin.php:
|
375 |
#, php-format
|
376 |
msgid "%s Capabilities"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: includes/admin.php:
|
380 |
msgid "Invalid Capabilities"
|
381 |
msgstr ""
|
382 |
|
383 |
-
#: includes/admin.php:
|
384 |
msgid ""
|
385 |
"The following entries have no effect. Please assign desired capabilities in "
|
386 |
"the Read / Edit / Delete grid above."
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: includes/admin.php:
|
390 |
msgid "Additional Capabilities"
|
391 |
msgstr ""
|
392 |
|
393 |
-
#: includes/admin.php:
|
394 |
msgid ""
|
395 |
"Role level is mostly deprecated. However, it still determines eligibility "
|
396 |
"for Post Author assignment and limits the application of user editing "
|
397 |
"capabilities."
|
398 |
msgstr ""
|
399 |
|
400 |
-
#: includes/admin.php:
|
401 |
msgid "Level:"
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: includes/admin.php:
|
405 |
msgid "Delete this role"
|
406 |
msgstr ""
|
407 |
|
408 |
-
#: includes/admin.php:
|
409 |
#, php-format
|
410 |
msgid ""
|
411 |
"You are about to delete the %s role.\n"
|
@@ -413,106 +338,106 @@ msgid ""
|
|
413 |
" 'Cancel' to stop, 'OK' to delete."
|
414 |
msgstr ""
|
415 |
|
416 |
-
#: includes/admin.php:
|
417 |
msgid "Delete Role"
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: includes/admin.php:
|
421 |
msgid "Add Capability"
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: includes/admin.php:
|
425 |
msgid "Add to role"
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: includes/admin.php:
|
429 |
msgid "Copy this role to"
|
430 |
msgstr ""
|
431 |
|
432 |
-
#: includes/admin.php:
|
433 |
#: includes/roles/class/class-pp-roles-list-table.php:80
|
434 |
msgid "Role Name"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: includes/admin.php:
|
438 |
msgid ""
|
439 |
"Make role available for supplemental assignment to Permission Groups only"
|
440 |
msgstr ""
|
441 |
|
442 |
-
#: includes/admin.php:
|
443 |
msgid "hidden"
|
444 |
msgstr ""
|
445 |
|
446 |
-
#: includes/admin.php:
|
447 |
msgid "Copy"
|
448 |
msgstr ""
|
449 |
|
450 |
-
#: includes/admin.php:
|
451 |
msgid "Rename Role"
|
452 |
msgstr ""
|
453 |
|
454 |
-
#: includes/admin.php:
|
455 |
msgid "New Role Name"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: includes/admin.php:
|
459 |
msgid "Rename"
|
460 |
msgstr ""
|
461 |
|
462 |
-
#: includes/admin.php:
|
463 |
msgid "Create this role definition in new (future) sites"
|
464 |
msgstr ""
|
465 |
|
466 |
-
#: includes/admin.php:
|
467 |
msgid "include in new sites"
|
468 |
msgstr ""
|
469 |
|
470 |
-
#: includes/admin.php:
|
471 |
msgid "Copy / update this role definition to all sites now"
|
472 |
msgstr ""
|
473 |
|
474 |
-
#: includes/admin.php:
|
475 |
msgid "sync role to all sites now"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: includes/admin.php:
|
479 |
msgid "Copy option settings to all sites now"
|
480 |
msgstr ""
|
481 |
|
482 |
-
#: includes/admin.php:
|
483 |
msgid "sync options to all sites now"
|
484 |
msgstr ""
|
485 |
|
486 |
-
#: includes/backup-handler.php:
|
487 |
msgid "You do not have permission to restore roles."
|
488 |
msgstr ""
|
489 |
|
490 |
-
#: includes/backup-handler.php:
|
491 |
msgid "New backup saved."
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: includes/backup-handler.php:
|
495 |
msgid "Roles and Capabilities restored from initial backup."
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: includes/backup-handler.php:
|
499 |
-
#: includes/backup-handler.php:
|
500 |
msgid "Restore failed. No backup found."
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/backup-handler.php:
|
504 |
msgid "Roles and Capabilities restored from last backup."
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: includes/backup-handler.php:
|
508 |
msgid "Roles and Capabilities restored from selected auto-backup."
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: includes/backup-handler.php:
|
512 |
msgid "Needed function to create default roles not found!"
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: includes/backup-handler.php:
|
516 |
msgid "Roles and Capabilities reset to WordPress defaults"
|
517 |
msgstr ""
|
518 |
|
@@ -525,6 +450,11 @@ msgstr ""
|
|
525 |
msgid "Restore"
|
526 |
msgstr ""
|
527 |
|
|
|
|
|
|
|
|
|
|
|
528 |
#: includes/backup.php:48
|
529 |
msgid "Reset Roles"
|
530 |
msgstr ""
|
@@ -667,40 +597,40 @@ msgstr ""
|
|
667 |
msgid "Reset to WordPress defaults"
|
668 |
msgstr ""
|
669 |
|
670 |
-
#: includes/features/editor-features-classic.php:
|
671 |
msgid "Classic Editor Screen"
|
672 |
msgstr ""
|
673 |
|
674 |
-
#: includes/features/editor-features-classic.php:
|
675 |
-
#: includes/features/editor-features-gutenberg.php:
|
676 |
#, php-format
|
677 |
msgid "%s Restrict"
|
678 |
msgstr ""
|
679 |
|
680 |
-
#: includes/features/editor-features-classic.php:
|
681 |
-
#: includes/features/editor-features-gutenberg.php:
|
682 |
msgid "Toggle all"
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: includes/features/editor-features-gutenberg.php:
|
686 |
msgid "Gutenberg Screen"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: includes/features/editor-features.php:
|
690 |
msgid "Editor Feature Restriction"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: includes/features/editor-features.php:
|
694 |
msgid ""
|
695 |
"Select editor features to remove. Note that this screen cannot be used to "
|
696 |
"grant additional features to any role."
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: includes/features/editor-features.php:
|
700 |
msgid "Gutenberg"
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: includes/features/editor-features.php:
|
704 |
msgid "Classic"
|
705 |
msgstr ""
|
706 |
|
@@ -885,6 +815,11 @@ msgstr ""
|
|
885 |
msgid "Publish / Update"
|
886 |
msgstr ""
|
887 |
|
|
|
|
|
|
|
|
|
|
|
888 |
#: includes/features/restrict-editor-features.php:314
|
889 |
msgid "Options"
|
890 |
msgstr ""
|
@@ -947,167 +882,173 @@ msgstr ""
|
|
947 |
msgid "All %s"
|
948 |
msgstr ""
|
949 |
|
950 |
-
#: includes/filters.php:
|
951 |
msgid "Edit Roles"
|
952 |
msgstr ""
|
953 |
|
954 |
-
#: includes/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
955 |
msgid "New role created."
|
956 |
msgstr ""
|
957 |
|
958 |
-
#: includes/handler.php:
|
959 |
msgid "Error: Failed creating the new role."
|
960 |
msgstr ""
|
961 |
|
962 |
-
#: includes/handler.php:
|
963 |
#, php-format
|
964 |
msgid "Role \"%s\" (id %s) renamed to \"%s\""
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: includes/handler.php:
|
968 |
msgid "Incorrect capability name."
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: includes/handler.php:
|
972 |
msgid "Type / Taxonomy settings saved."
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: includes/handler.php:
|
976 |
msgid "Bad form received."
|
977 |
msgstr ""
|
978 |
|
979 |
-
#: includes/handler.php:
|
980 |
msgid "You cannot remove Manage Capabilities from Administrators"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: includes/manager.php:
|
984 |
msgid "Explicity negate this capability by storing as disabled"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: includes/manager.php:
|
988 |
msgid "Explicitly negate these capabilities by storing as disabled"
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: includes/manager.php:
|
992 |
msgid "Post type registration does not define this capability distinctly"
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: includes/manager.php:
|
996 |
msgid "This capability is explicitly negated. Click to add/remove normally."
|
997 |
msgstr ""
|
998 |
|
999 |
-
#: includes/manager.php:
|
1000 |
msgid "Add or remove this capability from the WordPress role"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
-
#: includes/manager.php:
|
1004 |
msgid "Add or remove capability from the role normally"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
-
#: includes/manager.php:
|
1008 |
-
msgid "Are you sure you want to delete this item ?"
|
1009 |
-
msgstr ""
|
1010 |
-
|
1011 |
-
#: includes/manager.php:206
|
1012 |
-
msgid "Add or clear custom item entry before saving changes."
|
1013 |
-
msgstr ""
|
1014 |
-
|
1015 |
-
#: includes/manager.php:402 includes/roles/roles.php:33
|
1016 |
msgid "Name"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: includes/manager.php:
|
1020 |
#: includes/roles/class/class-pp-roles-list-table.php:81
|
1021 |
msgid "Role"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#: includes/manager.php:
|
1025 |
#: includes/roles/class/class-pp-roles-list-table.php:82
|
1026 |
msgid "Users"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#: includes/manager.php:
|
1030 |
msgid "You do not have permission to manage roles."
|
1031 |
msgstr ""
|
1032 |
|
1033 |
-
#: includes/manager.php:
|
1034 |
msgid "You do not have permission to manage editor features."
|
1035 |
msgstr ""
|
1036 |
|
1037 |
-
#: includes/manager.php:
|
1038 |
msgid "Settings updated."
|
1039 |
msgstr ""
|
1040 |
|
1041 |
-
#: includes/manager.php:
|
1042 |
msgid "You do not have permission to manage capabilities."
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: includes/manager.php:
|
1046 |
msgid "New capability added to role."
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: includes/manager.php:
|
1050 |
msgid "The selected role is not editable."
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#: includes/manager.php:
|
1054 |
msgid "Bad form Received"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: includes/manager.php:
|
1058 |
#, php-format
|
1059 |
msgid "If you like %s, please leave us a %s rating. Thank you!"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: includes/manager.php:
|
1063 |
msgid "About PublishPress Capabilities"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: includes/manager.php:
|
1067 |
msgid "About"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#: includes/manager.php:
|
1071 |
msgid "Capabilites Documentation"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: includes/manager.php:
|
1075 |
msgid "Documentation"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: includes/manager.php:
|
1079 |
msgid "Contact the PublishPress team"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
-
#: includes/manager.php:
|
1083 |
msgid "Contact"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: includes/pp-ui.php:
|
1087 |
#, php-format
|
1088 |
msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: includes/pp-ui.php:
|
1092 |
#, php-format
|
1093 |
msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
-
#: includes/pp-ui.php:
|
1097 |
#, php-format
|
1098 |
msgid ""
|
1099 |
"\"Posts\" capabilities selected here also define type-specific role "
|
1100 |
"assignment for Permission Groups%s."
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: includes/pp-ui.php:
|
1104 |
#, php-format
|
1105 |
msgid ""
|
1106 |
"\"Posts\" capabilities selected here also define type-specific role "
|
1107 |
"assignment for Permit Groups%s."
|
1108 |
msgstr ""
|
1109 |
|
1110 |
-
#: includes/pp-ui.php:
|
1111 |
#, php-format
|
1112 |
msgid ""
|
1113 |
"Capabilities for custom statuses can be manually added here. (See "
|
@@ -1115,14 +1056,14 @@ msgid ""
|
|
1115 |
"specific roles%s are usually more convenient, though."
|
1116 |
msgstr ""
|
1117 |
|
1118 |
-
#: includes/pp-ui.php:
|
1119 |
msgid ""
|
1120 |
"Capabilities for custom statuses can be manually added here. Or activate the "
|
1121 |
"PP Custom Post Statuses extension to assign status-specific supplemental "
|
1122 |
"roles."
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: includes/pp-ui.php:
|
1126 |
msgid ""
|
1127 |
"Capabilities for custom statuses can be manually added to a role here (see "
|
1128 |
"Conditions > Status > Capability Mapping for applicable names). However, it "
|
@@ -1130,40 +1071,40 @@ msgid ""
|
|
1130 |
"status-specific role."
|
1131 |
msgstr ""
|
1132 |
|
1133 |
-
#: includes/pp-ui.php:
|
1134 |
msgid "Type-Specific Capabilities"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
#: includes/pp-ui.php:
|
1138 |
msgid "Ensure permissions can be controlled separately from other post types."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: includes/pp-ui.php:
|
1142 |
msgid ""
|
1143 |
"Make selected post types require a different capability to add new posts."
|
1144 |
msgstr ""
|
1145 |
|
1146 |
-
#: includes/pp-ui.php:
|
1147 |
msgid "Use create_posts capability"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
-
#: includes/pp-ui.php:
|
1151 |
msgid "Update"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
-
#: includes/pp-ui.php:
|
1155 |
msgid "Taxonomy-Specific Capabilities"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
-
#: includes/pp-ui.php:
|
1159 |
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
1160 |
msgstr ""
|
1161 |
|
1162 |
-
#: includes/pp-ui.php:
|
1163 |
msgid "Detailed Taxonomy Capabilities"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
-
#: includes/pp-ui.php:
|
1167 |
msgid ""
|
1168 |
"Enforce Edit, Delete and Assign capabilities separately from Management "
|
1169 |
"capability."
|
@@ -1237,6 +1178,11 @@ msgstr ""
|
|
1237 |
msgid "Unhide"
|
1238 |
msgstr ""
|
1239 |
|
|
|
|
|
|
|
|
|
|
|
1240 |
#: includes/roles/class/class-pp-roles-list-table.php:189
|
1241 |
msgid "Hide"
|
1242 |
msgstr ""
|
@@ -1270,27 +1216,27 @@ msgstr ""
|
|
1270 |
msgid "Description here."
|
1271 |
msgstr ""
|
1272 |
|
1273 |
-
#: includes/settings.php:
|
1274 |
msgid "Capabilities Settings"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: includes/settings.php:
|
1278 |
msgid "Related Permissions Plugins"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: includes/settings.php:
|
1282 |
msgid "PublishPress"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: includes/settings.php:
|
1286 |
msgid "PublishPress Authors"
|
1287 |
msgstr ""
|
1288 |
|
1289 |
-
#: includes/settings.php:
|
1290 |
msgid "PublishPress Revisions"
|
1291 |
msgstr ""
|
1292 |
|
1293 |
-
#: includes/settings.php:
|
1294 |
msgid "Help / Contact Form"
|
1295 |
msgstr ""
|
1296 |
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: PublishPress Capabilities\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2021-06-23 13:17-0400\n"
|
6 |
+
"PO-Revision-Date: 2021-06-23 13:17-0400\n"
|
7 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
8 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
9 |
"Language: en_US\n"
|
49 |
msgid "Settings saved."
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: includes-core/CoreAdmin.php:53 includes/functions-admin.php:249
|
53 |
msgid "Admin Menus"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: includes-core/CoreAdmin.php:54 includes/functions-admin.php:250
|
57 |
msgid "Nav Menus"
|
58 |
msgstr ""
|
59 |
|
62 |
msgstr ""
|
63 |
|
64 |
#: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
|
65 |
+
#: includes/admin.php:107 includes/admin.php:1094
|
66 |
+
#: includes/features/editor-features.php:66
|
67 |
+
#: includes/features/editor-features.php:119 includes/settings.php:54
|
68 |
msgid "Save Changes"
|
69 |
msgstr ""
|
70 |
|
74 |
"PublishPress Capabilities Pro"
|
75 |
msgstr ""
|
76 |
|
77 |
+
#: includes-core/admin-menus-promo.php:62 includes-core/nav-menus-promo.php:67
|
78 |
+
#: includes/functions-admin.php:260 includes/functions-admin.php:261
|
79 |
+
#: includes/manager.php:348 includes/manager.php:349
|
|
|
|
|
80 |
msgid "Upgrade to Pro"
|
81 |
msgstr ""
|
82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
#: includes-core/nav-menus-promo.php:29
|
84 |
msgid "Navigation Menu Restrictions"
|
85 |
msgstr ""
|
90 |
"PublishPress Capabilities Pro"
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: includes/admin.php:38
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
#, php-format
|
95 |
msgid ""
|
96 |
"Warning: This role cannot access the dashboard without the read capability. "
|
97 |
"%1$sClick here to fix this now%2$s."
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: includes/admin.php:66
|
101 |
msgid "Role Capabilities"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: includes/admin.php:117
|
105 |
msgid ""
|
106 |
"<strong>Note:</strong> Capability changes <strong>remain in the database</"
|
107 |
"strong> after plugin deactivation."
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: includes/admin.php:122
|
111 |
#, php-format
|
112 |
msgid ""
|
113 |
"<strong>Note:</strong> Capability changes <strong>remain in the database</"
|
115 |
"%sPermission Group%s."
|
116 |
msgstr ""
|
117 |
|
118 |
+
#: includes/admin.php:156 includes/settings.php:38
|
119 |
msgid "PublishPress Permissions"
|
120 |
msgstr ""
|
121 |
|
122 |
+
#: includes/admin.php:158
|
123 |
msgid ""
|
124 |
"Automatically define type-specific capabilities for your custom post types "
|
125 |
"and taxonomies"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: includes/admin.php:162
|
129 |
msgid "Assign standard WP roles supplementally for a specific post type"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: includes/admin.php:166
|
133 |
msgid ""
|
134 |
"Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
|
135 |
msgstr ""
|
136 |
|
137 |
+
#: includes/admin.php:170
|
138 |
msgid "Customize reading permissions per-category or per-post"
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: includes/admin.php:174
|
142 |
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: includes/admin.php:178
|
146 |
msgid ""
|
147 |
"Custom Post Visibility statuses, fully implemented throughout wp-admin "
|
148 |
"<em>(Pro)</em>"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: includes/admin.php:182
|
152 |
msgid ""
|
153 |
"Custom Moderation statuses for access-controlled, multi-step publishing "
|
154 |
"workflow <em>(Pro)</em>"
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: includes/admin.php:186
|
158 |
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: includes/admin.php:190
|
162 |
msgid ""
|
163 |
"Customize the moderated editing of published content with Revisionary or "
|
164 |
"Post Forking <em>(Pro)</em>"
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: includes/admin.php:194
|
168 |
msgid ""
|
169 |
"Grant Spectator, Participant or Moderator access to specific bbPress forums "
|
170 |
"<em>(Pro)</em>"
|
171 |
msgstr ""
|
172 |
|
173 |
+
#: includes/admin.php:198
|
174 |
msgid ""
|
175 |
"Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: includes/admin.php:202
|
179 |
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: includes/admin.php:206
|
183 |
msgid "Member support forum"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: includes/admin.php:213
|
187 |
#, php-format
|
188 |
msgid "%1$sgrab%2$s %3$s"
|
189 |
msgstr ""
|
190 |
|
191 |
+
#: includes/admin.php:213
|
192 |
#, php-format
|
193 |
msgid "%s (free install)"
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/admin.php:215
|
197 |
#, php-format
|
198 |
msgid "%1$sbuy%2$s %3$s"
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: includes/admin.php:215
|
202 |
#, php-format
|
203 |
msgid "%s info/purchase"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: includes/admin.php:296
|
207 |
msgid " "
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: includes/admin.php:297
|
211 |
msgid "Reading"
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: includes/admin.php:298
|
215 |
msgid "Editing Capabilities"
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: includes/admin.php:299
|
219 |
msgid "Deletion Capabilities"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: includes/admin.php:303
|
223 |
msgid "can read posts which are currently published with private visibility"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: includes/admin.php:304
|
227 |
msgid ""
|
228 |
"has basic editing capability (but may need other capabilities based on post "
|
229 |
"status and ownership)"
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: includes/admin.php:305
|
233 |
msgid "can edit posts which were created by other users"
|
234 |
msgstr ""
|
235 |
|
236 |
+
#: includes/admin.php:306
|
237 |
msgid "can edit posts which are currently published"
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: includes/admin.php:307
|
241 |
msgid "can edit posts which are currently published with private visibility"
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: includes/admin.php:308
|
245 |
msgid "can make a post publicly visible"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: includes/admin.php:309
|
249 |
msgid ""
|
250 |
"has basic deletion capability (but may need other capabilities based on post "
|
251 |
"status and ownership)"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: includes/admin.php:310
|
255 |
msgid "can delete posts which were created by other users"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: includes/admin.php:311
|
259 |
msgid "can delete posts which are currently published"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: includes/admin.php:312
|
263 |
msgid "can delete posts which are currently published with private visibility"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: includes/admin.php:446 includes/admin.php:563 includes/admin.php:823
|
267 |
+
#: includes/admin.php:1009
|
268 |
#, php-format
|
269 |
msgid "%s: assigned by Permission Group"
|
270 |
msgstr ""
|
271 |
|
272 |
+
#: includes/admin.php:461
|
273 |
#, php-format
|
274 |
msgid "shared capability: %s"
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: includes/admin.php:540
|
278 |
msgid "Other WordPress Core Capabilities"
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: includes/admin.php:582
|
282 |
msgid ""
|
283 |
"Lockout Prevention: To remove read capability, first remove WordPress "
|
284 |
"admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
288 |
msgid "check/uncheck all"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
292 |
msgid "negate all (storing as disabled capabilities)"
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
296 |
msgid "negate none (add/remove all capabilities normally)"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: includes/admin.php:797
|
300 |
#, php-format
|
301 |
msgid "%s Capabilities"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: includes/admin.php:873
|
305 |
msgid "Invalid Capabilities"
|
306 |
msgstr ""
|
307 |
|
308 |
+
#: includes/admin.php:878
|
309 |
msgid ""
|
310 |
"The following entries have no effect. Please assign desired capabilities in "
|
311 |
"the Read / Edit / Delete grid above."
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: includes/admin.php:955
|
315 |
msgid "Additional Capabilities"
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: includes/admin.php:1072
|
319 |
msgid ""
|
320 |
"Role level is mostly deprecated. However, it still determines eligibility "
|
321 |
"for Post Author assignment and limits the application of user editing "
|
322 |
"capabilities."
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: includes/admin.php:1074
|
326 |
msgid "Level:"
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: includes/admin.php:1097
|
330 |
msgid "Delete this role"
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: includes/admin.php:1097
|
334 |
#, php-format
|
335 |
msgid ""
|
336 |
"You are about to delete the %s role.\n"
|
338 |
" 'Cancel' to stop, 'OK' to delete."
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: includes/admin.php:1097
|
342 |
msgid "Delete Role"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: includes/admin.php:1106
|
346 |
msgid "Add Capability"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: includes/admin.php:1109
|
350 |
msgid "Add to role"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: includes/admin.php:1121
|
354 |
msgid "Copy this role to"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: includes/admin.php:1124
|
358 |
#: includes/roles/class/class-pp-roles-list-table.php:80
|
359 |
msgid "Role Name"
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: includes/admin.php:1127
|
363 |
msgid ""
|
364 |
"Make role available for supplemental assignment to Permission Groups only"
|
365 |
msgstr ""
|
366 |
|
367 |
+
#: includes/admin.php:1127
|
368 |
msgid "hidden"
|
369 |
msgstr ""
|
370 |
|
371 |
+
#: includes/admin.php:1131
|
372 |
msgid "Copy"
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: includes/admin.php:1137
|
376 |
msgid "Rename Role"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: includes/admin.php:1139
|
380 |
msgid "New Role Name"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: includes/admin.php:1142
|
384 |
msgid "Rename"
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: includes/admin.php:1171
|
388 |
msgid "Create this role definition in new (future) sites"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: includes/admin.php:1171
|
392 |
msgid "include in new sites"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: includes/admin.php:1174
|
396 |
msgid "Copy / update this role definition to all sites now"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: includes/admin.php:1174
|
400 |
msgid "sync role to all sites now"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: includes/admin.php:1177
|
404 |
msgid "Copy option settings to all sites now"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: includes/admin.php:1177
|
408 |
msgid "sync options to all sites now"
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: includes/backup-handler.php:9 includes/manager.php:776
|
412 |
msgid "You do not have permission to restore roles."
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: includes/backup-handler.php:42
|
416 |
msgid "New backup saved."
|
417 |
msgstr ""
|
418 |
|
419 |
+
#: includes/backup-handler.php:58
|
420 |
msgid "Roles and Capabilities restored from initial backup."
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: includes/backup-handler.php:60 includes/backup-handler.php:69
|
424 |
+
#: includes/backup-handler.php:78
|
425 |
msgid "Restore failed. No backup found."
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: includes/backup-handler.php:67
|
429 |
msgid "Roles and Capabilities restored from last backup."
|
430 |
msgstr ""
|
431 |
|
432 |
+
#: includes/backup-handler.php:76
|
433 |
msgid "Roles and Capabilities restored from selected auto-backup."
|
434 |
msgstr ""
|
435 |
|
436 |
+
#: includes/backup-handler.php:96
|
437 |
msgid "Needed function to create default roles not found!"
|
438 |
msgstr ""
|
439 |
|
440 |
+
#: includes/backup-handler.php:109
|
441 |
msgid "Roles and Capabilities reset to WordPress defaults"
|
442 |
msgstr ""
|
443 |
|
450 |
msgid "Restore"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: includes/backup.php:47 includes/functions-admin.php:251
|
454 |
+
#: includes/manager.php:339
|
455 |
+
msgid "Backup"
|
456 |
+
msgstr ""
|
457 |
+
|
458 |
#: includes/backup.php:48
|
459 |
msgid "Reset Roles"
|
460 |
msgstr ""
|
597 |
msgid "Reset to WordPress defaults"
|
598 |
msgstr ""
|
599 |
|
600 |
+
#: includes/features/editor-features-classic.php:18
|
601 |
msgid "Classic Editor Screen"
|
602 |
msgstr ""
|
603 |
|
604 |
+
#: includes/features/editor-features-classic.php:23
|
605 |
+
#: includes/features/editor-features-gutenberg.php:23
|
606 |
#, php-format
|
607 |
msgid "%s Restrict"
|
608 |
msgstr ""
|
609 |
|
610 |
+
#: includes/features/editor-features-classic.php:24
|
611 |
+
#: includes/features/editor-features-gutenberg.php:24
|
612 |
msgid "Toggle all"
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: includes/features/editor-features-gutenberg.php:18
|
616 |
msgid "Gutenberg Screen"
|
617 |
msgstr ""
|
618 |
|
619 |
+
#: includes/features/editor-features.php:31
|
620 |
msgid "Editor Feature Restriction"
|
621 |
msgstr ""
|
622 |
|
623 |
+
#: includes/features/editor-features.php:45
|
624 |
msgid ""
|
625 |
"Select editor features to remove. Note that this screen cannot be used to "
|
626 |
"grant additional features to any role."
|
627 |
msgstr ""
|
628 |
|
629 |
+
#: includes/features/editor-features.php:89
|
630 |
msgid "Gutenberg"
|
631 |
msgstr ""
|
632 |
|
633 |
+
#: includes/features/editor-features.php:92
|
634 |
msgid "Classic"
|
635 |
msgstr ""
|
636 |
|
815 |
msgid "Publish / Update"
|
816 |
msgstr ""
|
817 |
|
818 |
+
#: includes/features/restrict-editor-features.php:313
|
819 |
+
#: includes/functions-admin.php:254 includes/manager.php:342
|
820 |
+
msgid "Settings"
|
821 |
+
msgstr ""
|
822 |
+
|
823 |
#: includes/features/restrict-editor-features.php:314
|
824 |
msgid "Options"
|
825 |
msgstr ""
|
882 |
msgid "All %s"
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: includes/filters.php:312
|
886 |
msgid "Edit Roles"
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: includes/functions-admin.php:225 includes/manager.php:301
|
890 |
+
#: includes/roles/class/class-pp-roles-list-table.php:125
|
891 |
+
msgid "Capabilities"
|
892 |
+
msgstr ""
|
893 |
+
|
894 |
+
#: includes/functions-admin.php:247 includes/manager.php:323
|
895 |
+
#: includes/roles/roles.php:4
|
896 |
+
msgid "Roles"
|
897 |
+
msgstr ""
|
898 |
+
|
899 |
+
#: includes/functions-admin.php:248 includes/manager.php:335
|
900 |
+
msgid "Editor Features"
|
901 |
+
msgstr ""
|
902 |
+
|
903 |
+
#: includes/handler.php:28 includes/handler.php:54
|
904 |
msgid "New role created."
|
905 |
msgstr ""
|
906 |
|
907 |
+
#: includes/handler.php:34 includes/handler.php:60
|
908 |
msgid "Error: Failed creating the new role."
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: includes/handler.php:47
|
912 |
#, php-format
|
913 |
msgid "Role \"%s\" (id %s) renamed to \"%s\""
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: includes/handler.php:126
|
917 |
msgid "Incorrect capability name."
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: includes/handler.php:131
|
921 |
msgid "Type / Taxonomy settings saved."
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: includes/handler.php:137
|
925 |
msgid "Bad form received."
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: includes/handler.php:260
|
929 |
msgid "You cannot remove Manage Capabilities from Administrators"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/manager.php:186
|
933 |
msgid "Explicity negate this capability by storing as disabled"
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: includes/manager.php:187
|
937 |
msgid "Explicitly negate these capabilities by storing as disabled"
|
938 |
msgstr ""
|
939 |
|
940 |
+
#: includes/manager.php:188
|
941 |
msgid "Post type registration does not define this capability distinctly"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: includes/manager.php:189
|
945 |
msgid "This capability is explicitly negated. Click to add/remove normally."
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: includes/manager.php:190
|
949 |
msgid "Add or remove this capability from the WordPress role"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: includes/manager.php:191
|
953 |
msgid "Add or remove capability from the role normally"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: includes/manager.php:366 includes/roles/roles.php:33
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
957 |
msgid "Name"
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: includes/manager.php:367
|
961 |
#: includes/roles/class/class-pp-roles-list-table.php:81
|
962 |
msgid "Role"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: includes/manager.php:368
|
966 |
#: includes/roles/class/class-pp-roles-list-table.php:82
|
967 |
msgid "Users"
|
968 |
msgstr ""
|
969 |
|
970 |
+
#: includes/manager.php:395
|
971 |
msgid "You do not have permission to manage roles."
|
972 |
msgstr ""
|
973 |
|
974 |
+
#: includes/manager.php:412
|
975 |
msgid "You do not have permission to manage editor features."
|
976 |
msgstr ""
|
977 |
|
978 |
+
#: includes/manager.php:454
|
979 |
msgid "Settings updated."
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: includes/manager.php:556 includes/manager.php:597
|
983 |
msgid "You do not have permission to manage capabilities."
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: includes/manager.php:611
|
987 |
msgid "New capability added to role."
|
988 |
msgstr ""
|
989 |
|
990 |
+
#: includes/manager.php:629
|
991 |
msgid "The selected role is not editable."
|
992 |
msgstr ""
|
993 |
|
994 |
+
#: includes/manager.php:656
|
995 |
msgid "Bad form Received"
|
996 |
msgstr ""
|
997 |
|
998 |
+
#: includes/manager.php:806
|
999 |
#, php-format
|
1000 |
msgid "If you like %s, please leave us a %s rating. Thank you!"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
#: includes/manager.php:817
|
1004 |
msgid "About PublishPress Capabilities"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: includes/manager.php:817
|
1008 |
msgid "About"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: includes/manager.php:819
|
1012 |
msgid "Capabilites Documentation"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: includes/manager.php:819
|
1016 |
msgid "Documentation"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: includes/manager.php:821
|
1020 |
msgid "Contact the PublishPress team"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: includes/manager.php:821
|
1024 |
msgid "Contact"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: includes/pp-ui.php:42
|
1028 |
#, php-format
|
1029 |
msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
|
1030 |
msgstr ""
|
1031 |
|
1032 |
+
#: includes/pp-ui.php:44
|
1033 |
#, php-format
|
1034 |
msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
+
#: includes/pp-ui.php:49
|
1038 |
#, php-format
|
1039 |
msgid ""
|
1040 |
"\"Posts\" capabilities selected here also define type-specific role "
|
1041 |
"assignment for Permission Groups%s."
|
1042 |
msgstr ""
|
1043 |
|
1044 |
+
#: includes/pp-ui.php:51
|
1045 |
#, php-format
|
1046 |
msgid ""
|
1047 |
"\"Posts\" capabilities selected here also define type-specific role "
|
1048 |
"assignment for Permit Groups%s."
|
1049 |
msgstr ""
|
1050 |
|
1051 |
+
#: includes/pp-ui.php:59
|
1052 |
#, php-format
|
1053 |
msgid ""
|
1054 |
"Capabilities for custom statuses can be manually added here. (See "
|
1056 |
"specific roles%s are usually more convenient, though."
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
#: includes/pp-ui.php:61
|
1060 |
msgid ""
|
1061 |
"Capabilities for custom statuses can be manually added here. Or activate the "
|
1062 |
"PP Custom Post Statuses extension to assign status-specific supplemental "
|
1063 |
"roles."
|
1064 |
msgstr ""
|
1065 |
|
1066 |
+
#: includes/pp-ui.php:64
|
1067 |
msgid ""
|
1068 |
"Capabilities for custom statuses can be manually added to a role here (see "
|
1069 |
"Conditions > Status > Capability Mapping for applicable names). However, it "
|
1071 |
"status-specific role."
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: includes/pp-ui.php:77
|
1075 |
msgid "Type-Specific Capabilities"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: includes/pp-ui.php:80
|
1079 |
msgid "Ensure permissions can be controlled separately from other post types."
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: includes/pp-ui.php:143
|
1083 |
msgid ""
|
1084 |
"Make selected post types require a different capability to add new posts."
|
1085 |
msgstr ""
|
1086 |
|
1087 |
+
#: includes/pp-ui.php:143
|
1088 |
msgid "Use create_posts capability"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: includes/pp-ui.php:151 includes/pp-ui.php:214 includes/pp-ui.php:270
|
1092 |
msgid "Update"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
+
#: includes/pp-ui.php:161
|
1096 |
msgid "Taxonomy-Specific Capabilities"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
+
#: includes/pp-ui.php:164
|
1100 |
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
1101 |
msgstr ""
|
1102 |
|
1103 |
+
#: includes/pp-ui.php:219
|
1104 |
msgid "Detailed Taxonomy Capabilities"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: includes/pp-ui.php:222
|
1108 |
msgid ""
|
1109 |
"Enforce Edit, Delete and Assign capabilities separately from Management "
|
1110 |
"capability."
|
1178 |
msgid "Unhide"
|
1179 |
msgstr ""
|
1180 |
|
1181 |
+
#: includes/roles/class/class-pp-roles-list-table.php:168
|
1182 |
+
#: includes/roles/class/class-pp-roles-list-table.php:307
|
1183 |
+
msgid "Delete"
|
1184 |
+
msgstr ""
|
1185 |
+
|
1186 |
#: includes/roles/class/class-pp-roles-list-table.php:189
|
1187 |
msgid "Hide"
|
1188 |
msgstr ""
|
1216 |
msgid "Description here."
|
1217 |
msgstr ""
|
1218 |
|
1219 |
+
#: includes/settings.php:12
|
1220 |
msgid "Capabilities Settings"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
+
#: includes/settings.php:22
|
1224 |
msgid "Related Permissions Plugins"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
+
#: includes/settings.php:27
|
1228 |
msgid "PublishPress"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
+
#: includes/settings.php:32
|
1232 |
msgid "PublishPress Authors"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
+
#: includes/settings.php:44
|
1236 |
msgid "PublishPress Revisions"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: includes/settings.php:46
|
1240 |
msgid "Help / Contact Form"
|
1241 |
msgstr ""
|
1242 |
|
languages/capsman-enhanced.pot
CHANGED
@@ -3,7 +3,7 @@ msgid ""
|
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: PublishPress Capabilities\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
-
"POT-Creation-Date: 2021-
|
7 |
"PO-Revision-Date: 2020-10-08 11:17-0500\n"
|
8 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
9 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
@@ -45,11 +45,11 @@ msgstr ""
|
|
45 |
msgid "Settings saved."
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: includes-core/CoreAdmin.php:
|
49 |
msgid "Admin Menus"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: includes-core/CoreAdmin.php:
|
53 |
msgid "Nav Menus"
|
54 |
msgstr ""
|
55 |
|
@@ -58,9 +58,9 @@ msgid "Admin Menu Restrictions"
|
|
58 |
msgstr ""
|
59 |
|
60 |
#: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
|
61 |
-
#: includes/admin.php:
|
62 |
-
#: includes/features/editor-features.php:
|
63 |
-
#: includes/features/editor-features.php:
|
64 |
msgid "Save Changes"
|
65 |
msgstr ""
|
66 |
|
@@ -68,62 +68,12 @@ msgstr ""
|
|
68 |
msgid "You can restrict access to admin menu screens. This feature is available in PublishPress Capabilities Pro"
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: includes-core/admin-menus-promo.php:62
|
72 |
-
#: includes-
|
73 |
-
#: includes
|
74 |
-
#: includes/admin-load.php:272 includes/manager.php:384
|
75 |
-
#: includes/manager.php:385
|
76 |
msgid "Upgrade to Pro"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: includes-core/editor-features-promo.php:24
|
80 |
-
msgid "Metaboxes"
|
81 |
-
msgstr ""
|
82 |
-
|
83 |
-
#: includes-core/editor-features-promo.php:32
|
84 |
-
msgid "Checklist"
|
85 |
-
msgstr ""
|
86 |
-
|
87 |
-
#: includes-core/editor-features-promo.php:45
|
88 |
-
msgid "Editorial Comments"
|
89 |
-
msgstr ""
|
90 |
-
|
91 |
-
#: includes-core/editor-features-promo.php:58
|
92 |
-
msgid "Notifications"
|
93 |
-
msgstr ""
|
94 |
-
|
95 |
-
#: includes-core/editor-features-promo.php:71
|
96 |
-
msgid "TaxoPress - Settings"
|
97 |
-
msgstr ""
|
98 |
-
|
99 |
-
#: includes-core/editor-features-promo.php:86
|
100 |
-
msgid "You can select plugin metaboxes to hide, or enter a class or ID for custom items. This feature is available in PublishPress Capabilities Pro."
|
101 |
-
msgstr ""
|
102 |
-
|
103 |
-
#: includes-core/editor-features-promo.php:101
|
104 |
-
msgid "Custom Items"
|
105 |
-
msgstr ""
|
106 |
-
|
107 |
-
#: includes-core/editor-features-promo.php:107
|
108 |
-
msgid "Custom item one"
|
109 |
-
msgstr ""
|
110 |
-
|
111 |
-
#: includes-core/editor-features-promo.php:108
|
112 |
-
#: includes-core/editor-features-promo.php:122
|
113 |
-
#: includes-core/editor-features-promo.php:135
|
114 |
-
#: includes/roles/class/class-pp-roles-list-table.php:168
|
115 |
-
#: includes/roles/class/class-pp-roles-list-table.php:307
|
116 |
-
msgid "Delete"
|
117 |
-
msgstr ""
|
118 |
-
|
119 |
-
#: includes-core/editor-features-promo.php:121
|
120 |
-
msgid "Permalink: Descriptive Caption"
|
121 |
-
msgstr ""
|
122 |
-
|
123 |
-
#: includes-core/editor-features-promo.php:135
|
124 |
-
msgid "Page Attributes: Order"
|
125 |
-
msgstr ""
|
126 |
-
|
127 |
#: includes-core/nav-menus-promo.php:29
|
128 |
msgid "Navigation Menu Restrictions"
|
129 |
msgstr ""
|
@@ -132,240 +82,217 @@ msgstr ""
|
|
132 |
msgid "You can restrict access to navigation menus. This feature is available in PublishPress Capabilities Pro"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: includes/admin
|
136 |
-
#: includes/roles/class/class-pp-roles-list-table.php:125
|
137 |
-
msgid "Capabilities"
|
138 |
-
msgstr ""
|
139 |
-
|
140 |
-
#: includes/admin-load.php:258 includes/manager.php:359
|
141 |
-
#: includes/roles/roles.php:4
|
142 |
-
msgid "Roles"
|
143 |
-
msgstr ""
|
144 |
-
|
145 |
-
#: includes/admin-load.php:259 includes/manager.php:371
|
146 |
-
msgid "Editor Features"
|
147 |
-
msgstr ""
|
148 |
-
|
149 |
-
#: includes/admin-load.php:262 includes/backup.php:47 includes/manager.php:375
|
150 |
-
msgid "Backup"
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: includes/admin-load.php:265
|
154 |
-
#: includes/features/restrict-editor-features.php:313 includes/manager.php:378
|
155 |
-
msgid "Settings"
|
156 |
-
msgstr ""
|
157 |
-
|
158 |
-
#: includes/admin.php:40
|
159 |
#, php-format
|
160 |
msgid "Warning: This role cannot access the dashboard without the read capability. %1$sClick here to fix this now%2$s."
|
161 |
msgstr ""
|
162 |
|
163 |
-
#: includes/admin.php:
|
164 |
msgid "Role Capabilities"
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: includes/admin.php:
|
168 |
msgid "<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation."
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: includes/admin.php:
|
172 |
#, php-format
|
173 |
msgid "<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation. You can also configure this role as a %sPermission Group%s."
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: includes/admin.php:
|
177 |
msgid "PublishPress Permissions"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: includes/admin.php:
|
181 |
msgid "Automatically define type-specific capabilities for your custom post types and taxonomies"
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: includes/admin.php:
|
185 |
msgid "Assign standard WP roles supplementally for a specific post type"
|
186 |
msgstr ""
|
187 |
|
188 |
-
#: includes/admin.php:
|
189 |
msgid "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: includes/admin.php:
|
193 |
msgid "Customize reading permissions per-category or per-post"
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: includes/admin.php:
|
197 |
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: includes/admin.php:
|
201 |
msgid "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: includes/admin.php:
|
205 |
msgid "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: includes/admin.php:
|
209 |
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: includes/admin.php:
|
213 |
msgid "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/admin.php:
|
217 |
msgid "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: includes/admin.php:
|
221 |
msgid "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: includes/admin.php:
|
225 |
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
|
226 |
msgstr ""
|
227 |
|
228 |
-
#: includes/admin.php:
|
229 |
msgid "Member support forum"
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: includes/admin.php:
|
233 |
#, php-format
|
234 |
msgid "%1$sgrab%2$s %3$s"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: includes/admin.php:
|
238 |
#, php-format
|
239 |
msgid "%s (free install)"
|
240 |
msgstr ""
|
241 |
|
242 |
-
#: includes/admin.php:
|
243 |
#, php-format
|
244 |
msgid "%1$sbuy%2$s %3$s"
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: includes/admin.php:
|
248 |
#, php-format
|
249 |
msgid "%s info/purchase"
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: includes/admin.php:
|
253 |
msgid " "
|
254 |
msgstr ""
|
255 |
|
256 |
-
#: includes/admin.php:
|
257 |
msgid "Reading"
|
258 |
msgstr ""
|
259 |
|
260 |
-
#: includes/admin.php:
|
261 |
msgid "Editing Capabilities"
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: includes/admin.php:
|
265 |
msgid "Deletion Capabilities"
|
266 |
msgstr ""
|
267 |
|
268 |
-
#: includes/admin.php:
|
269 |
msgid "can read posts which are currently published with private visibility"
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: includes/admin.php:
|
273 |
msgid "has basic editing capability (but may need other capabilities based on post status and ownership)"
|
274 |
msgstr ""
|
275 |
|
276 |
-
#: includes/admin.php:
|
277 |
msgid "can edit posts which were created by other users"
|
278 |
msgstr ""
|
279 |
|
280 |
-
#: includes/admin.php:
|
281 |
msgid "can edit posts which are currently published"
|
282 |
msgstr ""
|
283 |
|
284 |
-
#: includes/admin.php:
|
285 |
msgid "can edit posts which are currently published with private visibility"
|
286 |
msgstr ""
|
287 |
|
288 |
-
#: includes/admin.php:
|
289 |
msgid "can make a post publicly visible"
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: includes/admin.php:
|
293 |
msgid "has basic deletion capability (but may need other capabilities based on post status and ownership)"
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: includes/admin.php:
|
297 |
msgid "can delete posts which were created by other users"
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: includes/admin.php:
|
301 |
msgid "can delete posts which are currently published"
|
302 |
msgstr ""
|
303 |
|
304 |
-
#: includes/admin.php:
|
305 |
msgid "can delete posts which are currently published with private visibility"
|
306 |
msgstr ""
|
307 |
|
308 |
-
#: includes/admin.php:
|
309 |
-
#: includes/admin.php:
|
310 |
#, php-format
|
311 |
msgid "%s: assigned by Permission Group"
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: includes/admin.php:
|
315 |
#, php-format
|
316 |
msgid "shared capability: %s"
|
317 |
msgstr ""
|
318 |
|
319 |
-
#: includes/admin.php:
|
320 |
msgid "Other WordPress Core Capabilities"
|
321 |
msgstr ""
|
322 |
|
323 |
-
#: includes/admin.php:
|
324 |
msgid "Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
325 |
msgstr ""
|
326 |
|
327 |
-
#: includes/admin.php:
|
328 |
msgid "check/uncheck all"
|
329 |
msgstr ""
|
330 |
|
331 |
-
#: includes/admin.php:
|
332 |
msgid "negate all (storing as disabled capabilities)"
|
333 |
msgstr ""
|
334 |
|
335 |
-
#: includes/admin.php:
|
336 |
msgid "negate none (add/remove all capabilities normally)"
|
337 |
msgstr ""
|
338 |
|
339 |
-
#: includes/admin.php:
|
340 |
#, php-format
|
341 |
msgid "%s Capabilities"
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: includes/admin.php:
|
345 |
msgid "Invalid Capabilities"
|
346 |
msgstr ""
|
347 |
|
348 |
-
#: includes/admin.php:
|
349 |
msgid "The following entries have no effect. Please assign desired capabilities in the Read / Edit / Delete grid above."
|
350 |
msgstr ""
|
351 |
|
352 |
-
#: includes/admin.php:
|
353 |
msgid "Additional Capabilities"
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: includes/admin.php:
|
357 |
msgid "Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities."
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: includes/admin.php:
|
361 |
msgid "Level:"
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: includes/admin.php:
|
365 |
msgid "Delete this role"
|
366 |
msgstr ""
|
367 |
|
368 |
-
#: includes/admin.php:
|
369 |
#, php-format
|
370 |
msgid ""
|
371 |
"You are about to delete the %s role.\n"
|
@@ -373,105 +300,105 @@ msgid ""
|
|
373 |
" 'Cancel' to stop, 'OK' to delete."
|
374 |
msgstr ""
|
375 |
|
376 |
-
#: includes/admin.php:
|
377 |
msgid "Delete Role"
|
378 |
msgstr ""
|
379 |
|
380 |
-
#: includes/admin.php:
|
381 |
msgid "Add Capability"
|
382 |
msgstr ""
|
383 |
|
384 |
-
#: includes/admin.php:
|
385 |
msgid "Add to role"
|
386 |
msgstr ""
|
387 |
|
388 |
-
#: includes/admin.php:
|
389 |
msgid "Copy this role to"
|
390 |
msgstr ""
|
391 |
|
392 |
-
#: includes/admin.php:
|
393 |
#: includes/roles/class/class-pp-roles-list-table.php:80
|
394 |
msgid "Role Name"
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: includes/admin.php:
|
398 |
msgid "Make role available for supplemental assignment to Permission Groups only"
|
399 |
msgstr ""
|
400 |
|
401 |
-
#: includes/admin.php:
|
402 |
msgid "hidden"
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: includes/admin.php:
|
406 |
msgid "Copy"
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: includes/admin.php:
|
410 |
msgid "Rename Role"
|
411 |
msgstr ""
|
412 |
|
413 |
-
#: includes/admin.php:
|
414 |
msgid "New Role Name"
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: includes/admin.php:
|
418 |
msgid "Rename"
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: includes/admin.php:
|
422 |
msgid "Create this role definition in new (future) sites"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: includes/admin.php:
|
426 |
msgid "include in new sites"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: includes/admin.php:
|
430 |
msgid "Copy / update this role definition to all sites now"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: includes/admin.php:
|
434 |
msgid "sync role to all sites now"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: includes/admin.php:
|
438 |
msgid "Copy option settings to all sites now"
|
439 |
msgstr ""
|
440 |
|
441 |
-
#: includes/admin.php:
|
442 |
msgid "sync options to all sites now"
|
443 |
msgstr ""
|
444 |
|
445 |
-
#: includes/backup-handler.php:
|
446 |
msgid "You do not have permission to restore roles."
|
447 |
msgstr ""
|
448 |
|
449 |
-
#: includes/backup-handler.php:
|
450 |
msgid "New backup saved."
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: includes/backup-handler.php:
|
454 |
msgid "Roles and Capabilities restored from initial backup."
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: includes/backup-handler.php:
|
458 |
-
#: includes/backup-handler.php:
|
459 |
msgid "Restore failed. No backup found."
|
460 |
msgstr ""
|
461 |
|
462 |
-
#: includes/backup-handler.php:
|
463 |
msgid "Roles and Capabilities restored from last backup."
|
464 |
msgstr ""
|
465 |
|
466 |
-
#: includes/backup-handler.php:
|
467 |
msgid "Roles and Capabilities restored from selected auto-backup."
|
468 |
msgstr ""
|
469 |
|
470 |
-
#: includes/backup-handler.php:
|
471 |
msgid "Needed function to create default roles not found!"
|
472 |
msgstr ""
|
473 |
|
474 |
-
#: includes/backup-handler.php:
|
475 |
msgid "Roles and Capabilities reset to WordPress defaults"
|
476 |
msgstr ""
|
477 |
|
@@ -484,6 +411,11 @@ msgstr ""
|
|
484 |
msgid "Restore"
|
485 |
msgstr ""
|
486 |
|
|
|
|
|
|
|
|
|
|
|
487 |
#: includes/backup.php:48
|
488 |
msgid "Reset Roles"
|
489 |
msgstr ""
|
@@ -613,38 +545,38 @@ msgstr ""
|
|
613 |
msgid "Reset to WordPress defaults"
|
614 |
msgstr ""
|
615 |
|
616 |
-
#: includes/features/editor-features-classic.php:
|
617 |
msgid "Classic Editor Screen"
|
618 |
msgstr ""
|
619 |
|
620 |
-
#: includes/features/editor-features-classic.php:
|
621 |
-
#: includes/features/editor-features-gutenberg.php:
|
622 |
#, php-format
|
623 |
msgid "%s Restrict"
|
624 |
msgstr ""
|
625 |
|
626 |
-
#: includes/features/editor-features-classic.php:
|
627 |
-
#: includes/features/editor-features-gutenberg.php:
|
628 |
msgid "Toggle all"
|
629 |
msgstr ""
|
630 |
|
631 |
-
#: includes/features/editor-features-gutenberg.php:
|
632 |
msgid "Gutenberg Screen"
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: includes/features/editor-features.php:
|
636 |
msgid "Editor Feature Restriction"
|
637 |
msgstr ""
|
638 |
|
639 |
-
#: includes/features/editor-features.php:
|
640 |
msgid "Select editor features to remove. Note that this screen cannot be used to grant additional features to any role."
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: includes/features/editor-features.php:
|
644 |
msgid "Gutenberg"
|
645 |
msgstr ""
|
646 |
|
647 |
-
#: includes/features/editor-features.php:
|
648 |
msgid "Classic"
|
649 |
msgstr ""
|
650 |
|
@@ -829,6 +761,11 @@ msgstr ""
|
|
829 |
msgid "Publish / Update"
|
830 |
msgstr ""
|
831 |
|
|
|
|
|
|
|
|
|
|
|
832 |
#: includes/features/restrict-editor-features.php:314
|
833 |
msgid "Options"
|
834 |
msgstr ""
|
@@ -891,208 +828,214 @@ msgstr ""
|
|
891 |
msgid "All %s"
|
892 |
msgstr ""
|
893 |
|
894 |
-
#: includes/filters.php:
|
895 |
msgid "Edit Roles"
|
896 |
msgstr ""
|
897 |
|
898 |
-
#: includes/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
899 |
msgid "New role created."
|
900 |
msgstr ""
|
901 |
|
902 |
-
#: includes/handler.php:
|
903 |
msgid "Error: Failed creating the new role."
|
904 |
msgstr ""
|
905 |
|
906 |
-
#: includes/handler.php:
|
907 |
#, php-format
|
908 |
msgid "Role \"%s\" (id %s) renamed to \"%s\""
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: includes/handler.php:
|
912 |
msgid "Incorrect capability name."
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: includes/handler.php:
|
916 |
msgid "Type / Taxonomy settings saved."
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: includes/handler.php:
|
920 |
msgid "Bad form received."
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: includes/handler.php:
|
924 |
msgid "You cannot remove Manage Capabilities from Administrators"
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: includes/manager.php:
|
928 |
msgid "Explicity negate this capability by storing as disabled"
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: includes/manager.php:
|
932 |
msgid "Explicitly negate these capabilities by storing as disabled"
|
933 |
msgstr ""
|
934 |
|
935 |
-
#: includes/manager.php:
|
936 |
msgid "Post type registration does not define this capability distinctly"
|
937 |
msgstr ""
|
938 |
|
939 |
-
#: includes/manager.php:
|
940 |
msgid "This capability is explicitly negated. Click to add/remove normally."
|
941 |
msgstr ""
|
942 |
|
943 |
-
#: includes/manager.php:
|
944 |
msgid "Add or remove this capability from the WordPress role"
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: includes/manager.php:
|
948 |
msgid "Add or remove capability from the role normally"
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: includes/manager.php:
|
952 |
-
msgid "Are you sure you want to delete this item ?"
|
953 |
-
msgstr ""
|
954 |
-
|
955 |
-
#: includes/manager.php:206
|
956 |
-
msgid "Add or clear custom item entry before saving changes."
|
957 |
-
msgstr ""
|
958 |
-
|
959 |
-
#: includes/manager.php:402 includes/roles/roles.php:33
|
960 |
msgid "Name"
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: includes/manager.php:
|
964 |
#: includes/roles/class/class-pp-roles-list-table.php:81
|
965 |
msgid "Role"
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: includes/manager.php:
|
969 |
#: includes/roles/class/class-pp-roles-list-table.php:82
|
970 |
msgid "Users"
|
971 |
msgstr ""
|
972 |
|
973 |
-
#: includes/manager.php:
|
974 |
msgid "You do not have permission to manage roles."
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: includes/manager.php:
|
978 |
msgid "You do not have permission to manage editor features."
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: includes/manager.php:
|
982 |
msgid "Settings updated."
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: includes/manager.php:
|
986 |
msgid "You do not have permission to manage capabilities."
|
987 |
msgstr ""
|
988 |
|
989 |
-
#: includes/manager.php:
|
990 |
msgid "New capability added to role."
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: includes/manager.php:
|
994 |
msgid "The selected role is not editable."
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: includes/manager.php:
|
998 |
msgid "Bad form Received"
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: includes/manager.php:
|
1002 |
#, php-format
|
1003 |
msgid "If you like %s, please leave us a %s rating. Thank you!"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#: includes/manager.php:
|
1007 |
msgid "About PublishPress Capabilities"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: includes/manager.php:
|
1011 |
msgid "About"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: includes/manager.php:
|
1015 |
msgid "Capabilites Documentation"
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: includes/manager.php:
|
1019 |
msgid "Documentation"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: includes/manager.php:
|
1023 |
msgid "Contact the PublishPress team"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
-
#: includes/manager.php:
|
1027 |
msgid "Contact"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
-
#: includes/pp-ui.php:
|
1031 |
#, php-format
|
1032 |
msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
|
1033 |
msgstr ""
|
1034 |
|
1035 |
-
#: includes/pp-ui.php:
|
1036 |
#, php-format
|
1037 |
msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: includes/pp-ui.php:
|
1041 |
#, php-format
|
1042 |
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permission Groups%s."
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: includes/pp-ui.php:
|
1046 |
#, php-format
|
1047 |
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permit Groups%s."
|
1048 |
msgstr ""
|
1049 |
|
1050 |
-
#: includes/pp-ui.php:
|
1051 |
#, php-format
|
1052 |
msgid "Capabilities for custom statuses can be manually added here. (See %sPermissions > Post Statuses%s for applicable names). %sSupplemental status-specific roles%s are usually more convenient, though."
|
1053 |
msgstr ""
|
1054 |
|
1055 |
-
#: includes/pp-ui.php:
|
1056 |
msgid "Capabilities for custom statuses can be manually added here. Or activate the PP Custom Post Statuses extension to assign status-specific supplemental roles."
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: includes/pp-ui.php:
|
1060 |
msgid "Capabilities for custom statuses can be manually added to a role here (see Conditions > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permit Groups to assign a supplemental status-specific role."
|
1061 |
msgstr ""
|
1062 |
|
1063 |
-
#: includes/pp-ui.php:
|
1064 |
msgid "Type-Specific Capabilities"
|
1065 |
msgstr ""
|
1066 |
|
1067 |
-
#: includes/pp-ui.php:
|
1068 |
msgid "Ensure permissions can be controlled separately from other post types."
|
1069 |
msgstr ""
|
1070 |
|
1071 |
-
#: includes/pp-ui.php:
|
1072 |
msgid "Make selected post types require a different capability to add new posts."
|
1073 |
msgstr ""
|
1074 |
|
1075 |
-
#: includes/pp-ui.php:
|
1076 |
msgid "Use create_posts capability"
|
1077 |
msgstr ""
|
1078 |
|
1079 |
-
#: includes/pp-ui.php:
|
1080 |
msgid "Update"
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#: includes/pp-ui.php:
|
1084 |
msgid "Taxonomy-Specific Capabilities"
|
1085 |
msgstr ""
|
1086 |
|
1087 |
-
#: includes/pp-ui.php:
|
1088 |
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: includes/pp-ui.php:
|
1092 |
msgid "Detailed Taxonomy Capabilities"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: includes/pp-ui.php:
|
1096 |
msgid "Enforce Edit, Delete and Assign capabilities separately from Management capability."
|
1097 |
msgstr ""
|
1098 |
|
@@ -1161,6 +1104,11 @@ msgstr ""
|
|
1161 |
msgid "Unhide"
|
1162 |
msgstr ""
|
1163 |
|
|
|
|
|
|
|
|
|
|
|
1164 |
#: includes/roles/class/class-pp-roles-list-table.php:189
|
1165 |
msgid "Hide"
|
1166 |
msgstr ""
|
@@ -1194,27 +1142,27 @@ msgstr ""
|
|
1194 |
msgid "Description here."
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: includes/settings.php:
|
1198 |
msgid "Capabilities Settings"
|
1199 |
msgstr ""
|
1200 |
|
1201 |
-
#: includes/settings.php:
|
1202 |
msgid "Related Permissions Plugins"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
-
#: includes/settings.php:
|
1206 |
msgid "PublishPress"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: includes/settings.php:
|
1210 |
msgid "PublishPress Authors"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
-
#: includes/settings.php:
|
1214 |
msgid "PublishPress Revisions"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: includes/settings.php:
|
1218 |
msgid "Help / Contact Form"
|
1219 |
msgstr ""
|
1220 |
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: PublishPress Capabilities\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
+
"POT-Creation-Date: 2021-06-23 13:16-0400\n"
|
7 |
"PO-Revision-Date: 2020-10-08 11:17-0500\n"
|
8 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
9 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
45 |
msgid "Settings saved."
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: includes-core/CoreAdmin.php:53 includes/functions-admin.php:249
|
49 |
msgid "Admin Menus"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: includes-core/CoreAdmin.php:54 includes/functions-admin.php:250
|
53 |
msgid "Nav Menus"
|
54 |
msgstr ""
|
55 |
|
58 |
msgstr ""
|
59 |
|
60 |
#: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
|
61 |
+
#: includes/admin.php:107 includes/admin.php:1094
|
62 |
+
#: includes/features/editor-features.php:66
|
63 |
+
#: includes/features/editor-features.php:119 includes/settings.php:54
|
64 |
msgid "Save Changes"
|
65 |
msgstr ""
|
66 |
|
68 |
msgid "You can restrict access to admin menu screens. This feature is available in PublishPress Capabilities Pro"
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: includes-core/admin-menus-promo.php:62 includes-core/nav-menus-promo.php:67
|
72 |
+
#: includes/functions-admin.php:260 includes/functions-admin.php:261
|
73 |
+
#: includes/manager.php:348 includes/manager.php:349
|
|
|
|
|
74 |
msgid "Upgrade to Pro"
|
75 |
msgstr ""
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
#: includes-core/nav-menus-promo.php:29
|
78 |
msgid "Navigation Menu Restrictions"
|
79 |
msgstr ""
|
82 |
msgid "You can restrict access to navigation menus. This feature is available in PublishPress Capabilities Pro"
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: includes/admin.php:38
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
#, php-format
|
87 |
msgid "Warning: This role cannot access the dashboard without the read capability. %1$sClick here to fix this now%2$s."
|
88 |
msgstr ""
|
89 |
|
90 |
+
#: includes/admin.php:66
|
91 |
msgid "Role Capabilities"
|
92 |
msgstr ""
|
93 |
|
94 |
+
#: includes/admin.php:117
|
95 |
msgid "<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation."
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: includes/admin.php:122
|
99 |
#, php-format
|
100 |
msgid "<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation. You can also configure this role as a %sPermission Group%s."
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: includes/admin.php:156 includes/settings.php:38
|
104 |
msgid "PublishPress Permissions"
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: includes/admin.php:158
|
108 |
msgid "Automatically define type-specific capabilities for your custom post types and taxonomies"
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: includes/admin.php:162
|
112 |
msgid "Assign standard WP roles supplementally for a specific post type"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: includes/admin.php:166
|
116 |
msgid "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: includes/admin.php:170
|
120 |
msgid "Customize reading permissions per-category or per-post"
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: includes/admin.php:174
|
124 |
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: includes/admin.php:178
|
128 |
msgid "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: includes/admin.php:182
|
132 |
msgid "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>"
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: includes/admin.php:186
|
136 |
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: includes/admin.php:190
|
140 |
msgid "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>"
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: includes/admin.php:194
|
144 |
msgid "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>"
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: includes/admin.php:198
|
148 |
msgid "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: includes/admin.php:202
|
152 |
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
|
153 |
msgstr ""
|
154 |
|
155 |
+
#: includes/admin.php:206
|
156 |
msgid "Member support forum"
|
157 |
msgstr ""
|
158 |
|
159 |
+
#: includes/admin.php:213
|
160 |
#, php-format
|
161 |
msgid "%1$sgrab%2$s %3$s"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: includes/admin.php:213
|
165 |
#, php-format
|
166 |
msgid "%s (free install)"
|
167 |
msgstr ""
|
168 |
|
169 |
+
#: includes/admin.php:215
|
170 |
#, php-format
|
171 |
msgid "%1$sbuy%2$s %3$s"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: includes/admin.php:215
|
175 |
#, php-format
|
176 |
msgid "%s info/purchase"
|
177 |
msgstr ""
|
178 |
|
179 |
+
#: includes/admin.php:296
|
180 |
msgid " "
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: includes/admin.php:297
|
184 |
msgid "Reading"
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: includes/admin.php:298
|
188 |
msgid "Editing Capabilities"
|
189 |
msgstr ""
|
190 |
|
191 |
+
#: includes/admin.php:299
|
192 |
msgid "Deletion Capabilities"
|
193 |
msgstr ""
|
194 |
|
195 |
+
#: includes/admin.php:303
|
196 |
msgid "can read posts which are currently published with private visibility"
|
197 |
msgstr ""
|
198 |
|
199 |
+
#: includes/admin.php:304
|
200 |
msgid "has basic editing capability (but may need other capabilities based on post status and ownership)"
|
201 |
msgstr ""
|
202 |
|
203 |
+
#: includes/admin.php:305
|
204 |
msgid "can edit posts which were created by other users"
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: includes/admin.php:306
|
208 |
msgid "can edit posts which are currently published"
|
209 |
msgstr ""
|
210 |
|
211 |
+
#: includes/admin.php:307
|
212 |
msgid "can edit posts which are currently published with private visibility"
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: includes/admin.php:308
|
216 |
msgid "can make a post publicly visible"
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: includes/admin.php:309
|
220 |
msgid "has basic deletion capability (but may need other capabilities based on post status and ownership)"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: includes/admin.php:310
|
224 |
msgid "can delete posts which were created by other users"
|
225 |
msgstr ""
|
226 |
|
227 |
+
#: includes/admin.php:311
|
228 |
msgid "can delete posts which are currently published"
|
229 |
msgstr ""
|
230 |
|
231 |
+
#: includes/admin.php:312
|
232 |
msgid "can delete posts which are currently published with private visibility"
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: includes/admin.php:446 includes/admin.php:563 includes/admin.php:823
|
236 |
+
#: includes/admin.php:1009
|
237 |
#, php-format
|
238 |
msgid "%s: assigned by Permission Group"
|
239 |
msgstr ""
|
240 |
|
241 |
+
#: includes/admin.php:461
|
242 |
#, php-format
|
243 |
msgid "shared capability: %s"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: includes/admin.php:540
|
247 |
msgid "Other WordPress Core Capabilities"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: includes/admin.php:582
|
251 |
msgid "Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
255 |
msgid "check/uncheck all"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
259 |
msgid "negate all (storing as disabled capabilities)"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
263 |
msgid "negate none (add/remove all capabilities normally)"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: includes/admin.php:797
|
267 |
#, php-format
|
268 |
msgid "%s Capabilities"
|
269 |
msgstr ""
|
270 |
|
271 |
+
#: includes/admin.php:873
|
272 |
msgid "Invalid Capabilities"
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: includes/admin.php:878
|
276 |
msgid "The following entries have no effect. Please assign desired capabilities in the Read / Edit / Delete grid above."
|
277 |
msgstr ""
|
278 |
|
279 |
+
#: includes/admin.php:955
|
280 |
msgid "Additional Capabilities"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: includes/admin.php:1072
|
284 |
msgid "Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities."
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: includes/admin.php:1074
|
288 |
msgid "Level:"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: includes/admin.php:1097
|
292 |
msgid "Delete this role"
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: includes/admin.php:1097
|
296 |
#, php-format
|
297 |
msgid ""
|
298 |
"You are about to delete the %s role.\n"
|
300 |
" 'Cancel' to stop, 'OK' to delete."
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: includes/admin.php:1097
|
304 |
msgid "Delete Role"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: includes/admin.php:1106
|
308 |
msgid "Add Capability"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: includes/admin.php:1109
|
312 |
msgid "Add to role"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: includes/admin.php:1121
|
316 |
msgid "Copy this role to"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: includes/admin.php:1124
|
320 |
#: includes/roles/class/class-pp-roles-list-table.php:80
|
321 |
msgid "Role Name"
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: includes/admin.php:1127
|
325 |
msgid "Make role available for supplemental assignment to Permission Groups only"
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: includes/admin.php:1127
|
329 |
msgid "hidden"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: includes/admin.php:1131
|
333 |
msgid "Copy"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: includes/admin.php:1137
|
337 |
msgid "Rename Role"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: includes/admin.php:1139
|
341 |
msgid "New Role Name"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: includes/admin.php:1142
|
345 |
msgid "Rename"
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: includes/admin.php:1171
|
349 |
msgid "Create this role definition in new (future) sites"
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: includes/admin.php:1171
|
353 |
msgid "include in new sites"
|
354 |
msgstr ""
|
355 |
|
356 |
+
#: includes/admin.php:1174
|
357 |
msgid "Copy / update this role definition to all sites now"
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: includes/admin.php:1174
|
361 |
msgid "sync role to all sites now"
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: includes/admin.php:1177
|
365 |
msgid "Copy option settings to all sites now"
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: includes/admin.php:1177
|
369 |
msgid "sync options to all sites now"
|
370 |
msgstr ""
|
371 |
|
372 |
+
#: includes/backup-handler.php:9 includes/manager.php:776
|
373 |
msgid "You do not have permission to restore roles."
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: includes/backup-handler.php:42
|
377 |
msgid "New backup saved."
|
378 |
msgstr ""
|
379 |
|
380 |
+
#: includes/backup-handler.php:58
|
381 |
msgid "Roles and Capabilities restored from initial backup."
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: includes/backup-handler.php:60 includes/backup-handler.php:69
|
385 |
+
#: includes/backup-handler.php:78
|
386 |
msgid "Restore failed. No backup found."
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: includes/backup-handler.php:67
|
390 |
msgid "Roles and Capabilities restored from last backup."
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: includes/backup-handler.php:76
|
394 |
msgid "Roles and Capabilities restored from selected auto-backup."
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: includes/backup-handler.php:96
|
398 |
msgid "Needed function to create default roles not found!"
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: includes/backup-handler.php:109
|
402 |
msgid "Roles and Capabilities reset to WordPress defaults"
|
403 |
msgstr ""
|
404 |
|
411 |
msgid "Restore"
|
412 |
msgstr ""
|
413 |
|
414 |
+
#: includes/backup.php:47 includes/functions-admin.php:251
|
415 |
+
#: includes/manager.php:339
|
416 |
+
msgid "Backup"
|
417 |
+
msgstr ""
|
418 |
+
|
419 |
#: includes/backup.php:48
|
420 |
msgid "Reset Roles"
|
421 |
msgstr ""
|
545 |
msgid "Reset to WordPress defaults"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: includes/features/editor-features-classic.php:18
|
549 |
msgid "Classic Editor Screen"
|
550 |
msgstr ""
|
551 |
|
552 |
+
#: includes/features/editor-features-classic.php:23
|
553 |
+
#: includes/features/editor-features-gutenberg.php:23
|
554 |
#, php-format
|
555 |
msgid "%s Restrict"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: includes/features/editor-features-classic.php:24
|
559 |
+
#: includes/features/editor-features-gutenberg.php:24
|
560 |
msgid "Toggle all"
|
561 |
msgstr ""
|
562 |
|
563 |
+
#: includes/features/editor-features-gutenberg.php:18
|
564 |
msgid "Gutenberg Screen"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: includes/features/editor-features.php:31
|
568 |
msgid "Editor Feature Restriction"
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: includes/features/editor-features.php:45
|
572 |
msgid "Select editor features to remove. Note that this screen cannot be used to grant additional features to any role."
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: includes/features/editor-features.php:89
|
576 |
msgid "Gutenberg"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: includes/features/editor-features.php:92
|
580 |
msgid "Classic"
|
581 |
msgstr ""
|
582 |
|
761 |
msgid "Publish / Update"
|
762 |
msgstr ""
|
763 |
|
764 |
+
#: includes/features/restrict-editor-features.php:313
|
765 |
+
#: includes/functions-admin.php:254 includes/manager.php:342
|
766 |
+
msgid "Settings"
|
767 |
+
msgstr ""
|
768 |
+
|
769 |
#: includes/features/restrict-editor-features.php:314
|
770 |
msgid "Options"
|
771 |
msgstr ""
|
828 |
msgid "All %s"
|
829 |
msgstr ""
|
830 |
|
831 |
+
#: includes/filters.php:312
|
832 |
msgid "Edit Roles"
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: includes/functions-admin.php:225 includes/manager.php:301
|
836 |
+
#: includes/roles/class/class-pp-roles-list-table.php:125
|
837 |
+
msgid "Capabilities"
|
838 |
+
msgstr ""
|
839 |
+
|
840 |
+
#: includes/functions-admin.php:247 includes/manager.php:323
|
841 |
+
#: includes/roles/roles.php:4
|
842 |
+
msgid "Roles"
|
843 |
+
msgstr ""
|
844 |
+
|
845 |
+
#: includes/functions-admin.php:248 includes/manager.php:335
|
846 |
+
msgid "Editor Features"
|
847 |
+
msgstr ""
|
848 |
+
|
849 |
+
#: includes/handler.php:28 includes/handler.php:54
|
850 |
msgid "New role created."
|
851 |
msgstr ""
|
852 |
|
853 |
+
#: includes/handler.php:34 includes/handler.php:60
|
854 |
msgid "Error: Failed creating the new role."
|
855 |
msgstr ""
|
856 |
|
857 |
+
#: includes/handler.php:47
|
858 |
#, php-format
|
859 |
msgid "Role \"%s\" (id %s) renamed to \"%s\""
|
860 |
msgstr ""
|
861 |
|
862 |
+
#: includes/handler.php:126
|
863 |
msgid "Incorrect capability name."
|
864 |
msgstr ""
|
865 |
|
866 |
+
#: includes/handler.php:131
|
867 |
msgid "Type / Taxonomy settings saved."
|
868 |
msgstr ""
|
869 |
|
870 |
+
#: includes/handler.php:137
|
871 |
msgid "Bad form received."
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: includes/handler.php:260
|
875 |
msgid "You cannot remove Manage Capabilities from Administrators"
|
876 |
msgstr ""
|
877 |
|
878 |
+
#: includes/manager.php:186
|
879 |
msgid "Explicity negate this capability by storing as disabled"
|
880 |
msgstr ""
|
881 |
|
882 |
+
#: includes/manager.php:187
|
883 |
msgid "Explicitly negate these capabilities by storing as disabled"
|
884 |
msgstr ""
|
885 |
|
886 |
+
#: includes/manager.php:188
|
887 |
msgid "Post type registration does not define this capability distinctly"
|
888 |
msgstr ""
|
889 |
|
890 |
+
#: includes/manager.php:189
|
891 |
msgid "This capability is explicitly negated. Click to add/remove normally."
|
892 |
msgstr ""
|
893 |
|
894 |
+
#: includes/manager.php:190
|
895 |
msgid "Add or remove this capability from the WordPress role"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: includes/manager.php:191
|
899 |
msgid "Add or remove capability from the role normally"
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: includes/manager.php:366 includes/roles/roles.php:33
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
903 |
msgid "Name"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: includes/manager.php:367
|
907 |
#: includes/roles/class/class-pp-roles-list-table.php:81
|
908 |
msgid "Role"
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: includes/manager.php:368
|
912 |
#: includes/roles/class/class-pp-roles-list-table.php:82
|
913 |
msgid "Users"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: includes/manager.php:395
|
917 |
msgid "You do not have permission to manage roles."
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: includes/manager.php:412
|
921 |
msgid "You do not have permission to manage editor features."
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: includes/manager.php:454
|
925 |
msgid "Settings updated."
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: includes/manager.php:556 includes/manager.php:597
|
929 |
msgid "You do not have permission to manage capabilities."
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/manager.php:611
|
933 |
msgid "New capability added to role."
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: includes/manager.php:629
|
937 |
msgid "The selected role is not editable."
|
938 |
msgstr ""
|
939 |
|
940 |
+
#: includes/manager.php:656
|
941 |
msgid "Bad form Received"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: includes/manager.php:806
|
945 |
#, php-format
|
946 |
msgid "If you like %s, please leave us a %s rating. Thank you!"
|
947 |
msgstr ""
|
948 |
|
949 |
+
#: includes/manager.php:817
|
950 |
msgid "About PublishPress Capabilities"
|
951 |
msgstr ""
|
952 |
|
953 |
+
#: includes/manager.php:817
|
954 |
msgid "About"
|
955 |
msgstr ""
|
956 |
|
957 |
+
#: includes/manager.php:819
|
958 |
msgid "Capabilites Documentation"
|
959 |
msgstr ""
|
960 |
|
961 |
+
#: includes/manager.php:819
|
962 |
msgid "Documentation"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: includes/manager.php:821
|
966 |
msgid "Contact the PublishPress team"
|
967 |
msgstr ""
|
968 |
|
969 |
+
#: includes/manager.php:821
|
970 |
msgid "Contact"
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: includes/pp-ui.php:42
|
974 |
#, php-format
|
975 |
msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
|
976 |
msgstr ""
|
977 |
|
978 |
+
#: includes/pp-ui.php:44
|
979 |
#, php-format
|
980 |
msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
|
981 |
msgstr ""
|
982 |
|
983 |
+
#: includes/pp-ui.php:49
|
984 |
#, php-format
|
985 |
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permission Groups%s."
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: includes/pp-ui.php:51
|
989 |
#, php-format
|
990 |
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permit Groups%s."
|
991 |
msgstr ""
|
992 |
|
993 |
+
#: includes/pp-ui.php:59
|
994 |
#, php-format
|
995 |
msgid "Capabilities for custom statuses can be manually added here. (See %sPermissions > Post Statuses%s for applicable names). %sSupplemental status-specific roles%s are usually more convenient, though."
|
996 |
msgstr ""
|
997 |
|
998 |
+
#: includes/pp-ui.php:61
|
999 |
msgid "Capabilities for custom statuses can be manually added here. Or activate the PP Custom Post Statuses extension to assign status-specific supplemental roles."
|
1000 |
msgstr ""
|
1001 |
|
1002 |
+
#: includes/pp-ui.php:64
|
1003 |
msgid "Capabilities for custom statuses can be manually added to a role here (see Conditions > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permit Groups to assign a supplemental status-specific role."
|
1004 |
msgstr ""
|
1005 |
|
1006 |
+
#: includes/pp-ui.php:77
|
1007 |
msgid "Type-Specific Capabilities"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
+
#: includes/pp-ui.php:80
|
1011 |
msgid "Ensure permissions can be controlled separately from other post types."
|
1012 |
msgstr ""
|
1013 |
|
1014 |
+
#: includes/pp-ui.php:143
|
1015 |
msgid "Make selected post types require a different capability to add new posts."
|
1016 |
msgstr ""
|
1017 |
|
1018 |
+
#: includes/pp-ui.php:143
|
1019 |
msgid "Use create_posts capability"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
+
#: includes/pp-ui.php:151 includes/pp-ui.php:214 includes/pp-ui.php:270
|
1023 |
msgid "Update"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
+
#: includes/pp-ui.php:161
|
1027 |
msgid "Taxonomy-Specific Capabilities"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
+
#: includes/pp-ui.php:164
|
1031 |
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
1032 |
msgstr ""
|
1033 |
|
1034 |
+
#: includes/pp-ui.php:219
|
1035 |
msgid "Detailed Taxonomy Capabilities"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
+
#: includes/pp-ui.php:222
|
1039 |
msgid "Enforce Edit, Delete and Assign capabilities separately from Management capability."
|
1040 |
msgstr ""
|
1041 |
|
1104 |
msgid "Unhide"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: includes/roles/class/class-pp-roles-list-table.php:168
|
1108 |
+
#: includes/roles/class/class-pp-roles-list-table.php:307
|
1109 |
+
msgid "Delete"
|
1110 |
+
msgstr ""
|
1111 |
+
|
1112 |
#: includes/roles/class/class-pp-roles-list-table.php:189
|
1113 |
msgid "Hide"
|
1114 |
msgstr ""
|
1142 |
msgid "Description here."
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: includes/settings.php:12
|
1146 |
msgid "Capabilities Settings"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
+
#: includes/settings.php:22
|
1150 |
msgid "Related Permissions Plugins"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
+
#: includes/settings.php:27
|
1154 |
msgid "PublishPress"
|
1155 |
msgstr ""
|
1156 |
|
1157 |
+
#: includes/settings.php:32
|
1158 |
msgid "PublishPress Authors"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
+
#: includes/settings.php:44
|
1162 |
msgid "PublishPress Revisions"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
+
#: includes/settings.php:46
|
1166 |
msgid "Help / Contact Form"
|
1167 |
msgstr ""
|
1168 |
|
readme.txt
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
-
===
|
2 |
|
3 |
Contributors: publishpress, kevinB, stevejburge, andergmartins
|
4 |
Author: PublishPress
|
5 |
Author URI: https://publishpress.com
|
6 |
-
Tags: user roles, capabilities, permissions, admin menus,
|
7 |
Requires at least: 4.9.7
|
8 |
Tested up to: 5.8
|
9 |
Requires PHP: 5.6.20
|
10 |
-
Stable tag: 2.
|
11 |
License: GPLv3
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
13 |
|
14 |
-
The best permissions plugin allows you to customize user roles, editor features and admin menus. You control who has access to your WordPress site.
|
15 |
|
16 |
== Description ==
|
17 |
|
@@ -25,28 +25,21 @@ The Pro version of PublishPress Capabilities enables you to stop users from acce
|
|
25 |
|
26 |
PublishPress Capabilities is **safe to use**. Every time you change your site's permissions, this plugin will take a backup that you can restore if anything goes wrong. You can use these backups to migrate your roles and permissions from one site to another.
|
27 |
|
28 |
-
|
29 |
-
|
30 |
-
> <strong>Upgrade to Capabilities Pro</strong><br />
|
31 |
-
> This plugin is the free version of PublishPress Capabilities. The Pro version of Capabilities has all the features you need to control permissions for your WordPress users. With Capabilities Pro you can manage access to posts, pages, media and custom post types. <a href="https://publishpress.com/capabilities" title="Capabilities Pro">Click here to control access to your WordPress site with Capabilities Pro!</a>
|
32 |
-
|
33 |
-
## The Key Features of PublishPress Capabilities ##
|
34 |
|
35 |
1. **User role editor**: You can change the capabilities for any role.
|
36 |
2. **Works for all post types**: Choose who can Publish, Read, Edit and Delete content for any post type.
|
37 |
3. **Works for all taxonomies**: Choose who can Manage, Edit and Assign terms in any taxonomy.
|
38 |
-
4. **Hide
|
39 |
-
5. **
|
40 |
-
6. **
|
41 |
-
7. **
|
42 |
-
8. **
|
43 |
-
9. **
|
44 |
-
10. **
|
45 |
-
11. **
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
## #1. WordPress User Role Editor ##
|
50 |
|
51 |
PublishPress Capabilities gives you detailed control over all the permission levelsss on your WordPress site. You can edit user roles on your site, from Administrator and Editor to Contributor and Subscriber.
|
52 |
|
@@ -54,37 +47,25 @@ With the Capabilities plugin, you can choose who can Publish, Read, Edit and Del
|
|
54 |
|
55 |
[Click here for your quick start guide to PublishPress Capabilities](https://publishpress.com/knowledge-base/permissions-start/).
|
56 |
|
57 |
-
|
58 |
|
59 |
Many WordPress users have sites with custom post types. This can be done using custom code, a theme, or with a plugin. No matter how your post type is created, PublishPress Capabilities lets you enforce and assign distinct capabilities for your post type.
|
60 |
|
61 |
[Click here to see how to control post type permissions](https://publishpress.com/knowledge-base/custom-post-types-capability/).
|
62 |
|
63 |
-
|
64 |
|
65 |
PublishPress Capabilities enables you to add extra permissions to the taxonomies on your site. This feature includes the default Categories and Tags, but also applies to other taxonomies. For example, in WooCommerce you can apply custom permissions to Product categories, Product tags, and Product shipping classes. You can enforce and assign "Manage", "Edit" and "Assign" distinct capabilities for all your taxonomies.
|
66 |
|
67 |
[Click here to learn about taxonomy permissions](https://publishpress.com/knowledge-base/taxonomy-specific-capabilities/).
|
68 |
|
69 |
-
|
70 |
-
|
71 |
-
“Admin Features” allows you to hide features in the WordPress admin area and toolbar. You can decide what users see in your WordPress dashboard. You can use this option to hide all the links in the toolbar including "About WordPress", "Visit Site" and more. You can also hide dashboard widgets such as "At a Glance", "Quick Draft", and "WordPress Events and News".
|
72 |
-
|
73 |
-
[Click here to learn about removing toolbar items and dashboard widgets](https://publishpress.com/knowledge-base/how-to-use-admin-features/).
|
74 |
-
|
75 |
-
## #5. Hide Gutenberg and Classic Editor Features ##
|
76 |
|
77 |
PublishPress Capabilities has an option called "Editor Features" allows you to clean up the post editing screen. You can decide what users see when they're writing posts. You can hide anything on the Gutenberg or Classic Editor screens. You can hide boxes inside the sidebadd such Tags, Categories, or Excerpt. You can the "Publish" button. You can even hide the post title, body, or permalink. This is a great alternative to plugins such as Adminimize.
|
78 |
|
79 |
[Click here to learn about hiding editor features](https://publishpress.com/knowledge-base/editor-features/).
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
WordPress has a feature called “metaboxes”. This is a strange name, but you have seen them often if you use WordPress. When a user edits a post, the edit screen has several default boxes: Status & visibility, Featured image, Categories, Tags, etc. These boxes are metaboxes. Plugins can add also add their own metaboxes. The Pro version of the PublishPress Capabilities plugin allows you to hide metaboxes for specific user roles.
|
84 |
-
|
85 |
-
[Click here to learn about hiding metaboxes](https://publishpress.com/knowledge-base/hide-metaboxes-in-wordpress-posts/).
|
86 |
-
|
87 |
-
## #7. Backup and Restore User Roles and Capabilities ##
|
88 |
|
89 |
PublishPress Capabilities offers you the ability to back up and restore your permissions. This feature is very helpful if you want to test out changes on your site, or if you've installed a new plugin that has changed your site's permissions.
|
90 |
|
@@ -92,64 +73,63 @@ Every time you change your permissions, the PublishPress Capabilities plugin wil
|
|
92 |
|
93 |
[Click here to see how to backup permissions](https://publishpress.com/knowledge-base/backup-restore-permissions/).
|
94 |
|
95 |
-
|
96 |
|
97 |
With PublishPress Capabilities you can create or copy any existing WordPress user role. These roles can be customized in exactly the same way as the default WordPress roles. These new roles can be added to single sites or to an entire multisite network.
|
98 |
|
99 |
[Click here to see how to create or copy user roles](https://publishpress.com/knowledge-base/create-or-copy-user-roles/).
|
100 |
|
101 |
-
|
102 |
|
103 |
PublishPress Capabilities enables you to restrict access to navigation menus by roles, logged in and logged out users. This is useful because a default WordPress site does not give you way to control the visibility of your links.
|
104 |
|
105 |
[Click to see how to block frontend menu access](https://publishpress.com/knowledge-base/nav-menus/).
|
106 |
|
107 |
-
|
108 |
|
109 |
With PublishPress Capabilities you can restrict access to admin menu screens by user roles. This is useful because many plugin do not have any way to control who can access their admin screens.
|
110 |
|
111 |
[Click to see how to block Admin menu access](https://publishpress.com/knowledge-base/admin-menus/).
|
112 |
|
113 |
-
|
114 |
|
115 |
PublishPress Capabilities enables you to decide who can upload, edit and delete files from your site's Media Library. By default, only Administrators are able to delete files in your Media Library. Subscribers and Contributors are not even allowed to upload files. You can customize these permissions for the Media Library and also the Featured Image box.
|
116 |
|
117 |
[Click here to learn about Media Library permissions](https://publishpress.com/knowledge-base/control-media-library-access/).
|
118 |
|
119 |
-
|
120 |
|
121 |
We mentioned earlier that PublishPress Capabilities has special support for WooCommerce taxonomies. This is true for the rest of WooCommerce also. With PublishPress Capabilities you can control permissions for WooCommerce products, orders and coupons.
|
122 |
|
123 |
[Click here to learn about WooCommerce permissions](https://publishpress.com/knowledge-base/woocommerce-permissons/).
|
124 |
|
125 |
-
|
126 |
|
127 |
PublishPress Capabilities allows you to control permissions on a single site or across your whole network. Every time you update permissions in PublishPress Capabilities, you can choose to sync those changes across your multisite network.
|
128 |
|
129 |
[Click here to learn about multisite permissions](https://publishpress.com/knowledge-base/multisite-network/).
|
130 |
|
131 |
-
|
132 |
|
133 |
The Pro versions of the PublishPress plugins are well worth your investment. The Pro versions have extra features and faster support. [Click here to join PublishPress](https://publishpress.com/pricing/).
|
134 |
|
135 |
Join PublishPress and you'll get access to these Pro plugins:
|
136 |
|
137 |
* [PublishPress Authors Pro](https://publishpress.com/authors) allows you to add multiple authors and guest authors to WordPress posts.
|
138 |
-
* [PublishPress Blocks Pro](https://publishpress.com/blocks)
|
139 |
* [PublishPress Capabilities Pro](https://publishpress.com/capabilities) is the plugin to manage your WordPress user roles, permissions, and capabilities.
|
140 |
* [PublishPress Checklists Pro](https://publishpress.com/checklists) enables you to define tasks that must be completed before content is published.
|
141 |
* [PublishPress Permissions Pro](https://publishpress.com/permissions) is the plugin for advanced WordPress permissions.
|
142 |
* [PublishPress Pro](https://publishpress.com/publishpress) is the plugin for managing and scheduling WordPress content.
|
143 |
* [PublishPress Revisions Pro](https://publishpress.com/revisions) allows you to update your published pages with teamwork and precision.
|
144 |
-
* [PublishPress Series Pro](https://publishpress.com/series) enables you to group content together into a series
|
145 |
|
146 |
Together, these plugins are a suite of powerful publishing tools for WordPress. If you need to create a professional workflow in WordPress, with moderation, revisions, permissions and more... then you should try PublishPress.
|
147 |
|
148 |
-
|
149 |
|
150 |
Bug reports for PublishPress Capabilities are welcomed in our [repository on GitHub](https://github.com/publishpress/publishpress-capabilities). Please note that GitHub is not a support forum, and that issues that aren't properly qualified as bugs will be closed.
|
151 |
|
152 |
-
|
153 |
|
154 |
Follow PublishPress on [Facebook](https://www.facebook.com/publishpress), [Twitter](https://www.twitter.com/publishpresscom) and [YouTube](https://www.youtube.com/publishpress).
|
155 |
|
@@ -157,7 +137,7 @@ Follow PublishPress on [Facebook](https://www.facebook.com/publishpress), [Twitt
|
|
157 |
|
158 |
= How do I Backup and Restore WordPress User Permissions? =
|
159 |
|
160 |
-
PublishPress Capabilities
|
161 |
|
162 |
Changing permissions in WordPress can be a tricky task. It's possible to lock yourself or others out of some important features. So, we've built a way to keep your site safe.
|
163 |
|
@@ -183,7 +163,7 @@ If you want to proceed, click the “Reset to WordPress defaults” link. Publis
|
|
183 |
|
184 |
WooCommerce is the most popular WordPress eCommerce plugin. You can create beautiful store with themes customized to your brand and industry and you'll find 1,000's of tools and popular integrations.
|
185 |
|
186 |
-
The PublishPress Capabilities plugin enables you to control permissions for the WooCommerce plugin and also WooCommerce user
|
187 |
|
188 |
In the right sidebar, you can also enable permissions for WooCommerce taxonomies. Check the boxes for Product categories, Product tags, and Product shipping classes. After you check those boxes and refresh your screen, you will see Manager, Edit, Assign and Delete options for Product categories, Product tags, and Product shipping classes.
|
189 |
|
@@ -273,7 +253,7 @@ When you first install the Jetpack plugin, you'll see one top-level menu link, p
|
|
273 |
|
274 |
It is possible to control who can access these Jetpack links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Jetpack access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full Jetpack access. Scroll down and you can enter a red X for any Jetpack menu link that you don't want users in the Administrator role to access. Now when an Administrator logs in to your site, they will not be able to see the Jetpack menu links that you have blocked. This approach works for the core Jetpack plugin and can also be used for add-on plugins such as Jetpack CRM and others.
|
275 |
|
276 |
-
[Click here to learn about Jetpack permissions](https://publishpress.com/knowledge-base/control-access-jetpack-admin-menus/).
|
277 |
|
278 |
= How Do I Control WPForms User Roles and Permissions? =
|
279 |
|
@@ -385,42 +365,21 @@ Common and incorrect typos include Capabilitise, Cpabilities, Capabiliites, Cspa
|
|
385 |
|
386 |
== Screenshots ==
|
387 |
|
388 |
-
1. Control user permissions
|
389 |
-
2. Create and copy user roles
|
390 |
-
3. Content permissions
|
391 |
-
4.
|
392 |
-
5.
|
393 |
-
6. Enforce Taxonomy-Specific Capabilities
|
394 |
-
7.
|
395 |
-
8.
|
396 |
-
9.
|
397 |
-
10.
|
398 |
-
11.
|
399 |
-
12. Editor Feature Restriction: PublishPress Capabilities enables you to decide what users see when they're writing posts.
|
400 |
-
13. Admin Feature Restriction: PublishPress Capabilities enables you remove items from the WordPress toolbar, plus dashboard widgets.
|
401 |
-
|
402 |
-
== Upgrade Notice ==
|
403 |
-
|
404 |
-
= 1.5.1 =
|
405 |
-
Fixed : Non-administrators with user editing capabilities could add new Administrators
|
406 |
-
|
407 |
-
= 2.3.1 =
|
408 |
-
Fixed : Security issue. Please update.
|
409 |
|
410 |
== Changelog ==
|
411 |
-
|
412 |
-
= 2.3.1 - 6 Dec 2021 =
|
413 |
* Fixed : Security issue
|
414 |
-
* Fixed : PHP Notice on Capabilities screen
|
415 |
-
|
416 |
-
= 2.3 - 28 Oct 2021 =
|
417 |
-
* Change : Role Capabilities screen uses tabs
|
418 |
-
* Feature : New "Admin Features" screen #200
|
419 |
-
|
420 |
-
= 2.2 - 26 Aug 2021 =
|
421 |
-
* Feature : Retain last role selection for Capabilities, Editor Features screens
|
422 |
-
* Perf : Sync role to all sites - Operation timed out on networks with ~100 sites
|
423 |
-
* Fixed : Some security scans flagged an unused file in external library "chosen". That file (and other developer documentation files) has been removed
|
424 |
|
425 |
= 2.1 - 24 Jun 2021 =
|
426 |
* Feature : Editor Features restriction (new screen to block editor elements per-role)
|
@@ -436,7 +395,7 @@ Fixed : Security issue. Please update.
|
|
436 |
* Compat : PublishPress - Authors without publish capability could directly publish on the Calendar screen
|
437 |
* Change : Permissions - Hide / Unhide Role setting moved to Roles screen row actions
|
438 |
|
439 |
-
= 2.0 - 18 Feb
|
440 |
* Feature : Roles screen
|
441 |
* Feature : Multiple role assignment on Add / Edit User screen
|
442 |
* Lang : Fixed handling, activated partial translations in German, Italian, Russian, Spanish, Swedish, Belarusian, Catalan
|
1 |
+
=== WordPress Permissions Plugin and User Role Editor - PublishPress Capabilities ===
|
2 |
|
3 |
Contributors: publishpress, kevinB, stevejburge, andergmartins
|
4 |
Author: PublishPress
|
5 |
Author URI: https://publishpress.com
|
6 |
+
Tags: user roles, capabilities, permissions, admin menus, user role editor
|
7 |
Requires at least: 4.9.7
|
8 |
Tested up to: 5.8
|
9 |
Requires PHP: 5.6.20
|
10 |
+
Stable tag: 2.1.1
|
11 |
License: GPLv3
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
13 |
|
14 |
+
The best permissions plugin allows you to customize user roles, editor features and admin menus. You control who has access to your WordPress site.
|
15 |
|
16 |
== Description ==
|
17 |
|
25 |
|
26 |
PublishPress Capabilities is **safe to use**. Every time you change your site's permissions, this plugin will take a backup that you can restore if anything goes wrong. You can use these backups to migrate your roles and permissions from one site to another.
|
27 |
|
28 |
+
= The Key Features of PublishPress Capabilities =
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
1. **User role editor**: You can change the capabilities for any role.
|
31 |
2. **Works for all post types**: Choose who can Publish, Read, Edit and Delete content for any post type.
|
32 |
3. **Works for all taxonomies**: Choose who can Manage, Edit and Assign terms in any taxonomy.
|
33 |
+
4. **Hide editor features**: Decide what users see when they're writing posts in Gutenberg or the Classic Editor.
|
34 |
+
5. **Safe backups**: Every time you change your permissions, PublishPress Capabilities saves a backup.
|
35 |
+
6. **Create or copy user roles**: Add new roles, or clone existing roles.
|
36 |
+
7. **Frontend menus (Pro version)**: Stop users from accessing any frontend menu link.
|
37 |
+
8. **Admin menus (Pro version)**: Stop users from accessing any admin menu link.
|
38 |
+
9. **Media library permissions**: Decide who can upload, edit and delete files.
|
39 |
+
10. **WooCommerce permissions**: Control access to WooCommerce products, orders, coupons and more.
|
40 |
+
11. **Multisite support**: Manage permissions on a single site or across your whole network.
|
41 |
+
|
42 |
+
= #1. WordPress User Role Editor =
|
|
|
|
|
43 |
|
44 |
PublishPress Capabilities gives you detailed control over all the permission levelsss on your WordPress site. You can edit user roles on your site, from Administrator and Editor to Contributor and Subscriber.
|
45 |
|
47 |
|
48 |
[Click here for your quick start guide to PublishPress Capabilities](https://publishpress.com/knowledge-base/permissions-start/).
|
49 |
|
50 |
+
= #2. Capabilities for any Post Type =
|
51 |
|
52 |
Many WordPress users have sites with custom post types. This can be done using custom code, a theme, or with a plugin. No matter how your post type is created, PublishPress Capabilities lets you enforce and assign distinct capabilities for your post type.
|
53 |
|
54 |
[Click here to see how to control post type permissions](https://publishpress.com/knowledge-base/custom-post-types-capability/).
|
55 |
|
56 |
+
= #3. Capabilities for any WordPress Taxonomy =
|
57 |
|
58 |
PublishPress Capabilities enables you to add extra permissions to the taxonomies on your site. This feature includes the default Categories and Tags, but also applies to other taxonomies. For example, in WooCommerce you can apply custom permissions to Product categories, Product tags, and Product shipping classes. You can enforce and assign "Manage", "Edit" and "Assign" distinct capabilities for all your taxonomies.
|
59 |
|
60 |
[Click here to learn about taxonomy permissions](https://publishpress.com/knowledge-base/taxonomy-specific-capabilities/).
|
61 |
|
62 |
+
= #4. Hide Gutenberg and Classic Editor Features =
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
PublishPress Capabilities has an option called "Editor Features" allows you to clean up the post editing screen. You can decide what users see when they're writing posts. You can hide anything on the Gutenberg or Classic Editor screens. You can hide boxes inside the sidebadd such Tags, Categories, or Excerpt. You can the "Publish" button. You can even hide the post title, body, or permalink. This is a great alternative to plugins such as Adminimize.
|
65 |
|
66 |
[Click here to learn about hiding editor features](https://publishpress.com/knowledge-base/editor-features/).
|
67 |
|
68 |
+
= #5. Backup and Restore User Roles and Capabilities =
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
PublishPress Capabilities offers you the ability to back up and restore your permissions. This feature is very helpful if you want to test out changes on your site, or if you've installed a new plugin that has changed your site's permissions.
|
71 |
|
73 |
|
74 |
[Click here to see how to backup permissions](https://publishpress.com/knowledge-base/backup-restore-permissions/).
|
75 |
|
76 |
+
= #6. Create New User Roles or Copy User Roles =
|
77 |
|
78 |
With PublishPress Capabilities you can create or copy any existing WordPress user role. These roles can be customized in exactly the same way as the default WordPress roles. These new roles can be added to single sites or to an entire multisite network.
|
79 |
|
80 |
[Click here to see how to create or copy user roles](https://publishpress.com/knowledge-base/create-or-copy-user-roles/).
|
81 |
|
82 |
+
= #7. Frontend Menu Restrictions (Pro version) =
|
83 |
|
84 |
PublishPress Capabilities enables you to restrict access to navigation menus by roles, logged in and logged out users. This is useful because a default WordPress site does not give you way to control the visibility of your links.
|
85 |
|
86 |
[Click to see how to block frontend menu access](https://publishpress.com/knowledge-base/nav-menus/).
|
87 |
|
88 |
+
= #8. WordPress Admin Menu Restrictions (Pro version) =
|
89 |
|
90 |
With PublishPress Capabilities you can restrict access to admin menu screens by user roles. This is useful because many plugin do not have any way to control who can access their admin screens.
|
91 |
|
92 |
[Click to see how to block Admin menu access](https://publishpress.com/knowledge-base/admin-menus/).
|
93 |
|
94 |
+
= #9. Support for Media Library Permissions =
|
95 |
|
96 |
PublishPress Capabilities enables you to decide who can upload, edit and delete files from your site's Media Library. By default, only Administrators are able to delete files in your Media Library. Subscribers and Contributors are not even allowed to upload files. You can customize these permissions for the Media Library and also the Featured Image box.
|
97 |
|
98 |
[Click here to learn about Media Library permissions](https://publishpress.com/knowledge-base/control-media-library-access/).
|
99 |
|
100 |
+
= #10. Support for WooCommerce Permissions =
|
101 |
|
102 |
We mentioned earlier that PublishPress Capabilities has special support for WooCommerce taxonomies. This is true for the rest of WooCommerce also. With PublishPress Capabilities you can control permissions for WooCommerce products, orders and coupons.
|
103 |
|
104 |
[Click here to learn about WooCommerce permissions](https://publishpress.com/knowledge-base/woocommerce-permissons/).
|
105 |
|
106 |
+
= #11. WordPress Multisite support =
|
107 |
|
108 |
PublishPress Capabilities allows you to control permissions on a single site or across your whole network. Every time you update permissions in PublishPress Capabilities, you can choose to sync those changes across your multisite network.
|
109 |
|
110 |
[Click here to learn about multisite permissions](https://publishpress.com/knowledge-base/multisite-network/).
|
111 |
|
112 |
+
= Join PublishPress and get the Pro plugins =
|
113 |
|
114 |
The Pro versions of the PublishPress plugins are well worth your investment. The Pro versions have extra features and faster support. [Click here to join PublishPress](https://publishpress.com/pricing/).
|
115 |
|
116 |
Join PublishPress and you'll get access to these Pro plugins:
|
117 |
|
118 |
* [PublishPress Authors Pro](https://publishpress.com/authors) allows you to add multiple authors and guest authors to WordPress posts.
|
119 |
+
* [PublishPress Blocks Pro](https://publishpress.com/blocks) is the plugin that gives you more control over the WordPress block editor.
|
120 |
* [PublishPress Capabilities Pro](https://publishpress.com/capabilities) is the plugin to manage your WordPress user roles, permissions, and capabilities.
|
121 |
* [PublishPress Checklists Pro](https://publishpress.com/checklists) enables you to define tasks that must be completed before content is published.
|
122 |
* [PublishPress Permissions Pro](https://publishpress.com/permissions) is the plugin for advanced WordPress permissions.
|
123 |
* [PublishPress Pro](https://publishpress.com/publishpress) is the plugin for managing and scheduling WordPress content.
|
124 |
* [PublishPress Revisions Pro](https://publishpress.com/revisions) allows you to update your published pages with teamwork and precision.
|
|
|
125 |
|
126 |
Together, these plugins are a suite of powerful publishing tools for WordPress. If you need to create a professional workflow in WordPress, with moderation, revisions, permissions and more... then you should try PublishPress.
|
127 |
|
128 |
+
= Bug Reports =
|
129 |
|
130 |
Bug reports for PublishPress Capabilities are welcomed in our [repository on GitHub](https://github.com/publishpress/publishpress-capabilities). Please note that GitHub is not a support forum, and that issues that aren't properly qualified as bugs will be closed.
|
131 |
|
132 |
+
= Follow the PublishPress team =
|
133 |
|
134 |
Follow PublishPress on [Facebook](https://www.facebook.com/publishpress), [Twitter](https://www.twitter.com/publishpresscom) and [YouTube](https://www.youtube.com/publishpress).
|
135 |
|
137 |
|
138 |
= How do I Backup and Restore WordPress User Permissions? =
|
139 |
|
140 |
+
PublishPress Capabilities offers you the ability to backup and restore your WordPress user permissions. This feature is very helpful if you want to test out changes on your site, or you've installed a new plugin that has changed your site's permissions.
|
141 |
|
142 |
Changing permissions in WordPress can be a tricky task. It's possible to lock yourself or others out of some important features. So, we've built a way to keep your site safe.
|
143 |
|
163 |
|
164 |
WooCommerce is the most popular WordPress eCommerce plugin. You can create beautiful store with themes customized to your brand and industry and you'll find 1,000's of tools and popular integrations.
|
165 |
|
166 |
+
The PublishPress Capabilities plugin enables you to control permissions for the WooCommerce plugin and also WooCommerce user rols. Go to the “Capabilities” link in your WordPress admin menu. In the main area of your screen will see options for WooCommerce Products, Orders and Coupons. These permissions cover editing, deleting and reading.
|
167 |
|
168 |
In the right sidebar, you can also enable permissions for WooCommerce taxonomies. Check the boxes for Product categories, Product tags, and Product shipping classes. After you check those boxes and refresh your screen, you will see Manager, Edit, Assign and Delete options for Product categories, Product tags, and Product shipping classes.
|
169 |
|
253 |
|
254 |
It is possible to control who can access these Jetpack links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Jetpack access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full Jetpack access. Scroll down and you can enter a red X for any Jetpack menu link that you don't want users in the Administrator role to access. Now when an Administrator logs in to your site, they will not be able to see the Jetpack menu links that you have blocked. This approach works for the core Jetpack plugin and can also be used for add-on plugins such as Jetpack CRM and others.
|
255 |
|
256 |
+
[Click here to learn about Jetpack menu permissions](https://publishpress.com/knowledge-base/control-access-jetpack-admin-menus/).
|
257 |
|
258 |
= How Do I Control WPForms User Roles and Permissions? =
|
259 |
|
365 |
|
366 |
== Screenshots ==
|
367 |
|
368 |
+
1. Control user permissions
|
369 |
+
2. Create and copy user roles
|
370 |
+
3. Content permissions
|
371 |
+
4. Permissions for Custom Statuses
|
372 |
+
5. Enforce Type-Specific Capabilities
|
373 |
+
6. Enforce Taxonomy-Specific Capabilities
|
374 |
+
7. Detailed Taxonomy Capabilities
|
375 |
+
8. Automatic or Manual Capabilities Backup, Restore
|
376 |
+
9. Control WooCommerce Capabilities
|
377 |
+
10. PublishPress Permission integration (showing capabilities from supplemental roles)
|
378 |
+
11. Multisite support
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
379 |
|
380 |
== Changelog ==
|
381 |
+
= 2.1.1 - 8 Dec 2021 =
|
|
|
382 |
* Fixed : Security issue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
383 |
|
384 |
= 2.1 - 24 Jun 2021 =
|
385 |
* Feature : Editor Features restriction (new screen to block editor elements per-role)
|
395 |
* Compat : PublishPress - Authors without publish capability could directly publish on the Calendar screen
|
396 |
* Change : Permissions - Hide / Unhide Role setting moved to Roles screen row actions
|
397 |
|
398 |
+
= 2.0 - 18 Feb 2021 =
|
399 |
* Feature : Roles screen
|
400 |
* Feature : Multiple role assignment on Add / Edit User screen
|
401 |
* Lang : Fixed handling, activated partial translations in German, Italian, Russian, Spanish, Swedish, Belarusian, Catalan
|
vendor/publishpress/wordpress-reviews/LICENSE
DELETED
@@ -1,674 +0,0 @@
|
|
1 |
-
GNU GENERAL PUBLIC LICENSE
|
2 |
-
Version 3, 29 June 2007
|
3 |
-
|
4 |
-
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
5 |
-
Everyone is permitted to copy and distribute verbatim copies
|
6 |
-
of this license document, but changing it is not allowed.
|
7 |
-
|
8 |
-
Preamble
|
9 |
-
|
10 |
-
The GNU General Public License is a free, copyleft license for
|
11 |
-
software and other kinds of works.
|
12 |
-
|
13 |
-
The licenses for most software and other practical works are designed
|
14 |
-
to take away your freedom to share and change the works. By contrast,
|
15 |
-
the GNU General Public License is intended to guarantee your freedom to
|
16 |
-
share and change all versions of a program--to make sure it remains free
|
17 |
-
software for all its users. We, the Free Software Foundation, use the
|
18 |
-
GNU General Public License for most of our software; it applies also to
|
19 |
-
any other work released this way by its authors. You can apply it to
|
20 |
-
your programs, too.
|
21 |
-
|
22 |
-
When we speak of free software, we are referring to freedom, not
|
23 |
-
price. Our General Public Licenses are designed to make sure that you
|
24 |
-
have the freedom to distribute copies of free software (and charge for
|
25 |
-
them if you wish), that you receive source code or can get it if you
|
26 |
-
want it, that you can change the software or use pieces of it in new
|
27 |
-
free programs, and that you know you can do these things.
|
28 |
-
|
29 |
-
To protect your rights, we need to prevent others from denying you
|
30 |
-
these rights or asking you to surrender the rights. Therefore, you have
|
31 |
-
certain responsibilities if you distribute copies of the software, or if
|
32 |
-
you modify it: responsibilities to respect the freedom of others.
|
33 |
-
|
34 |
-
For example, if you distribute copies of such a program, whether
|
35 |
-
gratis or for a fee, you must pass on to the recipients the same
|
36 |
-
freedoms that you received. You must make sure that they, too, receive
|
37 |
-
or can get the source code. And you must show them these terms so they
|
38 |
-
know their rights.
|
39 |
-
|
40 |
-
Developers that use the GNU GPL protect your rights with two steps:
|
41 |
-
(1) assert copyright on the software, and (2) offer you this License
|
42 |
-
giving you legal permission to copy, distribute and/or modify it.
|
43 |
-
|
44 |
-
For the developers' and authors' protection, the GPL clearly explains
|
45 |
-
that there is no warranty for this free software. For both users' and
|
46 |
-
authors' sake, the GPL requires that modified versions be marked as
|
47 |
-
changed, so that their problems will not be attributed erroneously to
|
48 |
-
authors of previous versions.
|
49 |
-
|
50 |
-
Some devices are designed to deny users access to install or run
|
51 |
-
modified versions of the software inside them, although the manufacturer
|
52 |
-
can do so. This is fundamentally incompatible with the aim of
|
53 |
-
protecting users' freedom to change the software. The systematic
|
54 |
-
pattern of such abuse occurs in the area of products for individuals to
|
55 |
-
use, which is precisely where it is most unacceptable. Therefore, we
|
56 |
-
have designed this version of the GPL to prohibit the practice for those
|
57 |
-
products. If such problems arise substantially in other domains, we
|
58 |
-
stand ready to extend this provision to those domains in future versions
|
59 |
-
of the GPL, as needed to protect the freedom of users.
|
60 |
-
|
61 |
-
Finally, every program is threatened constantly by software patents.
|
62 |
-
States should not allow patents to restrict development and use of
|
63 |
-
software on general-purpose computers, but in those that do, we wish to
|
64 |
-
avoid the special danger that patents applied to a free program could
|
65 |
-
make it effectively proprietary. To prevent this, the GPL assures that
|
66 |
-
patents cannot be used to render the program non-free.
|
67 |
-
|
68 |
-
The precise terms and conditions for copying, distribution and
|
69 |
-
modification follow.
|
70 |
-
|
71 |
-
TERMS AND CONDITIONS
|
72 |
-
|
73 |
-
0. Definitions.
|
74 |
-
|
75 |
-
"This License" refers to version 3 of the GNU General Public License.
|
76 |
-
|
77 |
-
"Copyright" also means copyright-like laws that apply to other kinds of
|
78 |
-
works, such as semiconductor masks.
|
79 |
-
|
80 |
-
"The Program" refers to any copyrightable work licensed under this
|
81 |
-
License. Each licensee is addressed as "you". "Licensees" and
|
82 |
-
"recipients" may be individuals or organizations.
|
83 |
-
|
84 |
-
To "modify" a work means to copy from or adapt all or part of the work
|
85 |
-
in a fashion requiring copyright permission, other than the making of an
|
86 |
-
exact copy. The resulting work is called a "modified version" of the
|
87 |
-
earlier work or a work "based on" the earlier work.
|
88 |
-
|
89 |
-
A "covered work" means either the unmodified Program or a work based
|
90 |
-
on the Program.
|
91 |
-
|
92 |
-
To "propagate" a work means to do anything with it that, without
|
93 |
-
permission, would make you directly or secondarily liable for
|
94 |
-
infringement under applicable copyright law, except executing it on a
|
95 |
-
computer or modifying a private copy. Propagation includes copying,
|
96 |
-
distribution (with or without modification), making available to the
|
97 |
-
public, and in some countries other activities as well.
|
98 |
-
|
99 |
-
To "convey" a work means any kind of propagation that enables other
|
100 |
-
parties to make or receive copies. Mere interaction with a user through
|
101 |
-
a computer network, with no transfer of a copy, is not conveying.
|
102 |
-
|
103 |
-
An interactive user interface displays "Appropriate Legal Notices"
|
104 |
-
to the extent that it includes a convenient and prominently visible
|
105 |
-
feature that (1) displays an appropriate copyright notice, and (2)
|
106 |
-
tells the user that there is no warranty for the work (except to the
|
107 |
-
extent that warranties are provided), that licensees may convey the
|
108 |
-
work under this License, and how to view a copy of this License. If
|
109 |
-
the interface presents a list of user commands or options, such as a
|
110 |
-
menu, a prominent item in the list meets this criterion.
|
111 |
-
|
112 |
-
1. Source Code.
|
113 |
-
|
114 |
-
The "source code" for a work means the preferred form of the work
|
115 |
-
for making modifications to it. "Object code" means any non-source
|
116 |
-
form of a work.
|
117 |
-
|
118 |
-
A "Standard Interface" means an interface that either is an official
|
119 |
-
standard defined by a recognized standards body, or, in the case of
|
120 |
-
interfaces specified for a particular programming language, one that
|
121 |
-
is widely used among developers working in that language.
|
122 |
-
|
123 |
-
The "System Libraries" of an executable work include anything, other
|
124 |
-
than the work as a whole, that (a) is included in the normal form of
|
125 |
-
packaging a Major Component, but which is not part of that Major
|
126 |
-
Component, and (b) serves only to enable use of the work with that
|
127 |
-
Major Component, or to implement a Standard Interface for which an
|
128 |
-
implementation is available to the public in source code form. A
|
129 |
-
"Major Component", in this context, means a major essential component
|
130 |
-
(kernel, window system, and so on) of the specific operating system
|
131 |
-
(if any) on which the executable work runs, or a compiler used to
|
132 |
-
produce the work, or an object code interpreter used to run it.
|
133 |
-
|
134 |
-
The "Corresponding Source" for a work in object code form means all
|
135 |
-
the source code needed to generate, install, and (for an executable
|
136 |
-
work) run the object code and to modify the work, including scripts to
|
137 |
-
control those activities. However, it does not include the work's
|
138 |
-
System Libraries, or general-purpose tools or generally available free
|
139 |
-
programs which are used unmodified in performing those activities but
|
140 |
-
which are not part of the work. For example, Corresponding Source
|
141 |
-
includes interface definition files associated with source files for
|
142 |
-
the work, and the source code for shared libraries and dynamically
|
143 |
-
linked subprograms that the work is specifically designed to require,
|
144 |
-
such as by intimate data communication or control flow between those
|
145 |
-
subprograms and other parts of the work.
|
146 |
-
|
147 |
-
The Corresponding Source need not include anything that users
|
148 |
-
can regenerate automatically from other parts of the Corresponding
|
149 |
-
Source.
|
150 |
-
|
151 |
-
The Corresponding Source for a work in source code form is that
|
152 |
-
same work.
|
153 |
-
|
154 |
-
2. Basic Permissions.
|
155 |
-
|
156 |
-
All rights granted under this License are granted for the term of
|
157 |
-
copyright on the Program, and are irrevocable provided the stated
|
158 |
-
conditions are met. This License explicitly affirms your unlimited
|
159 |
-
permission to run the unmodified Program. The output from running a
|
160 |
-
covered work is covered by this License only if the output, given its
|
161 |
-
content, constitutes a covered work. This License acknowledges your
|
162 |
-
rights of fair use or other equivalent, as provided by copyright law.
|
163 |
-
|
164 |
-
You may make, run and propagate covered works that you do not
|
165 |
-
convey, without conditions so long as your license otherwise remains
|
166 |
-
in force. You may convey covered works to others for the sole purpose
|
167 |
-
of having them make modifications exclusively for you, or provide you
|
168 |
-
with facilities for running those works, provided that you comply with
|
169 |
-
the terms of this License in conveying all material for which you do
|
170 |
-
not control copyright. Those thus making or running the covered works
|
171 |
-
for you must do so exclusively on your behalf, under your direction
|
172 |
-
and control, on terms that prohibit them from making any copies of
|
173 |
-
your copyrighted material outside their relationship with you.
|
174 |
-
|
175 |
-
Conveying under any other circumstances is permitted solely under
|
176 |
-
the conditions stated below. Sublicensing is not allowed; section 10
|
177 |
-
makes it unnecessary.
|
178 |
-
|
179 |
-
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
180 |
-
|
181 |
-
No covered work shall be deemed part of an effective technological
|
182 |
-
measure under any applicable law fulfilling obligations under article
|
183 |
-
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
184 |
-
similar laws prohibiting or restricting circumvention of such
|
185 |
-
measures.
|
186 |
-
|
187 |
-
When you convey a covered work, you waive any legal power to forbid
|
188 |
-
circumvention of technological measures to the extent such circumvention
|
189 |
-
is effected by exercising rights under this License with respect to
|
190 |
-
the covered work, and you disclaim any intention to limit operation or
|
191 |
-
modification of the work as a means of enforcing, against the work's
|
192 |
-
users, your or third parties' legal rights to forbid circumvention of
|
193 |
-
technological measures.
|
194 |
-
|
195 |
-
4. Conveying Verbatim Copies.
|
196 |
-
|
197 |
-
You may convey verbatim copies of the Program's source code as you
|
198 |
-
receive it, in any medium, provided that you conspicuously and
|
199 |
-
appropriately publish on each copy an appropriate copyright notice;
|
200 |
-
keep intact all notices stating that this License and any
|
201 |
-
non-permissive terms added in accord with section 7 apply to the code;
|
202 |
-
keep intact all notices of the absence of any warranty; and give all
|
203 |
-
recipients a copy of this License along with the Program.
|
204 |
-
|
205 |
-
You may charge any price or no price for each copy that you convey,
|
206 |
-
and you may offer support or warranty protection for a fee.
|
207 |
-
|
208 |
-
5. Conveying Modified Source Versions.
|
209 |
-
|
210 |
-
You may convey a work based on the Program, or the modifications to
|
211 |
-
produce it from the Program, in the form of source code under the
|
212 |
-
terms of section 4, provided that you also meet all of these conditions:
|
213 |
-
|
214 |
-
a) The work must carry prominent notices stating that you modified
|
215 |
-
it, and giving a relevant date.
|
216 |
-
|
217 |
-
b) The work must carry prominent notices stating that it is
|
218 |
-
released under this License and any conditions added under section
|
219 |
-
7. This requirement modifies the requirement in section 4 to
|
220 |
-
"keep intact all notices".
|
221 |
-
|
222 |
-
c) You must license the entire work, as a whole, under this
|
223 |
-
License to anyone who comes into possession of a copy. This
|
224 |
-
License will therefore apply, along with any applicable section 7
|
225 |
-
additional terms, to the whole of the work, and all its parts,
|
226 |
-
regardless of how they are packaged. This License gives no
|
227 |
-
permission to license the work in any other way, but it does not
|
228 |
-
invalidate such permission if you have separately received it.
|
229 |
-
|
230 |
-
d) If the work has interactive user interfaces, each must display
|
231 |
-
Appropriate Legal Notices; however, if the Program has interactive
|
232 |
-
interfaces that do not display Appropriate Legal Notices, your
|
233 |
-
work need not make them do so.
|
234 |
-
|
235 |
-
A compilation of a covered work with other separate and independent
|
236 |
-
works, which are not by their nature extensions of the covered work,
|
237 |
-
and which are not combined with it such as to form a larger program,
|
238 |
-
in or on a volume of a storage or distribution medium, is called an
|
239 |
-
"aggregate" if the compilation and its resulting copyright are not
|
240 |
-
used to limit the access or legal rights of the compilation's users
|
241 |
-
beyond what the individual works permit. Inclusion of a covered work
|
242 |
-
in an aggregate does not cause this License to apply to the other
|
243 |
-
parts of the aggregate.
|
244 |
-
|
245 |
-
6. Conveying Non-Source Forms.
|
246 |
-
|
247 |
-
You may convey a covered work in object code form under the terms
|
248 |
-
of sections 4 and 5, provided that you also convey the
|
249 |
-
machine-readable Corresponding Source under the terms of this License,
|
250 |
-
in one of these ways:
|
251 |
-
|
252 |
-
a) Convey the object code in, or embodied in, a physical product
|
253 |
-
(including a physical distribution medium), accompanied by the
|
254 |
-
Corresponding Source fixed on a durable physical medium
|
255 |
-
customarily used for software interchange.
|
256 |
-
|
257 |
-
b) Convey the object code in, or embodied in, a physical product
|
258 |
-
(including a physical distribution medium), accompanied by a
|
259 |
-
written offer, valid for at least three years and valid for as
|
260 |
-
long as you offer spare parts or customer support for that product
|
261 |
-
model, to give anyone who possesses the object code either (1) a
|
262 |
-
copy of the Corresponding Source for all the software in the
|
263 |
-
product that is covered by this License, on a durable physical
|
264 |
-
medium customarily used for software interchange, for a price no
|
265 |
-
more than your reasonable cost of physically performing this
|
266 |
-
conveying of source, or (2) access to copy the
|
267 |
-
Corresponding Source from a network server at no charge.
|
268 |
-
|
269 |
-
c) Convey individual copies of the object code with a copy of the
|
270 |
-
written offer to provide the Corresponding Source. This
|
271 |
-
alternative is allowed only occasionally and noncommercially, and
|
272 |
-
only if you received the object code with such an offer, in accord
|
273 |
-
with subsection 6b.
|
274 |
-
|
275 |
-
d) Convey the object code by offering access from a designated
|
276 |
-
place (gratis or for a charge), and offer equivalent access to the
|
277 |
-
Corresponding Source in the same way through the same place at no
|
278 |
-
further charge. You need not require recipients to copy the
|
279 |
-
Corresponding Source along with the object code. If the place to
|
280 |
-
copy the object code is a network server, the Corresponding Source
|
281 |
-
may be on a different server (operated by you or a third party)
|
282 |
-
that supports equivalent copying facilities, provided you maintain
|
283 |
-
clear directions next to the object code saying where to find the
|
284 |
-
Corresponding Source. Regardless of what server hosts the
|
285 |
-
Corresponding Source, you remain obligated to ensure that it is
|
286 |
-
available for as long as needed to satisfy these requirements.
|
287 |
-
|
288 |
-
e) Convey the object code using peer-to-peer transmission, provided
|
289 |
-
you inform other peers where the object code and Corresponding
|
290 |
-
Source of the work are being offered to the general public at no
|
291 |
-
charge under subsection 6d.
|
292 |
-
|
293 |
-
A separable portion of the object code, whose source code is excluded
|
294 |
-
from the Corresponding Source as a System Library, need not be
|
295 |
-
included in conveying the object code work.
|
296 |
-
|
297 |
-
A "User Product" is either (1) a "consumer product", which means any
|
298 |
-
tangible personal property which is normally used for personal, family,
|
299 |
-
or household purposes, or (2) anything designed or sold for incorporation
|
300 |
-
into a dwelling. In determining whether a product is a consumer product,
|
301 |
-
doubtful cases shall be resolved in favor of coverage. For a particular
|
302 |
-
product received by a particular user, "normally used" refers to a
|
303 |
-
typical or common use of that class of product, regardless of the status
|
304 |
-
of the particular user or of the way in which the particular user
|
305 |
-
actually uses, or expects or is expected to use, the product. A product
|
306 |
-
is a consumer product regardless of whether the product has substantial
|
307 |
-
commercial, industrial or non-consumer uses, unless such uses represent
|
308 |
-
the only significant mode of use of the product.
|
309 |
-
|
310 |
-
"Installation Information" for a User Product means any methods,
|
311 |
-
procedures, authorization keys, or other information required to install
|
312 |
-
and execute modified versions of a covered work in that User Product from
|
313 |
-
a modified version of its Corresponding Source. The information must
|
314 |
-
suffice to ensure that the continued functioning of the modified object
|
315 |
-
code is in no case prevented or interfered with solely because
|
316 |
-
modification has been made.
|
317 |
-
|
318 |
-
If you convey an object code work under this section in, or with, or
|
319 |
-
specifically for use in, a User Product, and the conveying occurs as
|
320 |
-
part of a transaction in which the right of possession and use of the
|
321 |
-
User Product is transferred to the recipient in perpetuity or for a
|
322 |
-
fixed term (regardless of how the transaction is characterized), the
|
323 |
-
Corresponding Source conveyed under this section must be accompanied
|
324 |
-
by the Installation Information. But this requirement does not apply
|
325 |
-
if neither you nor any third party retains the ability to install
|
326 |
-
modified object code on the User Product (for example, the work has
|
327 |
-
been installed in ROM).
|
328 |
-
|
329 |
-
The requirement to provide Installation Information does not include a
|
330 |
-
requirement to continue to provide support service, warranty, or updates
|
331 |
-
for a work that has been modified or installed by the recipient, or for
|
332 |
-
the User Product in which it has been modified or installed. Access to a
|
333 |
-
network may be denied when the modification itself materially and
|
334 |
-
adversely affects the operation of the network or violates the rules and
|
335 |
-
protocols for communication across the network.
|
336 |
-
|
337 |
-
Corresponding Source conveyed, and Installation Information provided,
|
338 |
-
in accord with this section must be in a format that is publicly
|
339 |
-
documented (and with an implementation available to the public in
|
340 |
-
source code form), and must require no special password or key for
|
341 |
-
unpacking, reading or copying.
|
342 |
-
|
343 |
-
7. Additional Terms.
|
344 |
-
|
345 |
-
"Additional permissions" are terms that supplement the terms of this
|
346 |
-
License by making exceptions from one or more of its conditions.
|
347 |
-
Additional permissions that are applicable to the entire Program shall
|
348 |
-
be treated as though they were included in this License, to the extent
|
349 |
-
that they are valid under applicable law. If additional permissions
|
350 |
-
apply only to part of the Program, that part may be used separately
|
351 |
-
under those permissions, but the entire Program remains governed by
|
352 |
-
this License without regard to the additional permissions.
|
353 |
-
|
354 |
-
When you convey a copy of a covered work, you may at your option
|
355 |
-
remove any additional permissions from that copy, or from any part of
|
356 |
-
it. (Additional permissions may be written to require their own
|
357 |
-
removal in certain cases when you modify the work.) You may place
|
358 |
-
additional permissions on material, added by you to a covered work,
|
359 |
-
for which you have or can give appropriate copyright permission.
|
360 |
-
|
361 |
-
Notwithstanding any other provision of this License, for material you
|
362 |
-
add to a covered work, you may (if authorized by the copyright holders of
|
363 |
-
that material) supplement the terms of this License with terms:
|
364 |
-
|
365 |
-
a) Disclaiming warranty or limiting liability differently from the
|
366 |
-
terms of sections 15 and 16 of this License; or
|
367 |
-
|
368 |
-
b) Requiring preservation of specified reasonable legal notices or
|
369 |
-
author attributions in that material or in the Appropriate Legal
|
370 |
-
Notices displayed by works containing it; or
|
371 |
-
|
372 |
-
c) Prohibiting misrepresentation of the origin of that material, or
|
373 |
-
requiring that modified versions of such material be marked in
|
374 |
-
reasonable ways as different from the original version; or
|
375 |
-
|
376 |
-
d) Limiting the use for publicity purposes of names of licensors or
|
377 |
-
authors of the material; or
|
378 |
-
|
379 |
-
e) Declining to grant rights under trademark law for use of some
|
380 |
-
trade names, trademarks, or service marks; or
|
381 |
-
|
382 |
-
f) Requiring indemnification of licensors and authors of that
|
383 |
-
material by anyone who conveys the material (or modified versions of
|
384 |
-
it) with contractual assumptions of liability to the recipient, for
|
385 |
-
any liability that these contractual assumptions directly impose on
|
386 |
-
those licensors and authors.
|
387 |
-
|
388 |
-
All other non-permissive additional terms are considered "further
|
389 |
-
restrictions" within the meaning of section 10. If the Program as you
|
390 |
-
received it, or any part of it, contains a notice stating that it is
|
391 |
-
governed by this License along with a term that is a further
|
392 |
-
restriction, you may remove that term. If a license document contains
|
393 |
-
a further restriction but permits relicensing or conveying under this
|
394 |
-
License, you may add to a covered work material governed by the terms
|
395 |
-
of that license document, provided that the further restriction does
|
396 |
-
not
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|