scriptEnd() 정적인 공개 메소드

Generates a script tag inline
static public scriptEnd ( ) : mixed
리턴 mixed depending on the settings of scriptStart() either a script tag or null
예제 #1
0
 /**
  * Print a nice HTML head for every page
  *
  * @param $title     title of the page
  * @param $url       not used anymore (default '')
  * @param $sector    sector in which the page displayed is (default 'none')
  * @param $item      item corresponding to the page displayed (default 'none')
  * @param $option    option corresponding to the page displayed (default '')
  **/
 static function header($title, $url = '', $sector = "none", $item = "none", $option = "")
 {
     global $CFG_GLPI, $PLUGIN_HOOKS, $HEADER_LOADED, $DB;
     // If in modal : display popHeader
     if (isset($_REQUEST['_in_modal']) && $_REQUEST['_in_modal']) {
         return self::popHeader($title, $url);
     }
     // Print a nice HTML-head for every page
     if ($HEADER_LOADED) {
         return;
     }
     $HEADER_LOADED = true;
     // Force lower case for sector and item
     $sector = strtolower($sector);
     $item = strtolower($item);
     self::includeHeader($title);
     $body_class = "layout_" . $_SESSION['glpilayout'];
     if (strpos($_SERVER['REQUEST_URI'], "form.php") !== false && isset($_GET['id']) && $_GET['id'] > 0) {
         if (!CommonGLPI::isLayoutExcludedPage()) {
             $body_class .= " form";
         } else {
             $body_class = "";
         }
     }
     // Body
     echo "<body class='{$body_class}'>";
     // Generate array for menu and check right
     if (!isset($_SESSION['glpimenu']) || !is_array($_SESSION['glpimenu']) || count($_SESSION['glpimenu']) == 0) {
         // INVENTORY
         //don't change order in array
         $showallassets = false;
         $menu = self::getMenuInfos();
         // Permit to plugins to add entry to others sector !
         if (isset($PLUGIN_HOOKS["menu_toadd"]) && count($PLUGIN_HOOKS["menu_toadd"])) {
             foreach ($PLUGIN_HOOKS["menu_toadd"] as $plugin => $items) {
                 if (count($items)) {
                     foreach ($items as $key => $val) {
                         if (isset($menu[$key])) {
                             $menu[$key]['types'][] = $val;
                         }
                     }
                 }
             }
         }
         foreach ($menu as $category => $datas) {
             if (isset($datas['types']) && count($datas['types'])) {
                 foreach ($datas['types'] as $type) {
                     if ($data = $type::getMenuContent()) {
                         // Multi menu entries management
                         if (isset($data['is_multi_entries']) && $data['is_multi_entries']) {
                             if (!isset($menu[$category]['content'])) {
                                 $menu[$category]['content'] = array();
                             }
                             $menu[$category]['content'] += $data;
                         } else {
                             $menu[$category]['content'][strtolower($type)] = $data;
                         }
                     }
                 }
             }
             // Define default link :
             if (isset($menu[$category]['content']) && count($menu[$category]['content'])) {
                 foreach ($menu[$category]['content'] as $val) {
                     if (isset($val['page'])) {
                         $menu[$category]['default'] = $val['page'];
                         break;
                     }
                 }
             }
         }
         $allassets = array('Computer', 'Monitor', 'Peripheral', 'NetworkEquipment', 'Phone', 'Printer');
         foreach ($allassets as $type) {
             if (isset($menu['assets']['content'][strtolower($type)])) {
                 $menu['assets']['content']['allassets']['title'] = __('Global');
                 $menu['assets']['content']['allassets']['shortcut'] = '';
                 $menu['assets']['content']['allassets']['page'] = '/front/allassets.php';
                 $menu['assets']['content']['allassets']['links']['search'] = '/front/allassets.php';
                 break;
             }
         }
         //  PLUGINS
         //          if (isset($PLUGIN_HOOKS["menu_entry"]) && count($PLUGIN_HOOKS["menu_entry"])) {
         //             $plugins = array();
         //
         //             foreach  ($PLUGIN_HOOKS["menu_entry"] as $plugin => $active) {
         //                if ($active) { // true or a string
         //                   $plugins[$plugin] = Plugin::getInfo($plugin);
         //                }
         //             }
         //
         //             if (count($plugins)) {
         //                $list = array();
         //
         //                foreach ($plugins as $key => $val) {
         //                   $list[$key] = $val["name"];
         //                }
         //                asort($list);
         //
         //                foreach ($list as $key => $val) {
         //                   $menu['plugins']['content'][$key]['title'] = $val;
         //                   $menu['plugins']['content'][$key]['page']  = '/plugins/'.$key.'/';
         //
         //                   if (is_string($PLUGIN_HOOKS["menu_entry"][$key])) {
         //                      $menu['plugins']['content'][$key]['page'] .= $PLUGIN_HOOKS["menu_entry"][$key];
         //                   }
         //
         //                   // Set default link for plugins
         //                   if (!isset($menu['plugins']['default'])) {
         //                      $menu['plugins']['default'] = $menu['plugins']['content'][$key]['page'];
         //                   }
         //
         //                   if (($sector == "plugins")
         //                      && ($item == $key)) {
         //
         //                      if (isset($PLUGIN_HOOKS["submenu_entry"][$key])
         //                         && is_array($PLUGIN_HOOKS["submenu_entry"][$key])) {
         //
         //                         foreach ($PLUGIN_HOOKS["submenu_entry"][$key] as $name => $link) {
         //                            // New complete option management
         //                            if ($name == "options") {
         //                               $menu['plugins']['content'][$key]['options'] = $link;
         //                            } else { // Keep it for compatibility
         //
         //                               if (is_array($link)) {
         //                                  // Simple link option
         //                                  if (isset($link[$option])) {
         //                                     $menu['plugins']['content'][$key]['links'][$name]
         //                                                    ='/plugins/'.$key.'/'.$link[$option];
         //                                  }
         //                               } else {
         //                                  $menu['plugins']['content'][$key]['links'][$name]
         //                                                    ='/plugins/'.$key.'/'.$link;
         //                               }
         //                            }
         //                         }
         //                      }
         //                   }
         //                }
         //             }
         //          }
         $_SESSION['glpimenu'] = $menu;
         //          echo 'menu load';
     } else {
         $menu = $_SESSION['glpimenu'];
     }
     $already_used_shortcut = array('1');
     echo "<div id='header'>";
     echo "<div id='header_top'>";
     echo "<div id='c_logo'>";
     echo Html::link('', $CFG_GLPI["root_doc"] . "/front/central.php", array('accesskey' => '1', 'title' => __('Home')));
     echo "</div>";
     /// Prefs / Logout link
     echo "<div id='c_preference' >";
     echo "<ul>";
     echo "<li id='deconnexion'>";
     echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/logout.php";
     /// logout witout noAuto login for extauth
     if (isset($_SESSION['glpiextauth']) && $_SESSION['glpiextauth']) {
         echo "?noAUTO=1";
     }
     echo "' title=\"" . __s('Logout') . "\">";
     echo "<span id='logout_icon' title=\"" . __s('Logout') . "\"  alt=\"" . __s('Logout') . "\" class='button-icon' />";
     echo "</a>";
     echo "</li>\n";
     echo "<li id='preferences_link'><a href='" . $CFG_GLPI["root_doc"] . "/front/preference.php' title=\"" . __s('My settings') . "\">";
     echo "<span id='preferences_icon' title=\"" . __s('My settings') . "\"  alt=\"" . __s('My settings') . "\" class='button-icon' /></span>";
     // check user id : header used for display messages when session logout
     if (Session::getLoginUserID()) {
         echo "<span id='myname'>";
         echo formatUserName(0, $_SESSION["glpiname"], $_SESSION["glpirealname"], $_SESSION["glpifirstname"], 0, 20);
         echo "</span>";
     }
     echo "</a></li>";
     /// Bookmark load
     echo "<li id='bookmark_link'>";
     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');\">";
     echo "<span id='bookmark_icon' title=\"" . __s('Load a bookmark') . "\"  alt=\"" . __s('Load a bookmark') . "\" class='button-icon' />";
     echo "</a></li>";
     echo "<li id='help_link'><a href='" . (empty($CFG_GLPI["central_doc_url"]) ? "http://glpi-project.org/help-central" : $CFG_GLPI["central_doc_url"]) . "' target='_blank' title=\"" . __s('Help') . "\">" . "<span id='help_icon' title=\"" . __s('Help') . "\"  alt=\"" . __s('Help') . "\" class='button-icon' />";
     "</a></li>";
     echo "<li id='language_link'><a href='" . $CFG_GLPI["root_doc"] . "/front/preference.php?forcetab=User\$1' title=\"" . addslashes(Dropdown::getLanguageName($_SESSION['glpilanguage'])) . "\">" . Dropdown::getLanguageName($_SESSION['glpilanguage']) . "</a></li>";
     /// Search engine
     echo "<li id='c_recherche'>\n";
     if ($CFG_GLPI['allow_search_global']) {
         echo "<form method='get' action='" . $CFG_GLPI["root_doc"] . "/front/search.php'>\n";
         echo "<span id='champRecherche'><input size='15' type='text' name='globalsearch'\n                                         placeholder='" . __s('Search') . "'>";
         echo "</span>";
         Html::closeForm();
     }
     echo "</li>";
     echo "</ul>";
     echo "</div>\n";
     echo "</div>";
     ///Main menu
     echo "<div id='c_menu'>";
     echo "<ul id='menu'>";
     // Get object-variables and build the navigation-elements
     $i = 1;
     foreach ($menu as $part => $data) {
         if (isset($data['content']) && count($data['content'])) {
             $menu_class = "";
             if (isset($menu[$sector]) && $menu[$sector]['title'] == $data['title']) {
                 $menu_class = "active";
             }
             echo "<li id='menu{$i}' class='{$menu_class}' onmouseover=\"javascript:menuAff('menu{$i}','menu');\" >";
             $link = "#";
             if (isset($data['default']) && !empty($data['default'])) {
                 $link = $CFG_GLPI["root_doc"] . $data['default'];
             }
             if (Toolbox::strlen($data['title']) > 14) {
                 $data['title'] = Toolbox::substr($data['title'], 0, 14) . "...";
             }
             echo "<a href='{$link}' class='itemP'>" . $data['title'] . "</a>";
             echo "<ul class='ssmenu'>";
             // list menu item
             foreach ($data['content'] as $key => $val) {
                 $menu_class = "";
                 $tmp_active_item = explode("/", $item);
                 $active_item = array_pop($tmp_active_item);
                 if (isset($menu[$sector]['content']) && isset($menu[$sector]['content'][$active_item]) && isset($val['title']) && $menu[$sector]['content'][$active_item]['title'] == $val['title']) {
                     $menu_class = "active";
                 }
                 if (isset($val['page']) && isset($val['title'])) {
                     echo "<li class='{$menu_class}'><a href='" . $CFG_GLPI["root_doc"] . $val['page'] . "'";
                     if (isset($val['shortcut']) && !empty($val['shortcut'])) {
                         if (!isset($already_used_shortcut[$val['shortcut']])) {
                             echo " accesskey='" . $val['shortcut'] . "'";
                             $already_used_shortcut[$val['shortcut']] = $val['shortcut'];
                         }
                         echo ">" . Toolbox::shortcut($val['title'], $val['shortcut']) . "</a></li>\n";
                     } else {
                         echo ">" . $val['title'] . "</a></li>\n";
                     }
                 }
             }
             echo "</ul></li>";
             $i++;
         }
     }
     echo "</ul>";
     // #menu
     // Display MENU ALL
     echo "<div id='show_all_menu' class='invisible'>";
     $items_per_columns = 15;
     $i = -1;
     foreach ($menu as $part => $data) {
         if (isset($data['content']) && count($data['content'])) {
             echo "<table class='all_menu_block'>";
             $link = "#";
             if (isset($data['default']) && !empty($data['default'])) {
                 $link = $CFG_GLPI["root_doc"] . $data['default'];
             }
             echo "<tr><td class='tab_bg_1 b'>";
             echo "<a href='{$link}' title=\"" . $data['title'] . "\" class='itemP'>" . $data['title'] . "</a>";
             echo "</td></tr>";
             $i++;
             // list menu item
             foreach ($data['content'] as $key => $val) {
                 /*if ($i > $items_per_columns) {
                      $i = 0;
                      echo "</table></td><td class='top'><table>";
                   }*/
                 if (isset($val['page']) && isset($val['title'])) {
                     echo "<tr><td><a href='" . $CFG_GLPI["root_doc"] . $val['page'] . "'";
                     if (isset($data['shortcut']) && !empty($data['shortcut'])) {
                         echo " accesskey='" . $val['shortcut'] . "'";
                     }
                     echo ">" . $val['title'] . "</a></td></tr>\n";
                     $i++;
                 }
             }
             echo "</table>";
         }
     }
     echo "</div>";
     Html::scriptStart();
     echo self::jsGetElementbyID('show_all_menu') . ".dialog({\n         height: 'auto',\n         width: 'auto',\n         modal: true,\n         autoOpen: false\n         });";
     echo Html::scriptEnd();
     /// MENU ALL
     echo "<a href='#' onClick=\"" . self::jsGetElementbyID('show_all_menu') . ".dialog('open');\"\n            id='menu_all_button' class='button-icon'>";
     echo "</a>";
     echo "</div>";
     // End navigation bar
     // End headline
     //  Le fil d ariane
     echo "<div id='c_ssmenu2' >";
     echo "<ul>";
     // Display item
     echo "<li class='breadcrumb_item'><a href='" . $CFG_GLPI["root_doc"] . "/front/central.php' title=\"" . __s('Home') . "\">" . __('Home') . "</a></li>";
     if (isset($menu[$sector])) {
         $link = "/front/central.php";
         if (isset($menu[$sector]['default'])) {
             $link = $menu[$sector]['default'];
         }
         echo "<li class='breadcrumb_item'><a href='" . $CFG_GLPI["root_doc"] . $link . "' title=\"" . $menu[$sector]['title'] . "\">" . $menu[$sector]['title'] . "</a></li>";
     }
     if (isset($menu[$sector]['content'][$item])) {
         // Title
         $with_option = false;
         if (!empty($option) && isset($menu[$sector]['content'][$item]['options'][$option]['title']) && isset($menu[$sector]['content'][$item]['options'][$option]['page'])) {
             $with_option = true;
         }
         if (isset($menu[$sector]['content'][$item]['page'])) {
             echo "<li class='breadcrumb_item'><a href='" . $CFG_GLPI["root_doc"] . $menu[$sector]['content'][$item]['page'] . "' " . ($with_option ? "" : "class='here'") . " title=\"" . $menu[$sector]['content'][$item]['title'] . "\" >" . $menu[$sector]['content'][$item]['title'] . "</a>" . "</li>";
         }
         if ($with_option) {
             echo "<li class='breadcrumb_item'><a href='" . $CFG_GLPI["root_doc"] . $menu[$sector]['content'][$item]['options'][$option]['page'] . "' class='here' title=\"" . $menu[$sector]['content'][$item]['options'][$option]['title'] . "\" >";
             echo self::resume_name($menu[$sector]['content'][$item]['options'][$option]['title'], 17);
             echo "</a></li>";
         }
         $links = array();
         // Item with Option case
         if (!empty($option) && isset($menu[$sector]['content'][$item]['options'][$option]['links']) && is_array($menu[$sector]['content'][$item]['options'][$option]['links'])) {
             $links = $menu[$sector]['content'][$item]['options'][$option]['links'];
             // Without option case : only item links
         } else {
             if (isset($menu[$sector]['content'][$item]['links']) && is_array($menu[$sector]['content'][$item]['links'])) {
                 $links = $menu[$sector]['content'][$item]['links'];
             }
         }
         // Add item
         echo "<li class='icons_block'>";
         echo "<span>";
         if (isset($links['add'])) {
             echo Html::image($CFG_GLPI["root_doc"] . "/pics/menu_add.png", array('alt' => __('Add'), 'url' => $CFG_GLPI["root_doc"] . $links['add']));
         } else {
             echo Html::image($CFG_GLPI["root_doc"] . "/pics/menu_add_off.png", array('alt' => __('Add')));
         }
         echo "</span>";
         // Search Item
         echo "<span>";
         if (isset($links['search'])) {
             echo Html::image($CFG_GLPI["root_doc"] . "/pics/menu_search.png", array('alt' => __('Search'), 'url' => $CFG_GLPI["root_doc"] . $links['search']));
         } else {
             echo Html::image($CFG_GLPI["root_doc"] . "/pics/menu_search_off.png", array('alt' => __('Search')));
         }
         echo "</span>";
         // Links
         if (count($links) > 0) {
             foreach ($links as $key => $val) {
                 switch ($key) {
                     case "add":
                     case "search":
                         break;
                     case "template":
                         echo "<span>";
                         echo Html::image($CFG_GLPI["root_doc"] . "/pics/menu_addtemplate.png", array('alt' => __('Manage templates...'), 'url' => $CFG_GLPI["root_doc"] . $val));
                         echo "</span>";
                         break;
                     case "showall":
                         echo "<span>";
                         echo Html::image($CFG_GLPI["root_doc"] . "/pics/menu_showall.png", array('alt' => __('Show all'), 'url' => $CFG_GLPI["root_doc"] . $val));
                         echo "</span>";
                         break;
                     case "summary":
                         echo "<span>";
                         echo Html::image($CFG_GLPI["root_doc"] . "/pics/menu_show.png", array('alt' => __('Summary'), 'url' => $CFG_GLPI["root_doc"] . $val));
                         echo "</span>";
                         break;
                     case "config":
                         echo "<span>";
                         echo Html::image($CFG_GLPI["root_doc"] . "/pics/menu_config.png", array('alt' => __('Setup'), 'url' => $CFG_GLPI["root_doc"] . $val));
                         echo "</span>";
                         break;
                     default:
                         echo "<span>" . Html::link($key, $CFG_GLPI["root_doc"] . $val) . "</span>";
                         break;
                 }
             }
         }
         echo "</li>";
     } else {
         echo "<li>&nbsp;</li>";
     }
     // Add common items
     // Profile selector
     // check user id : header used for display messages when session logout
     if (Session::getLoginUserID()) {
         self::showProfileSelecter($CFG_GLPI["root_doc"] . "/front/central.php");
     }
     echo "</ul>";
     echo "</div>";
     echo "</div>\n";
     // fin header
     echo "<div id='page' >";
     if ($DB->isSlave() && !$DB->first_connection) {
         echo "<div id='dbslave-float'>";
         echo "<a href='#see_debug'>" . __('MySQL replica: read only') . "</a>";
         echo "</div>";
     }
     // Back to top
     Html::scriptStart();
     echo "\$(document).ready(function(){\n               BackToTop({\n               text : '^',\n               class: 'vsubmit',\n               autoShow : true,\n               timeEffect : 100,\n               autoShowOffset : '0',\n               appearMethod : '',\n               effectScroll : 'linear'\n               });\n            });";
     echo Html::scriptEnd();
     // call static function callcron() every 5min
     CronTask::callCron();
     self::displayMessageAfterRedirect();
 }
예제 #2
0
 /**
  * Display responsive menu
  * @since 0.90.1
  * @param $menu array of menu items
  *    - key   : plugin system name
  *    - value : array of options
  *       * id      : html id attribute
  *       * default : defaul url
  *       * title   : displayed label
  *       * content : menu sub items, array with theses options :
  *          - page     : url
  *          - title    : displayed label
  *          - shortcut : keyboard shortcut letter
  */
 static function displayMenuAll($menu = array())
 {
     global $CFG_GLPI, $PLUGIN_HOOKS;
     // Display MENU ALL
     echo "<div id='show_all_menu' class='invisible'>";
     $items_per_columns = 15;
     $i = -1;
     foreach ($menu as $part => $data) {
         if (isset($data['content']) && count($data['content'])) {
             echo "<table class='all_menu_block'>";
             $link = "#";
             if (isset($data['default']) && !empty($data['default'])) {
                 $link = $CFG_GLPI["root_doc"] . $data['default'];
             }
             echo "<tr><td class='tab_bg_1 b'>";
             echo "<a href='{$link}' title=\"" . $data['title'] . "\" class='itemP'>" . $data['title'] . "</a>";
             echo "</td></tr>";
             $i++;
             // list menu item
             foreach ($data['content'] as $key => $val) {
                 if (isset($val['page']) && isset($val['title'])) {
                     echo "<tr><td>";
                     if (isset($PLUGIN_HOOKS["helpdesk_menu_entry"][$key]) && is_string($PLUGIN_HOOKS["helpdesk_menu_entry"][$key])) {
                         echo "<a href='" . $CFG_GLPI["root_doc"] . "/plugins/" . $key . $val['page'] . "'";
                     } else {
                         echo "<a href='" . $CFG_GLPI["root_doc"] . $val['page'] . "'";
                     }
                     if (isset($data['shortcut']) && !empty($data['shortcut'])) {
                         echo " accesskey='" . $val['shortcut'] . "'";
                     }
                     echo ">";
                     echo $val['title'] . "</a></td></tr>\n";
                     $i++;
                 }
             }
             echo "</table>";
         }
     }
     echo "</div>";
     // init menu in jquery dialog
     Html::scriptStart();
     echo self::jsGetElementbyID('show_all_menu') . ".dialog({\n         height: 'auto',\n         width: 'auto',\n         modal: true,\n         autoOpen: false\n         });";
     echo Html::scriptEnd();
     /// Button to toggle responsive menu
     echo "<a href='#' onClick=\"" . self::jsGetElementbyID('show_all_menu') . ".dialog('open');\"\n            id='menu_all_button' class='button-icon'>";
     echo "</a>";
     echo "</div>";
 }
예제 #3
0
 public function showForm($ID, $options = array())
 {
     global $CFG_GLPI;
     $this->initForm($ID, $options);
     $this->showFormHeader($options);
     $relation = new PluginRelationRelation();
     echo "<tr class='tab_bg_1'>";
     //Nombre de la clase en GLPI
     echo "<td>" . __('Nombre de la clase', 'Nombre de la clase') . ": </td><td>";
     //Html::autocompletionTextField($this,"name",array('size' => "15"));
     $relation->dropdownType("name", $relation->getIdDropdown($this->fields["name"]));
     echo "</td>";
     //Nombre a mostrar en los desplegables para la clase
     echo "<td>" . __('Nombre a mostrar para la clase', 'Nombre a mostrar para la clase') . ": </td>";
     echo "<td>";
     Html::autocompletionTextField($this, "viewname", array('size' => "15"));
     echo "</td>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     //Descripción
     echo "<td>" . __('Descripción', 'Descripción') . ": </td><td>";
     Html::autocompletionTextField($this, "comment", array('size' => "15"));
     echo "</td>";
     //Imagen
     echo "<td>" . __('Imagen', 'Imagen') . ": </td>";
     echo "<td>";
     //file
     //$rep = "../plugins/relation/pics/";
     $rep = '../plugins/relation/pics/';
     $dir = opendir($rep);
     echo "<select name=\"img\" id=\"img\">";
     $sel = "";
     while ($f = readdir($dir)) {
         if (is_file($rep . $f)) {
             if ($f == rtrim($this->fields["img"])) {
                 $sel = "selected";
             } else {
                 $sel = "";
             }
             echo "<option value='" . $f . "' data-image='" . $_SESSION["glpiroot"] . "/plugins/relation/pics/" . $f . "' " . $sel . ">" . $f . "</option>";
         }
     }
     echo "</select>&nbsp;";
     closedir($dir);
     echo "</td>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     //Nombre de la clase en GLPI
     echo "<td>" . __('Es visible', 'Es visible') . "</td><td>";
     //Html::autocompletionTextField($this,"name",array('size' => "15"));
     Dropdown::showYesNo('is_visible', $this->fields['is_visible']);
     echo "</td>";
     //Nombre a mostrar en los desplegables para la clase
     echo "<td></td>";
     echo "<td></td>";
     echo "</tr>";
     $this->showFormButtons($options);
     Html::scriptStart();
     echo "\$(document).ready(function(e){\n\t\t\ttry {\n\t\t\t\$('#img').msDropDown();\n\t\t\t} catch(e) {\n\t\t\talert(e.message);\n\t\t\t}\n\t\t\t});";
     echo Html::scriptEnd();
     return true;
 }
예제 #4
0
    /**
     * Print a nice HTML head for help page
     *
     * @param $title  title of the page
     * @param $url    not used anymore (default '')
     **/
    static function helpHeader($title, $url = '')
    {
        global $CFG_GLPI, $HEADER_LOADED, $PLUGIN_HOOKS, $DB;
        // Print a nice HTML-head for help page
        if ($HEADER_LOADED) {
            return;
        }
        $HEADER_LOADED = true;
        self::includeHeader($title);
        // Body
        echo "<body>";
        echo '
<nav class="navbar navbar-default" id="menuHeader">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="' . $CFG_GLPI["root_doc"] . '/front/central.php">
      	<img src="' . $CFG_GLPI["root_doc"] . '/pics/fd_logo1.png" style="margin-top:-4px;" />
      	<span class=\'invisible\'>Logo</span>
      </a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    <ul class="nav navbar-nav">';
        echo "<li id='menu1'>";
        echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/helpdesk.public.php' title=\"" . __s('Home') . "\" class='itemP'>" . __('Home') . "</a>";
        echo "</li>";
        //  Create ticket
        if (Session::haveRight("ticket", CREATE)) {
            echo "<li id='menu2'>";
            echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/helpdesk.public.php?create_ticket=1' " . "title=\"" . __s('Create a ticket') . "\" class='itemP'>" . __('Create a ticket') . "</a>";
            echo "</li>";
        }
        //  Suivi ticket
        if (Session::haveRight("ticket", Ticket::READMY) || Session::haveRight("followup", TicketFollowup::SEEPUBLIC)) {
            echo "<li id='menu3'>";
            echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/ticket.php' title=\"" . __s('Ticket followup') . "\" class='itemP'>" . _n('Ticket', 'Tickets', Session::getPluralNumber()) . "</a>";
            echo "</li>";
        }
        // Reservation
        if (Session::haveRight("reservation", ReservationItem::RESERVEANITEM)) {
            echo "<li id='menu4'>";
            echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/reservationitem.php' title=\"" . _sn('Reservation', 'Reservations', Session::getPluralNumber()) . "\" class='itemP'>" . _n('Reservation', 'Reservations', Session::getPluralNumber()) . "</a>";
            echo "</li>";
        }
        // FAQ
        if (Session::haveRight('knowbase', KnowbaseItem::READFAQ)) {
            echo "<li id='menu5' >";
            echo "<a href='" . $CFG_GLPI["root_doc"] . "/front/helpdesk.faq.php' title=\"" . __s('FAQ') . "\" class='itemP'>" . __('FAQ') . "</a>";
            echo "</li>";
        }
        // PLUGINS
        $plugins = array();
        if (isset($PLUGIN_HOOKS["helpdesk_menu_entry"]) && count($PLUGIN_HOOKS["helpdesk_menu_entry"])) {
            foreach ($PLUGIN_HOOKS["helpdesk_menu_entry"] as $plugin => $active) {
                if ($active) {
                    $plugins[$plugin] = Plugin::getInfo($plugin);
                }
            }
        }
        if (isset($plugins) && count($plugins) > 0) {
            $list = array();
            foreach ($plugins as $key => $val) {
                $list[$key] = $val["name"];
            }
            asort($list);
            //echo "<li id='menu5' onmouseover=\"javascript:menuAff('menu5','menu');\">";
            echo "<li id='menu5'>";
            echo "<a href='#' title=\"" . _sn('Plugin', 'Plugins', Session::getPluralNumber()) . "\" class='itemP'>" . __('Plugins') . "</a>";
            // default none
            echo "<ul class='ssmenu'>";
            // list menu item
            foreach ($list as $key => $val) {
                $link = "";
                if (is_string($PLUGIN_HOOKS["helpdesk_menu_entry"][$key])) {
                    $link = $PLUGIN_HOOKS["helpdesk_menu_entry"][$key];
                }
                echo "<li><a href='" . $CFG_GLPI["root_doc"] . "/plugins/" . $key . $link . "'>" . $plugins[$key]["name"] . "</a></li>\n";
            }
            echo "</ul></li>";
        }
        echo "<div class='sep'></div>";
        echo '</ul>';
        echo '<ul class="nav navbar-nav navbar-right">';
        $sql_photo2 = "SELECT picture\n\t\t\t\t\t\t\t\tFROM glpi_users\n\t\t\t\t\t\t\t\tWHERE id = " . $_SESSION["glpiID"] . " ";
        $res_photo2 = $DB->query($sql_photo2);
        $pic2 = $DB->result($res_photo2, 0, 'picture');
        $photo_url2 = User::getURLForPicture($pic2);
        echo '<li class="dropdown">';
        echo '<a href="#" style="padding:0px; margin:0px;" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><img src="' . $photo_url2 . '" class="avatar" alt="" title="' . formatUserName(0, $_SESSION["glpiname"], $_SESSION["glpirealname"], $_SESSION["glpifirstname"], 0, 20) . '" /></a>';
        echo "<ul class=\"dropdown-menu\" role=\"menu\">";
        echo "<li><a href='" . (empty($CFG_GLPI["central_doc_url"]) ? "http://glpi-project.org/help-central" : $CFG_GLPI["central_doc_url"]) . "' target='_blank' title=\"" . __s('Help') . "\"><i class='fa fa-question-circle'></i> " . __('Help') . "</a></li>";
        echo "<li><a href='" . $CFG_GLPI["root_doc"] . "/front/preference.php' title=\"" . __s('My settings') . "\"><i class='fa fa-cog'></i> " . __('My settings') . "</a></li>";
        echo "<li><a href='" . $CFG_GLPI["root_doc"] . "/front/preference.php' title=\"" . addslashes(Dropdown::getLanguageName($_SESSION['glpilanguage'])) . "\"><i class='fa fa-flag'></i> " . Dropdown::getLanguageName($_SESSION['glpilanguage']) . "</a></li>";
        echo "<li id='deconnexion'><a href='" . $CFG_GLPI["root_doc"] . "/front/logout.php";
        // logout witout noAuto login for extauth
        if (isset($_SESSION['glpiextauth']) && $_SESSION['glpiextauth']) {
            echo "?noAUTO=1";
        }
        echo "' title=\"" . __s('Logout') . "\"><i class='fa fa-lock'></i> " . __('Logout') . "</a>";
        // check user id : header used for display messages when session logout
        if (Session::getLoginUserID()) {
            //echo " (";
            // echo formatUserName (0, $_SESSION["glpiname"], $_SESSION["glpirealname"], $_SESSION["glpifirstname"], 0, 20);
            // echo ")";
        }
        echo "</li>\n";
        echo "</ul>";
        echo '  </li>';
        echo '
			      </ul>
			    </div><!-- /.navbar-collapse -->
			  </div><!-- /.container-fluid -->
			</nav> ';
        echo '<nav class="navbar navbar-default nav2" style="margin-top: -20px;">';
        // Display item
        echo "<div id='c_ssmenu2'>";
        echo "<ul>";
        echo "<li><a href='" . $CFG_GLPI["root_doc"] . "/front/helpdesk.public.php' title=\"" . __s('Home') . "\">" . __('Home') . "></a></li>";
        echo "<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>";
        if (Session::haveRightsOr('ticketvalidation', array(TicketValidation::VALIDATEREQUEST, TicketValidation::VALIDATEINCIDENT))) {
            $opt = array();
            $opt['reset'] = 'reset';
            $opt['criteria'][0]['field'] = 55;
            // validation status
            $opt['criteria'][0]['searchtype'] = 'equals';
            $opt['criteria'][0]['value'] = TicketValidation::WAITING;
            $opt['criteria'][0]['link'] = 'AND';
            $opt['criteria'][1]['field'] = 59;
            // validation aprobator
            $opt['criteria'][1]['searchtype'] = 'equals';
            $opt['criteria'][1]['value'] = Session::getLoginUserID();
            $opt['criteria'][1]['link'] = 'AND';
            $url_validate = $CFG_GLPI["root_doc"] . "/front/ticket.php?" . Toolbox::append_params($opt, '&amp;');
            $pic_validate = "<a href='{$url_validate}'>" . "<img title=\"" . __s('Ticket waiting for your approval') . "\" alt=\"" . __s('Ticket waiting for your approval') . "\" src='" . $CFG_GLPI["root_doc"] . "/pics/menu_showall.png'></a>";
            echo "<li>{$pic_validate}</li>\n";
        }
        echo "<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>";
        if (Session::haveRight('ticket', CREATE) && strpos($_SERVER['PHP_SELF'], "ticket")) {
            echo "<li><a href='" . $CFG_GLPI["root_doc"] . "/front/helpdesk.public.php?create_ticket=1'>";
            echo "<img src='" . $CFG_GLPI["root_doc"] . "/pics/menu_add.png' title=\"" . __s('Add') . "\" alt=\"" . __s('Add') . "\"></a></li>";
        }
        echo "<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>";
        /// Bookmark load
        echo "<li>";
        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');\"\">";
        echo "<img src='" . $CFG_GLPI["root_doc"] . "/pics/bookmark.png' title=\"" . __s('Load a bookmark') . "\" alt=\"" . __s('Load a bookmark') . "\">";
        echo "</a></li>";
        // check user id : header used for display messages when session logout
        if (Session::getLoginUserID()) {
            self::showProfileSelecter($CFG_GLPI["root_doc"] . "/front/helpdesk.public.php");
        }
        echo "</ul></div>";
        //end c_ssmenu2
        Html::scriptStart();
        echo self::jsGetElementbyID('show_all_menu') . ".dialog({\n         height: 'auto',\n         width: 'auto',\n         modal: true,\n         autoOpen: false\n         });";
        echo Html::scriptEnd();
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
        // echo "</li>";
        echo '</nav>';
    }
예제 #5
0
 /**
  * @param $item       CommonITILObject
  * @param $type
  */
 static function alertValidation(CommonITILObject $item, $type)
 {
     global $CFG_GLPI;
     // No alert for new item
     if ($item->isNewID($item->getID())) {
         return;
     }
     $status = array_merge($item->getClosedStatusArray(), $item->getSolvedStatusArray());
     $message = __s("This item is waiting for approval, do you really want to resolve or close it?");
     switch ($type) {
         case 'status':
             Html::scriptStart();
             echo "\$('[name=\"status\"]').change(function() {\n                     var status_ko = 0;\n                     var input_status = \$(this).val();\n                     if (input_status != undefined) {\n                        if ((";
             $first = true;
             foreach ($status as $val) {
                 if (!$first) {
                     echo "||";
                 }
                 echo "input_status == {$val}";
                 $first = false;
             }
             echo "           )\n                                 && input_status != " . $item->fields['status'] . "){\n                           status_ko = 1;\n                        }\n                     }\n                     if ((status_ko == 1)\n                         && ('" . $item->fields['global_validation'] . "' == '" . self::WAITING . "')) {\n                        alert('" . $message . "');\n                     }\n                  });";
             echo Html::scriptEnd();
             break;
         case 'solution':
             if (!in_array($item->fields['status'], $status) && $item->fields['global_validation'] == self::WAITING) {
                 Html::displayTitle($CFG_GLPI['root_doc'] . "/pics/warning.png", $message, $message);
             }
             break;
     }
 }
예제 #6
0
 static function showAssociated($item, $withtemplate = '')
 {
     global $DB, $CFG_GLPI;
     $display_entity = Session::isMultiEntitiesMode();
     $numcols = 5;
     if ($display_entity) {
         $numcols++;
     }
     $ID = $item->getField('id');
     $itemtype = get_Class($item);
     $entity = $item->getEntityID();
     $showgroup = true;
     if (!class_exists($itemtype)) {
         $datatable = "";
         $form = "";
     } else {
         $objeto = new $itemtype();
         $datatable = $objeto->getTable();
         $form = Toolbox::getItemTypeFormURL($itemtype);
     }
     if ($showgroup) {
         $moreselect = ", g.name AS grp";
         $morejoin = " LEFT JOIN glpi_groups AS g ON d.groups_id = g.id";
     } else {
         $numcols--;
         $moreselect = "";
         $morejoin = "";
     }
     if ($withtemplate != 2) {
         //echo "<form method='post' action=\"".$CFG_GLPI["root_doc"]."/plugins/relation/front/relation.form.php\">";
         echo "<form method='post' name='relation_form' id='add_relation_form'  action=" . PluginRelationRelation::getFormURL(true) . ">";
     }
     echo "<div align='center'><table class='tab_cadre_fixe'>";
     // Children
     $query4 = "SELECT `name` FROM `{$datatable}` WHERE `id` = '{$ID}'";
     $result4 = $DB->query($query4);
     $thisdata = $DB->fetch_array($result4);
     echo "<tr><th colspan='" . $numcols . "'>" . __('Elementos relacionados', 'Elementos relacionados') . "</th></tr>";
     // CRI 26/11/2015 Cambio de orden de columna tipo de relacion
     echo "<tr>";
     if ($showgroup) {
         echo "<th>" . __('Tipo Relacion', 'Tipo Relacion') . "</th>";
     }
     echo "<th>" . __('Nombre', 'Nombre') . "</th>";
     echo "<th>" . __('Estado', 'Estado') . "</th>";
     // CRI 2.0 Añadir Estado del CI 11/12/2014
     if ($display_entity) {
         echo "<th>" . __('Entidad', 'Entidad') . "</th>";
     }
     echo "<th>" . __('Tipo', 'Tipo') . "</th>";
     if (Session::haveRight("plugin_relation", CREATE)) {
         echo "<th>&nbsp;</th>";
     }
     echo "</tr>";
     //imprimo las relaciones directas
     $queryAssociated = "select r.id, r.items_id, r.itemtype, tr.name from glpi_plugin_relation_relations r left join glpi_plugin_relation_typerelations tr on r.relation_type=tr.id  where r.parent_id=";
     $queryAssociated .= $ID . " and r.parent_type='" . $itemtype . "'order by 4,3,2";
     $resultAssociated = $DB->query($queryAssociated);
     if ($DB->numrows($resultAssociated)) {
         while ($data = $DB->fetch_array($resultAssociated)) {
             //print_r($data);
             //echo "<br>";
             $nombreClase = $data['itemtype'];
             $form = Toolbox::getItemTypeFormURL($nombreClase);
             $objAsociado = new $nombreClase();
             $objAsociado->getFromDB($data['items_id']);
             echo '<tr class="tab_bg_1">';
             // CRI 2.0 Cambio de orden de columna tipo de relacion
             if ($showgroup) {
                 echo '<td align="center">' . $data['name'] . '</td>';
             }
             if ($data['itemtype'] == "User") {
                 $user = getUserName($data['items_id'], 2);
                 echo '<td align="center"><a href="' . $form . '?id=' . $data['items_id'] . '">' . getUserName($data['items_id']) . ' (' . $objAsociado->fields['name'] . ")&nbsp;" . Html::showToolTip($user["comment"], array('link' => $user["link"], 'display' => false));
                 //getUserName($data['items_id'])
                 echo '</a></td>';
             } else {
                 echo '<td align="center"><a href="' . $form . '?id=' . $data['items_id'] . '">' . $objAsociado->fields['name'];
                 if ($_SESSION["glpiis_ids_visible"]) {
                     echo " (" . $data["items_id"] . ")";
                 }
                 echo '</a></td>';
             }
             echo '<td align="center">' . PluginRelationRelation::getStatusItem($data['itemtype'], $data['items_id']) . '</td>';
             //CRI 2.0 Añadir Estado del CI 11/12/2014
             if ($display_entity) {
                 if ($objAsociado->fields['entities_id'] == 0) {
                     echo "<td align='center'>" . __('Entidad Raiz', 'Entidad Raiz') . "</td>";
                 } else {
                     echo "<td align='center'>" . Dropdown::getDropdownName("glpi_entities", $objAsociado->fields['entities_id']) . "</td>";
                 }
                 //echo "<td align='center'>".$objAsociado->fields['entities_id']."</td>";
             }
             echo '<td align="center">' . PluginRelationRelation::getViewNameClass($data['itemtype']) . '</td>';
             // Gobierno TI: [olb26s] uso de funcion getViewNameClass
             if (Session::haveRight('plugin_relation', CREATE)) {
                 if ($withtemplate < 2) {
                     echo "<td align='center' class='tab_bg_2'><a href='" . $CFG_GLPI["root_doc"] . "/plugins/relation/front/relation.form.php?deleterelation=deleterelation&amp;id=" . $data['id'] . "'>" . __('Eliminar', 'Eliminar') . "</a></td>";
                 }
             }
             echo '</tr>';
         }
     }
     //imprimo las relaciones inversas
     $queryAssociated = "select r.id, r.parent_id, r.parent_type, tr.invname from glpi_plugin_relation_relations r left join glpi_plugin_relation_typerelations tr on r.relation_type=tr.id  where r.items_id=";
     $queryAssociated .= $ID . " and itemtype='" . $itemtype . "' order by 4,3,2";
     $resultAssociated = $DB->query($queryAssociated);
     if ($DB->numrows($resultAssociated) > 0) {
         while ($data = $DB->fetch_array($resultAssociated)) {
             $nombreClase = $data['parent_type'];
             $form = Toolbox::getItemTypeFormURL($nombreClase);
             $objAsociado = new $nombreClase();
             $objAsociado->getFromDB($data['parent_id']);
             echo '<tr class="tab_bg_1">';
             // CRI 2.0 26/11/2015 Cambio de orden de columna tipo de relacion
             if ($showgroup) {
                 echo '<td align="center">' . $data['invname'] . '</td>';
             }
             if ($data['parent_type'] == "User") {
                 $user = getUserName($data['parent_id'], 2);
                 echo '<td align="center"><a href="' . $form . '?id=' . $data['parent_id'] . '">' . getUserName($data['parent_id']) . ' (' . $objAsociado->fields['name'] . ")&nbsp;" . Html::showToolTip($user["comment"], array('link' => $user["link"], 'display' => false));
                 echo '</a></td>';
             } else {
                 echo '<td align="center"><a href="' . $form . '?id=' . $data['parent_id'] . '">' . $objAsociado->fields['name'];
                 if ($_SESSION["glpiis_ids_visible"]) {
                     echo " (" . $data["parent_id"] . ")";
                 }
                 echo '</a></td>';
             }
             echo '<td align="center">' . PluginRelationRelation::getStatusItem($data['parent_type'], $data['parent_id']) . '</td>';
             //CRI 2.0 Añadir Estado del CI 11/12/2014
             if ($display_entity) {
                 if ($objAsociado->fields['entities_id'] == 0) {
                     echo "<td align='center'>" . __('Entidad Raiz', 'Entidad Raiz') . "</td>";
                 } else {
                     echo "<td align='center'>" . Dropdown::getDropdownName("glpi_entities", $objAsociado->fields['entities_id']) . "</td>";
                 }
             }
             echo '<td align="center">' . PluginRelationRelation::getViewNameClass($data['parent_type']) . '</td>';
             // Gobierno TI: [olb26s] uso de funcion getViewNameClass
             if (Session::haveRight('plugin_relation', CREATE)) {
                 if ($withtemplate < 2) {
                     echo "<td align='center' class='tab_bg_2'><a href='" . $CFG_GLPI["root_doc"] . "/plugins/relation/front/relation.form.php?deleterelation=deleterelation&amp;id=" . $data['id'] . "'>" . __('Eliminar', 'Eliminar') . "</a></td>";
                 }
             }
             echo '</tr>';
         }
     }
     if (Session::haveRight('plugin_relation', CREATE)) {
         echo '<tr class="tab_bg_1">';
         echo '<td align="center" colspan="' . ($numcols - 1) . '">';
         echo '<input type="hidden" name="id" value="' . $ID . '">';
         echo '<input type="hidden" name="type" value="' . $itemtype . '">';
         PluginRelationRelation::dropdown(array('name' => "childID", 'itemtype' => $itemtype, 'entity' => $entity));
         echo '</td>';
         echo '<td align="center"><input class="submit" type="submit" value="' . _sx('button', 'Add') . '" name="additem"/></td>';
         echo '</tr>';
     }
     if (!empty($withtemplate)) {
         echo "<input type='hidden' name='is_template' value='1'>";
     }
     echo "</table></div>";
     //echo "</form>";
     Html::closeForm();
     // Imprimir Grafico
     if (PluginRelationRelation::command_exists('dot') == true) {
         echo "<br><table class='tab_cadre' cellpadding='2'>";
         echo "<tr><th>" . __('Grafico de la Relacion', 'Grafico de la Relacion') . "</th></tr>";
         echo "<tr class='tab_bg_1'><td>";
         $im = PluginRelationPrototype::relationGraphviz($ID, $itemtype);
         //echo '<img src="data:image/png;base64,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"/>';
         //echo $im;
         echo "<div id=target></div>";
         echo "<div align='center'>";
         echo "<a onclick='view_relation_graphviz.dialog(\"open\");' href='#view_relation_graphviz' title='" . __('Relacion') . "'>" . __('Ver relacion', 'relation') . "</a>";
         echo "</div>";
         Ajax::createModalWindow('view_relation_graphviz', $CFG_GLPI["root_doc"] . "/plugins/relation/front/relation.test.php?item_id=" . $ID . "&item_type=" . $itemtype, array('title' => __('Ver Relaciones', 'relation')));
         //echo '<img src="data:image/gif;base64,'.base64_encode($im).'"/>';
         //echo $CFG_GLPI["root_doc"].'/plugins/relation/front/relation.test.php?item_id='.$ID.'&item_type='.$itemtype;
         //echo "<img src='".$CFG_GLPI["root_doc"]."/plugins/relation/front/relation.test.php?item_id=$ID&item_type=$itemtype' alt=''>";
         //echo file_get_contents($CFG_GLPI["root_doc"]."/plugins/relation/front/relation.test.php?item_id=".$ID."&item_type=".$itemtype);
         echo "</td></tr>";
         echo "</table>";
         Html::scriptStart();
         echo "\$(document).ready(function(){\n\t\t\t\t\$('#target').load('" . $CFG_GLPI["root_doc"] . "/plugins/relation/front/relation.test.php?item_id=" . $ID . "&item_type=" . $itemtype . "');\n\t\t\t\t});";
         echo Html::scriptEnd();
     }
 }