- Add duplicateMedia
This commit is contained in:
parent
9ad02ead8c
commit
ee2fe4676c
5 changed files with 196 additions and 3 deletions
|
|
@ -863,6 +863,82 @@ class MediaController extends Controller
|
|||
return json_encode($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Duplique un média sans l'image
|
||||
*/
|
||||
|
||||
public function duplicateMedia(Request $request)
|
||||
{
|
||||
Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR'), config('roles.const.CONTRIBUTEUR')]);
|
||||
$media_id = $request->input('media_id');
|
||||
|
||||
$media = Media::where('id', $media_id)->first();
|
||||
if ($media){
|
||||
if ($media->isLocked === 1){
|
||||
return json_encode(array('status' => false, 'error' => "Le média est en attente d'un retour d'Arcadia."));
|
||||
}
|
||||
|
||||
$n = $media->replicate();
|
||||
$n->push();
|
||||
|
||||
foreach ($media->articles as $article) {
|
||||
$n->articles()->attach($article);
|
||||
}
|
||||
|
||||
foreach ($media->marques as $marque) {
|
||||
$n->marques()->attach($marque);
|
||||
}
|
||||
|
||||
foreach ($media->societes as $societe) {
|
||||
$n->societes()->attach($societe);
|
||||
}
|
||||
|
||||
foreach ($media->tags as $tag) {
|
||||
$n->tags()->attach($tag);
|
||||
}
|
||||
|
||||
$destinationPath = $this->get_mediaFolder() . "/";
|
||||
$uid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff));
|
||||
$filename = $uid . ".jpg";
|
||||
Storage::copy("images/default.jpg", $destinationPath . $filename);
|
||||
|
||||
$n->arcadia_id = NULL;
|
||||
$n->libelle = $n->libelle . '_copy';
|
||||
$n->folder = $destinationPath;
|
||||
$n->uid = $uid;
|
||||
$n->extension = 'jpg';
|
||||
$n->taille = $this->formatBytes($this->get_file_size($destinationPath . $filename));
|
||||
|
||||
$im = new \imagick($destinationPath . $filename);
|
||||
$resolutions = $im->getImageResolution();
|
||||
$n->resolution = round($resolutions['x'] * 2.54, 2);
|
||||
$imageprops = $im->getImageGeometry();
|
||||
$n->largeur = $imageprops['width'];
|
||||
$n->hauteur = $imageprops['height'];
|
||||
$n->largeur_mm = ceil(($n->largeur * 2.54 / $n->resolution) * 10);
|
||||
$n->hauteur_mm = ceil(($n->hauteur * 2.54 / $n->resolution) * 10);
|
||||
|
||||
$n->duree = '';
|
||||
$n->version = 1;
|
||||
$n->isDefault = 1;
|
||||
$n->statut = 0;
|
||||
$n->created_at = NOW();
|
||||
$n->updated_at = NOW();
|
||||
$n->created_by = Auth::user()->id;
|
||||
$n->save();
|
||||
|
||||
// ---- Creation des vignettes de base
|
||||
$this->create_sys_thumb($n);
|
||||
// ---- Creation des vignettes en lien avec le sujet du média
|
||||
$this->create_thumb($n);
|
||||
|
||||
$media = Media::find($n->id);
|
||||
$media->addToIndex();
|
||||
|
||||
return json_encode(array('status' => true, 'sujet_id' => $media->sujet_id, 'datas' => $media));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sauvegarde toutes les informations d'un média
|
||||
*
|
||||
|
|
|
|||
63
public/js/app.js
vendored
63
public/js/app.js
vendored
|
|
@ -12340,6 +12340,62 @@ $(document).ready(function () {
|
|||
}
|
||||
}).trigger("click");
|
||||
}
|
||||
});
|
||||
$('.action_duplicate_media').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
var medias = [];
|
||||
$('.media_container .imageItem').each(function (index) {
|
||||
if ($(this).attr("aria-grabbed") === "true") {
|
||||
medias.push($(this).attr("data-id"));
|
||||
}
|
||||
});
|
||||
|
||||
if (medias.length === 0) {
|
||||
$.fancyMessage({
|
||||
title: "Dupliquer un média",
|
||||
message: "Veuillez sélectionner un média.",
|
||||
type: "info"
|
||||
});
|
||||
} else if (medias.length > 1) {
|
||||
$.fancyMessage({
|
||||
title: "Dupliquer un média",
|
||||
message: "Vous ne pouvez dupliquer qu'un média à la fois.",
|
||||
type: "info"
|
||||
});
|
||||
} else {
|
||||
$(".media_container .loader").show();
|
||||
$.ajax({
|
||||
url: '/ajax/duplicate-media',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
media_id: medias[0]
|
||||
},
|
||||
success: function success(result) {
|
||||
if (result.status === true) {
|
||||
openEditor({
|
||||
id: result.datas.id,
|
||||
preview: result.datas.folder + result.datas.uid + "_preview." + result.datas.extension,
|
||||
src: result.datas.folder + result.datas.uid + "." + result.datas.extension,
|
||||
depot: 0,
|
||||
typemedia: result.datas.typemedia_id,
|
||||
ext: result.datas.extension
|
||||
}, drPlugin, viewer);
|
||||
$("#form_media .form_media_edit").trigger("click"); // On replace l'offset pour recharger
|
||||
|
||||
$(window).data('offset', $(window).data('offset') - $(window).data('limit'));
|
||||
loadMedia(result.sujet_id);
|
||||
$(".media_container .loader").hide();
|
||||
} else {
|
||||
$.fancyMessage({
|
||||
title: "Dupliquer un média",
|
||||
message: result.error,
|
||||
type: "error"
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}); // ---- Bouton pour remplacer un média par un autre
|
||||
|
||||
$('.form_media_replace').on('click', function (event) {
|
||||
|
|
@ -13267,6 +13323,7 @@ window.create_UUID = function () {
|
|||
};
|
||||
|
||||
window.openEditor = function (obj, drPlugin, viewer) {
|
||||
var tab = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
||||
console.log("openEditor Called"); // si le plugin de retouche a déjà été chargé
|
||||
|
||||
if (drPlugin != null) {
|
||||
|
|
@ -13575,7 +13632,11 @@ window.openEditor = function (obj, drPlugin, viewer) {
|
|||
$linkItem.find('.link_libelle').html(vignette.libelle + " " + vignette.extension + " " + vignette.resolution);
|
||||
$linkItem.find('.link_input input').val(vignette.url);
|
||||
$(".tab_links .table_links tbody").append($linkItem);
|
||||
}); // affiche la popin
|
||||
});
|
||||
/*if (tab && tab == 'edit'){
|
||||
$("#form_media .form_media_edit").trigger("click");
|
||||
}*/
|
||||
// affiche la popin
|
||||
|
||||
$("#form_media").fadeIn('fast');
|
||||
},
|
||||
|
|
|
|||
54
resources/js/media.js
vendored
54
resources/js/media.js
vendored
|
|
@ -911,6 +911,53 @@ $(document).ready(function() {
|
|||
}
|
||||
});
|
||||
|
||||
$('.action_duplicate_media').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
let medias = [];
|
||||
$('.media_container .imageItem').each(function (index) {
|
||||
if( $(this ).attr("aria-grabbed") === "true" ){
|
||||
medias.push($(this ).attr("data-id"));
|
||||
}
|
||||
});
|
||||
|
||||
if (medias.length === 0){
|
||||
$.fancyMessage({title : "Dupliquer un média", message : "Veuillez sélectionner un média.", type : "info"});
|
||||
}else if(medias.length > 1){
|
||||
$.fancyMessage({title : "Dupliquer un média", message : "Vous ne pouvez dupliquer qu'un média à la fois.", type : "info"});
|
||||
}else{
|
||||
$(".media_container .loader").show();
|
||||
$.ajax({
|
||||
url: '/ajax/duplicate-media',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
media_id : medias[0],
|
||||
},
|
||||
success: function(result){
|
||||
if (result.status === true){
|
||||
openEditor({
|
||||
id: result.datas.id,
|
||||
preview: result.datas.folder + result.datas.uid + "_preview." + result.datas.extension,
|
||||
src: result.datas.folder + result.datas.uid + "." + result.datas.extension,
|
||||
depot: 0,
|
||||
typemedia: result.datas.typemedia_id,
|
||||
ext: result.datas.extension,
|
||||
}, drPlugin, viewer);
|
||||
$("#form_media .form_media_edit").trigger("click");
|
||||
// On replace l'offset pour recharger
|
||||
$(window).data('offset', $(window).data('offset')-$(window).data('limit'));
|
||||
loadMedia(result.sujet_id);
|
||||
$(".media_container .loader").hide();
|
||||
}else{
|
||||
$.fancyMessage({title : "Dupliquer un média", message : result.error, type : "error"});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// ---- Bouton pour remplacer un média par un autre
|
||||
$('.form_media_replace').on('click',function(event){
|
||||
event.preventDefault();
|
||||
|
|
@ -1782,7 +1829,7 @@ window.create_UUID = function(){
|
|||
return uuid;
|
||||
}
|
||||
|
||||
window.openEditor = function (obj, drPlugin, viewer) {
|
||||
window.openEditor = function (obj, drPlugin, viewer, tab = false) {
|
||||
console.log("openEditor Called");
|
||||
|
||||
// si le plugin de retouche a déjà été chargé
|
||||
|
|
@ -1826,6 +1873,7 @@ window.openEditor = function (obj, drPlugin, viewer) {
|
|||
|
||||
// Mémorise le média courant
|
||||
$(window).data('current_edit_media', obj.id);
|
||||
|
||||
// sélectionne la tab preview à l'ouverture
|
||||
$("#form_media .form_media_preview").trigger("click");
|
||||
|
||||
|
|
@ -2070,6 +2118,10 @@ window.openEditor = function (obj, drPlugin, viewer) {
|
|||
$(".tab_links .table_links tbody").append($linkItem);
|
||||
});
|
||||
|
||||
/*if (tab && tab == 'edit'){
|
||||
$("#form_media .form_media_edit").trigger("click");
|
||||
}*/
|
||||
|
||||
// affiche la popin
|
||||
$("#form_media").fadeIn('fast');
|
||||
},
|
||||
|
|
|
|||
|
|
@ -93,6 +93,9 @@
|
|||
@if (Auth::user()->hasRole([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]))
|
||||
<a href="#" class="action_delete_media"><i class="fas fa-trash-alt"></i> Supprimer</a>
|
||||
@endif
|
||||
@if (Auth::user()->hasRole([config('roles.const.CONTRIBUTEUR'), config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]))
|
||||
<a href="#" class="action_duplicate_media"><i class="far fa-copy"></i> Dupliquer</a>
|
||||
@endif
|
||||
<!--
|
||||
@if (Auth::user()->hasRole([config('roles.const.CONTRIBUTEUR'), config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]))
|
||||
<a href="#" class="action_tag_media"><i class="fas fa-tags"></i> Etiquette</a>
|
||||
|
|
@ -109,7 +112,7 @@
|
|||
<option value="created_at" data-order="asc" >Date de création ▲</option>
|
||||
<option value="created_at" data-order="desc" >Date de création ▼</option>
|
||||
<option value="updated_at" data-order="asc" >Date de modification ▲</option>
|
||||
<option value="updated_at" data-order="desc" >Date de modification ▼</option>
|
||||
<option value="updated_at" data-order="desc" selected>Date de modification ▼</option>
|
||||
<option value="libelle.keyword" data-order="asc" >Libellé ▲</option>
|
||||
<option value="libelle.keyword" data-order="desc" >Libellé ▼</option>
|
||||
<option value="version" data-order="asc" >Version ▲</option>
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ Route::group(['middleware' => ['auth']], function(){
|
|||
Route::post('/ajax/recover-media', 'MediaController@recoverMedia');
|
||||
Route::post('/ajax/get-media', 'MediaController@getOneMedia');
|
||||
Route::post('/ajax/save-media', 'MediaController@saveMedia');
|
||||
Route::post('/ajax/duplicate-media', 'MediaController@duplicateMedia');
|
||||
Route::post('/ajax/apply-sticker', 'MediaController@applySticker');
|
||||
Route::post('/ajax/edit-photo', 'MediaController@editPhoto');
|
||||
Route::post('/ajax/set-id-arcadia', 'MediaController@setIdArcdadia');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue