]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7003 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 15 Jul 2024 16:05:22 +0000 (18:05 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 15 Jul 2024 16:05:22 +0000 (18:05 +0200)
app/Fields/Badge.php [new file with mode: 0644]
app/Models/Badges/Assertion.php
app/Models/Badges/BadgeClass.php
app/Models/Badges/Base.php
resources/views/vendor/backpack/base/inc/sidebar_content.blade.php

diff --git a/app/Fields/Badge.php b/app/Fields/Badge.php
new file mode 100644 (file)
index 0000000..6cfa3f9
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Fields;
+
+use Cubist\Backpack\Magic\Fields\SelectFromModel;
+
+class Badge extends SelectFromModel
+{
+    public function __construct($attributes)
+    {
+        $attributes['optionsmodel'] = \App\Models\Badges\BadgeClass::class;
+        $attributes['attribute'] = 'name';
+        $attributes['optionsmodel_orderby'] = 'id';
+        $attributes['optionsmodel_orderby_way'] = 'desc';
+
+        parent::__construct($attributes);
+    }
+}
index 9c17d5afa51ba4381a40001ca8f60b9822d07ba4..5ff012be4bad7e803d17fbb293bfa1cfda7488f0 100644 (file)
@@ -2,7 +2,58 @@
 
 namespace App\Models\Badges;
 
-class Assertion
+use App\Fields\Badge;
+use Cubist\Backpack\Magic\Fields\Code;
+use Cubist\Backpack\Magic\Fields\Datetime;
+use Cubist\Backpack\Magic\Fields\Email;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Util\Files\Files;
+
+class Assertion extends Base
 {
+    protected $table = 'badges_assertion';
+    protected $_options = ['name' => '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;
+    }
 
 }
index e89038c5889d6138e16a2620cbd77e728b1f6aa6..a0b7823b4d2e7925a7b01958431bb466a8a268cf 100644 (file)
@@ -43,7 +43,7 @@ class BadgeClass extends Base
     /**
      * @return array
      */
-    protected function getPreviewData()
+    public function getPreviewData()
     {
         $l = ElearningTranslate::getLocaleTranslations($this->locale);
 
index f8be909b43a3a5c95838f0476227dc22ecb4be66..90fb421d03e06ccf46454c714c807b8399a61b3a 100644 (file)
@@ -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
index c0e85b20bbee4a34d42fc7dc245c79fd26736336..68ed51fc1ccd7947aad7c0fa2d11581c35d63922 100644 (file)
                     <li class="nav-item"><a class="nav-link" href="{{ backpack_url('badge-issuer') }}"><i
                                 class="las la-university nav-icon"></i> {{__('Emetteurs')}}</a></li>
                 @endcan
+                @can('badge-assertion:read')
+                    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('badge-assertion') }}"><i
+                                class="las la-graduation-cap nav-icon"></i> {{__('Badges délivrés')}}</a></li>
+                @endcan
             @endcanany
         </ul>
     </li>