front : gestion des répertoires
This commit is contained in:
parent
b502e0f2c5
commit
4a7988567c
24 changed files with 2584 additions and 53 deletions
|
|
@ -3,9 +3,33 @@
|
|||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class Dossier extends Model
|
||||
{
|
||||
protected $with = "sousdossiers";
|
||||
protected $appends = array('favoris', 'mediacount');
|
||||
|
||||
/**
|
||||
* Get user favoris
|
||||
*/
|
||||
public function getFavorisAttribute()
|
||||
{
|
||||
$userId = Auth::user()->id;
|
||||
if($this->users()->where('id', $userId)->first()){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get media linked
|
||||
*/
|
||||
public function getMediacountAttribute()
|
||||
{
|
||||
return $this->medias()->count();
|
||||
}
|
||||
|
||||
/**
|
||||
* The marques that belong to the dossier.
|
||||
|
|
@ -23,6 +47,14 @@ class Dossier extends Model
|
|||
return $this->belongsTo('App\Sujet', 'sujet_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the dossier for the sujet.
|
||||
*/
|
||||
public function medias()
|
||||
{
|
||||
return $this->hasMany('App\Media', 'dossier_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the dossiers for the parent.
|
||||
*/
|
||||
|
|
@ -40,4 +72,16 @@ class Dossier extends Model
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* The users that belong to the dossier.
|
||||
*/
|
||||
public function users()
|
||||
{
|
||||
return $this->belongsToMany('App\User', 'dossiers_users', 'dossier_id', 'user_id');
|
||||
}
|
||||
|
||||
public static function getDossierBySujetid($sujetId)
|
||||
{
|
||||
return Dossier::where('sujet_id', $sujetId)->whereNull('parent_id')->get();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@ namespace App\Http\Controllers;
|
|||
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use App\Mail\contact;
|
||||
use App\Sujet;
|
||||
use App\User;
|
||||
use App\Mail\contact;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CommunController extends Controller
|
||||
|
|
@ -17,7 +18,8 @@ class CommunController extends Controller
|
|||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('home');
|
||||
$sujets = Auth::user()->sujets;
|
||||
return view('home')->with(['sujets'=> $sujets]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -38,15 +40,4 @@ class CommunController extends Controller
|
|||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* page gestion des médias
|
||||
*
|
||||
* @return \Illuminate\Contracts\Support\Renderable
|
||||
*/
|
||||
public function media_manager()
|
||||
{
|
||||
$sujets = Sujet::all();
|
||||
return view('media_manager')->with(['sujets'=> $sujets]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
|||
use App\Dossier;
|
||||
use App\Sujet;
|
||||
use App\Marque;
|
||||
use App\Media;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
|
|
@ -172,4 +173,151 @@ class DossierController extends Controller
|
|||
return redirect()->route('dossier.edit', ['user' => $dossier]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Chargement des dossiers
|
||||
*
|
||||
*/
|
||||
public function loadFolder(Request $request)
|
||||
{
|
||||
$response = array();
|
||||
$sujetId = $request->input('sujetId');
|
||||
$marques = Auth::user()->marques()->pluck("marque_id");
|
||||
$response['data'] = Dossier::where('sujet_id', $sujetId)
|
||||
->whereNull('parent_id')
|
||||
->whereHas("marques", function($query) use ($marques){
|
||||
$query->whereIn("marque_id", $marques);
|
||||
})->get();
|
||||
$response['count'] = Media::where('sujet_id', $sujetId)->whereNull('dossier_id')->count();
|
||||
|
||||
if(Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')] )){
|
||||
$response['draggable'] = true;
|
||||
}else{
|
||||
$response['draggable'] = false;
|
||||
}
|
||||
|
||||
return json_encode($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajouter un dossier
|
||||
*
|
||||
*/
|
||||
public function addFolder(Request $request)
|
||||
{
|
||||
$response = array();
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
||||
$parent_id = $request->input('parent_id');
|
||||
$libelle = $request->input('libelle');
|
||||
|
||||
// ---- Le dossier
|
||||
$dossier = new Dossier();
|
||||
$dossier->libelle = $libelle;
|
||||
$dossier->parent_id = $parent_id;
|
||||
$dossier->save();
|
||||
|
||||
$response['folder_id'] = $dossier->id;
|
||||
return json_encode($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* supprimer un dossier
|
||||
*
|
||||
*/
|
||||
public function removeFolder(Request $request)
|
||||
{
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
||||
$dossier_id = $request->input('dossier_id');
|
||||
|
||||
// ---- Le dossier
|
||||
$dossier = Dossier::where('id', $dossier_id)->first();
|
||||
if($dossier && !is_null($dossier->parent_id)){
|
||||
if ($dossier->delete()) {
|
||||
return json_encode(true);
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* déplacer un dossier
|
||||
*
|
||||
*/
|
||||
public function moveFolder(Request $request)
|
||||
{
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
||||
$dossier_id = $request->input('dossier_id');
|
||||
$parent_id = $request->input('parent_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()) {
|
||||
return json_encode(true);
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* renommer un dossier
|
||||
*
|
||||
*/
|
||||
public function renameFolder(Request $request)
|
||||
{
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
||||
$dossier_id = $request->input('dossier_id');
|
||||
$libelle = $request->input('libelle');
|
||||
|
||||
// ---- Le dossier
|
||||
$dossier = Dossier::where('id', $dossier_id)->first();
|
||||
if($dossier && !is_null($dossier->parent_id)){
|
||||
$dossier->libelle = $libelle;
|
||||
if ($dossier->save()) {
|
||||
return json_encode(true);
|
||||
}
|
||||
}
|
||||
return json_encode(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* get propriétés d'un dossier
|
||||
*
|
||||
*/
|
||||
public function getFolderProperty(Request $request)
|
||||
{
|
||||
$response = array();
|
||||
$dossier_id = $request->input('dossier_id');
|
||||
|
||||
// ---- Le dossier
|
||||
$dossier = Dossier::where('id', $dossier_id)->first();
|
||||
if($dossier){
|
||||
$response["data"] = $dossier;
|
||||
}
|
||||
return json_encode($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* enregistre les propriétés d'un dossier
|
||||
*
|
||||
*/
|
||||
public function saveFolderProperty(Request $request)
|
||||
{
|
||||
$dossier_id = $request->input('dossier_id');
|
||||
$libelle = $request->input('libelle');
|
||||
$description = $request->input('description');
|
||||
|
||||
// ---- Le dossier
|
||||
$dossier = Dossier::where('id', $dossier_id)->first();
|
||||
if($dossier && !is_null($dossier->parent_id) && strlen ($libelle)>3 ){
|
||||
$dossier->libelle = $libelle;
|
||||
$dossier->description = $description;
|
||||
$dossier->save();
|
||||
}
|
||||
return json_encode(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
26
app/Http/Controllers/MediaController.php
Normal file
26
app/Http/Controllers/MediaController.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Sujet;
|
||||
use App\Dossier;
|
||||
|
||||
class MediaController extends Controller
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$sujets = Sujet::all();
|
||||
return view('media_manager')->with(['sujets'=> $sujets]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
|||
use App\User;
|
||||
use App\Marque;
|
||||
use App\Sujet;
|
||||
use App\Dossier;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Adldap\Laravel\Facades\Adldap;
|
||||
|
|
@ -227,4 +228,25 @@ class UserController extends Controller
|
|||
return redirect()->route('user.edit', ['user' => $user]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ajouter un dossier en favoris
|
||||
*
|
||||
*/
|
||||
public function favorisFolder(Request $request)
|
||||
{
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]);
|
||||
$dossier_id = $request->input('dossier_id');
|
||||
$favoris = (bool) $request->input('favoris');
|
||||
|
||||
$dossierFav = Auth::user()->dossiers()->where('id', $dossier_id)->first();
|
||||
|
||||
if($favoris == false && $dossierFav){
|
||||
|
||||
Auth::user()->dossiers()->detach($dossier_id);
|
||||
}elseif ($favoris == true && !$dossierFav) {
|
||||
Auth::user()->dossiers()->attach($dossier_id);
|
||||
}
|
||||
return json_encode(true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
26
app/Media.php
Normal file
26
app/Media.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Media extends Model
|
||||
{
|
||||
protected $table = "medias";
|
||||
|
||||
/**
|
||||
* Get the dossier that owns the media.
|
||||
*/
|
||||
public function dossier()
|
||||
{
|
||||
return $this->belongsTo('App\Dossier', 'dossier_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the sujet that owns the media.
|
||||
*/
|
||||
public function sujet()
|
||||
{
|
||||
return $this->belongsTo('App\Sujet', 'sujet_id');
|
||||
}
|
||||
}
|
||||
|
|
@ -30,4 +30,12 @@ class Sujet extends Model
|
|||
{
|
||||
return $this->hasMany('App\Dossier');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the medias for the sujet.
|
||||
*/
|
||||
public function medias()
|
||||
{
|
||||
return $this->hasMany('App\Media');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
15
app/User.php
15
app/User.php
|
|
@ -53,8 +53,11 @@ class User extends Authenticatable
|
|||
* Check one role
|
||||
* @param string $role
|
||||
*/
|
||||
public function hasRole($role) {
|
||||
return $this->role == $role;
|
||||
public function hasRole($roles) {
|
||||
if (is_array($roles)) {
|
||||
return in_array($this->role, $roles);
|
||||
}
|
||||
return $this->role == $roles;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -73,6 +76,14 @@ class User extends Authenticatable
|
|||
return $this->belongsToMany('App\Marque', 'marques_users', 'user_id', 'marque_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* The dossiers that belong to the user.
|
||||
*/
|
||||
public function dossiers()
|
||||
{
|
||||
return $this->belongsToMany('App\Dossier', 'dossiers_users', 'user_id', 'dossier_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* The sujet that belong to the user.
|
||||
*/
|
||||
|
|
|
|||
589
public/css/app.css
vendored
589
public/css/app.css
vendored
|
|
@ -3659,6 +3659,266 @@ table {
|
|||
}
|
||||
}
|
||||
|
||||
.dd {
|
||||
position: relative;
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
max-width: 600px;
|
||||
list-style: none;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dd-list {
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.dd-list .dd-list {
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.dd-empty,
|
||||
.dd-item,
|
||||
.dd-placeholder {
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
min-height: 20px;
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dd-handle {
|
||||
display: block;
|
||||
height: 30px;
|
||||
margin: 5px 0;
|
||||
padding: 5px 10px;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.dd-handle:hover {
|
||||
color: #2ea8e5;
|
||||
}
|
||||
|
||||
.dd-item > button {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
float: left;
|
||||
width: 11px;
|
||||
height: 20px;
|
||||
margin: 5px 0;
|
||||
padding: 0;
|
||||
text-indent: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
border: 0;
|
||||
background: 0 0;
|
||||
font-size: 12px;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.dd-item > button:before {
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
color: white;
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
font-weight: 900;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
.dd-item > button.dd-expand:before {
|
||||
content: "\F0DA";
|
||||
}
|
||||
|
||||
.dd-item > button.dd-collapse:before {
|
||||
content: "\F0D7";
|
||||
}
|
||||
|
||||
.dd-expand {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dd-collapsed .dd-collapse,
|
||||
.dd-collapsed .dd-list {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dd-collapsed .dd-expand {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dd-empty,
|
||||
.dd-placeholder {
|
||||
margin: 0px 0;
|
||||
padding: 0;
|
||||
min-height: 30px;
|
||||
background: #3b3b3b;
|
||||
border: 1px dashed #b6bcbf;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
|
||||
.dd-empty {
|
||||
border: 1px dashed #bbb;
|
||||
min-height: 100px;
|
||||
background-size: 60px 60px;
|
||||
background-position: 0 0, 30px 30px;
|
||||
}
|
||||
|
||||
.dd-dragel {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.dd-dragel > .dd-item .dd-handle {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.dd-dragel .dd-handle {
|
||||
box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.dd-nochildren .dd-placeholder {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Nestable Draggable Handles
|
||||
*/
|
||||
|
||||
.dd3-content {
|
||||
display: block;
|
||||
height: 30px;
|
||||
margin: 0;
|
||||
padding: 5px 10px 5px 33px;
|
||||
text-decoration: none;
|
||||
color: #ffffff;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.dd3-content .count {
|
||||
float: right;
|
||||
display: inline;
|
||||
background-color: #1a1a1a;
|
||||
color: #aaaaaa;
|
||||
border-radius: 11px;
|
||||
padding: 0px 8px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.dd3-content i {
|
||||
color: #ffed4a;
|
||||
float: right;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.dd3-content i.fas {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.dd3-content i.fal {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dd3-content:hover {
|
||||
background-color: rgba(46, 168, 229, 0.2);
|
||||
}
|
||||
|
||||
.dd3-content:hover i.fal {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.dd3-content.selected,
|
||||
.dd3-content.dragged {
|
||||
color: #ffffff;
|
||||
background-color: #2ea8e5;
|
||||
}
|
||||
|
||||
.dd3-content.selected:hover,
|
||||
.dd3-content.dragged:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.dd3-content .input_rename {
|
||||
display: none;
|
||||
width: 91%;
|
||||
padding: 2px 1%;
|
||||
border-radius: 1px;
|
||||
}
|
||||
|
||||
.dd-dragel > .dd3-item > .dd3-content {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.dd3-content.renaming .input_rename {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.dd3-content.renaming span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dd3-item > button {
|
||||
margin-left: 27px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.dd3-handle {
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
left: 0;
|
||||
top: 0;
|
||||
cursor: move;
|
||||
width: 30px;
|
||||
text-indent: 30px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.dd3-handle.no-handle {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.dd3-handle:before {
|
||||
content: "\F07B";
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
font-weight: 900;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 3px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
color: #ffffff;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Font Awesome Pro 5.8.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
|
|
@ -12177,6 +12437,56 @@ readers do not read off random characters that represent icons */
|
|||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#form_folder_property {
|
||||
padding: 30px;
|
||||
min-width: 550px;
|
||||
}
|
||||
|
||||
#form_folder_property h3 {
|
||||
font-size: 14px;
|
||||
margin-bottom: 12px;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#form_folder_property hr {
|
||||
color: #24272e;
|
||||
border-bottom: 1px solid #2c2f36;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#form_folder_property p.button_bar {
|
||||
text-align: right;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#form_folder_property select,
|
||||
#form_folder_property input,
|
||||
#form_folder_property textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#form_folder_property textarea {
|
||||
margin-bottom: 20px;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
#form_folder_property .btn {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#form_folder_property .form_folder_save .fa-spinner-third {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#form_folder_property .form_folder_save.loading .fa-spinner-third {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#form_folder_property .form_folder_save.loading .fa-share {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/******************************************
|
||||
TEMPLATE
|
||||
******************************************/
|
||||
|
|
@ -12247,7 +12557,7 @@ readers do not read off random characters that represent icons */
|
|||
transform: translate(-50%, -50%);
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 560px;
|
||||
width: 700px;
|
||||
}
|
||||
|
||||
.home .search .container h1 {
|
||||
|
|
@ -12257,24 +12567,123 @@ readers do not read off random characters that represent icons */
|
|||
|
||||
.home .search .container .input_search {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.home .search .container .input_search input {
|
||||
.home .search .container .input_search::before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: none;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 0 0 1px #dfdfdf;
|
||||
content: "";
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.home .search .container .input_search input {
|
||||
width: 66%;
|
||||
font-size: 17px;
|
||||
padding: 12px 48px 12px 14px;
|
||||
padding: 12px;
|
||||
border-radius: 0;
|
||||
color: #4a4a4a;
|
||||
}
|
||||
|
||||
.home .search .container .input_search input::-webkit-input-placeholder {
|
||||
color: rgba(74, 74, 74, 0.4);
|
||||
}
|
||||
|
||||
.home .search .container .input_search input::-moz-placeholder {
|
||||
color: rgba(74, 74, 74, 0.4);
|
||||
}
|
||||
|
||||
.home .search .container .input_search input:-ms-input-placeholder {
|
||||
color: rgba(74, 74, 74, 0.4);
|
||||
}
|
||||
|
||||
.home .search .container .input_search input::-ms-input-placeholder {
|
||||
color: rgba(74, 74, 74, 0.4);
|
||||
}
|
||||
|
||||
.home .search .container .input_search input::placeholder {
|
||||
color: rgba(74, 74, 74, 0.4);
|
||||
}
|
||||
|
||||
.home .search .container .input_search button {
|
||||
border: none;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
background-color: transparent;
|
||||
color: #aaaaaa;
|
||||
width: 8%;
|
||||
background-color: #ffffff;
|
||||
border-radius: 0 3px 3px 0;
|
||||
color: #374957;
|
||||
font-size: 25px;
|
||||
padding: 8px 15px 8px 8px;
|
||||
padding: 8px;
|
||||
cursor: pointer;
|
||||
box-shadow: inset 0 0 0 1px #e3e3e3;
|
||||
}
|
||||
|
||||
.home .search .container .input_search button:hover {
|
||||
background-color: #0a6fb7;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.home .search .container .input_search .select_container {
|
||||
width: 26%;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.home .search .container .input_search .select_container::after {
|
||||
/* Le pointeur du select */
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -3px;
|
||||
right: 0.75em;
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent;
|
||||
border-top-color: #444;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.home .search .container .input_search .select_container::before {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 1px;
|
||||
height: 60%;
|
||||
-webkit-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
background-color: #dfdfdf;
|
||||
content: "";
|
||||
right: 0;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.home .search .container .input_search .select_container select {
|
||||
position: relative;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
width: 110%;
|
||||
height: auto;
|
||||
color: #4a4a4a;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 14px 48px 14px 14px;
|
||||
border-radius: 0;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
/*
|
||||
|
||||
border-radius: 3px 0 0 3px;
|
||||
border-left: 1px solid #E1E1E1;*/
|
||||
}
|
||||
|
||||
/******************************************
|
||||
|
|
@ -12605,10 +13014,74 @@ table tfoot tr {
|
|||
margin-top: 25px;
|
||||
}
|
||||
|
||||
.media_manager {
|
||||
height: calc(100% - 48px);
|
||||
}
|
||||
|
||||
.media_manager .main_content {
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .loader {
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
font-size: 20px;
|
||||
color: #ffffff;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
z-index: 50;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .imageItem {
|
||||
padding: 51px 20px;
|
||||
margin: 30px 10px;
|
||||
display: inline-block;
|
||||
border: 1px solid grey;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .imageItem[aria-grabbed=true] {
|
||||
background: #8ad;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.media_manager .main_content .media_container .imageItem:focus {
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 2px #68b, inset 0 0 0 1px #ddd;
|
||||
}
|
||||
|
||||
.media_manager [draggable] {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.media_manager .side_menu {
|
||||
background-color: #3b3b3b;
|
||||
position: relative;
|
||||
width: 340px;
|
||||
height: 100%;
|
||||
transition: 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.media_manager .side_menu.collapse {
|
||||
-webkit-transform: translateX(-100%);
|
||||
transform: translateX(-100%);
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.media_manager .side_menu::before {
|
||||
|
|
@ -12621,7 +13094,8 @@ table tfoot tr {
|
|||
}
|
||||
|
||||
.media_manager .side_menu header {
|
||||
padding-left: 12px;
|
||||
padding: 12px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.media_manager .side_menu header h1 {
|
||||
|
|
@ -12635,10 +13109,103 @@ table tfoot tr {
|
|||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.media_manager .side_menu header .close_side_menu {
|
||||
background-color: #3b3b3b;
|
||||
position: absolute;
|
||||
right: -17px;
|
||||
top: 40px;
|
||||
width: 17px;
|
||||
height: 40px;
|
||||
z-index: 2;
|
||||
border-radius: 0 3px 3px 0;
|
||||
border-top: 1px solid #505050;
|
||||
border-right: 1px solid #505050;
|
||||
border-bottom: 1px solid #505050;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container {
|
||||
background-color: #333333;
|
||||
min-height: calc(100% - 77px);
|
||||
overflow: auto;
|
||||
height: calc(100% - 129px);
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .loader {
|
||||
position: absolute;
|
||||
font-size: 20px;
|
||||
color: #ffffff;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
z-index: 50;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .loader i {
|
||||
margin-top: 232px;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .root_folder {
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
padding: 9px 11px;
|
||||
margin-top: 13px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .root_folder:hover {
|
||||
color: #2ea8e5;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .root_folder.selected,
|
||||
.media_manager .side_menu .folder_container .root_folder.dragged {
|
||||
color: #ffffff;
|
||||
background-color: #2ea8e5;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .root_folder.selected:hover,
|
||||
.media_manager .side_menu .folder_container .root_folder.dragged:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .root_folder .count {
|
||||
float: right;
|
||||
display: inline;
|
||||
background-color: #1a1a1a;
|
||||
color: #aaaaaa;
|
||||
border-radius: 11px;
|
||||
padding: 5px 8px;
|
||||
position: relative;
|
||||
top: -5px;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .folder_menu {
|
||||
width: 140px;
|
||||
box-shadow: 0 4px 5px 3px rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
display: none;
|
||||
background-color: #333333;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .folder_menu .menu-options {
|
||||
list-style: none;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .folder_menu .menu-options .menu-option {
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.media_manager .side_menu .folder_container .folder_menu .menu-options .menu-option:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
/******************************************
|
||||
|
|
|
|||
586
public/js/app.js
vendored
586
public/js/app.js
vendored
|
|
@ -10911,7 +10911,24 @@ function tableGlobalSearch(field, search, cols) {
|
|||
|
||||
try {
|
||||
window.$ = window.jQuery = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
|
||||
} catch (e) {} //confirm popup
|
||||
} catch (e) {}
|
||||
|
||||
jQuery.fn.scrollParent = function () {
|
||||
var overflowRegex = /(auto|scroll)/,
|
||||
position = this.css("position"),
|
||||
excludeStaticParent = position === "absolute",
|
||||
scrollParent = this.parents().filter(function () {
|
||||
var parent = $(this);
|
||||
|
||||
if (excludeStaticParent && parent.css("position") === "static") {
|
||||
return false;
|
||||
}
|
||||
|
||||
var overflowState = parent.css(["overflow", "overflowX", "overflowY"]);
|
||||
return overflowRegex.test(overflowState.overflow + overflowState.overflowX + overflowState.overflowY);
|
||||
}).eq(0);
|
||||
return position === "fixed" || !scrollParent.length ? $(this[0].ownerDocument || document) : scrollParent;
|
||||
}; //confirm popup
|
||||
|
||||
|
||||
$.fancyConfirm = function (opts) {
|
||||
|
|
@ -10964,10 +10981,15 @@ $(".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();
|
||||
}
|
||||
|
||||
if (!menuContextuel.is(e.target) && menuContextuel.has(e.target).length === 0) {
|
||||
menuContextuel.hide();
|
||||
}
|
||||
}); // ---- Header : Ouverture formulaire de contact
|
||||
|
||||
$(".contact_btn").on('click', function (event) {
|
||||
|
|
@ -10988,9 +11010,9 @@ $(".contact_btn").on('click', function (event) {
|
|||
}
|
||||
}
|
||||
});
|
||||
}); // ---- Header : fermeture formulaire de contact
|
||||
}); // ---- Header : fermeture de la popup
|
||||
|
||||
$(".form_contact_close").on('click', function (event) {
|
||||
$(".close_popup").on('click', function (event) {
|
||||
event.preventDefault();
|
||||
$.fancybox.getInstance().close();
|
||||
}); // ---- Header : envoi formulaire de contact
|
||||
|
|
@ -11036,6 +11058,557 @@ $(".form_contact_send").on('click', function (event) {
|
|||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/js/media.js":
|
||||
/*!*******************************!*\
|
||||
!*** ./resources/js/media.js ***!
|
||||
\*******************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
$(document).ready(function () {
|
||||
// ---- Gestion des média : init des dossiers
|
||||
if ($(".media_manager").length) {
|
||||
var sujetId = $("#sujet_selector").val();
|
||||
if (sujetId != "") initFolderManager(sujetId);
|
||||
} // ---- Gestion des média : collapse/expand side menu
|
||||
|
||||
|
||||
$(".close_side_menu").on('click', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
if ($(".side_menu ").hasClass('collapse')) {
|
||||
$(".side_menu ").removeClass('collapse');
|
||||
$(".close_side_menu i").removeClass('fa-chevron-right');
|
||||
$(".close_side_menu i").addClass('fa-chevron-left');
|
||||
} else {
|
||||
$(".side_menu ").addClass('collapse');
|
||||
$(".close_side_menu i").removeClass('fa-chevron-left');
|
||||
$(".close_side_menu i").addClass('fa-chevron-right');
|
||||
}
|
||||
}); // ---- Gestion des média : init des dossiers lorsqu'on change de sujet
|
||||
|
||||
$("#sujet_selector").on('change', function (event) {
|
||||
var sujetId = $("#sujet_selector").val();
|
||||
if (sujetId != "") $('.dd').nestable('destroy');
|
||||
initFolderManager(sujetId);
|
||||
}); // ---- Gestion des média : sélectionner un dossier et favoris
|
||||
|
||||
$(".folder_container").on('click', '.dd3-content', function (e) {
|
||||
event.preventDefault();
|
||||
var target = e.target,
|
||||
$target = $(target);
|
||||
|
||||
if ($target.hasClass('fa-star')) {
|
||||
// Gestion des favoris
|
||||
var dossier_id = $target.parents(".dd3-item").attr("data-id");
|
||||
var favoris = false;
|
||||
|
||||
if ($target.hasClass("fas")) {
|
||||
$target.removeClass("fas").addClass("fal");
|
||||
} else {
|
||||
$target.removeClass("fal").addClass("fas");
|
||||
favoris = true;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: '/ajax/favoris-folder',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id,
|
||||
favoris: favoris
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// simple sélection de dossier
|
||||
$(".folder_container .dd3-content").removeClass('selected');
|
||||
$(".folder_container .root_folder").removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
}
|
||||
}); // ---- Gestion des média : sélectionner la racine
|
||||
|
||||
$(".folder_container").on('click', '.root_folder', function (event) {
|
||||
event.preventDefault();
|
||||
$(".folder_container .dd3-content").removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
}); // ---- Gestion des média : menu contextuel des dossiers
|
||||
|
||||
$(".folder_container").on('contextmenu', '.dd3-content', function (event) {
|
||||
event.preventDefault(); // placement du menu
|
||||
|
||||
$(".folder_container .folder_menu").css({
|
||||
left: event.pageX,
|
||||
top: event.pageY - 180
|
||||
}); // memo l'id du dossier cible
|
||||
|
||||
var id = $(this).parent("li").attr("data-id");
|
||||
$(".folder_container .folder_menu").attr('data-id', id); // si c'est un dossier parent, on cache certaines options
|
||||
|
||||
if ($(this).parent("li").hasClass("parent")) {
|
||||
$(".folder_menu .renameItem, .folder_menu .removeItem").hide();
|
||||
} else {
|
||||
$(".folder_menu .renameItem, .folder_menu .removeItem").show();
|
||||
}
|
||||
|
||||
$(".folder_container .folder_menu").show();
|
||||
}); // ---- Gestion des média : ajouter un dossier
|
||||
|
||||
$(".folder_menu").on('click', '.addItem', function (event) {
|
||||
event.preventDefault();
|
||||
var parent_id = $(this).parents(".folder_menu").attr("data-id");
|
||||
$(".folder_container .folder_menu").hide();
|
||||
$(".folder_container .loader").show();
|
||||
var folder = $('.dd .dd-item[data-id="' + parent_id + '"]');
|
||||
|
||||
if (folder.parents('.dd-item').length + 1 >= 5) {
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Vous ne pouvez pas créer plus de 5 niveaux de sous-dossiers.",
|
||||
type: "info"
|
||||
});
|
||||
$(".folder_container .loader").hide();
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: '/ajax/add-folder',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
parent_id: parent_id,
|
||||
libelle: 'Nouveau dossier'
|
||||
},
|
||||
success: function success(result) {
|
||||
addItem(parent_id, result.folder_id, 'Nouveau dossier');
|
||||
$(".folder_container .loader").hide();
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de l'ajout du dossier. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}); // ---- Gestion des média : supprimer un dossier
|
||||
|
||||
$(".folder_menu").on('click', '.removeItem', function (event) {
|
||||
event.preventDefault();
|
||||
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
|
||||
$(".folder_container .folder_menu").hide();
|
||||
$(".folder_container .loader").show();
|
||||
|
||||
if (!$('.dd .dd-item[data-id="' + dossier_id + '"] > ol').length) {
|
||||
$.ajax({
|
||||
url: '/ajax/remove-folder',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id
|
||||
},
|
||||
success: function success(result) {
|
||||
// supprimer dossier
|
||||
if (result == true) {
|
||||
$('.dd').nestable('remove', dossier_id);
|
||||
} else {
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de la suppression du dossier. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
|
||||
$(".folder_container .loader").hide();
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors de la suppression du dossier. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({
|
||||
title: "Suppresion impossible",
|
||||
message: "Pour supprimer un dossier, vous devez d'abord vider son contenu (médias et sous-dossiers).",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
}); // ---- Gestion des média : renommer un dossier
|
||||
|
||||
$(".folder_menu").on('click', '.renameItem', function (event) {
|
||||
event.preventDefault();
|
||||
$(".folder_container .folder_menu").hide();
|
||||
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
|
||||
$('.dd .dd-item[data-id="' + dossier_id + '"] > .dd3-content').addClass('renaming');
|
||||
$('.renaming .input_rename').val($('.renaming span').html());
|
||||
$('.renaming .input_rename').select();
|
||||
});
|
||||
$('.folder_container').on('focusout keyup', '.renaming .input_rename', function (e) {
|
||||
if (e.type == "focusout" || e.type == "keyup" && e.keyCode == 13) {
|
||||
var libelle = $(this).val();
|
||||
var dossier_id = $(this).parents(".dd3-item").attr("data-id");
|
||||
var span = $(this).next();
|
||||
var input = $(this);
|
||||
$.ajax({
|
||||
url: '/ajax/rename-folder',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id,
|
||||
libelle: libelle
|
||||
},
|
||||
success: function success(result) {
|
||||
if (result == true) {
|
||||
span.html(input.val());
|
||||
} else {
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Le dossier n'a pas été renommé. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
|
||||
$(".renaming").removeClass('renaming');
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$(".renaming").removeClass('renaming');
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Le dossier n'a pas été renommé. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}); // ---- Gestion des média : propriétés d'un dossier
|
||||
|
||||
$(".folder_menu").on('click', '.propertyItem', function (event) {
|
||||
event.preventDefault();
|
||||
$(".folder_container .folder_menu").hide();
|
||||
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
|
||||
$.ajax({
|
||||
url: '/ajax/get-folder-property',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id
|
||||
},
|
||||
success: function success(result) {
|
||||
var dossier = result.data;
|
||||
$.fancybox.open({
|
||||
src: '#form_folder_property',
|
||||
type: 'inline',
|
||||
opts: {
|
||||
animationDuration: 350,
|
||||
animationEffect: 'material',
|
||||
beforeShow: function beforeShow(instance, current) {
|
||||
if (dossier.parent_id === null) {
|
||||
$(".form_folder_save").hide();
|
||||
} else {
|
||||
$(".form_folder_save").show();
|
||||
}
|
||||
|
||||
var date = new Date(dossier.created_at);
|
||||
$(".form_folder_datecreate").html(date.toLocaleDateString('fr-FR', {
|
||||
'hour': '2-digit',
|
||||
'minute': '2-digit'
|
||||
}));
|
||||
$("#form_folder_property").attr("data-id", dossier_id);
|
||||
$(".form_folder_libelle").val(dossier.libelle);
|
||||
$(".form_folder_description").val(dossier.description);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}); // ---- Gestion des média : enregistre les propriétés d'un dossier
|
||||
|
||||
$("html").on('click', '.form_folder_save', function (event) {
|
||||
event.preventDefault();
|
||||
var dossier_id = $("#form_folder_property").attr("data-id");
|
||||
var libelle = $(".form_folder_libelle").val();
|
||||
var description = $(".form_folder_description").val();
|
||||
$.ajax({
|
||||
url: '/ajax/save-folder-property',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id,
|
||||
libelle: libelle,
|
||||
description: description
|
||||
}
|
||||
});
|
||||
}); // ---- Gestion des média : au début du drag, set les valeurs des éléments draggés
|
||||
|
||||
$("html").on("dragstart", ".imageItem", function (event) {
|
||||
var datavalue = [];
|
||||
|
||||
if ($(this).attr("aria-grabbed") == "true") {
|
||||
$(".imageItem").each(function (index, el) {
|
||||
if ($(this).attr("aria-grabbed") == "true") {
|
||||
datavalue.push($(this).attr("data-id"));
|
||||
}
|
||||
});
|
||||
event.originalEvent.dataTransfer.setData('Text', datavalue);
|
||||
} else {
|
||||
$(".imageItem").attr("aria-grabbed", "false");
|
||||
$(this).attr("aria-grabbed", "true");
|
||||
event.originalEvent.dataTransfer.setData('Text', $(this).attr("data-id"));
|
||||
}
|
||||
}); // ---- Gestion des média : déselectionne les éléments si on clique en dehors
|
||||
|
||||
$(".main_content").on("click", function (event) {
|
||||
if (event.target !== this) return;
|
||||
$(".imageItem").attr("aria-grabbed", "false");
|
||||
}); // ---- Gestion des média : gère la sélection des éléments
|
||||
|
||||
var lastSelected;
|
||||
$("html").on("click", ".imageItem", function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
if (event.ctrlKey) {
|
||||
if ($(this).attr("aria-grabbed") == "true") {
|
||||
$(this).attr("aria-grabbed", "false");
|
||||
} else {
|
||||
$(this).attr("aria-grabbed", "true");
|
||||
}
|
||||
|
||||
lastSelected = $(this);
|
||||
} else if (event.shiftKey) {
|
||||
var select;
|
||||
|
||||
if (lastSelected == null) {
|
||||
lastSelected = $(this);
|
||||
select = true;
|
||||
} else {
|
||||
select = lastSelected.attr("aria-grabbed");
|
||||
}
|
||||
|
||||
$(".imageItem").attr("aria-grabbed", "false");
|
||||
var imageItem = $(".imageItem");
|
||||
var last = imageItem.index(lastSelected);
|
||||
var first = imageItem.index($(this));
|
||||
var start = Math.min(first, last);
|
||||
var end = Math.max(first, last);
|
||||
|
||||
for (var i = start; i <= end; i++) {
|
||||
imageItem.eq(i).attr("aria-grabbed", select);
|
||||
}
|
||||
} else {
|
||||
$(".imageItem").attr("aria-grabbed", "false");
|
||||
|
||||
if ($(this).attr("aria-grabbed") == "true") {
|
||||
$(this).attr("aria-grabbed", "false");
|
||||
} else {
|
||||
$(this).attr("aria-grabbed", "true");
|
||||
}
|
||||
|
||||
lastSelected = $(this);
|
||||
}
|
||||
}); // ---- Gestion des média : affichage des dossiers on draghover
|
||||
|
||||
$(".folder_container").on("dragover", ".dd3-content, .root_folder", function (event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
$(".folder_container .dd3-content").removeClass('dragged');
|
||||
$(".folder_container .root_folder").removeClass('dragged');
|
||||
$(this).addClass('dragged');
|
||||
}); // ---- Gestion des média : affichage des dossiers on dragleave
|
||||
|
||||
$(".folder_container").on("dragleave", ".dd3-content, .root_folder", function (event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
$(".folder_container .dd3-content").removeClass('dragged');
|
||||
$(".folder_container .root_folder").removeClass('dragged');
|
||||
}); // ---- Gestion des média : evt lorsque l'on drop des élements dans un dossier
|
||||
|
||||
$(".folder_container").on("drop", ".dd3-content, .root_folder", function (event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
$(".folder_container .dd3-content").removeClass('dragged');
|
||||
$(".folder_container .root_folder").removeClass('dragged'); // ---- Cible
|
||||
|
||||
if ($(this).hasClass("root_folder")) {
|
||||
var id = $(this).attr("data-id");
|
||||
} else {
|
||||
var id = $(this).parent("li").attr("data-id");
|
||||
}
|
||||
|
||||
console.log("Dossier cible id n°" + id); // ---- source
|
||||
|
||||
var data = event.originalEvent.dataTransfer.getData("Text");
|
||||
console.log("Id des éléments sources " + data);
|
||||
});
|
||||
}); // ---- Gestion des média : init des dossiers
|
||||
|
||||
function initFolderManager(sujetId) {
|
||||
$(".folder_container .loader").show();
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: '/ajax/load-folder',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
sujetId: sujetId
|
||||
},
|
||||
success: function success(result) {
|
||||
var output = '';
|
||||
var draggable = result.draggable;
|
||||
var data = result.data;
|
||||
var total = result.count;
|
||||
$(".root_folder .count").html(total);
|
||||
$.each(data, function (index, item) {
|
||||
output += buildItem(item);
|
||||
});
|
||||
$('.folder_container .dd .dd-list').html(output);
|
||||
$('.dd').nestable({
|
||||
scroll: true,
|
||||
onDragStart: function onDragStart(l, e) {
|
||||
if ($(e).hasClass("parent")) {
|
||||
// pour empêcher le déplacement des dossiers parents
|
||||
return false;
|
||||
}
|
||||
|
||||
return draggable;
|
||||
},
|
||||
beforeDragStop: function beforeDragStop(l, e, p) {
|
||||
// l is the main container, e is the element that was moved, p is the place where element was moved.
|
||||
if ($(p).hasClass('root')) {
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Vous ne pouvez pas déplacer un dossier à la racine.",
|
||||
type: "error"
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
var r = confirm("Etes-vous sûr d'appliquer ce déplacement ?");
|
||||
|
||||
if (r == true) {
|
||||
var dossier_id = $(e).attr("data-id");
|
||||
var parent_id = $(p).parent("li").attr("data-id");
|
||||
$(".folder_container .loader").show();
|
||||
$.ajax({
|
||||
url: '/ajax/move-folder',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
parent_id: parent_id,
|
||||
dossier_id: dossier_id
|
||||
},
|
||||
success: function success(result) {
|
||||
$(".folder_container .loader").hide();
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors du déplacement du dossier. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
$('.dd').nestable('collapseAll');
|
||||
$(".folder_container .dd-empty").remove();
|
||||
$(".folder_container .loader").hide(); //---- Chargement des médias
|
||||
|
||||
var currentFolder = $(".currentFolder").val();
|
||||
loadMedia(currentFolder);
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors du chargement des dossiers. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function loadMedia(dossier_id) {
|
||||
$(".media_container .loader").show();
|
||||
$.ajax({
|
||||
url: '/ajax/load-media',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id
|
||||
},
|
||||
success: function success(result) {
|
||||
$(".folder_container .loader").hide();
|
||||
},
|
||||
error: function error(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({
|
||||
title: "Attention",
|
||||
message: "Erreur lors du déplacement du dossier. Merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
});
|
||||
} // ---- Gestion des média : contruction de l'arborescence des dossiers
|
||||
|
||||
|
||||
function buildItem(item) {
|
||||
var parentClass = "";
|
||||
var handleClass = "";
|
||||
var favClass = "fal";
|
||||
|
||||
if (item.parent_id === null) {
|
||||
parentClass = "parent";
|
||||
handleClass = "no-handle";
|
||||
}
|
||||
|
||||
if (item.favoris == true) {
|
||||
favClass = "fas";
|
||||
}
|
||||
|
||||
var html = "<li class='dd-item dd3-item " + parentClass + " ' data-id='" + item.id + "'>";
|
||||
html += "<div class='dd-handle dd3-handle " + handleClass + "'></div>";
|
||||
html += "<div class='dd3-content'><input type='text' value='' class='input_rename' maxlength='100'/><span>" + item.libelle + "</span><div class='count'>" + item.mediacount + "</div><i class='" + favClass + " fa-star'></i></div>";
|
||||
|
||||
if (item.sousdossiers.length) {
|
||||
html += "<ol class='dd-list'>";
|
||||
$.each(item.sousdossiers, function (index, sub) {
|
||||
html += buildItem(sub);
|
||||
});
|
||||
html += "</ol>";
|
||||
}
|
||||
|
||||
html += "</li>";
|
||||
return html;
|
||||
} // ---- Gestion des média : ajouter un dossier
|
||||
|
||||
|
||||
function addItem(parent_id, item_id, content) {
|
||||
if (!$('.dd .dd-item[data-id="' + parent_id + '"] > ol').length) {
|
||||
$('.dd .dd-item[data-id="' + parent_id + '"]').append("<ol class='dd-list'></ol>");
|
||||
$('.dd .dd-item[data-id="' + parent_id + '"]').prepend("<button class='dd-collapse' data-action='collapse' type='button'>Collapse</button><button class='dd-expand' data-action='expand' type='button'>Expand</button>");
|
||||
}
|
||||
|
||||
var html = "<li class='dd-item dd3-item' data-id='" + item_id + "'>";
|
||||
html += "<div class='dd-handle dd3-handle'></div>";
|
||||
html += "<div class='dd3-content'><input type='text' value='' class='input_rename' maxlength='100' /><span>" + content + "</span><div class='count'>0</div><i class='fal fa-star'></i></div></li>";
|
||||
$('.dd .dd-item[data-id="' + parent_id + '"] > ol').append(html);
|
||||
}
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./resources/sass/app.scss":
|
||||
/*!*********************************!*\
|
||||
!*** ./resources/sass/app.scss ***!
|
||||
|
|
@ -11048,14 +11621,15 @@ $(".form_contact_send").on('click', function (event) {
|
|||
/***/ }),
|
||||
|
||||
/***/ 0:
|
||||
/*!*************************************************************************************!*\
|
||||
!*** multi ./resources/js/app.js ./resources/js/admin.js ./resources/sass/app.scss ***!
|
||||
\*************************************************************************************/
|
||||
/*!*************************************************************************************************************!*\
|
||||
!*** multi ./resources/js/app.js ./resources/js/admin.js ./resources/js/media.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");
|
||||
module.exports = __webpack_require__(/*! D:\sources\www\ldc-dam\resources\sass\app.scss */"./resources/sass/app.scss");
|
||||
|
||||
|
||||
|
|
|
|||
1
public/js/jquery.nestable.min.js
vendored
Normal file
1
public/js/jquery.nestable.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
25
resources/js/app.js
vendored
25
resources/js/app.js
vendored
|
|
@ -5,6 +5,22 @@ try {
|
|||
window.$ = window.jQuery = require('jquery')
|
||||
} catch (e) {}
|
||||
|
||||
jQuery.fn.scrollParent = function() {
|
||||
var overflowRegex = /(auto|scroll)/,
|
||||
position = this.css( "position" ),
|
||||
excludeStaticParent = position === "absolute",
|
||||
scrollParent = this.parents().filter( function() {
|
||||
var parent = $( this );
|
||||
if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
|
||||
return false;
|
||||
}
|
||||
var overflowState = parent.css(["overflow", "overflowX", "overflowY"]);
|
||||
return (overflowRegex).test( overflowState.overflow + overflowState.overflowX + overflowState.overflowY );
|
||||
}).eq( 0 );
|
||||
|
||||
return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
|
||||
};
|
||||
|
||||
//confirm popup
|
||||
$.fancyConfirm = function( opts ) {
|
||||
opts = $.extend( true, {
|
||||
|
|
@ -91,9 +107,14 @@ $(".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();
|
||||
}
|
||||
|
||||
if (!menuContextuel.is(e.target) && menuContextuel.has(e.target).length === 0) {
|
||||
menuContextuel.hide();
|
||||
}
|
||||
});
|
||||
|
||||
// ---- Header : Ouverture formulaire de contact
|
||||
|
|
@ -118,8 +139,8 @@ $(".contact_btn").on('click',function(event) {
|
|||
});
|
||||
});
|
||||
|
||||
// ---- Header : fermeture formulaire de contact
|
||||
$(".form_contact_close").on('click',function(event) {
|
||||
// ---- Header : fermeture de la popup
|
||||
$(".close_popup").on('click',function(event) {
|
||||
event.preventDefault();
|
||||
$.fancybox.getInstance().close();
|
||||
});
|
||||
|
|
|
|||
505
resources/js/media.js
vendored
Normal file
505
resources/js/media.js
vendored
Normal file
|
|
@ -0,0 +1,505 @@
|
|||
|
||||
$(document).ready(function() {
|
||||
|
||||
// ---- Gestion des média : init des dossiers
|
||||
if ( $( ".media_manager" ).length ) {
|
||||
var sujetId = $("#sujet_selector").val();
|
||||
if(sujetId != "")
|
||||
initFolderManager(sujetId);
|
||||
}
|
||||
|
||||
// ---- Gestion des média : collapse/expand side menu
|
||||
$(".close_side_menu").on('click', function(event) {
|
||||
event.preventDefault();
|
||||
if($(".side_menu ").hasClass('collapse')){
|
||||
$(".side_menu ").removeClass('collapse')
|
||||
$(".close_side_menu i").removeClass('fa-chevron-right');
|
||||
$(".close_side_menu i").addClass('fa-chevron-left');
|
||||
}else{
|
||||
$(".side_menu ").addClass('collapse');
|
||||
$(".close_side_menu i").removeClass('fa-chevron-left');
|
||||
$(".close_side_menu i").addClass('fa-chevron-right');
|
||||
}
|
||||
});
|
||||
|
||||
// ---- Gestion des média : init des dossiers lorsqu'on change de sujet
|
||||
$("#sujet_selector").on('change', function(event) {
|
||||
var sujetId = $("#sujet_selector").val();
|
||||
if(sujetId != "")
|
||||
$('.dd').nestable('destroy');
|
||||
initFolderManager(sujetId);
|
||||
});
|
||||
|
||||
|
||||
// ---- Gestion des média : sélectionner un dossier et favoris
|
||||
$(".folder_container").on('click', '.dd3-content', function(e) {
|
||||
event.preventDefault();
|
||||
var target = e.target, $target = $(target);
|
||||
if($target.hasClass('fa-star')){
|
||||
// Gestion des favoris
|
||||
var dossier_id = $target.parents(".dd3-item").attr("data-id");
|
||||
var favoris = false;
|
||||
if($target.hasClass("fas")){
|
||||
$target.removeClass("fas").addClass("fal");
|
||||
}else{
|
||||
$target.removeClass("fal").addClass("fas");
|
||||
favoris = true;
|
||||
}
|
||||
$.ajax({
|
||||
url: '/ajax/favoris-folder',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id,
|
||||
favoris: favoris,
|
||||
}
|
||||
});
|
||||
}else{
|
||||
// simple sélection de dossier
|
||||
$(".folder_container .dd3-content").removeClass('selected');
|
||||
$(".folder_container .root_folder").removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// ---- Gestion des média : sélectionner la racine
|
||||
$(".folder_container").on('click', '.root_folder', function(event) {
|
||||
event.preventDefault();
|
||||
$(".folder_container .dd3-content").removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
});
|
||||
|
||||
// ---- Gestion des média : menu contextuel des dossiers
|
||||
$(".folder_container").on('contextmenu', '.dd3-content', function(event) {
|
||||
event.preventDefault();
|
||||
// placement du menu
|
||||
$(".folder_container .folder_menu").css({
|
||||
left: event.pageX,
|
||||
top:event.pageY-180
|
||||
})
|
||||
// memo l'id du dossier cible
|
||||
var id = $(this).parent("li").attr("data-id");
|
||||
$(".folder_container .folder_menu").attr('data-id', id);
|
||||
// si c'est un dossier parent, on cache certaines options
|
||||
if($(this).parent("li").hasClass("parent")){
|
||||
$(".folder_menu .renameItem, .folder_menu .removeItem").hide();
|
||||
}else{
|
||||
$(".folder_menu .renameItem, .folder_menu .removeItem").show();
|
||||
}
|
||||
$(".folder_container .folder_menu").show();
|
||||
});
|
||||
|
||||
// ---- Gestion des média : ajouter un dossier
|
||||
$(".folder_menu").on('click', '.addItem', function(event) {
|
||||
event.preventDefault();
|
||||
var parent_id = $(this).parents(".folder_menu").attr("data-id");
|
||||
$(".folder_container .folder_menu").hide();
|
||||
$(".folder_container .loader").show();
|
||||
|
||||
var folder = $('.dd .dd-item[data-id="'+parent_id+'"]');
|
||||
if((folder.parents('.dd-item').length + 1) >= 5){
|
||||
$.fancyMessage({title : "Attention", message : "Vous ne pouvez pas créer plus de 5 niveaux de sous-dossiers.", type : "info"});
|
||||
$(".folder_container .loader").hide();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$.ajax({
|
||||
url: '/ajax/add-folder',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
parent_id: parent_id,
|
||||
libelle: 'Nouveau dossier',
|
||||
},
|
||||
success: function(result){
|
||||
addItem(parent_id, result.folder_id, 'Nouveau dossier');
|
||||
$(".folder_container .loader").hide();
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de l'ajout du dossier. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ---- Gestion des média : supprimer un dossier
|
||||
$(".folder_menu").on('click', '.removeItem', function(event) {
|
||||
event.preventDefault();
|
||||
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
|
||||
$(".folder_container .folder_menu").hide();
|
||||
$(".folder_container .loader").show();
|
||||
|
||||
if(!$('.dd .dd-item[data-id="'+dossier_id+'"] > ol').length){
|
||||
$.ajax({
|
||||
url: '/ajax/remove-folder',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id,
|
||||
},
|
||||
success: function(result){
|
||||
// supprimer dossier
|
||||
if(result == true){
|
||||
$('.dd').nestable('remove', dossier_id);
|
||||
}else{
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du dossier. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
$(".folder_container .loader").hide();
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du dossier. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({title : "Suppresion impossible", message : "Pour supprimer un dossier, vous devez d'abord vider son contenu (médias et sous-dossiers).", type : "error"});
|
||||
}
|
||||
});
|
||||
|
||||
// ---- Gestion des média : renommer un dossier
|
||||
$(".folder_menu").on('click', '.renameItem', function(event) {
|
||||
event.preventDefault();
|
||||
$(".folder_container .folder_menu").hide();
|
||||
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
|
||||
$('.dd .dd-item[data-id="'+dossier_id+'"] > .dd3-content').addClass('renaming');
|
||||
$('.renaming .input_rename').val($('.renaming span').html());
|
||||
$('.renaming .input_rename').select();
|
||||
});
|
||||
|
||||
$('.folder_container').on('focusout keyup', '.renaming .input_rename', function (e) {
|
||||
if(e.type == "focusout" || (e.type == "keyup" && e.keyCode == 13)){
|
||||
|
||||
var libelle = $(this).val();
|
||||
var dossier_id = $(this).parents(".dd3-item").attr("data-id");
|
||||
var span = $(this).next();
|
||||
var input = $(this);
|
||||
$.ajax({
|
||||
url: '/ajax/rename-folder',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id,
|
||||
libelle: libelle,
|
||||
},
|
||||
success: function(result){
|
||||
if(result == true){
|
||||
span.html(input.val());
|
||||
}else{
|
||||
$.fancyMessage({title : "Attention", message : "Le dossier n'a pas été renommé. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
$(".renaming").removeClass('renaming');
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$(".renaming").removeClass('renaming');
|
||||
$.fancyMessage({title : "Attention", message : "Le dossier n'a pas été renommé. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// ---- Gestion des média : propriétés d'un dossier
|
||||
$(".folder_menu").on('click', '.propertyItem', function(event) {
|
||||
event.preventDefault();
|
||||
$(".folder_container .folder_menu").hide();
|
||||
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
|
||||
|
||||
$.ajax({
|
||||
url: '/ajax/get-folder-property',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id,
|
||||
},
|
||||
success: function(result){
|
||||
var dossier = result.data;
|
||||
$.fancybox.open({
|
||||
src : '#form_folder_property',
|
||||
type : 'inline',
|
||||
opts : {
|
||||
animationDuration : 350,
|
||||
animationEffect : 'material',
|
||||
beforeShow : function( instance, current ) {
|
||||
if(dossier.parent_id=== null){
|
||||
$(".form_folder_save").hide();
|
||||
}else{
|
||||
$(".form_folder_save").show();
|
||||
}
|
||||
var date = new Date(dossier.created_at);
|
||||
$(".form_folder_datecreate").html(date.toLocaleDateString('fr-FR', {'hour': '2-digit', 'minute': '2-digit'} ));
|
||||
$("#form_folder_property").attr("data-id", dossier_id);
|
||||
$(".form_folder_libelle").val(dossier.libelle);
|
||||
$(".form_folder_description").val(dossier.description);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ---- Gestion des média : enregistre les propriétés d'un dossier
|
||||
$("html").on('click', '.form_folder_save', function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
var dossier_id = $("#form_folder_property").attr("data-id");
|
||||
var libelle = $(".form_folder_libelle").val();
|
||||
var description = $(".form_folder_description").val();
|
||||
|
||||
$.ajax({
|
||||
url: '/ajax/save-folder-property',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
dossier_id: dossier_id,
|
||||
libelle: libelle,
|
||||
description: description,
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ---- Gestion des média : au début du drag, set les valeurs des éléments draggés
|
||||
$("html").on("dragstart", ".imageItem", function(event) {
|
||||
var datavalue = [];
|
||||
if($(this).attr("aria-grabbed") == "true"){
|
||||
$(".imageItem").each(function(index, el) {
|
||||
if($(this).attr("aria-grabbed") == "true"){
|
||||
datavalue.push($(this).attr("data-id"));
|
||||
}
|
||||
});
|
||||
event.originalEvent.dataTransfer.setData('Text', datavalue);
|
||||
}else{
|
||||
$(".imageItem").attr("aria-grabbed", "false");
|
||||
$(this).attr("aria-grabbed", "true");
|
||||
event.originalEvent.dataTransfer.setData('Text', $(this).attr("data-id"));
|
||||
}
|
||||
});
|
||||
|
||||
// ---- Gestion des média : déselectionne les éléments si on clique en dehors
|
||||
$(".main_content").on("click", function(event) {
|
||||
if (event.target !== this) return;
|
||||
$(".imageItem").attr("aria-grabbed", "false");
|
||||
});
|
||||
|
||||
// ---- Gestion des média : gère la sélection des éléments
|
||||
var lastSelected ;
|
||||
$("html").on("click", ".imageItem", function(event) {
|
||||
event.preventDefault();
|
||||
if(event.ctrlKey){
|
||||
if($(this).attr("aria-grabbed") == "true"){
|
||||
$(this).attr("aria-grabbed", "false");
|
||||
}else{
|
||||
$(this).attr("aria-grabbed", "true");
|
||||
}
|
||||
lastSelected = $(this);
|
||||
}else if(event.shiftKey){
|
||||
var select;
|
||||
if(lastSelected == null){
|
||||
lastSelected = $(this);
|
||||
select = true
|
||||
}else{
|
||||
select = lastSelected.attr("aria-grabbed");
|
||||
}
|
||||
|
||||
$(".imageItem").attr("aria-grabbed", "false");
|
||||
var imageItem = $(".imageItem");
|
||||
var last = imageItem.index(lastSelected);
|
||||
var first = imageItem.index( $(this));
|
||||
var start = Math.min(first, last);
|
||||
var end = Math.max(first, last);
|
||||
for (var i = start; i <= end; i++) {
|
||||
imageItem.eq(i).attr("aria-grabbed", select);
|
||||
}
|
||||
}else{
|
||||
$(".imageItem").attr("aria-grabbed", "false");
|
||||
if($(this).attr("aria-grabbed") == "true"){
|
||||
$(this).attr("aria-grabbed", "false");
|
||||
}else{
|
||||
$(this).attr("aria-grabbed", "true");
|
||||
}
|
||||
lastSelected = $(this);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
// ---- Gestion des média : affichage des dossiers on draghover
|
||||
$(".folder_container").on("dragover", ".dd3-content, .root_folder", function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
$(".folder_container .dd3-content").removeClass('dragged');
|
||||
$(".folder_container .root_folder").removeClass('dragged');
|
||||
$(this).addClass('dragged');
|
||||
});
|
||||
|
||||
// ---- Gestion des média : affichage des dossiers on dragleave
|
||||
$(".folder_container").on("dragleave", ".dd3-content, .root_folder", function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
$(".folder_container .dd3-content").removeClass('dragged');
|
||||
$(".folder_container .root_folder").removeClass('dragged');
|
||||
});
|
||||
|
||||
// ---- Gestion des média : evt lorsque l'on drop des élements dans un dossier
|
||||
$(".folder_container").on("drop", ".dd3-content, .root_folder", function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
$(".folder_container .dd3-content").removeClass('dragged');
|
||||
$(".folder_container .root_folder").removeClass('dragged');
|
||||
// ---- Cible
|
||||
if($(this).hasClass("root_folder")){
|
||||
var id = $(this).attr("data-id");
|
||||
}else{
|
||||
var id = $(this).parent("li").attr("data-id");
|
||||
}
|
||||
console.log("Dossier cible id n°"+id);
|
||||
// ---- source
|
||||
var data = event.originalEvent.dataTransfer.getData("Text");
|
||||
console.log("Id des éléments sources "+data);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// ---- Gestion des média : init des dossiers
|
||||
function initFolderManager(sujetId){
|
||||
$(".folder_container .loader").show();
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: '/ajax/load-folder',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
sujetId: sujetId,
|
||||
},
|
||||
success: function(result){
|
||||
var output = '';
|
||||
var draggable = result.draggable;
|
||||
var data = result.data;
|
||||
var total = result.count;
|
||||
$(".root_folder .count").html(total);
|
||||
|
||||
$.each(data, function (index, item) {
|
||||
output += buildItem(item);
|
||||
});
|
||||
$('.folder_container .dd .dd-list').html(output);
|
||||
$('.dd').nestable({
|
||||
scroll: true,
|
||||
onDragStart: function(l,e){
|
||||
if($(e).hasClass("parent")){ // pour empêcher le déplacement des dossiers parents
|
||||
return false;
|
||||
}
|
||||
return draggable;
|
||||
},
|
||||
beforeDragStop: function(l,e, p){
|
||||
// l is the main container, e is the element that was moved, p is the place where element was moved.
|
||||
if($(p).hasClass('root')){
|
||||
$.fancyMessage({title : "Attention", message : "Vous ne pouvez pas déplacer un dossier à la racine.", type : "error"});
|
||||
return false;
|
||||
}
|
||||
var r = confirm("Etes-vous sûr d'appliquer ce déplacement ?");
|
||||
if (r == true) {
|
||||
var dossier_id = $(e).attr("data-id");
|
||||
var parent_id = $(p).parent("li").attr("data-id");
|
||||
$(".folder_container .loader").show();
|
||||
$.ajax({
|
||||
url: '/ajax/move-folder',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
parent_id : parent_id,
|
||||
dossier_id : dossier_id,
|
||||
},
|
||||
success: function(result){
|
||||
$(".folder_container .loader").hide();
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors du déplacement du dossier. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
$('.dd').nestable('collapseAll');
|
||||
$(".folder_container .dd-empty").remove();
|
||||
$(".folder_container .loader").hide();
|
||||
//---- Chargement des médias
|
||||
var currentFolder = $(".currentFolder").val();
|
||||
loadMedia(currentFolder);
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors du chargement des dossiers. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function loadMedia(dossier_id){
|
||||
$(".media_container .loader").show();
|
||||
$.ajax({
|
||||
url: '/ajax/load-media',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
dossier_id : dossier_id,
|
||||
},
|
||||
success: function(result){
|
||||
$(".folder_container .loader").hide();
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$(".folder_container .loader").hide();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors du déplacement du dossier. Merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ---- Gestion des média : contruction de l'arborescence des dossiers
|
||||
function buildItem(item) {
|
||||
var parentClass = "";
|
||||
var handleClass = "";
|
||||
var favClass="fal";
|
||||
if(item.parent_id === null){
|
||||
parentClass="parent";
|
||||
handleClass= "no-handle";
|
||||
}
|
||||
if(item.favoris == true){
|
||||
favClass="fas";
|
||||
}
|
||||
|
||||
var html = "<li class='dd-item dd3-item "+parentClass+" ' data-id='" + item.id + "'>";
|
||||
html += "<div class='dd-handle dd3-handle "+handleClass+"'></div>";
|
||||
html += "<div class='dd3-content'><input type='text' value='' class='input_rename' maxlength='100'/><span>" + item.libelle + "</span><div class='count'>" + item.mediacount + "</div><i class='"+favClass+" fa-star'></i></div>";
|
||||
|
||||
if (item.sousdossiers.length) {
|
||||
html += "<ol class='dd-list'>";
|
||||
$.each(item.sousdossiers, function (index, sub) {
|
||||
html += buildItem(sub);
|
||||
});
|
||||
html += "</ol>";
|
||||
|
||||
}
|
||||
html += "</li>";
|
||||
return html;
|
||||
}
|
||||
|
||||
// ---- Gestion des média : ajouter un dossier
|
||||
function addItem(parent_id, item_id, content){
|
||||
if(!$('.dd .dd-item[data-id="'+parent_id+'"] > ol').length){
|
||||
$('.dd .dd-item[data-id="'+parent_id+'"]').append("<ol class='dd-list'></ol>");
|
||||
$('.dd .dd-item[data-id="'+parent_id+'"]').prepend("<button class='dd-collapse' data-action='collapse' type='button'>Collapse</button><button class='dd-expand' data-action='expand' type='button'>Expand</button>");
|
||||
}
|
||||
|
||||
var html = "<li class='dd-item dd3-item' data-id='" + item_id + "'>";
|
||||
html += "<div class='dd-handle dd3-handle'></div>";
|
||||
html += "<div class='dd3-content'><input type='text' value='' class='input_rename' maxlength='100' /><span>" + content + "</span><div class='count'>0</div><i class='fal fa-star'></i></div></li>";
|
||||
$('.dd .dd-item[data-id="'+parent_id+'"] > ol').append(html);
|
||||
}
|
||||
1
resources/sass/app.scss
vendored
1
resources/sass/app.scss
vendored
|
|
@ -3,6 +3,7 @@
|
|||
@import 'partials/app_variables.scss',
|
||||
'partials/reset.scss',
|
||||
'partials/animate.scss',
|
||||
'partials/nestable.scss',
|
||||
'partials/fontawesome/fontawesome.scss',
|
||||
'partials/fontawesome/solid.scss',
|
||||
'partials/fontawesome/regular.scss',
|
||||
|
|
|
|||
139
resources/sass/partials/common.scss
vendored
139
resources/sass/partials/common.scss
vendored
|
|
@ -224,6 +224,50 @@
|
|||
}
|
||||
}
|
||||
|
||||
#form_folder_property{
|
||||
padding: 30px;
|
||||
min-width: 550px;
|
||||
|
||||
h3{
|
||||
font-size: 14px;
|
||||
margin-bottom: 12px;
|
||||
font-weight: bold;
|
||||
color: $white;
|
||||
}
|
||||
hr{
|
||||
color: #24272e;
|
||||
border-bottom: 1px solid #2c2f36;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
p.button_bar{
|
||||
text-align: right;
|
||||
margin: 0;
|
||||
}
|
||||
select, input, textarea{
|
||||
width: 100%;
|
||||
}
|
||||
textarea{
|
||||
margin-bottom: 20px;
|
||||
min-height: 200px;
|
||||
}
|
||||
.btn{
|
||||
margin-right: 10px;
|
||||
}
|
||||
.form_folder_save {
|
||||
.fa-spinner-third{
|
||||
display: none;
|
||||
}
|
||||
&.loading{
|
||||
.fa-spinner-third{
|
||||
display: inline-block;
|
||||
}
|
||||
.fa-share{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************
|
||||
TEMPLATE
|
||||
******************************************/
|
||||
|
|
@ -290,7 +334,7 @@
|
|||
transform: translate(-50%, -50%);
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 560px;
|
||||
width: 700px;
|
||||
|
||||
h1{
|
||||
color: $white;
|
||||
|
|
@ -301,23 +345,102 @@
|
|||
}
|
||||
.input_search{
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
position: relative;
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: none;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 0 0 1px #dfdfdf;
|
||||
content: "";
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
input{
|
||||
width: 100%;
|
||||
width: 66%;
|
||||
font-size: 17px;
|
||||
padding: 12px 48px 12px 14px;
|
||||
padding: 12px;
|
||||
border-radius: 0;
|
||||
color: #4a4a4a;
|
||||
|
||||
&::placeholder{
|
||||
color: rgba(74,74,74,.4);
|
||||
}
|
||||
}
|
||||
button{
|
||||
border: none;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
background-color: transparent;
|
||||
color: $grey2;
|
||||
width: 8%;
|
||||
background-color: $white;
|
||||
border-radius: 0 3px 3px 0;
|
||||
color: #374957;
|
||||
font-size: 25px;
|
||||
padding: 8px 15px 8px 8px;
|
||||
padding: 8px;
|
||||
cursor: pointer;
|
||||
box-shadow: inset 0 0 0 1px #e3e3e3;
|
||||
|
||||
&:hover{
|
||||
background-color: $blue;
|
||||
color:$white;
|
||||
}
|
||||
}
|
||||
.select_container{
|
||||
width: 26%;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
&::after {
|
||||
/* Le pointeur du select */
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -3px;
|
||||
right: .75em;
|
||||
display: block;
|
||||
width: 0; height: 0;
|
||||
border-color: transparent;
|
||||
border-top-color: #444;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 1px;
|
||||
height: 60%;
|
||||
transform: translateY(-50%);
|
||||
background-color: #dfdfdf;
|
||||
content: "";
|
||||
right:0;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
select{
|
||||
position: relative;
|
||||
appearance: none;
|
||||
width: 110%;
|
||||
height: auto;
|
||||
color: #4a4a4a;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 14px 48px 14px 14px;
|
||||
border-radius: 0;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
/*
|
||||
|
||||
border-radius: 3px 0 0 3px;
|
||||
border-left: 1px solid #E1E1E1;*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
151
resources/sass/partials/media.scss
vendored
151
resources/sass/partials/media.scss
vendored
|
|
@ -1,11 +1,67 @@
|
|||
|
||||
|
||||
.media_manager{
|
||||
height: calc(100% - 48px);
|
||||
|
||||
.main_content{
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
|
||||
.media_container{
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
|
||||
|
||||
.loader{
|
||||
position: sticky;
|
||||
font-size: 20px;
|
||||
color: $white;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
z-index: 50;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.imageItem{
|
||||
padding: 51px 20px;
|
||||
margin: 30px 10px;
|
||||
display: inline-block;
|
||||
border: 1px solid grey;
|
||||
|
||||
&[aria-grabbed="true"] {
|
||||
background: #8ad;
|
||||
color: #fff;
|
||||
}
|
||||
&:focus {
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 2px #68b, inset 0 0 0 1px #ddd;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[draggable] {
|
||||
user-select: none;
|
||||
}
|
||||
.side_menu{
|
||||
background-color: $grey;
|
||||
position: relative;
|
||||
width: 340px;
|
||||
height: 100%;
|
||||
transition: 0.3s ease-in-out;
|
||||
|
||||
&.collapse{
|
||||
transform: translateX(-100%);
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
&::before{
|
||||
content: '';
|
||||
|
|
@ -17,7 +73,8 @@
|
|||
}
|
||||
|
||||
header{
|
||||
padding-left: 12px;
|
||||
padding: 12px;
|
||||
position: relative;
|
||||
|
||||
h1{
|
||||
font-size: 19px;
|
||||
|
|
@ -29,11 +86,99 @@
|
|||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
.close_side_menu{
|
||||
background-color: $grey;
|
||||
position: absolute;
|
||||
right: -17px;
|
||||
top: 40px;
|
||||
width: 17px;
|
||||
height: 40px;
|
||||
z-index: 2;
|
||||
border-radius : 0 3px 3px 0;
|
||||
border-top: 1px solid #505050;
|
||||
border-right: 1px solid #505050;
|
||||
border-bottom: 1px solid #505050;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
|
||||
}
|
||||
}
|
||||
.folder_container{
|
||||
background-color: $grey3;
|
||||
min-height: calc(100% - 77px);
|
||||
overflow: auto;
|
||||
height: calc(100% - 129px);
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
|
||||
.loader{
|
||||
position: absolute;
|
||||
font-size: 20px;
|
||||
color: $white;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
z-index: 50;
|
||||
text-align: center;
|
||||
i{
|
||||
margin-top: 232px;
|
||||
}
|
||||
}
|
||||
.root_folder{
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
padding: 9px 11px;
|
||||
margin-top: 13px;
|
||||
font-size: 12px;
|
||||
|
||||
&:hover {
|
||||
color: #2ea8e5;
|
||||
}
|
||||
|
||||
&.selected, &.dragged{
|
||||
color:$white;
|
||||
background-color: #2ea8e5;
|
||||
|
||||
&:hover {
|
||||
color:$white;
|
||||
}
|
||||
}
|
||||
.count{
|
||||
float: right;
|
||||
display: inline;
|
||||
background-color: $dark;
|
||||
color: $grey2;
|
||||
border-radius: 11px;
|
||||
padding: 5px 8px;
|
||||
position: relative;
|
||||
top: -5px;
|
||||
}
|
||||
}
|
||||
.folder_menu {
|
||||
width: 140px;
|
||||
box-shadow: 0 4px 5px 3px rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
display: none;
|
||||
background-color: $grey3;
|
||||
z-index: 1;
|
||||
|
||||
.menu-options {
|
||||
list-style: none;
|
||||
padding: 10px 0;
|
||||
|
||||
.menu-option {
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
258
resources/sass/partials/nestable.scss
vendored
Normal file
258
resources/sass/partials/nestable.scss
vendored
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
.dd {
|
||||
position: relative;
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
max-width: 600px;
|
||||
list-style: none;
|
||||
font-size: 13px;
|
||||
line-height: 20px
|
||||
}
|
||||
|
||||
.dd-list {
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none
|
||||
}
|
||||
|
||||
.dd-list .dd-list {
|
||||
padding-left: 30px
|
||||
}
|
||||
|
||||
.dd-empty,
|
||||
.dd-item,
|
||||
.dd-placeholder {
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
min-height: 20px;
|
||||
font-size: 12px;
|
||||
line-height: 20px
|
||||
}
|
||||
|
||||
.dd-handle {
|
||||
display: block;
|
||||
height: 30px;
|
||||
margin: 5px 0;
|
||||
padding: 5px 10px;
|
||||
color: $white;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box
|
||||
}
|
||||
|
||||
.dd-handle:hover {
|
||||
color: #2ea8e5;
|
||||
}
|
||||
|
||||
.dd-item>button {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
float: left;
|
||||
width: 11px;
|
||||
height: 20px;
|
||||
margin: 5px 0;
|
||||
padding: 0;
|
||||
text-indent: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
border: 0;
|
||||
background: 0 0;
|
||||
font-size: 12px;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
font-weight: 700
|
||||
}
|
||||
|
||||
.dd-item>button:before {
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
color: white;
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
font-weight: 900;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
.dd-item>button.dd-expand:before {
|
||||
content: '\f0da'
|
||||
}
|
||||
|
||||
.dd-item>button.dd-collapse:before {
|
||||
content: '\f0d7'
|
||||
}
|
||||
|
||||
.dd-expand {
|
||||
display: none
|
||||
}
|
||||
|
||||
.dd-collapsed .dd-collapse,
|
||||
.dd-collapsed .dd-list {
|
||||
display: none
|
||||
}
|
||||
|
||||
.dd-collapsed .dd-expand {
|
||||
display: block
|
||||
}
|
||||
|
||||
.dd-empty,
|
||||
.dd-placeholder {
|
||||
margin: 0px 0;
|
||||
padding: 0;
|
||||
min-height: 30px;
|
||||
background: $grey;
|
||||
border: 1px dashed #b6bcbf;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box
|
||||
}
|
||||
|
||||
.dd-empty {
|
||||
border: 1px dashed #bbb;
|
||||
min-height: 100px;
|
||||
background-size: 60px 60px;
|
||||
background-position: 0 0, 30px 30px
|
||||
}
|
||||
|
||||
.dd-dragel {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
z-index: 9999
|
||||
}
|
||||
|
||||
.dd-dragel>.dd-item .dd-handle {
|
||||
margin-top: 0
|
||||
}
|
||||
|
||||
.dd-dragel .dd-handle {
|
||||
box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, .1)
|
||||
}
|
||||
|
||||
.dd-nochildren .dd-placeholder {
|
||||
display: none
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Nestable Draggable Handles
|
||||
*/
|
||||
|
||||
.dd3-content {
|
||||
display: block;
|
||||
height: 30px;
|
||||
margin: 0;
|
||||
padding: 5px 10px 5px 33px;
|
||||
text-decoration: none;
|
||||
color: $white;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
|
||||
.count{
|
||||
float: right;
|
||||
display: inline;
|
||||
background-color: $dark;
|
||||
color: $grey2;
|
||||
border-radius: 11px;
|
||||
padding: 0px 8px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
i{
|
||||
color: $yellow;
|
||||
float: right;
|
||||
padding: 3px;
|
||||
|
||||
&.fas{
|
||||
display: inline-block;
|
||||
}
|
||||
&.fal{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: rgba(46, 168, 229,0.2);
|
||||
|
||||
i.fal{
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
}
|
||||
&.selected, &.dragged{
|
||||
color:$white;
|
||||
background-color: #2ea8e5;
|
||||
|
||||
&:hover {
|
||||
color:$white;
|
||||
}
|
||||
}
|
||||
.input_rename{
|
||||
display: none;
|
||||
width: 91%;
|
||||
padding: 2px 1%;
|
||||
border-radius: 1px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.dd-dragel > .dd3-item > .dd3-content {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.dd3-content.renaming{
|
||||
.input_rename{
|
||||
display: inline-block;
|
||||
}
|
||||
span{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.dd3-item > button {
|
||||
margin-left: 27px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.dd3-handle {
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
left: 0;
|
||||
top: 0;
|
||||
cursor: move;
|
||||
width: 30px;
|
||||
text-indent: 30px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
|
||||
&.no-handle{
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
|
||||
.dd3-handle:before {
|
||||
content: '\f07b';
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
font-weight: 900;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 3px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
color: $white;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
@method('POST')
|
||||
<div class="form-field">
|
||||
{!! Form::label('libelle', 'Libellé') !!}
|
||||
{!! Form::text('libelle', null, ['required']) !!}
|
||||
{!! Form::text('libelle', null, ['required', 'maxlength' => '100' , 'minlength' => '4']) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('description', 'Description') !!}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
@method('PUT')
|
||||
<div class="form-field">
|
||||
{!! Form::label('libelle', 'Libellé') !!}
|
||||
{!! Form::text('libelle', $dossier->libelle, ['required']) !!}
|
||||
{!! Form::text('libelle', $dossier->libelle, ['required' , 'maxlength' => '100' , 'minlength' => '4']) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('description', 'Description') !!}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,12 @@
|
|||
<div class="container">
|
||||
<h1><i class="fas fa-images"></i> Bienvenue</h1>
|
||||
<form class="input_search" action="{{ route('media_manager') }}" method="get">
|
||||
<input type="text" name="s" value="" placeholder="Rechercher un média...">
|
||||
<div class="select_container"><select name="t" >
|
||||
@foreach ($sujets as $sujet)
|
||||
<option value="{{$sujet->CODE_SUJET}}" >{{$sujet->LIBELLE}}</option>
|
||||
@endforeach
|
||||
</select></div>
|
||||
<input type="text" name="s" value="" autofocus placeholder="Rechercher un média...">
|
||||
<button type="submit"><i class="far fa-search"></i></button>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
</p>
|
||||
<hr/>
|
||||
<p class="button_bar">
|
||||
<a href="#" class="btn form_contact_send btn-square"><i class="fal fa-spinner-third fa-spin"></i><i class="fas fa-share"></i> Envoyer</a><a href="#" class="btn form_contact_close btn-black btn-square">Annuler</a>
|
||||
<a href="#" class="btn form_contact_send btn-square"><i class="fal fa-spinner-third fa-spin"></i><i class="fas fa-share"></i> Envoyer</a><a href="#" class="btn close_popup btn-black btn-square">Annuler</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,12 +5,55 @@
|
|||
<div class="side_menu">
|
||||
<header>
|
||||
<h1><i class="fas fa-images"></i> Gestion des médias</h1>
|
||||
<select id="sujet_selector" >
|
||||
@foreach ($sujets as $sujet)
|
||||
<option value="{{$sujet->CODE_SUJET}}" >{{$sujet->LIBELLE}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<input type="hidden" class="currentFolder" value="0">
|
||||
<div class="close_side_menu"><i class="fas fa-chevron-left"></i></div>
|
||||
</header>
|
||||
<div class="folder_container">
|
||||
|
||||
<div style="display:none;" class="loader">
|
||||
<i class="fal fa-circle-notch fa-spin"></i>
|
||||
</div>
|
||||
<div class="folder_menu" data-id="">
|
||||
<ul class="menu-options">
|
||||
<li class="menu-option propertyItem">Propriétés</li>
|
||||
@if (Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]))
|
||||
<li class="menu-option renameItem">Renommer</li>
|
||||
<li class="menu-option removeItem">Supprimer</li>
|
||||
<li class="menu-option addItem">Ajouter un dossier</li>
|
||||
@endif
|
||||
</ul>
|
||||
</div>
|
||||
<a href="#" class="root_folder" data-id="0">/racine <span class="count"></span></a>
|
||||
<div class="dd">
|
||||
<ol class="dd-list dd3-list root">
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_content">
|
||||
</div>
|
||||
<div class="media_container">
|
||||
<div style="display:none;" class="loader"><i class="fal fa-circle-notch fa-spin"></i></div>
|
||||
<a class="imageItem" data-id="1" href="#" draggable="true" aria-grabbed="false">Mon image</a>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div id="form_folder_property" style="display: none;" data-id="" >
|
||||
<h3>Propriétés du dossier</h3>
|
||||
<hr/>
|
||||
<p><input required type="text" class="form_folder_libelle" value="" maxlength="100" minlength="4" placeholder="Libellé du dossier" /></p>
|
||||
<p><textarea class="form_folder_description" placeholder="Description du dossier"></textarea></p>
|
||||
<p>Créé le : <span class="form_folder_datecreate"></span></p>
|
||||
<hr/>
|
||||
<p class="button_bar">
|
||||
<a href="#" class="btn form_folder_save btn-square"><i class="fal fa-spinner-third fa-spin"></i><i class="fas fa-share"></i> Enregistrer</a><a href="#" class="btn close_popup btn-black btn-square">Fermer</a>
|
||||
</p>
|
||||
</div>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/jquery.nestable.min.js') }}" defer></script>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -14,7 +14,18 @@
|
|||
Route::group(['middleware' => ['auth']], function(){
|
||||
Route::get('/', 'CommunController@index')->name('home');
|
||||
Route::post('/send-message', 'CommunController@sendMessage');
|
||||
Route::get('/gestion-des-medias', 'CommunController@media_manager')->name('media_manager');
|
||||
|
||||
Route::get('/gestion-des-medias', 'MediaController@index')->name('media_manager');
|
||||
Route::post('/ajax/load-folder', 'DossierController@loadFolder');
|
||||
Route::post('/ajax/add-folder', 'DossierController@addFolder');
|
||||
Route::post('/ajax/remove-folder', 'DossierController@removeFolder');
|
||||
Route::post('/ajax/move-folder', 'DossierController@moveFolder');
|
||||
Route::post('/ajax/rename-folder', 'DossierController@renameFolder');
|
||||
Route::post('/ajax/favoris-folder', 'UserController@favorisFolder');
|
||||
Route::post('/ajax/get-folder-property', 'DossierController@getFolderProperty');
|
||||
Route::post('/ajax/save-folder-property', 'DossierController@saveFolderProperty');
|
||||
Route::post('/ajax/load-media', 'MediaController@loadMedia');
|
||||
|
||||
Route::resource('user', 'UserController');
|
||||
Route::post('/check-matricule', 'UserController@checkMatricule');
|
||||
Route::resource('dossier', 'DossierController');
|
||||
|
|
|
|||
3
webpack.mix.js
vendored
3
webpack.mix.js
vendored
|
|
@ -13,6 +13,7 @@ const mix = require('laravel-mix');
|
|||
|
||||
mix.js([
|
||||
'resources/js/app.js',
|
||||
'resources/js/admin.js'
|
||||
'resources/js/admin.js',
|
||||
'resources/js/media.js'
|
||||
], 'public/js/app.js')
|
||||
.sass('resources/sass/app.scss', 'public/css');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue