From 0133e223c7e94b81710db02394b17d96de4ba59f Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Mon, 15 Jul 2024 18:05:22 +0200 Subject: [PATCH] wip #7003 @1.5 --- app/Fields/Badge.php | 18 +++++++ app/Models/Badges/Assertion.php | 53 ++++++++++++++++++- app/Models/Badges/BadgeClass.php | 2 +- app/Models/Badges/Base.php | 5 +- .../base/inc/sidebar_content.blade.php | 4 ++ 5 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 app/Fields/Badge.php diff --git a/app/Fields/Badge.php b/app/Fields/Badge.php new file mode 100644 index 000000000..6cfa3f930 --- /dev/null +++ b/app/Fields/Badge.php @@ -0,0 +1,18 @@ + 'badge-assertion', + 'singular' => 'assertion', + 'plural' => 'assertions']; + + protected static $_permissionBase = 'badge-assertion'; + + + protected static $_ownerAttribute = null; + + public function setFields() + { + parent::setFields(); + + $this->addField('firstname', Text::class, __('Prénom')); + $this->addField('lastname', Text::class, __('Nom')); + $this->addField('email', Email::class, __('E-mail'), ['column' => true]); + $this->addField('created_at', Datetime::class, __('Délivré le'), ['column' => true]); + $this->addField('badge', Badge::class, __('Badge'), ['column' => true]); + } + + public function getAssertionJSON() + { + + } + + public function onSaved(): bool + { + $res = parent::onSaved(); + /** @var BadgeClass $badge */ + $badge = BadgeClass::withoutGlobalScopes()->find($this->badge); + $d = $badge->getPreviewData(); + $d['earner'] = $this->firstname . ' ' . $this->lastname; + $d['date'] = (new \DateTime($this->created_at))->format('Y-m-d'); + $image = BadgeClass::generateImage($d); + + $dest = Files::mkdir(protected_path('badge/assertions')) . $this->uid . '.png'; + + $im = new \Imagick($image); + $im->setImageProperty('openbadges', 'https://toolbox.fluidbook.com/ob/assertion/' . $this->uid); + $im->writeImage($dest); + + return $res; + } } diff --git a/app/Models/Badges/BadgeClass.php b/app/Models/Badges/BadgeClass.php index e89038c58..a0b7823b4 100644 --- a/app/Models/Badges/BadgeClass.php +++ b/app/Models/Badges/BadgeClass.php @@ -43,7 +43,7 @@ class BadgeClass extends Base /** * @return array */ - protected function getPreviewData() + public function getPreviewData() { $l = ElearningTranslate::getLocaleTranslations($this->locale); diff --git a/app/Models/Badges/Base.php b/app/Models/Badges/Base.php index f8be909b4..90fb421d0 100644 --- a/app/Models/Badges/Base.php +++ b/app/Models/Badges/Base.php @@ -4,7 +4,6 @@ namespace App\Models\Badges; use App\Models\Base\ToolboxModel; use Cubist\Backpack\Magic\Fields\HiddenVisible; -use hollodotme\FastCGI\SocketConnections\Defaults; class Base extends ToolboxModel { @@ -19,7 +18,9 @@ class Base extends ToolboxModel { parent::setFields(); $this->addField('uid', HiddenVisible::class, __('UID'), ['column' => true, 'unique' => true]); - $this->addOwnerField(); + if(null!==static::$_ownerAttribute) { + $this->addOwnerField(); + } } public function onSaving(): bool diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php index c0e85b20b..68ed51fc1 100644 --- a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -110,6 +110,10 @@ @endcan + @can('badge-assertion:read') + + @endcan @endcanany -- 2.39.5