]> _ Git - fluidbook-toolbox.git/commitdiff
wait #5990 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 17 Nov 2023 10:24:32 +0000 (11:24 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 17 Nov 2023 10:24:32 +0000 (11:24 +0100)
app/Fluidbook/Compiler/Accessibility.php
app/Fluidbook/Compiler/Links.php
app/Models/FluidbookHealthIssues.php
public/packages/fluidbook/toolbox/css/audit.css.map
public/packages/fluidbook/toolbox/css/audit.less
public/packages/fluidbook/toolbox/css/style.less
public/packages/fluidbook/toolbox/css/variables.css [new file with mode: 0644]
public/packages/fluidbook/toolbox/css/variables.css.map [new file with mode: 0644]
public/packages/fluidbook/toolbox/css/variables.less [new file with mode: 0644]
resources/views/fluidbook_publication/audit.blade.php
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/audit.blade.php

index 964cdee884d3d761f49cba6299d7885f08482235..a5ab4183d9921be66992163b5c9e09f118e9318f 100644 (file)
@@ -4,6 +4,7 @@ namespace App\Fluidbook\Compiler;
 
 use Cubist\Util\Files\Files;
 use Cubist\Util\Text;
+use Exception;
 use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
 
 trait Accessibility
index 9cae18cb91262287e50f0a878cdc41a56de5aa71..cb21d421ddbb7c28618cf9081301211715dcabe5 100644 (file)
@@ -246,7 +246,7 @@ trait Links
 
             if ($linkData['type'] == Link::SHOWLINK && $linkData['target'] !== 'hide') {
                 $ids = explode(',', str_replace(' ', '', $linkData['to']));
-                $close = ($linkData['close_button'] && $linkData['close_button'] !== 'none');
+                $close = (isset($linkData['close_button']) && $linkData['close_button'] && $linkData['close_button'] !== 'none');
                 foreach ($ids as $id) {
                     $show = (str_starts_with($id, '-'));
                     $id = trim($id, '+- ');
index 83a5775ac463e2c2942f7beebe06b0051422e758..f93fc726c9e254eba124d916f4fc2bc5ffb901b9 100644 (file)
@@ -7,15 +7,16 @@ use App\Models\Base\ToolboxModel;
 use Cubist\Backpack\Magic\Fields\Integer;
 use Cubist\Backpack\Magic\Fields\Text;
 use Cubist\Backpack\Magic\Fields\Textarea;
+use Illuminate\Support\Facades\Cache;
 
 class FluidbookHealthIssues extends ToolboxModel
 {
     const TYPE_MISSING_FILE = 1;
     const TYPE_QRCODE_NOT_READABLE = 2;
 
-    const CRIT_ERROR = 'error';
-    const CRIT_WARNING = 'warning';
-    const CRIT_INFO = 'info';
+    const CRIT_ERROR = 5;
+    const CRIT_WARNING = 3;
+    const CRIT_INFO = 2;
 
     protected $table = 'fluidbook_health_issue';
     protected $_options = ['name' => 'fluidbook-health',
@@ -29,6 +30,7 @@ class FluidbookHealthIssues extends ToolboxModel
         parent::setFields();
 
         $this->addField('fluidbook', FluidbookID::class, __('Fluidbook'));
+        $this->addField('criticality', Integer::class, __('Criticité'));
         $this->addField('type', Integer::class, __('Type'));
         $this->addField('data', Textarea::class, __('Détails'));
         $this->addField('count', Integer::class, __('Nombre d\'occurences'));
@@ -39,27 +41,35 @@ class FluidbookHealthIssues extends ToolboxModel
         if (is_array($data)) {
             $data = json_encode($data);
         }
+        $d = static::getTypeData($fluidbookId);
         $issue = self::withoutGlobalScopes()->where('fluidbook', $fluidbookId)->where('type', $type)->where('data', $data)->first();
+        $crit = $d[$type]['criticality'];
         if (!$issue) {
-            $issue = new self(['fluidbook' => $fluidbookId, 'type' => $type, 'data' => $data, 'count' => 0]);
+            $issue = new self(['criticality' => $crit, 'fluidbook' => $fluidbookId, 'type' => $type, 'data' => $data, 'count' => 0]);
         }
         $issue->count++;
         $issue->save();
+
+        $has = static::hasIssue($fluidbookId);
+
+        if ($has === false || $has < $crit) {
+            Cache::set('audit_fluidbook_hasissue_' . $fluidbookId, $crit);
+        }
     }
 
 
-    public static function getIssues($fluidbookId)
+    protected static function getTypeData($fluidbookId)
     {
         /*
-         * __('Le chemin ":path" est introuvable')
-         * __('Le QRcode du lien :uid (page :page) n\'a pas pu être décodé')
-         */
-
-        $d = [
+ * __('Le chemin ":path" est introuvable')
+ * __('Le QRcode du lien :uid (page :page) n\'a pas pu être décodé')
+ */
+        return [
             static::TYPE_MISSING_FILE =>
                 [
                     'summary' => __('Erreur 404'),
-                    'criticality' => self::CRIT_ERROR, 'text' => 'Le chemin ":path" est introuvable',
+                    'criticality' => self::CRIT_ERROR,
+                    'text' => 'Le chemin ":path" est introuvable',
 
                 ],
             static::TYPE_QRCODE_NOT_READABLE =>
@@ -72,6 +82,14 @@ class FluidbookHealthIssues extends ToolboxModel
                 ],
         ];
 
+
+    }
+
+
+    public static function getIssues($fluidbookId)
+    {
+        $d = static::getTypeData($fluidbookId);
+
         $issues = static::withoutGlobalScopes()->where('fluidbook', $fluidbookId)->orderBy('updated_at', 'DESC')->get();
         $res = [];
         foreach ($issues as $issue) {
@@ -98,5 +116,17 @@ class FluidbookHealthIssues extends ToolboxModel
     public static function deleteIssues($fluidbookId)
     {
         static::withoutGlobalScopes()->where('fluidbook', $fluidbookId)->forceDelete();
+        Cache::set('audit_fluidbook_hasissue_' . $fluidbookId, false);
+    }
+
+    public static function hasIssue($fluidbookId)
+    {
+        return Cache::rememberForever('audit_fluidbook_hasissue_' . $fluidbookId, function () use ($fluidbookId) {
+            try {
+                return static::withoutGlobalScopes()->where('fluidbook', $fluidbookId)->orderBy('criticality', 'ASC')->firstOrFail()->criticality;
+            } catch (\Exception $e) {
+                return 0;
+            }
+        });
     }
 }
index 2a0b656b1933ff23c72b4957f7e17fba05285fec..e6492ef1e590142c278c48565fd7a371d4e6ccf8 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["audit.less"],"names":[],"mappings":"AAAA;EACI,gBAAA;;AAGJ;AAAwB;EACpB,eAAA;;AAGJ;EACI,WAAA;;AAGJ;EACI,cAAA;;AAGJ;EACI,kBAAA;EACA,eAAA;EACA,gBAAA","file":"audit.css"}
\ No newline at end of file
+{"version":3,"sources":["audit.less"],"names":[],"mappings":"AAEA;EACI,gBAAA;;AAGJ;AAAwB;EACpB,eAAA;;AAGJ;EACI,WAAA;;AAGJ;EACI,cAAA;;AAGJ;EACI,kBAAA;EACA,eAAA;EACA,gBAAA","file":"audit.css"}
\ No newline at end of file
index 6b0dd0ee7ad03e8c56d914a7764d6d0b759cc851..b31cec7ea6d762e47ef85545259a47a2c5b41664 100644 (file)
@@ -1,3 +1,5 @@
+@import 'variables';
+
 h2 {
     margin-top: 30px;
 }
@@ -7,14 +9,14 @@ h2 {
 }
 
 .la-exclamation-circle {
-    color: #c00;
+    color: @error;
 }
 
 .la-exclamation-triangle {
-    color: #F74D07;
+    color: @warning;
 }
 
-.message{
+.message {
     text-align: center;
     font-size: 130%;
     margin-top: 60px;
index b1aaf4c2b7d78f734f66ef04bef38791f1f61dd5..92e588f7f43081e03070b97d6cb6d965310d67ef 100644 (file)
@@ -1,3 +1,5 @@
+@import 'variables';
+
 @primary: #467fcf;
 @primary-hover: darken(@primary, 5%);
 @primary-border: darken(@primary, 10%);
@@ -490,4 +492,34 @@ table.dataTable thead .sorting::before, table.dataTable thead .sorting::after, t
     top: 6px
 }
 
+[data-crit] {
+    position: relative;;
+
+    &:after {
+        content: '';
+        position: absolute;
+        right: 5px;
+        bottom: 5px;
+        display: block;
+        width: 10px;
+        height: 10px;
+        background-color: transparent;
+        border-radius: 50%;
+    }
+}
+
+
+[data-crit="5"] {
+    &:after {
+        background-color: @error;
+    }
+}
+
+[data-crit="3"] {
+    &:after {
+        background-color: @warning;
+    }
+}
+
+
 @import 'context-menu';
diff --git a/public/packages/fluidbook/toolbox/css/variables.css b/public/packages/fluidbook/toolbox/css/variables.css
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/public/packages/fluidbook/toolbox/css/variables.css.map b/public/packages/fluidbook/toolbox/css/variables.css.map
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/public/packages/fluidbook/toolbox/css/variables.less b/public/packages/fluidbook/toolbox/css/variables.less
new file mode 100644 (file)
index 0000000..f87c59c
--- /dev/null
@@ -0,0 +1,2 @@
+@error: #c00;
+@warning: #F74D07;
index 28a9be948c4f463d861b9c40536d2dc94a3c8a8d..e2897c126faa4f2633ba8412dda8944956f536d4 100644 (file)
     @if(\Illuminate\Support\Facades\Cache::get('fluidbook_auditing_'.$id))
         <p class="message">{{__('Audit en cours... Veuillez patienter quelques instants')}}</p>
         <script>setTimeout(function () {
-                //window.location.reload();
+                window.location.reload();
             }, 5000)</script>
     @else
-
-        <a href="{{route('fluidbook_audit_refresh',['id'=>$id])}}" class="btn btn-primary" data-style="zoom-in"><span
+        <a href="{{route('fluidbook_audit_refresh',['id'=>$id])}}" class="btn btn-primary"
+           data-style="zoom-in"><span
                 class="ladda-label">
             <i class="las la-redo-alt"></i> {{__('Relancer l\'audit')}}</span></a>
         &nbsp; <a href="{{route('fluidbook_audit_reset',['id'=>$id])}}" class="btn btn-primary"
                   data-style="zoom-in"><span class="ladda-label">
             <i class="las la-sync"></i> {{__('Effacer les erreurs et relancer l\'audit')}}</span></a>
 
-        <table
-            class="sortable bg-white table table-striped table-hover nowrap rounded shadow-xs border-xs mt-2 dataTable dtr-inline">
-            <thead>
-            <tr>
-                <th>{{__('Criticité')}}</th>
-                <th>{{__('Type')}}</th>
-                <th>{{__('Détails')}}</th>
-                <th>{{__('Nombre')}}</th>
-                <th>{{__('Date')}}</th>
-                <th>{{__('Corriger le problème')}}</th>
-            </tr>
-            </thead>
-            <tbody>
-
-            @foreach($issues as $issue)
+        @if(count($issues)===0)
+            <p class="message">{{__('Aucun problème n\'a été repéré lors de l\'audit')}}</p>
+        @else
+
+            <table
+                class="sortable bg-white table table-striped table-hover nowrap rounded shadow-xs border-xs mt-2 dataTable dtr-inline">
+                <thead>
                 <tr>
-                    <td sorttable_customkey="{{$issue['criticality']}}">{!! $icons[$issue['criticality']] !!}</td>
-                    <td sorttable_customkey="{{$issue['type']}}">{{$issue['summary']}}</td>
-                    <td>{!! $issue['text'] !!}</td>
-                    <td>{{$issue['count']}}</td>
-                    <td>{{$issue['last']}}</td>
-                    <td>{!! $issue['fix'] !!}</td>
+                    <th>{{__('Criticité')}}</th>
+                    <th>{{__('Type')}}</th>
+                    <th>{{__('Détails')}}</th>
+                    <th>{{__('Nombre')}}</th>
+                    <th>{{__('Date')}}</th>
+                    <th>{{__('Corriger le problème')}}</th>
                 </tr>
-            @endforeach
-            </tbody>
-        </table>
+                </thead>
+                <tbody>
+
+                @foreach($issues as $issue)
+                    <tr>
+                        <td sorttable_customkey="{{$issue['criticality']}}">{!! $icons[$issue['criticality']] !!}</td>
+                        <td sorttable_customkey="{{$issue['type']}}">{{$issue['summary']}}</td>
+                        <td>{!! $issue['text'] !!}</td>
+                        <td>{{$issue['count']}}</td>
+                        <td>{{$issue['last']}}</td>
+                        <td>{!! $issue['fix'] !!}</td>
+                    </tr>
+                @endforeach
+                </tbody>
+            </table>
 
+        @endif
     @endif
 @endsection
index 9a1327f02f102b515fd0a1a87971e36db6f6432f..efd3539ac5e1609891b5fe4ebb8d9a0c117e0a8d 100644 (file)
@@ -1,8 +1,9 @@
 {{-- __('!! Paramètres des fluidbooks') --}}
 @if( $entry->allowsAudit())
     <a class="btn btn-sm btn-link" href="/fluidbook-publication/{{ $entry->id }}/audit"
-       data-toggle="tooltip"
-       title="{{__('Audit de la publication')}}"><img class="la audit" src="/images/icons/icon-audit.svg"> {{__('Audit')}}
+       data-toggle="tooltip" data-crit="{{\App\Models\FluidbookHealthIssues::hasIssue($entry->id)}}"
+       title="{{__('Audit de la publication')}}"><img class="la audit"
+                                                      src="/images/icons/icon-audit.svg"> {{__('Audit')}}
     </a>
 @endif