mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-23 02:09:03 +02:00
Fixed possibility to create nested structure from the part edit page
This commit is contained in:
parent
d9e25d077d
commit
60446edd68
2 changed files with 23 additions and 28 deletions
|
@ -322,6 +322,11 @@ abstract class AbstractStructuralDBElement extends AttachmentContainingDBElement
|
||||||
|
|
||||||
$this->parent = $new_parent;
|
$this->parent = $new_parent;
|
||||||
|
|
||||||
|
//Add this element as child to the new parent
|
||||||
|
if (null !== $new_parent) {
|
||||||
|
$new_parent->getChildren()->add($this);
|
||||||
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,18 +345,28 @@ abstract class AbstractStructuralDBElement extends AttachmentContainingDBElement
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param static[]|Collection $elements
|
* Adds the given element as child to this element.
|
||||||
*
|
* @param static $child
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function setChildren($elements): self
|
public function addChild(self $child): self
|
||||||
{
|
{
|
||||||
if (!is_array($elements) && !$elements instanceof Collection) {
|
$this->children->add($child);
|
||||||
throw new InvalidArgumentException('$elements must be an array or Collection!');
|
//Children get this element as parent
|
||||||
}
|
$child->setParent($this);
|
||||||
|
return $this;
|
||||||
$this->children = $elements;
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the given element as child from this element.
|
||||||
|
* @param static $child
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function removeChild(self $child): self
|
||||||
|
{
|
||||||
|
$this->children->removeElement($child);
|
||||||
|
//Children has no parent anymore
|
||||||
|
$child->setParent(null);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,26 +54,6 @@ class StructuralEntityChoiceLoader extends AbstractChoiceLoader
|
||||||
return array_merge($tmp, $this->builder->typeToNodesList($this->options['class'], null));
|
return array_merge($tmp, $this->builder->typeToNodesList($this->options['class'], null));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public function loadChoicesForValues(array $values, callable $value = null)
|
|
||||||
{
|
|
||||||
$tmp = parent::loadChoicesForValues($values, $value);
|
|
||||||
|
|
||||||
if ($this->options['allow_add'] && empty($tmp)) {
|
|
||||||
if (count($values) > 1) {
|
|
||||||
throw new \InvalidArgumentException('Cannot add multiple entities at once.');
|
|
||||||
}
|
|
||||||
|
|
||||||
//Dont create a new entity for the empty option
|
|
||||||
if ($values[0] === "" || $values[0] === null) {
|
|
||||||
return $tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
return [$this->createNewEntitiesFromValue($values[0])[0]];
|
|
||||||
}
|
|
||||||
|
|
||||||
return $tmp;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public function createNewEntitiesFromValue(string $value): array
|
public function createNewEntitiesFromValue(string $value): array
|
||||||
{
|
{
|
||||||
if (!$this->options['allow_add']) {
|
if (!$this->options['allow_add']) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue