Gestion des paniers
Créez des sélections d'éléments et partagez les avec d'autres utilisateurs.
-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 0000000..1b7b4d4
Binary files /dev/null and b/public/images/default.jpg differ
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