You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2017-09-25 00:28:20

lexcorp
Member
Registered: 2014-09-17
Posts: 64

Reassign ticket with popup or modal window

Hello, it is possible to reassign a ticket by making a popup or modal window call as in the following example:

reasing.jpg


I want to create a popup window similar to the example, with additional information and to be able to call it when clicking on any button or image.

I have reviewed the classes ajax.class.php, html.class.php which contain some functions that make calls to this type of windows, however I do not get it to work a window that I created in my own function.

Offline

#2 2017-09-25 17:24:00

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,273

Re: Reassign ticket with popup or modal window

It's prefer to create a plugin to do that instead of changing the core


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#3 2017-09-28 07:35:23

lexcorp
Member
Registered: 2014-09-17
Posts: 64

Re: Reassign ticket with popup or modal window

Can you provide an example about, how to create an modal window in glpi? In the class ajax.class.php there are some functions to create modal windows like this:

/**
    * Create modal window
    * After display it using $name.dialog("open");
    *
    * @since version 0.84
    *
    * @param $name            name of the js object
    * @param $url             URL to display in modal
    * @param $options array   of possible options:
    *     - width      (default 800)
    *     - height     (default 400)
    *     - modal      is a modal window ? (default true)
    *     - container  specify a html element to render (default empty to html.body)
    *     - title      window title (default empty)
    *     - display    display or get string ? (default true)
   **/
   static function createModalWindow($name, $url, $options=array() ) {

      $param = array('width'           => 800,
                     'height'          => 400,
                     'modal'           => true,
                     'container'       => '',
                     'title'           => '',
                     'extraparams'     => array(),
                     'display'         => true,
                     'js_modal_fields' => '');

...

I tried to create my own windows but when I call them they just do not show up on the screen...

Offline

#4 2017-09-28 13:30:26

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,273

Re: Reassign ticket with popup or modal window

Version of GLPI used?


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#5 2017-09-28 14:11:56

lexcorp
Member
Registered: 2014-09-17
Posts: 64

Re: Reassign ticket with popup or modal window

I'm usign version 9.1.4

Offline

#6 2017-09-29 07:01:29

lexcorp
Member
Registered: 2014-09-17
Posts: 64

Re: Reassign ticket with popup or modal window

I have analyzed some classes

Load Bookmarks in html.class.php

<script type="text/javascript">
            $('#loadbookmark').dialog({
               modal: true,
               autoOpen: false,
               height: 500,
               width: 1050,
               draggable: true,
               resizeable: true,
               open: function(ev, ui){
               $('#Iframeloadbookmark').attr('src','/glpi914/front/bookmark.php?action=load&_in_modal=1');},close: function(ev, ui) { window.location.reload() },title: "Cargar un marcador"});
</script>


<a href="#" onclick="$('#loadbookmark').dialog('open');"><span id="bookmark_icon" title="Cargar un marcador" alt="Cargar un marcador" class="button-icon"></span></a>



Ajax::createIframeModalWindow('loadbookmark',
                                    $CFG_GLPI["root_doc"]."/front/bookmark.php?action=load",
                                    array('title'         => __('Load a bookmark'),
                                          'reloadonclose' => true));
echo "<a href='#' onClick=\"".Html::jsGetElementbyID('loadbookmark').".dialog('open');\">";

Show menu in html.class.php

<script type="text/javascript">
//<![CDATA[

$( document ).ready(function() {
$('#show_all_menu').dialog({
         height: 'auto',
         width: 'auto',
         modal: true,
         autoOpen: false
         });
});

//]]>
</script>

<a href="#" onclick="$('#show_all_menu').dialog('open');" id="menu_all_button" class="button-icon"></a>

Add dropdown in Knowledge Base

<img alt="" title="Añadir" src="/glpi914/pics/add_dropdown.png" style="cursor:pointer; margin-left:2px;" onclick="$('#add_dropdown1843132794').dialog('open');">

<script type="text/javascript">
            $('#add_dropdown1843132794').dialog({
               modal: true,
               autoOpen: false,
               height: 500,
               width: 1050,
               draggable: true,
               resizeable: true,
               open: function(ev, ui){
               $('#Iframeadd_dropdown1843132794').attr('src','/glpi914/front/knowbaseitemcategory.form.php?_in_modal=1');},title: ""});
</script>

In ajax.class.php exist 3 functions:

static function createModalWindow($name, $url, $options=array() ) { ... }

static function createFixedModalWindow($name, $options=array() ) { ... }

static function createIframeModalWindow($domid, $url, $options=array() ) { ... }

Could you share an example?

Offline

#7 2017-10-02 07:16:33

lexcorp
Member
Registered: 2014-09-17
Posts: 64

Re: Reassign ticket with popup or modal window

Anyone???

Last edited by lexcorp (2017-10-05 05:42:20)

Offline

#8 2017-10-05 05:43:22

lexcorp
Member
Registered: 2014-09-17
Posts: 64

Re: Reassign ticket with popup or modal window

A little help here please!..

Offline

#9 2021-10-01 21:51:30

fralla2
Member
Registered: 2018-03-28
Posts: 9

Re: Reassign ticket with popup or modal window

4 Years later but since I had to do about the same thing... here's how I've done it (inspired from plugins formcreator) :

1 : Create a file in yourPlugins/ajax directory (it will contains what you want to display inside the modal window). 
* I personally named the file myPlugins/ajax/myPlugins.php

2 : Create a file in yourPlugins/js directory (it will contains the javascript code that will serve to create the modal window).
* I've named the file myPlugins/js/scripts.js.php and it contains the following (need some adaptation for your needs)

<?php
include ('../../../inc/includes.php');
header('Content-Type: text/javascript');
?>
"use strict";

var modalWindow;
var rootDoc          = CFG_GLPI['root_doc'];
var myPluginsRootDoc = rootDoc + '/' + GLPI_PLUGINS_PATH.myPlugins;

$(function() {
   modalWindow = $("<div></div>").dialog({
      width: 400,
      autoOpen: false,
      height: "300",
      modal: true,
      position: {my: 'center'},
      open: function( event, ui ) {
         //remove existing tinymce when reopen modal (without this, tinymce don't load on 2nd opening of dialog)
         modalWindow.find('.mce-container').remove();
      }
   });
});

var plugin_myPlugins = new function() {
   this.spinner = '<div"><img src="../../../pics/spinner.48.gif" style="margin-left: auto; margin-right: auto; display: block;" width="48px"></div>'

   this.modalSetings = {
      autoOpen: false,
      height: '300px',
      minHeight: '300px',
      width: '400px',
      minWidth: '400px',
      modal: true,
      position: {my: 'center'},
      close: function() {
         $(this).dialog('close');
         $(this).remove();
      }
   }

   this.plugin_myPlugins_scrollToModal = function (modalWindow) {
      $('html, body').animate({
         scrollTop: $(modalWindow).closest('.ui-dialog').offset().top
      }, 300);
   }

   this.showLabel = function (name, inventoryNumber, bgColor) {
      modalWindow.load(
        myPluginsRootDoc + '/ajax/myPlugins.php', {
           name: name,
           inventoryNumber : inventoryNumber,
           bgColor : bgColor
        }
      ).dialog('open');
      // this.plugin_myPlugins_scrollToModal($(modalWindow));
   }

}

3 : in the file yourPlugins/setup.php, you need to add a hook for your javascript file inside the function plugin_init_yourPlugins()

$PLUGIN_HOOKS['add_javascript']['myPlugins'][] = 'js/scripts.js.php';

4 : You need to call this javascript function from somewhere to have the modal window displayed... I personally used in a html link :

<a href="javascript:plugin_csscvinventorylabels.showLabel('name','invNumber','#FFFFFF');">Imprimer l'étiquette d'inventaire</a>

Hope this helps
Francois

Offline

Board footer

Powered by FluxBB