['name' => 'isleofdogs', 'host' => 'paris.cubedesigners.com', 'port' => 9458, 'weight' => 2, 'region' => 'UE'],
['name' => 'jumanji', 'host' => 'paris.cubedesigners.com', 'port' => 9459, 'weight' => 2, 'region' => 'UE'],
['name' => 'kingkong', 'host' => 'kingkong.cubedesigners.com', 'weight' => 6, 'region' => 'US'],
- ['name' => 'nakedgun', 'host' => 'nakedgun.cubedesigners.com', 'weight' => 4, 'region' => 'UE'],
+ //['name' => 'nakedgun', 'host' => 'nakedgun.cubedesigners.com', 'weight' => 4, 'region' => 'UE'],
];
public static function forceServer($server)
use App\Fluidbook\Compiler\Compiler;
use App\Http\Controllers\Admin\Operations\FluidbookPreviewOperation;
use App\Http\Middleware\CheckIfAdmin;
+use App\Jobs\FluidbookAuditRefresh;
use App\Models\FluidbookHealthIssues;
use App\Models\FluidbookPublication;
use App\Models\FluidbookTheme;
use Cubist\Backpack\Http\Controllers\Base\XSendFileController;
use Cubist\Util\PHP;
use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Route;
// __('!!Paramètres des fluidbooks')
{
protected function setupAuditRoutes($segment, $routeName, $controller)
{
- Route::match(['get'], $segment . '/{id}/audit', $controller . '@audit');
+ Route::match(['get'], $segment . '/{id}/audit', $controller . '@audit')->name('fluidbook_audit');
+ Route::match(['get'], $segment . '/{id}/audit/refresh', $controller . '@auditRefresh')->name('fluidbook_audit_refresh');
+ Route::match(['get'], $segment . '/{id}/audit/reset', $controller . '@auditReset')->name('fluidbook_audit_reset');
}
$fluidbook = FluidbookPublication::withoutGlobalScopes()->find($id);
return view('fluidbook_publication.audit', ['id' => $id, 'fluidbook' => $fluidbook, 'issues' => FluidbookHealthIssues::getIssues($id)]);
}
+
+ protected function auditRefresh($id)
+ {
+ if (!FluidbookPublication::hasPermission($id, 'admin')) {
+ abort(401);
+ }
+ FluidbookAuditRefresh::dispatch($id);
+ sleep(1);
+ return redirect(route('fluidbook_audit', ['id' => $id]));
+ }
+
+ protected function auditReset($id)
+ {
+ if (!FluidbookPublication::hasPermission($id, 'admin')) {
+ abort(401);
+ }
+ FluidbookHealthIssues::deleteIssues($id);
+ return $this->auditRefresh($id);
+ }
}
--- /dev/null
+<?php
+
+namespace App\Jobs;
+
+use App\Models\FluidbookPublication;
+use Illuminate\Support\Facades\Artisan;
+use Illuminate\Support\Facades\Cache;
+
+class FluidbookAuditRefresh extends Base
+{
+ protected $book_id;
+
+ public function __construct($book_id)
+ {
+ $this->onQueue('fluidbookprocess');
+ $this->book_id = $book_id;
+ parent::__construct();
+ }
+
+ public function handle()
+ {
+ Cache::set('fluidbook_auditing_' . $this->book_id, true);
+ Artisan::call('fluidbook:compile ' . $this->book_id);
+ Cache::forget('fluidbook_auditing_' . $this->book_id);
+ }
+}
$replace[$k] = '<strong>' . $r . '</strong>';
}
- if(!isset($data['fixText'])){
- $fix='';
- }else{
- $fix='<a class="btn-link" href="' . __($data['fixURL'], $replaceRaw) . '">' . $data['fixText'] . '</a>';
+ if (!isset($data['fixText'])) {
+ $fix = '';
+ } else {
+ $fix = '<a class="btn-link" target="_blank" href="' . __($data['fixURL'], $replaceRaw) . '">' . $data['fixText'] . '</a>';
}
$line = ['type' => $issue->type, 'criticality' => $data['criticality'], 'summary' => $data['summary'], 'text' => __($data['text'], $replace), 'count' => $issue->count, 'last' => $issue->updated_at, 'fix' => $fix];
}
return $res;
}
+
+ public static function deleteIssues($fluidbookId)
+ {
+ static::withoutGlobalScopes()->where('fluidbook', $fluidbookId)->forceDelete();
+ }
}
.la-exclamation-triangle {
color: #F74D07;
}
+.message {
+ text-align: center;
+ font-size: 130%;
+ margin-top: 60px;
+}
/*# sourceMappingURL=audit.css.map */
\ No newline at end of file
-{"version":3,"sources":["audit.less"],"names":[],"mappings":"AAAA;EACI,gBAAA;;AAGJ;AAAwB;EACpB,eAAA;;AAGJ;EACI,WAAA;;AAGJ;EACI,cAAA","file":"audit.css"}
\ No newline at end of file
+{"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
.la-exclamation-triangle {
color: #F74D07;
}
+
+.message{
+ text-align: center;
+ font-size: 130%;
+ margin-top: 60px;
+}
@section('content')
<h2>{{__('Audit du fluidbook :title - #:id',['title'=>$fluidbook->title,'id'=>$id])}}</h2>
- <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(\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();
+ }, 5000)</script>
+ @else
+
+ <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>
+ <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>
- <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
@endsection