1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-18 20:41:16 +02:00

Update related to processwire/processwire-issues#1526 - prevent asmSelect for marking an item "pending delete" unless the item was already selected when the page rendered

This commit is contained in:
Ryan Cramer
2022-02-11 09:32:07 -05:00
parent e0fa2c32e3
commit 4258870aaa
3 changed files with 7 additions and 4 deletions

View File

@@ -3,7 +3,7 @@
/** /**
* AsmSelect is a sortable multiple-select Inputfield * AsmSelect is a sortable multiple-select Inputfield
* *
* Copyright (c) 2009-2020 by Ryan Cramer * Copyright (c) 2009-2022 by Ryan Cramer
* *
* @property bool $addable Can items be added to selection? (default=true) * @property bool $addable Can items be added to selection? (default=true)
* @property string $addItemTarget Where to place new selected items in list: top or bottom (default='bottom') * @property string $addItemTarget Where to place new selected items in list: top or bottom (default='bottom')
@@ -40,7 +40,7 @@ class InputfieldAsmSelect extends InputfieldSelectMultiple implements Inputfield
public static function getModuleInfo() { public static function getModuleInfo() {
return array( return array(
'title' => __('asmSelect', __FILE__), 'title' => __('asmSelect', __FILE__),
'version' => 202, 'version' => 203,
'summary' => __('Multiple selection, progressive enhancement to select multiple', __FILE__), // Module Summary 'summary' => __('Multiple selection, progressive enhancement to select multiple', __FILE__), // Module Summary
'permanent' => true, 'permanent' => true,
); );

View File

@@ -116,6 +116,9 @@
// initialize the alternate select multiple // initialize the alternate select multiple
if(options.deletable && !options.addable) options.hideDeleted = false; if(options.deletable && !options.addable) options.hideDeleted = false;
// identify which items were already selected in the original
$original.find('option[selected]').addClass('asmOriginalSelected');
// this loop ensures uniqueness, in case of existing asmSelects placed by ajax (1.0.3) // this loop ensures uniqueness, in case of existing asmSelects placed by ajax (1.0.3)
while($("#" + options.containerClass + index).length > 0) index++; while($("#" + options.containerClass + index).length > 0) index++;
@@ -789,7 +792,7 @@
var $O = $('#' + optionId); var $O = $('#' + optionId);
if(options.hideDeleted) { if(options.hideDeleted || !$O.hasClass('asmOriginalSelected')) {
if(typeof highlightItem == "undefined") highlightItem = true; if(typeof highlightItem == "undefined") highlightItem = true;

File diff suppressed because one or more lines are too long