diff --git a/NOTICE b/NOTICE
index 71dfcfa87..38057cd82 100644
--- a/NOTICE
+++ b/NOTICE
@@ -84,10 +84,6 @@ files and utilities for further information:
MIT License
https://github.com/KnpLabs/php-github-api
- Select 2
- MIT License
- https://select2.org/
-
Shibboleth Embedded Discovery Service (app/webroot/js/eds)
Apache 2.0
https://shibboleth.net/products/embedded-discovery-service.html
diff --git a/app/resources/locales/en_US/operation.po b/app/resources/locales/en_US/operation.po
index 2268a90d6..c157cd963 100644
--- a/app/resources/locales/en_US/operation.po
+++ b/app/resources/locales/en_US/operation.po
@@ -42,6 +42,9 @@ msgstr "Are you sure you wish to generate a new API Key?"
msgid "applySchema"
msgstr "Apply Database Schema"
+msgid "assign"
+msgstr "Assign"
+
msgid "cancel"
msgstr "Cancel"
@@ -57,6 +60,9 @@ msgstr "Close"
msgid "confirm"
msgstr "Confirm"
+msgid "confirm.generic"
+msgstr "Are you sure you want to confirm this action?"
+
msgid "configure.a"
msgstr "Configure {0}"
@@ -99,6 +105,9 @@ msgstr "Go"
msgid "identifiers.assign"
msgstr "Assign Identifiers"
+msgid "identifiers.assign.confirm"
+msgstr "Are you sure you want to assign identifiers to this record ({0})?"
+
msgid "last"
msgstr "Last"
@@ -126,6 +135,9 @@ msgstr "Make Primary"
msgid "provision"
msgstr "Provision Now"
+msgid "provision.confirm"
+msgstr "Are you sure you want to run provisioning?"
+
msgid "provisioning.status"
msgstr "Provisioning Status"
@@ -135,6 +147,9 @@ msgstr "Add/Restore Default Types"
msgid "reconcile"
msgstr "Reconcile"
+msgid "reconcile.confirm"
+msgstr "Are you sure you want to reconcile this group ({0})?"
+
msgid "remove"
msgstr "Remove"
diff --git a/app/templates/Groups/columns.inc b/app/templates/Groups/columns.inc
index 3f36adfb0..2167470fd 100644
--- a/app/templates/Groups/columns.inc
+++ b/app/templates/Groups/columns.inc
@@ -64,15 +64,12 @@ $rowActions = [
'action' => 'index',
'icon' => 'history'
],
- [
- 'controller' => 'identifiers',
- 'action' => 'index',
- 'icon' => 'label',
- 'if' => 'notAutomatic'
- ],
[
'action' => 'reconcile',
- 'icon' => 'sync'
+ 'icon' => 'sync',
+ 'confirm' => [
+ 'dg_confirm_btn' => __d('operation', 'reconcile')
+ ]
]
];
diff --git a/app/templates/Groups/fields-nav.inc b/app/templates/Groups/fields-nav.inc
index 6078c539f..12310d062 100644
--- a/app/templates/Groups/fields-nav.inc
+++ b/app/templates/Groups/fields-nav.inc
@@ -48,6 +48,51 @@ $topLinks = [
]
],
'class' => ''
+ ],
+ [
+ 'icon' => 'cloud_sync',
+ 'order' => 'Default',
+ 'label' => __d('operation', 'provisioning.status'),
+ 'link' => [
+ 'controller' => 'provisioning_targets',
+ 'action' => 'status',
+ '?' => [
+ 'group_id' => $vv_obj->id
+ ]
+ ],
+ 'class' => ''
+ ],
+ [
+ 'icon' => 'badge',
+ 'order' => 'Default',
+ 'label' => __d('operation', 'identifiers.assign'),
+ 'link' => [
+ 'controller' => 'identifier_assignments',
+ 'action' => 'assign',
+ '?' => [
+ 'group_id' => $vv_obj->id
+ ]
+ ],
+ 'if' => 'notAutomatic',
+ 'confirm' => [
+ 'dg_body_txt' => __d('operation', 'identifiers.assign.confirm',[$vv_obj->id]),
+ 'dg_confirm_btn' => __d('operation', 'assign')
+ ],
+ 'class' => ''
+ ],
+ [
+ 'icon' => 'sync',
+ 'order' => 'Default',
+ 'label' => __d('operation', 'reconcile'),
+ 'link' => [
+ 'action' => 'reconcile',
+ $vv_obj->id
+ ],
+ 'confirm' => [
+ 'dg_body_txt' => __d('operation', 'reconcile.confirm', [$vv_obj->id]),
+ 'dg_confirm_btn' => __d('operation', 'reconcile')
+ ],
+ 'class' => ''
]
];
diff --git a/app/templates/IdentifierAssignments/columns.inc b/app/templates/IdentifierAssignments/columns.inc
index 8a168457e..835530014 100644
--- a/app/templates/IdentifierAssignments/columns.inc
+++ b/app/templates/IdentifierAssignments/columns.inc
@@ -57,8 +57,11 @@ $rowActions = [
'icon' => 'electrical_services'
]
];
-
-// TODO: develop $bulkActions. For now, use a placeholder.
+
+/*
+// When the $bulkActions variable exists in a columns.inc config, the "Bulk edit" switch will appear in the index.
$bulkActions = [
+ // TODO: develop bulk actions. For now, use a placeholder.
'delete' => true
-];
\ No newline at end of file
+];
+*/
\ No newline at end of file
diff --git a/app/templates/People/fields-nav.inc b/app/templates/People/fields-nav.inc
index 96ede675b..b97d5ec44 100644
--- a/app/templates/People/fields-nav.inc
+++ b/app/templates/People/fields-nav.inc
@@ -80,6 +80,10 @@ $topLinks = [
'person_id' => $vv_obj->id
]
],
+ 'confirm' => [
+ 'dg_body_txt' => __d('operation', 'identifiers.assign.confirm', [$vv_obj->id]),
+ 'dg_confirm_btn' => __d('operation', 'assign')
+ ],
'class' => ''
]
];
diff --git a/app/templates/ProvisioningTargets/status.php b/app/templates/ProvisioningTargets/status.php
index 3781cbbf5..4c8527537 100644
--- a/app/templates/ProvisioningTargets/status.php
+++ b/app/templates/ProvisioningTargets/status.php
@@ -53,16 +53,10 @@
-
-
+
- |
+ |
= __d('controller', 'ProvisioningTargets', [1]); ?> |
= __d('field', 'status'); ?> |
= __d('field', 'comment'); ?> |
@@ -74,34 +68,49 @@
-
-
- |
= $p['target']->description; ?> |
= __d('enumeration', 'ProvisioningStatusEnum.'.$p['status']); ?> |
diff --git a/app/templates/Standard/add-edit-view.php b/app/templates/Standard/add-edit-view.php
index 520cd690a..39fc8818e 100644
--- a/app/templates/Standard/add-edit-view.php
+++ b/app/templates/Standard/add-edit-view.php
@@ -125,32 +125,29 @@
$action_args['vv_actions'][] = [
'order' => $this->Menu->getMenuOrder($t['order']),
'icon' => $this->Menu->getMenuIcon($t['icon']),
- 'url' => $this->Url->build($t['link']),
+ 'url' => $t['link'],
'label' => $t['label'],
+ 'class' => !empty($t['class']) ? $t['class'] : '',
+ 'confirm' => !empty($t['confirm']) ? $t['confirm'] : []
];
}
}
// Delete
if($vv_action != 'add' && !empty($vv_obj->id) && $vv_permissions['delete']) {
- $actionPostBtnArray = ['action' => 'delete', $vv_obj->id];
- $actionUrl = $this->Url->build(['action' => 'delete', $vv_obj->id]);
- $action_args['vv_actions'][] = array(
+ $action_args['vv_actions'][] = [
'order' => $this->Menu->getMenuOrder('Delete'),
'icon' => $this->Menu->getMenuIcon('Delete'),
- 'url' => 'javascript:void(0);',
+ 'url' => ['action' => 'delete', $vv_obj->id],
'label' => __d('operation', 'delete'),
- 'class' => 'deletebutton nospin',
- 'onclick' => array(
- 'dg_bd_txt' => __d('operation', 'delete.confirm', [$vv_obj->id]),
- 'dg_post_btn_array' => $actionPostBtnArray,
- 'dg_url' => $actionUrl,
- 'dg_conf_btn' => __d('operation', 'remove'),
- 'dg_cancel_btn' => __d('operation', 'cancel'),
+ 'class' => 'deletebutton',
+ 'confirm' => [
+ 'method' => 'post',
'dg_title' => __d('operation', 'remove'),
- 'dg_bd_txt_repl_str' => ''
- )
- );
+ 'dg_body_txt' => __d('operation', 'delete.confirm', [$vv_obj->id]),
+ 'dg_confirm_btn' => __d('operation', 'remove')
+ ]
+ ];
}
if(!empty($action_args['vv_actions'])) {
diff --git a/app/templates/Standard/index.php b/app/templates/Standard/index.php
index 7315a375d..6725109f6 100644
--- a/app/templates/Standard/index.php
+++ b/app/templates/Standard/index.php
@@ -105,13 +105,11 @@
$action_args['vv_actions'][] = [
'order' => $this->Menu->getMenuOrder('Add'),
'icon' => $this->Menu->getMenuIcon('Add'),
- 'url' => $this->Url->build(
- [
- 'controller' => $modelsName,
- 'action' => 'add',
- '?' => $linkFilter
- ]
- ),
+ 'url' => [
+ 'controller' => $modelsName,
+ 'action' => 'add',
+ '?' => $linkFilter
+ ],
'label' => __d('operation', 'add.a', __d('controller', $modelsName, [1])),
];
}
@@ -128,8 +126,10 @@
$action_args['vv_actions'][] = [
'order' => $this->Menu->getMenuOrder($t['order']),
'icon' => $this->Menu->getMenuIcon($t['icon']),
- 'url' => $this->Url->build($t['link']),
+ 'url' => $t['link'],
'label' => $t['label'],
+ 'class' => !empty($t['class']) ? $t['class'] : '',
+ 'confirm' => !empty($t['confirm']) ? $t['confirm'] : []
];
}
}
@@ -179,7 +179,7 @@
- |
+ |
Menu->getMenuIcon('Default');
$actionIconClass = !empty($a['iconClass']) ? $a['iconClass'] : '';
$actionClass = !empty($a['class']) ? $a['class'] : '';
- $actionUrl = '';
- $actionLabel = '';
- $actionOnClick = []; // used for confirmation dialog
+ $actionUrl = ['action' => $a['action'], $entity->id];
+ $actionLabel = !empty($a['label']) ? $a['label'] : __d('operation', $a['action']);
- // Generate the link text and urls:
-
- // If we have a .confirm text, we need to generate a confirm dialog box
- $confirmKey = $a['action'].'.confirm';
- $confirmTxt = __d('operation', $confirmKey);
+ if (!empty($a['controller'])) {
+ // We're linking into a related controller
+ $actionLabel = !empty($a['label']) ? $a['label'] : __d('controller', Inflector::camelize(Inflector::pluralize($a['controller'])), [99]);
+ $actionUrl = [
+ 'controller' => $a['controller'],
+ 'action' => $a['action'],
+ '?' => [$tableFK => $entity->id]
+ ];
+ }
- if($confirmTxt != $confirmKey) {
- // We found the localized string
- $actionPostBtnArray = ['action' => $a['action'], $entity->id];
- $actionUrl = $this->Url->build(['action' => $a['action'], $entity->id]);
- // XXX should be configurable which field we put in, maybe displayField?
+ // Generate the link text and urls:
+
+ if(!empty($a['confirm'])) {
+ // Gather the default confirmation body text. By convention this is named
+ // [action].confirm in the operation.po file but can be overridden in the actions array.
+ $confirmKey = $a['action'].'.confirm';
+ $confirmTxt = __d('operation', $confirmKey, [$entity->id]);
+
+ // Gather the dialog text - we need to expand these (here) so we can provide the default confirmTxt when appropriate
+ $dialogBodyText = !empty($a['confirm']['dg_body_txt']) ? $a['confirm']['dg_body_txt'] : $confirmTxt;
+ $dialogTitle = !empty($a['confirm']['dg_title']) ? $a['confirm']['dg_title'] : $actionLabel;
+ $confirmButtonText = !empty($a['confirm']['dg_confirm_btn']) ? $a['confirm']['dg_confirm_btn'] : __d('operation','confirm');
+ $cancelButtonText = !empty($a['confirm']['dg_cancel_btn']) ? $a['confirm']['dg_cancel_btn'] : __d('operation','cancel');
+ $replacements = !empty($a['confirm']['dg_body_txt_replacements']) ? $a['confirm']['dg_body_txt_replacements'] : '';
+
$action_args['vv_actions'][] = array(
'order' => $actionOrder,
'icon' => $actionIcon,
- 'url' => 'javascript:void(0);',
- 'label' => __d('operation', $a['action']),
+ 'iconClass' => $actionIconClass,
+ 'url' => $actionUrl,
+ 'label' => $actionLabel,
'class' => !empty($actionClass) ? $actionClass . ' nospin' : 'nospin',
- 'onclick' => array(
- 'dg_bd_txt' => __d('operation', $confirmKey, [$entity->id]), // dialog body text
- 'dg_post_btn_array' => $actionPostBtnArray, // postButton array for building the postButton
- 'dg_url' => $actionUrl, // action url for building a unique ID
- 'dg_conf_btn' => __d('operation', 'confirm'), // dialog confirm button text
- 'dg_cancel_btn' => __d('operation', 'cancel'), // dialog cancel button text
- 'dg_title' => __d('operation', 'confirm'), // dialog box title
- 'dg_bd_txt_repl_str' => '' // dialog body text replacement strings
- ),
- );
- } elseif(!empty($a['controller'])) {
- // We're linking into a related controller
- $actionLabel = __d('controller', Inflector::camelize(Inflector::pluralize($a['controller'])), [99]);
- $actionUrl = $this->Url->build(
- ['controller' => $a['controller'],
- 'action' => $a['action'],
- '?' => [ $tableFK => $entity->id] ]
+ 'confirm' => [
+ 'dg_title' => $dialogTitle,
+ 'dg_body_txt' => $dialogBodyText,
+ 'dg_confirm_btn' => $confirmButtonText,
+ 'dg_cancel_btn' => $cancelButtonText,
+ 'dg_body_txt_replacements' => $replacements
+ ]
);
} else {
- $actionLabel = __d('operation', $a['action']);
- $actionUrl = $this->Url->build(['action' => $a['action'], $entity->id]);
- }
-
- // If a specific label is sent in the config, use it instead
- if(!empty($a['label'])) {
- $actionLabel = $a['label'];
+ // Set the action link configuration
+ $action_args['vv_actions'][] = array(
+ 'order' => $actionOrder,
+ 'icon' => $actionIcon,
+ 'iconClass' => $actionIconClass,
+ 'url' => $actionUrl,
+ 'label' => $actionLabel,
+ 'class' => $actionClass
+ );
}
-
- // Set the action link configuration
- $action_args['vv_actions'][] = array(
- 'order' => $actionOrder,
- 'icon' => $actionIcon,
- 'iconClass' => $actionIconClass,
- 'url' => $actionUrl,
- 'label' => $actionLabel,
- 'class' => $actionClass,
- 'onclick' => $actionOnClick
- );
}
}
diff --git a/app/templates/element/filter.php b/app/templates/element/filter.php
index a3f5098cb..c316e9e0f 100644
--- a/app/templates/element/filter.php
+++ b/app/templates/element/filter.php
@@ -92,8 +92,10 @@
diff --git a/app/templates/element/mveaCanvas.php b/app/templates/element/mveaCanvas.php
index ea76f0b0f..6645d2cd3 100644
--- a/app/templates/element/mveaCanvas.php
+++ b/app/templates/element/mveaCanvas.php
@@ -46,15 +46,13 @@
$actionIcon = !empty($a['icon']) ? $a['icon'] : $this->Menu->getMenuIcon('Default');
$actionIconClass = !empty($a['iconClass']) ? $a['iconClass'] : '';
$actionClass = !empty($a['class']) ? $a['class'] . ' nospin' : 'nospin';
- $actionUrl = $this->Url->build(
- [
- 'controller' => $a['controller'],
- 'action' => $a['action'],
- '?' => [
- $vv_entity_type . '_id' => $objId
- ]
+ $actionUrl = [
+ 'controller' => $a['controller'],
+ 'action' => $a['action'],
+ '?' => [
+ $vv_entity_type . '_id' => $objId
]
- );
+ ];
$actionLabel = __d('controller', Cake\Utility\Inflector::camelize($a['controller']), [1]);
$actionDataAttrs = [['data-cm-mveatype', $a['controller']]];
$action_args['vv_actions'][] = [
diff --git a/app/templates/element/subnavigation.php b/app/templates/element/subnavigation.php
index b4e2a4afa..69380138d 100644
--- a/app/templates/element/subnavigation.php
+++ b/app/templates/element/subnavigation.php
@@ -118,26 +118,23 @@
}
}
// delete
- $actionPostBtnArray = ['action' => 'delete', $curId];
- $actionUrl = $this->Url->build(['action' => 'delete', $curId]);
$action_args['vv_actions'][] = array(
'order' => $this->Menu->getMenuOrder('Delete'),
'icon' => $this->Menu->getMenuIcon('Delete'),
- 'url' => 'javascript:void(0);',
+ 'url' => ['action' => 'delete', $curId],
'label' => __d('operation', 'delete'),
'class' => 'deletebutton nospin',
- 'onclick' => array(
- 'dg_bd_txt' => __d(
+ 'confirm' => array(
+ 'dg_body_txt' => __d(
'operation',
'delete.confirm',
[$supertitle . ', ' . __d('information','entity.id',[$curId])]
),
'dg_post_btn_array' => $actionPostBtnArray,
- 'dg_url' => $actionUrl,
- 'dg_conf_btn' => __d('operation', 'remove'),
+ 'dg_confirm_btn' => __d('operation', 'remove'),
'dg_cancel_btn' => __d('operation', 'cancel'),
'dg_title' => __d('operation', 'remove'),
- 'dg_bd_txt_repl_str' => ''
+ 'dg_body_txt_replacements' => ''
)
);
?>
diff --git a/app/templates/layout/default.php b/app/templates/layout/default.php
index 2e4f07940..c9087c935 100644
--- a/app/templates/layout/default.php
+++ b/app/templates/layout/default.php
@@ -58,7 +58,6 @@
= $this->Html->css([
'bootstrap/bootstrap.min',
- 'select2/select2.min',
'co-color',
'co-base',
'co-responsive'
@@ -67,8 +66,7 @@
= $this->Html->script([
'bootstrap/bootstrap.bundle.min.js',
- 'jquery/jquery.min.js',
- 'select2/select2.min.js'
+ 'jquery/jquery.min.js'
]) . PHP_EOL ?>
diff --git a/app/templates/layout/iframe.php b/app/templates/layout/iframe.php
index 8ef538067..e3a3e1b35 100644
--- a/app/templates/layout/iframe.php
+++ b/app/templates/layout/iframe.php
@@ -58,7 +58,6 @@
= $this->Html->css([
'bootstrap/bootstrap.min',
- 'select2/select2.min',
'co-color',
'co-base',
'co-responsive'
@@ -67,8 +66,7 @@
= $this->Html->script([
'bootstrap/bootstrap.bundle.min.js',
- 'jquery/jquery.min.js',
- 'select2/select2.min.js'
+ 'jquery/jquery.min.js'
]) . PHP_EOL ?>
diff --git a/app/webroot/css/co-base.css b/app/webroot/css/co-base.css
index f0447caa9..a80b75fe4 100644
--- a/app/webroot/css/co-base.css
+++ b/app/webroot/css/co-base.css
@@ -756,9 +756,12 @@ ul.form-list li.alert-banner .co-alert {
background-color: transparent;
}
#content .top-filters legend .material-icons {
- font-size: 1.4em;
color: var(--cmg-color-headings);
}
+#content .top-filters legend .material-icons.top-filters-search-icon {
+ font-size: 1.4rem;
+ padding: 0 0.2rem 0 0.1rem;
+}
#content .top-filters legend button.cm-toggle .material-icons {
font-size: 34px;
line-height: 17px;
@@ -766,7 +769,7 @@ ul.form-list li.alert-banner .co-alert {
.top-filters fieldset {
clear: both;
position: relative;
- padding: 0.5em 0.5em 0;
+ padding: 0.4rem 0.5rem 0;
margin: 0;
background-color: var(--cmg-color-bg-001);
}
@@ -1550,12 +1553,15 @@ th, td {
th {
background-color: var(--cmg-color-bg-003);
}
+thead td.actions {
+ background-color: var(--cmg-color-bg-003);
+}
td {
border-bottom: 1px solid var(--cmg-color-bg-005);
}
th:first-child,
td:first-child {
- padding-left: 1.25em;
+ padding-left: 1rem;
}
table.list-mode th.actions:first-child,
table.list-mode td.actions:first-child {
@@ -1825,12 +1831,4 @@ html.dark-mode .btn-default:active {
footer {
text-align: center;
padding: 2em 2em 1em;
-}
-/* Select2 */
-.select2-container--default .select2-selection--single {
- border: 1px solid var(--cmg-color-bg-006);
- background-color: var(--cmg-color-body-bg);
-}
-.select2-container--default .select2-selection--single .select2-selection__placeholder {
- color: var(--cmg-color-txt-soft);
}
\ No newline at end of file
diff --git a/app/webroot/css/select2/select2.min.css b/app/webroot/css/select2/select2.min.css
deleted file mode 100644
index 7c18ad59d..000000000
--- a/app/webroot/css/select2/select2.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
diff --git a/app/webroot/js/comanage/comanage.js b/app/webroot/js/comanage/comanage.js
index 0dd271a1b..f57e94db1 100644
--- a/app/webroot/js/comanage/comanage.js
+++ b/app/webroot/js/comanage/comanage.js
@@ -67,18 +67,20 @@ function replaceTokens(text,replacements) {
return processedString;
}
-// Generate a dialog box confirming . On confirmation, click a DOM element referenced by .
+// Generate a dialog box confirming . If a clickId is supplied, on confirmation, click a DOM element referenced by .
// The clickId DOM element is intended to be a CakePHP postButton or postLink (which may be visually hidden).
-// txt - body text (string, required)
-// clickId - id of DOM element (string, required)
-// confirmbtxt - confirm button text (string, optional)
-// cancelbtxt - cancel button text (string, optional)
-// titletxt - dialog title text (string, optional)
+// txt - body text (string, required)
+// confirmUrl - url for confirm button (string, required)
+// clickId - id of DOM element (string, required)
+// confirmbtxt - confirm button text (string, optional)
+// cancelbtxt - cancel button text (string, optional)
+// titletxt - dialog title text (string, optional)
// tokenReplacements - strings to replace tokens in dialog body text (array, optional)
-function js_confirm_generic(txt, clickId, confirmbtxt, cancelbtxt, titletxt, tokenReplacements) {
+function js_confirm_generic(txt, confirmUrl, clickId, confirmbtxt, cancelbtxt, titletxt, tokenReplacements) {
var bodyText = txt;
- var clickId = clickId;
+ var confUrl = confirmUrl;
+ var clickId = (clickId != '' ? clickId : undefined);
var confbutton = confirmbtxt;
var cxlbutton = cancelbtxt;
var title = titletxt;
@@ -106,11 +108,16 @@ function js_confirm_generic(txt, clickId, confirmbtxt, cancelbtxt, titletxt, tok
// Set the body text of the dialog
$("#dialog-text").text(bodyText);
-
- // Set the dialog confirmation button to click the DOM
- // element referenced by the clickId
+
$("#dialog-confirm-button").click(function() {
- $("#" + clickId).click();
+ if(clickId !== undefined) {
+ // If we have a clickId, set the dialog confirmation button to click the DOM
+ // element referenced by it.
+ $("#" + clickId).click();
+ } else {
+ // Otherwise just redirect to the confirmation URL
+ location.href = confirmUrl;
+ }
});
// Override the button texts if set
diff --git a/app/webroot/js/select2/select2.min.js b/app/webroot/js/select2/select2.min.js
deleted file mode 100644
index 091d4b500..000000000
--- a/app/webroot/js/select2/select2.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
-!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.select2&&u.fn.select2.amd)var e=u.fn.select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,b;function w(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&b.test(e[s])&&(e[s]=e[s].replace(b,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t],e.removeAttribute("data-select2-id")},i}),e.define("select2/results",["jquery","./utils"],function(h,f){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return f.Extend(r,f.Observable),r.prototype.render=function(){var e=h('');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):ithis.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):h(t).append(i)},r}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&r.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r);var i=t.title||t.text;i?n.attr("title",i):n.removeAttr("title")}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html(''),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.isDisabled()){var t=i(this).parent(),n=l.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('×')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),t.on("open",function(){r.$search.attr("aria-controls",i),r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(){r._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var r=this;this._checkIfMaximumSelected(function(){e.call(r,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var r=this;this.current(function(e){var t=null!=e?e.length:0;0=r.maximumSelectionLength?r.trigger("results:message",{message:"maximumSelected",args:{maximum:r.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.attr("aria-controls",i),r.$search.trigger("focus"),window.setTimeout(function(){r.$search.trigger("focus")},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.val(""),r.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||r.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n(''),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),r._bindContainerResultHandlers(t)}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.select2){var a=["open","close","destroy"];i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1