From 212ca42f8cbe86150f2ec17e6d738fb634f4fcdd Mon Sep 17 00:00:00 2001 From: Yann Gonidec Date: Tue, 6 Aug 2019 14:18:36 +0200 Subject: [PATCH] =?UTF-8?q?gestion=20des=20m=C3=A9dias=20sans=20fichier,?= =?UTF-8?q?=20gestion=20des=20panier=20et=20divers=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/ImportMedia.php | 56 ++- app/Http/Controllers/MediaController.php | 73 +++- app/Http/Controllers/PanierController.php | 70 +++- app/Http/Controllers/UploadController.php | 45 ++- app/Panier.php | 33 ++ public/css/app.css | 370 ++++++++++++++++++- public/images/default.jpg | Bin 0 -> 12880 bytes public/js/app.js | 316 +++++++++++++++- resources/js/app.js | 8 +- resources/js/media.js | 79 +++- resources/js/panier.js | 177 ++++++++- resources/sass/app.scss | 1 + resources/sass/partials/common.scss | 83 +++++ resources/sass/partials/form.scss | 2 +- resources/sass/partials/media.scss | 16 +- resources/sass/partials/panier.scss | 262 +++++++++++++ resources/views/home.blade.php | 2 + resources/views/layouts/header.blade.php | 2 +- resources/views/layouts/media_edit.blade.php | 5 +- resources/views/media_manager.blade.php | 41 +- resources/views/panier/index.blade.php | 80 +--- resources/views/panier/show.blade.php | 97 +++++ routes/web.php | 7 + 23 files changed, 1669 insertions(+), 156 deletions(-) create mode 100644 public/images/default.jpg create mode 100644 resources/sass/partials/panier.scss create mode 100644 resources/views/panier/show.blade.php diff --git a/app/Console/Commands/ImportMedia.php b/app/Console/Commands/ImportMedia.php index eee0839..0d67e9b 100644 --- a/app/Console/Commands/ImportMedia.php +++ b/app/Console/Commands/ImportMedia.php @@ -83,12 +83,12 @@ class ImportMedia extends Command $record->version = 1; } - if($row->typemedia_id != ""){ + if($row->codeTypeMedia != ""){ $record->typemedia_id = $row->codeTypeMedia; }else{ $record->typemedia_id = 1; } - if($row->typevue_id != ""){ + if($row->codeTypeVue != ""){ $record->typevue_id = $row->codeTypeVue; } $record->commentaire = $row->commentaire; @@ -119,46 +119,40 @@ class ImportMedia extends Command } $record->statut = config('services.statut.public_etendu'); + // 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', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)); + + $mediaFile = "/images/".$record->arcadia_id.".".$record->extension; $fileExists = Storage::disk('arcadia')->exists($mediaFile); if($fileExists){ + // déplacement du média et renommage du fichier $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(); + // calcul de la taille du média + $record->taille = $this->formatBytes($this->get_file_size($full_path_dest)); - // ---- 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é"); + // on applique une image par défaut + $record->extension = "jpg"; + Storage::disk('local')->copy("images/default.jpg", $destinationPath.$record->uid. '.' .$record->extension); + + // calcul de la taille du média + $record->taille = $this->formatBytes($this->get_file_size("public/".$destinationPath.$record->uid. '.' .$record->extension)); } + + + $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 media n°".$row->code. " existe déjà en base"); } diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index 66f3891..8afe26c 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -353,9 +353,7 @@ class MediaController extends Controller $media->langue_id = $mediaUpdate->langue_id; $media->commentaire = $mediaUpdate->commentaire; $media->version = $mediaUpdate->version; - if( ($mediaUpdate->statut == config('services.statut.public') || $mediaUpdate->statut == config('services.statut.public_etendu')) && $media->statut == config('services.statut.brouillon')){ - $media->published_at = date("Y-m-d H:i:s"); - } + $media->published_at = $mediaUpdate->published_at; $media->statut = $mediaUpdate->statut; $media->copyright_id = $mediaUpdate->copyright_id; @@ -651,4 +649,73 @@ class MediaController extends Controller return json_encode($response); } + /** + * Ajoute un média sans fichier + * + */ + public function addMedia(Request $request) + { + $response = false; + $sujet_id = $request->input('sujet_id'); + $dossier_id = $request->input('dossier_id'); + if($dossier_id == 0) $dossier_id = NULL; + + // On déplace le média par défaut dans le répertoire des médias + $destinationPath = $this->get_mediaFolder()."/"; + $uid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)); + $filename = $uid.".jpg"; + Storage::copy("images/default.jpg", $destinationPath.$filename); + + + // on créé un média en bdd + $media = new Media(); + $media->dossier_id = $dossier_id; + $media->sujet_id = $sujet_id; + $media->libelle = "Nouveau média"; + $media->folder = $destinationPath; + $media->taille = $this->formatBytes($this->get_file_size($destinationPath.$filename)); + if($user = Auth::user()){ + $media->created_by= $user->id; + } + $media->uid = $uid; + $media->extension = "jpg"; + $media->typemedia_id = 1; + $im = new \imagick($destinationPath.$filename); + $resolutions = $im->getImageResolution(); + $media->resolution = round($resolutions['x'] * 2.54, 2); + $imageprops = $im->getImageGeometry(); + $media->largeur = $imageprops['width']; + $media->hauteur = $imageprops['height']; + + if($media->resolution != 0){ + $media->largeur_mm = ceil(($media->largeur * 2.54 / $media->resolution)*10); + $media->hauteur_mm = ceil(($media->hauteur * 2.54 / $media->resolution)*10); + }else{ + $media->largeur_mm = ""; + $media->hauteur_mm = ""; + } + $media->save(); + $response = $media; + $im->destroy(); + + // ---- Creation des vignettes de base + $this->create_sys_thumb($media); + // ---- Creation des vignettes en lien avec le sujet du média + if(isset($sujet_id) ){ + $this->create_thumb($media); + } + + // ---- Historique des actions + $historique = new historique(); + if($user = Auth::user()){ + $historique->user_id = $user->id; + } + $historique->media_id = $media->id; + $historique->type = "Création"; + $historique->description = "Média ajouté"; + $historique->save(); + + + return json_encode($response); + } } diff --git a/app/Http/Controllers/PanierController.php b/app/Http/Controllers/PanierController.php index 9027576..f8a7365 100644 --- a/app/Http/Controllers/PanierController.php +++ b/app/Http/Controllers/PanierController.php @@ -6,23 +6,45 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Panier; use App\Media; +use App\Format; class PanierController extends Controller { /** - * Pas principale des paniers + * Page principale des paniers * * @return \Illuminate\Http\Response */ public function index(Request $request) { - $paniers = ""; + $paniers = Auth::user()->paniersOwner; return view('panier.index')->with([ 'paniers'=> $paniers, ]); } + + /** + * Page publique d'un panier + * + * @return \Illuminate\Http\Response + */ + public function showBasket(Request $request) + { + $panier_uid = $request->basket_uid; + $formats = Format::withoutGlobalScope('App\Scopes\SystemScope')->where('system', 1)->get(); + $panier = Panier::where('uid', $panier_uid)->first(); + if($panier && $panier->statut == 1){ + return view('panier.show')->with([ + 'panier'=> $panier, + 'formats' => $formats, + ]); + }else{ + abort(404, 'Page introuvable'); + } + } + /** * Ajout de média à un panier */ @@ -69,6 +91,7 @@ class PanierController extends Controller public function addBasket(Request $request) { $response = false; + $uid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)); $title = $request->input('title'); if($title == ""){ @@ -78,6 +101,7 @@ class PanierController extends Controller $panier = new Panier(); $panier->owner = Auth::user()->id; $panier->libelle = $title; + $panier->uid = $uid; if($panier->save()){ $response = $panier; } @@ -86,13 +110,12 @@ class PanierController extends Controller } /** - * supprimer un panier + * Supprimer un panier * */ public function removeBasket(Request $request) { $response = false; - $user_id = Auth::user()->id; $basket_id = $request->input('basket_id'); @@ -104,6 +127,24 @@ class PanierController extends Controller return json_encode($response); } + /** + * Obtenir un panier + * + */ + public function getBasket(Request $request) + { + $response = false; + $basket_id = $request->input('basket_id'); + $host = $request->getSchemeAndHttpHost(); + + $panier = Panier::where('id', $basket_id)->first(); + if($panier){ + $response['basket'] = $panier; + $response['link'] = $host."/basket/".$panier->uid; + } + return json_encode($response); + } + /** * Charge un panier */ @@ -119,4 +160,25 @@ class PanierController extends Controller return json_encode($response); } + + /** + * enregistre les propriétés d'un panier + * + */ + public function saveBasketProperty(Request $request) + { + $basket_id = $request->input('basket_id'); + $libelle = $request->input('libelle'); + $description = $request->input('description'); + $statut = $request->input('statut'); + + $panier = Panier::where('id', $basket_id)->first(); + if($panier){ + $panier->libelle = $libelle; + $panier->description = $description; + $panier->statut = $statut; + $panier->save(); + } + return json_encode(true); + } } diff --git a/app/Http/Controllers/UploadController.php b/app/Http/Controllers/UploadController.php index 56e6f17..20600b8 100644 --- a/app/Http/Controllers/UploadController.php +++ b/app/Http/Controllers/UploadController.php @@ -31,6 +31,7 @@ class UploadController extends Controller { $uid = $request->input('uid'); $sujet_id = $request->input('sujet_id'); $dossier_id = $request->input('dossier_id'); + $replaceMediaId = $request->input('replaceMediaId'); if($dossier_id == 0) $dossier_id = NULL; $headers = $request->headers->all(); @@ -99,19 +100,36 @@ class UploadController extends Controller { // si c'est le dernier morceau d'un fichier ou que c'est un envoi simple if($is_last_chunk || !$is_chunked_upload ){ - // On déplace le fichier dans le répertoire des médias $destinationPath = $this->get_mediaFolder()."/"; - Storage::move("uploads/".$filename, $destinationPath.$filename); - // on créé un média en bdd - $media = new Media(); - $media->dossier_id = $dossier_id; - $media->sujet_id = $sujet_id; - $media->libelle = $originalName; + // si on upload un média pour remplacer un fichier par un autre + if($replaceMediaId != 0){ + // on récupère le média à modifier + $media= Media::where('id', $replaceMediaId)->first(); + + // On déplace le fichier dans le répertoire des médias + Storage::move("uploads/".$filename, $destinationPath.$filename); + + // supprime les fichiers médias stockés sur disque + $filesfF= Storage::files($media->folder."/"); + $filepath = preg_quote($media->folder.$media->uid, '/'); + $matchingFiles = preg_grep('/^'.$filepath.'/', $filesfF); + Storage::delete($matchingFiles); + }else{ + // On déplace le fichier dans le répertoire des médias + Storage::move("uploads/".$filename, $destinationPath.$filename); + + // on créé un média en bdd + $media = new Media(); + $media->dossier_id = $dossier_id; + $media->sujet_id = $sujet_id; + } + $media->extension = $extension; $media->folder = $destinationPath; - if($user = Auth::user()){ - $media->created_by= $user->id; + if($replaceMediaId == 0){ + $media->libelle = $originalName; + $media->created_by= Auth::user()->id; } $media->uid = $uid; $media->taille = $this->formatBytes($this->get_file_size($destinationPath.$filename)); @@ -188,8 +206,13 @@ class UploadController extends Controller { $historique->user_id = $user->id; } $historique->media_id = $media->id; - $historique->type = "Création"; - $historique->description = "Média ajouté"; + if($replaceMediaId == 0){ + $historique->type = "Création"; + $historique->description = "Média ajouté"; + }else{ + $historique->type = "Modification"; + $historique->description = "Le média a été remplacé"; + } $historique->save(); } diff --git a/app/Panier.php b/app/Panier.php index ff95d7c..e41874e 100644 --- a/app/Panier.php +++ b/app/Panier.php @@ -9,6 +9,8 @@ class Panier extends Model { use SoftDeletes; + protected $appends = array('mediacount', 'mediacover'); + /** * Get the user that owns the panier. */ @@ -33,4 +35,35 @@ class Panier extends Model return $this->belongsToMany('App\Media', 'paniers_medias', 'panier_id', 'media_id'); } + /** + * Get media linked + */ + public function getMediacountAttribute() + { + return $this->medias()->count(); + } + + /** + * Get media linked + */ + public function getMediacoverAttribute() + { + $cover = ""; + $media = $this->medias()->where('typemedia_id', 1)->first(); + if($media){ + switch ($media->typemedia_id) { + case 1: + if($media->extension == "pdf" || $media->extension == "ai" || $media->extension == "psd"){ + $cover = $media->folder.$media->uid."_thumb.png"; + }else{ + $cover = $media->folder.$media->uid."_thumb.".$media->extension; + } + break; + case 2: + $cover = $media->folder.$media->uid."_thumb.".$media->extension; + break; + } + } + return $cover; + } } diff --git a/public/css/app.css b/public/css/app.css index 30c8f47..354f417 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -13030,6 +13030,55 @@ readers do not read off random characters that represent icons */ display: none; } +#form_basket_property { + padding: 30px; + min-width: 550px; +} + +#form_basket_property h3 { + font-size: 14px; + margin-bottom: 12px; + font-weight: bold; + color: #ffffff; +} + +#form_basket_property hr { + color: #24272e; + border-bottom: 1px solid #2c2f36; + margin-bottom: 20px; +} + +#form_basket_property p.button_bar { + text-align: right; + margin: 0; +} + +#form_basket_property select, +#form_basket_property input, +#form_basket_property textarea { + width: 100%; +} + +#form_basket_property textarea { + min-height: 200px; +} + +#form_basket_property .btn { + margin-right: 10px; +} + +#form_basket_property .form_basket_save .fa-spinner-third { + display: none; +} + +#form_basket_property .form_basket_save.loading .fa-spinner-third { + display: inline-block; +} + +#form_basket_property .form_basket_save.loading .fa-share { + display: none; +} + #form_etiquette { padding: 30px; min-width: 340px; @@ -13098,6 +13147,48 @@ readers do not read off random characters that represent icons */ margin-bottom: 40px; } +#form_select_add_media { + padding: 30px; + min-width: 340px; +} + +#form_select_add_media h3 { + font-size: 14px; + margin-bottom: 12px; + font-weight: bold; + color: #ffffff; +} + +#form_select_add_media hr { + color: #24272e; + border-bottom: 1px solid #2c2f36; + margin-bottom: 20px; +} + +#form_select_add_media .content { + margin: 10px 0; +} + +#form_select_add_media .content a { + display: block; + color: #ffffff; + border-radius: 5px; + border: 1px solid #ffffff; + padding: 15px 15px; + margin-bottom: 5px; + font-size: 15px; + transition: background-color 200ms ease-in; +} + +#form_select_add_media .content a i { + margin-right: 10px; + font-size: 20px; +} + +#form_select_add_media .content a:hover { + background-color: #0a6fb7; +} + /****************************************** TEMPLATE ******************************************/ @@ -13392,6 +13483,7 @@ p { input[type=text], input[type=number], input[type=password], +input[type=date], input[type=email], input[type=url], select { @@ -13403,6 +13495,7 @@ select { input[type=text].is-invalid, input[type=number].is-invalid, input[type=password].is-invalid, +input[type=date].is-invalid, input[type=email].is-invalid, input[type=url].is-invalid, select.is-invalid { @@ -13775,7 +13868,7 @@ table tfoot tr:hover { min-width: 163px; -webkit-transform: translateX(-50%); transform: translateX(-50%); - z-index: 1; + z-index: 2; } .media_manager .main_content header .search_wrapper .search_filters > div .list.list_etiquette li label { @@ -14383,7 +14476,7 @@ table tfoot tr:hover { position: absolute; display: none; background-color: #333333; - z-index: 1; + z-index: 2; right: 12px; top: 48px; } @@ -14494,7 +14587,7 @@ table tfoot tr:hover { height: 100%; background-color: #333333; position: absolute; - z-index: 99990; + z-index: 99; left: 0; top: 0; } @@ -14553,17 +14646,21 @@ table tfoot tr:hover { z-index: 1; } -#form_media header .form_media_download { +#form_media header .form_media_download, +#form_media header .form_media_replace { float: right; - font-size: 18px; + font-size: 26px; + margin-right: 5px; position: relative; - padding: 12px; + padding: 8px; border: none; + color: #ffffff; } -#form_media header .form_media_download:hover { +#form_media header .form_media_download:hover, +#form_media header .form_media_replace:hover { background-color: transparent; - color: #ffffff; + color: #aaaaaa; } #form_media .main_content { @@ -14706,6 +14803,263 @@ table tfoot tr:hover { color: #aaaaaa; } +/********************* + Widget Panier +**********************/ + +.panier_manager .side_menu header { + padding: 13px; +} + +.panier_manager .side_menu header h1 { + font-size: 18px; + margin: 20px 0; +} + +.panier_manager .side_menu header p { + color: white; + font-size: 14px; +} + +.panier_manager .main_content .panier_list { + display: flex; + flex-wrap: wrap; +} + +.panier_manager .main_content .panier_list .panier_item { + display: inline-block; + border: 1px solid grey; + width: 202px; + margin: 8px 10px; + background-color: #333333; + transition: 0.3s ease-in-out; + position: relative; + padding-bottom: 25px; + height: 200px; + background-size: cover; + background-position: center; + cursor: pointer; +} + +.panier_manager .main_content .panier_list .panier_item::before { + content: ""; + background-color: rgba(255, 255, 255, 0.6); + position: absolute; + width: 100%; + height: 100%; + left: 3px; + top: 3px; + z-index: -1; +} + +.panier_manager .main_content .panier_list .panier_item::after { + content: ""; + background-color: rgba(255, 255, 255, 0.3); + position: absolute; + z-index: 1; + width: 100%; + height: 100%; +} + +.panier_manager .main_content .panier_list .panier_item .title { + position: absolute; + top: 0; + z-index: 2; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + padding: 5px; +} + +.panier_manager .main_content .panier_list .panier_item .title i { + color: #ffed4a; + margin-right: 10px; +} + +.panier_manager .main_content .panier_list .panier_item .title p { + margin: 0; + color: black; +} + +.panier_manager .main_content .panier_list .panier_item .bar { + position: absolute; + bottom: 0; + padding: 4px; + font-size: 11px; + z-index: 2; + text-align: right; + width: 100%; + padding: 3px 8px; +} + +.panier_manager .main_content .panier_list .panier_item .bar .action_delete_basket { + color: black; + margin-right: 6px; + font-size: 16px; +} + +.panier_manager .main_content .panier_list .panier_item .bar .count { + background-color: #FFAB57; + color: #ffffff; + font-size: 14px; + font-weight: bold; + padding: 5px 6px; + border-radius: 10px; + display: inline-block; +} + +/******************************** + Page publique d'un panier +*********************************/ + +.public_basket { + height: 100%; + overflow: hidden; +} + +.public_basket .main_content { + height: 100%; + padding: 0; + position: relative; + overflow: hidden; +} + +.public_basket .main_content header { + height: 48px; + background-color: #3b3b3b; + display: flex; + align-items: center; + justify-content: space-between; +} + +.public_basket .main_content header .basket_title { + margin-left: 10px; + font-size: 17px; +} + +.public_basket .main_content header .basket_Info { + margin-right: 10px; + font-size: 27px; +} + +.public_basket .main_content header .basket_Info a { + margin-right: 5px; +} + +.public_basket .main_content .media_container { + overflow-y: auto; + overflow-x: hidden; + scrollbar-color: #272626 #1a1a1a; + position: relative; + height: calc(100% - 48px); +} + +.public_basket .main_content .media_container .wrapper { + display: flex; + flex-wrap: wrap; +} + +.public_basket .main_content .media_container .wrapper .imageItem { + display: inline-block; + border: 1px solid grey; + width: 202px; + margin: 8px 10px; + background-color: #333333; + transition: 0.3s ease-in-out; + position: relative; + padding-bottom: 25px; + cursor: pointer; +} + +.public_basket .main_content .media_container .wrapper .imageItem .media { + height: 200px; + background-size: contain; + background-repeat: no-repeat; + background-position: center; + position: relative; +} + +.public_basket .main_content .media_container .wrapper .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; +} + +.public_basket .main_content .media_container .wrapper .imageItem .media.video::before { + content: "\F167"; + font-family: "Font Awesome 5 Brands"; +} + +.public_basket .main_content .media_container .wrapper .imageItem .media.son::before { + content: "\F58F"; + font-family: "Font Awesome 5 Pro"; + font-weight: 900; +} + +.public_basket .main_content .media_container .wrapper .imageItem .media.doc::before { + content: "\F15C"; + font-family: "Font Awesome 5 Pro"; + font-weight: 900; +} + +.public_basket .main_content .media_container .wrapper .imageItem .libelle { + padding: 4px; + text-align: center; + color: #ffffff; + margin: 0; + word-wrap: break-word; +} + +.public_basket .main_content .media_container .wrapper .imageItem .info { + position: absolute; + bottom: 0; + padding: 4px; + font-size: 11px; +} + +.public_basket .main_content .media_container .wrapper .imageItem .info i { + margin-right: 7px; +} + +.public_basket .main_content .media_container .wrapper .imageItem[aria-grabbed=true]::before { + content: "\F058"; + font-family: "Font Awesome 5 Pro"; + font-weight: 900; + display: block; + position: absolute; + left: 5px; + top: 5px; + text-align: center; + text-indent: 0; + color: #2489D1; + font-size: 25px; + z-index: 2; +} + +.public_basket .main_content .media_container .wrapper .imageItem[aria-grabbed=true]::after { + content: ""; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + position: absolute; + left: 0px; + top: 0px; + z-index: 1; +} + +.public_basket .main_content .media_container .wrapper .imageItem:hover { + background-color: #3b3b3b; +} + /****************************************** PAGE LOGIN ******************************************/ diff --git a/public/images/default.jpg b/public/images/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b7b4d4254dc3ba06eaffb271aeb8e862ce08e94 GIT binary patch literal 12880 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 literal 0 HcmV?d00001 diff --git a/public/js/app.js b/public/js/app.js index ebdcf8f..7b4ef5b 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -10986,23 +10986,27 @@ $(".userbar").on('click', function (event) { $(".submenu").toggle(); }); $(document).mouseup(function (e) { + // ---- Masque le menu utilisateur var container = $(".userbar"); if (!container.is(e.target) && container.has(e.target).length === 0) { $(".submenu").hide(); - } + } // ---- Masque le menu contextuel des dossiers + var menuContextuel = $(".folder_container .folder_menu"); if (!menuContextuel.is(e.target) && menuContextuel.has(e.target).length === 0) { menuContextuel.hide(); - } + } // ---- Masque le menu des paniers + 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(); - } + } // ---- Masque les filtres de la bar de recherche + var filter_list = $(".filter_selector"); @@ -11011,7 +11015,9 @@ $(document).mouseup(function (e) { } // ---- déselectionne les éléments si on clique en dehors - if ($(e.target).hasClass('media_container') || $(e.target).hasClass('wrapper')) { + var parentOffset = $('.media_container').parent().offset(); + + if ($(e.target).hasClass('media_container') && event.pageX - parentOffset.left < $('.media_container')[0]['clientWidth'] || $(e.target).hasClass('wrapper')) { $(".imageItem").attr("aria-grabbed", "false"); $(".imageItem").removeClass('flip'); } @@ -11602,6 +11608,17 @@ $(document).ready(function () { var dossier_id = $("#form_folder_property").attr("data-id"); var libelle = $(".form_folder_libelle").val(); var description = $(".form_folder_description").val(); + + if (libelle == "") { + $.fancyMessage({ + title: "Propriétés d'un dossier", + message: "Vous devez indiquer un nom de dossier.", + type: "error" + }); + return false; + } + + $(".form_folder_save").addClass('loading'); $.ajax({ url: '/ajax/save-folder-property', method: 'POST', @@ -11612,10 +11629,12 @@ $(document).ready(function () { description: description }, success: function success(result) { + $(".form_folder_save").removeClass('loading'); $(".folder_container .dd3-item[data-id='" + dossier_id + "'] > .dd3-content span").html(libelle); $.fancybox.close(); }, error: function error(jqXHR, textStatus, errorThrown) { + $(".form_folder_save").removeClass('loading'); $.fancybox.close(); $.fancyMessage({ title: "Attention", @@ -11834,7 +11853,7 @@ $(document).ready(function () { } }); // ---- Gestion de l'infinite scroll - $(".main_content .media_container").on("scroll resize", function () { + $(".media_manager .media_container").on("scroll resize", function () { if ($(window).data('ajaxready') == false) return; if ($(window).data('noMedia') == true) return; @@ -11980,7 +11999,7 @@ $(document).ready(function () { var mediaId = $(window).data('current_edit_media'); var $media = $(".media_container .imageItem[data-id='" + mediaId + "'] .media"); - var mediaBg = $media.css('background-image', 'url(' + result.folder + result.uid + "." + result.extension + '?t=' + new Date().getTime() + ')'); + var mediaBg = $media.css('background-image', 'url(' + result.folder + result.uid + "_thumb." + result.extension + '?t=' + new Date().getTime() + ')'); }, error: function error(jqXHR, textStatus, errorThrown) { $.fancybox.close(); @@ -12402,6 +12421,13 @@ $(document).ready(function () { } }).trigger("click"); } + }); // ---- Bouton pour remplacer un média par un autre + + $('.form_media_replace').on('click', function (event) { + event.preventDefault(); + $('.upload_container').show("fast"); + maxFiles = 1; + replaceMediaId = $(window).data('current_edit_media'); }); // ---- Bouton pour lancer le téléchargement d'un ou plusieurs médias $('#form_download .btn_form_download').on('click', function (event) { @@ -12481,7 +12507,8 @@ $(document).ready(function () { tags: $('#tag-editor').tagEditor('getTags')[0].tags, sites: $(".tab_edit .selector_sites .selector_dataValues").val(), marques: $(".tab_edit .selector_marques .selector_dataValues").val(), - articles: $(".tab_edit #articles").val() + articles: $(".tab_edit #articles").val(), + published_at: $(".tab_edit #published_at").val() }; $.ajax({ url: '/ajax/save-media', @@ -12525,13 +12552,19 @@ $(document).ready(function () { $('#close_upload_form').on('click', function (event) { event.preventDefault(); $('.upload_container').hide("fast"); - }); // ---- Ouvrir la popup d'upload + }); // ---- Ouvrir la popup de mode d'ajout $('.action_add_media').on('click', function (event) { event.preventDefault(); if ($(window).data('currentFolder') >= 0) { - $('.upload_container').show("fast"); + $("#form_select_add_media").fancybox({ + type: 'inline', + opts: { + animationDuration: 350, + animationEffect: 'material' + } + }).trigger("click"); } else { $.fancyMessage({ title: "Ajout de média", @@ -12539,6 +12572,49 @@ $(document).ready(function () { type: "error" }); } + }); // ---- Ouvrir la popup d'upload + + $('.add_media_by_upload').on('click', function (event) { + event.preventDefault(); + $.fancybox.close(); + $('.upload_container').show("fast"); + maxFiles = 100; + replaceMediaId = 0; + }); // ---- Ajoute un élément sans média + + $('.add_media_without_file').on('click', function (event) { + event.preventDefault(); + $.fancybox.close(); + $.ajax({ + url: '/ajax/add-media', + method: 'POST', + dataType: 'json', + data: { + dossier_id: $(window).data('currentFolder'), + sujet_id: $("#sujet_selector").val() + }, + success: function success(result) { + //---- Chargement des médias + var currentFolder = $(window).data('currentFolder'); + + if (currentFolder == 0 || currentFolder == "") { + var count = $(".folder_container .root_folder .count"); + } else { + var count = $(".folder_container .dd3-item[data-id='" + currentFolder + "'] > .dd3-content .count"); + } + + count.html(parseInt(count.html()) + 1); + $(".reinit_search_btn").trigger("click"); + }, + error: function error(jqXHR, textStatus, errorThrown) { + $(".folder_container .loader").hide(); + $.fancyMessage({ + title: "Attention", + message: "Erreur lors de la création du média. Merci d'actualiser la page.", + type: "error" + }); + } + }); }); // ---- Initialisation du module d'upload if ($('#fileupload').length) { @@ -12561,6 +12637,10 @@ $(document).ready(function () { return false; } + if (counter == 0) { + return false; + } + $("#submit").html(' Transférer'); $("#submit").css("pointer-events", "none"); $("#upload_errors").html(""); @@ -12578,6 +12658,7 @@ $(document).ready(function () { var currentfiles = []; var maxFiles = 100; var counter = 0; + var replaceMediaId = 0; $('#fileupload').fileupload({ url: "/ajax/upload-media", dataType: 'json', @@ -12593,7 +12674,7 @@ $(document).ready(function () { } else { $.fancyMessage({ title: "Attention", - message: "Vous ne pouvez pas ajouter plus de " + maxFiles + " fichiers", + message: "Vous ne pouvez pas ajouter plus de " + maxFiles + " fichier(s)", type: "info" }); return false; @@ -12641,7 +12722,8 @@ $(document).ready(function () { data.formData = { uid: create_UUID(), sujet_id: $("#sujet_selector").val(), - dossier_id: $(window).data('currentFolder') + dossier_id: $(window).data('currentFolder'), + replaceMediaId: replaceMediaId }; data.submit(); }); @@ -12683,6 +12765,11 @@ $(document).ready(function () { $(".reinit_search_btn").trigger("click"); $("#submit").html('Transférer'); $("#submit").css("pointer-events", "auto"); + + if (replaceMediaId != 0) { + // Fermeture de la popin d'édition de média + $(".form_media_close, .btn_tab_edit_cancel").trigger('click'); + } }, fail: function fail(e, data) { $.each(data.files, function (index, file) { @@ -13182,6 +13269,9 @@ window.create_UUID = function () { /***/ (function(module, exports) { $(document).ready(function () { + /*************************** + Widget panier + *****************************/ if ($(".panier_side_menu").length) { // ---- collapse/expand panier side menu $("#menu_panier").on('click', function (event) { @@ -13241,12 +13331,151 @@ $(document).ready(function () { }); } }); - }); // ---- Ajout un nouveau panier + }); // ---- Aller au 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 le panier + + $('.panier_side_menu .remove_panier').on('click', function (event) { + event.preventDefault(); + + if ($(window).data('currentBasket') == 0) { + $.fancyMessage({ + title: "Suppression de panier", + message: "Veuillez sélectionner un panier à supprimer.", + type: "info" + }); + } + + $.fancyConfirm({ + title: "Suppression de panier", + message: "Êtes-vous sûr de vouloir supprimer ce panier ?", + okButton: 'Supprimer', + noButton: 'Annuler', + callback: function callback(value) { + if (value) { + // sauvegarde de l'image en base + $.ajax({ + url: '/ajax/remove-basket', + method: 'POST', + dataType: 'json', + data: { + basket_id: $(window).data('currentBasket') + }, + success: function success(result) { + $("#panier_selector option[value='" + $(window).data('currentBasket') + "']").remove(); + $("#panier_selector").val($("#panier_selector option:first").val()); + $("#panier_selector").trigger("change"); + }, + error: function error(jqXHR, textStatus, errorThrown) { + $.fancybox.close(); + $.fancyMessage({ + title: "Suppression de panier", + message: "Erreur lors de la suppression, merci d'actualiser la page.", + type: "error" + }); + } + }); + } + } + }); + }); // ---- Propriétés d'un panier + + $('.panier_side_menu .info_panier').on('click', function (event) { + event.preventDefault(); + + if ($(window).data('currentBasket') == 0) { + $.fancyMessage({ + title: "Propriétés du panier", + message: "Veuillez sélectionner un panier.", + type: "info" + }); + } + + $.ajax({ + url: '/ajax/get-basket', + method: 'POST', + dataType: 'json', + data: { + basket_id: $(window).data('currentBasket') + }, + success: function success(result) { + if (result) { + var basket = result.basket; + $.fancybox.open({ + src: '#form_basket_property', + type: 'inline', + opts: { + animationDuration: 350, + animationEffect: 'material', + beforeShow: function beforeShow(instance, current) { + var date = new Date(basket.created_at); + $(".form_basket_datecreate").html(date.toLocaleDateString('fr-FR', { + 'hour': '2-digit', + 'minute': '2-digit' + })); + $(".form_basket_libelle").val(basket.libelle); + $(".form_basket_description").val(basket.description); + $(".form_basket_statut").val(basket.statut); + $(".form_basket_link").val(result.link); + } + } + }); + } + }, + 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" + }); + } + }); + }); // ---- enregistre les propriétés d'un panier + + $("html").on('click', '.form_basket_save', function (event) { + event.preventDefault(); + var libelle = $(".form_basket_libelle").val(); + + if (libelle == "") { + $.fancyMessage({ + title: "Propriétés d'un dossier", + message: "Vous devez indiquer un nom de panier.", + type: "error" + }); + return false; + } + + $(".form_basket_save").addClass('loading'); + $.ajax({ + url: '/ajax/save-basket-property', + method: 'POST', + dataType: 'json', + data: { + basket_id: $(window).data('currentBasket'), + libelle: libelle, + description: $(".form_basket_description").val(), + statut: $(".form_basket_statut").val() + }, + success: function success(result) { + $(".form_basket_save").removeClass('loading'); + $("#panier_selector option[value='" + $(window).data('currentBasket') + "']").text(result.libelle); + $.fancybox.close(); + }, + error: function error(jqXHR, textStatus, errorThrown) { + $(".form_basket_save").removeClass('loading'); + $.fancybox.close(); + $.fancyMessage({ + title: "Attention", + message: "Erreur lors de l'édition du panier, merci d'actualiser la page.", + type: "error" + }); + } + }); }); // ---- Supprimer un média du panier $('.panier_content').on('click', ".imageItem .media_remove_basket", function (event) { @@ -13340,6 +13569,69 @@ $(document).ready(function () { } }); } + /**************************************** + Page publique des paniers + *****************************************/ + + + if ($(".public_basket").length) { + // ---- Aperçu des médias du panier + $(".public_basket ").on("dblclick", '.imageItem', function (event) { + var imgPreview = $(this).attr('data-preview') + '?t=' + new Date().getTime(); + + if ($(this).attr('data-typemedia') == 1 || $(this).attr('data-typemedia') == 2) { + // image + $.fancybox.open(''); + } else if ($(this).attr('data-typemedia') == 3) { + // vidéo + $.fancybox.open(''); + } else if ($(this).attr('data-typemedia') == 4) { + // Audio + $.fancybox.open(''); + } + }); // ---- Propriétés d'un panier + + $('.public_basket .btn_basket_Info').on('click', function (event) { + event.preventDefault(); + $.fancybox.open({ + src: '#form_basket_property', + type: 'inline', + opts: { + animationDuration: 350, + animationEffect: 'material' + } + }); + }); // ---- Popup pour télécharger des médias en masse + + $('.public_basket .btn_basket_download').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")); + } + }); + + if (medias.length == 0) { + $.fancyMessage({ + title: "Télécharger des médias", + message: "Veuillez sélectionner au moins un média.", + type: "info" + }); + } else { + $("#form_download").fancybox({ + type: 'inline', + opts: { + animationDuration: 350, + animationEffect: 'material' + }, + beforeShow: function beforeShow() { + $("#form_download .medias").val(medias.join()); + } + }).trigger("click"); + } + }); + } }); // ---- Ajout de médias au panier window.addMediasBasket = function (medias) { diff --git a/resources/js/app.js b/resources/js/app.js index 5cd1915..03f1d77 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -113,21 +113,26 @@ $(".userbar").on('click',function(event) { }); $(document).mouseup(function(e) { + + // ---- Masque le menu utilisateur var container = $(".userbar"); if (!container.is(e.target) && container.has(e.target).length === 0) { $(".submenu").hide(); } + // ---- Masque le menu contextuel des dossiers var menuContextuel = $(".folder_container .folder_menu"); if (!menuContextuel.is(e.target) && menuContextuel.has(e.target).length === 0) { menuContextuel.hide(); } + // ---- Masque le menu des paniers 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(); } + // ---- Masque les filtres de la bar de recherche var filter_list = $(".filter_selector"); if (!filter_list.is(e.target) && filter_list.has(e.target).length === 0) { $(".filter_selector .list").hide(); @@ -135,7 +140,8 @@ $(document).mouseup(function(e) { // ---- déselectionne les éléments si on clique en dehors - if ($(e.target).hasClass('media_container') || $(e.target).hasClass('wrapper')) { + var parentOffset = $('.media_container').parent().offset(); + if ( ($(e.target).hasClass('media_container') && event.pageX- parentOffset.left < $('.media_container')[0]['clientWidth'] ) || $(e.target).hasClass('wrapper')) { $(".imageItem").attr("aria-grabbed", "false"); $(".imageItem").removeClass('flip'); } diff --git a/resources/js/media.js b/resources/js/media.js index a5ff532..fb27414 100644 --- a/resources/js/media.js +++ b/resources/js/media.js @@ -294,11 +294,16 @@ $(document).ready(function() { // ---- enregistre les propriétés d'un dossier $("html").on('click', '.form_folder_save', function(event) { event.preventDefault(); - var dossier_id = $("#form_folder_property").attr("data-id"); var libelle = $(".form_folder_libelle").val(); var description = $(".form_folder_description").val(); + if(libelle == ""){ + $.fancyMessage({title : "Propriétés d'un dossier", message : "Vous devez indiquer un nom de dossier.", type : "error"}); + return false; + } + $(".form_folder_save").addClass('loading'); + $.ajax({ url: '/ajax/save-folder-property', method: 'POST', @@ -309,10 +314,12 @@ $(document).ready(function() { description: description, }, success: function(result){ + $(".form_folder_save").removeClass('loading'); $(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content span").html(libelle); $.fancybox.close(); }, error: function(jqXHR, textStatus, errorThrown) { + $(".form_folder_save").removeClass('loading'); $.fancybox.close(); $.fancyMessage({title : "Attention", message : "Erreur lors de l'édition du dossier, merci d'actualiser la page.", type : "error"}); } @@ -515,7 +522,7 @@ $(document).ready(function() { }); // ---- Gestion de l'infinite scroll - $(".main_content .media_container").on("scroll resize", function() { + $(".media_manager .media_container").on("scroll resize", function() { if ($(window).data('ajaxready') == false) return; if ($(window).data('noMedia') == true) return; @@ -661,7 +668,7 @@ $(document).ready(function() { // MAJ du visuel dans la Liste var mediaId = $(window).data('current_edit_media') var $media = $(".media_container .imageItem[data-id='"+mediaId+"'] .media"); - var mediaBg = $media.css('background-image', 'url('+result.folder+result.uid+"."+result.extension+'?t='+ new Date().getTime()+')'); + var mediaBg = $media.css('background-image', 'url('+result.folder+result.uid+"_thumb."+result.extension+'?t='+ new Date().getTime()+')'); }, error: function(jqXHR, textStatus, errorThrown) { $.fancybox.close(); @@ -1033,6 +1040,14 @@ $(document).ready(function() { } }); + // ---- Bouton pour remplacer un média par un autre + $('.form_media_replace').on('click',function(event){ + event.preventDefault(); + $('.upload_container').show("fast"); + maxFiles = 1; + replaceMediaId =$(window).data('current_edit_media'); + }); + // ---- Bouton pour lancer le téléchargement d'un ou plusieurs médias $('#form_download .btn_form_download').on('click',function(event){ event.preventDefault(); @@ -1111,6 +1126,7 @@ $(document).ready(function() { sites : $(".tab_edit .selector_sites .selector_dataValues").val(), marques : $(".tab_edit .selector_marques .selector_dataValues").val(), articles : $(".tab_edit #articles").val(), + published_at : $(".tab_edit #published_at").val(), } $.ajax({ @@ -1151,16 +1167,57 @@ $(document).ready(function() { $('.upload_container').hide("fast"); }); - // ---- Ouvrir la popup d'upload + // ---- Ouvrir la popup de mode d'ajout $('.action_add_media').on('click',function(event){ event.preventDefault(); if($(window).data('currentFolder') >=0){ - $('.upload_container').show("fast"); + $("#form_select_add_media").fancybox({type : 'inline', opts : { animationDuration : 350, animationEffect : 'material'}}).trigger("click"); + }else{ $.fancyMessage({title : "Ajout de média", message : "Pour ajouter des médias, veuillez d'abord sélectionner un dossier de destination.", type : "error"}); } }); + // ---- Ouvrir la popup d'upload + $('.add_media_by_upload').on('click',function(event){ + event.preventDefault(); + $.fancybox.close(); + $('.upload_container').show("fast"); + maxFiles = 100; + replaceMediaId = 0; + }); + + // ---- Ajoute un élément sans média + $('.add_media_without_file').on('click',function(event){ + event.preventDefault(); + $.fancybox.close(); + $.ajax({ + url: '/ajax/add-media', + method: 'POST', + dataType : 'json', + data: { + dossier_id : $(window).data('currentFolder'), + sujet_id: $("#sujet_selector").val(), + }, + success: function(result){ + //---- Chargement des médias + var currentFolder = $(window).data('currentFolder'); + if(currentFolder == 0 || currentFolder == ""){ + var count = $(".folder_container .root_folder .count"); + }else{ + var count = $(".folder_container .dd3-item[data-id='"+currentFolder+"'] > .dd3-content .count"); + } + count.html(parseInt(count.html())+1); + + $(".reinit_search_btn").trigger("click"); + }, + error: function(jqXHR, textStatus, errorThrown) { + $(".folder_container .loader").hide(); + $.fancyMessage({title : "Attention", message : "Erreur lors de la création du média. Merci d'actualiser la page.", type : "error"}); + } + }); + }); + // ---- Initialisation du module d'upload if($('#fileupload').length){ $.ajaxSetup({ @@ -1182,6 +1239,9 @@ $(document).ready(function() { $.fancyMessage({title : "Ajout de média", message : "Pour ajouter des médias, veuillez d'abord sélectionner un dossier de destination.", type : "error"}); return false; } + if(counter ==0){ + return false; + } $("#submit").html(' Transférer'); $("#submit").css("pointer-events", "none"); $("#upload_errors").html(""); @@ -1200,6 +1260,7 @@ $(document).ready(function() { var currentfiles = []; var maxFiles = 100; var counter = 0; + var replaceMediaId = 0; $('#fileupload').fileupload({ url: "/ajax/upload-media", dataType: 'json', @@ -1214,7 +1275,7 @@ $(document).ready(function() { if(counter < maxFiles){ counter++; }else{ - $.fancyMessage({title : "Attention", message : "Vous ne pouvez pas ajouter plus de "+maxFiles+" fichiers", type : "info"}); + $.fancyMessage({title : "Attention", message : "Vous ne pouvez pas ajouter plus de "+maxFiles+" fichier(s)", type : "info"}); return false; } @@ -1256,6 +1317,7 @@ $(document).ready(function() { uid: create_UUID(), sujet_id: $("#sujet_selector").val(), dossier_id: $(window).data('currentFolder'), + replaceMediaId: replaceMediaId, }; data.submit(); }) @@ -1296,6 +1358,11 @@ $(document).ready(function() { $(".reinit_search_btn").trigger("click"); $("#submit").html('Transférer'); $("#submit").css("pointer-events", "auto"); + + if(replaceMediaId != 0){ + // Fermeture de la popin d'édition de média + $(".form_media_close, .btn_tab_edit_cancel").trigger('click'); + } }, fail: function (e, data) { $.each(data.files, function (index, file) { diff --git a/resources/js/panier.js b/resources/js/panier.js index d993b9d..c9cc948 100644 --- a/resources/js/panier.js +++ b/resources/js/panier.js @@ -1,5 +1,8 @@ $(document).ready(function() { + /*************************** + Widget panier + *****************************/ if ( $( ".panier_side_menu" ).length ) { // ---- collapse/expand panier side menu @@ -63,13 +66,126 @@ $(document).ready(function() { }); - // ---- Ajout un nouveau panier + // ---- Aller au 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 le panier + $('.panier_side_menu .remove_panier').on('click',function(event){ + event.preventDefault(); + if($(window).data('currentBasket') == 0){ + $.fancyMessage({title : "Suppression de panier", message : "Veuillez sélectionner un panier à supprimer.", type : "info"}); + } + + $.fancyConfirm({ + title : "Suppression de panier", + message : "Êtes-vous sûr de vouloir supprimer ce panier ?", + okButton : 'Supprimer', + noButton : 'Annuler', + callback : function (value) { + if (value) { + // sauvegarde de l'image en base + $.ajax({ + url: '/ajax/remove-basket', + method: 'POST', + dataType : 'json', + data: { + basket_id: $(window).data('currentBasket'), + }, + success: function(result){ + $("#panier_selector option[value='"+$(window).data('currentBasket')+"']").remove(); + $("#panier_selector").val($("#panier_selector option:first").val()); + $("#panier_selector").trigger("change"); + }, + error: function(jqXHR, textStatus, errorThrown) { + $.fancybox.close(); + $.fancyMessage({title : "Suppression de panier", message : "Erreur lors de la suppression, merci d'actualiser la page.", type : "error"}); + } + }); + } + } + }); + }); + + // ---- Propriétés d'un panier + $('.panier_side_menu .info_panier').on('click',function(event){ + event.preventDefault(); + + if($(window).data('currentBasket') == 0){ + $.fancyMessage({title : "Propriétés du panier", message : "Veuillez sélectionner un panier.", type : "info"}); + } + + $.ajax({ + url: '/ajax/get-basket', + method: 'POST', + dataType : 'json', + data: { + basket_id : $(window).data('currentBasket'), + }, + success: function(result){ + if(result){ + var basket = result.basket; + $.fancybox.open({ + src : '#form_basket_property', + type : 'inline', + opts : { + animationDuration : 350, + animationEffect : 'material', + beforeShow : function( instance, current ) { + var date = new Date(basket.created_at); + $(".form_basket_datecreate").html(date.toLocaleDateString('fr-FR', {'hour': '2-digit', 'minute': '2-digit'} )); + $(".form_basket_libelle").val(basket.libelle); + $(".form_basket_description").val(basket.description); + $(".form_basket_statut").val(basket.statut); + $(".form_basket_link").val(result.link); + } + } + }); + } + }, + 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"}); + } + }); + }); + + // ---- enregistre les propriétés d'un panier + $("html").on('click', '.form_basket_save', function(event) { + event.preventDefault(); + var libelle = $(".form_basket_libelle").val(); + if(libelle == ""){ + $.fancyMessage({title : "Propriétés d'un dossier", message : "Vous devez indiquer un nom de panier.", type : "error"}); + return false; + } + + $(".form_basket_save").addClass('loading'); + $.ajax({ + url: '/ajax/save-basket-property', + method: 'POST', + dataType : 'json', + data: { + basket_id: $(window).data('currentBasket'), + libelle: libelle, + description: $(".form_basket_description").val(), + statut: $(".form_basket_statut").val(), + }, + success: function(result){ + $(".form_basket_save").removeClass('loading'); + $("#panier_selector option[value='"+$(window).data('currentBasket')+"']").text(result.libelle); + $.fancybox.close(); + }, + error: function(jqXHR, textStatus, errorThrown) { + $(".form_basket_save").removeClass('loading'); + $.fancybox.close(); + $.fancyMessage({title : "Attention", message : "Erreur lors de l'édition du panier, merci d'actualiser la page.", type : "error"}); + } + }); + }); + // ---- Supprimer un média du panier $('.panier_content').on('click', ".imageItem .media_remove_basket",function(event){ event.preventDefault(); @@ -160,6 +276,65 @@ $(document).ready(function() { } + + /**************************************** + Page publique des paniers + *****************************************/ + if ( $( ".public_basket" ).length ) { + + + // ---- Aperçu des médias du panier + $(".public_basket ").on("dblclick", '.imageItem' , function(event) { + var imgPreview = $(this).attr('data-preview')+'?t='+ new Date().getTime(); + + if($(this).attr('data-typemedia') == 1|| $(this).attr('data-typemedia') == 2){ // image + $.fancybox.open(''); + }else if ($(this).attr('data-typemedia') == 3) { // vidéo + $.fancybox.open(''); + }else if ($(this).attr('data-typemedia') == 4) { // Audio + $.fancybox.open(''); + } + }); + + // ---- Propriétés d'un panier + $('.public_basket .btn_basket_Info').on('click',function(event){ + event.preventDefault(); + $.fancybox.open({ + src : '#form_basket_property', + type : 'inline', + opts : { + animationDuration : 350, + animationEffect : 'material', + } + }); + }); + + // ---- Popup pour télécharger des médias en masse + $('.public_basket .btn_basket_download').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")); + } + }); + + if(medias.length == 0){ + $.fancyMessage({title : "Télécharger des médias", message : "Veuillez sélectionner au moins un média.", type : "info"}); + }else{ + $("#form_download").fancybox({ + type : 'inline', + opts : { + animationDuration : 350, + animationEffect : 'material', + }, + beforeShow : function() { + $("#form_download .medias").val(medias.join()); + } + }).trigger("click"); + } + }); + } }); diff --git a/resources/sass/app.scss b/resources/sass/app.scss index cc9e336..1295618 100644 --- a/resources/sass/app.scss +++ b/resources/sass/app.scss @@ -15,4 +15,5 @@ 'partials/common.scss', 'partials/form.scss', 'partials/media.scss', +'partials/panier.scss', 'partials/user.scss'; diff --git a/resources/sass/partials/common.scss b/resources/sass/partials/common.scss index 2d01591..341d8ea 100644 --- a/resources/sass/partials/common.scss +++ b/resources/sass/partials/common.scss @@ -268,6 +268,49 @@ } } +#form_basket_property{ + padding: 30px; + min-width: 550px; + + h3{ + font-size: 14px; + margin-bottom: 12px; + font-weight: bold; + color: $white; + } + hr{ + color: #24272e; + border-bottom: 1px solid #2c2f36; + margin-bottom: 20px; + } + p.button_bar{ + text-align: right; + margin: 0; + } + select, input, textarea{ + width: 100%; + } + textarea{ + min-height: 200px; + } + .btn{ + margin-right: 10px; + } + .form_basket_save { + .fa-spinner-third{ + display: none; + } + &.loading{ + .fa-spinner-third{ + display: inline-block; + } + .fa-share{ + display: none; + } + } + } +} + #form_etiquette{ padding: 30px; min-width: 340px; @@ -333,6 +376,46 @@ } } + +#form_select_add_media{ + padding: 30px; + min-width: 340px; + + h3{ + font-size: 14px; + margin-bottom: 12px; + font-weight: bold; + color: $white; + } + hr{ + color: #24272e; + border-bottom: 1px solid #2c2f36; + margin-bottom: 20px; + } + .content{ + margin: 10px 0; + + a{ + display: block; + color: $white; + border-radius: 5px; + border: 1px solid $white; + padding: 15px 15px; + margin-bottom: 5px; + font-size: 15px; + transition: background-color 200ms ease-in; + + i{ + margin-right: 10px; + font-size: 20px; + } + + &:hover{ + background-color: $blue; + } + } + } +} /****************************************** TEMPLATE ******************************************/ diff --git a/resources/sass/partials/form.scss b/resources/sass/partials/form.scss index 6a6e9b2..e5dd251 100644 --- a/resources/sass/partials/form.scss +++ b/resources/sass/partials/form.scss @@ -7,7 +7,7 @@ p{ margin-bottom: 10px; } -input[type="text"], input[type="number"], input[type="password"], , input[type="email"], input[type="url"], select{ +input[type="text"], input[type="number"], input[type="password"], input[type="date"] , input[type="email"], input[type="url"], select{ border-radius: 3px; padding: 5px 10px; border: none; diff --git a/resources/sass/partials/media.scss b/resources/sass/partials/media.scss index 8c04a71..bede639 100644 --- a/resources/sass/partials/media.scss +++ b/resources/sass/partials/media.scss @@ -44,7 +44,7 @@ padding: 9px; min-width: 163px; transform: translateX(-50%); - z-index: 1; + z-index: 2; &.list_etiquette li label{ color: $white; @@ -617,7 +617,7 @@ position: absolute; display: none; background-color: $grey3; - z-index: 1; + z-index: 2; right: 12px; top: 48px; @@ -740,7 +740,7 @@ height: 100%; background-color: $grey3; position: absolute; - z-index: 99990; + z-index: 99; left: 0; top: 0; @@ -793,16 +793,18 @@ z-index: 1; } } - .form_media_download{ + .form_media_download, .form_media_replace{ float: right; - font-size: 18px; + font-size: 26px; + margin-right: 5px; position: relative; - padding: 12px; + padding: 8px; border: none; + color: $white; &:hover{ background-color: transparent; - color: $white; + color: $grey2; } } } diff --git a/resources/sass/partials/panier.scss b/resources/sass/partials/panier.scss new file mode 100644 index 0000000..5696989 --- /dev/null +++ b/resources/sass/partials/panier.scss @@ -0,0 +1,262 @@ +/********************* + Widget Panier +**********************/ + +.panier_manager{ + .side_menu{ + header{ + padding: 13px; + + h1{ + font-size: 18px; + margin: 20px 0; + } + p{ + color: white; + font-size: 14px; + } + } + .form_search_basket{ + + } + } + .main_content{ + + .panier_list{ + display: flex; + flex-wrap: wrap; + + .panier_item{ + display: inline-block; + border: 1px solid grey; + width: 202px; + margin: 8px 10px; + background-color: $grey3; + transition: 0.3s ease-in-out; + position: relative; + padding-bottom: 25px; + height: 200px; + background-size: cover; + background-position: center; + cursor: pointer; + + &::before{ + content: ''; + background-color: rgba(255,255,255,0.6); + position: absolute; + width: 100%; + height: 100%; + left: 3px; + top: 3px; + z-index: -1; + } + + &::after{ + content: ''; + background-color: rgba(255,255,255,0.3); + position: absolute; + z-index: 1; + width: 100%; + height: 100%; + } + + .title{ + position: absolute; + top: 0; + z-index: 2; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + padding: 5px; + + i{ + color: $yellow; + margin-right: 10px; + } + p{ + margin: 0; + color: black; + } + } + .bar{ + position: absolute; + bottom: 0; + padding: 4px; + font-size: 11px; + z-index: 2; + text-align: right; + width: 100%; + padding: 3px 8px; + + .action_delete_basket{ + color: black; + margin-right: 6px; + font-size: 16px; + } + .count{ + background-color: $lightorange; + color: $white; + font-size: 14px; + font-weight: bold; + padding: 5px 6px; + border-radius: 10px; + display: inline-block; + } + } + } + } + } +} + +/******************************** + Page publique d'un panier +*********************************/ + +.public_basket{ + height: 100%; + overflow: hidden; + + .main_content{ + height: 100%; + padding: 0; + position: relative; + overflow: hidden; + + header{ + height: 48px; + background-color: $grey; + display: flex; + align-items: center; + justify-content: space-between; + + .basket_title{ + margin-left: 10px; + font-size: 17px; + } + .basket_Info{ + margin-right: 10px; + font-size: 27px; + + a{ + margin-right: 5px; + } + } + } + + .media_container{ + overflow-y: auto; + overflow-x: hidden; + scrollbar-color: #272626 #1a1a1a; + position: relative; + height: calc(100% - 48px); + + .wrapper{ + display: flex; + flex-wrap: wrap; + + .imageItem{ + display: inline-block; + border: 1px solid grey; + width: 202px; + margin: 8px 10px; + background-color: $grey3; + transition: 0.3s ease-in-out; + position: relative; + padding-bottom: 25px; + 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; + + } + } + } + .libelle{ + padding: 4px; + text-align: center; + color: $white; + margin: 0; + word-wrap: break-word; + } + .info{ + position: absolute; + bottom: 0; + padding: 4px; + font-size: 11px; + i{ + margin-right: 7px; + } + } + + &[aria-grabbed="true"] { + &::before { + content: "\f058"; + font-family: "Font Awesome 5 Pro"; + font-weight: 900; + display: block; + position: absolute; + left: 5px; + top: 5px; + text-align: center; + text-indent: 0; + color: $lightblue; + font-size: 25px; + z-index: 2; + } + &::after { + content: ""; + width: 100%; + height: 100%; + background-color: rgba(0,0,0,0.5); + position: absolute; + left: 0px; + top: 0px; + z-index: 1; + } + } + &:hover{ + background-color: $grey; + } + } + } + } + } +} diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index a9beb1e..98292a2 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -37,6 +37,7 @@ @endforeach + @endsection diff --git a/resources/views/layouts/header.blade.php b/resources/views/layouts/header.blade.php index 7272389..20bc424 100644 --- a/resources/views/layouts/header.blade.php +++ b/resources/views/layouts/header.blade.php @@ -5,7 +5,7 @@ - Gestion des média + Gestion des médias + + + @@ -143,7 +148,7 @@ -