]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6482 @0:20
authorsoufiane <soufiane@cubedesigners.com>
Tue, 12 Dec 2023 16:53:13 +0000 (17:53 +0100)
committersoufiane <soufiane@cubedesigners.com>
Tue, 12 Dec 2023 16:53:13 +0000 (17:53 +0100)
app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php
resources/linkeditor/js/linkeditor.js
resources/views/fluidbook_publication/link_editor.blade.php

index c181e0621fe60753360d117f9375682df897ae54..16c4f08dbf10dad085e8dfa58d0621a405a36732 100644 (file)
@@ -7,6 +7,7 @@ namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
 use App\Fluidbook\Compiler\Compiler;
 use App\Fluidbook\Link\LinksData;
 use App\Models\FluidbookPublication;
+use App\Models\User;
 use Cubist\Backpack\Http\Controllers\Base\XSendFileController;
 use Cubist\Util\Files\Files;
 use Illuminate\Http\UploadedFile;
@@ -298,17 +299,19 @@ trait LinksOperation
         $fluidbookId = $request->id;
         $token = $request->token;
         $userId = backpack_user()->id;
+        $user = User::find($userId);
+        $user = $user->firstname.' '.$user->lastname;
 
+        // réinitialiser la connexion courante quand on clique sur "éjecter l'utilisateur"
         if($request->clear) {
             cache()->forget('connexion'.$fluidbookId);
         }
-
         $connexionExist = cache()->get('connexion'.$fluidbookId);
         if($connexionExist && $fluidbookId === $connexionExist['f_id']) {
             if($userId != $connexionExist['id'] || $token !== $connexionExist['token']) {
-                return "unavailable";
+                return json_encode(["status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]);
             } else {
-                return $connexionExist;
+                return json_encode(["status"=>"available",$connexionExist]);
             }
         } else {
             cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]);
index e053120f7e48acbcdbd005a67361c12443a1d7a8..792ad897979252b43b4832ff6e94c643e8a88ed5 100644 (file)
@@ -60,6 +60,7 @@ import 'spectrum-colorpicker/spectrum.css';
 require('select2');
 import 'select2/dist/css/select2.css';
 import 'select2-bootstrap-theme/dist/select2-bootstrap.css';
+import {isObject} from "../../fluidbookpublication/packager/_node_modules_win/util";
 
 window.MD5 = require("crypto-js/md5");
 
@@ -589,24 +590,37 @@ $(function () {
 
 
     let interval = null;
+    let userID = $("#userID").data("id");
     function intervalConnection() {
-        interval = setInterval(function () {
+        //interval = setInterval(function () {
             $.ajax({
                 method: "POST",
                 url: '/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/edit/links',
                 data: {id: FLUIDBOOK_DATA.id, token: $("[data-token]").data("token")}
             }).done(function (msg) {
-                if (msg === "unavailable") {
+                let response = JSON.parse(msg)
+
+                if (response.status === "unavailable") {
                     if ($("#popup-overlay").find('.popup').length === 0) {
                         $("#popup-overlay").addClass("show")
-                        window.linkeditor.popup.open('unavailable');
+
+                        let popupName = 'unavailable';
+                        if(response.infos_connection.id === userID) popupName = 'twin-connection';
+                        window.linkeditor.popup.open(popupName);
+
+                        // Bloquer les raccourcis clavier
                         keyfilter(false,true)
+
+                        $("#username").text(response.infos_connection.user)
+                        $("#id").text(response.infos_connection.id)
                     }
                 } else {
                     if ($("#popup-overlay").find('.popup[data-popup="unavailable"]').length > 0) {
+
                         $("#popup-overlay").removeClass("show")
                         window.linkeditor.popup.close();
                     }
+                    console.log('ok 2')
                     window.key.filter = function (event) {
                         let tagName = (event.target || event.srcElement).tagName;
                         if (tagName === 'TEXTAREA' && event.keyCode === 13) {
@@ -617,7 +631,7 @@ $(function () {
                     };
                 }
             });
-        }, 2000)
+        //}, 2000)
     }
     intervalConnection()
 
index 1fc2c39c21d0b6c35bf5c112895f10533889034d..8fd954e2b4670a19cb9e7361a802b8f9cce73949 100644 (file)
 @section('content')
     @include('fluidbook_publication.link_editor_icons')
     <div id="token" data-token="{{$token}}"></div>
+    <div id="userID" data-id="{{backpack_user()->id}}"></div>
     <div id="popup-overlay">
         <div id="popup-holder">
         </div>
 
         <div class="popup" data-popup="unavailable" style="max-width: 300px">
             <h2>{{__('Fluidbook en cours d\'utilisation')}}</h2>
-            <p>{{__('Utilisateur : ')}} {{ $user->firstname }} {{ $user->lastname }}</p>
-            <p>Identifiant: {{ $user->id }}</p>
+            <p>{{__('Utilisateur : ')}} <span id="username"></span></p>
+            <p>Identifiant: <span id="id"></span></p>
             <p class="button">
                 <button id="connectTo" type="submit">{{__('Ejecter l\'utilisateur')}}</button>
             </p>
         </div>
+
+        <div class="popup" data-popup="twin-connection" style="max-width: 300px">
+            <h2>{{__('Vous êtes déjà connecté sur ce fluidbook')}}</h2>
+        </div>
     </div>
 
     <div draggable="false" id="linkeditor">