]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7003 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 11 Jul 2024 17:39:31 +0000 (19:39 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 11 Jul 2024 17:39:31 +0000 (19:39 +0200)
app/Fields/BadgeIssuer.php [new file with mode: 0644]
app/Models/Badges/Assertion.php [new file with mode: 0644]
app/Models/Badges/BadgeClass.php [new file with mode: 0644]
app/Models/Badges/Base.php [new file with mode: 0644]
app/Models/Badges/Issuer.php [new file with mode: 0644]
resources/badge/translate.js [new file with mode: 0644]
resources/views/vendor/backpack/base/inc/sidebar_content.blade.php

diff --git a/app/Fields/BadgeIssuer.php b/app/Fields/BadgeIssuer.php
new file mode 100644 (file)
index 0000000..20f9795
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Fields;
+
+use Cubist\Backpack\Magic\Fields\SelectFromModel;
+
+class BadgeIssuer extends SelectFromModel
+{
+    public function __construct($attributes)
+    {
+        $attributes['optionsmodel'] = \App\Models\Badges\Issuer::class;
+        $attributes['attribute'] = 'name';
+        $attributes['optionsmodel_orderby'] = 'id';
+        $attributes['optionsmodel_orderby_way'] = 'desc';
+
+        parent::__construct($attributes);
+    }
+}
diff --git a/app/Models/Badges/Assertion.php b/app/Models/Badges/Assertion.php
new file mode 100644 (file)
index 0000000..9c17d5a
--- /dev/null
@@ -0,0 +1,8 @@
+<?php
+
+namespace App\Models\Badges;
+
+class Assertion
+{
+
+}
diff --git a/app/Models/Badges/BadgeClass.php b/app/Models/Badges/BadgeClass.php
new file mode 100644 (file)
index 0000000..8198139
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Models\Badges;
+
+use App\Fields\BadgeIssuer;
+use Cubist\Backpack\Magic\Fields\Files;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Fields\Textarea;
+
+class BadgeClass extends Base
+{
+    protected $table = 'badges_class';
+    protected $_options = ['name' => 'badge-class',
+        'singular' => 'badge',
+        'plural' => 'badges'];
+
+    protected static $_permissionBase = 'badge-class';
+
+    public function setFields()
+    {
+        parent::setFields();
+        $this->addField('issuer', BadgeIssuer::class, __('Émetteur'), ['column' => true]);
+        $this->addField('name', Text::class, __('Nom du certificat'), ['column' => true]);
+        $this->addField('area', Text::class, __('Domaine de formation'));
+        $this->addField('description', Textarea::class, __('Description du certificat'), ['hint' => __('Description de la formation. Sera intégré dans les métadonnées du certificat, mais invisible dans l\'image')]);
+        $this->addField('template', Files::class, __('Template du badge'));
+    }
+}
diff --git a/app/Models/Badges/Base.php b/app/Models/Badges/Base.php
new file mode 100644 (file)
index 0000000..f8be909
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Models\Badges;
+
+use App\Models\Base\ToolboxModel;
+use Cubist\Backpack\Magic\Fields\HiddenVisible;
+use hollodotme\FastCGI\SocketConnections\Defaults;
+
+class Base extends ToolboxModel
+{
+    protected $_enableTrackNonDefaultValues = false;
+    protected $_enableBulk = false;
+    protected $_enableRevisions = false;
+
+    /**
+     * @throws \Exception
+     */
+    public function setFields()
+    {
+        parent::setFields();
+        $this->addField('uid', HiddenVisible::class, __('UID'), ['column' => true, 'unique' => true]);
+        $this->addOwnerField();
+    }
+
+    public function onSaving(): bool
+    {
+        if (!$this->uid) {
+            $this->uid = substr(md5(uniqid()), 0, 12);
+        }
+        return parent::onSaving();
+    }
+
+}
diff --git a/app/Models/Badges/Issuer.php b/app/Models/Badges/Issuer.php
new file mode 100644 (file)
index 0000000..ed96ff7
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Models\Badges;
+
+use Cubist\Backpack\Magic\Fields\Images;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Fields\URL;
+
+class Issuer extends Base
+{
+    protected $table = 'badges_issuer';
+    protected $_options = ['name' => 'badge-issuer',
+        'singular' => 'issuer',
+        'plural' => 'issuers'];
+
+    protected static $_permissionBase = 'badge-issuer';
+
+    public function setFields()
+    {
+        parent::setFields();
+
+        $this->addField('name', Text::class, __('Nom de l\'émetteur'), ['column' => true]);
+        $this->addField('url', URL::class, __('URL'));
+        $this->addField('logo', Images::class, __('Logo'));
+
+
+    }
+}
diff --git a/resources/badge/translate.js b/resources/badge/translate.js
new file mode 100644 (file)
index 0000000..1985c52
--- /dev/null
@@ -0,0 +1,4 @@
+/*
+__('Réussi')
+
+ */
index 9468153d33900080cae18123a84a5333743715a1..c0e85b20bbee4a34d42fc7dc245c79fd26736336 100644 (file)
         });
     </script>
 @endpush
-@if(config('app.env') !== 'ysl')
-    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('dashboard') }}"><i
-                class='nav-icon la la-dashboard'></i>{{ trans('backpack::base.dashboard') }}
-        </a></li>
-    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('tasks') }}"><i
-                class='nav-icon la la-bell'></i>{{ __('Notifications') }}
-        </a></li>
 
+<li class="nav-item"><a class="nav-link" href="{{ backpack_url('dashboard') }}"><i
+            class='nav-icon la la-dashboard'></i>{{ trans('backpack::base.dashboard') }}
+    </a></li>
+<li class="nav-item"><a class="nav-link" href="{{ backpack_url('tasks') }}"><i
+            class='nav-icon la la-bell'></i>{{ __('Notifications') }}
+    </a></li>
 
-    @can('files:read')
-        <li class="nav-item"><a class="nav-link" href="{{ backpack_url('file') }}"><i
-                    class='nav-icon las la-cloud'></i>{{ __('Partage de fichiers') }}
-            </a></li>
-    @endcan
 
-    @canany(['quiz:read','quiztranslation:read','elearning_media:read'])
-        <li {!! sidebarState('elearning',true) !!}><a class='nav-link nav-dropdown-toggle' href='#'><i
-                    class='nav-icon la la-chalkboard-teacher'></i>{{__('e-Learning')}}</a>
-            <ul class='nav-dropdown-items'>
-                @can('quiz:read')
-                    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('quiz') }}"><i
-                                class="la la-question nav-icon"></i> {{__('Quiz')}}</a></li>
-                @endcan
-                @can('quiz-theme:read')
-                    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('quiz-theme') }}"><i
-                                class="la la-palette nav-icon"></i> {{__('Thèmes')}}</a></li>
-                @endcan
+@can('files:read')
+    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('file') }}"><i
+                class='nav-icon las la-cloud'></i>{{ __('Partage de fichiers') }}
+        </a></li>
+@endcan
+
+@canany(['quiz:read','quiztranslation:read','elearning_media:read','badge-issuer:read','badge-assertion:read','badge-class:read'])
+    <li {!! sidebarState('elearning',true) !!}><a class='nav-link nav-dropdown-toggle' href='#'><i
+                class='nav-icon la la-chalkboard-teacher'></i>{{__('e-Learning')}}</a>
+        <ul class='nav-dropdown-items'>
+            @can('quiz:read')
+                <li class="nav-item"><a class="nav-link" href="{{ backpack_url('quiz') }}"><i
+                            class="la la-question nav-icon"></i> {{__('Quiz')}}</a></li>
+            @endcan
+            @can('quiz-theme:read')
+                <li class="nav-item"><a class="nav-link" href="{{ backpack_url('quiz-theme') }}"><i
+                            class="la la-palette nav-icon"></i> {{__('Thèmes')}}</a></li>
+            @endcan
+            <li class="nav-divider"></li>
+            @can('elearning-media:read')
+                <li class="nav-item"><a class="nav-link" href="{{ backpack_url('elearning-media') }}"><i
+                            class="la la-photo-video nav-icon"></i> {{__('Media')}}</a></li>
+            @endcan
+            @can('elearning-package:read')
+                <li class="nav-item"><a class="nav-link" href="{{ backpack_url('elearning-package') }}"><i
+                            class="la la-cubes nav-icon"></i> {{__('Package')}}</a></li>
+            @endcan
+
+            @can('quiztranslation:read')
+                <li class="nav-item"><a class="nav-link" href="{{ backpack_url('elearning-translate') }}"><i
+                            class="la la-language nav-icon"></i> {{__('Traductions')}}</a></li>
+            @endcan
+            @canany(['badge-issuer:read','badge-assertion:read','badge-class:read'])
                 <li class="nav-divider"></li>
-                @can('elearning-media:read')
-                    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('elearning-media') }}"><i
-                                class="la la-photo-video nav-icon"></i> {{__('Media')}}</a></li>
+                @can('badge-class:read')
+                    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('badge-class') }}"><i
+                                class="las la-certificate nav-icon"></i> {{__('Badges')}}</a></li>
                 @endcan
-                @can('elearning-package:read')
-                    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('elearning-package') }}"><i
-                                class="la la-cubes nav-icon"></i> {{__('Package')}}</a></li>
+                @can('badge-issuer:read')
+                    <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
+            @endcanany
+        </ul>
+    </li>
+@endcanany
 
-                @can('quiztranslation:read')
-                    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('elearning-translate') }}"><i
-                                class="la la-language nav-icon"></i> {{__('Traductions')}}</a></li>
-                @endcan
-            </ul>
-        </li>
-    @endcanany
-@endif
 
 @canany(['fluidbook-quote:read','signature:read','fluidbook-theme:read','fluidbook-iconset:read','fluibook-translate:write','fluidbook-publication:read'])
     <li {!! sidebarState('fluidbook',true) !!}><a class='nav-link nav-dropdown-toggle' href='#'><i