Added support to disable a form, making it readonly

This commit is contained in:
Matias Griese 2021-10-22 15:07:42 +03:00
parent 8b0a6906c7
commit 715477586c
4 changed files with 40 additions and 0 deletions

View File

@ -1,6 +1,8 @@
# v1.7.24
## mm/dd/2021
1. [](#new)
* Added support to disable a form, making it readonly
3. [](#bugfix)
* Fixed a bug in `PermissionsReader` in PHP 7.3
* Fixed `session_store_active` language option (#3464)

View File

@ -15,6 +15,7 @@ use Grav\Common\Data\Blueprint;
use Grav\Common\Data\Data;
use Grav\Common\Grav;
use Grav\Common\Twig\Twig;
use Grav\Common\Utils;
use Grav\Framework\Flex\Interfaces\FlexDirectoryFormInterface;
use Grav\Framework\Flex\Interfaces\FlexFormInterface;
use Grav\Framework\Form\Interfaces\FormFlashInterface;
@ -94,9 +95,14 @@ class FlexDirectoryForm implements FlexDirectoryFormInterface, JsonSerializable
$uniqueId = md5($directory->getFlexType() . '-directory-' . $this->name);
}
$this->setUniqueId($uniqueId);
$this->setFlashLookupFolder($directory->getDirectoryBlueprint()->get('form/flash_folder') ?? 'tmp://forms/[SESSIONID]');
$this->form = $options['form'] ?? null;
if (Utils::isPositive($this->items['disabled'] ?? $this->form['disabled'] ?? false)) {
$this->disable();
}
$this->initialize();
}

View File

@ -15,6 +15,7 @@ use Grav\Common\Data\Blueprint;
use Grav\Common\Data\Data;
use Grav\Common\Grav;
use Grav\Common\Twig\Twig;
use Grav\Common\Utils;
use Grav\Framework\Flex\Interfaces\FlexFormInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectFormInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
@ -125,10 +126,15 @@ class FlexForm implements FlexObjectFormInterface, JsonSerializable
$uniqueId = md5($uniqueId);
}
$this->setUniqueId($uniqueId);
$directory = $object->getFlexDirectory();
$this->setFlashLookupFolder($options['flash_folder'] ?? $directory->getBlueprint()->get('form/flash_folder') ?? 'tmp://forms/[SESSIONID]');
$this->form = $options['form'] ?? null;
if (Utils::isPositive($this->items['disabled'] ?? $this->form['disabled'] ?? false)) {
$this->disable();
}
if (!empty($options['reset'])) {
$this->getFlash()->delete();
}

View File

@ -57,6 +57,8 @@ trait FormTrait
private $name;
/** @var string */
private $id;
/** @var bool */
private $enabled = true;
/** @var string */
private $uniqueid;
/** @var string */
@ -90,6 +92,30 @@ trait FormTrait
$this->id = $id;
}
/**
* @return void
*/
public function disable(): void
{
$this->enabled = false;
}
/**
* @return void
*/
public function enable(): void
{
$this->enabled = true;
}
/**
* @return bool
*/
public function isEnabled(): bool
{
return $this->enabled;
}
/**
* @return string
*/