front : suite popup édition de média
This commit is contained in:
parent
00818c977d
commit
ab44a4fa71
20 changed files with 831 additions and 110 deletions
15
app/Copyright.php
Normal file
15
app/Copyright.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Copyright extends Model
|
||||
{
|
||||
/**
|
||||
* The primary key associated with the table.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'copyright_id';
|
||||
}
|
||||
15
app/Etiquette.php
Normal file
15
app/Etiquette.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Etiquette extends Model
|
||||
{
|
||||
/**
|
||||
* The primary key associated with the table.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'etiquette_id';
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@ use App\Dossier;
|
|||
use App\Sujet;
|
||||
use App\Marque;
|
||||
use App\Media;
|
||||
use App\Typevue;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
|
|
@ -22,7 +23,11 @@ class DossierController extends Controller
|
|||
$dossiers = Dossier::whereNull('parent_id')
|
||||
->get();
|
||||
$sujets = Sujet::all();
|
||||
return view('dossiers.index')->with(['dossiers'=> $dossiers, 'sujets'=> $sujets]);
|
||||
|
||||
return view('dossiers.index')->with([
|
||||
'dossiers'=> $dossiers,
|
||||
'sujets'=> $sujets,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -189,6 +194,7 @@ class DossierController extends Controller
|
|||
$query->whereIn("marque_id", $marques);
|
||||
})->get();
|
||||
$response['count'] = Media::where('sujet_id', $sujetId)->whereNull('dossier_id')->count();
|
||||
$response['typevues'] = Typevue::where('sujet_id', $sujetId)->get();
|
||||
|
||||
if(Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')] )){
|
||||
$response['draggable'] = true;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ use Illuminate\Support\Facades\Auth;
|
|||
use Illuminate\Http\Request;
|
||||
use App\Sujet;
|
||||
use App\Media;
|
||||
use App\Typemedia;
|
||||
use App\Langue;
|
||||
use App\Copyright;
|
||||
use App\Etiquette;
|
||||
|
||||
class MediaController extends Controller
|
||||
{
|
||||
|
|
@ -18,8 +22,18 @@ class MediaController extends Controller
|
|||
*/
|
||||
public function index()
|
||||
{
|
||||
$sujets = Sujet::all();
|
||||
return view('media_manager')->with(['sujets'=> $sujets]);
|
||||
$sujets = Auth::user()->sujets;
|
||||
$typemedias = Typemedia::all();
|
||||
$langues = Langue::all();
|
||||
$copyrights = Copyright::all();
|
||||
$etiquettes = Etiquette::all();
|
||||
return view('media_manager')->with([
|
||||
'sujets'=> $sujets,
|
||||
'typemedias'=> $typemedias,
|
||||
'langues'=> $langues,
|
||||
'copyrights'=> $copyrights,
|
||||
'etiquettes'=> $etiquettes,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -35,9 +49,14 @@ class MediaController extends Controller
|
|||
$limit = $request->input('limit');
|
||||
|
||||
if($dossier_id == "0"){
|
||||
$response['data'] = Media::where('sujet_id', $sujet_id)->whereNull('dossier_id')->offset($offset)->limit($limit)->orderBy('created_at', 'desc')->get();
|
||||
$response['data'] = Media::where('sujet_id', $sujet_id)->whereNull('dossier_id')->with('Etiquette')->offset($offset)->limit($limit)->orderBy('created_at', 'desc')->get();
|
||||
}else{
|
||||
$response['data'] = Media::where('sujet_id', $sujet_id)->where('dossier_id', $dossier_id)->offset($offset)->limit($limit)->orderBy('created_at', 'desc')->get();
|
||||
$response['data'] = Media::where('sujet_id', $sujet_id)->where('dossier_id', $dossier_id)->with('Etiquette')->offset($offset)->limit($limit)->orderBy('created_at', 'desc')->get();
|
||||
}
|
||||
if(Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')] )){
|
||||
$response['draggable'] = true;
|
||||
}else{
|
||||
$response['draggable'] = false;
|
||||
}
|
||||
|
||||
return json_encode($response);
|
||||
|
|
@ -49,6 +68,7 @@ class MediaController extends Controller
|
|||
*/
|
||||
public function moveMedia(Request $request)
|
||||
{
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
||||
$response = array();
|
||||
$dossier_id = $request->input('dossier_id');
|
||||
$data = $request->input('data');
|
||||
|
|
@ -68,4 +88,33 @@ class MediaController extends Controller
|
|||
return json_encode(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* supprimer des médias
|
||||
*
|
||||
*/
|
||||
public function removeMedia(Request $request)
|
||||
{
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
||||
|
||||
$medias = $request->input('medias');
|
||||
Media::destroy($medias);
|
||||
|
||||
return json_encode(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtenir toutes les informations d'un média
|
||||
*
|
||||
*/
|
||||
public function getOneMedia(Request $request)
|
||||
{
|
||||
$response = array();
|
||||
$media_id = $request->input('media_id');
|
||||
$media = Media::where('id', $media_id)->with('Sujet')->first();
|
||||
if($media){
|
||||
$response['data'] = $media;
|
||||
}
|
||||
return json_encode($response);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,11 @@ class UploadController extends Controller {
|
|||
$media->largeur = $width;
|
||||
$media->hauteur = $height;
|
||||
$media->resolution = $this->get_dpi($destinationPath.$filename);
|
||||
if($media->resolution != 0){
|
||||
$media->largeur_mm = ceil(($width * 2.54 / $media->resolution)*10);
|
||||
$media->hauteur_mm = ceil(($height * 2.54 / $media->resolution)*10);
|
||||
}
|
||||
|
||||
$this->createThumbnail($destinationPath.$filename, $destinationPath.$uid.'_thumb.'.$extension, 200);
|
||||
if($width >= 1500){
|
||||
$this->createThumbnail($destinationPath.$filename, $destinationPath.$uid.'_preview.'.$extension, 1500);
|
||||
|
|
@ -150,28 +155,34 @@ class UploadController extends Controller {
|
|||
default:
|
||||
$media->typemedia_id = 5;
|
||||
|
||||
if($extension == 'pdf'){
|
||||
if(in_array($extension, array("pdf", "ai", "psd")) ){
|
||||
$im = new \imagick();
|
||||
|
||||
$im->readImage($destinationPath.$filename.'[0]');
|
||||
$im->setImageFormat('jpg');
|
||||
$im->readImage($destinationPath.$filename);
|
||||
if($extension == "pdf" || $extension == "psd"){
|
||||
$im->setIteratorIndex(0);
|
||||
}
|
||||
//$im->setImageFormat('jpg');
|
||||
//list($width,$height) = $im->getImageGeometry();
|
||||
$imageprops = $im->getImageGeometry();
|
||||
|
||||
$width = $imageprops['width'];
|
||||
$height = $imageprops['height'];
|
||||
|
||||
// create preview
|
||||
$fp = $destinationPath.$uid.'_preview.jpg';
|
||||
$fp = $destinationPath.$uid.'_preview.png';
|
||||
if($width >= 1500){
|
||||
$newHeight = (1500 * $height) / $width;
|
||||
$im->resizeImage(1500,$newHeight, \imagick::FILTER_LANCZOS, 0.9, true);
|
||||
//$newHeight = (1500 * $height) / $width;
|
||||
//$im->resizeImage(1500,$newHeight, \imagick::FILTER_LANCZOS, 0.9, true);
|
||||
$im->thumbnailImage(1500, 1500 , true);
|
||||
}
|
||||
$im->writeImage($fp);
|
||||
|
||||
// create thumb
|
||||
$newHeight = (200 * $height) / $width;
|
||||
$im->resizeImage(200, $newHeight, \imagick::FILTER_LANCZOS, 0.9, true);
|
||||
$fp = $destinationPath.$uid.'_thumb.jpg';
|
||||
//$newHeight = (200 * $height) / $width;
|
||||
//$im->resizeImage(200, $newHeight, \imagick::FILTER_LANCZOS, 0.9, true);
|
||||
$im->thumbnailImage(200, 200 , true);
|
||||
$fp = $destinationPath.$uid.'_thumb.png';
|
||||
$im->writeImage($fp);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,12 +110,12 @@ trait MediaTools {
|
|||
2 => [
|
||||
'load' => 'imagecreatefromjpeg',
|
||||
'save' => 'imagejpeg',
|
||||
'quality' => 100
|
||||
'quality' => 50
|
||||
],
|
||||
3 => [
|
||||
'load' => 'imagecreatefrompng',
|
||||
'save' => 'imagepng',
|
||||
'quality' => 0
|
||||
'quality' => 5
|
||||
],
|
||||
1 => [
|
||||
'load' => 'imagecreatefromgif',
|
||||
|
|
|
|||
15
app/Langue.php
Normal file
15
app/Langue.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Langue extends Model
|
||||
{
|
||||
/**
|
||||
* The primary key associated with the table.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'langue_id';
|
||||
}
|
||||
|
|
@ -3,9 +3,11 @@
|
|||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class Media extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
protected $table = "medias";
|
||||
|
||||
/**
|
||||
|
|
@ -31,4 +33,36 @@ class Media extends Model
|
|||
{
|
||||
return $this->belongsTo('App\Typemedia', 'typemedia_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the typevue that owns the media.
|
||||
*/
|
||||
public function typevue()
|
||||
{
|
||||
return $this->belongsTo('App\Typevue', 'typevue_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the langue that owns the media.
|
||||
*/
|
||||
public function langue()
|
||||
{
|
||||
return $this->belongsTo('App\Langue', 'typevue_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the copyright that owns the media.
|
||||
*/
|
||||
public function copyright()
|
||||
{
|
||||
return $this->belongsTo('App\Copyright', 'copyright_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the etiquette that owns the media.
|
||||
*/
|
||||
public function etiquette()
|
||||
{
|
||||
return $this->belongsTo('App\Etiquette', 'etiquette_id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ use Illuminate\Database\Eloquent\Model;
|
|||
|
||||
class Typemedia extends Model
|
||||
{
|
||||
protected $table = "typemedias";
|
||||
|
||||
/**
|
||||
* The primary key associated with the table.
|
||||
*
|
||||
|
|
|
|||
15
app/Typevue.php
Normal file
15
app/Typevue.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Typevue extends Model
|
||||
{
|
||||
/**
|
||||
* The primary key associated with the table.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'CODE_TYPEVUE';
|
||||
}
|
||||
156
public/.htaccess
156
public/.htaccess
|
|
@ -1,3 +1,159 @@
|
|||
# protection contre la lecture des répertoires
|
||||
Options All -Indexes
|
||||
|
||||
# Masquer les informations du serveur
|
||||
ServerSignature Off
|
||||
|
||||
|
||||
# Protect .htaccess et .htpasswds
|
||||
<Files ~ "^.*\.([Hh][Tt][AaPp])">
|
||||
order allow,deny
|
||||
deny from all
|
||||
</Files>
|
||||
|
||||
# Protect sql files
|
||||
<FilesMatch "\.sql">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</FilesMatch>
|
||||
|
||||
|
||||
<IfModule mod_mime.c>
|
||||
AddType application/vnd.ms-fontobject .eot
|
||||
AddType application/x-font-opentype .otf
|
||||
AddType image/svg+xml .svg
|
||||
AddType application/x-font-ttf .ttf
|
||||
AddType application/font-woff .woff
|
||||
AddType application/font-woff2 .woff2
|
||||
</IfModule>
|
||||
|
||||
|
||||
### FILTRE CONTRE XSS, REDIRECTIONS HTTP, base64_encode, VARIABLE PHP GLOBALS VIA URL, MODIFIER VARIABLE _REQUEST VIA URL, TEST DE FAILLE PHP, INJECTION SQL SIMPLE
|
||||
RewriteCond %{REQUEST_METHOD} (GET|POST) [NC]
|
||||
RewriteCond %{QUERY_STRING} ^(.*)(%3C|<)/?script(.*)$ [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)?javascript(%3A|:)(.*)$ [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} ^(.*)document\.location\.href(.*)$ [OR]
|
||||
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} ^.*(127\.0).* [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)(https?|ftp|mosConfig)(%3A|:)//(.*)$ [NC,OR] ## ATTENTION A CETTE REGLE. ELLE PEUT CASSER CERTAINES REDIRECTIONS RESSEMBLANT A: http://www.truc.fr/index.php?r=http://www.google.fr ##
|
||||
RewriteCond %{QUERY_STRING} ^.*(_encode|localhost|loopback).* [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} ^(.*)GLOBALS(=|[|%[0-9A-Z]{0,2})(.*)$ [OR]
|
||||
RewriteCond %{QUERY_STRING} ^(.*)_REQUEST(=|[|%[0-9A-Z]{0,2})(.*)$ [OR]
|
||||
RewriteCond %{QUERY_STRING} ^(.*)(SELECT(%20|\+)|UNION(%20|\+)ALL|INSERT(%20|\+)|DELETE(%20|\+)|CHAR\(|UPDATE(%20|\+)|REPLACE(%20|\+)|LIMIT(%20|\+)|CONCAT(%20|\+)|DECLARE(%20|\+))(.*)$ [NC]
|
||||
RewriteRule (.*) - [F]
|
||||
|
||||
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
# A TESTER la page n'accepte que les scripts provenant du même nom de domaine et de google.com (par exemple)
|
||||
#Header set Content-Security-Policy "script-src 'self' https://www.google.com"
|
||||
|
||||
# Protection contre le clickjacking. Interdit que le site soit intégré en iframe
|
||||
#Header always set X-FRAME-OPTIONS "DENY"
|
||||
|
||||
# Bloque la totalité du contenu lorsqu'une attaque XSS est suspectée
|
||||
Header always set X-XSS-Protection "1; mode=block"
|
||||
|
||||
#Désactive la détection automatique du type des ressources
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
|
||||
|
||||
# protege les cookies d'être modifiés par le client
|
||||
#Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
|
||||
</IfModule>
|
||||
|
||||
# BEGIN DEFLATE COMPRESSION
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE application/javascript
|
||||
AddOutputFilterByType DEFLATE application/rss+xml
|
||||
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
|
||||
AddOutputFilterByType DEFLATE application/x-font
|
||||
AddOutputFilterByType DEFLATE application/x-font-opentype
|
||||
AddOutputFilterByType DEFLATE application/x-font-otf
|
||||
AddOutputFilterByType DEFLATE application/x-font-truetype
|
||||
AddOutputFilterByType DEFLATE application/x-font-ttf
|
||||
AddOutputFilterByType DEFLATE application/font-woff2
|
||||
AddOutputFilterByType DEFLATE application/x-javascript
|
||||
AddOutputFilterByType DEFLATE application/xhtml+xml
|
||||
AddOutputFilterByType DEFLATE application/xml
|
||||
AddOutputFilterByType DEFLATE font/opentype
|
||||
AddOutputFilterByType DEFLATE font/otf
|
||||
AddOutputFilterByType DEFLATE font/ttf
|
||||
AddOutputFilterByType DEFLATE image/svg+xml
|
||||
AddOutputFilterByType DEFLATE image/x-icon
|
||||
AddOutputFilterByType DEFLATE text/css
|
||||
AddOutputFilterByType DEFLATE text/html
|
||||
AddOutputFilterByType DEFLATE text/javascript
|
||||
AddOutputFilterByType DEFLATE text/plain
|
||||
AddOutputFilterByType DEFLATE text/xml
|
||||
</IfModule>
|
||||
# END DEFLATE COMPRESSION
|
||||
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresDefault "access plus 1 month"
|
||||
ExpiresByType text/html "access plus 0 seconds"
|
||||
ExpiresByType text/xml "access plus 0 seconds"
|
||||
ExpiresByType application/xml "access plus 0 seconds"
|
||||
ExpiresByType application/json "access plus 0 seconds"
|
||||
ExpiresByType application/pdf "access plus 0 seconds"
|
||||
ExpiresByType application/rss+xml "access plus 1 hour"
|
||||
ExpiresByType application/atom+xml "access plus 1 hour"
|
||||
ExpiresByType application/x-font-ttf "access plus 1 month"
|
||||
ExpiresByType font/opentype "access plus 1 month"
|
||||
ExpiresByType application/x-font-woff "access plus 1 month"
|
||||
ExpiresByType application/x-font-woff2 "access plus 1 month"
|
||||
ExpiresByType image/svg+xml "access plus 1 month"
|
||||
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
|
||||
ExpiresByType image/jpg "access plus 1 month"
|
||||
ExpiresByType image/jpeg "access plus 1 month"
|
||||
ExpiresByType image/gif "access plus 1 month"
|
||||
ExpiresByType image/png "access plus 1 month"
|
||||
ExpiresByType video/ogg "access plus 1 month"
|
||||
ExpiresByType audio/ogg "access plus 1 month"
|
||||
ExpiresByType video/mp4 "access plus 1 month"
|
||||
ExpiresByType video/webm "access plus 1 month"
|
||||
ExpiresByType text/css "access plus 6 month"
|
||||
ExpiresByType application/javascript "access plus 6 month"
|
||||
ExpiresByType application/x-shockwave-flash "access plus 1 week"
|
||||
ExpiresByType image/x-icon "access plus 1 week"
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
<FilesMatch "\\.(ico|jpe?g|png|gif|swf|svg)$">
|
||||
Header set Cache-Control "max-age=2592000, public"
|
||||
</FilesMatch>
|
||||
<FilesMatch "\\.(css)$">
|
||||
Header set Cache-Control "max-age=604800, public"
|
||||
</FilesMatch>
|
||||
<FilesMatch "\\.(js)$">
|
||||
Header set Cache-Control "max-age=604800, private"
|
||||
</FilesMatch>
|
||||
<filesmatch "\\.(html|htm)$">
|
||||
Header set Cache-Control "max-age=5, public"
|
||||
</filesmatch>
|
||||
<filesmatch "\\.(woff)$">
|
||||
Header set Cache-Control "max-age=604800, public"
|
||||
</filesmatch>
|
||||
</IfModule>
|
||||
|
||||
|
||||
<ifModule mod_gzip.c>
|
||||
mod_gzip_on Yes
|
||||
mod_gzip_dechunk Yes
|
||||
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
|
||||
mod_gzip_item_include handler ^cgi-script$
|
||||
mod_gzip_item_include mime ^text/.*
|
||||
mod_gzip_item_include mime ^application/x-javascript.*
|
||||
mod_gzip_item_exclude mime ^image/.*
|
||||
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
|
||||
</ifModule>
|
||||
|
||||
Header unset Pragma
|
||||
FileETag None
|
||||
Header unset ETag
|
||||
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
<IfModule mod_negotiation.c>
|
||||
Options -MultiViews -Indexes
|
||||
|
|
|
|||
33
public/css/app.css
vendored
33
public/css/app.css
vendored
|
|
@ -13674,6 +13674,28 @@ table tfoot tr:hover {
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .wrapper .imageItem .etiquette {
|
||||
position: absolute;
|
||||
display: inline;
|
||||
top: 38px;
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
color: #ffffff;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .wrapper .imageItem .etiquette[data-id="0"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .wrapper .imageItem .etiquette i {
|
||||
position: absolute;
|
||||
right: -10px;
|
||||
top: 0;
|
||||
font-size: 30px;
|
||||
line-height: 17px;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .wrapper .imageItem .contextMenu {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
|
|
@ -13810,7 +13832,7 @@ table tfoot tr:hover {
|
|||
.media_manager .side_menu {
|
||||
background-color: #3b3b3b;
|
||||
position: relative;
|
||||
width: 340px;
|
||||
width: 450px;
|
||||
height: 100%;
|
||||
transition: 0.3s ease-in-out;
|
||||
z-index: 1;
|
||||
|
|
@ -13847,6 +13869,10 @@ table tfoot tr:hover {
|
|||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.media_manager .side_menu header select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.media_manager .side_menu header .close_side_menu {
|
||||
background-color: #3b3b3b;
|
||||
position: absolute;
|
||||
|
|
@ -14046,6 +14072,11 @@ table tfoot tr:hover {
|
|||
height: 100%;
|
||||
}
|
||||
|
||||
#form_media .main_content .tab.tab_preview embed {
|
||||
width: 66%;
|
||||
height: 99%;
|
||||
}
|
||||
|
||||
#form_media .main_content .tab.tab_edit .tab_content {
|
||||
overflow: auto;
|
||||
height: calc(100% - 50px);
|
||||
|
|
|
|||
218
public/js/app.js
vendored
218
public/js/app.js
vendored
|
|
@ -10878,7 +10878,7 @@ function tableSearch(field, attr, search) {
|
|||
function tableGlobalSearch(field, search, cols) {
|
||||
var search = search.toUpperCase();
|
||||
$(field).each(function (index, value) {
|
||||
$row = $(this);
|
||||
var $row = $(this);
|
||||
var find = false;
|
||||
$.each(cols, function (index, value) {
|
||||
var dataCol = $row.find("td:nth-of-type(" + value + ")").text().toUpperCase();
|
||||
|
|
@ -11014,7 +11014,7 @@ $(".contact_btn").on('click', function (event) {
|
|||
|
||||
$(".close_popup").on('click', function (event) {
|
||||
event.preventDefault();
|
||||
$.fancybox.getInstance().close();
|
||||
$.fancybox.close();
|
||||
}); // ---- Header : envoi formulaire de contact
|
||||
|
||||
$(".form_contact_send").on('click', function (event) {
|
||||
|
|
@ -11356,10 +11356,10 @@ $(document).ready(function () {
|
|||
},
|
||||
success: function success(result) {
|
||||
$(".folder_container .dd3-item[data-id='" + dossier_id + "'] > .dd3-content span").html(libelle);
|
||||
$.fancybox.getInstance().close();
|
||||
$.fancybox.close();
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.getInstance().close();
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de l'édition du dossier, merci d'actualiser la page.",
|
||||
|
|
@ -11490,7 +11490,9 @@ $(document).ready(function () {
|
|||
$(this).dblclick();
|
||||
} else if ($target.hasClass('downloadItem')) {// Télécharger le média
|
||||
} else if ($target.hasClass('addBasket')) {// ajouter le média au panier
|
||||
} else if ($target.hasClass('deleteItem')) {// supprimer le média
|
||||
} else if ($target.hasClass('deleteItem')) {
|
||||
// supprimer le média
|
||||
removeMedias([$(this).attr('data-id')]);
|
||||
} else if ($target.hasClass('tagItem')) {// Appliquer une étiquette
|
||||
}
|
||||
|
||||
|
|
@ -11562,13 +11564,14 @@ $(document).ready(function () {
|
|||
event.preventDefault(); // initialise le nuage de Tags
|
||||
|
||||
$('#tag-editor').tagEditor({
|
||||
initialTags: ['Paysage', 'Nature', 'Soleil'],
|
||||
placeholder: 'Saissisez des tags',
|
||||
removeDuplicates: false,
|
||||
clickDelete: true
|
||||
});
|
||||
var minWidth = $(document).width();
|
||||
var minHeight = $(document).height() - 43 - 40; // Mémorise le média courant
|
||||
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
|
||||
|
||||
|
|
@ -11576,10 +11579,11 @@ $(document).ready(function () {
|
|||
|
||||
if ($(this).attr('data-typemedia') == 1) {
|
||||
// média image
|
||||
$("#form_media .form_media_retouch").show(); // on active l'onglet ressource
|
||||
$("#form_media .form_media_retouch").show(); // on active l'onglet retouche
|
||||
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge l'image de preview
|
||||
|
||||
$(".preview_img").val($(this).attr('data-preview'));
|
||||
$(".tab_preview").html('<div id="openseadragon" ></div>');
|
||||
$("#openseadragon").css('width', '100%');
|
||||
$("#openseadragon").css('height', minHeight);
|
||||
|
|
@ -11587,7 +11591,7 @@ $(document).ready(function () {
|
|||
id: "openseadragon",
|
||||
tileSources: {
|
||||
type: "image",
|
||||
url: $(".preview_img").val()
|
||||
url: imgPreview
|
||||
}
|
||||
}); // charge l'image pour la retouche
|
||||
|
||||
|
|
@ -11602,14 +11606,13 @@ $(document).ready(function () {
|
|||
save: {
|
||||
callback: function callback() {
|
||||
var newImage = this.darkroom.sourceCanvas.toDataURL();
|
||||
$(".preview_img").val(newImage);
|
||||
viewer.destroy();
|
||||
viewer = null;
|
||||
viewer = OpenSeadragon({
|
||||
id: "openseadragon",
|
||||
tileSources: {
|
||||
type: "image",
|
||||
url: $(".preview_img").val()
|
||||
url: newImage
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -11619,6 +11622,8 @@ $(document).ready(function () {
|
|||
} else if ($(this).attr('data-typemedia') == 2) {
|
||||
// média svg
|
||||
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
|
||||
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge le svg
|
||||
|
||||
$(".tab_preview").html('<img class="svgElt" src=""/>');
|
||||
|
|
@ -11626,6 +11631,8 @@ $(document).ready(function () {
|
|||
} else if ($(this).attr('data-typemedia') == 4) {
|
||||
// média audio
|
||||
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
|
||||
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge l'audio
|
||||
|
||||
$(".tab_preview").html('<audio controls src=""></audio>');
|
||||
|
|
@ -11633,6 +11640,8 @@ $(document).ready(function () {
|
|||
} else if ($(this).attr('data-typemedia') == 3) {
|
||||
// média video
|
||||
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
|
||||
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge la vidéo
|
||||
|
||||
$(".tab_preview").html('<video src="" controls></video>');
|
||||
|
|
@ -11640,14 +11649,96 @@ $(document).ready(function () {
|
|||
} else if ($(this).attr('data-typemedia') == 5) {
|
||||
// média document
|
||||
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
|
||||
// charge l'aperçu
|
||||
// pdf : on affiche le lecteur pdf
|
||||
|
||||
$(".tab_preview").html('<img class="svgElt" src=""/>');
|
||||
$(".tab_preview img").attr("src", $(this).attr('data-preview'));
|
||||
} // affiche la popin
|
||||
if ($(this).attr('data-ext') == 'pdf') {
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge l'aperçu
|
||||
|
||||
$(".tab_preview").html('<embed src="" type="application/pdf">');
|
||||
$(".tab_preview embed").attr("src", $(this).attr('data-src')); // psd et ai : on affiche la preview classique
|
||||
} else if ($(this).attr('data-ext') == 'psd' || $(this).attr('data-ext') == 'ai') {
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge l'aperçu
|
||||
|
||||
$(".tab_preview").html('<div id="openseadragon" ></div>');
|
||||
$("#openseadragon").css('width', '100%');
|
||||
$("#openseadragon").css('height', minHeight);
|
||||
viewer = OpenSeadragon({
|
||||
id: "openseadragon",
|
||||
tileSources: {
|
||||
type: "image",
|
||||
url: imgPreview
|
||||
}
|
||||
}); // autre document : pas d'aperçu
|
||||
} else {
|
||||
$("#form_media .form_media_preview").hide(); // masque l'onglet aperçu
|
||||
|
||||
$("#form_media .form_media_edit").trigger("click"); // sélectionne la tab d'édition à l'ouverture
|
||||
}
|
||||
} // chargement des données du média
|
||||
|
||||
|
||||
$("#form_media").fadeIn('fast');
|
||||
$.ajax({
|
||||
url: '/ajax/get-media',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
media_id: $(window).data('current_edit_media')
|
||||
},
|
||||
success: function success(result) {
|
||||
// chargement des données
|
||||
$(".tab_edit #arcadia_id").val(result.data.arcadia_id);
|
||||
$(".tab_edit #libelle").val(result.data.libelle);
|
||||
$(".tab_edit #sujetLibelle").val(result.data.sujet.LIBELLE);
|
||||
$(".tab_edit #typevues").val(result.data.typevue_id);
|
||||
$(".tab_edit #typemedias").val(result.data.typemedia_id); //$(".tab_edit #variantes").val(result.data.etiquette_id);
|
||||
|
||||
$(".tab_edit #langues").val(result.data.langue_id);
|
||||
$(".tab_edit #commentaire").val(result.data.commentaire); //$(".tab_edit #version").val(result.data.version);
|
||||
|
||||
$(".tab_edit #created_at").val(result.data.created_at);
|
||||
$(".tab_edit #updated_at").val(result.data.updated_at);
|
||||
$(".tab_edit #published_at").val(result.data.published_at); // liste des produits liés
|
||||
// marque lié
|
||||
// site lié
|
||||
// tags $('#demo3').tagEditor('addTag', 'example');
|
||||
|
||||
$(".tab_edit #etiquettes").val(result.data.etiquette_id);
|
||||
$(".tab_edit #extension").val(result.data.extension);
|
||||
$(".tab_edit #copyrights").val(result.data.copyright_id);
|
||||
$(".tab_edit #largeur").val(result.data.largeur);
|
||||
$(".tab_edit #hauteur").val(result.data.hauteur);
|
||||
$(".tab_edit #resolution").val(result.data.resolution);
|
||||
$(".tab_edit #largeur_mm").val(result.data.largeur_mm);
|
||||
$(".tab_edit #hauteur_mm").val(result.data.hauteur_mm); // affiche la popin
|
||||
|
||||
$("#form_media").fadeIn('fast');
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
// si le plugin de retouche a déjà été chargé
|
||||
if (drPlugin !== null) {
|
||||
drPlugin.selfDestroy();
|
||||
drPlugin = null; // on détruit le plugin de retouche
|
||||
} // si le plugin de preview a déjà été chargé
|
||||
|
||||
|
||||
if (viewer !== null) {
|
||||
viewer.destroy();
|
||||
viewer = null; // on détruit le plugin de preview
|
||||
}
|
||||
|
||||
$('#tag-editor').tagEditor('destroy');
|
||||
$('.ed_on').hide();
|
||||
$('.ed_off').show(); // on détruit le plugin de tag
|
||||
|
||||
$.fancyMessage({
|
||||
title: "Edition d'un média",
|
||||
message: "Ouverture du média impossible. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}); // ---- fermeture de la popup d'édition
|
||||
|
||||
$(".form_media_close, .btn_tab_edit_cancel").on("click", function (event) {
|
||||
|
|
@ -11658,7 +11749,10 @@ $(document).ready(function () {
|
|||
if (drPlugin !== null) {
|
||||
drPlugin.selfDestroy();
|
||||
drPlugin = null; // on détruit le plugin de retouche
|
||||
} // si le plugin de preview a déjà été chargé
|
||||
|
||||
|
||||
if (viewer !== null) {
|
||||
viewer.destroy();
|
||||
viewer = null; // on détruit le plugin de preview
|
||||
}
|
||||
|
|
@ -11675,6 +11769,17 @@ $(document).ready(function () {
|
|||
if ($(".tab_preview audio").length) {
|
||||
$(".tab_preview audio").get(0).pause();
|
||||
}
|
||||
}); // ---- Suppression de média en masse
|
||||
|
||||
$('.action_delete_media').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
var medias = [];
|
||||
$('.media_container .imageItem').each(function (index) {
|
||||
if ($(this).attr("aria-grabbed") == "true") {
|
||||
medias.push($(this).attr("data-id"));
|
||||
}
|
||||
});
|
||||
removeMedias(medias);
|
||||
}); // ---- gestion des onglets de la popup d'édition
|
||||
|
||||
$("#form_media .tabbtn").on("click", function (event) {
|
||||
|
|
@ -11745,7 +11850,7 @@ $(document).ready(function () {
|
|||
url: "/ajax/upload-media",
|
||||
dataType: 'json',
|
||||
limitMultiFileUploads: 10,
|
||||
maxChunkSize: 10000000,
|
||||
maxChunkSize: 8000000,
|
||||
dragover: function dragover(e, data) {
|
||||
$(".uploader-window").fadeIn("fast");
|
||||
},
|
||||
|
|
@ -11867,10 +11972,18 @@ function initFolderManager(sujetId) {
|
|||
},
|
||||
success: function success(result) {
|
||||
var output = '';
|
||||
var draggable = result.draggable;
|
||||
var data = result.data;
|
||||
var draggable = result.draggable; // initialisation de la liste type vues
|
||||
|
||||
var typevues = result.typevues;
|
||||
$("#typevues").find('option').remove();
|
||||
$.each(typevues, function (index, typevue) {
|
||||
$("#typevues").append('<option value="' + typevue.CODE_TYPEVUE + '">' + typevue.LIBELLE + '</option>');
|
||||
}); // ajout du total à la racine
|
||||
|
||||
var total = result.count;
|
||||
$(".root_folder .count").html(total);
|
||||
$(".root_folder .count").html(total); // construction des dossiers
|
||||
|
||||
var data = result.data;
|
||||
$.each(data, function (index, item) {
|
||||
output += buildItem(item);
|
||||
});
|
||||
|
|
@ -11982,6 +12095,7 @@ function loadMedia(dossier_id, sujet_id) {
|
|||
$(window).data('noMedia', true);
|
||||
}
|
||||
|
||||
var draggable = result.draggable;
|
||||
$.each(data, function (index, item) {
|
||||
var ico = "";
|
||||
var detail = "";
|
||||
|
|
@ -12018,9 +12132,9 @@ function loadMedia(dossier_id, sujet_id) {
|
|||
case 5:
|
||||
ico = '<i class="fas fa-file"></i>';
|
||||
|
||||
if (item.extension = "pdf") {
|
||||
thumb = item.source.split('.')[0] + "_thumb.jpg";
|
||||
preview = item.source.split('.')[0] + "_preview.jpg";
|
||||
if (item.extension == "pdf" || item.extension == "ai" || item.extension == "psd") {
|
||||
thumb = item.source.split('.')[0] + "_thumb.png";
|
||||
preview = item.source.split('.')[0] + "_preview.png";
|
||||
} else {
|
||||
itemClass = "doc";
|
||||
}
|
||||
|
|
@ -12030,7 +12144,8 @@ function loadMedia(dossier_id, sujet_id) {
|
|||
default:
|
||||
}
|
||||
|
||||
output += '<div class="imageItem" data-id="' + item.id + '" data-typemedia="' + item.typemedia_id + '" data-preview="' + preview + '" data-src="' + item.source + '" draggable="true" aria-grabbed="false">';
|
||||
output += '<div class="imageItem" data-id="' + item.id + '" data-ext="' + item.extension + '" data-typemedia="' + item.typemedia_id + '" data-preview="' + preview + '" data-src="' + item.source + '" draggable="' + draggable + '" aria-grabbed="false">';
|
||||
output += '<div class="etiquette" style="background-color:' + item.etiquette.color + ';" data-id="' + item.etiquette.etiquette_id + '" >' + item.etiquette.libelle + '<i style="color:' + item.etiquette.color + ';" class="fas fa-caret-right"></i></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>';
|
||||
|
|
@ -12055,6 +12170,59 @@ function loadMedia(dossier_id, sujet_id) {
|
|||
$(window).data('ajaxready', true);
|
||||
}
|
||||
});
|
||||
} // ---- Supression de médias
|
||||
|
||||
|
||||
function removeMedias(medias) {
|
||||
if (medias.length == 0) {
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Veuillez sélectionner les médias à supprimer.",
|
||||
type: "error"
|
||||
});
|
||||
} else {
|
||||
$.fancyConfirm({
|
||||
title: "Suppression de média",
|
||||
message: "Êtes-vous sûr de vouloir supprimer " + medias.length + " média(s) ?",
|
||||
okButton: 'Supprimer',
|
||||
noButton: 'Annuler',
|
||||
callback: function callback(value) {
|
||||
if (value) {
|
||||
$.ajax({
|
||||
url: '/ajax/remove-media',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
medias: medias
|
||||
},
|
||||
success: function success(result) {
|
||||
$.each(medias, function (index, value) {
|
||||
$(".media_container .imageItem[data-id='" + value + "']").remove();
|
||||
}); // ---- MAJ du nb de média dans le dossier
|
||||
|
||||
var currentFolder = $(".currentFolder").val();
|
||||
|
||||
if (currentFolder == 0 || currentFolder == "") {
|
||||
var count = $(".folder_container .root_folder .count");
|
||||
} else {
|
||||
var count = $(".folder_container .dd3-item[data-id='" + currentFolder + "'] > .dd3-content .count");
|
||||
}
|
||||
|
||||
count.html(parseInt(count.html()) - medias.length);
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de la suppression du média, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} // ---- contruction de l'arborescence des dossiers
|
||||
|
||||
|
||||
|
|
|
|||
2
resources/js/admin.js
vendored
2
resources/js/admin.js
vendored
|
|
@ -187,7 +187,7 @@ function tableGlobalSearch(field, search, cols){
|
|||
var search = search.toUpperCase();
|
||||
|
||||
$(field).each(function (index, value) {
|
||||
$row = $(this);
|
||||
var $row = $(this);
|
||||
var find = false;
|
||||
$.each(cols, function (index, value) {
|
||||
var dataCol = $row.find("td:nth-of-type("+value+")").text().toUpperCase();
|
||||
|
|
|
|||
2
resources/js/app.js
vendored
2
resources/js/app.js
vendored
|
|
@ -142,7 +142,7 @@ $(".contact_btn").on('click',function(event) {
|
|||
// ---- Header : fermeture de la popup
|
||||
$(".close_popup").on('click',function(event) {
|
||||
event.preventDefault();
|
||||
$.fancybox.getInstance().close();
|
||||
$.fancybox.close();
|
||||
});
|
||||
|
||||
// ---- Header : envoi formulaire de contact
|
||||
|
|
|
|||
194
resources/js/media.js
vendored
194
resources/js/media.js
vendored
|
|
@ -272,10 +272,10 @@ $(document).ready(function() {
|
|||
},
|
||||
success: function(result){
|
||||
$(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content span").html(libelle);
|
||||
$.fancybox.getInstance().close();
|
||||
$.fancybox.close();
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.getInstance().close();
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de l'édition du dossier, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
|
|
@ -399,6 +399,7 @@ $(document).ready(function() {
|
|||
}else if ($target.hasClass('downloadItem')) { // Télécharger le média
|
||||
}else if ($target.hasClass('addBasket')) { // ajouter le média au panier
|
||||
}else if ($target.hasClass('deleteItem')) { // supprimer le média
|
||||
removeMedias([$(this).attr('data-id')]);
|
||||
}else if ($target.hasClass('tagItem')) { // Appliquer une étiquette
|
||||
}
|
||||
return false;
|
||||
|
|
@ -466,7 +467,6 @@ $(document).ready(function() {
|
|||
|
||||
// initialise le nuage de Tags
|
||||
$('#tag-editor').tagEditor({
|
||||
initialTags: ['Paysage', 'Nature', 'Soleil'],
|
||||
placeholder: 'Saissisez des tags',
|
||||
removeDuplicates : false,
|
||||
clickDelete : true
|
||||
|
|
@ -475,25 +475,27 @@ $(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
|
||||
$("#form_media .form_media_preview").trigger("click");
|
||||
|
||||
if($(this).attr('data-typemedia') == 1){ // média image
|
||||
$("#form_media .form_media_retouch").show(); // on active l'onglet ressource
|
||||
$("#form_media .form_media_retouch").show(); // on active l'onglet retouche
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
|
||||
// charge l'image de preview
|
||||
$(".preview_img").val($(this).attr('data-preview'));
|
||||
$(".tab_preview").html('<div id="openseadragon" ></div>');
|
||||
|
||||
$("#openseadragon").css('width', '100%');
|
||||
$("#openseadragon").css('height', minHeight);
|
||||
viewer = OpenSeadragon({
|
||||
id: "openseadragon",
|
||||
tileSources: {
|
||||
type: "image",
|
||||
url: $(".preview_img").val(),
|
||||
url: imgPreview,
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -510,13 +512,12 @@ $(document).ready(function() {
|
|||
save: {
|
||||
callback: function() {
|
||||
var newImage = this.darkroom.sourceCanvas.toDataURL();
|
||||
$(".preview_img").val(newImage);
|
||||
viewer.destroy(); viewer = null;
|
||||
viewer = OpenSeadragon({
|
||||
id: "openseadragon",
|
||||
tileSources: {
|
||||
type: "image",
|
||||
url: $(".preview_img").val(),
|
||||
url: newImage,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -525,27 +526,108 @@ $(document).ready(function() {
|
|||
});
|
||||
}else if ($(this).attr('data-typemedia') == 2) { // média svg
|
||||
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge le svg
|
||||
$(".tab_preview").html('<img class="svgElt" src=""/>');
|
||||
$(".tab_preview img").attr("src", $(this).attr('data-src'));
|
||||
}else if ($(this).attr('data-typemedia') == 4) { // média audio
|
||||
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge l'audio
|
||||
$(".tab_preview").html('<audio controls src=""></audio>');
|
||||
$(".tab_preview audio").attr("src", $(this).attr('data-src'));
|
||||
}else if ($(this).attr('data-typemedia') == 3) { // média video
|
||||
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge la vidéo
|
||||
$(".tab_preview").html('<video src="" controls></video>');
|
||||
$(".tab_preview video").attr("src", $(this).attr('data-src'));
|
||||
}else if ($(this).attr('data-typemedia') == 5) { // média document
|
||||
|
||||
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
|
||||
// charge l'aperçu
|
||||
$(".tab_preview").html('<img class="svgElt" src=""/>');
|
||||
$(".tab_preview img").attr("src", $(this).attr('data-preview'));
|
||||
|
||||
// pdf : on affiche le lecteur pdf
|
||||
if($(this).attr('data-ext') == 'pdf'){
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge l'aperçu
|
||||
$(".tab_preview").html('<embed src="" type="application/pdf">');
|
||||
$(".tab_preview embed").attr("src", $(this).attr('data-src'));
|
||||
|
||||
// psd et ai : on affiche la preview classique
|
||||
}else if ($(this).attr('data-ext') == 'psd' || $(this).attr('data-ext') == 'ai') {
|
||||
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
|
||||
// charge l'aperçu
|
||||
$(".tab_preview").html('<div id="openseadragon" ></div>');
|
||||
$("#openseadragon").css('width', '100%');
|
||||
$("#openseadragon").css('height', minHeight);
|
||||
viewer = OpenSeadragon({
|
||||
id: "openseadragon",
|
||||
tileSources: {
|
||||
type: "image",
|
||||
url: imgPreview,
|
||||
}
|
||||
});
|
||||
|
||||
// autre document : pas d'aperçu
|
||||
}else{
|
||||
$("#form_media .form_media_preview").hide(); // masque l'onglet aperçu
|
||||
$("#form_media .form_media_edit").trigger("click"); // sélectionne la tab d'édition à l'ouverture
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// affiche la popin
|
||||
$("#form_media").fadeIn('fast');
|
||||
// chargement des données du média
|
||||
$.ajax({
|
||||
url: '/ajax/get-media',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
media_id : $(window).data('current_edit_media'),
|
||||
},
|
||||
success: function(result){
|
||||
// chargement des données
|
||||
$(".tab_edit #arcadia_id").val(result.data.arcadia_id);
|
||||
$(".tab_edit #libelle").val(result.data.libelle);
|
||||
$(".tab_edit #sujetLibelle").val(result.data.sujet.LIBELLE);
|
||||
$(".tab_edit #typevues").val(result.data.typevue_id);
|
||||
$(".tab_edit #typemedias").val(result.data.typemedia_id);
|
||||
//$(".tab_edit #variantes").val(result.data.etiquette_id);
|
||||
$(".tab_edit #langues").val(result.data.langue_id);
|
||||
$(".tab_edit #commentaire").val(result.data.commentaire);
|
||||
//$(".tab_edit #version").val(result.data.version);
|
||||
$(".tab_edit #created_at").val(result.data.created_at);
|
||||
$(".tab_edit #updated_at").val(result.data.updated_at);
|
||||
$(".tab_edit #published_at").val(result.data.published_at);
|
||||
// liste des produits liés
|
||||
// marque lié
|
||||
// site lié
|
||||
// tags $('#demo3').tagEditor('addTag', 'example');
|
||||
$(".tab_edit #etiquettes").val(result.data.etiquette_id);
|
||||
$(".tab_edit #extension").val(result.data.extension);
|
||||
$(".tab_edit #copyrights").val(result.data.copyright_id);
|
||||
$(".tab_edit #largeur").val(result.data.largeur);
|
||||
$(".tab_edit #hauteur").val(result.data.hauteur);
|
||||
$(".tab_edit #resolution").val(result.data.resolution);
|
||||
$(".tab_edit #largeur_mm").val(result.data.largeur_mm);
|
||||
$(".tab_edit #hauteur_mm").val(result.data.hauteur_mm);
|
||||
|
||||
// affiche la popin
|
||||
$("#form_media").fadeIn('fast');
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
// si le plugin de retouche a déjà été chargé
|
||||
if(drPlugin !== null){
|
||||
drPlugin.selfDestroy(); drPlugin = null; // on détruit le plugin de retouche
|
||||
}
|
||||
// si le plugin de preview a déjà été chargé
|
||||
if(viewer !== null){
|
||||
viewer.destroy(); viewer = null; // on détruit le plugin de preview
|
||||
}
|
||||
$('#tag-editor').tagEditor('destroy'); $('.ed_on').hide();$('.ed_off').show(); // on détruit le plugin de tag
|
||||
$.fancyMessage({title : "Edition d'un média", message : "Ouverture du média impossible. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -557,6 +639,9 @@ $(document).ready(function() {
|
|||
// si le plugin de retouche a déjà été chargé
|
||||
if(drPlugin !== null){
|
||||
drPlugin.selfDestroy(); drPlugin = null; // on détruit le plugin de retouche
|
||||
}
|
||||
// si le plugin de preview a déjà été chargé
|
||||
if(viewer !== null){
|
||||
viewer.destroy(); viewer = null; // on détruit le plugin de preview
|
||||
}
|
||||
$('#tag-editor').tagEditor('destroy'); $('.ed_on').hide();$('.ed_off').show(); // on détruit le plugin de tag
|
||||
|
|
@ -569,6 +654,18 @@ $(document).ready(function() {
|
|||
}
|
||||
});
|
||||
|
||||
// ---- Suppression de média en masse
|
||||
$('.action_delete_media').on('click',function(event){
|
||||
event.preventDefault();
|
||||
var medias = [];
|
||||
$('.media_container .imageItem').each(function (index) {
|
||||
if( $(this ).attr("aria-grabbed") == "true" ){
|
||||
medias.push($(this ).attr("data-id"));
|
||||
}
|
||||
});
|
||||
removeMedias(medias);
|
||||
});
|
||||
|
||||
// ---- gestion des onglets de la popup d'édition
|
||||
$("#form_media .tabbtn").on("click" , function(event) {
|
||||
event.preventDefault();
|
||||
|
|
@ -649,7 +746,7 @@ $(document).ready(function() {
|
|||
url: "/ajax/upload-media",
|
||||
dataType: 'json',
|
||||
limitMultiFileUploads: 10,
|
||||
maxChunkSize: 10000000,
|
||||
maxChunkSize: 8000000,
|
||||
dragover: function (e, data) {
|
||||
$(".uploader-window").fadeIn( "fast");
|
||||
},
|
||||
|
|
@ -772,10 +869,20 @@ function initFolderManager(sujetId){
|
|||
success: function(result){
|
||||
var output = '';
|
||||
var draggable = result.draggable;
|
||||
var data = result.data;
|
||||
|
||||
// initialisation de la liste type vues
|
||||
var typevues = result.typevues;
|
||||
$("#typevues").find('option').remove();
|
||||
$.each(typevues, function (index, typevue) {
|
||||
$("#typevues").append('<option value="'+typevue.CODE_TYPEVUE+'">'+typevue.LIBELLE+'</option>')
|
||||
});
|
||||
|
||||
// ajout du total à la racine
|
||||
var total = result.count;
|
||||
$(".root_folder .count").html(total);
|
||||
|
||||
// construction des dossiers
|
||||
var data = result.data;
|
||||
$.each(data, function (index, item) {
|
||||
output += buildItem(item);
|
||||
});
|
||||
|
|
@ -866,6 +973,7 @@ function loadMedia(dossier_id, sujet_id){
|
|||
if(data.length == 0){
|
||||
$(window).data('noMedia', true);
|
||||
}
|
||||
var draggable = result.draggable;
|
||||
|
||||
$.each(data, function (index, item) {
|
||||
var ico = "";
|
||||
|
|
@ -897,9 +1005,9 @@ function loadMedia(dossier_id, sujet_id){
|
|||
break;
|
||||
case 5:
|
||||
ico = '<i class="fas fa-file"></i>';
|
||||
if(item.extension = "pdf"){
|
||||
thumb = item.source.split('.')[0]+"_thumb.jpg";
|
||||
preview = item.source.split('.')[0]+"_preview.jpg";
|
||||
if(item.extension == "pdf" || item.extension == "ai" || item.extension == "psd"){
|
||||
thumb = item.source.split('.')[0]+"_thumb.png";
|
||||
preview = item.source.split('.')[0]+"_preview.png";
|
||||
}else{
|
||||
itemClass = "doc";
|
||||
}
|
||||
|
|
@ -908,7 +1016,8 @@ function loadMedia(dossier_id, sujet_id){
|
|||
|
||||
}
|
||||
|
||||
output += '<div class="imageItem" data-id="'+item.id+'" data-typemedia="'+item.typemedia_id+'" data-preview="'+preview+'" data-src="'+ item.source+'" draggable="true" aria-grabbed="false">';
|
||||
output += '<div class="imageItem" data-id="'+item.id+'" data-ext="'+item.extension+'" data-typemedia="'+item.typemedia_id+'" data-preview="'+preview+'" data-src="'+ item.source+'" draggable="'+draggable+'" aria-grabbed="false">';
|
||||
output += '<div class="etiquette" style="background-color:'+item.etiquette.color+';" data-id="'+item.etiquette.etiquette_id+'" >'+item.etiquette.libelle+'<i style="color:'+item.etiquette.color+';" class="fas fa-caret-right"></i></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>';
|
||||
|
|
@ -934,6 +1043,51 @@ function loadMedia(dossier_id, sujet_id){
|
|||
});
|
||||
}
|
||||
|
||||
// ---- Supression de médias
|
||||
function removeMedias(medias){
|
||||
|
||||
if(medias.length == 0){
|
||||
$.fancyMessage({title : "Attention", message : "Veuillez sélectionner les médias à supprimer.", type : "error"});
|
||||
}else{
|
||||
$.fancyConfirm({
|
||||
title : "Suppression de média",
|
||||
message : "Êtes-vous sûr de vouloir supprimer "+medias.length+" média(s) ?",
|
||||
okButton : 'Supprimer',
|
||||
noButton : 'Annuler',
|
||||
callback : function (value) {
|
||||
if (value) {
|
||||
$.ajax({
|
||||
url: '/ajax/remove-media',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
medias: medias
|
||||
},
|
||||
success: function(result){
|
||||
$.each(medias, function (index, value) {
|
||||
$(".media_container .imageItem[data-id='"+value+"']").remove();
|
||||
});
|
||||
|
||||
// ---- MAJ du nb de média dans le dossier
|
||||
var currentFolder = $(".currentFolder").val();
|
||||
if(currentFolder == 0 || currentFolder == ""){
|
||||
var count = $(".folder_container .root_folder .count");
|
||||
}else{
|
||||
var count = $(".folder_container .dd3-item[data-id='"+currentFolder+"'] > .dd3-content .count");
|
||||
}
|
||||
count.html(parseInt(count.html())-medias.length);
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du média, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ---- contruction de l'arborescence des dossiers
|
||||
function buildItem(item) {
|
||||
var parentClass = "";
|
||||
|
|
|
|||
33
resources/sass/partials/media.scss
vendored
33
resources/sass/partials/media.scss
vendored
|
|
@ -127,6 +127,28 @@
|
|||
padding-bottom: 25px;
|
||||
cursor: pointer;
|
||||
|
||||
.etiquette{
|
||||
position: absolute;
|
||||
display: inline;
|
||||
top: 38px;
|
||||
left:0;
|
||||
z-index: 2;
|
||||
color: $white;
|
||||
padding: 2px;
|
||||
|
||||
&[data-id='0']{
|
||||
display: none;
|
||||
}
|
||||
|
||||
i{
|
||||
position: absolute;
|
||||
right: -10px;
|
||||
top: 0;
|
||||
font-size: 30px;
|
||||
line-height: 17px;
|
||||
}
|
||||
}
|
||||
|
||||
.contextMenu{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
|
|
@ -265,7 +287,7 @@
|
|||
.side_menu{
|
||||
background-color: $grey;
|
||||
position: relative;
|
||||
width: 340px;
|
||||
width: 450px;
|
||||
height: 100%;
|
||||
transition: 0.3s ease-in-out;
|
||||
z-index: 1;
|
||||
|
|
@ -298,6 +320,9 @@
|
|||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
select{
|
||||
width: 100%;
|
||||
}
|
||||
.close_side_menu{
|
||||
background-color: $grey;
|
||||
position: absolute;
|
||||
|
|
@ -484,6 +509,12 @@
|
|||
width: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
embed {
|
||||
width: 66%;
|
||||
height: 99%;
|
||||
}
|
||||
|
||||
}
|
||||
&.tab_edit{
|
||||
|
||||
|
|
|
|||
|
|
@ -9,67 +9,66 @@
|
|||
<a href="#" class="form_media_close"><i class="fal fa-times"></i></a>
|
||||
</header>
|
||||
<div class="main_content">
|
||||
<input type="hidden" class="preview_img" name="" value="">
|
||||
<div class="tab tab_preview active"></div>
|
||||
<div class="tab tab_edit">
|
||||
<div class="tab_content">
|
||||
<div class="wrapper">
|
||||
<h3>Informations générales</h3>
|
||||
<div class="row">
|
||||
<label for="codearcadia">Code Arcadia</label>
|
||||
<input type="text" value="" name="codearcadia" disabled >
|
||||
<label for="arcadia_id">Code Arcadia</label>
|
||||
<input type="text" value="" id="arcadia_id" name="arcadia_id" @if (!Auth::user()->hasRole(config('roles.const.ADMIN'))) disabled @endif >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="libelle">Intitulé <span>*</span></label>
|
||||
<input type="text" value="" name="libelle" required >
|
||||
<input type="text" value="" id="libelle" name="libelle" required >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="typesujet">Type de sujet</label>
|
||||
<input type="text" value="Visuel article" name="typesujet" disabled >
|
||||
<input id="sujetLibelle" type="text" value="" name="sujetLibelle" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="typevue">Type de vue</label>
|
||||
<select class="" name="typevue">
|
||||
<option value="">Vue de face</option>
|
||||
<label for="typevues">Type de vue</label>
|
||||
<select id="typevues" name="typevues"></select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="typemedias">Type de média</label>
|
||||
<select id="typemedias" name="typemedias" disabled>
|
||||
@foreach ($typemedias as $typemedia)
|
||||
<option value="{{$typemedia->CODE_TYPEMEDIA}}" >{{$typemedia->LIBELLE}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="typemedia">Type de média</label>
|
||||
<select class="" name="typemedia">
|
||||
<option value="">Photo</option>
|
||||
</select>
|
||||
<label for="variantes">Type de variante</label>
|
||||
<select id="variantes" name="variantes"></select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="typevariante">Type de variante</label>
|
||||
<select class="" name="typevariante">
|
||||
<option value="">Permanent</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="langue">Langue</label>
|
||||
<select class="" name="langue">
|
||||
<option value="">Français</option>
|
||||
<label for="langues">Langue</label>
|
||||
<select id="langues" name="langues">
|
||||
@foreach ($langues as $langue)
|
||||
<option value="{{$langue->langue_id}}" >{{$langue->libelle}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="commentaire">Commentaire</label>
|
||||
<textarea name="commentaire" ></textarea>
|
||||
<textarea id="commentaire" name="commentaire" ></textarea>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="version">Version</label>
|
||||
<input type="text" value="" name="version" disabled >
|
||||
<input type="text" id="version" name="version" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="datecreation">Date de création</label>
|
||||
<input type="text" value="" name="datecreation" disabled >
|
||||
<label for="created_at">Date de création</label>
|
||||
<input type="text" id="created_at" name="created_at" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="datemodification">Date de modification</label>
|
||||
<input type="text" value="" name="datemodification" disabled >
|
||||
<label for="updated_at">Date de modification</label>
|
||||
<input type="text" id="updated_at" name="updated_at" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="datepublication">Date de publication</label>
|
||||
<input type="text" value="" name="datepublication" disabled >
|
||||
<label for="published_at">Date de publication</label>
|
||||
<input type="text" id="published_at" name="published_at" disabled >
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
|
|
@ -124,9 +123,11 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="etiquette">Etiquette</label>
|
||||
<select class="" name="etiquette">
|
||||
<option value="">Validé</option>
|
||||
<label for="etiquettes">Etiquette</label>
|
||||
<select id="etiquettes" name="etiquettes">
|
||||
@foreach ($etiquettes as $etiquette)
|
||||
<option value="{{$etiquette->etiquette_id}}" >{{$etiquette->libelle}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -134,33 +135,35 @@
|
|||
<h3>Informations techniques</h3>
|
||||
<div class="row">
|
||||
<label for="extension">Extension</label>
|
||||
<input type="text" value="" name="extension" disabled >
|
||||
<input type="text" id="extension" name="extension" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="copyright">Copyright</label>
|
||||
<select class="" name="copyright">
|
||||
<option value="">Aucun</option>
|
||||
<label for="copyrights">Copyright</label>
|
||||
<select id="copyrights" name="copyrights">
|
||||
@foreach ($copyrights as $copyright)
|
||||
<option value="{{$copyright->copyright_id}}" >{{$copyright->libelle}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="largeur">Largeur</label>
|
||||
<input type="text" value="" name="largeur" >
|
||||
<input type="text" id="largeur" name="largeur" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="hauteur">Hauteur</label>
|
||||
<input type="text" value="" name="hauteur" >
|
||||
<input type="text" id="hauteur" name="hauteur" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="resolution">Résolution</label>
|
||||
<input type="text" value="" name="resolution" >
|
||||
<input type="text" id="resolution" name="resolution" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="largeurmm">Largeur en mm</label>
|
||||
<input type="text" value="" name="largeurmm" >
|
||||
<label for="largeur_mm">Largeur en mm</label>
|
||||
<input type="text" id="largeur_mm" name="largeur_mm" disabled >
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="hauteurmm">Hauteur en mm</label>
|
||||
<input type="text" value="" name="hauteurmm" >
|
||||
<label for="hauteur_mm">Hauteur en mm</label>
|
||||
<input type="text" id="hauteur_mm" name="hauteur_mm" disabled >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -53,11 +53,17 @@
|
|||
</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
|
||||
<a href="#" class="action_download_media"><i class="fas fa-file-download"></i> Télécharger</a>
|
||||
<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>
|
||||
@endif
|
||||
@if (Auth::user()->hasRole([config('roles.const.CONTRIBUTEUR'), config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]))
|
||||
<a href="#" class="action_tag_media"><i class="fas fa-tags"></i> Etiquette</a>
|
||||
@endif
|
||||
</div>
|
||||
</header>
|
||||
<div style="display:none;" class="scrollLoader"><div class="animated slideInUp"><i class="fal fa-circle-notch fa-spin"></i> Chargements des médias</div></div>
|
||||
|
|
|
|||
|
|
@ -12,10 +12,15 @@
|
|||
*/
|
||||
|
||||
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');
|
||||
|
||||
Route::get('/gestion-des-medias', 'MediaController@index')->name('media_manager');
|
||||
// Ajax pour la gestion des dossiers
|
||||
Route::post('/ajax/load-folder', 'DossierController@loadFolder');
|
||||
Route::post('/ajax/add-folder', 'DossierController@addFolder');
|
||||
Route::post('/ajax/remove-folder', 'DossierController@removeFolder');
|
||||
|
|
@ -24,12 +29,17 @@ Route::group(['middleware' => ['auth']], function(){
|
|||
Route::post('/ajax/favoris-folder', 'UserController@favorisFolder');
|
||||
Route::post('/ajax/get-folder-property', 'DossierController@getFolderProperty');
|
||||
Route::post('/ajax/save-folder-property', 'DossierController@saveFolderProperty');
|
||||
|
||||
// Ajax pour la gestion des médias
|
||||
Route::post('/ajax/load-media', 'MediaController@loadMedia');
|
||||
Route::post('/ajax/move-media', 'MediaController@moveMedia');
|
||||
Route::post('/ajax/remove-media', 'MediaController@removeMedia');
|
||||
Route::post('/ajax/get-media', 'MediaController@getOneMedia');
|
||||
|
||||
Route::get('/upload', 'UploadController@index');
|
||||
// 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');
|
||||
Route::resource('dossier', 'DossierController');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue