From: soufiane Date: Wed, 27 Dec 2023 17:17:30 +0000 (+0100) Subject: wait #6482 @7:00 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=9c06027e59aced90518907f6024be89ed62af8fb;p=fluidbook-toolbox.git wait #6482 @7:00 --- diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php index fa2566bab..a5fa018dc 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -301,72 +301,58 @@ trait LinksOperation $fluidbookId = $request->id; $token = $request->token; $userId = backpack_user()->id; - $counter = $request->counter; - $tabClosed = $request->tabClosed; - - $connexionMultipleExist = cache()->get('connexion_multiple'.$fluidbookId); - - /*cache()->forget('connexion'.$fluidbookId); - cache()->forget('connexion_multiple'.$fluidbookId);*/ - - if(!$connexionMultipleExist) { - cache(['connexion_multiple' . $fluidbookId => 0]); - } - - cache()->increment('connexion_multiple'.$fluidbookId,$counter); - - if(intval($tabClosed) > 0) { - cache()->decrement('connexion_multiple'.$fluidbookId,1); + $unload = $request->unload; + /*cache()->forget('queue_editor'.$fluidbookId); + /* Reset + * + */ + + if(!cache()->has('queue_editor'.$fluidbookId)) { + $entries = [$token => 'active']; + cache(['queue_editor'.$fluidbookId => $entries]); + } else { + $queueEditor = cache()->get('queue_editor'.$fluidbookId); + if(!array_key_exists($token, $queueEditor)) { + $queueEditor[$token] = 'is connected'; + } elseif(intval($unload) === 1) { + unset($queueEditor[$token]); + } + cache(['queue_editor'.$fluidbookId => $queueEditor]); } $connexionExist = cache()->get('connexion'.$fluidbookId); + $queueEditor = cache()->get('queue_editor'.$fluidbookId); - // réinitialiser la connexion courante quand on clique sur "éjecter l'utilisateur" + $firstKey = array_key_first($queueEditor); + $queueEditor[$firstKey] = 'active'; + cache(['queue_editor'.$fluidbookId => $queueEditor]); + $queueEditor = cache()->get('queue_editor'.$fluidbookId); + + // réinitialiser la connexion courante quand on clique sur "déconnecter l'utilisateur" if($request->clear) { cache()->forget('connexion'.$fluidbookId); } - if($connexionMultipleExist == 1) { + if(sizeof(cache()->get('queue_editor'.$fluidbookId)) === 1) { cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]); - return json_encode(["status"=>"available",$connexionExist]); + return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",$connexionExist]); } if($connexionExist && $fluidbookId === $connexionExist['f_id']) { $user = User::withoutGlobalScopes()->find($connexionExist['id']); $user = $user->firstname.' '.$user->lastname; - if($token !== $connexionExist['token']) { - return json_encode(["tabClosed"=>$tabClosed,"compteur"=>$connexionMultipleExist,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]); + if(sizeof($queueEditor) > 1) { + return json_encode(["queueEditor"=>$queueEditor,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]); } else { - return json_encode(["status"=>"available",$connexionExist]); + return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",$connexionExist]); } } else { cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]); - return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"available",cache()->get('connexion'.$fluidbookId)]); - } - } - - /*public function f_($a) { - $data = cache()->get('c_') ?? []; - $f_id = $a['f_id']; - $user_id = $a['id']; - $user_token = $a['token']; - - if(array_key_exists($f_id, $data)) { - $test = array_filter($data[$f_id], function($n) use($user_token) { return $n['token'] === $user_token; }); - if($test) { - return "user exist"; - } + return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",cache()->get('connexion'.$fluidbookId)]); } - - $data[$f_id][] = $a; - cache(['c_' => $data]); } - public function get_f($f_id) { - return cache()->get('c_')[$f_id]; - }*/ - protected function fixDriftedLinks($fluidbook_id) { if (!FluidbookPublication::hasPermission($fluidbook_id)) { diff --git a/resources/linkeditor/js/linkeditor.js b/resources/linkeditor/js/linkeditor.js index 9eb45bd99..060add822 100644 --- a/resources/linkeditor/js/linkeditor.js +++ b/resources/linkeditor/js/linkeditor.js @@ -577,30 +577,17 @@ $(function () { let interval = null let token = $("[data-token]").data("token") - let counter = 0; - let pageIsLoaded = sessionStorage.getItem('page_loaded'); - - if (!pageIsLoaded || !counter) { - counter = 0 - sessionStorage.setItem('page_loaded', true); - } - - if(pageIsLoaded) { - localStorage.setItem('tabClosed','0') - } - - counter++ - - console.log(counter) function intervalConnection(data = {}) { - let tabClosed = localStorage.getItem('tabClosed') + let unload = localStorage.getItem('unload') + let token_ = localStorage.getItem('token') + $.ajax({ method: "POST", url: '/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/edit/links', - data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token, counter: counter, tabClosed: tabClosed} + data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token_ ?? token, unload: unload} }).done(function (msg) { let response = JSON.parse(msg) - + console.log(response.queueEditor) if (response.status === "unavailable" ) { if ($("#popup-overlay").find('.popup').length === 0) { $("#popup-overlay").addClass("show") @@ -628,8 +615,8 @@ $(function () { return true; }; } - counter = 0 - localStorage.setItem('tabClosed', '0'); + localStorage.removeItem('unload'); + localStorage.removeItem('token'); setTimeout(function () { intervalConnection(); }, 1000) }); } @@ -644,7 +631,9 @@ $(function () { // $(window).on("unload",function(){ clearTimeout(interval) - localStorage.setItem('tabClosed', '1'); + console.log("token",token) + localStorage.setItem('token', token) + localStorage.setItem('unload', '1'); }) });