command : import des médias

front : depot de fichier, moteur de recherche
This commit is contained in:
Yann Gonidec 2019-07-17 15:48:23 +02:00
parent 7b857744f7
commit 6f8786ae29
22 changed files with 1703 additions and 298 deletions

View file

@ -4,6 +4,7 @@ namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
use App\Article;
use App\Marque;
use App\Sujet;
@ -11,9 +12,13 @@ use App\Typemedia;
use App\Typevue;
use App\Site;
use App\Variante;
use App\Media;
use App\Http\Traits\MediaTools;
class ImportArcadiaFiles extends Command
{
use MediaTools;
/**
* The name and signature of the console command.
*
@ -171,10 +176,111 @@ class ImportArcadiaFiles extends Command
$record->save();
}
}
}elseif (substr($filename, 0, 16) == "DAM_MEDIA_VISUEL") {
foreach ($fileContent->MEDIA_VISUEL as $row) {
$record = Media::where('arcadia_id', $row->code)->first();
if(!$record){ // Insert new record
$record = new Media();
$record->arcadia_id = $row->code;
if($row->extension != ""){
$record->extension = $row->extension->typeFichier->libExtension;
}
$record->libelle = $row->libelle;
$record->largeur = $row->nbPxLargeur;
$record->largeur_mm = $row->largeurMm;
$record->hauteur = $row->nbPxHauteur;
$record->hauteur_mm = $row->hauteurMm;
$record->resolution = $row->pppLargeur;
if($row->version != ""){
$record->version = $row->version;
}else{
$record->version = 1;
}
if($row->typemedia_id != ""){
$record->typemedia_id = $row->codeTypeMedia;
}else{
$record->typemedia_id = 1;
}
if($row->typevue_id != ""){
$record->typevue_id = $row->codeTypeVue;
}
$record->commentaire = $row->commentaire;
$record->sujet_id = $row->codeSujet;
if($row->langue != ""){
$record->langue_id = $row->langue;
}
if($row->copyright != ""){
$record->copyright_id = $row->copyright;
}
if($row->codeVariante != ""){
$record->variante_id = $row->codeVariante;
}
if($row->dateCreation != ""){
$row->dateCreation = substr($row->dateCreation, 0, 10);
$date = explode("/", $row->dateCreation);
$record->created_at = $date[2].'-'.$date[1].'-'.$date[0];
}
if($row->dateModification != ""){
$row->dateModification = substr($row->dateModification, 0, 10);
$date = explode("/", $row->dateModification);
$record->updated_at = $date[2].'-'.$date[1].'-'.$date[0];
}
if($row->datePublication != ""){
$row->datePublication = substr($row->datePublication, 0, 10);
$date = explode("/", $row->datePublication);
$record->published_at = $date[2].'-'.$date[1].'-'.$date[0];
}
$record->statut = config('services.statut.public_etendue');
// TODO lien avec les sites, marques et articles
$mediaFile = "/images/".$record->arcadia_id.".".$record->extension;
$fileExists = Storage::disk('arcadia')->exists($mediaFile);
if($fileExists){
$file = Storage::disk('arcadia')->get($mediaFile);
// Affectation d'un dossier et d'un uid
$destinationPath = $this->get_mediaFolder()."/";
$record->folder = $destinationPath;
$record->uid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
// 16 bits for "time_mid"
mt_rand(0, 0xffff),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand(0, 0x0fff) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand(0, 0x3fff) | 0x8000,
// 48 bits for "node"
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
// déplacement du média et renommage du fichier
$full_path_source = Storage::disk('arcadia')->getDriver()->getAdapter()->applyPathPrefix($mediaFile);
$full_path_dest = Storage::disk('local')->getDriver()->getAdapter()->applyPathPrefix($destinationPath.$record->uid. '.' .$record->extension);
File::move($full_path_source, $full_path_dest);
// calcul de la taille du média et durée
$record->taille = $this->formatBytes($this->get_file_size($full_path_dest));
$record->save();
// ---- Creation des vignettes de base
$this->create_sys_thumb($record);
// ---- Creation des vignettes en lien avec le sujet du média
$this->create_thumb($record);
}
}
}
}
// ---- Suppression du fichier
Storage::disk('arcadia')->delete($filename);
//Storage::disk('arcadia')->delete($filename);
$bar->advance();
}

View file

@ -22,7 +22,7 @@ class DossierController extends Controller
public function index()
{
Auth::user()->authorizeRoles(config('roles.const.ADMIN'));
$dossiers = Dossier::whereNull('parent_id')
$dossiers = Dossier::whereNull('parent_id')->where('system', 0)
->get();
$sujets = Sujet::where('sujet_dam', 1)->get();
@ -191,11 +191,22 @@ class DossierController extends Controller
$userId = Auth::user()->id;
$sujetId = $request->input('sujetId');
$marques = Auth::user()->marques()->pluck("marque_id");
$response['data'] = Dossier::where('sujet_id', $sujetId)
$dossierQuery = Dossier::where('sujet_id', $sujetId)
->whereNull('parent_id')
->whereHas("marques", function($query) use ($marques){
$query->whereIn("marque_id", $marques);
})->get();
// Ajout du dépôt de fichier pour les admin
if(Auth::user()->hasRole(config('roles.const.ADMIN')) ){
$depotQuery = Dossier::whereNull('parent_id')
->where('system', 1)
->get();
$response['data'] = $dossierQuery->merge($depotQuery);
}else{
$response['data'] = $dossierQuery;
}
$response['count'] = Media::where('sujet_id', $sujetId)
->whereNull('dossier_id')
->where(function ($query) use ( $userId ) {
@ -232,11 +243,39 @@ class DossierController extends Controller
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
$parent_id = $request->input('parent_id');
$libelle = $request->input('libelle');
$description = $request->input('description');
// ---- Le dossier
$dossier = new Dossier();
$dossier->libelle = $libelle;
$dossier->description = $description;
$dossier->parent_id = $parent_id;
if($parent_id == 1){ // dossier de dépôt
$dossier->system = 1;
}
$dossier->save();
$response['folder_id'] = $dossier->id;
return json_encode($response);
}
/**
* Ajouter un dossier de dépôt
*
*/
public function addDepotFolder(Request $request)
{
$response = array();
$parent_id = $request->input('parent_id');
$libelle = $request->input('libelle');
$description = $request->input('description');
// ---- Le dossier
$dossier = new Dossier();
$dossier->libelle = $libelle;
$dossier->description = $description;
$dossier->parent_id = 1;
$dossier->system = 1;
$dossier->save();
$response['folder_id'] = $dossier->id;
@ -272,12 +311,17 @@ class DossierController extends Controller
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
$dossier_id = $request->input('dossier_id');
$parent_id = $request->input('parent_id');
$sujet_id = $request->input('sujet_id');
// ---- Le dossier
$dossier = Dossier::where('id', $dossier_id)->first();
if($dossier && !is_null($dossier->parent_id)){
$dossier->parent_id = $parent_id;
if ($dossier->save()) {
Media::where('dossier_id', $dossier_id)->update(['sujet_id' => $sujet_id]);
return json_encode(true);
}
}

View file

@ -14,6 +14,7 @@ use App\Copyright;
use App\Etiquette;
use App\Site;
use App\Marque;
use App\Dossier;
use App\Tag;
use App\Article;
use App\Http\Traits\MediaTools;
@ -35,7 +36,7 @@ class MediaController extends Controller
$langues = Langue::all();
$copyrights = Copyright::all();
$etiquettes = Etiquette::all();
$sites = Site::all();
$sites = Site::orderBy('libelle')->get();
$marques = Marque::all();
return view('media_manager')->with([
'sujets'=> $sujets,
@ -58,41 +59,88 @@ class MediaController extends Controller
$userId = Auth::user()->id;
$dossier_id = $request->input('dossier_id');
$sujet_id = $request->input('sujet_id');
$filters = json_decode($request->input('filters'));
$offset = $request->input('offset');
$limit = $request->input('limit');
$orderField = $request->input('orderField');
$order = $request->input('order');
$isDepot = 0;
if($dossier_id == "0"){
$response['data'] = Media::where('sujet_id', $sujet_id)
->whereNull('dossier_id')
if($dossier_id == "0"){ // dossier racine
$query= Media::where('sujet_id', $sujet_id)
->whereNull('dossier_id');
}elseif($dossier_id == "-1"){
$query = Media::where('sujet_id', $sujet_id)
->where(function ($query) use ( $userId ) {
$query->where('statut', '<>', 0)
->orWhere('created_by', $userId);
})
->with('Etiquette')
->offset($offset)
->limit($limit)
->orderBy($orderField, $order)
->get();
});
}else{
$response['data'] = Media::where('sujet_id', $sujet_id)
->where('dossier_id', $dossier_id)
->where(function ($query) use ( $userId ) {
$query->where('statut', '<>', 0)
->orWhere('created_by', $userId);
})
->with('Etiquette')
->offset($offset)
->limit($limit)
->orderBy($orderField, $order)
->get();
$dossier= Dossier::where('id', $dossier_id)->first();
if($dossier->parent_id != 1 && $dossier->id != 1){ // dossier classic
$query = Media::where('sujet_id', $sujet_id)
->where('dossier_id', $dossier_id)
->where(function ($query) use ( $userId ) {
$query->where('statut', '<>', 0)
->orWhere('created_by', $userId);
});
}else{ // dossier dépôt
$isDepot = 1;
$query= Media::where('dossier_id', $dossier_id);
}
}
// Filtre recherche texte
if(property_exists($filters, 'search')){
$search = strtolower(trim($filters->search->value));
$query->where(function ($query) use ( $search ) {
$query->whereRaw("LCASE(libelle) LIKE '%".$search."%'")
->orWhere('arcadia_id', $search)
->orWhereHas("articles", function($query) use ($search){
$query->where("noArt", $search)
->orWhereRaw("LCASE(libCcial) LIKE '%".$search."%'")
->orWhereRaw("LCASE(libMarq) LIKE '%".$search."%'")
->orWhereRaw("LCASE(libFamVte) LIKE '%".$search."%'")
->orWhere('codGencodAdm', $search)
->orWhere('codGencodSymb', $search)
->orWhere('codGencodPds', $search);
})
->orWhereHas("tags", function($query) use ($search){
$query->WhereRaw("LCASE(libelle) LIKE '%".$search."%'");
});
});
}
// Filtre type de média
if(property_exists($filters, 'typemedia_id')){
$query->whereIn('typemedia_id', $filters->typemedia_id->value);
}
// Filtre type de vue
if(property_exists($filters, 'typevue_id')){
$query->whereIn('typevue_id', $filters->typevue_id->value);
}
// Filtre liason avec Arcadia
if(property_exists($filters, 'arcadia_id')){
$query->whereNotNull('arcadia_id' );
}
// Filtre etiquette
if(property_exists($filters, 'etiquette_id')){
$query->whereIn('etiquette_id', $filters->etiquette_id->value);
}
$query->with('Etiquette')
->offset($offset)
->limit($limit)
->orderBy($orderField, $order);
$response['data'] = $query->get();
if(Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')] )){
$response['draggable'] = true;
}else{
$response['draggable'] = false;
}
$response['role'] = Auth::user()->role;
$response['isDepot'] = $isDepot;
return json_encode($response);
}
@ -107,10 +155,12 @@ class MediaController extends Controller
$response = array();
$dossier_id = $request->input('dossier_id');
$data = $request->input('data');
$sujet_id = $request->input('sujet_id');
$data = explode(",", $data);
foreach ($data as $key => $media_id) {
$media = Media::where('id', $media_id)->first();
if($media){
$media->sujet_id = $sujet_id;
if($dossier_id > 0){
$media->dossier_id = $dossier_id;
}else{
@ -165,15 +215,21 @@ class MediaController extends Controller
$filepath = preg_quote($media->folder.$media->uid, '/');
$matchingFiles = preg_grep('/^'.$filepath.'/', $files);
foreach ($matchingFiles as $matchingFile) {
$im = new \imagick($matchingFile);
$imageprops = $im->getImageGeometry();
$path_parts = pathinfo($matchingFile);
$fileInfo = array();
$fileInfo['url'] = $host."/".$matchingFile;
$fileInfo['resolution'] = $imageprops['width']."x".$imageprops['height']."px";
$fileInfo['extension'] = $path_parts['extension'];
$fileInfo['libelle'] = $path_parts['filename'];
$fileInfo['extension'] = $path_parts['extension'];
$fileInfo['resolution'] = "";
if(in_array($path_parts['extension'], array("gif", "jpeg", "jpg", "png", "pdf", "ai", "psd")) ){
$im = new \imagick($matchingFile);
$im->setIteratorIndex(0);
$imageprops = $im->getImageGeometry();
$fileInfo['resolution'] = $imageprops['width']."x".$imageprops['height']."px";
}
if(strpos($fileInfo['libelle'], '_')){
$fileInfo['libelle'] = "Format ".substr($fileInfo['libelle'], strpos($fileInfo['libelle'], '_')+1);
}else{
@ -343,6 +399,12 @@ class MediaController extends Controller
$response = false;
$media_id = $request->input('media_id');
$arcadia_id = $request->input('arcadia_id');
if($arcadia_id == "" || $arcadia_id == 0){
$arcadia_id = NULL;
}else{
$media = Media::where('arcadia_id', $arcadia_id)->first();
if($media) return json_encode($response);
}
$media = Media::where('id', $media_id)->first();
if($media){
@ -379,7 +441,7 @@ class MediaController extends Controller
public function downloadMedia(Request $request)
{
if(!$user = Auth::user()) abort(404, 'Erreur lors du téléchargement');
$deleteFileAfterSend = false;
// obtention du format
$formatId = $request->input('format');
if($formatId != 0){
@ -410,10 +472,11 @@ class MediaController extends Controller
$zip->addFile($fp, basename($fp));
}
}
$deleteFileAfterSend = true;
$zip->close();
$fp = $zip_file;
}
return response()->download($fp)->deleteFileAfterSend(true);
return response()->download($fp)->deleteFileAfterSend($deleteFileAfterSend);
}
}

View file

@ -5,6 +5,7 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
use App\Media;
use App\Site;
use App\Http\Traits\MediaTools;
@ -12,9 +13,16 @@ class UploadController extends Controller {
use MediaTools;
public function index()
public function index(Request $request)
{
return view('upload.show');
// ---- Vérification du token de sécurité
$token = $request->get('token');
if($token != env('TOKEN_DEPOT', "c8c4613a-236c-4b06-95f6-a9c9c6c18861")) return abort(404);
$sites = Site::orderBy('libelle')->get();
return view('upload.show')->with([
'sites'=> $sites,
]);
}
public function storeMedia(Request $request)
@ -22,10 +30,10 @@ class UploadController extends Controller {
$uid = $request->input('uid');
$sujet_id = $request->input('sujet_id');
$dossier_id = $request->input('dossier_id');
if($dossier_id == 0) $dossier_id = null;
if($dossier_id == 0) $dossier_id = NULL;
$headers = $request->headers->all();
$acceptFileTypes = array('gif','jpeg', 'jpg','png','mp4','mp3','psd','ai','eps','svg','indd','pdf');
$acceptFileTypes = array('gif','jpeg', 'jpg','png','mp4','mp3','psd','ai','svg','pdf');
if ($request->hasFile('files')) {
$file = $request->file('files');
@ -113,10 +121,13 @@ class UploadController extends Controller {
case 'jpeg':
case 'jpg':
case 'png':
case 'ai':
case 'pdf':
case 'psd':
$media->typemedia_id = 1;
$im = new \imagick($destinationPath.$filename);
if($extension == "gif" ){
if(in_array($extension, array("pdf", "ai", "psd", "gif")) ){
$im->setIteratorIndex(0);
}
@ -134,11 +145,14 @@ class UploadController extends Controller {
$media->hauteur_mm = "";
}
$media->save();
$im->destroy();
// ---- Creation des vignettes de base
$this->create_sys_thumb($media);
// ---- Creation des vignettes en lien avec le sujet du média
$this->create_thumb($media);
if(isset($sujet_id) ){
$this->create_thumb($media);
}
break;
// Illustration/Vectorielle (2)
case 'svg':
@ -165,45 +179,6 @@ class UploadController extends Controller {
}
$media->save();
break;
// Document (5)
case 'ai':
case 'eps':
case 'indd':
case 'pdf':
case 'psd':
default:
$media->typemedia_id = 5;
if(in_array($extension, array("pdf", "ai", "psd")) ){
$im = new \imagick();
$im->readImage($destinationPath.$filename);
if($extension == "pdf" || $extension == "psd" || $extension == "ai"){
$im->setIteratorIndex(0);
}
$imageprops = $im->getImageGeometry();
$media->largeur = $imageprops['width'];
$media->hauteur = $imageprops['height'];
$resolutions = $im->getImageResolution();
$media->resolution = $resolutions['x'];
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();
$im->destroy();
// ---- Creation des vignettes de base
$this->create_sys_thumb($media);
// ---- Creation des vignettes en lien avec le sujet du média
$this->create_thumb($media);
}
break;
}
}

View file

@ -169,7 +169,7 @@ trait MediaTools {
// format système (thumb et preview)
if($format->system == 1){
if(in_array($media->extension, array("gif", "jpeg", "jpg", "png")) ){
return public_path()."/".$media->folder.$media->uid.'_'.$format->libelle.'.'.$format->extension;
return public_path()."/".$media->folder.$media->uid.'_'.$format->libelle.'.'.$media->extension;
}elseif(in_array($media->extension, array("pdf", "ai", "psd"))){
return public_path()."/".$media->folder.$media->uid.'.png';
}else{

View file

@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model;
class Sujet extends Model
{
/**
* The primary key associated with the table.
*

View file

@ -155,6 +155,7 @@ return [
*/
'port' => env('LDAP_PORT', 389),
// 'port' => env('LDAP_PORT', 636),
/*
|--------------------------------------------------------------------------

View file

@ -7,7 +7,8 @@
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"wp": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.18",

221
public/css/app.css vendored
View file

@ -3834,6 +3834,16 @@ table {
user-select: none;
}
.dd3-content span {
text-overflow: ellipsis;
word-wrap: break-word;
white-space: nowrap;
display: inline-block;
width: 209px;
overflow: hidden;
height: 20px;
}
.dd3-content .count {
float: right;
display: inline;
@ -12217,7 +12227,8 @@ readers do not read off random characters that represent icons */
* https://opensource.org/licenses/MIT
*/
.upload_container {
.upload_container,
.depot_container {
display: none;
position: absolute;
top: 50%;
@ -12226,13 +12237,14 @@ readers do not read off random characters that represent icons */
transform: translate(-50%, -50%);
width: 300px;
height: 400px;
background-color: #ffffff;
background-color: #24272e;
z-index: 100;
border-radius: 10px;
/* Fixes for IE < 8 */
}
.upload_container .fileinput-button {
.upload_container .fileinput-button,
.depot_container .fileinput-button {
position: relative;
overflow: hidden;
display: inline-block;
@ -12254,19 +12266,21 @@ readers do not read off random characters that represent icons */
border-radius: 4px;
width: 100%;
font-size: 15px;
color: #3b3b3b;
color: #ffffff;
padding: 16px;
cursor: pointer;
border-bottom: 1px solid #aaaaaa;
border-bottom: 1px solid #17191F;
}
.upload_container .fileinput-button i {
.upload_container .fileinput-button i,
.depot_container .fileinput-button i {
color: #2489D1;
font-size: 18px;
margin-right: 10px;
}
.upload_container .fileinput-button input {
.upload_container .fileinput-button input,
.depot_container .fileinput-button input {
position: absolute;
top: 0;
right: 0;
@ -12278,18 +12292,20 @@ readers do not read off random characters that represent icons */
}
@media screen\9 {
.upload_container .fileinput-button input {
.upload_container .fileinput-button input,
.depot_container .fileinput-button input {
filter: alpha(opacity=0);
font-size: 100%;
height: 100%;
}
}
.upload_container .progress {
.upload_container .progress,
.depot_container .progress {
display: none;
height: 6px;
overflow: hidden;
background-color: #f5f5f5;
background-color: #24272e;
position: absolute;
top: 0px;
left: 0;
@ -12297,7 +12313,8 @@ readers do not read off random characters that represent icons */
width: 100%;
}
.upload_container .progress .progress-bar {
.upload_container .progress .progress-bar,
.depot_container .progress .progress-bar {
float: left;
width: 0;
height: 100%;
@ -12310,29 +12327,34 @@ readers do not read off random characters that represent icons */
transition: width 0.6s ease;
}
.upload_container .progress .progress-bar.progress-bar-success {
.upload_container .progress .progress-bar.progress-bar-success,
.depot_container .progress .progress-bar.progress-bar-success {
background-color: #5cb85c;
}
.upload_container .content_wrapper {
.upload_container .content_wrapper,
.depot_container .content_wrapper {
height: 286px;
overflow-y: auto;
}
.upload_container #files > div {
.upload_container #files > div,
.depot_container #files > div {
width: 100%;
padding: 10px;
border-bottom: 1px solid #e8ebed;
border-bottom: 1px solid #17191F;
}
.upload_container #files > div div:first-child {
color: #000000;
.upload_container #files > div div:first-child,
.depot_container #files > div div:first-child {
color: #ffffff;
margin-bottom: 5px;
font-size: 14px;
position: relative;
}
.upload_container #files > div div:first-child span {
.upload_container #files > div div:first-child span,
.depot_container #files > div div:first-child span {
white-space: nowrap;
display: block;
text-overflow: ellipsis;
@ -12340,11 +12362,13 @@ readers do not read off random characters that represent icons */
max-width: 91%;
}
.upload_container #files > div div:last-child {
color: #3b3b3b;
.upload_container #files > div div:last-child,
.depot_container #files > div div:last-child {
color: #aaaaaa;
}
.upload_container #files > div button {
.upload_container #files > div button,
.depot_container #files > div button {
display: none;
border: none;
background-color: transparent;
@ -12354,17 +12378,20 @@ readers do not read off random characters that represent icons */
cursor: pointer;
}
.upload_container #files > div button i {
color: #337ab7;
.upload_container #files > div button i,
.depot_container #files > div button i {
color: #ffffff;
font-size: 19px;
}
.upload_container #files > div:hover button {
.upload_container #files > div:hover button,
.depot_container #files > div:hover button {
display: block;
}
.upload_container .upload_bar {
border-top: 1px solid #aaaaaa;
.upload_container .upload_bar,
.depot_container .upload_bar {
border-top: 1px solid #17191F;
width: 100%;
height: 60px;
position: absolute;
@ -12372,17 +12399,61 @@ readers do not read off random characters that represent icons */
padding: 13px 10px;
}
.upload_container .upload_bar #submit {
.upload_container .upload_bar #submit,
.depot_container .upload_bar #submit {
display: inline-block;
}
.upload_container .upload_bar #cancel,
.upload_container .upload_bar #close_upload_form {
color: #3b3b3b;
.upload_container .upload_bar #close_upload_form,
.depot_container .upload_bar #cancel,
.depot_container .upload_bar #close_upload_form {
color: #ffffff;
cursor: pointer;
margin-left: 15px;
}
.depot_container {
display: block;
width: 700px;
}
.depot_container header {
padding: 20px;
border-bottom: 1px solid #17191F;
}
.depot_container header i {
font-size: 30px;
margin-right: 10px;
color: white;
}
.depot_container .mainContent {
display: flex;
flex-direction: row;
}
.depot_container .mainContent .col {
width: 50%;
}
.depot_container .mainContent .col .fileinput-button {
border: none;
}
.depot_container .mainContent .col .content_wrapper {
height: 217px;
}
.depot_container .mainContent .col input,
.depot_container .mainContent .col textarea,
.depot_container .mainContent .col select {
display: block;
width: 315px;
margin: 15px;
}
.darkroom-container {
position: relative;
}
@ -13624,19 +13695,107 @@ table tfoot tr:hover {
.media_manager .main_content header .search_wrapper .search_filters {
display: inline-flex;
align-items: center;
padding: 0px 10px;
}
.media_manager .main_content header .search_wrapper .search_filters > div {
display: flex;
align-items: center;
margin-right: 10px;
padding: 1px 8px;
border-right: 1px solid #aaaaaa;
position: relative;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.media_manager .main_content header .search_wrapper .search_filters > div i {
margin-left: 10px;
}
.media_manager .main_content header .search_wrapper .search_filters > div:last-child {
border: none;
}
.media_manager .main_content header .search_wrapper .search_filters > div .list {
position: absolute;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
top: 17px;
left: 50%;
background-color: #24272e;
padding: 9px;
min-width: 163px;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
z-index: 1;
}
.media_manager .main_content header .search_wrapper .search_filters > div .list.list_etiquette li label {
color: #ffffff;
padding: 4px;
display: inline-block;
position: relative;
}
.media_manager .main_content header .search_wrapper .search_filters > div .list.list_etiquette li label::before {
border-color: inherit;
content: "";
top: 0;
border-style: solid;
border-width: 11px;
border-bottom-color: transparent;
border-right-color: transparent;
border-top-color: transparent;
position: absolute;
right: -22px;
}
.media_manager .main_content header .search_wrapper .filter_wrapper {
display: flex;
flex-direction: row;
margin-top: 18px;
align-items: center;
}
.media_manager .main_content header .search_wrapper .filter_wrapper > span {
color: #FFAB57;
font-weight: bold;
margin-right: 3px;
}
.media_manager .main_content header .search_wrapper .filter_wrapper .search_filters_list .filter_item {
border: 1px solid #aaaaaa;
border-radius: 3px;
padding: 3px 3px;
font-size: 11px;
margin: 0 1px;
display: inline-block;
}
.media_manager .main_content header .search_wrapper .filter_wrapper .search_filters_list .filter_item:hover {
color: #ffffff;
border: 1px solid #ffffff;
}
.media_manager .main_content header .search_wrapper .filter_wrapper .search_filters_list .filter_item i {
margin-left: 6px;
}
.media_manager .main_content header .search_wrapper .filter_wrapper .reinit_search_btn {
display: none;
color: #2ea8e5;
margin-left: 4px;
font-size: 11px;
}
.media_manager .main_content header .search_wrapper .filter_wrapper .reinit_search_btn:hover {
color: #2489D1;
text-decoration: underline;
}
.media_manager .main_content header .action_wrapper {
background-color: #3b3b3b;
width: 100%;

599
public/js/app.js vendored
View file

@ -10928,9 +10928,14 @@ jQuery.fn.scrollParent = function () {
return overflowRegex.test(overflowState.overflow + overflowState.overflowX + overflowState.overflowY);
}).eq(0);
return position === "fixed" || !scrollParent.length ? $(this[0].ownerDocument || document) : scrollParent;
}; //confirm popup
}; // ---- Configuration de base des filtres médias
$(window).data('offset', 0);
$(window).data('limit', 50);
$(window).data('currentFolder', 0);
$(window).data('filter', {}); //confirm popup
$.fancyConfirm = function (opts) {
opts = $.extend(true, {
title: 'Are you sure?',
@ -10981,15 +10986,22 @@ $(".userbar").on('click', function (event) {
});
$(document).mouseup(function (e) {
var container = $(".userbar");
var menuContextuel = $(".folder_container .folder_menu");
if (!container.is(e.target) && container.has(e.target).length === 0) {
$(".submenu").hide();
}
var menuContextuel = $(".folder_container .folder_menu");
if (!menuContextuel.is(e.target) && menuContextuel.has(e.target).length === 0) {
menuContextuel.hide();
}
var filter_list = $(".filter_selector");
if (!filter_list.is(e.target) && filter_list.has(e.target).length === 0) {
$(".filter_selector .list").hide();
}
}); // ---- Header : Ouverture formulaire de contact
$(".contact_btn").on('click', function (event) {
@ -11058,6 +11070,195 @@ $(".form_contact_send").on('click', function (event) {
/***/ }),
/***/ "./resources/js/depot.js":
/*!*******************************!*\
!*** ./resources/js/depot.js ***!
\*******************************/
/*! no static exports found */
/***/ (function(module, exports) {
$(document).ready(function () {
/******************************
Dépôt de média
**********************************/
// ---- Initialisation du module de dépôt
if ($('#uploadDepot').length) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var dossier_id = 0;
var cancel_btn = $('<button/>').addClass('cancel').html('<i class="fal fa-times"></i>');
var upload_btn = $('<button/>').addClass('upload').css('display', 'none');
$('#submit').on('click', function (event) {
event.preventDefault();
if (!$(".form_depot_media")[0].checkValidity()) {
$(".form_depot_media")[0].reportValidity();
$.fancyMessage({
title: "Dépôt de médias",
message: "Veuillez compléter tous les champs avant de lancer le transfert.",
type: "error"
});
return false;
}
if (currentfiles.length == 0) {
$.fancyMessage({
title: "Dépôt de médias",
message: "Veuillez ajouter des médias avant de lancer le transfert.",
type: "error"
});
return false;
}
var currentdate = new Date();
folderName = $("#depot_societe").val().replace(' ', '_') + "_" + currentdate.getFullYear().toString() + ("0" + (currentdate.getMonth() + 1)).slice(-2) + currentdate.getDate().toString() + "_" + currentdate.getHours().toString() + currentdate.getMinutes().toString() + currentdate.getSeconds().toString();
var description = "Nom : " + $("#depot_nom").val() + '\n' + "Société : " + $("#depot_societe").val() + '\n' + $("#depot_description").val(); // création d'un dossier de dépôt
$("#upload_errors").html("");
$.ajax({
url: '/ajax/add-depot-folder',
method: 'POST',
dataType: 'json',
data: {
libelle: folderName,
description: description
},
success: function success(result) {
dossier_id = result.folder_id;
$('.upload').click(); //click upload buttons and upload all files in the queue
},
error: function error(jqXHR, textStatus, errorThrown) {}
});
});
$('#cancel').on('click', function (event) {
event.preventDefault();
$('.cancel').click(); //click cancel buttons and remove all files in the queue
$("#upload_errors").html("");
});
$(".uploader-window").on("dragleave", function () {
$(this).stop().fadeOut("fast");
});
var currentfiles = [];
var maxFiles = 20;
var counter = 0;
$('#uploadDepot').fileupload({
url: "/ajax/upload-media",
dataType: 'json',
limitMultiFileUploads: 10,
maxChunkSize: 8000000,
maxNumberOfFiles: 2,
dragover: function dragover(e, data) {
$(".uploader-window").fadeIn("fast");
},
add: function add(e, data) {
if (counter < maxFiles) {
counter++;
} else {
$.fancyMessage({
title: "Attention",
message: "Vous ne pouvez pas ajouter plus de " + maxFiles + " fichiers",
type: "info"
});
return false;
}
data.files = $.map(data.files, function (file, i) {
if ($.inArray(file.name, currentfiles) >= 0) {
$.fancyMessage({
title: "Attention",
message: "Nous ne pouvons pas envoyer plusieurs fichiers du même nom. Veuillez renommer vos fichiers puis essayez à nouveau.",
type: "error"
});
return null;
}
return file;
});
$.each(data.files, function (index, file) {
var uploadErrors = [];
var acceptFileTypes = /^(gif|jpe?g|png|mp4|mp3|psd|ai|svg|pdf)$/i;
if (file.name.split('.').pop().length && !acceptFileTypes.test(file.name.split('.').pop())) {
uploadErrors.push('Ce type de fichier n\'est pas accepté');
}
if (data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
uploadErrors.push('La taille du fichier est trop grande.');
}
if (uploadErrors.length > 0) {
alert(uploadErrors.join("\n"));
return false;
}
currentfiles.push($.trim(file.name));
var row = document.createElement('div');
var col1 = document.createElement('div');
var col2 = document.createElement('div');
$(col1).append("<span>" + file.name + "</span>").append(cancel_btn.clone(true).data(data));
$(col2).append("<span>" + file.type + " - " + FileConvertSize(file.size) + "</span>");
$(col2).append(upload_btn.clone(true).data(data));
$(row).append(col1, col2);
$(".files").append(row);
$('.upload').eq(-1).on('click', function () {
data.formData = {
uid: create_UUID(),
dossier_id: dossier_id
};
data.submit();
});
$('.cancel').eq(-1).on('click', function () {
$(this).parent().parent().remove();
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
});
});
},
start: function start(e, data) {
$('#progress').show();
},
drop: function drop(e, data) {
$(".uploader-window").stop().fadeOut("fast");
},
done: function done(e, data) {
$.each(data.files, function (index, file) {
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
});
},
stop: function stop(e) {
$(".files").html("");
counter = 0;
currentfiles = [];
$('#progress .progress-bar').css('width', '0%');
$('#progress').hide();
$("#depot_nom").val('');
$("#depot_societe").val('');
$("#depot_description").val('');
$.fancyMessage({
title: "Dépôt de médias",
message: "Le transfert des fichiers est terminé !",
type: "info"
});
},
fail: function fail(e, data) {
$.each(data.files, function (index, file) {
$('<p style="color: red;">Erreur durant le transfert du fichier ' + file.name + '.</p>').appendTo('#upload_errors');
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
});
},
progressall: function progressall(e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .progress-bar').css('width', progress + '%');
}
}).prop('disabled', !$.support.fileInput).parent().addClass($.support.fileInput ? undefined : 'disabled');
}
});
/***/ }),
/***/ "./resources/js/media.js":
/*!*******************************!*\
!*** ./resources/js/media.js ***!
@ -11071,6 +11272,28 @@ $(document).ready(function () {
**********************************/
// ---- init des dossiers
if ($(".media_manager").length) {
// En cas d'une recherche depuis la home, initialise la page avec une recherche texte
if ($("#searchParameter").val() != "") {
// on créé un object filtre
var filter = {
type: "search",
legend: "Recherche : ",
value: $("#searchParameter").val(),
libelle: [$("#searchParameter").val()]
}; // MAJ du filtre principal et de l'affichage
updateFilter(filter);
$(".search_filters .search_value").val($("#searchParameter").val());
} // En cas d'une recherche depuis la home, initialise la page avec le bon sujet
if ($("#sujetParameter").val() != "") {
// aucun dossier sélectionner
$(window).data('currentFolder', -1);
$("#sujet_selector").val($("#sujetParameter").val());
loadMedia($("#sujet_selector").val());
}
var sujetId = $("#sujet_selector").val();
if (sujetId != "") initFolderManager(sujetId);
} // ---- collapse/expand side menu
@ -11093,7 +11316,7 @@ $(document).ready(function () {
$("#sujet_selector").on('change', function (event) {
var sujetId = $("#sujet_selector").val();
if (sujetId != "") $('.dd').nestable('destroy');
$(".currentFolder").val(0);
$(window).data('currentFolder', 0);
initFolderManager(sujetId);
}); // ---- sélectionner un dossier et favoris
@ -11129,9 +11352,17 @@ $(document).ready(function () {
$(".folder_container .root_folder").removeClass('selected');
$(this).addClass('selected');
var sujet_id = $("#sujet_selector").val();
$(".currentFolder").val(dossier_id);
$(window).data('currentFolder', dossier_id);
$(window).data('offset', 0);
loadMedia(dossier_id, sujet_id);
loadMedia(sujet_id); // ajout du dossier courant dans la barre de filtre
$(".search_filters_list #currentFolder").remove();
var output = '<a id="currentFolder" class="filter_item" href="#">';
output += '<span class="libelle">Dossier : </span>';
output += '<span class="value">' + $(".folder_container .dd3-item[data-id='" + dossier_id + "'] > .dd3-content span").html() + '</span>';
output += '<i class="delete_filter fal fa-times"></i>';
output += '</a>';
$(".search_filters_list").prepend(output);
}
}); // ---- sélectionner la racine
@ -11139,10 +11370,18 @@ $(document).ready(function () {
event.preventDefault();
$(".folder_container .dd3-content").removeClass('selected');
$(this).addClass('selected');
$(".currentFolder").val(0);
$(window).data('currentFolder', 0);
var sujetId = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(0, sujetId);
loadMedia(sujetId); // ajout du dossier courant dans la barre de filtre
$(".search_filters_list #currentFolder").remove();
var output = '<a id="currentFolder" class="filter_item" href="#">';
output += '<span class="libelle">Dossier : </span>';
output += '<span class="value">racine</span>';
output += '<i class="delete_filter fal fa-times"></i>';
output += '</a>';
$(".search_filters_list").prepend(output);
}); // ---- menu contextuel des dossiers
$(".folder_container").on('contextmenu', '.dd3-content', function (event) {
@ -11210,8 +11449,9 @@ $(document).ready(function () {
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
$(".folder_container .folder_menu").hide();
$(".folder_container .loader").show();
var $countCurrentFolder = $(".folder_container .dd3-item[data-id='" + dossier_id + "'] > .dd3-content .count").html();
if (!$('.dd .dd-item[data-id="' + dossier_id + '"] > ol').length) {
if (!$('.dd .dd-item[data-id="' + dossier_id + '"] > ol').length && $(window).data('currentFolder') == 0) {
$.ajax({
url: '/ajax/remove-folder',
method: 'POST',
@ -11399,17 +11639,18 @@ $(document).ready(function () {
var data = event.originalEvent.dataTransfer.getData("Text");
if ($(".currentFolder").val() != dossier_id) {
if ($(window).data('currentFolder') != dossier_id) {
$.ajax({
url: '/ajax/move-media',
method: 'POST',
dataType: 'json',
data: {
dossier_id: dossier_id,
data: data
data: data,
sujet_id: $("#sujet_selector").val()
},
success: function success(result) {
var currentFolderId = $(".currentFolder").val();
var currentFolderId = $(window).data('currentFolder');
var arrayMediaId = data.split(',');
if (currentFolderId == 0) {
@ -11587,8 +11828,7 @@ $(document).ready(function () {
if ($(".media_container").scrollTop() + $(".media_container").height() == $(".media_container .wrapper").height()) {
$(window).data('ajaxready', false);
var sujet_id = $("#sujet_selector").val();
var dossier_id = $(".currentFolder").val();
loadMedia(dossier_id, sujet_id);
loadMedia(sujet_id);
}
}); // ---- Mode d'affichage
@ -11612,9 +11852,8 @@ $(document).ready(function () {
$(".action_wrapper #order_select").on("change", function (event) {
var sujet_id = $("#sujet_selector").val();
var dossier_id = $(".currentFolder").val();
$(window).data('offset', 0);
loadMedia(dossier_id, sujet_id);
loadMedia(sujet_id);
});
/******************************
Edition d'un média
@ -11624,7 +11863,25 @@ $(document).ready(function () {
var drPlugin = null;
var viewer = null;
$(".main_content .wrapper").on("dblclick", '.imageItem', function (event) {
event.preventDefault(); // initialise le nuage de Tags
event.preventDefault(); // récupère l'image de preview
var imgPreview = $(this).attr('data-preview');
if ($(this).attr('data-depot') == 1) {
if ($(this).attr('data-typemedia') == 1 || $(this).attr('data-typemedia') == 2) {
// image
$.fancybox.open('<img style="width: 640px; height:auto;" src="' + imgPreview + '" alt="" />');
} else if ($(this).attr('data-typemedia') == 3) {
// vidéo
$.fancybox.open('<video src="' + $(this).attr('data-src') + '" controls></video>');
} else if ($(this).attr('data-typemedia') == 4) {
// Audio
$.fancybox.open('<audio controls src="' + $(this).attr('data-src') + '"></audio>');
}
return false;
} // initialise le nuage de Tags
$('#tag-editor').val('');
$('#tag-editor').tagEditor({
@ -11634,9 +11891,7 @@ $(document).ready(function () {
initialTags: []
});
var minWidth = $(document).width();
var minHeight = $(document).height() - 43 - 40; // récupère l'image de preview
var imgPreview = $(this).attr('data-preview'); // Mémorise le média courant
var minHeight = $(document).height() - 43 - 40; // Mémorise le média courant
$(window).data('current_edit_media', $(this).attr('data-id')); // sélectionne la tab preview à l'ouverture
@ -11987,8 +12242,8 @@ $(document).ready(function () {
} else {
$.fancybox.close();
$.fancyMessage({
title: "Attention",
message: "Erreur lors de l'opération, merci d'actualiser la page.",
title: "Lier un média à Arcadia",
message: "Ce code a déjà été attribué à un autre média. Ajout impossible.",
type: "error"
});
}
@ -11996,7 +12251,7 @@ $(document).ready(function () {
error: function error(jqXHR, textStatus, errorThrown) {
$.fancybox.close();
$.fancyMessage({
title: "Attention",
title: "Lier un média à Arcadia",
message: "Erreur lors de l'opération, merci d'actualiser la page.",
type: "error"
});
@ -12029,11 +12284,18 @@ $(document).ready(function () {
success: function success(result) {
if (result) {
var article = result.article;
var elems = $(".tab_edit #articles").val().split(',');
if (jQuery.inArray(article.id, elems) == -1) {
if ($(".tab_edit #articles").val() != "") {
var elems = $(".tab_edit #articles").val().split(',');
} else {
var elems = [];
}
console.log(elems);
if (jQuery.inArray(String(article.id), elems) == -1) {
// maj de la valeur du champ hidden
elems.push(article.id);
elems.push(String(article.id));
$(".tab_edit #articles").val(elems.join()); // maj du tableau html
$articleItem = $(".tab_edit .hidden_row tr").clone();
@ -12254,7 +12516,16 @@ $(document).ready(function () {
$('.action_add_media').on('click', function (event) {
event.preventDefault();
$('.upload_container').show("fast");
if ($(window).data('currentFolder') >= 0) {
$('.upload_container').show("fast");
} else {
$.fancyMessage({
title: "Ajout de média",
message: "Pour ajouter des médias, veuillez d'abord sélectionner un dossier de destination.",
type: "error"
});
}
}); // ---- Initialisation du module d'upload
if ($('#fileupload').length) {
@ -12267,6 +12538,16 @@ $(document).ready(function () {
var upload_btn = $('<button/>').addClass('upload').css('display', 'none');
$('#submit').on('click', function (event) {
event.preventDefault();
if ($(window).data('currentFolder') == "-1") {
$.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;
}
$("#upload_errors").html("");
$('.upload').click(); //click upload buttons and upload all files in the queue
});
@ -12317,7 +12598,7 @@ $(document).ready(function () {
});
$.each(data.files, function (index, file) {
var uploadErrors = [];
var acceptFileTypes = /^(gif|jpe?g|png|mp4|mp3|psd|ai|eps|svg|indd|pdf)$/i;
var acceptFileTypes = /^(gif|jpe?g|png|mp4|mp3|psd|ai|svg|pdf)$/i;
if (file.name.split('.').pop().length && !acceptFileTypes.test(file.name.split('.').pop())) {
uploadErrors.push('Ce type de fichier n\'est pas accepté');
@ -12345,7 +12626,7 @@ $(document).ready(function () {
data.formData = {
uid: create_UUID(),
sujet_id: $("#sujet_selector").val(),
dossier_id: $(".currentFolder").val()
dossier_id: $(window).data('currentFolder')
};
data.submit();
});
@ -12366,7 +12647,7 @@ $(document).ready(function () {
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
}); //---- Chargement des médias
var currentFolder = $(".currentFolder").val();
var currentFolder = $(window).data('currentFolder');
if (currentFolder == 0 || currentFolder == "") {
var count = $(".folder_container .root_folder .count");
@ -12383,13 +12664,8 @@ $(document).ready(function () {
$('#progress .progress-bar').css('width', '0%');
$('#progress').hide();
$('.upload_container').hide("fast");
var currentFolder = $(".currentFolder").val();
if (currentFolder == 0 || currentFolder == "") {
$(".root_folder").trigger("click");
} else {
$('.dd .dd-item[data-id="' + currentFolder + '"] > .dd3-content').trigger("click");
}
var currentFolder = $(window).data('currentFolder');
$(".reinit_search_btn").trigger("click");
},
fail: function fail(e, data) {
$.each(data.files, function (index, file) {
@ -12427,6 +12703,10 @@ function initFolderManager(sujetId) {
$("#typevues").find('option').remove();
$.each(typevues, function (index, typevue) {
$("#typevues").append('<option value="' + typevue.codeTypevue + '">' + typevue.libelle + '</option>');
});
$(".search_filters .list_typevue ul").html("");
$.each(typevues, function (index, typevue) {
$(".search_filters .list_typevue ul").append('<li><input id="typeV_' + typevue.codeTypevue + '" type="checkbox" value="' + typevue.codeTypevue + '" name=""><label for="typeV_' + typevue.codeTypevue + '" >' + typevue.libelle + '</label></li>');
}); // initialisation de la liste variantes
var variantes = result.variantes;
@ -12483,7 +12763,8 @@ function initFolderManager(sujetId) {
dataType: 'json',
data: {
parent_id: parent_id,
dossier_id: dossier_id
dossier_id: dossier_id,
sujet_id: $("#sujet_selector").val()
},
success: function success(result) {
$(".folder_container .loader").hide();
@ -12506,12 +12787,17 @@ function initFolderManager(sujetId) {
$(".folder_container .dd-empty").remove();
$(".folder_container .loader").hide(); //---- Chargement des médias
var currentFolder = $(".currentFolder").val();
var currentFolder = $(window).data('currentFolder');
if (currentFolder == 0 || currentFolder == "") {
$(".root_folder").trigger("click");
} else {
$('.dd .dd-item[data-id="' + currentFolder + '"] > .dd3-content').trigger("click");
} else if (currentFolder > 0) {
if ($('.dd .dd-item[data-id="' + currentFolder + '"] > .dd3-content').length) {
$('.dd .dd-item[data-id="' + currentFolder + '"] > .dd3-content').trigger("click");
} else {
$(window).data('currentFolder', 0);
$(".root_folder").trigger("click");
}
}
},
error: function error(jqXHR, textStatus, errorThrown) {
@ -12526,10 +12812,7 @@ function initFolderManager(sujetId) {
} // ---- Chargement des média
$(window).data('offset', 0);
$(window).data('limit', 50);
function loadMedia(dossier_id, sujet_id) {
window.loadMedia = function (sujet_id) {
var output = '';
if ($(window).data('offset') == 0) {
@ -12540,17 +12823,24 @@ function loadMedia(dossier_id, sujet_id) {
$(".main_content .scrollLoader").show();
}
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '/ajax/load-media',
method: 'POST',
dataType: 'json',
data: {
dossier_id: dossier_id,
dossier_id: $(window).data('currentFolder'),
sujet_id: sujet_id,
filters: JSON.stringify($(window).data('filter')),
offset: $(window).data('offset'),
limit: $(window).data('limit'),
orderField: $("#order_select").val(),
order: $('#order_select option:selected').attr('data-order')
order: $('#order_select option:selected').attr('data-order'),
filter: $(window).data('filter')
},
success: function success(result) {
var data = result.data;
@ -12571,8 +12861,15 @@ function loadMedia(dossier_id, sujet_id) {
case 1:
ico = '<i class="fas fa-file-image"></i>';
detail = " - " + item.largeur + "x" + item.hauteur + "px";
thumb = item.folder + item.uid + "_thumb." + item.extension;
preview = item.folder + item.uid + "_preview." + item.extension;
if (item.extension == "pdf" || item.extension == "ai" || item.extension == "psd") {
thumb = item.folder + item.uid + "_thumb.png";
preview = item.folder + item.uid + "_preview.png";
} else {
thumb = item.folder + item.uid + "_thumb." + item.extension;
preview = item.folder + item.uid + "_preview." + item.extension;
}
break;
case 2:
@ -12593,29 +12890,21 @@ function loadMedia(dossier_id, sujet_id) {
itemClass = "son";
break;
case 5:
ico = '<i class="fas fa-file"></i>';
if (item.extension == "pdf" || item.extension == "ai" || item.extension == "psd") {
thumb = item.folder + item.uid + "_thumb.png";
preview = item.folder + item.uid + "_preview.png";
} else {
itemClass = "doc";
}
break;
default:
}
output += '<div class="imageItem" data-id="' + item.id + '" data-ext="' + item.extension + '" data-typemedia="' + item.typemedia_id + '" data-preview="' + preview + '" data-src="' + item.folder + item.uid + "." + item.extension + '" draggable="' + draggable + '" aria-grabbed="false">';
output += '<div class="imageItem" data-id="' + item.id + '" data-depot="' + result.isDepot + '" data-ext="' + item.extension + '" data-typemedia="' + item.typemedia_id + '" data-preview="' + preview + '" data-src="' + item.folder + item.uid + "." + item.extension + '" draggable="' + draggable + '" aria-grabbed="false">';
output += '<div class="etiquette" style="background-color:' + item.etiquette.color + '; border-color:' + item.etiquette.color + ';" data-id="' + item.etiquette.etiquette_id + '" >' + item.etiquette.libelle + '</div>';
output += '<div class="contextMenu"><ul>';
output += '<li class="menu-option editItem"><i class="fas fa-edit"></i> Editer</li>';
output += '<li class="menu-option downloadItem"><i class="fas fa-file-download"></i> Télécharger</li>';
output += '<li class="menu-option addBasket"><i class="fas fa-shopping-basket"></i> Ajouter au panier</li>';
output += '<li class="menu-option deleteItem"><i class="fas fa-trash-alt"></i> Supprimer</li>';
output += '<li class="menu-option tagItem"><i class="fas fa-tags"></i> Etiquette</li>';
if (result.role != 2) {
output += '<li class="menu-option deleteItem"><i class="fas fa-trash-alt"></i> Supprimer</li>';
output += '<li class="menu-option tagItem"><i class="fas fa-tags"></i> Etiquette</li>';
}
output += '</ul></div>';
output += '<div class="media ' + itemClass + '" style="background-image:url(' + thumb + ')"></div>';
output += '<p class="libelle">' + item.libelle + '</p>';
@ -12634,7 +12923,7 @@ function loadMedia(dossier_id, sujet_id) {
$(window).data('ajaxready', true);
}
});
} // ---- Supression de médias
}; // ---- Supression de médias
function removeMedias(medias) {
@ -12664,7 +12953,7 @@ function removeMedias(medias) {
$(".media_container .imageItem[data-id='" + value + "']").remove();
}); // ---- MAJ du nb de média dans le dossier
var currentFolder = $(".currentFolder").val();
var currentFolder = $(window).data('currentFolder');
if (currentFolder == 0 || currentFolder == "") {
var count = $(".folder_container .root_folder .count");
@ -12790,22 +13079,22 @@ function addItem(parent_id, item_id, content) {
$('.dd .dd-item[data-id="' + parent_id + '"] > ol').append(html);
}
function arrayRemove(arr, value) {
window.arrayRemove = function (arr, value) {
return arr.filter(function (ele) {
return ele != value;
});
}
};
function FileConvertSize(aSize) {
window.FileConvertSize = function (aSize) {
aSize = Math.abs(parseInt(aSize, 10));
var def = [[1, 'octets'], [1024, 'ko'], [1024 * 1024, 'Mo'], [1024 * 1024 * 1024, 'Go'], [1024 * 1024 * 1024 * 1024, 'To']];
for (var i = 0; i < def.length; i++) {
if (aSize < def[i][0]) return (aSize / def[i - 1][0]).toFixed(2) + ' ' + def[i - 1][1];
}
}
};
function create_UUID() {
window.create_UUID = function () {
var dt = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (dt + Math.random() * 16) % 16 | 0;
@ -12813,7 +13102,167 @@ function create_UUID() {
return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);
});
return uuid;
}
};
/***/ }),
/***/ "./resources/js/searchengine.js":
/*!**************************************!*\
!*** ./resources/js/searchengine.js ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports) {
$(document).ready(function () {
/******************************
Moteur de recherche de médias
**********************************/
// ---- Initialisation du module de recherche
if ($('.search_wrapper').length) {
// ---- Par défaut déselectionne toutes les checkbox
$(".filter").find('input[type="checkbox"]').prop("checked", false); // ---- Initialisation des listes
$(".filter_selector .filter_btn").on('click', function (event) {
$(".filter_selector .list").not($(this).parent().find(".list")).hide();
$(this).parent().find(".list").toggle();
}); // ---- Initialisation du champ de recherche
$(".search_filters .search_value").on('keypress', function (event) {
if (event.keyCode == 13) {
$(".search_filters .search_btn").trigger('click');
}
}); // ---- Clique sur le bouton de recherche
$(".search_filters .search_btn").on('click', function (event) {
// on créé un object filtre
var filter = {
type: "search",
legend: "Recherche : ",
value: $(".search_filters .search_value").val(),
libelle: [$(".search_filters .search_value").val()]
}; // MAJ du filtre principal et de l'affichage
updateFilter(filter); // On lance la recherche
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
}); // ---- Clique sur un filtre
$(".filter").on('click', 'input[type="checkbox"]', function (event) {
var values = [];
var libelles = []; // on créé un object filtre
var filter = {
type: $(this).parents(".filter").attr('data-type'),
legend: $(this).parents(".filter").attr('data-lib-type'),
value: [],
libelle: []
}; // on y insère toutes les valeurs de ce même type de filtre
$(this).parents(".filter").find('input[type="checkbox"]').each(function (index, cb) {
if ($(this).is(':checked')) {
filter.value.push($(this).val());
filter.libelle.push($(this).next("label").html());
}
}); // MAJ du filtre principal et de l'affichage
updateFilter(filter); // On lance la recherche
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
}); // ---- Réinitialisation de la recherche
$(".reinit_search_btn").on('click', function (event) {
event.preventDefault(); // Vide la bar recherche
$.each(Object.keys($(window).data('filter')), function (index, value) {
if (value != "currentFolder") $(".search_filters_list #" + value).remove();
}); // supprime tous les éléments de recherche
$(window).data('filter', {}); // masque le bouton de reinitialisation
$(".filter_wrapper .reinit_search_btn").hide(); // ---- Initialisation des listes
$(".filter").find('input[type="checkbox"]').prop("checked", false); // On lance la recherche
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
}); // ---- Suppression d'un filtre
$(".search_filters_list").on('click', '.filter_item', function (event) {
event.preventDefault();
var filters = $(window).data('filter');
var type = $(this).attr('id'); // Supprime l'élément dans la bar recherche
$(".search_filters_list #" + type).remove();
if (type == "currentFolder") {
$(".folder_container .dd3-content").removeClass('selected');
$(".folder_container .root_folder").removeClass('selected');
$(window).data('currentFolder', -1);
} else {
// supprime la propriété dans l'objet
if ("undefined" !== typeof filters[type]) {
// si l'object à cette propriété
delete filters[type]; // on l'a supprime
}
$(window).data('filter', filters); // ---- Initialisation des listes
$(".search_filters .filter[data-type='" + type + "']").find('input[type="checkbox"]').prop("checked", false);
} // masque le bouton de reinitialisation
if (Object.keys($(window).data('filter')).length == 0) {
$(".filter_wrapper .reinit_search_btn").hide();
} // On lance la recherche
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
});
}
});
window.updateFilter = function (filter) {
var filters = $(window).data('filter'); // si ce filtre n'a pas de valeur
if (filter.value.length == 0) {
$(".search_filters_list #" + filter.type).remove(); // on supprime le filtre de la liste
if ("undefined" !== typeof filters[filter.type]) {
// si l'object à cette propriété
delete filters[filter.type]; // on l'a supprime
} // si on a des valeurs pour ce filtre
} else {
// on met à jour l'objet filtre
filters[filter.type] = filter;
$(window).data('filter', filters); // si le filtre n'existe pas dans la liste on l'ajoute
if (!$(".search_filters_list #" + filter.type).length) {
var output = '<a id="' + filter.type + '" class="filter_item" href="#">';
output += '<span class="libelle">' + filter.legend + '</span>';
output += '<span class="value"></span>';
output += '<i class="delete_filter fal fa-times"></i>';
output += '</a>';
$(".search_filters_list").append(output);
}
$(".search_filters_list #" + filter.type + " .value").html(filter.libelle.join());
} // affiche/masque le bouton de reinitialisation
if (Object.keys($(window).data('filter')).length > 0) {
$(".filter_wrapper .reinit_search_btn").show();
} else {
$(".filter_wrapper .reinit_search_btn").hide();
}
};
/***/ }),
@ -12829,15 +13278,17 @@ function create_UUID() {
/***/ }),
/***/ 0:
/*!*************************************************************************************************************!*\
!*** multi ./resources/js/app.js ./resources/js/admin.js ./resources/js/media.js ./resources/sass/app.scss ***!
\*************************************************************************************************************/
/*!********************************************************************************************************************************************************************!*\
!*** multi ./resources/js/app.js ./resources/js/admin.js ./resources/js/media.js ./resources/js/depot.js ./resources/js/searchengine.js ./resources/sass/app.scss ***!
\********************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\app.js */"./resources/js/app.js");
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\admin.js */"./resources/js/admin.js");
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\media.js */"./resources/js/media.js");
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\depot.js */"./resources/js/depot.js");
__webpack_require__(/*! D:\sources\www\ldc-dam\resources\js\searchengine.js */"./resources/js/searchengine.js");
module.exports = __webpack_require__(/*! D:\sources\www\ldc-dam\resources\sass\app.scss */"./resources/sass/app.scss");

13
resources/js/app.js vendored
View file

@ -21,6 +21,12 @@ jQuery.fn.scrollParent = function() {
return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
};
// ---- Configuration de base des filtres médias
$(window).data('offset', 0);
$(window).data('limit', 50);
$(window).data('currentFolder', 0);
$(window).data('filter', {});
//confirm popup
$.fancyConfirm = function( opts ) {
opts = $.extend( true, {
@ -107,14 +113,19 @@ $(".userbar").on('click',function(event) {
$(document).mouseup(function(e) {
var container = $(".userbar");
var menuContextuel = $(".folder_container .folder_menu");
if (!container.is(e.target) && container.has(e.target).length === 0) {
$(".submenu").hide();
}
var menuContextuel = $(".folder_container .folder_menu");
if (!menuContextuel.is(e.target) && menuContextuel.has(e.target).length === 0) {
menuContextuel.hide();
}
var filter_list = $(".filter_selector");
if (!filter_list.is(e.target) && filter_list.has(e.target).length === 0) {
$(".filter_selector .list").hide();
}
});
// ---- Header : Ouverture formulaire de contact

176
resources/js/depot.js vendored Normal file
View file

@ -0,0 +1,176 @@
$(document).ready(function() {
/******************************
Dépôt de média
**********************************/
// ---- Initialisation du module de dépôt
if($('#uploadDepot').length){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var dossier_id = 0;
var cancel_btn = $('<button/>')
.addClass('cancel')
.html('<i class="fal fa-times"></i>');
var upload_btn = $('<button/>')
.addClass('upload')
.css('display', 'none');
$('#submit').on('click',function(event){
event.preventDefault();
if(!$(".form_depot_media")[0].checkValidity()){
$(".form_depot_media")[0].reportValidity()
$.fancyMessage({title : "Dépôt de médias", message : "Veuillez compléter tous les champs avant de lancer le transfert.", type : "error"});
return false;
}
if(currentfiles.length == 0){
$.fancyMessage({title : "Dépôt de médias", message : "Veuillez ajouter des médias avant de lancer le transfert.", type : "error"});
return false;
}
var currentdate = new Date();
folderName = $("#depot_societe").val().replace(' ', '_')+"_"+currentdate.getFullYear().toString()+("0" +(currentdate.getMonth()+1)).slice(-2)+currentdate.getDate().toString()+"_"+currentdate.getHours().toString()+currentdate.getMinutes().toString()+ currentdate.getSeconds().toString();
var description = "Nom : "+$("#depot_nom").val()+'\n'+"Société : "+$("#depot_societe").val()+'\n'+$("#depot_description").val();
// création d'un dossier de dépôt
$("#upload_errors").html("");
$.ajax({
url: '/ajax/add-depot-folder',
method: 'POST',
dataType : 'json',
data: {
libelle: folderName,
description : description,
},
success: function(result){
dossier_id = result.folder_id;
$('.upload').click() //click upload buttons and upload all files in the queue
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
});
$('#cancel').on('click',function(event){
event.preventDefault();
$('.cancel').click() //click cancel buttons and remove all files in the queue
$("#upload_errors").html("");
});
$(".uploader-window").on("dragleave", function(){
$(this).stop().fadeOut( "fast");
});
var currentfiles = [];
var maxFiles = 20;
var counter = 0;
$('#uploadDepot').fileupload({
url: "/ajax/upload-media",
dataType: 'json',
limitMultiFileUploads: 10,
maxChunkSize: 8000000,
maxNumberOfFiles: 2,
dragover: function (e, data) {
$(".uploader-window").fadeIn( "fast");
},
add: function (e, data) {
if(counter < maxFiles){
counter++;
}else{
$.fancyMessage({title : "Attention", message : "Vous ne pouvez pas ajouter plus de "+maxFiles+" fichiers", type : "info"});
return false;
}
data.files = $.map(data.files, function(file,i){
if ($.inArray(file.name,currentfiles) >= 0) {
$.fancyMessage({title : "Attention", message : "Nous ne pouvons pas envoyer plusieurs fichiers du même nom. Veuillez renommer vos fichiers puis essayez à nouveau.", type : "error"});
return null;
}
return file;
});
$.each(data.files, function (index, file) {
var uploadErrors = [];
var acceptFileTypes = /^(gif|jpe?g|png|mp4|mp3|psd|ai|svg|pdf)$/i;
if(file.name.split('.').pop().length && !acceptFileTypes.test(file.name.split('.').pop())) {
uploadErrors.push('Ce type de fichier n\'est pas accepté');
}
if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
uploadErrors.push('La taille du fichier est trop grande.');
}
if(uploadErrors.length > 0) {
alert(uploadErrors.join("\n"));
return false;
}
currentfiles.push($.trim(file.name));
var row = document.createElement('div');
var col1 = document.createElement('div');
var col2 = document.createElement('div');
$(col1).append("<span>"+file.name+"</span>").append(cancel_btn.clone(true).data(data));
$(col2).append("<span>"+file.type+" - "+FileConvertSize(file.size)+"</span>");
$(col2).append(upload_btn.clone(true).data(data));
$(row).append(col1, col2);
$(".files").append(row);
$('.upload').eq(-1).on('click',function(){
data.formData = {
uid: create_UUID(),
dossier_id: dossier_id,
};
data.submit();
})
$('.cancel').eq(-1).on('click',function(){
$(this).parent().parent().remove();
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
})
});
},
start: function (e, data) {
$('#progress').show();
},
drop: function (e, data) {
$(".uploader-window").stop().fadeOut( "fast");
},
done: function (e, data) {
$.each(data.files, function (index, file) {
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
});
},
stop: function (e,) {
$(".files").html("");
counter = 0;
currentfiles = [];
$('#progress .progress-bar').css('width', '0%');
$('#progress').hide();
$("#depot_nom").val('');
$("#depot_societe").val('');
$("#depot_description").val('');
$.fancyMessage({title : "Dépôt de médias", message : "Le transfert des fichiers est terminé !", type : "info"});
},
fail: function (e, data) {
$.each(data.files, function (index, file) {
$('<p style="color: red;">Erreur durant le transfert du fichier ' + file.name + '.</p>')
.appendTo('#upload_errors');
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
});
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .progress-bar').css(
'width',
progress + '%'
);
}
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
}
});

193
resources/js/media.js vendored
View file

@ -1,4 +1,3 @@
$(document).ready(function() {
/******************************
@ -7,6 +6,29 @@ $(document).ready(function() {
// ---- init des dossiers
if ( $( ".media_manager" ).length ) {
// En cas d'une recherche depuis la home, initialise la page avec une recherche texte
if($("#searchParameter").val() != ""){
// on créé un object filtre
var filter = {
type: "search",
legend : "Recherche : ",
value: $("#searchParameter").val(),
libelle: [$("#searchParameter").val()],
};
// MAJ du filtre principal et de l'affichage
updateFilter(filter);
$(".search_filters .search_value").val($("#searchParameter").val());
}
// En cas d'une recherche depuis la home, initialise la page avec le bon sujet
if($("#sujetParameter").val() != ""){
// aucun dossier sélectionner
$(window).data('currentFolder', -1);
$("#sujet_selector").val($("#sujetParameter").val());
loadMedia($("#sujet_selector").val());
}
var sujetId = $("#sujet_selector").val();
if(sujetId != "")
initFolderManager(sujetId);
@ -31,7 +53,7 @@ $(document).ready(function() {
var sujetId = $("#sujet_selector").val();
if(sujetId != "")
$('.dd').nestable('destroy');
$(".currentFolder").val(0);
$(window).data('currentFolder', 0);
initFolderManager(sujetId);
});
@ -65,9 +87,18 @@ $(document).ready(function() {
$(".folder_container .root_folder").removeClass('selected');
$(this).addClass('selected');
var sujet_id = $("#sujet_selector").val();
$(".currentFolder").val(dossier_id);
$(window).data('currentFolder', dossier_id);
$(window).data('offset', 0);
loadMedia(dossier_id, sujet_id);
loadMedia(sujet_id);
// ajout du dossier courant dans la barre de filtre
$(".search_filters_list #currentFolder").remove();
var output = '<a id="currentFolder" class="filter_item" href="#">';
output += '<span class="libelle">Dossier : </span>';
output += '<span class="value">'+$(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content span").html()+'</span>';
output += '<i class="delete_filter fal fa-times"></i>';
output += '</a>';
$(".search_filters_list").prepend(output);
}
});
@ -78,10 +109,19 @@ $(document).ready(function() {
event.preventDefault();
$(".folder_container .dd3-content").removeClass('selected');
$(this).addClass('selected');
$(".currentFolder").val(0);
$(window).data('currentFolder', 0);
var sujetId = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(0, sujetId);
loadMedia(sujetId);
// ajout du dossier courant dans la barre de filtre
$(".search_filters_list #currentFolder").remove();
var output = '<a id="currentFolder" class="filter_item" href="#">';
output += '<span class="libelle">Dossier : </span>';
output += '<span class="value">racine</span>';
output += '<i class="delete_filter fal fa-times"></i>';
output += '</a>';
$(".search_filters_list").prepend(output);
});
// ---- menu contextuel des dossiers
@ -145,7 +185,8 @@ $(document).ready(function() {
$(".folder_container .folder_menu").hide();
$(".folder_container .loader").show();
if(!$('.dd .dd-item[data-id="'+dossier_id+'"] > ol').length){
var $countCurrentFolder = $(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content .count").html();
if(!$('.dd .dd-item[data-id="'+dossier_id+'"] > ol').length && $(window).data('currentFolder') == 0){
$.ajax({
url: '/ajax/remove-folder',
method: 'POST',
@ -313,7 +354,7 @@ $(document).ready(function() {
// ---- source
var data = event.originalEvent.dataTransfer.getData("Text");
if($(".currentFolder").val() != dossier_id){
if($(window).data('currentFolder') != dossier_id){
$.ajax({
url: '/ajax/move-media',
method: 'POST',
@ -321,9 +362,10 @@ $(document).ready(function() {
data: {
dossier_id: dossier_id,
data: data,
sujet_id: $("#sujet_selector").val(),
},
success: function(result){
var currentFolderId = $(".currentFolder").val();
var currentFolderId = $(window).data('currentFolder');
var arrayMediaId = data.split(',');
if(currentFolderId == 0){
var $countCurrentFolder = $(".folder_container .root_folder .count");
@ -489,8 +531,7 @@ $(document).ready(function() {
if( ($(".media_container").scrollTop() + $(".media_container").height() ) == $(".media_container .wrapper").height() ) {
$(window).data('ajaxready', false);
var sujet_id = $("#sujet_selector").val();
var dossier_id = $(".currentFolder").val();
loadMedia(dossier_id, sujet_id);
loadMedia(sujet_id);
}
});
@ -514,9 +555,8 @@ $(document).ready(function() {
// ---- Gestion de l'ordre d'affichage
$(".action_wrapper #order_select").on("change", function(event) {
var sujet_id = $("#sujet_selector").val();
var dossier_id = $(".currentFolder").val();
$(window).data('offset', 0);
loadMedia(dossier_id, sujet_id);
loadMedia(sujet_id);
});
/******************************
@ -529,6 +569,20 @@ $(document).ready(function() {
$(".main_content .wrapper").on("dblclick", '.imageItem' , function(event) {
event.preventDefault();
// récupère l'image de preview
var imgPreview = $(this).attr('data-preview');
if($(this).attr('data-depot') == 1){
if($(this).attr('data-typemedia') == 1|| $(this).attr('data-typemedia') == 2){ // image
$.fancybox.open('<img style="width: 640px; height:auto;" src="'+imgPreview+'" alt="" />');
}else if ($(this).attr('data-typemedia') == 3) { // vidéo
$.fancybox.open('<video src="'+$(this).attr('data-src')+'" controls></video>');
}else if ($(this).attr('data-typemedia') == 4) { // Audio
$.fancybox.open('<audio controls src="'+$(this).attr('data-src')+'"></audio>');
}
return false;
}
// initialise le nuage de Tags
$('#tag-editor').val('');
$('#tag-editor').tagEditor({
@ -541,9 +595,6 @@ $(document).ready(function() {
var minWidth = $(document).width();
var minHeight = $(document).height()-43-40;
// récupère l'image de preview
var imgPreview = $(this).attr('data-preview');
// Mémorise le média courant
$(window).data('current_edit_media', $(this).attr('data-id'));
// sélectionne la tab preview à l'ouverture
@ -865,12 +916,12 @@ $(document).ready(function() {
$("#arcadia_id").val(arcadia_id);
}else{
$.fancybox.close();
$.fancyMessage({title : "Attention", message : "Erreur lors de l'opération, merci d'actualiser la page.", type : "error"});
$.fancyMessage({title : "Lier un média à Arcadia", message : "Ce code a déjà été attribué à un autre média. Ajout impossible.", type : "error"});
}
},
error: function(jqXHR, textStatus, errorThrown) {
$.fancybox.close();
$.fancyMessage({title : "Attention", message : "Erreur lors de l'opération, merci d'actualiser la page.", type : "error"});
$.fancyMessage({title : "Lier un média à Arcadia", message : "Erreur lors de l'opération, merci d'actualiser la page.", type : "error"});
}
});
});
@ -903,11 +954,16 @@ $(document).ready(function() {
},
success: function(result){
if(result){
var article = result.article;
var article = result.article;
if($(".tab_edit #articles").val() != ""){
var elems = $(".tab_edit #articles").val().split(',');
if(jQuery.inArray(article.id, elems) == -1){
}else{
var elems = [];
}
console.log(elems);
if(jQuery.inArray(String(article.id), elems) == -1){
// maj de la valeur du champ hidden
elems.push(article.id);
elems.push(String(article.id));
$(".tab_edit #articles").val(elems.join());
// maj du tableau html
$articleItem = $(".tab_edit .hidden_row tr").clone();
@ -1001,7 +1057,6 @@ $(document).ready(function() {
});
}
if(medias.length == 0){
$.fancyMessage({title : "Télécharger des médias", message : "Veuillez sélectionner au moins un média.", type : "info"});
}else{
@ -1114,7 +1169,11 @@ $(document).ready(function() {
// ---- Ouvrir la popup d'upload
$('.action_add_media').on('click',function(event){
event.preventDefault();
$('.upload_container').show("fast");
if($(window).data('currentFolder') >=0){
$('.upload_container').show("fast");
}else{
$.fancyMessage({title : "Ajout de média", message : "Pour ajouter des médias, veuillez d'abord sélectionner un dossier de destination.", type : "error"});
}
});
// ---- Initialisation du module d'upload
@ -1134,6 +1193,10 @@ $(document).ready(function() {
$('#submit').on('click',function(event){
event.preventDefault();
if($(window).data('currentFolder') == "-1"){
$.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;
}
$("#upload_errors").html("");
$('.upload').click() //click upload buttons and upload all files in the queue
});
@ -1179,7 +1242,7 @@ $(document).ready(function() {
$.each(data.files, function (index, file) {
var uploadErrors = [];
var acceptFileTypes = /^(gif|jpe?g|png|mp4|mp3|psd|ai|eps|svg|indd|pdf)$/i;
var acceptFileTypes = /^(gif|jpe?g|png|mp4|mp3|psd|ai|svg|pdf)$/i;
if(file.name.split('.').pop().length && !acceptFileTypes.test(file.name.split('.').pop())) {
uploadErrors.push('Ce type de fichier n\'est pas accepté');
}
@ -1205,7 +1268,7 @@ $(document).ready(function() {
data.formData = {
uid: create_UUID(),
sujet_id: $("#sujet_selector").val(),
dossier_id: $(".currentFolder").val(),
dossier_id: $(window).data('currentFolder'),
};
data.submit();
})
@ -1227,7 +1290,7 @@ $(document).ready(function() {
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
});
//---- Chargement des médias
var currentFolder = $(".currentFolder").val();
var currentFolder = $(window).data('currentFolder');
if(currentFolder == 0 || currentFolder == ""){
var count = $(".folder_container .root_folder .count");
}else{
@ -1242,12 +1305,8 @@ $(document).ready(function() {
$('#progress .progress-bar').css('width', '0%');
$('#progress').hide();
$('.upload_container').hide("fast");
var currentFolder = $(".currentFolder").val();
if(currentFolder == 0 || currentFolder == ""){
$(".root_folder").trigger("click");
}else{
$('.dd .dd-item[data-id="'+currentFolder+'"] > .dd3-content').trigger("click");
}
var currentFolder = $(window).data('currentFolder');
$(".reinit_search_btn").trigger("click");
},
fail: function (e, data) {
$.each(data.files, function (index, file) {
@ -1291,14 +1350,18 @@ function initFolderManager(sujetId){
var typevues = result.typevues;
$("#typevues").find('option').remove();
$.each(typevues, function (index, typevue) {
$("#typevues").append('<option value="'+typevue.codeTypevue+'">'+typevue.libelle+'</option>')
$("#typevues").append('<option value="'+typevue.codeTypevue+'">'+typevue.libelle+'</option>');
});
$(".search_filters .list_typevue ul").html("");
$.each(typevues, function (index, typevue) {
$(".search_filters .list_typevue ul").append('<li><input id="typeV_'+typevue.codeTypevue+'" type="checkbox" value="'+typevue.codeTypevue+'" name=""><label for="typeV_'+typevue.codeTypevue+'" >'+typevue.libelle+'</label></li>');
});
// initialisation de la liste variantes
var variantes = result.variantes;
$("#variantes").find('option').remove();
$.each(variantes, function (index, variante) {
$("#variantes").append('<option value="'+variante.codeVariante+'" data-typevue="'+variante.typevue_id+'" >'+variante.libelle+'</option>')
$("#variantes").append('<option value="'+variante.codeVariante+'" data-typevue="'+variante.typevue_id+'" >'+variante.libelle+'</option>');
});
// initialisation des formats de vignette disponibles autéléchargement
@ -1345,6 +1408,7 @@ function initFolderManager(sujetId){
data: {
parent_id : parent_id,
dossier_id : dossier_id,
sujet_id: $("#sujet_selector").val(),
},
success: function(result){
$(".folder_container .loader").hide();
@ -1363,11 +1427,16 @@ function initFolderManager(sujetId){
$(".folder_container .dd-empty").remove();
$(".folder_container .loader").hide();
//---- Chargement des médias
var currentFolder = $(".currentFolder").val();
var currentFolder = $(window).data('currentFolder');
if(currentFolder == 0 || currentFolder == ""){
$(".root_folder").trigger("click");
}else{
$('.dd .dd-item[data-id="'+currentFolder+'"] > .dd3-content').trigger("click");
}else if (currentFolder > 0) {
if($('.dd .dd-item[data-id="'+currentFolder+'"] > .dd3-content').length){
$('.dd .dd-item[data-id="'+currentFolder+'"] > .dd3-content').trigger("click");
}else{
$(window).data('currentFolder', 0);
$(".root_folder").trigger("click");
}
}
},
error: function(jqXHR, textStatus, errorThrown) {
@ -1378,9 +1447,7 @@ function initFolderManager(sujetId){
}
// ---- Chargement des média
$(window).data('offset', 0);
$(window).data('limit', 50);
function loadMedia(dossier_id, sujet_id){
window.loadMedia = function(sujet_id){
var output = '';
if($(window).data('offset') == 0){
$(window).data('noMedia', false);
@ -1390,17 +1457,25 @@ function loadMedia(dossier_id, sujet_id){
$(".main_content .scrollLoader").show();
}
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '/ajax/load-media',
method: 'POST',
dataType : 'json',
data: {
dossier_id : dossier_id,
dossier_id : $(window).data('currentFolder'),
sujet_id : sujet_id,
filters : JSON.stringify($(window).data('filter')),
offset : $(window).data('offset'),
limit : $(window).data('limit'),
orderField : $("#order_select").val(),
order : $('#order_select option:selected').attr('data-order')
order : $('#order_select option:selected').attr('data-order'),
filter : $(window).data('filter'),
},
success: function(result){
var data = result.data;
@ -1419,8 +1494,13 @@ function loadMedia(dossier_id, sujet_id){
case 1:
ico = '<i class="fas fa-file-image"></i>';
detail = " - "+item.largeur+"x"+item.hauteur+"px";
thumb = item.folder+item.uid+"_thumb."+item.extension;
preview = item.folder+item.uid+"_preview."+item.extension;
if(item.extension == "pdf" || item.extension == "ai" || item.extension == "psd"){
thumb = item.folder+item.uid+"_thumb.png";
preview = item.folder+item.uid+"_preview.png";
}else{
thumb = item.folder+item.uid+"_thumb."+item.extension;
preview = item.folder+item.uid+"_preview."+item.extension;
}
break;
case 2:
ico = '<i class="fas fa-file-image"></i>';
@ -1437,27 +1517,20 @@ function loadMedia(dossier_id, sujet_id){
detail = " - durée "+item.duree;
itemClass = "son";
break;
case 5:
ico = '<i class="fas fa-file"></i>';
if(item.extension == "pdf" || item.extension == "ai" || item.extension == "psd"){
thumb = item.folder+item.uid+"_thumb.png";
preview = item.folder+item.uid+"_preview.png";
}else{
itemClass = "doc";
}
break;
default:
}
output += '<div class="imageItem" data-id="'+item.id+'" data-ext="'+item.extension+'" data-typemedia="'+item.typemedia_id+'" data-preview="'+preview+'" data-src="'+item.folder+item.uid+"."+item.extension+'" draggable="'+draggable+'" aria-grabbed="false">';
output += '<div class="imageItem" data-id="'+item.id+'" data-depot="'+result.isDepot+'" data-ext="'+item.extension+'" data-typemedia="'+item.typemedia_id+'" data-preview="'+preview+'" data-src="'+item.folder+item.uid+"."+item.extension+'" draggable="'+draggable+'" aria-grabbed="false">';
output += '<div class="etiquette" style="background-color:'+item.etiquette.color+'; border-color:'+item.etiquette.color+';" data-id="'+item.etiquette.etiquette_id+'" >'+item.etiquette.libelle+'</div>';
output += '<div class="contextMenu"><ul>';
output += '<li class="menu-option editItem"><i class="fas fa-edit"></i> Editer</li>';
output += '<li class="menu-option downloadItem"><i class="fas fa-file-download"></i> Télécharger</li>';
output += '<li class="menu-option addBasket"><i class="fas fa-shopping-basket"></i> Ajouter au panier</li>';
output += '<li class="menu-option deleteItem"><i class="fas fa-trash-alt"></i> Supprimer</li>';
output += '<li class="menu-option tagItem"><i class="fas fa-tags"></i> Etiquette</li>';
if(result.role != 2 ){
output += '<li class="menu-option deleteItem"><i class="fas fa-trash-alt"></i> Supprimer</li>';
output += '<li class="menu-option tagItem"><i class="fas fa-tags"></i> Etiquette</li>';
}
output += '</ul></div>';
output += '<div class="media '+itemClass+'" style="background-image:url('+thumb+')"></div>';
output += '<p class="libelle">'+item.libelle+'</p>';
@ -1503,7 +1576,7 @@ function removeMedias(medias){
});
// ---- MAJ du nb de média dans le dossier
var currentFolder = $(".currentFolder").val();
var currentFolder = $(window).data('currentFolder');
if(currentFolder == 0 || currentFolder == ""){
var count = $(".folder_container .root_folder .count");
}else{
@ -1604,13 +1677,13 @@ function addItem(parent_id, item_id, content){
$('.dd .dd-item[data-id="'+parent_id+'"] > ol').append(html);
}
function arrayRemove(arr, value) {
window.arrayRemove = function(arr, value){
return arr.filter(function(ele){
return ele != value;
});
}
function FileConvertSize(aSize){
window.FileConvertSize = function(aSize){
aSize = Math.abs(parseInt(aSize, 10));
var def = [[1, 'octets'], [1024, 'ko'], [1024*1024, 'Mo'], [1024*1024*1024, 'Go'], [1024*1024*1024*1024, 'To']];
for(var i=0; i<def.length; i++){
@ -1618,7 +1691,7 @@ function FileConvertSize(aSize){
}
}
function create_UUID(){
window.create_UUID = function(){
var dt = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (dt + Math.random()*16)%16 | 0;

170
resources/js/searchengine.js vendored Normal file
View file

@ -0,0 +1,170 @@
$(document).ready(function() {
/******************************
Moteur de recherche de médias
**********************************/
// ---- Initialisation du module de recherche
if($('.search_wrapper').length){
// ---- Par défaut déselectionne toutes les checkbox
$(".filter").find('input[type="checkbox"]').prop( "checked", false );
// ---- Initialisation des listes
$(".filter_selector .filter_btn").on('click',function(event) {
$(".filter_selector .list").not($(this).parent().find(".list")).hide();
$(this).parent().find(".list").toggle();
});
// ---- Initialisation du champ de recherche
$(".search_filters .search_value").on('keypress',function(event) {
if (event.keyCode == 13) {
$(".search_filters .search_btn").trigger('click');
}
});
// ---- Clique sur le bouton de recherche
$(".search_filters .search_btn").on('click', function(event) {
// on créé un object filtre
var filter = {
type: "search",
legend : "Recherche : ",
value: $(".search_filters .search_value").val(),
libelle: [$(".search_filters .search_value").val()],
};
// MAJ du filtre principal et de l'affichage
updateFilter(filter);
// On lance la recherche
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
});
// ---- Clique sur un filtre
$(".filter").on('click', 'input[type="checkbox"]', function(event) {
var values = [];
var libelles = [];
// on créé un object filtre
var filter = {
type: $(this).parents(".filter").attr('data-type'),
legend : $(this).parents(".filter").attr('data-lib-type'),
value: [],
libelle: [],
};
// on y insère toutes les valeurs de ce même type de filtre
$(this).parents(".filter").find('input[type="checkbox"]').each(function (index, cb){
if($(this).is(':checked')){
filter.value.push($(this).val());
filter.libelle.push($(this).next("label").html());
}
});
// MAJ du filtre principal et de l'affichage
updateFilter(filter);
// On lance la recherche
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
});
// ---- Réinitialisation de la recherche
$(".reinit_search_btn").on('click', function(event) {
event.preventDefault();
// Vide la bar recherche
$.each(Object.keys($(window).data('filter')), function (index, value) {
if(value != "currentFolder")
$(".search_filters_list #"+value).remove();
});
// supprime tous les éléments de recherche
$(window).data('filter', {});
// masque le bouton de reinitialisation
$(".filter_wrapper .reinit_search_btn").hide();
// ---- Initialisation des listes
$(".filter").find('input[type="checkbox"]').prop( "checked", false );
// On lance la recherche
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
});
// ---- Suppression d'un filtre
$(".search_filters_list").on('click', '.filter_item', function(event) {
event.preventDefault();
var filters = $(window).data('filter');
var type = $(this).attr('id');
// Supprime l'élément dans la bar recherche
$(".search_filters_list #"+type).remove();
if(type == "currentFolder"){
$(".folder_container .dd3-content").removeClass('selected');
$(".folder_container .root_folder").removeClass('selected');
$(window).data('currentFolder', -1);
}else{
// supprime la propriété dans l'objet
if("undefined" !== typeof(filters[type]) ){ // si l'object à cette propriété
delete filters[type]; // on l'a supprime
}
$(window).data('filter', filters);
// ---- Initialisation des listes
$(".search_filters .filter[data-type='"+type+"']").find('input[type="checkbox"]').prop( "checked", false );
}
// masque le bouton de reinitialisation
if(Object.keys($(window).data('filter')).length == 0){
$(".filter_wrapper .reinit_search_btn").hide();
}
// On lance la recherche
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
});
}
});
window.updateFilter = function(filter){
var filters = $(window).data('filter');
// si ce filtre n'a pas de valeur
if(filter.value.length == 0 ){
$(".search_filters_list #"+filter.type).remove(); // on supprime le filtre de la liste
if("undefined" !== typeof(filters[filter.type]) ){ // si l'object à cette propriété
delete filters[filter.type]; // on l'a supprime
}
// si on a des valeurs pour ce filtre
}else{
// on met à jour l'objet filtre
filters[filter.type] = filter;
$(window).data('filter', filters);
// si le filtre n'existe pas dans la liste on l'ajoute
if(!$(".search_filters_list #"+filter.type).length){
var output = '<a id="'+filter.type+'" class="filter_item" href="#">';
output += '<span class="libelle">'+filter.legend+'</span>';
output += '<span class="value"></span>';
output += '<i class="delete_filter fal fa-times"></i>';
output += '</a>';
$(".search_filters_list").append(output);
}
$(".search_filters_list #"+filter.type+" .value").html(filter.libelle.join());
}
// affiche/masque le bouton de reinitialisation
if(Object.keys($(window).data('filter')).length > 0){
$(".filter_wrapper .reinit_search_btn").show();
}else{
$(".filter_wrapper .reinit_search_btn").hide();
}
}

View file

@ -9,7 +9,7 @@
* https://opensource.org/licenses/MIT
*/
.upload_container{
.upload_container, .depot_container{
display: none;
position: absolute;
top: 50%;
@ -17,7 +17,7 @@
transform: translate(-50%, -50%);
width: 300px;
height: 400px;
background-color: $white;
background-color: #24272e;
z-index: 100;
border-radius: 10px;
@ -40,10 +40,10 @@
border-radius: 4px;
width: 100%;
font-size: 15px;
color: $grey;
color: $white;
padding: 16px;
cursor: pointer;
border-bottom: 1px solid $grey2;
border-bottom: 1px solid #17191F;
i{
color : $lightblue;
@ -77,7 +77,7 @@
display: none;
height: 6px;
overflow: hidden;
background-color: #f5f5f5;
background-color: #24272e;
position: absolute;
top: 0px;
left: 0;
@ -112,10 +112,10 @@
>div{
width: 100%;
padding: 10px;
border-bottom: 1px solid #e8ebed;
border-bottom: 1px solid #17191F;
div:first-child{
color: $black;
color: $white;
margin-bottom: 5px;
font-size: 14px;
position: relative;
@ -129,7 +129,7 @@
}
}
div:last-child{
color: $grey;
color: $grey2;
}
button{
display: none;
@ -141,7 +141,7 @@
cursor: pointer;
i{
color: #337ab7;
color: $white;
font-size: 19px;
}
}
@ -153,7 +153,7 @@
}
}
.upload_bar{
border-top: 1px solid $grey2;
border-top: 1px solid #17191F;
width: 100%;
height: 60px;
position: absolute;
@ -164,9 +164,47 @@
display: inline-block;
}
#cancel , #close_upload_form{
color: $grey;
color: $white;
cursor: pointer;
margin-left: 15px;
}
}
}
.depot_container{
display: block;
width: 700px;
header{
padding: 20px;
border-bottom: 1px solid #17191F;
i{
font-size: 30px;
margin-right: 10px;
color: white;
}
}
.mainContent{
display: flex;
flex-direction: row;
.col{
width: 50%;
.fileinput-button{
border: none;
}
.content_wrapper{
height: 217px;
}
input, textarea, select{
display: block;
width: 315px;
margin: 15px;
}
}
}
}

View file

@ -17,16 +17,93 @@
.search_filters{
display: inline-flex;
align-items: center;
padding: 0px 10px;
>div{
display: flex;
align-items: center;
margin-right: 10px;
padding: 1px 8px;
border-right: 1px solid $grey2;
position: relative;
user-select: none;
i{
margin-left: 10px;
}
&:last-child{
border: none;
}
.list{
position: absolute;
user-select: none;
top: 17px;
left: 50%;
background-color: #24272e;
padding: 9px;
min-width: 163px;
transform: translateX(-50%);
z-index: 1;
&.list_etiquette li label{
color: $white;
padding: 4px;
display: inline-block;
position: relative;
&::before {
border-color: inherit;
content: "";
top: 0;
border-style: solid;
border-width: 11px;
border-bottom-color: transparent;
border-right-color: transparent;
border-top-color: transparent;
position: absolute;
right: -22px;
}
}
}
}
}
.filter_wrapper{
display: flex;
flex-direction: row;
margin-top: 18px;
align-items: center;
> span{
color : $lightorange;
font-weight: bold;
margin-right: 3px;
}
.search_filters_list{
.filter_item{
border: 1px solid $grey2;
border-radius: 3px;
padding: 3px 3px;
font-size: 11px;
margin: 0 1px;
display: inline-block;
&:hover{
color: $white;
border: 1px solid $white;
}
i{
margin-left: 6px;
}
}
}
.reinit_search_btn{
display: none;
color: #2ea8e5;
margin-left: 4px;
font-size: 11px;
&:hover{
color: $lightblue;
text-decoration: underline;
}
}
}
}

View file

@ -159,6 +159,15 @@
cursor: pointer;
user-select: none;
span{
text-overflow: ellipsis;
word-wrap: break-word;
white-space: nowrap;
display: inline-block;
width: 209px;
overflow: hidden;
height: 20px;
}
.count{
float: right;
display: inline;

View file

@ -266,11 +266,7 @@
<th>TYPE</th>
<th>COMMENTAIRE</th>
</tr>
<tr><td>02/05/2019 10:02</td><td>Sandrine Bellaud</td><td>Ajout</td><td>création du média</td></tr>
<tr><td>03/05/2019 09:20</td><td>Nicolas Mitavu</td><td>Modification</td><td>Modification des informations</td></tr>
<tr><td>05/05/2019 15:30</td><td>Nicolas Mitavu</td><td>Etiquette</td><td>Etiquette "A valider"</td></tr>
<tr><td>05/05/2019 15:48</td><td>Sandrine Bellaud</td><td>Etiquette</td><td>Etiquette "valider"</td></tr>
<tr><td>06/05/2019 11:36</td><td>Blandine Durand</td><td>Arcadia</td><td>Ajout au référentiel</td></tr>
<!-- <tr><td>02/05/2019 10:02</td><td>Sandrine Bellaud</td><td>Ajout</td><td>création du média</td></tr> -->
<tfoot>
<tr>
<td colspan="4">

View file

@ -11,7 +11,8 @@
<option value="{{$sujet->codeSujet}}" >{{$sujet->libelle}}</option>
@endforeach
</select>
<input type="hidden" class="currentFolder" value="0">
<input type="hidden" id="searchParameter" value="{{ Request::get('s') }}">
<input type="hidden" id="sujetParameter" value="{{ Request::get('t') }}">
<div class="close_side_menu"><i class="fas fa-chevron-left"></i></div>
</header>
<div class="folder_container">
@ -38,25 +39,54 @@
<div class="main_content">
<header>
<div class="search_wrapper">
<input type="text" value="" placeholder="rechercher un média...">
<a href="#" class="btn btn-square btn-black">Rechercher</a>
<div class="search_filters group">
<div class="filters_type_media">Type de média <i class="fas fa-caret-down"></i></div>
<div class="filters_type_vue">Type de vue <i class="fas fa-caret-down"></i></div>
<div class="filters_etiquette">Etiquette <i class="fas fa-caret-down"></i></div>
<div class="filters_arcadia">
<input type="checkbox" id="arcadia" name="arcadia" >
<label for="arcadia">Lié au référentiel</label> </div>
<input class="search_value" type="text" value="" placeholder="rechercher un média...">
<a href="#" class="btn btn-square btn-black search_btn">Rechercher</a>
<div class="filter_selector filter" data-lib-type="Type de média : " data-type="typemedia_id">
<div class="filter_btn">Type de média <i class="fas fa-caret-down"></i></div>
<div class="list" style="display:none;">
<ul>
@foreach ($typemedias as $typemedia)
<li><input id="typeM_{{$typemedia->codeTypemedia}}" type="checkbox" value="{{$typemedia->codeTypemedia}}" name=""><label for="typeM_{{$typemedia->codeTypemedia}}">{{$typemedia->libelle}}</label></li>
@endforeach
</ul>
</div>
</div>
<div class="filter_selector filter" data-lib-type="Type de vue : " data-type="typevue_id">
<div class="filter_btn">Type de vue <i class="fas fa-caret-down"></i></div>
<div class="list list_typevue" style="display:none;">
<ul></ul>
</div>
</div>
<div class="filter_selector filter" data-lib-type="Etiquette : " data-type="etiquette_id">
<div class="filter_btn">Etiquette <i class="fas fa-caret-down"></i></div>
<div class="list list_etiquette" style="display:none;">
<ul>
@foreach ($etiquettes as $etiquette)
<li><input id="etiq_{{$etiquette->etiquette_id}}" type="checkbox" value="{{$etiquette->etiquette_id}}" name=""><label for="etiq_{{$etiquette->etiquette_id}}" style="background-color:{{$etiquette->color}}; border-color:{{$etiquette->color}}" >{{$etiquette->libelle}}</label></li>
@endforeach
</ul>
</div>
</div>
<div class="filter" data-lib-type="" data-type="arcadia_id">
<input type="checkbox" id="arcadia" name="arcadia" value="1">
<label for="arcadia">Lié au référentiel</label>
</div>
</div>
<div class="search_filters_list">
<div class="filter_wrapper">
<span>Filtres :</span>
<div class="search_filters_list">
</div>
<a class="reinit_search_btn" href="#">Réinitialiser</a>
</div>
</div>
<div class="action_wrapper group">
@if (Auth::user()->hasRole([config('roles.const.CONTRIBUTEUR'), config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]))
<a href="#" class="action_add_media"><i class="fas fa-file-upload"></i> Ajouter un média</a>
@endif
@if (Auth::user()->hasRole([config('roles.const.CONTRIBUTEUR'), config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]))
<a href="#" class="action_download_media"><i class="fas fa-file-download"></i> Télécharger</a>
@endif
<a href="#" class="action_add_basket"><i class="fas fa-shopping-basket"></i> Ajouter au panier</a>
@if (Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]))
<a href="#" class="action_delete_media"><i class="fas fa-trash-alt"></i> Supprimer</a>

View file

@ -1,26 +1,44 @@
@extends('layouts.app')
@include('layouts.header')
@section('content')
<div class="upload_container">
<span class="btn btn-success fileinput-button">
<span><i class="fal fa-plus-circle"></i> Ajouter des médias</span>
<input id="fileupload" type="file" name="files[]" multiple>
</span>
<a id="submit" class="btn" href="#">Télécharger</a>
<a id="cancel" class="btn" href="#">Supprimer</a>
<br>
<br>
<!-- The global progress bar -->
<div id="progress" class="progress">
<div class="progress-bar progress-bar-success"></div>
</div>
<!-- The container for the uploaded errors -->
<div id="upload_errors"></div>
<!-- The container for the uploaded files -->
<div id="files" class="files"></div>
<br>
<div class="depot_container">
<header>
<i class="fas fa-images"></i>
<h1>Déposez vos médias</h1>
</header>
<div class="mainContent">
<div class="col">
<form class="form_depot_media" action="#" method="post">
<input id="depot_nom" type="text" name="" value="" placeholder="Votre nom*" required>
<select id="depot_societe" name="" required>
@foreach ($sites as $site)
<option value="{{$site->libelle}}">{{$site->libelle}}</option>
@endforeach
</select>
<textarea id="depot_description" name="name" rows="8" cols="80" placeholder="Description des fichiers envoyés*" required></textarea>
</form>
</div>
<div class="col">
<span class="fileinput-button">
<i class="fas fa-plus-circle"></i><span> Ajouter des fichiers</span>
<input id="uploadDepot" type="file" name="files[]" multiple>
</span>
<div class="content_wrapper">
<!-- The container for the uploaded errors -->
<div id="upload_errors"></div>
<!-- The container for the uploaded files -->
<div id="files" class="files"></div>
</div>
</div>
</div>
<div class="upload_bar">
<a id="submit" class="btn" href="#">Transférer</a>
<!-- The global progress bar -->
<div id="progress" class="progress">
<div class="progress-bar progress-bar-success"></div>
</div>
</div>
</div>
@endsection

View file

@ -15,7 +15,6 @@ Route::group(['middleware' => ['auth']], function(){
// Les pages Front
Route::get('/', 'CommunController@index')->name('home');
Route::get('/gestion-des-medias', 'MediaController@index')->name('media_manager');
Route::get('/upload', 'UploadController@index');
// Message de contact
Route::post('/send-message', 'CommunController@sendMessage');
@ -42,9 +41,6 @@ Route::group(['middleware' => ['auth']], function(){
Route::post('/ajax/get-article', 'MediaController@getArticle');
Route::post('/ajax/download-media', 'MediaController@downloadMedia')->name('downloadMedia');
// Ajax pour la gestion de l'upload de média
Route::post('/ajax/upload-media', 'UploadController@storeMedia');
// Back office
Route::resource('user', 'UserController');
Route::post('/check-matricule', 'UserController@checkMatricule');
@ -56,3 +52,12 @@ Auth::routes([
'verify' => false,
'register' => false,
]);
// Page pour déposer les médias
Route::get('/depot', 'UploadController@index');
// Ajax pour ajouter un dossier de dépôt
Route::post('/ajax/add-depot-folder', 'DossierController@addDepotFolder');
// Ajax pour la gestion de l'upload de média
Route::post('/ajax/upload-media', 'UploadController@storeMedia');

4
webpack.mix.js vendored
View file

@ -14,6 +14,8 @@ const mix = require('laravel-mix');
mix.js([
'resources/js/app.js',
'resources/js/admin.js',
'resources/js/media.js'
'resources/js/media.js',
'resources/js/depot.js',
'resources/js/searchengine.js',
], 'public/js/app.js')
.sass('resources/sass/app.scss', 'public/css');