feat(main): Draggable blocks

This commit is contained in:
2026-08-12 15:39:07 +02:00
parent 1493081602
commit d0da05845a
8 changed files with 74 additions and 6 deletions
@@ -5,20 +5,23 @@ namespace Websmid\CustomHtml\Form\DataHandler;
use PrestaShop\PrestaShop\Core\Form\IdentifiableObject\DataHandler\FormDataHandlerInterface;
use Websmid\CustomHtml\Model\CustomHtmlBlock;
use Websmid\CustomHtml\Model\CustomHtmlFaq;
use Db;
use Validate;
final class CustomHtmlBlockDataHandler implements FormDataHandlerInterface
{
public function create(array $formData)
{
$idGroup = (int) $formData['id_ws_customhtml_group'];
$block = new CustomHtmlBlock();
$block->id_ws_customhtml_group = (int) $formData['id_ws_customhtml_group'];
$block->id_ws_customhtml_group = $idGroup;
$block->title = (string) $formData['title'];
$block->type = (string) $formData['type'];
$block->show_title = (int) $formData['show_title'];
$block->content = (string) $formData['content'];
$block->active = (int) $formData['active'];
$block->ordering = 0;
$block->ordering = $this->getNextOrdering($idGroup);
if (!$block->add()) {
return false;
@@ -53,6 +56,16 @@ final class CustomHtmlBlockDataHandler implements FormDataHandlerInterface
return true;
}
private function getNextOrdering(int $idGroup): int
{
$maxOrdering = Db::getInstance()->getValue(
'SELECT MAX(`ordering`) FROM `' . _DB_PREFIX_ . 'ws_customhtml`
WHERE `id_ws_customhtml_group` = ' . $idGroup
);
return $maxOrdering === false || $maxOrdering === null ? 0 : ((int) $maxOrdering + 1);
}
private function saveFaqs(int $idBlock, array $faqs): void
{
CustomHtmlFaq::deleteByBlockId($idBlock);