add panier widget
This commit is contained in:
parent
18281c42c9
commit
ca99267b1a
23 changed files with 1521 additions and 130 deletions
|
|
@ -92,6 +92,10 @@ class ImportArcadiaFiles extends Command
|
|||
$record->save();
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
|
||||
}elseif (substr($filename, 0, 10) == "DAM_MARQUE") {
|
||||
foreach ($fileContent->dam as $row) {
|
||||
$record = Marque::where('codMarq', $row->codMarq)->first();
|
||||
|
|
@ -105,6 +109,10 @@ class ImportArcadiaFiles extends Command
|
|||
$record->save();
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
|
||||
}elseif (substr($filename, 0, 15) == "DAM_MEDIA_SUJET") {
|
||||
foreach ($fileContent->mediaSujet as $row) {
|
||||
$record = Sujet::where('codeSujet', $row->code)->first();
|
||||
|
|
@ -118,6 +126,10 @@ class ImportArcadiaFiles extends Command
|
|||
$record->save();
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
|
||||
}elseif (substr($filename, 0, 20) == "DAM_MEDIA_TYPE_MEDIA") {
|
||||
foreach ($fileContent->mediatypemedia as $row) {
|
||||
$record = Typemedia::where('codeTypemedia', $row->code)->first();
|
||||
|
|
@ -131,6 +143,10 @@ class ImportArcadiaFiles extends Command
|
|||
$record->save();
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
|
||||
}elseif (substr($filename, 0, 17) == "DAM_MEDIA_TYPEVUE") {
|
||||
foreach ($fileContent->mediatypesvue as $row) {
|
||||
$record = Typevue::where('codeTypevue', $row->code)->first();
|
||||
|
|
@ -146,6 +162,10 @@ class ImportArcadiaFiles extends Command
|
|||
$record->save();
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
|
||||
}elseif (substr($filename, 0, 18) == "DAM_MEDIA_VARIANTE") {
|
||||
foreach ($fileContent->mediavariante as $row) {
|
||||
$record = Variante::where('codeVariante', $row->code)->first();
|
||||
|
|
@ -163,6 +183,10 @@ class ImportArcadiaFiles extends Command
|
|||
$record->save();
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
|
||||
}elseif (substr($filename, 0, 20) == "DAM_SITE_PROD_GROUPE") {
|
||||
foreach ($fileContent->SITE_PROD_GRP as $row) {
|
||||
$record = Site::where('id', $row->code)->first();
|
||||
|
|
@ -176,111 +200,11 @@ class ImportArcadiaFiles extends Command
|
|||
$record->save();
|
||||
}
|
||||
}
|
||||
}elseif (substr($filename, 0, 16) == "DAM_MEDIA_VISUEL") {
|
||||
foreach ($fileContent->MEDIA_VISUEL as $row) {
|
||||
$record = Media::where('arcadia_id', $row->code)->first();
|
||||
if(!$record){ // Insert new record
|
||||
$record = new Media();
|
||||
$record->arcadia_id = $row->code;
|
||||
if($row->extension != ""){
|
||||
$record->extension = $row->extension->typeFichier->libExtension;
|
||||
}
|
||||
|
||||
$record->libelle = $row->libelle;
|
||||
$record->largeur = $row->nbPxLargeur;
|
||||
$record->largeur_mm = $row->largeurMm;
|
||||
$record->hauteur = $row->nbPxHauteur;
|
||||
$record->hauteur_mm = $row->hauteurMm;
|
||||
$record->resolution = $row->pppLargeur;
|
||||
if($row->version != ""){
|
||||
$record->version = $row->version;
|
||||
}else{
|
||||
$record->version = 1;
|
||||
}
|
||||
|
||||
if($row->typemedia_id != ""){
|
||||
$record->typemedia_id = $row->codeTypeMedia;
|
||||
}else{
|
||||
$record->typemedia_id = 1;
|
||||
}
|
||||
if($row->typevue_id != ""){
|
||||
$record->typevue_id = $row->codeTypeVue;
|
||||
}
|
||||
$record->commentaire = $row->commentaire;
|
||||
$record->sujet_id = $row->codeSujet;
|
||||
if($row->langue != ""){
|
||||
$record->langue_id = $row->langue;
|
||||
}
|
||||
if($row->copyright != ""){
|
||||
$record->copyright_id = $row->copyright;
|
||||
}
|
||||
if($row->codeVariante != ""){
|
||||
$record->variante_id = $row->codeVariante;
|
||||
}
|
||||
if($row->dateCreation != ""){
|
||||
$row->dateCreation = substr($row->dateCreation, 0, 10);
|
||||
$date = explode("/", $row->dateCreation);
|
||||
$record->created_at = $date[2].'-'.$date[1].'-'.$date[0];
|
||||
}
|
||||
if($row->dateModification != ""){
|
||||
$row->dateModification = substr($row->dateModification, 0, 10);
|
||||
$date = explode("/", $row->dateModification);
|
||||
$record->updated_at = $date[2].'-'.$date[1].'-'.$date[0];
|
||||
}
|
||||
if($row->datePublication != ""){
|
||||
$row->datePublication = substr($row->datePublication, 0, 10);
|
||||
$date = explode("/", $row->datePublication);
|
||||
$record->published_at = $date[2].'-'.$date[1].'-'.$date[0];
|
||||
}
|
||||
$record->statut = config('services.statut.public_etendu');
|
||||
|
||||
// TODO lien avec les sites, marques et articles
|
||||
|
||||
|
||||
$mediaFile = "/images/".$record->arcadia_id.".".$record->extension;
|
||||
$fileExists = Storage::disk('arcadia')->exists($mediaFile);
|
||||
if($fileExists){
|
||||
$file = Storage::disk('arcadia')->get($mediaFile);
|
||||
|
||||
// Affectation d'un dossier et d'un uid
|
||||
$destinationPath = $this->get_mediaFolder()."/";
|
||||
$record->folder = $destinationPath;
|
||||
$record->uid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
// 32 bits for "time_low"
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
// 16 bits for "time_mid"
|
||||
mt_rand(0, 0xffff),
|
||||
// 16 bits for "time_hi_and_version",
|
||||
// four most significant bits holds version number 4
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
// 16 bits, 8 bits for "clk_seq_hi_res",
|
||||
// 8 bits for "clk_seq_low",
|
||||
// two most significant bits holds zero and one for variant DCE1.1
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
// 48 bits for "node"
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
|
||||
// déplacement du média et renommage du fichier
|
||||
$full_path_source = Storage::disk('arcadia')->getDriver()->getAdapter()->applyPathPrefix($mediaFile);
|
||||
$full_path_dest = Storage::disk('local')->getDriver()->getAdapter()->applyPathPrefix($destinationPath.$record->uid. '.' .$record->extension);
|
||||
File::move($full_path_source, $full_path_dest);
|
||||
|
||||
// calcul de la taille du média et durée
|
||||
$record->taille = $this->formatBytes($this->get_file_size($full_path_dest));
|
||||
$record->save();
|
||||
|
||||
// ---- Creation des vignettes de base
|
||||
$this->create_sys_thumb($record);
|
||||
// ---- Creation des vignettes en lien avec le sujet du média
|
||||
$this->create_thumb($record);
|
||||
}
|
||||
}
|
||||
}
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
$bar->advance();
|
||||
}
|
||||
|
||||
|
|
|
|||
234
app/Console/Commands/ImportMedia.php
Normal file
234
app/Console/Commands/ImportMedia.php
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use App\Http\Traits\MediaTools;
|
||||
use App\Article;
|
||||
use App\Marque;
|
||||
use App\Media;
|
||||
|
||||
class ImportMedia extends Command
|
||||
{
|
||||
use MediaTools;
|
||||
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'medias:import';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Import des fichiers xml Média Visuel Arcadia';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$this->info('Démarrage du traitement');
|
||||
$files = Storage::disk('arcadia')->files();
|
||||
|
||||
|
||||
|
||||
$this->line("-> Import du fichier DAM_MEDIA_VISUEL");
|
||||
// ---- Traitement de l'import des XML Visuel
|
||||
foreach ($files as $filename) {
|
||||
|
||||
if($filename == ".gitignore") continue;
|
||||
|
||||
// ---- Récupération du contenu
|
||||
$oneFile = Storage::disk('arcadia')->get($filename);
|
||||
$fileContent = simplexml_load_string($oneFile);
|
||||
|
||||
// ---- traitement du fichier
|
||||
if (substr($filename, 0, 16) == "DAM_MEDIA_VISUEL") {
|
||||
foreach ($fileContent->MEDIA_VISUEL as $row) {
|
||||
$record = Media::where('arcadia_id', $row->code)->first();
|
||||
if(!$record){ // Insert new record
|
||||
$record = new Media();
|
||||
$record->arcadia_id = $row->code;
|
||||
if($row->extension != ""){
|
||||
$record->extension = $row->extension->typeFichier->libExtension;
|
||||
}
|
||||
|
||||
$record->libelle = $row->libelle;
|
||||
$record->largeur = $row->nbPxLargeur;
|
||||
$record->largeur_mm = $row->largeurMm;
|
||||
$record->hauteur = $row->nbPxHauteur;
|
||||
$record->hauteur_mm = $row->hauteurMm;
|
||||
$record->resolution = $row->pppLargeur;
|
||||
if($row->version != ""){
|
||||
$record->version = $row->version;
|
||||
}else{
|
||||
$record->version = 1;
|
||||
}
|
||||
|
||||
if($row->typemedia_id != ""){
|
||||
$record->typemedia_id = $row->codeTypeMedia;
|
||||
}else{
|
||||
$record->typemedia_id = 1;
|
||||
}
|
||||
if($row->typevue_id != ""){
|
||||
$record->typevue_id = $row->codeTypeVue;
|
||||
}
|
||||
$record->commentaire = $row->commentaire;
|
||||
$record->sujet_id = $row->codeSujet;
|
||||
if($row->langue != ""){
|
||||
$record->langue_id = $row->langue;
|
||||
}
|
||||
if($row->copyright != ""){
|
||||
$record->copyright_id = $row->copyright;
|
||||
}
|
||||
if($row->codeVariante != ""){
|
||||
$record->variante_id = $row->codeVariante;
|
||||
}
|
||||
if($row->dateCreation != ""){
|
||||
$row->dateCreation = substr($row->dateCreation, 0, 10);
|
||||
$date = explode("/", $row->dateCreation);
|
||||
$record->created_at = $date[2].'-'.$date[1].'-'.$date[0];
|
||||
}
|
||||
if($row->dateModification != ""){
|
||||
$row->dateModification = substr($row->dateModification, 0, 10);
|
||||
$date = explode("/", $row->dateModification);
|
||||
$record->updated_at = $date[2].'-'.$date[1].'-'.$date[0];
|
||||
}
|
||||
if($row->datePublication != ""){
|
||||
$row->datePublication = substr($row->datePublication, 0, 10);
|
||||
$date = explode("/", $row->datePublication);
|
||||
$record->published_at = $date[2].'-'.$date[1].'-'.$date[0];
|
||||
}
|
||||
$record->statut = config('services.statut.public_etendu');
|
||||
|
||||
$mediaFile = "/images/".$record->arcadia_id.".".$record->extension;
|
||||
$fileExists = Storage::disk('arcadia')->exists($mediaFile);
|
||||
if($fileExists){
|
||||
$file = Storage::disk('arcadia')->get($mediaFile);
|
||||
|
||||
// Affectation d'un dossier et d'un uid
|
||||
$destinationPath = $this->get_mediaFolder()."/";
|
||||
$record->folder = $destinationPath;
|
||||
$record->uid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
// 32 bits for "time_low"
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
// 16 bits for "time_mid"
|
||||
mt_rand(0, 0xffff),
|
||||
// 16 bits for "time_hi_and_version",
|
||||
// four most significant bits holds version number 4
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
// 16 bits, 8 bits for "clk_seq_hi_res",
|
||||
// 8 bits for "clk_seq_low",
|
||||
// two most significant bits holds zero and one for variant DCE1.1
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
// 48 bits for "node"
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
|
||||
// déplacement du média et renommage du fichier
|
||||
$full_path_source = Storage::disk('arcadia')->getDriver()->getAdapter()->applyPathPrefix($mediaFile);
|
||||
$full_path_dest = Storage::disk('local')->getDriver()->getAdapter()->applyPathPrefix($destinationPath.$record->uid. '.' .$record->extension);
|
||||
File::move($full_path_source, $full_path_dest);
|
||||
|
||||
// calcul de la taille du média et durée
|
||||
$record->taille = $this->formatBytes($this->get_file_size($full_path_dest));
|
||||
$record->save();
|
||||
|
||||
// ---- Creation des vignettes de base
|
||||
$this->create_sys_thumb($record);
|
||||
// ---- Creation des vignettes en lien avec le sujet du média
|
||||
$this->create_thumb($record);
|
||||
}else{
|
||||
$this->line("DAM_MEDIA_VISUEL : le visuel du media n°".$row->code. " n'a pas été trouvé");
|
||||
}
|
||||
}else{
|
||||
$this->line("DAM_MEDIA_VISUEL : le media n°".$row->code. " existe déjà en base");
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ---- Traitement de l'association media <-> article
|
||||
$this->line("-> Import du fichier DAM_ASSO_ARTICLE");
|
||||
foreach ($files as $filename) {
|
||||
if($filename == ".gitignore") continue;
|
||||
|
||||
// ---- Récupération du contenu
|
||||
$oneFile = Storage::disk('arcadia')->get($filename);
|
||||
$fileContent = simplexml_load_string($oneFile);
|
||||
|
||||
// ---- traitement du fichier
|
||||
if (substr($filename, 0, 16) == "DAM_ASSO_ARTICLE") {
|
||||
foreach ($fileContent->mediaassoarticle as $row) {
|
||||
$record = Media::where('arcadia_id', $row->codeVisuel)->first();
|
||||
if($record){
|
||||
$article = Article::where('noArt', $row->noArt)->first();
|
||||
if($article){
|
||||
$record->articles()->attach($article->id);
|
||||
}else{
|
||||
$this->line("DAM_ASSO_ARTICLE : le media n°".$row->codeVisuel. " ne peut être lié à l'article n°".$row->noArt);
|
||||
}
|
||||
}else{
|
||||
$this->line("DAM_ASSO_ARTICLE : le media n°".$row->codeVisuel. " n'existe pas");
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ---- Traitement de l'association media <-> marque
|
||||
$this->line("-> Import du fichier DAM_ASSO_MARQUE");
|
||||
foreach ($files as $filename) {
|
||||
if($filename == ".gitignore") continue;
|
||||
|
||||
// ---- Récupération du contenu
|
||||
$oneFile = Storage::disk('arcadia')->get($filename);
|
||||
$fileContent = simplexml_load_string($oneFile);
|
||||
|
||||
// ---- traitement du fichier
|
||||
if (substr($filename, 0, 15) == "DAM_ASSO_MARQUE") {
|
||||
foreach ($fileContent->mediaassomarque as $row) {
|
||||
$record = Media::where('arcadia_id', $row->codeVisuel)->first();
|
||||
if($record){
|
||||
$record->marques()->attach($row->codMarq);
|
||||
}else{
|
||||
$this->line("DAM_ASSO_MARQUE : le media n°".$row->codeVisuel. " n'existe pas");
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Suppression du fichier
|
||||
Storage::disk('arcadia')->delete($filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->line("");
|
||||
$this->info('Fin du traitement');
|
||||
}
|
||||
}
|
||||
|
|
@ -22,6 +22,7 @@ class CommunController extends Controller
|
|||
{
|
||||
$user = Auth::user();
|
||||
$sujets = $user->sujets;
|
||||
$paniers = Auth::user()->paniersFavoris;
|
||||
$recherches = Recherche::where('user_id', $user->id)
|
||||
->with("sujet")
|
||||
->limit(10)
|
||||
|
|
@ -33,7 +34,7 @@ class CommunController extends Controller
|
|||
})
|
||||
->with("sujet")
|
||||
->get();
|
||||
return view('home')->with(['sujets'=> $sujets, 'recherches'=> $recherches, 'dossiers'=> $dossiers]);
|
||||
return view('home')->with(['sujets'=> $sujets, 'recherches'=> $recherches, 'dossiers'=> $dossiers, 'paniers'=> $paniers]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ use App\Tag;
|
|||
use App\Article;
|
||||
use App\Recherche;
|
||||
use App\Historique;
|
||||
use App\Panier;
|
||||
use App\Http\Traits\MediaTools;
|
||||
|
||||
class MediaController extends Controller
|
||||
|
|
@ -35,6 +36,7 @@ class MediaController extends Controller
|
|||
{
|
||||
$filters = "";
|
||||
$sujets = Auth::user()->sujets;
|
||||
$paniers = Auth::user()->paniersOwner;
|
||||
$typemedias = Typemedia::all();
|
||||
$langues = Langue::all();
|
||||
$copyrights = Copyright::all();
|
||||
|
|
@ -42,7 +44,6 @@ class MediaController extends Controller
|
|||
$sites = Site::orderBy('libelle')->get();
|
||||
$marques = Marque::all();
|
||||
|
||||
|
||||
$dossier_id = $request->get('d');
|
||||
$sujet_id = $request->get('s');
|
||||
$textSearch = $request->get('t');
|
||||
|
|
@ -83,6 +84,7 @@ class MediaController extends Controller
|
|||
'currentFolder'=> $dossier_id,
|
||||
'currentSujet'=> $sujet_id,
|
||||
'currentFilters'=> $filters,
|
||||
'paniers' => $paniers,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
|||
122
app/Http/Controllers/PanierController.php
Normal file
122
app/Http/Controllers/PanierController.php
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Panier;
|
||||
use App\Media;
|
||||
|
||||
class PanierController extends Controller
|
||||
{
|
||||
/**
|
||||
* Pas principale des paniers
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$paniers = "";
|
||||
return view('panier.index')->with([
|
||||
'paniers'=> $paniers,
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajout de média à un panier
|
||||
*/
|
||||
public function addMediasBasket(Request $request)
|
||||
{
|
||||
$response = false;
|
||||
|
||||
$mediasToAdd = $request->input('medias');
|
||||
$panierId = $request->input('panier_id');
|
||||
|
||||
$panier = Panier::where('id', $panierId)->with('medias')->first();
|
||||
if($panier){
|
||||
$result = $panier->medias()->syncWithoutDetaching($mediasToAdd);
|
||||
$medias = Media::whereIn('id', $result['attached'])->get();
|
||||
$response = $medias;
|
||||
}
|
||||
|
||||
return json_encode($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Suppression de média à un panier
|
||||
*/
|
||||
public function removeMediasBasket(Request $request)
|
||||
{
|
||||
$response = false;
|
||||
|
||||
$mediaToRemove = $request->input('media_id');
|
||||
$panierId = $request->input('panier_id');
|
||||
|
||||
$panier = Panier::where('id', $panierId)->with('medias')->first();
|
||||
if($panier && $mediaToRemove != ""){
|
||||
$panier->medias()->detach($mediaToRemove);
|
||||
$response = true;
|
||||
}
|
||||
|
||||
return json_encode($response);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ajoute un panier
|
||||
*/
|
||||
public function addBasket(Request $request)
|
||||
{
|
||||
$response = false;
|
||||
$title = $request->input('title');
|
||||
|
||||
if($title == ""){
|
||||
$title = "Panier du ".date("d/m/Y");
|
||||
}
|
||||
|
||||
$panier = new Panier();
|
||||
$panier->owner = Auth::user()->id;
|
||||
$panier->libelle = $title;
|
||||
if($panier->save()){
|
||||
$response = $panier;
|
||||
}
|
||||
|
||||
return json_encode($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* supprimer un panier
|
||||
*
|
||||
*/
|
||||
public function removeBasket(Request $request)
|
||||
{
|
||||
$response = false;
|
||||
$user_id = Auth::user()->id;
|
||||
$basket_id = $request->input('basket_id');
|
||||
|
||||
|
||||
$panier = Panier::where('id', $basket_id);
|
||||
if($panier){
|
||||
$panier->delete();
|
||||
$response = true;
|
||||
}
|
||||
return json_encode($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Charge un panier
|
||||
*/
|
||||
public function loadBasket(Request $request)
|
||||
{
|
||||
$response = false;
|
||||
$panierId = $request->input('panier_id');
|
||||
|
||||
$panier = Panier::where('id', $panierId)->with('medias')->first();
|
||||
if($panier){
|
||||
$response = $panier;
|
||||
}
|
||||
|
||||
return json_encode($response);
|
||||
}
|
||||
}
|
||||
|
|
@ -241,7 +241,6 @@ class UserController extends Controller
|
|||
*/
|
||||
public function favorisFolder(Request $request)
|
||||
{
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
||||
$dossier_id = $request->input('dossier_id');
|
||||
$favoris = $request->input('favoris');
|
||||
|
||||
|
|
@ -254,4 +253,23 @@ class UserController extends Controller
|
|||
}
|
||||
return json_encode(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* ajouter un panier en favoris
|
||||
*
|
||||
*/
|
||||
public function favorisBasket(Request $request)
|
||||
{
|
||||
$basket_id = $request->input('basket_id');
|
||||
$favoris = $request->input('favoris');
|
||||
|
||||
$basketFav = Auth::user()->paniersFavoris()->where('id', $basket_id)->first();
|
||||
|
||||
if($favoris == "false" && $basketFav){
|
||||
Auth::user()->paniersFavoris()->detach($basket_id);
|
||||
}elseif ($favoris == "true" && !$basketFav) {
|
||||
Auth::user()->paniersFavoris()->attach($basket_id);
|
||||
}
|
||||
return json_encode(true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,4 +114,12 @@ class Media extends Model
|
|||
{
|
||||
return $this->hasMany('App\Historique');
|
||||
}
|
||||
|
||||
/**
|
||||
* The paniers that belong to the media.
|
||||
*/
|
||||
public function paniers()
|
||||
{
|
||||
return $this->belongsToMany('App\Panier', 'paniers_medias', 'media_id', 'panier_id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
36
app/Panier.php
Normal file
36
app/Panier.php
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class Panier extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
/**
|
||||
* Get the user that owns the panier.
|
||||
*/
|
||||
public function owner()
|
||||
{
|
||||
return $this->belongsTo('App\User', 'owner');
|
||||
}
|
||||
|
||||
/**
|
||||
* The users that belong to the panier.
|
||||
*/
|
||||
public function usersFavoris()
|
||||
{
|
||||
return $this->belongsToMany('App\User', 'paniers_users', 'panier_id', 'user_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* The medias that belong to the panier.
|
||||
*/
|
||||
public function medias()
|
||||
{
|
||||
return $this->belongsToMany('App\Media', 'paniers_medias', 'panier_id', 'media_id');
|
||||
}
|
||||
|
||||
}
|
||||
16
app/User.php
16
app/User.php
|
|
@ -115,4 +115,20 @@ class User extends Authenticatable
|
|||
{
|
||||
return $this->hasMany('App\Recherche');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the paniers for the user.
|
||||
*/
|
||||
public function paniersOwner()
|
||||
{
|
||||
return $this->hasMany('App\Panier', 'owner');
|
||||
}
|
||||
|
||||
/**
|
||||
* The paniers that belong to the user.
|
||||
*/
|
||||
public function paniersFavoris()
|
||||
{
|
||||
return $this->belongsToMany('App\Panier', 'paniers_users', 'user_id', 'panier_id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
142
public/css/app.css
vendored
142
public/css/app.css
vendored
|
|
@ -13538,6 +13538,7 @@ a {
|
|||
|
||||
.heading a {
|
||||
margin-left: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
h1 {
|
||||
|
|
@ -13720,6 +13721,8 @@ table tfoot tr:hover {
|
|||
|
||||
.media_manager {
|
||||
height: calc(100% - 48px);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.media_manager .main_content {
|
||||
|
|
@ -13950,8 +13953,9 @@ table tfoot tr:hover {
|
|||
.media_manager .main_content .media_container {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
scrollbar-color: #272626 #1a1a1a;
|
||||
position: relative;
|
||||
height: calc(100% - 180px);
|
||||
height: calc(100% - 174px);
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .loader {
|
||||
|
|
@ -14267,6 +14271,7 @@ table tfoot tr:hover {
|
|||
.media_manager .side_menu .folder_container {
|
||||
background-color: #333333;
|
||||
height: calc(100% - 129px);
|
||||
scrollbar-color: #272626 #1a1a1a;
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
}
|
||||
|
|
@ -14345,6 +14350,141 @@ table tfoot tr:hover {
|
|||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu {
|
||||
width: 380px;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .close_side_menu {
|
||||
left: -17px;
|
||||
border-radius: 3px 0 0 3px;
|
||||
border-left: 1px solid #505050;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu.collapse {
|
||||
-webkit-transform: translateX(100%);
|
||||
transform: translateX(100%);
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu header {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu header a {
|
||||
margin-left: 5px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu header .panier_menu {
|
||||
width: 140px;
|
||||
box-shadow: 0 4px 5px 3px rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
display: none;
|
||||
background-color: #333333;
|
||||
z-index: 1;
|
||||
right: 12px;
|
||||
top: 48px;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu header .panier_menu .menu-options {
|
||||
list-style: none;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu header .panier_menu .menu-options .menu-option {
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu header .panier_menu .menu-options .menu-option:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content {
|
||||
height: calc(100% - 59px);
|
||||
overflow-y: auto;
|
||||
scrollbar-color: #272626 #1a1a1a;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem {
|
||||
display: inline-block;
|
||||
border: 1px solid grey;
|
||||
width: 202px;
|
||||
margin: 2px 5px;
|
||||
background-color: #333333;
|
||||
transition: 0.3s ease-in-out;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem .media {
|
||||
height: 200px;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem .media::before {
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
color: #ffffff;
|
||||
font-size: 59px;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem .media.video::before {
|
||||
content: "\F167";
|
||||
font-family: "Font Awesome 5 Brands";
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem .media.son::before {
|
||||
content: "\F58F";
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem .media.doc::before {
|
||||
content: "\F15C";
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem:hover {
|
||||
background-color: #3b3b3b;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem .bar {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
transition: opacity 0.5s;
|
||||
bottom: 0;
|
||||
height: 29px;
|
||||
width: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem .bar a {
|
||||
display: inline-block;
|
||||
padding: 5px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.panier_side_menu .panier_content .imageItem:hover .bar {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/******************************************
|
||||
POPUP EDITION MEDIA
|
||||
******************************************/
|
||||
|
|
|
|||
337
public/js/app.js
vendored
337
public/js/app.js
vendored
|
|
@ -10934,6 +10934,7 @@ jQuery.fn.scrollParent = function () {
|
|||
$(window).data('offset', 0);
|
||||
$(window).data('limit', 50);
|
||||
$(window).data('currentFolder', 0);
|
||||
$(window).data('currentBasket', 0);
|
||||
$(window).data('filter', {}); //confirm popup
|
||||
|
||||
$.fancyConfirm = function (opts) {
|
||||
|
|
@ -10997,6 +10998,12 @@ $(document).mouseup(function (e) {
|
|||
menuContextuel.hide();
|
||||
}
|
||||
|
||||
var cartMenu = $(".panier_side_menu .panier_menu");
|
||||
|
||||
if (!cartMenu.is(e.target) && cartMenu.has(e.target).length === 0 && $("#menu_panier").has(e.target).length === 0) {
|
||||
cartMenu.hide();
|
||||
}
|
||||
|
||||
var filter_list = $(".filter_selector");
|
||||
|
||||
if (!filter_list.is(e.target) && filter_list.has(e.target).length === 0) {
|
||||
|
|
@ -11305,14 +11312,14 @@ $(document).ready(function () {
|
|||
$(".close_side_menu").on('click', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
if ($(".side_menu ").hasClass('collapse')) {
|
||||
$(".side_menu ").removeClass('collapse');
|
||||
$(".close_side_menu i").removeClass('fa-chevron-right');
|
||||
$(".close_side_menu i").addClass('fa-chevron-left');
|
||||
if ($(this).parents(".side_menu ").hasClass('collapse')) {
|
||||
$(this).parents(".side_menu ").removeClass('collapse');
|
||||
$(this).find("i").removeClass('fa-chevron-right');
|
||||
$(this).find("i").addClass('fa-chevron-left');
|
||||
} else {
|
||||
$(".side_menu ").addClass('collapse');
|
||||
$(".close_side_menu i").removeClass('fa-chevron-left');
|
||||
$(".close_side_menu i").addClass('fa-chevron-right');
|
||||
$(this).parents(".side_menu ").addClass('collapse');
|
||||
$(this).find("i").removeClass('fa-chevron-left');
|
||||
$(this).find("i").addClass('fa-chevron-right');
|
||||
}
|
||||
}); // ---- init des dossiers lorsqu'on change de sujet
|
||||
|
||||
|
|
@ -11753,7 +11760,9 @@ $(document).ready(function () {
|
|||
$("#form_download .medias").val(medias.join());
|
||||
}
|
||||
}).trigger("click");
|
||||
} else if ($target.hasClass('addBasket')) {// ajouter le média au panier
|
||||
} else if ($target.hasClass('addBasket')) {
|
||||
// ajouter le média au panier
|
||||
addMediasBasket([$(this).attr('data-id')]);
|
||||
} else if ($target.hasClass('deleteItem')) {
|
||||
// supprimer le média
|
||||
removeMedias([$(this).attr('data-id')]);
|
||||
|
|
@ -11866,7 +11875,7 @@ $(document).ready(function () {
|
|||
|
||||
var drPlugin = null;
|
||||
var viewer = null;
|
||||
$(".main_content .wrapper").on("dblclick", '.imageItem', function (event) {
|
||||
$(".media_manager").on("dblclick", '.imageItem', function (event) {
|
||||
event.preventDefault(); // récupère l'image de preview
|
||||
|
||||
var imgPreview = $(this).attr('data-preview') + '?t=' + new Date().getTime();
|
||||
|
|
@ -12046,7 +12055,13 @@ $(document).ready(function () {
|
|||
$(".tab_edit #commentaire").val(result.data.commentaire);
|
||||
$(".tab_edit #version").val(result.data.version);
|
||||
$(".tab_edit #created_at").val(result.data.created_at);
|
||||
$(".tab_edit #created_by").val(result.data.owner.firstname + " " + result.data.owner.lastname);
|
||||
|
||||
if (result.data.owner != null) {
|
||||
$(".tab_edit #created_by").val(result.data.owner.firstname + " " + result.data.owner.lastname);
|
||||
} else {
|
||||
$(".tab_edit #created_by").val("");
|
||||
}
|
||||
|
||||
$(".tab_edit #updated_at").val(result.data.updated_at);
|
||||
$(".tab_edit #published_at").val(result.data.published_at);
|
||||
$(".tab_edit #statut").val(result.data.statut); // articles lié
|
||||
|
|
@ -12246,6 +12261,7 @@ $(document).ready(function () {
|
|||
$('.tab_edit .add_article').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
var arcadia_id = prompt("Indiquez le code Arcadia de l'article.", arcadia_id);
|
||||
if (arcadia_id === null) return false;
|
||||
$.ajax({
|
||||
url: '/ajax/get-article',
|
||||
method: 'POST',
|
||||
|
|
@ -13158,6 +13174,300 @@ window.create_UUID = function () {
|
|||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/js/panier.js":
|
||||
/*!********************************!*\
|
||||
!*** ./resources/js/panier.js ***!
|
||||
\********************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
$(document).ready(function () {
|
||||
if ($(".panier_side_menu").length) {
|
||||
// ---- collapse/expand panier side menu
|
||||
$("#menu_panier").on('click', function (event) {
|
||||
event.preventDefault();
|
||||
$(".panier_side_menu .panier_menu").toggle();
|
||||
}); // ---- Chargement par défaut du premier panier
|
||||
|
||||
if ($("#panier_selector").val()) {
|
||||
$(window).data('currentBasket', $("#panier_selector").val());
|
||||
loadBasket($(window).data('currentBasket'));
|
||||
} // ---- chargement du panier on change du sélector
|
||||
|
||||
|
||||
$("#panier_selector").on('change', function (event) {
|
||||
$(window).data('currentBasket', $("#panier_selector").val());
|
||||
loadBasket($(window).data('currentBasket'));
|
||||
}); // ---- Ajout de média au panier en masse
|
||||
|
||||
$('.action_add_basket').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
var medias = [];
|
||||
$('.media_container .imageItem').each(function (index) {
|
||||
if ($(this).attr("aria-grabbed") == "true") {
|
||||
medias.push($(this).attr("data-id"));
|
||||
}
|
||||
});
|
||||
addMediasBasket(medias);
|
||||
}); // ---- Ajout un nouveau panier
|
||||
|
||||
$('.panier_side_menu .add_panier').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
$(".panier_side_menu .panier_menu").hide();
|
||||
var d = new Date();
|
||||
var strDate = ("0" + d.getDate()).slice(-2) + "/" + ("0" + (d.getMonth() + 1)).slice(-2) + "/" + d.getFullYear();
|
||||
var defaultTitle = "Panier du " + strDate;
|
||||
var title = prompt("Indiquez le code Arcadia de ce média", defaultTitle);
|
||||
$.ajax({
|
||||
url: '/ajax/add-basket',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
title: title
|
||||
},
|
||||
success: function success(result) {
|
||||
if (result) {
|
||||
$("#panier_selector").append(new Option(result.libelle, result.id));
|
||||
$("#panier_selector").val(result.id);
|
||||
$("#panier_selector").trigger("change");
|
||||
}
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de la création du panier, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}); // ---- Ajout un nouveau panier
|
||||
|
||||
$('.panier_side_menu .goto_panier').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
$(".panier_side_menu .panier_menu").hide();
|
||||
window.location.href = $(this).attr("data-url") + "?p=" + $(window).data('currentBasket');
|
||||
}); // ---- Supprimer un média du panier
|
||||
|
||||
$('.panier_content').on('click', ".imageItem .media_remove_basket", function (event) {
|
||||
event.preventDefault();
|
||||
var $media = $(this).parents(".imageItem");
|
||||
var media_id = $media.attr("data-id");
|
||||
$.ajax({
|
||||
url: '/ajax/remove-media-basket',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
media_id: media_id,
|
||||
panier_id: $(window).data('currentBasket')
|
||||
},
|
||||
success: function success(result) {
|
||||
if (result) {
|
||||
$(".panier_side_menu .imageItem[data-id='" + media_id + "']").remove();
|
||||
}
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de la suppression du média, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}); // ---- Supprimer un média du panier
|
||||
|
||||
$('.panier_content').on('click', ".imageItem .media_info", function (event) {
|
||||
event.preventDefault();
|
||||
var $media = $(this).parents(".imageItem");
|
||||
$media.trigger('dblclick');
|
||||
}); // ---- gestion du dragover
|
||||
|
||||
$(".panier_content").on("dragover", function (event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}); // ---- gestion du dragleave
|
||||
|
||||
$(".panier_content").on("dragleave", function (event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}); // ---- evt lorsque l'on drop des élements dans le widget panier
|
||||
|
||||
$(".panier_content").on("drop", function (event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
var isMediaDepot = false; // source
|
||||
|
||||
var medias = event.originalEvent.dataTransfer.getData("Text").split(","); // Contrôles
|
||||
|
||||
$.each(medias, function (index, media_id) {
|
||||
if ($(".media_container .imageItem[data-id='" + media_id + "']").attr("data-depot") == "1") {
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Vous ne pouvez pas mettre les médias du dépôt dans un panier.",
|
||||
type: "error"
|
||||
});
|
||||
isMediaDepot = true;
|
||||
return false;
|
||||
}
|
||||
}); // Ajout des médias dans le panier
|
||||
|
||||
if (!isMediaDepot) {
|
||||
$.ajax({
|
||||
url: '/ajax/add-media-basket',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
medias: medias,
|
||||
panier_id: $(window).data('currentBasket')
|
||||
},
|
||||
success: function success(result) {
|
||||
if (result) {
|
||||
$.each(result, function (index, media) {
|
||||
addmediaBasketHtml(media);
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de l'ajout de média au panier, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}); // ---- Ajout de médias au panier
|
||||
|
||||
window.addMediasBasket = function (medias) {
|
||||
var thumb = "";
|
||||
var preview = "";
|
||||
var content = "";
|
||||
|
||||
if (medias.length == 0) {
|
||||
$.fancyMessage({
|
||||
title: "Ajout de média au panier",
|
||||
message: "Veuillez sélectionner les médias à ajouter.",
|
||||
type: "info"
|
||||
});
|
||||
} else if ($(window).data('currentBasket') == 0) {
|
||||
$.fancyMessage({
|
||||
title: "Ajout de média au panier",
|
||||
message: "Veuillez sélectionner un panier.",
|
||||
type: "info"
|
||||
});
|
||||
} else {
|
||||
$.ajax({
|
||||
url: '/ajax/add-media-basket',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
medias: medias,
|
||||
panier_id: $(window).data('currentBasket')
|
||||
},
|
||||
success: function success(result) {
|
||||
if (result) {
|
||||
$.each(result, function (index, media) {
|
||||
addmediaBasketHtml(media);
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de l'ajout de média au panier, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}; // ---- Charge un panier dans le widget
|
||||
|
||||
|
||||
function loadBasket(panierId) {
|
||||
if (panierId != 0) {
|
||||
$.ajax({
|
||||
url: '/ajax/load-basket',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
panier_id: $(window).data('currentBasket')
|
||||
},
|
||||
success: function success(result) {
|
||||
if (result) {
|
||||
$(".panier_side_menu .panier_content").html("");
|
||||
$.each(result.medias, function (index, media) {
|
||||
addmediaBasketHtml(media);
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors du chargement du panier, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
} // ---- Ajoute un média dans le widget panier
|
||||
|
||||
|
||||
function addmediaBasketHtml(media) {
|
||||
var thumb = "";
|
||||
var preview = "";
|
||||
var content = "";
|
||||
var itemClass = "";
|
||||
|
||||
switch (media.typemedia_id) {
|
||||
case 1:
|
||||
itemClass = "";
|
||||
|
||||
if (media.extension == "pdf" || media.extension == "ai" || media.extension == "psd") {
|
||||
thumb = media.folder + media.uid + "_thumb.png";
|
||||
preview = media.folder + media.uid + "_preview.png";
|
||||
} else {
|
||||
thumb = media.folder + media.uid + "_thumb." + media.extension;
|
||||
preview = media.folder + media.uid + "_preview." + media.extension;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 2:
|
||||
itemClass = "";
|
||||
thumb = media.folder + media.uid + "." + media.extension;
|
||||
preview = media.folder + media.uid + "." + media.extension;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
itemClass = "video";
|
||||
thumb = "";
|
||||
preview = media.folder + media.uid + "." + media.extension;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
itemClass = "son";
|
||||
thumb = "";
|
||||
preview = media.folder + media.uid + "." + media.extension;
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
|
||||
content = '<div class="imageItem" data-id="' + media.id + '" data-depot="' + media.isDepot + '" data-ext="' + media.extension + '" data-typemedia="' + media.typemedia_id + '" data-preview="' + preview + '" data-src="' + media.folder + media.uid + "." + media.extension + '" draggable="false" aria-grabbed="false">';
|
||||
content += '<div class="media ' + itemClass + '" style="background-image:url(' + thumb + ')"></div>';
|
||||
content += '<div class="bar"> <a href="#" class="media_info"><i class="far fa-info-circle"></i></a><a href="#" class="media_remove_basket"><i class="far fa-times-circle"></i></a></div>';
|
||||
content += '</div>';
|
||||
$(".panier_side_menu .panier_content").append(content);
|
||||
}
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/js/searchengine.js":
|
||||
/*!**************************************!*\
|
||||
!*** ./resources/js/searchengine.js ***!
|
||||
|
|
@ -13328,9 +13638,9 @@ window.updateFilter = function (filter) {
|
|||
/***/ }),
|
||||
|
||||
/***/ 0:
|
||||
/*!********************************************************************************************************************************************************************!*\
|
||||
!*** multi ./resources/js/app.js ./resources/js/admin.js ./resources/js/media.js ./resources/js/depot.js ./resources/js/searchengine.js ./resources/sass/app.scss ***!
|
||||
\********************************************************************************************************************************************************************/
|
||||
/*!*********************************************************************************************************************************************************************************************!*\
|
||||
!*** multi ./resources/js/app.js ./resources/js/admin.js ./resources/js/media.js ./resources/js/depot.js ./resources/js/panier.js ./resources/js/searchengine.js ./resources/sass/app.scss ***!
|
||||
\*********************************************************************************************************************************************************************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
|
|
@ -13338,6 +13648,7 @@ __webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\app.js */"./resource
|
|||
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\admin.js */"./resources/js/admin.js");
|
||||
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\media.js */"./resources/js/media.js");
|
||||
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\depot.js */"./resources/js/depot.js");
|
||||
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\panier.js */"./resources/js/panier.js");
|
||||
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\searchengine.js */"./resources/js/searchengine.js");
|
||||
module.exports = __webpack_require__(/*! D:\sources\www\ldc-dam\resources\sass\app.scss */"./resources/sass/app.scss");
|
||||
|
||||
|
|
|
|||
6
resources/js/app.js
vendored
6
resources/js/app.js
vendored
|
|
@ -25,6 +25,7 @@ jQuery.fn.scrollParent = function() {
|
|||
$(window).data('offset', 0);
|
||||
$(window).data('limit', 50);
|
||||
$(window).data('currentFolder', 0);
|
||||
$(window).data('currentBasket', 0);
|
||||
$(window).data('filter', {});
|
||||
|
||||
//confirm popup
|
||||
|
|
@ -122,6 +123,11 @@ $(document).mouseup(function(e) {
|
|||
menuContextuel.hide();
|
||||
}
|
||||
|
||||
var cartMenu = $(".panier_side_menu .panier_menu");
|
||||
if (!cartMenu.is(e.target) && cartMenu.has(e.target).length === 0 && $("#menu_panier").has(e.target).length === 0) {
|
||||
cartMenu.hide();
|
||||
}
|
||||
|
||||
var filter_list = $(".filter_selector");
|
||||
if (!filter_list.is(e.target) && filter_list.has(e.target).length === 0) {
|
||||
$(".filter_selector .list").hide();
|
||||
|
|
|
|||
25
resources/js/media.js
vendored
25
resources/js/media.js
vendored
|
|
@ -25,14 +25,14 @@ $(document).ready(function() {
|
|||
// ---- collapse/expand side menu
|
||||
$(".close_side_menu").on('click', function(event) {
|
||||
event.preventDefault();
|
||||
if($(".side_menu ").hasClass('collapse')){
|
||||
$(".side_menu ").removeClass('collapse')
|
||||
$(".close_side_menu i").removeClass('fa-chevron-right');
|
||||
$(".close_side_menu i").addClass('fa-chevron-left');
|
||||
if($(this).parents(".side_menu ").hasClass('collapse')){
|
||||
$(this).parents(".side_menu ").removeClass('collapse')
|
||||
$(this).find("i").removeClass('fa-chevron-right');
|
||||
$(this).find("i").addClass('fa-chevron-left');
|
||||
}else{
|
||||
$(".side_menu ").addClass('collapse');
|
||||
$(".close_side_menu i").removeClass('fa-chevron-left');
|
||||
$(".close_side_menu i").addClass('fa-chevron-right');
|
||||
$(this).parents(".side_menu ").addClass('collapse');
|
||||
$(this).find("i").removeClass('fa-chevron-left');
|
||||
$(this).find("i").addClass('fa-chevron-right');
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -450,6 +450,7 @@ $(document).ready(function() {
|
|||
}
|
||||
}).trigger("click");
|
||||
}else if ($target.hasClass('addBasket')) { // ajouter le média au panier
|
||||
addMediasBasket([$(this).attr('data-id')]);
|
||||
}else if ($target.hasClass('deleteItem')) { // supprimer le média
|
||||
removeMedias([$(this).attr('data-id')]);
|
||||
}else if ($target.hasClass('tagItem')) { // Appliquer une étiquette
|
||||
|
|
@ -556,7 +557,7 @@ $(document).ready(function() {
|
|||
// ---- double-clique sur un média
|
||||
var drPlugin = null;
|
||||
var viewer = null;
|
||||
$(".main_content .wrapper").on("dblclick", '.imageItem' , function(event) {
|
||||
$(".media_manager").on("dblclick", '.imageItem' , function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
// récupère l'image de preview
|
||||
|
|
@ -722,7 +723,12 @@ $(document).ready(function() {
|
|||
$(".tab_edit #commentaire").val(result.data.commentaire);
|
||||
$(".tab_edit #version").val(result.data.version);
|
||||
$(".tab_edit #created_at").val(result.data.created_at);
|
||||
$(".tab_edit #created_by").val(result.data.owner.firstname+" "+result.data.owner.lastname);
|
||||
|
||||
if(result.data.owner != null){
|
||||
$(".tab_edit #created_by").val(result.data.owner.firstname+" "+result.data.owner.lastname);
|
||||
}else{
|
||||
$(".tab_edit #created_by").val("");
|
||||
}
|
||||
$(".tab_edit #updated_at").val(result.data.updated_at);
|
||||
$(".tab_edit #published_at").val(result.data.published_at);
|
||||
$(".tab_edit #statut").val(result.data.statut);
|
||||
|
|
@ -898,6 +904,7 @@ $(document).ready(function() {
|
|||
$('.tab_edit .add_article').on('click', function(event){
|
||||
event.preventDefault();
|
||||
var arcadia_id = prompt("Indiquez le code Arcadia de l'article.", arcadia_id);
|
||||
if(arcadia_id === null) return false;
|
||||
|
||||
$.ajax({
|
||||
url: '/ajax/get-article',
|
||||
|
|
|
|||
266
resources/js/panier.js
vendored
Normal file
266
resources/js/panier.js
vendored
Normal file
|
|
@ -0,0 +1,266 @@
|
|||
$(document).ready(function() {
|
||||
|
||||
if ( $( ".panier_side_menu" ).length ) {
|
||||
|
||||
// ---- collapse/expand panier side menu
|
||||
$("#menu_panier").on('click', function(event) {
|
||||
event.preventDefault();
|
||||
$(".panier_side_menu .panier_menu").toggle();
|
||||
});
|
||||
|
||||
// ---- Chargement par défaut du premier panier
|
||||
if($("#panier_selector").val()){
|
||||
$(window).data('currentBasket', $("#panier_selector").val());
|
||||
loadBasket($(window).data('currentBasket'));
|
||||
}
|
||||
|
||||
// ---- chargement du panier on change du sélector
|
||||
$("#panier_selector").on('change', function(event) {
|
||||
$(window).data('currentBasket', $("#panier_selector").val());
|
||||
loadBasket($(window).data('currentBasket'));
|
||||
});
|
||||
|
||||
// ---- Ajout de média au panier en masse
|
||||
$('.action_add_basket').on('click',function(event){
|
||||
event.preventDefault();
|
||||
var medias = [];
|
||||
$('.media_container .imageItem').each(function (index) {
|
||||
if( $(this ).attr("aria-grabbed") == "true" ){
|
||||
medias.push($(this ).attr("data-id"));
|
||||
}
|
||||
});
|
||||
addMediasBasket(medias);
|
||||
});
|
||||
|
||||
// ---- Ajout un nouveau panier
|
||||
$('.panier_side_menu .add_panier').on('click',function(event){
|
||||
event.preventDefault();
|
||||
$(".panier_side_menu .panier_menu").hide();
|
||||
var d = new Date();
|
||||
var strDate = ("0" +d.getDate()).slice(-2)+ "/" + ("0" +(d.getMonth()+1)).slice(-2) + "/" + d.getFullYear();
|
||||
var defaultTitle = "Panier du "+strDate;
|
||||
var title = prompt("Indiquez le code Arcadia de ce média", defaultTitle);
|
||||
|
||||
$.ajax({
|
||||
url: '/ajax/add-basket',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
title: title,
|
||||
},
|
||||
success: function(result){
|
||||
if(result){
|
||||
$("#panier_selector").append(new Option(result.libelle, result.id));
|
||||
$("#panier_selector").val(result.id);
|
||||
$("#panier_selector").trigger("change");
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de la création du panier, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// ---- Ajout un nouveau panier
|
||||
$('.panier_side_menu .goto_panier').on('click',function(event){
|
||||
event.preventDefault();
|
||||
$(".panier_side_menu .panier_menu").hide();
|
||||
window.location.href = $(this).attr("data-url")+"?p="+$(window).data('currentBasket');
|
||||
});
|
||||
|
||||
// ---- Supprimer un média du panier
|
||||
$('.panier_content').on('click', ".imageItem .media_remove_basket",function(event){
|
||||
event.preventDefault();
|
||||
var $media = $(this).parents(".imageItem");
|
||||
var media_id = $media.attr("data-id");
|
||||
$.ajax({
|
||||
url: '/ajax/remove-media-basket',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
media_id: media_id,
|
||||
panier_id : $(window).data('currentBasket'),
|
||||
},
|
||||
success: function(result){
|
||||
if(result){
|
||||
$(".panier_side_menu .imageItem[data-id='"+media_id+"']").remove();
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du média, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ---- Supprimer un média du panier
|
||||
$('.panier_content').on('click', ".imageItem .media_info",function(event){
|
||||
event.preventDefault();
|
||||
var $media = $(this).parents(".imageItem");
|
||||
$media.trigger('dblclick');
|
||||
});
|
||||
|
||||
|
||||
// ---- gestion du dragover
|
||||
$(".panier_content").on("dragover", function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
// ---- gestion du dragleave
|
||||
$(".panier_content").on("dragleave", function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
// ---- evt lorsque l'on drop des élements dans le widget panier
|
||||
$(".panier_content").on("drop", function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
var isMediaDepot = false;
|
||||
|
||||
// source
|
||||
var medias = event.originalEvent.dataTransfer.getData("Text").split(",");
|
||||
|
||||
// Contrôles
|
||||
$.each(medias, function (index, media_id) {
|
||||
if($(".media_container .imageItem[data-id='"+media_id+"']").attr("data-depot") == "1"){
|
||||
$.fancyMessage({title : "Attention", message : "Vous ne pouvez pas mettre les médias du dépôt dans un panier.", type : "error"});
|
||||
isMediaDepot = true;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// Ajout des médias dans le panier
|
||||
if(!isMediaDepot){
|
||||
$.ajax({
|
||||
url: '/ajax/add-media-basket',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
medias: medias,
|
||||
panier_id : $(window).data('currentBasket'),
|
||||
},
|
||||
success: function(result){
|
||||
if(result){
|
||||
$.each(result, function (index, media) {
|
||||
addmediaBasketHtml(media);
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de l'ajout de média au panier, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// ---- Ajout de médias au panier
|
||||
window.addMediasBasket = function(medias){
|
||||
var thumb = "";
|
||||
var preview = "";
|
||||
var content = "";
|
||||
|
||||
if(medias.length == 0){
|
||||
$.fancyMessage({title : "Ajout de média au panier", message : "Veuillez sélectionner les médias à ajouter.", type : "info"});
|
||||
}else if ($(window).data('currentBasket') == 0) {
|
||||
$.fancyMessage({title : "Ajout de média au panier", message : "Veuillez sélectionner un panier.", type : "info"});
|
||||
}else{
|
||||
$.ajax({
|
||||
url: '/ajax/add-media-basket',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
medias: medias,
|
||||
panier_id : $(window).data('currentBasket'),
|
||||
},
|
||||
success: function(result){
|
||||
if(result){
|
||||
$.each(result, function (index, media) {
|
||||
addmediaBasketHtml(media);
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de l'ajout de média au panier, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Charge un panier dans le widget
|
||||
function loadBasket(panierId){
|
||||
if(panierId != 0){
|
||||
$.ajax({
|
||||
url: '/ajax/load-basket',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
panier_id : $(window).data('currentBasket'),
|
||||
},
|
||||
success: function(result){
|
||||
if(result){
|
||||
$(".panier_side_menu .panier_content").html("");
|
||||
$.each(result.medias, function (index, media) {
|
||||
addmediaBasketHtml(media);
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors du chargement du panier, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Ajoute un média dans le widget panier
|
||||
function addmediaBasketHtml(media){
|
||||
var thumb = "";
|
||||
var preview = "";
|
||||
var content = "";
|
||||
var itemClass = "";
|
||||
|
||||
switch (media.typemedia_id) {
|
||||
case 1:
|
||||
itemClass = "";
|
||||
if(media.extension == "pdf" || media.extension == "ai" || media.extension == "psd"){
|
||||
thumb = media.folder+media.uid+"_thumb.png";
|
||||
preview = media.folder+media.uid+"_preview.png";
|
||||
}else{
|
||||
thumb = media.folder+media.uid+"_thumb."+media.extension;
|
||||
preview = media.folder+media.uid+"_preview."+media.extension;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
itemClass = "";
|
||||
thumb = media.folder+media.uid+"."+media.extension;
|
||||
preview = media.folder+media.uid+"."+media.extension;
|
||||
break;
|
||||
case 3:
|
||||
itemClass = "video";
|
||||
thumb = "";
|
||||
preview = media.folder+media.uid+"."+media.extension;
|
||||
break;
|
||||
case 4:
|
||||
itemClass = "son";
|
||||
thumb = "";
|
||||
preview = media.folder+media.uid+"."+media.extension;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
content = '<div class="imageItem" data-id="'+media.id+'" data-depot="'+media.isDepot+'" data-ext="'+media.extension+'" data-typemedia="'+media.typemedia_id+'" data-preview="'+preview+'" data-src="'+media.folder+media.uid+"."+media.extension+'" draggable="false" aria-grabbed="false">';
|
||||
content += '<div class="media '+itemClass+'" style="background-image:url('+thumb+')"></div>';
|
||||
content += '<div class="bar"> <a href="#" class="media_info"><i class="far fa-info-circle"></i></a><a href="#" class="media_remove_basket"><i class="far fa-times-circle"></i></a></div>';
|
||||
content += '</div>';
|
||||
$(".panier_side_menu .panier_content").append(content);
|
||||
}
|
||||
1
resources/sass/partials/form.scss
vendored
1
resources/sass/partials/form.scss
vendored
|
|
@ -107,6 +107,7 @@ a{
|
|||
|
||||
a{
|
||||
margin-left: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
h1{
|
||||
|
|
|
|||
142
resources/sass/partials/media.scss
vendored
142
resources/sass/partials/media.scss
vendored
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
.media_manager{
|
||||
height: calc(100% - 48px);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.main_content{
|
||||
height: 100%;
|
||||
|
|
@ -207,8 +209,9 @@
|
|||
.media_container{
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
scrollbar-color: #272626 #1a1a1a;
|
||||
position: relative;
|
||||
height: calc(100% - 180px);
|
||||
height: calc(100% - 174px);
|
||||
|
||||
.loader{
|
||||
position: sticky;
|
||||
|
|
@ -513,6 +516,7 @@
|
|||
.folder_container{
|
||||
background-color: $grey3;
|
||||
height: calc(100% - 129px);
|
||||
scrollbar-color: #272626 #1a1a1a;
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
|
||||
|
|
@ -586,6 +590,142 @@
|
|||
|
||||
}
|
||||
|
||||
&.panier_side_menu{
|
||||
width: 380px;
|
||||
|
||||
.close_side_menu{
|
||||
left: -17px;
|
||||
border-radius : 3px 0 0 3px;
|
||||
border-left: 1px solid #505050;
|
||||
border-right: none;
|
||||
}
|
||||
&.collapse{
|
||||
transform: translateX(100%);
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
header{
|
||||
display: flex;
|
||||
|
||||
a{
|
||||
margin-left: 5px;
|
||||
position: relative;
|
||||
}
|
||||
.panier_menu {
|
||||
width: 140px;
|
||||
box-shadow: 0 4px 5px 3px rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
display: none;
|
||||
background-color: $grey3;
|
||||
z-index: 1;
|
||||
right: 12px;
|
||||
top: 48px;
|
||||
|
||||
.menu-options {
|
||||
list-style: none;
|
||||
padding: 10px 0;
|
||||
|
||||
.menu-option {
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.panier_content{
|
||||
height: calc(100% - 59px);
|
||||
overflow-y: auto;
|
||||
scrollbar-color: #272626 #1a1a1a;
|
||||
|
||||
.imageItem{
|
||||
display: inline-block;
|
||||
border: 1px solid grey;
|
||||
width: 202px;
|
||||
margin: 2px 5px;
|
||||
background-color: $grey3;
|
||||
transition: 0.3s ease-in-out;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
|
||||
.media{
|
||||
height: 200px;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
position: relative;
|
||||
|
||||
&::before {
|
||||
transform: translate(-50%,-50%);
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
color: $white;
|
||||
font-size: 59px;
|
||||
z-index: 1;
|
||||
}
|
||||
&.video{
|
||||
&::before {
|
||||
content: "\f167";
|
||||
font-family: "Font Awesome 5 Brands";
|
||||
|
||||
}
|
||||
}
|
||||
&.son{
|
||||
&::before {
|
||||
content: "\f58f";
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
font-weight: 900;
|
||||
|
||||
}
|
||||
}
|
||||
&.doc{
|
||||
&::before {
|
||||
content: "\f15c";
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
font-weight: 900;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:hover{
|
||||
background-color: $grey;
|
||||
}
|
||||
|
||||
.bar{
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
transition: opacity 0.5s;
|
||||
bottom: 0;
|
||||
height: 29px;
|
||||
width: 100%;
|
||||
background-color: rgba(0,0,0,0.7);
|
||||
text-align: right;
|
||||
|
||||
|
||||
a{
|
||||
display: inline-block;
|
||||
padding: 5px;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
&:hover{
|
||||
.bar{
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,16 @@
|
|||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<header>
|
||||
Mes paniers favoris
|
||||
</header>
|
||||
<div class="content">
|
||||
@foreach ($paniers as $panier)
|
||||
<a href="{{ route('paniers', ['p' => $panier->id]) }}" ><i class="fas fa-shopping-cart"></i> {{$panier->libelle}}</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -7,6 +7,11 @@
|
|||
<a href="{{ route('media_manager') }}" class="{{(Route::currentRouteName() == 'media_manager') ? 'active' : '' }}">
|
||||
<i class="fas fa-images"></i> Gestion des média
|
||||
</a>
|
||||
<!--
|
||||
<a href="{{ route('paniers') }}" class="{{(Route::currentRouteName() == 'paniers') ? 'active' : '' }}">
|
||||
<i class="fas fa-shopping-cart"></i> Paniers
|
||||
</a>
|
||||
-->
|
||||
</nav>
|
||||
<div class="userbar">
|
||||
<i class="fas fa-user-circle"></i> {{ Auth::user()->firstname." ".Auth::user()->lastname}} <i class="fas fa-caret-down"></i>
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@
|
|||
<input type="text" id="published_at" name="published_at" readonly >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="typevues">Statut</label>
|
||||
<label for="statut">Statut</label>
|
||||
<select id="statut" name="statut">
|
||||
<option value="0">Brouillon</option>
|
||||
<option value="1">Public</option>
|
||||
|
|
|
|||
|
|
@ -120,6 +120,27 @@
|
|||
<div style="display:none;" class="loader"><i class="fal fa-circle-notch fa-spin"></i></div>
|
||||
<div class="wrapper"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="side_menu panier_side_menu collapse">
|
||||
<header>
|
||||
<div class="close_side_menu"><i class="fas fa-shopping-cart"></i></div>
|
||||
<select id="panier_selector" >
|
||||
@foreach ($paniers as $panier)
|
||||
<option value="{{$panier->id}}" >{{$panier->libelle}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<a id="menu_panier" href="#" class="btn btn-square"><i class="far fa-bars"></i></a>
|
||||
<div class="panier_menu">
|
||||
<ul class="menu-options">
|
||||
<li class="menu-option goto_panier" data-url="{{ route('paniers') }}">Aller au panier</li>
|
||||
<li class="menu-option add_panier" >Nouveau panier</li>
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
<div class="panier_content">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div id="form_folder_property" style="display: none;" data-id="" >
|
||||
|
|
|
|||
114
resources/views/panier/index.blade.php
Normal file
114
resources/views/panier/index.blade.php
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
@extends('layouts.app')
|
||||
@include('layouts.header')
|
||||
@section('content')
|
||||
<main class="paniers template_2col">
|
||||
<div class="side_menu">
|
||||
<header>
|
||||
<h1><i class="fas fa-shopping-cart"></i> Gestion des paniers</h1>
|
||||
<p>Créez des sélections d'éléments et partagez les avec d'autres utilisateurs.</p>
|
||||
<hr>
|
||||
</header>
|
||||
<form class="form_search_basket" action="#" method="post">
|
||||
<div class="row">
|
||||
<label for="recherche">Recherche</label>
|
||||
<input type="text" value="" id="recherche" name="recherche" >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="statut">Statut</label>
|
||||
<select id="statut" name="statut">
|
||||
<option value="">Tous</option>
|
||||
<option value="1">Activés</option>
|
||||
<option value="0">Désactivé</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="type">Type</label>
|
||||
<select id="type" name="type">
|
||||
<option value="">Tous</option>
|
||||
<option value="1">Mes paniers</option>
|
||||
<option value="0">Paniers partagés avec moi</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" id="favoris" name="favoris" value="1">
|
||||
<label for="favoris">Paniers favoris</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="main_content">
|
||||
<div class="heading">
|
||||
<a href="#" class=" btn"><i class="fal fa-plus"></i> Créer un nouveau panier</a>
|
||||
<hr>
|
||||
</div>
|
||||
<div class="panier_list">
|
||||
<div class="panier_item">
|
||||
<div class="title">
|
||||
<i class="fas fa-star"></i>
|
||||
<p>Panier du 29/07/2019</p>
|
||||
</div>
|
||||
<div class="media" style="background-image:url(medias/5d2f2559ed5df/a3e47a74-f34b-4ed7-b26b-51282bf2c2db_thumb.png)"></div>
|
||||
<div class="bar">
|
||||
<a href="#" class="action_delete_basket"><i class="fas fa-trash-alt"></i></a>
|
||||
<span class="count"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panier_item">
|
||||
<div class="title">
|
||||
<i class="fas fa-star"></i>
|
||||
<p>Panier du 29/07/2019</p>
|
||||
</div>
|
||||
<div class="media" style="background-image:url(medias/5d2f2559ed5df/a3e47a74-f34b-4ed7-b26b-51282bf2c2db_thumb.png)"></div>
|
||||
<div class="bar">
|
||||
<a href="#" class="action_delete_basket"><i class="fas fa-trash-alt"></i></a>
|
||||
<span class="count"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panier_item">
|
||||
<div class="title">
|
||||
<i class="fas fa-star"></i>
|
||||
<p>Panier du 29/07/2019</p>
|
||||
</div>
|
||||
<div class="media" style="background-image:url(medias/5d2f2559ed5df/a3e47a74-f34b-4ed7-b26b-51282bf2c2db_thumb.png)"></div>
|
||||
<div class="bar">
|
||||
<a href="#" class="action_delete_basket"><i class="fas fa-trash-alt"></i></a>
|
||||
<span class="count"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panier_item">
|
||||
<div class="title">
|
||||
<i class="fas fa-star"></i>
|
||||
<p>Panier du 29/07/2019</p>
|
||||
</div>
|
||||
<div class="media" style="background-image:url(medias/5d2f2559ed5df/a3e47a74-f34b-4ed7-b26b-51282bf2c2db_thumb.png)"></div>
|
||||
<div class="bar">
|
||||
<a href="#" class="action_delete_basket"><i class="fas fa-trash-alt"></i></a>
|
||||
<span class="count"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panier_item">
|
||||
<div class="title">
|
||||
<i class="fas fa-star"></i>
|
||||
<p>Panier du 29/07/2019</p>
|
||||
</div>
|
||||
<div class="media" style="background-image:url(medias/5d2f2559ed5df/a3e47a74-f34b-4ed7-b26b-51282bf2c2db_thumb.png)"></div>
|
||||
<div class="bar">
|
||||
<a href="#" class="action_delete_basket"><i class="fas fa-trash-alt"></i></a>
|
||||
<span class="count"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panier_item">
|
||||
<div class="title">
|
||||
<i class="fas fa-star"></i>
|
||||
<p>Panier du 29/07/2019</p>
|
||||
</div>
|
||||
<div class="media" style="background-image:url(medias/5d2f2559ed5df/a3e47a74-f34b-4ed7-b26b-51282bf2c2db_thumb.png)"></div>
|
||||
<div class="bar">
|
||||
<a href="#" class="action_delete_basket"><i class="fas fa-trash-alt"></i></a>
|
||||
<span class="count"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@endsection
|
||||
|
|
@ -15,6 +15,7 @@ Route::group(['middleware' => ['auth']], function(){
|
|||
// Les pages Front
|
||||
Route::get('/', 'CommunController@index')->name('home');
|
||||
Route::get('/gestion-des-medias', 'MediaController@index')->name('media_manager');
|
||||
Route::get('/paniers', 'PanierController@index')->name('paniers');
|
||||
|
||||
// Message de contact
|
||||
Route::post('/send-message', 'CommunController@sendMessage');
|
||||
|
|
@ -42,6 +43,13 @@ Route::group(['middleware' => ['auth']], function(){
|
|||
Route::post('/ajax/download-media', 'MediaController@downloadMedia')->name('downloadMedia');
|
||||
Route::post('/ajax/get-media-history', 'MediaController@getMediaHistory');
|
||||
|
||||
// Ajax pour la gestion des panier
|
||||
Route::post('/ajax/add-media-basket', 'PanierController@addMediasBasket');
|
||||
Route::post('/ajax/remove-media-basket', 'PanierController@removeMediasBasket');
|
||||
Route::post('/ajax/load-basket', 'PanierController@loadBasket');
|
||||
Route::post('/ajax/add-basket', 'PanierController@addBasket');
|
||||
Route::post('/ajax/favoris-basket', 'UserController@favorisBasket');
|
||||
|
||||
// Back office
|
||||
Route::resource('user', 'UserController');
|
||||
Route::post('/check-matricule', 'UserController@checkMatricule');
|
||||
|
|
|
|||
1
webpack.mix.js
vendored
1
webpack.mix.js
vendored
|
|
@ -16,6 +16,7 @@ mix.js([
|
|||
'resources/js/admin.js',
|
||||
'resources/js/media.js',
|
||||
'resources/js/depot.js',
|
||||
'resources/js/panier.js',
|
||||
'resources/js/searchengine.js',
|
||||
], 'public/js/app.js')
|
||||
.sass('resources/sass/app.scss', 'public/css');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue