getAttributeEditField() handels arrays of attr values propperly

This commit is contained in:
Uwe Steinmann 2025-02-28 17:53:54 +01:00
parent 86362c5284
commit 4ba5099569
2 changed files with 68 additions and 14 deletions

View File

@ -1966,6 +1966,15 @@ $(document).ready(function() {
echo self::getAttributeEditField($attrdef, $attribute, $fieldname, $norequire, $namepostfix, $alwaysmultiple); echo self::getAttributeEditField($attrdef, $attribute, $fieldname, $norequire, $namepostfix, $alwaysmultiple);
} /* }}} */ } /* }}} */
/**
* Return html code for an input/select field of an attribute
*
* The passed attribute ($attribute) can either be an object of type
* SeedDMS_Core_Attribute, scalar or an array. A scalar or array is
* passed when the method is called to create the search form. In that
* case $attribute has the value from the post data after submitting the
* search form.
*/
function getAttributeEditField($attrdef, $attribute, $fieldname='attributes', $norequire=false, $namepostfix='', $alwaysmultiple=false) { /* {{{ */ function getAttributeEditField($attrdef, $attribute, $fieldname='attributes', $norequire=false, $namepostfix='', $alwaysmultiple=false) { /* {{{ */
$dms = $this->params['dms']; $dms = $this->params['dms'];
$attr_id = $fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : ''); $attr_id = $fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : '');
@ -2002,10 +2011,19 @@ $(document).ready(function() {
$content .= $this->getDocumentChooserHtml("attr".$attrdef->getId(), $target, $attr_name); $content .= $this->getDocumentChooserHtml("attr".$attrdef->getId(), $target, $attr_name);
break; break;
case SeedDMS_Core_AttributeDefinition::type_user: case SeedDMS_Core_AttributeDefinition::type_user:
$target = $attribute ? $attribute->getValueAsArray() : [];
$objvalue = []; $objvalue = [];
foreach($target as $t) if($attribute) {
$objvalue[] = $t->getId(); if(is_object($attribute)) {
$target = $attribute->getValueAsArray();
foreach($target as $t)
$objvalue[] = $t->getId();
} elseif(is_array($attribute)) {
foreach($attribute as $t)
$objvalue[] = $t;
} else {
$objvalue[] = $attribute;
}
}
$users = $dms->getAllUsers(); $users = $dms->getAllUsers();
if($users) { if($users) {
$allowempty = $attrdef->getMinValues() == 0; $allowempty = $attrdef->getMinValues() == 0;
@ -2025,10 +2043,19 @@ $(document).ready(function() {
} }
break; break;
case SeedDMS_Core_AttributeDefinition::type_group: case SeedDMS_Core_AttributeDefinition::type_group:
$target = $attribute ? $attribute->getValueAsArray() : [];
$objvalue = []; $objvalue = [];
foreach($target as $t) if($attribute) {
$objvalue[] = $t->getId(); if(is_object($attribute)) {
$target = $attribute->getValueAsArray();
foreach($target as $t)
$objvalue[] = $t->getId();
} elseif(is_array($attribute)) {
foreach($attribute as $t)
$objvalue[] = $t;
} else {
$objvalue[] = $attribute;
}
}
$groups = $dms->getAllGroups(); $groups = $dms->getAllGroups();
if($groups) { if($groups) {
$allowempty = $attrdef->getMinValues() == 0; $allowempty = $attrdef->getMinValues() == 0;

View File

@ -1985,6 +1985,15 @@ $(document).ready(function() {
echo self::getAttributeEditField($attrdef, $attribute, $fieldname, $norequire, $namepostfix, $alwaysmultiple); echo self::getAttributeEditField($attrdef, $attribute, $fieldname, $norequire, $namepostfix, $alwaysmultiple);
} /* }}} */ } /* }}} */
/**
* Return html code for an input/select field of an attribute
*
* The passed attribute ($attribute) can either be an object of type
* SeedDMS_Core_Attribute, scalar or an array. A scalar or array is
* passed when the method is called to create the search form. In that
* case $attribute has the value from the post data after submitting the
* search form.
*/
function getAttributeEditField($attrdef, $attribute, $fieldname='attributes', $norequire=false, $namepostfix='', $alwaysmultiple=false) { /* {{{ */ function getAttributeEditField($attrdef, $attribute, $fieldname='attributes', $norequire=false, $namepostfix='', $alwaysmultiple=false) { /* {{{ */
$dms = $this->params['dms']; $dms = $this->params['dms'];
$attr_id = $fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : ''); $attr_id = $fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : '');
@ -2018,18 +2027,27 @@ $(document).ready(function() {
$content .= "<input type=\"text\" class=\"form-control\" id=\"".$attr_id."\" name=\"".$attr_name."\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '')." data-rule-number=\"true\"/>"; $content .= "<input type=\"text\" class=\"form-control\" id=\"".$attr_id."\" name=\"".$attr_name."\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '')." data-rule-number=\"true\"/>";
break; */ break; */
case SeedDMS_Core_AttributeDefinition::type_folder: case SeedDMS_Core_AttributeDefinition::type_folder:
$target = $attribute ? $attribute->getValue() : null; $target = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : null;
$content .= $this->getFolderChooserHtml("attr".$attrdef->getId(), M_READWRITE, -1, $target, $attr_name, false); $content .= $this->getFolderChooserHtml("attr".$attrdef->getId(), M_READWRITE, -1, $target, $attr_name, false);
break; break;
case SeedDMS_Core_AttributeDefinition::type_document: case SeedDMS_Core_AttributeDefinition::type_document:
$target = $attribute ? $attribute->getValue() : null; $target = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : null;
$content .= $this->getDocumentChooserHtml("attr".$attrdef->getId(), $target, $attr_name); $content .= $this->getDocumentChooserHtml("attr".$attrdef->getId(), $target, $attr_name);
break; break;
case SeedDMS_Core_AttributeDefinition::type_user: case SeedDMS_Core_AttributeDefinition::type_user:
$target = $attribute ? $attribute->getValueAsArray() : [];
$objvalue = []; $objvalue = [];
foreach($target as $t) if($attribute) {
$objvalue[] = $t->getId(); if(is_object($attribute)) {
$target = $attribute->getValueAsArray();
foreach($target as $t)
$objvalue[] = $t->getId();
} elseif(is_array($attribute)) {
foreach($attribute as $t)
$objvalue[] = $t;
} else {
$objvalue[] = $attribute;
}
}
$users = $dms->getAllUsers(); $users = $dms->getAllUsers();
if($users) { if($users) {
$allowempty = $attrdef->getMinValues() == 0; $allowempty = $attrdef->getMinValues() == 0;
@ -2049,10 +2067,19 @@ $(document).ready(function() {
} }
break; break;
case SeedDMS_Core_AttributeDefinition::type_group: case SeedDMS_Core_AttributeDefinition::type_group:
$target = $attribute ? $attribute->getValueAsArray() : [];
$objvalue = []; $objvalue = [];
foreach($target as $t) if($attribute) {
$objvalue[] = $t->getId(); if(is_object($attribute)) {
$target = $attribute->getValueAsArray();
foreach($target as $t)
$objvalue[] = $t->getId();
} elseif(is_array($attribute)) {
foreach($attribute as $t)
$objvalue[] = $t;
} else {
$objvalue[] = $attribute;
}
}
$groups = $dms->getAllGroups(); $groups = $dms->getAllGroups();
if($groups) { if($groups) {
$allowempty = $attrdef->getMinValues() == 0; $allowempty = $attrdef->getMinValues() == 0;