ldc-dam/resources/js/media.js
Jérémy Munsch 9767e62c72
Update NPM deps and webpack.mix.js
composer require ldc/web-status-checker-laravel remove Old static status checker

Fix ImportMedia

WIP commands OK

many fixes

Fix and try to optimize folder component

Fix front icons + actions based on icons

Favico

front fix alert

Fix Media upload on depot

fix folder component buttons

Full front fix with perf due tu vuejs

Download medias

Navigate within medias superfix

Move media + loader

isLocked boolean and remove media fix

Folder scroll fix

arcadia link color red

Fix panier show external

Tons of fixes back as front

REwrited all
2022-07-22 17:00:48 +02:00

243 lines
7.9 KiB
JavaScript

let methods = {
refreshDisplay() {
if (__MEDIAS.displayStatus === 'Grid') {
__MEDIAS.methods.displayGrid()
} else {
__MEDIAS.methods.displayList()
}
},
displayGrid() {
Vue.__proto__.$displayStatus = 'Grid'
__MEDIAS.displayStatus = 'Grid'
$(".action_wrapper .display .fa-table-list").parent().removeClass('selected');
$(".media_container .wrapper").removeClass('inline');
},
displayList() {
Vue.__proto__.$displayStatus = 'List'
__MEDIAS.displayStatus = 'List'
$(".action_wrapper .display .fa-table-cells").parent().removeClass('selected');
$(".media_container .wrapper").addClass('inline');
}
};
window.__MEDIAS = {
displayStatus: 'Grid',
methods: methods
}
$(document).ready(function () {
$.ajaxSetup({
headers:
{ 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
});
/***************************
Widget panier
*****************************/
if ( $( ".panier_side_menu" ).length ) {
// ---- collapse/expand panier side menu
$("#menu_panier").on('click', function(event) {
event.preventDefault();
$(".panier_side_menu .panier_menu").toggle();
});
}
/******************************
Moteur de recherche de médias
**********************************/
// ---- Initialisation du module de recherche
if ($('.search_wrapper').length) {
// ---- Initialisation des listes
$(".filter_selector .filter_btn").on('click', function (event) {
$(".filter_selector .list").not($(this).parent().find(".list")).hide();
$(this).parent().find(".list").toggle();
});
}
/******************************
Liste des dossiers
**********************************/
// ---- collapse/expand side menu
$(".close_side_menu").on('click', function(event) {
event.preventDefault();
if($(this).parents(".side_menu ").hasClass('collapse')){
$(this).parents(".side_menu ").removeClass('collapse');
$(this).find("svg").removeClass('fa-chevron-right');
$(this).find("svg").addClass('fa-chevron-left');
}else{
$(this).parents(".side_menu ").addClass('collapse');
$(this).find("svg").removeClass('fa-chevron-left');
$(this).find("svg").addClass('fa-chevron-right');
}
});
// ---- 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');
});
// ---- 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édias
**********************************/
// ---- Mode d'affichage
$(".action_wrapper .display button .fa-calendar-check").parent().addClass('selected');
$(".action_wrapper .display button").on("click", function (event) {
event.preventDefault();
const button = $(this), svg = $(this).children();
if (svg.hasClass('fa-calendar-check')) {
//toggle affichage des dates
if (!button.hasClass('selected')) {
button.addClass('selected');
$(".media_container .wrapper .date-separator").removeClass('hide');
} else {
button.removeClass('selected');
$(".media_container .wrapper .date-separator").addClass('hide');
}
} else {
if (svg.hasClass('fa-table-cells')) { // mode mosaique
if (!button.hasClass('selected')) {
button.addClass('selected')
methods.displayGrid()
}
}else{ // mode liste
if (!button.hasClass('selected')) {
button.addClass('selected')
methods.displayList()
}
}
}
});
/******************************
Edition d'un média
**********************************/
// ---- fermeture de la popup d'édition
$(".form_media_close, .btn_tab_edit_cancel").on("click" , function(event) {
event.preventDefault();
// ---- Stop la vidéo ou le son si présent
if($(".tab_preview video").length){
$(".tab_preview video").get(0).pause()
}
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) {
// TODO: remove this ?
return;
event.preventDefault();
// ---- Affiche l'onglet cliqué
var tabId = $(this).attr("data-tab");
$("#form_media .tabbtn").removeClass('active');
$(this).addClass('active')
$("#form_media .main_content .tab").removeClass('active');
$("#form_media .main_content .tab").eq(tabId).addClass('active');
$(".tab_edit .tab_content").scrollTop( 0 ); // on remonte la scrollbar de la tab edition
// ---- Stop la vidéo ou le son si présent
if($(".tab_preview video").length){
$(".tab_preview video").get(0).pause()
}
if($(".tab_preview audio").length){
$(".tab_preview audio").get(0).pause()
}
});
});
// ---- Supression de médias
function removeMedias(medias){
// Si Admin
if ($(window).data('CurrentUserRole') === 1){
var msg = "Êtes-vous sûr de vouloir supprimer "+medias.length+" média(s) ? <br> ATTENTION DES MEDIAS PEUVENT ETRE LIES AVEC ARCADIA !";
}else{
var msg = "Êtes-vous sûr de vouloir supprimer "+medias.length+" média(s) ?";
}
if(medias.length == 0){
$.fancyMessage({title : "Supprimer un média", message : "Veuillez sélectionner les médias à supprimer.", type : "info"});
}else{
$.fancyConfirm({
title : "Suppression de média",
message : msg,
okButton : 'Supprimer',
noButton : 'Annuler',
callback : function (value) {
if (value) {
$.ajax({
url: '/ajax/remove-media',
method: 'POST',
dataType : 'json',
data: {
mediaList: medias
},
success: function(result){
$.each(result, function (index, value) {
$(".media_container .imageItem[data-id='"+value+"']").remove();
});
// ---- MAJ du nb de média dans le dossier
var currentFolder = $(window).data('currentFolder');
if(currentFolder == 0 || currentFolder == ""){
var count = $(".folder_container .root_folder .count");
}else{
var count = $(".folder_container .dd3-item[data-id='"+currentFolder+"'] > .dd3-content .count");
}
count.html(parseInt(count.html())-result.length);
if(result.length != medias.length){
$.fancybox.close();
if(medias.length == 1){
$.fancyMessage({title : "Attention", message : "Ce média est lié à Arcadia. Suppression refusée. ", type : "error"});
}else{
$.fancyMessage({title : "Attention", message : "Votre sélection contient des médias liés à Arcadia. Ces médias ne seront pas supprimés.", type : "info"});
}
}
},
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"});
}
});
}
}
});
}
}