diff --git a/src/Entity/MetaTableTypeInterface.php b/src/Entity/MetaTableTypeInterface.php
index 9b7bf9d2..dc7c62f3 100644
--- a/src/Entity/MetaTableTypeInterface.php
+++ b/src/Entity/MetaTableTypeInterface.php
@@ -163,4 +163,19 @@ interface MetaTableTypeInterface
* @return array
*/
public function getOptions(): array;
+
+ /**
+ * Sets the weight order.
+ *
+ * @param int $order
+ * @return MetaTableTypeInterface
+ */
+ public function setOrder(int $order): MetaTableTypeInterface;
+
+ /**
+ * Returns the weight order.
+ *
+ * @return int
+ */
+ public function getOrder(): int;
}
diff --git a/src/Entity/MetaTableTypeTrait.php b/src/Entity/MetaTableTypeTrait.php
index 803e8a10..5562f86b 100644
--- a/src/Entity/MetaTableTypeTrait.php
+++ b/src/Entity/MetaTableTypeTrait.php
@@ -89,6 +89,10 @@ trait MetaTableTypeTrait
* @var array
*/
private $options = [];
+ /**
+ * @var int
+ */
+ private $order = 0;
public function getName(): ?string
{
@@ -216,6 +220,7 @@ trait MetaTableTypeTrait
->setIsVisible($meta->isVisible())
->setLabel($meta->getLabel())
->setOptions($meta->getOptions())
+ ->setOrder($meta->getOrder())
;
return $this;
@@ -249,6 +254,18 @@ trait MetaTableTypeTrait
return $this->options;
}
+ public function getOrder(): int
+ {
+ return $this->order;
+ }
+
+ public function setOrder(int $order): MetaTableTypeInterface
+ {
+ $this->order = $order;
+
+ return $this;
+ }
+
public function __clone()
{
if ($this->id) {
diff --git a/templates/activity/details.html.twig b/templates/activity/details.html.twig
index 5766a5d3..27a92187 100644
--- a/templates/activity/details.html.twig
+++ b/templates/activity/details.html.twig
@@ -67,7 +67,7 @@
{% endif %}
- {% for metaField in activity.visibleMetaFields %}
+ {% for metaField in activity.visibleMetaFields|sort((a, b) => a.order <=> b.order) %}
| {{ metaField.label|trans }} |
{{ widgets.form_type_value(metaField.type, metaField.value, activity) }} |
diff --git a/templates/activity/edit.html.twig b/templates/activity/edit.html.twig
index 8ac42476..05191580 100644
--- a/templates/activity/edit.html.twig
+++ b/templates/activity/edit.html.twig
@@ -36,7 +36,9 @@
{% endif %}
{{ form_row(form.visible) }}
{% if form.metaFields is defined and form.metaFields is not empty %}
- {{ form_row(form.metaFields) }}
+ {% for meta in form.metaFields|sort((a, b) => a.vars.data.order <=> b.vars.data.order) %}
+ {{ form_row(meta) }}
+ {% endfor %}
{% endif %}
{% if form.create_more is defined and app.request.xmlHttpRequest %}
diff --git a/templates/customer/details.html.twig b/templates/customer/details.html.twig
index 0a939ff6..bc5584cf 100644
--- a/templates/customer/details.html.twig
+++ b/templates/customer/details.html.twig
@@ -111,7 +111,7 @@
{% endif %}
{% endif %}
- {% for metaField in customer.visibleMetaFields %}
+ {% for metaField in customer.visibleMetaFields|sort((a, b) => a.order <=> b.order) %}
| {{ metaField.label|trans }} |
{{ widgets.form_type_value(metaField.type, metaField.value, customer) }} |
diff --git a/templates/customer/edit.html.twig b/templates/customer/edit.html.twig
index 36917aec..81457a9e 100644
--- a/templates/customer/edit.html.twig
+++ b/templates/customer/edit.html.twig
@@ -79,7 +79,9 @@
{% endif %}
{{ form_row(form.visible) }}
{% if form.metaFields is defined and form.metaFields is not empty %}
- {{ form_row(form.metaFields) }}
+ {% for meta in form.metaFields|sort((a, b) => a.vars.data.order <=> b.vars.data.order) %}
+ {{ form_row(meta) }}
+ {% endfor %}
{% endif %}
{{ form_widget(form) }}
{% endblock %}
diff --git a/templates/project/details.html.twig b/templates/project/details.html.twig
index fc920175..addcbfd0 100644
--- a/templates/project/details.html.twig
+++ b/templates/project/details.html.twig
@@ -86,7 +86,7 @@
{% endif %}
- {% for metaField in project.visibleMetaFields %}
+ {% for metaField in project.visibleMetaFields|sort((a, b) => a.order <=> b.order) %}
| {{ metaField.label|trans }} |
{{ widgets.form_type_value(metaField.type, metaField.value, project) }} |
diff --git a/templates/project/edit.html.twig b/templates/project/edit.html.twig
index 0a74ff00..3952ca36 100644
--- a/templates/project/edit.html.twig
+++ b/templates/project/edit.html.twig
@@ -51,7 +51,9 @@
{% endif %}
{{ form_row(form.visible) }}
{% if form.metaFields is defined and form.metaFields is not empty %}
- {{ form_row(form.metaFields) }}
+ {% for meta in form.metaFields|sort((a, b) => a.vars.data.order <=> b.vars.data.order) %}
+ {{ form_row(meta) }}
+ {% endfor %}
{% endif %}
{% if form.create_more is defined and app.request.xmlHttpRequest %}
diff --git a/tests/Entity/AbstractMetaEntityTest.php b/tests/Entity/AbstractMetaEntityTest.php
index e2bacd88..c801ec3d 100644
--- a/tests/Entity/AbstractMetaEntityTest.php
+++ b/tests/Entity/AbstractMetaEntityTest.php
@@ -37,6 +37,7 @@ abstract class AbstractMetaEntityTest extends TestCase
self::assertEmpty($sut->getOptions());
self::assertFalse($sut->isVisible());
self::assertFalse($sut->isRequired());
+ self::assertEquals(0, $sut->getOrder());
}
public function testSetterAndGetter()
@@ -65,6 +66,9 @@ abstract class AbstractMetaEntityTest extends TestCase
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->setType(DateTimePickerType::class));
self::assertEquals(DateTimePickerType::class, $sut->getType());
+ self::assertInstanceOf(MetaTableTypeInterface::class, $sut->setOrder(7));
+ self::assertEquals(7, $sut->getOrder());
+
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->addConstraint(new Length(['max' => 10])));
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->addConstraint(new NotNull([])));
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->addConstraint(new NotBlank([])));
@@ -112,7 +116,8 @@ abstract class AbstractMetaEntityTest extends TestCase
->setType('blub2')
->setEntity($entity2)
->setIsRequired(true)
- ->setisVisible(true)
+ ->setIsVisible(true)
+ ->setOrder(93)
->setConstraints([new NotBlank(), new Length(['min' => 1])])
->setOptions(['foo1' => 'bar1'])
;
@@ -123,6 +128,7 @@ abstract class AbstractMetaEntityTest extends TestCase
self::assertEquals('bar', $meta1->getValue());
self::assertEquals('blub2', $meta1->getType());
self::assertEquals('TRALALA', $meta1->getLabel());
+ self::assertEquals(93, $meta1->getOrder());
self::assertTrue($meta1->isRequired());
self::assertTrue($meta1->isVisible());
self::assertSame($entity1, $meta1->getEntity());