Compare commits
68 commits
multiple-f
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a15a5713f | ||
|
|
324841b778 | ||
|
|
42faaf51bb | ||
|
|
6f5a7dae69 | ||
|
|
0f74b496ab | ||
|
|
286d3adc6b | ||
|
|
748597277e | ||
|
|
20e5a325ff | ||
|
|
ea692f98ac | ||
|
|
931c53d76a | ||
|
|
a73bcc2b4b | ||
|
|
05e1d60159 | ||
|
|
9c2a3fb82e | ||
|
|
6c90845c4c | ||
|
|
4976f1cac9 | ||
|
|
116f465849 | ||
|
|
840c3ea475 | ||
|
|
7a9c8f4da3 | ||
|
|
dbb92dd6ed | ||
|
|
23147b209e | ||
|
|
763ace7667 | ||
|
|
241adfeb50 | ||
|
|
9f3b536bf7 | ||
|
|
b6338d4574 | ||
|
|
485e66c137 | ||
|
|
ac9dbc3aad | ||
|
|
3d1e08c664 | ||
|
|
1a64f7b0d2 | ||
|
|
f3c97443a6 | ||
|
|
5a25b0ba21 | ||
|
|
b7392ec487 | ||
|
|
43ae1cb818 | ||
|
|
3b8cb4c5ae | ||
|
|
82368e2dd3 | ||
|
|
925dc2a495 | ||
|
|
b1763e5db3 | ||
|
|
e0870d362e | ||
|
|
0984fa00b7 | ||
|
|
ad00dd2246 | ||
|
|
3dce58d9a0 | ||
|
|
0194d8e0c1 | ||
|
|
14aeec5e2a | ||
|
|
eb212215a8 | ||
|
|
c5d8ea542f | ||
|
|
50832db21b | ||
|
|
c6eaf2f12b | ||
|
|
8651a5cc2a | ||
|
|
bc4a8f64ae | ||
|
|
d62b1d513f | ||
|
|
f6dc577255 | ||
|
|
80615fe61a | ||
|
|
92d837586e | ||
|
|
e18918fa61 | ||
|
|
156c4a6317 | ||
|
|
20c1d2da6f | ||
|
|
d0778093d5 | ||
|
|
39a28c5e3f | ||
|
|
d41acba6c5 | ||
|
|
c9be7205be | ||
|
|
d34a9a4624 | ||
|
|
29f8dfd724 | ||
|
|
58287ae7bc | ||
|
|
98cbbe5b93 | ||
|
|
e39f4e8146 | ||
|
|
caa7189cc3 | ||
|
|
42f28abe33 | ||
|
|
d343d87486 | ||
|
|
592bd9bdaa |
33 changed files with 1428 additions and 1419 deletions
|
|
@ -60,4 +60,4 @@ MAIL_LIST_SERVICEWEB=
|
|||
PROJECT_UUID=
|
||||
|
||||
## MAIL ADDRESSES
|
||||
MAIL_LIST_SERVICEWEB=equipe.web@ldc.fr
|
||||
MAIL_LIST_SERVICEWEB=digital@ldc.fr
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ MAIL_PASSWORD=
|
|||
MAIL_ENCRYPTION=null
|
||||
MAIL_FROM_ADDRESS=no-reply@dam.lesidc.com
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
MAIL_ADMIN=equipe.web@ldc.fr
|
||||
MAIL_ADMIN=digital@ldc.fr
|
||||
|
||||
|
||||
LDAP_ACCOUNT_PREFIX="cn="
|
||||
|
|
@ -54,7 +54,7 @@ LDAP_USE_SSL=false
|
|||
PROJECT_UUID=
|
||||
|
||||
## MAIL ADDRESSES
|
||||
MAIL_LIST_SERVICEWEB=equipe.web@ldc.fr
|
||||
MAIL_LIST_SERVICEWEB=digital@ldc.fr
|
||||
|
||||
LDC_STATUS_CHECKER_API_KEY=CE8S52Qq7stf5k8frF4T
|
||||
LDC_STATUS_CHECKER_UUID=4d8b2c20-107a-4682-b591-dc6c685126df
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ MAIL_PASSWORD=
|
|||
MAIL_ENCRYPTION=null
|
||||
MAIL_FROM_ADDRESS=no-reply@dam.lesidc.com
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
MAIL_ADMIN=equipe.web@ldc.fr
|
||||
MAIL_ADMIN=digital@ldc.fr
|
||||
|
||||
|
||||
LDAP_ACCOUNT_PREFIX=
|
||||
|
|
@ -54,7 +54,7 @@ LDAP_USE_SSL=
|
|||
PROJECT_UUID=
|
||||
|
||||
## MAIL ADDRESSES
|
||||
MAIL_LIST_SERVICEWEB=equipe.web@ldc.fr
|
||||
MAIL_LIST_SERVICEWEB=digital@ldc.fr
|
||||
|
||||
LDC_STATUS_CHECKER_API_KEY=
|
||||
LDC_STATUS_CHECKER_UUID=
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ php artisan key:generate
|
|||
.env => remplacer MAIL_DRIVER par MAIL_MAILER
|
||||
.env => remplacer FILESYSTEM_DRIVER par FILESYSTEM_DISK
|
||||
.env rajouter PROJECT_UUID=
|
||||
.env rajouter MAIL_LIST_SERVICEWEB=equipe.web@ldc.fr
|
||||
.env rajouter MAIL_LIST_SERVICEWEB=digital@ldc.fr
|
||||
|
||||
# SUPERVISOR
|
||||
jobs Api stats sur queue `database`
|
||||
|
|
|
|||
|
|
@ -127,20 +127,20 @@ class ImportArcadiaModelFiles extends Command
|
|||
/** @var \SimpleXMLElement $row */
|
||||
foreach ($fileContent->dam as $row) {
|
||||
/** @var \App\Models\Article|null $record */
|
||||
$record = Article::where('noArt', $row->noArt)->first();
|
||||
$record = Article::where('noArt', (int)$row->noArt)->first();
|
||||
if (!$record) {
|
||||
$record = new Article();
|
||||
$record->noArt = $row->noArt;
|
||||
$record->noArt = (int)$row->noArt;
|
||||
}
|
||||
$record->libCcial = $row->libCcial;
|
||||
$record->codMarq = $row->codMarq;
|
||||
$record->libMarq = $row->libMarq;
|
||||
$record->codFamVte = $row->codFamVte;
|
||||
$record->libFamVte = $row->libFamVte;
|
||||
$record->codGencodAdm = $row->codGencodAdm;
|
||||
$record->codGencodSymb = $row->codGencodSymb;
|
||||
$record->codGencodPds = $row->codGencodPds;
|
||||
$record->utilisableGroupe = $row->utilisableGroupe;
|
||||
$record->libCcial = (string)$row->libCcial;
|
||||
$record->codMarq = (int)$row->codMarq;
|
||||
$record->libMarq = (string)$row->libMarq;
|
||||
$record->codFamVte = (int)$row->codFamVte;
|
||||
$record->libFamVte = (string)$row->libFamVte;
|
||||
$record->codGencodAdm = (string)$row->codGencodAdm;
|
||||
$record->codGencodSymb = (string)$row->codGencodSymb;
|
||||
$record->codGencodPds = (string)$row->codGencodPds;
|
||||
$record->utilisableGroupe = (int)$row->utilisableGroupe;
|
||||
$record->saveOrFail();
|
||||
} //end foreach
|
||||
}
|
||||
|
|
@ -157,12 +157,12 @@ class ImportArcadiaModelFiles extends Command
|
|||
/** @var \SimpleXMLElement $row */
|
||||
foreach ($fileContent->dam as $row) {
|
||||
/** @var \App\Models\Marque|null $record */
|
||||
$record = Marque::where('codMarq', $row->codMarq)->first();
|
||||
$record = Marque::where('codMarq', (int)$row->codMarq)->first();
|
||||
if (!$record) {
|
||||
$record = new Marque();
|
||||
$record->codMarq = $row->codMarq;
|
||||
$record->codMarq = (int)$row->codMarq;
|
||||
}
|
||||
$record->libMarq = $row->libMarq;
|
||||
$record->libMarq = (string)$row->libMarq;
|
||||
$record->saveOrFail();
|
||||
}
|
||||
}
|
||||
|
|
@ -179,12 +179,12 @@ class ImportArcadiaModelFiles extends Command
|
|||
/** @var \SimpleXMLElement $row */
|
||||
foreach ($fileContent->mediaSujet as $row) {
|
||||
/** @var \App\Models\Sujet|null $record */
|
||||
$record = Sujet::where('codeSujet', $row->code)->first();
|
||||
$record = Sujet::where('codeSujet', (int)$row->code)->first();
|
||||
if (!$record) {
|
||||
$record = new Sujet();
|
||||
$record->codeSujet = $row->code;
|
||||
$record->codeSujet = (int)$row->code;
|
||||
}
|
||||
$record->libelle = $row->libelle;
|
||||
$record->libelle = (string)$row->libelle;
|
||||
$record->saveOrFail();
|
||||
}
|
||||
}
|
||||
|
|
@ -201,12 +201,12 @@ class ImportArcadiaModelFiles extends Command
|
|||
/** @var \SimpleXMLElement $row */
|
||||
foreach ($fileContent->mediatypemedia as $row) {
|
||||
/** @var \App\Models\TypeMedia|null $record */
|
||||
$record = TypeMedia::where('codeTypemedia', $row->code)->first();
|
||||
$record = TypeMedia::where('codeTypemedia', (int)$row->code)->first();
|
||||
if (!$record) {
|
||||
$record = new TypeMedia();
|
||||
$record->codeTypemedia = $row->code;
|
||||
$record->codeTypemedia = (int)$row->code;
|
||||
}
|
||||
$record->libelle = $row->libelle;
|
||||
$record->libelle = (string)$row->libelle;
|
||||
$record->saveOrFail();
|
||||
}
|
||||
}
|
||||
|
|
@ -223,13 +223,13 @@ class ImportArcadiaModelFiles extends Command
|
|||
/** @var \SimpleXMLElement $row */
|
||||
foreach ($fileContent->mediatypesvue as $row) {
|
||||
/** @var \App\Models\TypeVue|null $record */
|
||||
$record = TypeVue::where('codeTypevue', $row->code)->first();
|
||||
$record = TypeVue::where('codeTypevue', (int)$row->code)->first();
|
||||
if (!$record) {
|
||||
$record = new TypeVue();
|
||||
$record->codeTypevue = $row->code;
|
||||
$record->codeTypevue = (int)$row->code;
|
||||
}
|
||||
$record->libelle = $row->libelle;
|
||||
$record->sujet_id = $row->sujet_id->mediasujet->code;
|
||||
$record->libelle = (string)$row->libelle;
|
||||
$record->sujet_id = (int)$row->sujet_id->mediasujet->code;
|
||||
$record->saveOrFail();
|
||||
}
|
||||
}
|
||||
|
|
@ -246,14 +246,14 @@ class ImportArcadiaModelFiles extends Command
|
|||
/** @var \SimpleXMLElement $row */
|
||||
foreach ($fileContent->mediavariante as $row) {
|
||||
/** @var \App\Models\TypeVue|null $record */
|
||||
$record = Variante::where('codeVariante', $row->code)->first();
|
||||
$record = Variante::where('codeVariante', (int)$row->code)->first();
|
||||
if (!$record) {
|
||||
$record = new Variante();
|
||||
$record->codeVariante = $row->code;
|
||||
$record->codeVariante = (int)$row->code;
|
||||
}
|
||||
$record->libelle = $row->libelle;
|
||||
$record->sujet_id = $row->sujet_id->children()[0]->code;
|
||||
$record->type_vue_id = $row->CodeTypeVue->mediatypesvue->code;
|
||||
$record->libelle = (string)$row->libelle;
|
||||
$record->sujet_id = (int)$row->sujet_id->children()[0]->code;
|
||||
$record->type_vue_id = (int)$row->CodeTypeVue->mediatypesvue->code;
|
||||
$record->saveOrFail();
|
||||
}
|
||||
}
|
||||
|
|
@ -270,12 +270,12 @@ class ImportArcadiaModelFiles extends Command
|
|||
/** @var \SimpleXMLElement $row */
|
||||
foreach ($fileContent->SITE_PROD_GRP as $row) {
|
||||
/** @var \App\Models\TypeVue|null $record */
|
||||
$record = Site::where('id', $row->code)->first();
|
||||
$record = Site::where('id', (int)$row->code)->first();
|
||||
if (!$record) {
|
||||
$record = new Site();
|
||||
$record->id = $row->code;
|
||||
$record->id = (int)$row->code;
|
||||
}
|
||||
$record->libelle = $row->libelle;
|
||||
$record->libelle = (string)$row->libelle;
|
||||
$record->saveOrFail();
|
||||
}
|
||||
}
|
||||
|
|
@ -292,12 +292,12 @@ class ImportArcadiaModelFiles extends Command
|
|||
/** @var \SimpleXMLElement $row */
|
||||
foreach ($fileContent->dam as $row) {
|
||||
/** @var \App\Models\TypeVue|null $record */
|
||||
$record = Societe::where('id', $row->codSociete)->first();
|
||||
$record = Societe::where('id', (int)$row->codSociete)->first();
|
||||
if (!$record) {
|
||||
$record = new Societe();
|
||||
$record->id = $row->codSociete;
|
||||
$record->id = (int)$row->codSociete;
|
||||
}
|
||||
$record->libelle = $row->nomSociete;
|
||||
$record->libelle = (string)$row->nomSociete;
|
||||
$record->saveOrFail();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
54
app/Console/Commands/ResendArcadiaLinkMedias.php
Normal file
54
app/Console/Commands/ResendArcadiaLinkMedias.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Lib\ArcadiaLinkUtilities;
|
||||
use App\Models\ArcadiaLink;
|
||||
use App\Models\Media;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class ResendArcadiaLinkMedias extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'medias:resend-aracadia-links';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Resend files to Arcadia after Arcadia Link fix';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
// FIXME : Variabiliser la date
|
||||
//$al = ArcadiaLink::where('created_at', '>=', '2025-10-23')->get();
|
||||
|
||||
foreach ($al as $error)
|
||||
{
|
||||
$media = Media::withTrashed()->find($error->media_id);
|
||||
|
||||
if ($error->arcadia_id === 0) {
|
||||
|
||||
ArcadiaLinkUtilities::create($media);
|
||||
} else {
|
||||
if (is_null($media->deleted_at)) {
|
||||
ArcadiaLinkUtilities::update($media);
|
||||
} else {
|
||||
ArcadiaLinkUtilities::delete($media);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
}
|
||||
|
|
@ -39,7 +39,8 @@ class CommonController extends Controller
|
|||
})->with('sujet')->get();
|
||||
|
||||
return view('home')->with([
|
||||
'sujets' => $sujets, 'recherches' => $recherches,
|
||||
'sujets' => $sujets,
|
||||
'recherches' => $recherches,
|
||||
'dossiers' => $dossiers
|
||||
]);
|
||||
}
|
||||
|
|
@ -54,8 +55,10 @@ class CommonController extends Controller
|
|||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
Mail::to(env('MAIL_ADMIN_ADDRESS', "informatique.internet@ldc.fr"))
|
||||
->send(new ContactMail(ContactType::from($request->type), $request->url, $request->message, $user));
|
||||
foreach (config('mail.contactsList.admin') as $mail) {
|
||||
Mail::to($mail)
|
||||
->send(new ContactMail(ContactType::from($request->type), $request->url, $request->message, $user));
|
||||
}
|
||||
|
||||
return response()->json(['status' => 'OK']);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class DossierController extends Controller
|
|||
$publicFolders = Dossier::query()
|
||||
->whereHas('sujet', fn (Builder $q) => $q->where('codeSujet', $request->input('sujet_id')))
|
||||
->where('is_private', false)
|
||||
->whereDoesntHave('dossierParent')
|
||||
->whereNull('parent_id')
|
||||
->select($select)->get();
|
||||
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ class DossierController extends Controller
|
|||
// * Ajout du dépôt de fichier pour les admin.
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> Dossiers depots */
|
||||
$depotQuery = Dossier::query()
|
||||
->whereDoesntHave('dossierParent')
|
||||
->whereNull('parent_id')
|
||||
->where('system', true)
|
||||
->orderBy('libelle', 'ASC')
|
||||
->get();
|
||||
|
|
@ -150,7 +150,7 @@ class DossierController extends Controller
|
|||
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> */
|
||||
$dossiers = Dossier::query()
|
||||
->whereDoesntHave('dossierParent')
|
||||
->whereNull('parent_id')
|
||||
->where('system', false)
|
||||
->orderBy('libelle', 'asc')
|
||||
->get();
|
||||
|
|
@ -174,7 +174,7 @@ class DossierController extends Controller
|
|||
if ($request->sub) {
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> */
|
||||
$dossiers = Dossier::query()
|
||||
->whereDoesntHave('dossierParent')
|
||||
->whereNull('parent_id')
|
||||
->where('system', false)
|
||||
->orderBy('libelle', 'asc')->get();
|
||||
return view('dossiers.create-sub', [
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ class MediaController extends Controller
|
|||
'etiquettes' => $etiquettes,
|
||||
'societes' => $societes,
|
||||
'marques' => $marques,
|
||||
'currentFolder' => $dossier_id,
|
||||
'currentFolder' => Dossier::query()->where('id', $dossier_id)->first() ?? $dossier_id,
|
||||
'currentSujet' => optional($sujet)->codeSujet ?? \optional($sujets->first())->codeSujet,
|
||||
'currentFilters' => json_encode($filters),
|
||||
'paniers' => $paniers,
|
||||
|
|
@ -407,6 +407,7 @@ class MediaController extends Controller
|
|||
|
||||
// ---- Les articles
|
||||
$media->articles()->sync(collect($request->articles)->pluck('id')->all());
|
||||
Article::flushQueryCache();
|
||||
|
||||
$media->saveOrFail();
|
||||
|
||||
|
|
@ -499,6 +500,8 @@ class MediaController extends Controller
|
|||
// ---- Creation des vignettes en lien avec le sujet du média
|
||||
$clonedMedia->createSubjectThumbnails();
|
||||
|
||||
$clonedMedia->isDuplicate = true;
|
||||
|
||||
$clonedMedia->save();
|
||||
|
||||
// * Add relations after having a media id
|
||||
|
|
@ -657,6 +660,12 @@ class MediaController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
if ($media->statut === MediaStatut::brouillon) {
|
||||
throw ValidationException::withMessages([
|
||||
'media' => trans('Ce média n\'est pas publié. Veuillez sauvegarder pour enregistrer le statut.')
|
||||
]);
|
||||
}
|
||||
|
||||
MediaLinkWithArcadia::dispatch($user, $media);
|
||||
|
||||
return response()->json(true);
|
||||
|
|
@ -765,7 +774,7 @@ class MediaController extends Controller
|
|||
}
|
||||
|
||||
$history = Historique::query()
|
||||
->whereHas('media', fn (Builder $q) => $q->where('id', $media->id))
|
||||
->whereHas('media', fn(Builder $q) => $q->where('id', $media->id))
|
||||
->with('user')
|
||||
->orderBy('created_date', 'DESC')
|
||||
->get();
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ class PanierController extends Controller
|
|||
$request->input('mediaList')
|
||||
));
|
||||
|
||||
Media::flushQueryCache();
|
||||
|
||||
return response()->json();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ use App\Models\Sujet;
|
|||
use App\Models\TypeMedia;
|
||||
use App\Models\User;
|
||||
use App\Traits\Http\HandlesMedia;
|
||||
use Illuminate\Contracts\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
|
|
@ -146,8 +146,8 @@ class UploadController extends Controller
|
|||
/** @var \App\Models\Media */
|
||||
$media = Media::query()
|
||||
->where('id', $request->input('media_id'))
|
||||
->whereHas('sujet', fn (Builder $q) => $q->where('codeSujet', $sujet->codeSujet))
|
||||
->whereHas('dossier', fn (Builder $q) => $q->where('id', $dossier->id))
|
||||
->whereHas('sujet', fn(Builder $q) => $q->where('codeSujet', $sujet->codeSujet))
|
||||
->whereHas('dossier', fn(Builder $q) => $q->where('id', $dossier->id))
|
||||
->firstOrNew();
|
||||
|
||||
// Save the file and return any response you need.
|
||||
|
|
@ -214,7 +214,7 @@ class UploadController extends Controller
|
|||
'File guessed extensions :guessedExts does not match file name extension :extension',
|
||||
[
|
||||
'guessedExt' => $guessedExts,
|
||||
'extension' => $mediaExtension,
|
||||
'extension' => $mediaExtension->value,
|
||||
]
|
||||
)
|
||||
]);
|
||||
|
|
@ -341,6 +341,8 @@ class UploadController extends Controller
|
|||
|
||||
$media->saveOrFail();
|
||||
|
||||
Media::flushQueryCache();
|
||||
|
||||
// * Get props inserted by DB.
|
||||
return response()->json($media->refresh());
|
||||
});
|
||||
|
|
|
|||
|
|
@ -190,10 +190,14 @@ class UserController extends Controller
|
|||
$marques = Marque::orderBy('libMarq', 'asc')->get();
|
||||
$userSujets = $user->sujets;
|
||||
$sujets = Sujet::where('sujet_dam', true)->orderBy('libelle', 'asc')->get();
|
||||
$users = User::select(['id', 'email'])->whereIn('role', [
|
||||
config('roles.const.ADMIN'), config('roles.const.CONTRIBUTEUR'),
|
||||
config('roles.const.REDACTEUR')
|
||||
])->where('id', '!=', $user->id)->get();
|
||||
$users = User::select(['id', 'email'])
|
||||
->whereIn('role', [
|
||||
config('roles.const.ADMIN'), config('roles.const.CONTRIBUTEUR'),
|
||||
config('roles.const.REDACTEUR')
|
||||
])
|
||||
->where('id', '!=', $user->id)
|
||||
->orderBy('email')
|
||||
->get();
|
||||
return view('users.edit')->with([
|
||||
'user' => $user, 'roles' => $roles, 'users' => $users,
|
||||
'userMarques' => $userMarques, 'marques' => $marques,
|
||||
|
|
|
|||
|
|
@ -39,7 +39,9 @@ class XmlArcadiaMediasIn extends XmlJobs
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $nullableFields = [];
|
||||
protected $nullableFields = [
|
||||
'version'
|
||||
];
|
||||
|
||||
/**
|
||||
* Fields that are unique
|
||||
|
|
@ -69,7 +71,7 @@ class XmlArcadiaMediasIn extends XmlJobs
|
|||
$media = Media::withTrashed()->where($uniqueColumnsKey)->firstOrFail();
|
||||
|
||||
$media->arcadia_id = $line['arcadia_id'];
|
||||
$media->version = $line['version'];
|
||||
$media->version = $line['version'] ?? 1;
|
||||
$media->isLocked = false;
|
||||
|
||||
$media->saveOrFail();
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ class ArcadiaLinkUtilities
|
|||
$storage->path($filename),
|
||||
\ZipArchive::CREATE | \ZipArchive::OVERWRITE
|
||||
);
|
||||
$success = $zip->addFromString($xml, 'media.xml') && $success;
|
||||
$success = $zip->addFromString('media.xml', $xml) && $success;
|
||||
$success = $zip->addFile($media->full_path, $media->basename) && $success;
|
||||
$success = $zip->close() && $success;
|
||||
unset($zip);
|
||||
|
|
@ -245,7 +245,7 @@ class ArcadiaLinkUtilities
|
|||
->appendChild($dom->createCDATASection($formatModel['hauteur']));
|
||||
$format->appendChild($dom->createElement('lien'))
|
||||
->appendChild($dom->createCDATASection(\sprintf(
|
||||
"%s/{$media->folder}{$media->uid}_%s.{$media->extension->value}",
|
||||
"%s/{$media->folder}/{$media->uid}_%s.{$media->extension->value}",
|
||||
config('app.url'),
|
||||
$formatModel['libelle']
|
||||
)));
|
||||
|
|
|
|||
|
|
@ -75,6 +75,6 @@ class Article extends Model
|
|||
*/
|
||||
public function mediaList()
|
||||
{
|
||||
return $this->belongsToMany(Media::class, 'media_article', 'media_id', 'article_id');
|
||||
return $this->belongsToMany(Media::class, 'media_article', 'article_id', 'media_id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,14 +39,27 @@ class Media extends Model
|
|||
*/
|
||||
public $cacheDriver = 'redis';
|
||||
|
||||
/**
|
||||
* Is the model a duplicate of another (only true before we save it in database)
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
public $isDuplicate = false;
|
||||
|
||||
/**
|
||||
* The relations to eager load on every query.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $with = [
|
||||
'owner', 'tags', 'etiquette', 'articles', 'sujet',
|
||||
'typeMedia', 'societes', 'marques'
|
||||
'owner',
|
||||
'tags',
|
||||
'etiquette',
|
||||
'articles',
|
||||
'sujet',
|
||||
'typeMedia',
|
||||
'societes',
|
||||
'marques'
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -209,8 +222,10 @@ class Media extends Model
|
|||
$user = auth()->user();
|
||||
MediaCreated::dispatch($user, $model);
|
||||
|
||||
/** @throws \RuntimeException */
|
||||
$model->addToElasticSearch();
|
||||
if (empty($model->isDuplicate)) {
|
||||
/** @throws \RuntimeException */
|
||||
$model->addToElasticSearch();
|
||||
}
|
||||
});
|
||||
static::updating(function (self $model) {
|
||||
if ($model->statut === MediaStatut::brouillon and $model->arcadia_id) {
|
||||
|
|
@ -226,8 +241,8 @@ class Media extends Model
|
|||
/** @var \App\Models\User */
|
||||
$user = auth()->user();
|
||||
|
||||
// * Prevent soft delete trigerring update event
|
||||
if (!\array_key_exists('deleted_at', $model->getChanges())) {
|
||||
// * If update is not running from console, we prevent soft delete before trigerring update event
|
||||
if ($user and !\array_key_exists('deleted_at', $model->getChanges())) {
|
||||
MediaUpdated::dispatch($user, $model);
|
||||
}
|
||||
|
||||
|
|
@ -252,8 +267,6 @@ class Media extends Model
|
|||
|
||||
/** @throws \RuntimeException */
|
||||
$model->removeFromElasticSearch();
|
||||
|
||||
$model->deleteFilesOnAllPath();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -792,7 +805,7 @@ class Media extends Model
|
|||
$storage = Storage::disk('media');
|
||||
|
||||
// * format spécifique
|
||||
if ($format->system) {
|
||||
if (!$format->system) {
|
||||
if (in_array($this->extension, ['gif', 'jpeg', 'jpg', 'png', 'pdf', 'ai', 'psd'])) {
|
||||
return $storage->path("/{$this->folder}/{$this->uid}_{$format->libelle}.{$format->extension->value}");
|
||||
}
|
||||
|
|
@ -807,7 +820,7 @@ class Media extends Model
|
|||
} elseif (in_array($this->extension, ['pdf', 'ai', 'psd'])) {
|
||||
return $storage->path("/{$this->folder}/{$this->uid}_{$format->libelle}.png");
|
||||
}
|
||||
return $storage->path("/{$this->folder}/{$this->uid}.{$this->extension}");
|
||||
return $storage->path("/{$this->folder}/{$this->uid}.{$this->extension->value}");
|
||||
}
|
||||
throw new \RuntimeException("Unhandled Format $format->id $format->libelle");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ namespace App\Providers;
|
|||
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
|
|
@ -16,6 +17,12 @@ class AppServiceProvider extends ServiceProvider
|
|||
*/
|
||||
public function boot()
|
||||
{
|
||||
if (
|
||||
in_array(config('app.env'), ['local', 'testing']) && config('app.bypassldap') && !app()->runningInConsole()
|
||||
) {
|
||||
Auth::loginUsingId(24);
|
||||
}
|
||||
|
||||
// !!! Fuc**** Lab LDC exception OMG !!!
|
||||
if (!in_array(config('app.env'), ['local', 'testing'])) {
|
||||
URL::forceRootUrl(config('app.url'));
|
||||
|
|
@ -25,13 +32,10 @@ class AppServiceProvider extends ServiceProvider
|
|||
return $url->current();
|
||||
});
|
||||
}
|
||||
// * Force HTTPS
|
||||
URL::forceScheme('https');
|
||||
|
||||
// * LOCAL HTTPS FIX
|
||||
if (!in_array(config('app.env'), ['local', 'testing'])) {
|
||||
URL::forceScheme('https');
|
||||
}
|
||||
|
||||
// * HA PROXY FIX
|
||||
// * REVERSE PROXY FIX
|
||||
App::singleton('clientIp', function () {
|
||||
if (config('app.env') == 'local') {
|
||||
return request()->getClientIp();
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
"laravel/tinker": "^2.7",
|
||||
"laravel/ui": "^3.0",
|
||||
"laravelcollective/html": "^6.3",
|
||||
"ldc/web-status-checker-laravel": "^1.0",
|
||||
"mews/purifier": "^3.3",
|
||||
"pion/laravel-chunk-upload": "^1.5",
|
||||
"rennokki/laravel-eloquent-query-cache": "^3.3"
|
||||
|
|
@ -97,11 +96,5 @@
|
|||
}
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"prefer-stable": true,
|
||||
"repositories": [
|
||||
{
|
||||
"type": "composer",
|
||||
"url": "https://lab.s-web.fr/api/v4/group/23/-/packages/composer/packages.json"
|
||||
}
|
||||
]
|
||||
"prefer-stable": true
|
||||
}
|
||||
|
|
|
|||
2281
composer.lock
generated
2281
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -4,6 +4,8 @@ use Illuminate\Support\Facades\Facade;
|
|||
|
||||
return [
|
||||
|
||||
'bypassldap' => env('BYPASS_LDAP', false),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Application Name
|
||||
|
|
|
|||
|
|
@ -12,6 +12,6 @@ return [
|
|||
* so you can receive email if things go mad
|
||||
*/
|
||||
'contactsList' => [
|
||||
env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')
|
||||
env('MAIL_LIST_SERVICEWEB', 'digital@ldc.fr')
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -117,8 +117,9 @@ return [
|
|||
|
||||
// * Contacts List
|
||||
'contactsList' => [
|
||||
'invalidXml' => preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', env('MAIL_LIST_INVALID_XML', 'equipe.web@ldc.fr')),
|
||||
'serviceweb' => preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr'))
|
||||
'invalidXml' => preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', env('MAIL_LIST_INVALID_XML', 'digital@ldc.fr')),
|
||||
'serviceweb' => preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', env('MAIL_LIST_SERVICEWEB', 'digital@ldc.fr')),
|
||||
'admin' => explode(',', env('MAIL_ADMIN')),
|
||||
],
|
||||
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- < XSD deviné, basé sur la BDD et cette seule affirmation "les 3 champs sont obligatoires" @author Jérémy Munsch jeremy.munsch@ldc.fr > -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
<xs:element name="MEDIA_VISUEL">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="codeArcadia" type="_positive_unsigned_integer_without_leading_zeros" />
|
||||
<xs:element name="code_DAM" type="_positive_unsigned_integer_without_leading_zeros"/>
|
||||
<xs:element name="version" type="_positive_unsigned_integer_without_leading_zeros"/>
|
||||
<xs:element name="version" minOccurs="1" nillable="true" >
|
||||
<xs:simpleType>
|
||||
<xs:union memberTypes="_positive_unsigned_integer_without_leading_zeros xs:string"/>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
|
@ -16,5 +18,4 @@
|
|||
<xs:pattern value="[123456789]\d*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
||||
</xs:schema>
|
||||
20
resources/documents/arcadia/incoming_medias.xsd.ok_keep
Normal file
20
resources/documents/arcadia/incoming_medias.xsd.ok_keep
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- < XSD deviné, basé sur la BDD et cette seule affirmation "les 3 champs sont obligatoires" @author Jérémy Munsch jeremy.munsch@ldc.fr > -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
<xs:element name="MEDIA_VISUEL">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="codeArcadia" type="_positive_unsigned_integer_without_leading_zeros" />
|
||||
<xs:element name="code_DAM" type="_positive_unsigned_integer_without_leading_zeros"/>
|
||||
<xs:element name="version" type="_positive_unsigned_integer_without_leading_zeros"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name="_positive_unsigned_integer_without_leading_zeros">
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:pattern value="[123456789]\d*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
||||
|
|
@ -163,8 +163,8 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import Resumable from "resumablejs";
|
||||
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
|
||||
import Resumable from "resumablejs";
|
||||
|
||||
export default {
|
||||
name: "MmActionsComponent",
|
||||
|
|
|
|||
|
|
@ -167,6 +167,7 @@ export default {
|
|||
},
|
||||
mounted() {
|
||||
this.resetInfiniteScroll();
|
||||
this.init();
|
||||
},
|
||||
data: function () {
|
||||
return {
|
||||
|
|
@ -221,6 +222,10 @@ export default {
|
|||
type: "updateGrabbed",
|
||||
grabbed: [],
|
||||
});
|
||||
this.$store.commit({
|
||||
type: "updateFolder",
|
||||
folder: this.storeFolder,
|
||||
});
|
||||
this.loadMediaList();
|
||||
//set dateSorted
|
||||
this.dateSorted = false;
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@ export default {
|
|||
components: { FontAwesomeIcon },
|
||||
mounted() {
|
||||
const data = JSON.parse(this.$parent.$options.json);
|
||||
this.selectedFolder = data.selectedFolder;
|
||||
this.textsearch = data.textsearch ? String(data.textsearch) : "";
|
||||
this.oTypesmedia = data.typesmedia;
|
||||
this.oEtiquettes = data.etiquettes;
|
||||
|
|
@ -152,6 +153,7 @@ export default {
|
|||
sReferentiel: [],
|
||||
sTexte: "",
|
||||
initText: 0,
|
||||
selectedFolder: {},
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
|
|
@ -304,15 +306,22 @@ export default {
|
|||
}
|
||||
},
|
||||
reset() {
|
||||
this.resetFolder();
|
||||
this.sTypevue = [];
|
||||
this.sTypemedias = [];
|
||||
this.sEtiquettes = [];
|
||||
this.sReferentiel = [];
|
||||
this.sTexte = "";
|
||||
const filters = this.selectedFolder ? [{
|
||||
type: "dossier_id",
|
||||
legend: "Dossier : ",
|
||||
value: this.selectedFolder.id,
|
||||
libelle: this.selectedFolder.libelle,
|
||||
}] : [];
|
||||
this.resetFolder();
|
||||
this.selectedFolder = null;
|
||||
this.$store.commit({
|
||||
type: "updateFilters",
|
||||
filters: [],
|
||||
filters: filters,
|
||||
});
|
||||
if (this.textsearch.length && this.initText === 0) {
|
||||
this.addText(this.textsearch);
|
||||
|
|
|
|||
|
|
@ -182,9 +182,25 @@ export default {
|
|||
return this.$store.state.reload;
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
const data = JSON.parse(this.$parent.$options.json);
|
||||
if (data.selectedFolder && data.selectedFolder != -1) {
|
||||
this.selectedFolder = data.selectedFolder;
|
||||
this.selectedSubject = data.selectedSubject;
|
||||
this.$store.commit({
|
||||
type: "updateFolder",
|
||||
folder: data.selectedFolder.id ?? -1,
|
||||
});
|
||||
this.storeFolder = data.selectedFolder.id;
|
||||
this.$nextTick(() => {
|
||||
this.initFolders(this.selectedFolder, this.selectedSubject);
|
||||
})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selectedFolder: false,
|
||||
selectedSubject: false,
|
||||
isLoading: true,
|
||||
oFolders: [],
|
||||
racineCount: 0,
|
||||
|
|
@ -194,6 +210,7 @@ export default {
|
|||
watch: {
|
||||
storeSujet() {
|
||||
this.initFolders();
|
||||
this.selectedFolder = null;
|
||||
},
|
||||
storeReload() {
|
||||
this.reload();
|
||||
|
|
@ -224,7 +241,7 @@ export default {
|
|||
});
|
||||
}
|
||||
},
|
||||
initFolders(toSelectFolder = false) {
|
||||
initFolders(toSelectFolder = false, selectedSubject = false) {
|
||||
const self = this;
|
||||
self.isLoading = true;
|
||||
self.folders = [];
|
||||
|
|
@ -232,7 +249,7 @@ export default {
|
|||
axios
|
||||
.get("/ajax/load-folders", {
|
||||
params: {
|
||||
sujet_id: self.storeSujet,
|
||||
sujet_id: selectedSubject ? selectedSubject : self.storeSujet,
|
||||
},
|
||||
})
|
||||
.then((response) => {
|
||||
|
|
|
|||
|
|
@ -100,12 +100,12 @@
|
|||
|
||||
<script>
|
||||
// ResumableJs
|
||||
import Resumable from "resumablejs";
|
||||
import MePreviewComponent from "./tabs/MePreviewComponent.vue";
|
||||
import MeEditComponent from "./tabs/MeEditComponent.vue";
|
||||
import MeLinksComponent from "./tabs/MeLinksComponent.vue";
|
||||
import MeHistoryComponent from "./tabs/MeHistoryComponent.vue";
|
||||
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
|
||||
import Resumable from "resumablejs";
|
||||
import MeEditComponent from "./tabs/MeEditComponent.vue";
|
||||
import MeHistoryComponent from "./tabs/MeHistoryComponent.vue";
|
||||
import MeLinksComponent from "./tabs/MeLinksComponent.vue";
|
||||
import MePreviewComponent from "./tabs/MePreviewComponent.vue";
|
||||
|
||||
export default {
|
||||
name: "MmEditComponent",
|
||||
|
|
@ -180,7 +180,7 @@ export default {
|
|||
var query = {
|
||||
sujet_id: this.storeMedia.sujet_id,
|
||||
dossier_id: this.storeMedia.dossier_id,
|
||||
replaceMediaId: this.storeMedia.id,
|
||||
media_id: this.storeMedia.id,
|
||||
};
|
||||
this.r.updateQuery(query);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@
|
|||
<option :value="null" selected disabled>
|
||||
Sélectionnez un type de variante
|
||||
</option>
|
||||
<option v-for="item in storeTypesvariante" :value="item.codeVariante">
|
||||
<option v-for="item in availableVariantes" :value="item.codeVariante">
|
||||
{{ item.libelle }}
|
||||
</option>
|
||||
</select>
|
||||
|
|
@ -394,6 +394,9 @@ export default {
|
|||
storeRole() {
|
||||
return this.$store.state.role;
|
||||
},
|
||||
availableVariantes() {
|
||||
return this.storeTypesvariante.filter(e => e.typevue_id === this.oMedia.type_vue_id);
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
marques() {
|
||||
|
|
@ -423,7 +426,6 @@ export default {
|
|||
}
|
||||
},
|
||||
searchMarques() {
|
||||
console.log("search");
|
||||
this.refreshMarques();
|
||||
},
|
||||
searchSocietes() {
|
||||
|
|
@ -545,9 +547,10 @@ export default {
|
|||
__DAM.methods.sessionTimedOut();
|
||||
return;
|
||||
}
|
||||
const errorMessage = error.response.data.message ?? "Erreur lors de l'opération, merci d'actualiser la page.";
|
||||
$.fancyMessage({
|
||||
title: "Lier un média à Arcadia",
|
||||
message: "Erreur lors de l'opération, merci d'actualiser la page.",
|
||||
message: errorMessage,
|
||||
type: "error",
|
||||
});
|
||||
console.error(error);
|
||||
|
|
@ -710,10 +713,13 @@ export default {
|
|||
.then((response) => {
|
||||
const result = response.data;
|
||||
if (result.article.utilisableGroupe === 1) {
|
||||
const index = this.oMedia.articles.find(
|
||||
const index = this.oMedia.articles?.find(
|
||||
(e) => e.noArt === result.article.noArt
|
||||
);
|
||||
if (!index) {
|
||||
if (!this.oMedia.articles) {
|
||||
this.$set(this.oMedia, 'articles', []);
|
||||
}
|
||||
this.oMedia.articles.push(result.article);
|
||||
} else {
|
||||
$.fancyMessage({
|
||||
|
|
|
|||
|
|
@ -8,16 +8,37 @@
|
|||
line-height: inherit;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.starButton,
|
||||
.nestableFolderButton {
|
||||
@include resetButton;
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.nestableFolderButton {
|
||||
min-width: 1rem;
|
||||
min-height: 1rem;
|
||||
}
|
||||
|
||||
.d-none {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.media-link {
|
||||
padding-top: 2rem;
|
||||
|
||||
&-btn {
|
||||
background-color: #fff;
|
||||
border-radius: 3px;
|
||||
color: #374957;
|
||||
font-size: 1rem;
|
||||
padding: 8px;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: #0a6fb7;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,53 +1,59 @@
|
|||
@extends('layouts.app')
|
||||
@include('layouts.header')
|
||||
@section('content')
|
||||
<main class="home">
|
||||
<div class="search">
|
||||
<div class="container">
|
||||
<h1><i class="fas fa-images"></i>{{ __('Bienvenue') }}</h1>
|
||||
<form class="input_search" action="{{ route('media_manager') }}" method="get">
|
||||
<div class="select_container">
|
||||
@if($sujets->count())
|
||||
<select name="s">
|
||||
@foreach ($sujets as $sujet)
|
||||
<option value="{{ $sujet->codeSujet }}" >{{ $sujet->libelle }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<main class="home">
|
||||
<div class="search">
|
||||
<div class="container">
|
||||
<h1><i class="fas fa-images"></i>{{ __('Bienvenue') }}</h1>
|
||||
<form class="input_search" action="{{ route('media_manager') }}" method="get">
|
||||
<div class="select_container">
|
||||
@if ($sujets->count())
|
||||
<select name="s">
|
||||
@foreach ($sujets as $sujet)
|
||||
<option value="{{ $sujet->codeSujet }}">{{ $sujet->libelle }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@endif
|
||||
</div>
|
||||
<input name="t" type="text" value="" autofocus placeholder="Rechercher un média...">
|
||||
<input name="d" type="hidden" value="-1">
|
||||
<button type="submit"><i class="fa fa-search"></i></button>
|
||||
</form>
|
||||
<div class="media-link">
|
||||
<a class="media-link-btn" href="{{ route('media_manager') }}">
|
||||
<i class="fas fa-images"></i>
|
||||
{{ __('Accéder aux médias') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="item">
|
||||
<header>{{ __('Mes dernières recherches') }}</header>
|
||||
<div class="content">
|
||||
@if ($recherches->count())
|
||||
@foreach ($recherches as $recherche)
|
||||
<a href="{{ route('media_manager', ['r' => $recherche->id]) }}"><i
|
||||
class="fa fa-search"></i>{{ $recherche->sujet->libelle . ' - ' . $recherche->libelle }}</a>
|
||||
@endforeach
|
||||
@else
|
||||
<i class="fa-brands fa-searchengin"></i> <span>{{ __('Aucune recherche effectuée') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<header>{{ __('Mes dossiers favoris') }}</header>
|
||||
<div class="content">
|
||||
@if ($dossiers->count())
|
||||
@foreach ($dossiers as $dossier)
|
||||
<a href="{{ route('media_manager', ['d' => $dossier->id, 's' => $dossier->sujet->codeSujet]) }}"><i
|
||||
class="fas fa-folder"></i> {{ $dossier->sujet->libelle . ' - ' . $dossier->libelle }}</a>
|
||||
@endforeach
|
||||
@else
|
||||
<i class="fa-solid fa-folder"></i> <span>{{ __('Pas de dossier en favoris') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<input type="text" name="t" value="" autofocus placeholder="Rechercher un média...">
|
||||
<input type="hidden" name="d" value="-1">
|
||||
<button type="submit"><i class="fa fa-search"></i></button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="item">
|
||||
<header>{{ __('Mes dernières recherches') }}</header>
|
||||
<div class="content">
|
||||
@if($recherches->count())
|
||||
@foreach ($recherches as $recherche)
|
||||
<a href="{{ route('media_manager', ['r' => $recherche->id]) }}" ><i class="fa fa-search"></i>{{
|
||||
$recherche->sujet->libelle." - ".$recherche->libelle
|
||||
}}</a>
|
||||
@endforeach
|
||||
@else
|
||||
<i class="fa-brands fa-searchengin"></i> <span>{{ __('Aucune recherche effectuée') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<header>{{ __('Mes dossiers favoris') }}</header>
|
||||
<div class="content">
|
||||
@if($dossiers->count())
|
||||
@foreach ($dossiers as $dossier)
|
||||
<a href="{{ route('media_manager', ['d' => $dossier->id, 's' => $dossier->sujet->codeSujet]) }}" ><i class="fas fa-folder"></i> {{$dossier->sujet->libelle." - ".$dossier->libelle}}</a>
|
||||
@endforeach
|
||||
@else
|
||||
<i class="fa-solid fa-folder"></i> <span>{{ __('Pas de dossier en favoris') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</main>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -2,55 +2,65 @@
|
|||
@include('layouts.header')
|
||||
@include('layouts.media_edit')
|
||||
@section('content')
|
||||
<main class="media_manager template_2col">
|
||||
<div class="side_menu">
|
||||
@php
|
||||
$dataVue = [
|
||||
'sujets' => $sujets,
|
||||
'current' => $currentSujet,
|
||||
];
|
||||
@endphp
|
||||
<div id="mm-side-header" data-json='@json($dataVue)'></div>
|
||||
<div id="mm-folder" data-json='{}'></div>
|
||||
</div>
|
||||
<div class="main_content">
|
||||
<header>
|
||||
@php
|
||||
<main class="media_manager template_2col">
|
||||
<div class="side_menu">
|
||||
@php
|
||||
$dataVue = [
|
||||
'textsearch' => $textSearch,
|
||||
'typesmedia' => $typesmedia,
|
||||
'etiquettes' => $etiquettes,
|
||||
'sujets' => $sujets,
|
||||
'current' => $currentSujet,
|
||||
];
|
||||
@endphp
|
||||
<div id="mm-side-header" data-json='@json($dataVue)'></div>
|
||||
@php
|
||||
$dataVue = [
|
||||
'selectedFolder' => $currentFolder,
|
||||
'selectedSubject' => $currentSujet,
|
||||
];
|
||||
@endphp
|
||||
<div id="mm-folder" data-json='@json($dataVue)'></div>
|
||||
</div>
|
||||
<div class="main_content">
|
||||
<header>
|
||||
@php
|
||||
$dataVue = [
|
||||
'textsearch' => $textSearch,
|
||||
'typesmedia' => $typesmedia,
|
||||
'etiquettes' => $etiquettes,
|
||||
];
|
||||
@endphp
|
||||
<div id="mm-filters" data-json='@json($dataVue)'></div>
|
||||
<div class="action_wrapper group">
|
||||
<div class="action_wrapper group">
|
||||
<div id="actionsBar">
|
||||
@php
|
||||
$dataVue = [
|
||||
'csrf' => csrf_token(),
|
||||
'etiquettes' => $etiquettes,
|
||||
];
|
||||
$dataVue = [
|
||||
'csrf' => csrf_token(),
|
||||
'etiquettes' => $etiquettes,
|
||||
];
|
||||
@endphp
|
||||
<div id="mm-actions" data-json='@json($dataVue)'></div>
|
||||
</div>
|
||||
<div class="display">
|
||||
<div class="display">
|
||||
<button><i class="fa fa-calendar-check selected"></i></button>
|
||||
<button><i class="fa fa-table-cells selected"></i></button>
|
||||
<button><i class="fa fa-table-list"></i></button>
|
||||
</div>
|
||||
<button><i class="fa fa-table-cells selected"></i></button>
|
||||
<button><i class="fa fa-table-list"></i></button>
|
||||
</div>
|
||||
<div id="mm-sorter" data-json='{}'></div>
|
||||
</div>
|
||||
</header>
|
||||
<div id="mm-display" data-json='{}'></div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
@php
|
||||
$dataVue = [
|
||||
'selectedFolder' => $currentFolder,
|
||||
];
|
||||
@endphp
|
||||
<div id="mm-display" data-json='@json($dataVue)'></div>
|
||||
</div>
|
||||
<div id="mm-basket" data-json='{}'></div>
|
||||
</main>
|
||||
|
||||
</main>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<!-- TODO : Faire le tri des js ci-dessous -->
|
||||
<script src="{{ mix('js/jquery.nestable.min.js') }}" defer></script>
|
||||
<script src="{{ mix('js/fabric.js') }}"></script>
|
||||
<script src="{{ mix('js/darkroom.js') }}"></script>
|
||||
<script src="{{ mix('js/jquery.caret.min.js') }}"></script>
|
||||
<script src="{{ mix('js/jquery.nestable.min.js') }}" defer></script>
|
||||
<script src="{{ mix('js/fabric.js') }}"></script>
|
||||
<script src="{{ mix('js/darkroom.js') }}"></script>
|
||||
<script src="{{ mix('js/jquery.caret.min.js') }}"></script>
|
||||
@endsection
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue