Widget:ExternalDialog

De Encyclopédie-de-L'AFN_1830-1962
Version datée du 1 mai 2026 à 11:19 par Websahib (discussion | contributions) (Page créée avec « <!--{$title|escape:html}--> <script> // Création du gestionnaire de fenêtres OOUI (une seule fois) if (!window.externalWindowManager) { window.externalWindowManager = new OO.ui.WindowManager(); $(document.body).append(window.externalWindowManager.$element); } // Classe du Dialog personnalisé function ExternalIframeDialog(config) { ExternalIframeDialog.super.call(this, config); } OO.inheritClass(ExternalIframeDialog, OO.ui.Dialog); ExternalIframe... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)


<script> // Création du gestionnaire de fenêtres OOUI (une seule fois) if (!window.externalWindowManager) {

   window.externalWindowManager = new OO.ui.WindowManager();
   $(document.body).append(window.externalWindowManager.$element);

}

// Classe du Dialog personnalisé function ExternalIframeDialog(config) {

   ExternalIframeDialog.super.call(this, config);

} OO.inheritClass(ExternalIframeDialog, OO.ui.Dialog);

ExternalIframeDialog.static.name = 'externalIframeDialog'; ExternalIframeDialog.static.title = 'Chargement...'; // sera mis à jour dynamiquement ExternalIframeDialog.static.size = 'large'; // taille par défaut (small/medium/large)

ExternalIframeDialog.prototype.initialize = function () {

   ExternalIframeDialog.super.prototype.initialize.call(this);
   this.$element.addClass('external-iframe-dialog');
   this.iframe = $('<iframe>')
       .attr('frameborder', 0)
       .attr('allowfullscreen', true)
       .css({
           width: '100%',
           height: '100%',
           border: 'none'
       });
   this.panel = new OO.ui.PanelLayout({
       padded: false,
       expanded: true,
       scrollable: false
   });
   this.panel.$element.append(this.iframe);
   this.$body.append(this.panel.$element);

};

// Permet de définir la taille du contenu ExternalIframeDialog.prototype.getBodyHeight = function () {

   return this.height || 600;   // hauteur par défaut

};

// Fonction globale pour ouvrir le dialog window.openExternalDialog = function (url, title = 'Page externe', width = 1000, height = 700) {

   const dialog = new ExternalIframeDialog({
       size: 'large'   // on gère la taille manuellement via CSS
   });
   dialog.title = title;
   dialog.height = height;
   externalWindowManager.addWindows([dialog]);
   // Mise à jour du titre
   dialog.setTitle(title);
   // Chargement de l'iframe
   dialog.iframe.attr('src', url);
   // Ouverture avec taille personnalisée
   externalWindowManager.openWindow(dialog, {
       width: width,
       height: height
   });
   // Rendre le dialog déplaçable (draggable)
   setTimeout(() => {
       dialog.$element.draggable({
           handle: '.oo-ui-window-head',   // barre de titre
           containment: 'window'
       });
   }, 100);

}; </script>

<style> /* Fond partiellement transparent */ .external-iframe-dialog .oo-ui-window-frame {

   background-color: rgba(255, 255, 255, 0.95) !important;
   border-radius: 8px;
   box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);

}

/* Légère transparence sur le overlay */ .oo-ui-windowManager-modal > .oo-ui-windowManager-overlay {

   background-color: rgba(0, 0, 0, 0.65) !important;

} </style>