Item_Ticket::showItemToAdd PHP Method

showItemToAdd() static public method

static public showItemToAdd ( $tickets_id, $itemtype, $items_id, $options )
    static function showItemToAdd($tickets_id, $itemtype, $items_id, $options)
    {
        $params = array('rand' => mt_rand(), 'delete' => true);
        foreach ($options as $key => $val) {
            $params[$key] = $val;
        }
        $result = "";
        if ($item = getItemForItemtype($itemtype)) {
            $item->getFromDB($items_id);
            $result = "<div id='" . $itemtype . "_" . $items_id . "'>";
            $result .= $item->getTypeName(1) . " : " . $item->getLink(array('comments' => true));
            $result .= "<input type='hidden' value='{$items_id}' name='items_id[{$itemtype}][{$items_id}]'>";
            if ($params['delete']) {
                $result .= " <img src=\"../pics/delete.png\" onclick=\"itemAction" . $params['rand'] . "('delete', '{$itemtype}', '{$items_id}');\">";
            }
            $result .= "</div>";
        }
        return $result;
    }

Usage Example

Example #1
0
 /**
  * Print the HTML ajax associated item add
  *
  * @param $ticket Ticket object
  * @param $options   array of possible options:
  *    - id                  : ID of the ticket
  *    - _users_id_requester : ID of the requester user
  *    - items_id            : array of elements (itemtype => array(id1, id2, id3, ...))
  *
  * @return Nothing (display)
  **/
 static function itemAddForm(Ticket $ticket, $options = array())
 {
     global $CFG_GLPI;
     $params = array('id' => isset($ticket->fields['id']) && $ticket->fields['id'] != '' ? $ticket->fields['id'] : 0, '_users_id_requester' => 0, 'items_id' => array(), 'itemtype' => '');
     $opt = array();
     foreach ($options as $key => $val) {
         if (!empty($val)) {
             $params[$key] = $val;
         }
     }
     if (!$ticket->can($params['id'], READ)) {
         return false;
     }
     $canedit = $ticket->can($params['id'], UPDATE);
     // Ticket update case
     if ($params['id'] > 0) {
         // Get requester
         $class = new $ticket->userlinkclass();
         $tickets_user = $class->getActors($params['id']);
         if (isset($tickets_user[CommonITILActor::REQUESTER]) && count($tickets_user[CommonITILActor::REQUESTER]) == 1) {
             foreach ($tickets_user[CommonITILActor::REQUESTER] as $user_id_single) {
                 $params['_users_id_requester'] = $user_id_single['users_id'];
             }
         }
         // Get associated elements for ticket
         $used = self::getUsedItems($params['id']);
         foreach ($used as $itemtype => $items) {
             foreach ($items as $items_id) {
                 if (!isset($params['items_id'][$itemtype]) || !in_array($items_id, $params['items_id'][$itemtype])) {
                     $params['items_id'][$itemtype][] = $items_id;
                 }
             }
         }
     }
     // Get ticket template
     $tt = new TicketTemplate();
     if (isset($options['_tickettemplate'])) {
         $tt = $options['_tickettemplate'];
         if (isset($tt->fields['id'])) {
             $opt['templates_id'] = $tt->fields['id'];
         }
     } else {
         if (isset($options['templates_id'])) {
             $tt->getFromDBWithDatas($options['templates_id']);
             if (isset($tt->fields['id'])) {
                 $opt['templates_id'] = $tt->fields['id'];
             }
         }
     }
     $rand = mt_rand();
     $count = 0;
     echo "<div id='itemAddForm{$rand}'>";
     // Show associated item dropdowns
     if ($canedit) {
         echo "<div style='float:left'>";
         $p = array('used' => $params['items_id'], 'rand' => $rand, 'tickets_id' => $params['id']);
         // My items
         if ($params['_users_id_requester'] > 0) {
             Item_Ticket::dropdownMyDevices($params['_users_id_requester'], $ticket->fields["entities_id"], $params['itemtype'], 0, $p);
         }
         // Global search
         Item_Ticket::dropdownAllDevices("itemtype", $params['itemtype'], 0, 1, $params['_users_id_requester'], $ticket->fields["entities_id"], $p);
         echo "<span id='item_ticket_selection_information'></span>";
         echo "</div>";
         // Add button
         echo "<a href='javascript:itemAction{$rand}(\"add\");' class='vsubmit' style='float:left'>" . _sx('button', 'Add') . "</a>";
     }
     // Display list
     echo "<div style='clear:both;'>";
     if (!empty($params['items_id'])) {
         // No delete if mandatory and only one item
         $delete = true;
         $cpt = 0;
         foreach ($params['items_id'] as $itemtype => $items) {
             foreach ($items as $items_id) {
                 $cpt++;
             }
         }
         if ($cpt == 1 && isset($tt->mandatory['items_id'])) {
             $delete = false;
         }
         foreach ($params['items_id'] as $itemtype => $items) {
             foreach ($items as $items_id) {
                 if ($count < 5 && $params['id'] || $params['id'] == 0) {
                     echo Item_Ticket::showItemToAdd($params['id'], $itemtype, $items_id, array('rand' => $rand, 'delete' => $delete));
                 }
                 $count++;
             }
         }
     }
     if ($count == 0) {
         echo "<input type='hidden' value='0' name='items_id'>";
     }
     if ($params['id'] > 0 && $count > 5) {
         echo "<i><a href='" . $ticket->getFormURL() . "?id=" . $params['id'] . "&amp;forcetab=Item_Ticket\$1'>" . __('Display all items') . " (" . $count . ")</a></i>";
     }
     echo "</div>";
     foreach (array('id', '_users_id_requester', 'items_id', 'itemtype') as $key) {
         $opt[$key] = $params[$key];
     }
     $js = " function itemAction{$rand}(action, itemtype, items_id) {";
     $js .= "    \$.ajax({\n                     url: '" . $CFG_GLPI['root_doc'] . "/ajax/itemTicket.php',\n                     dataType: 'html',\n                     data: {'action'     : action,\n                            'rand'       : {$rand},\n                            'params'     : " . json_encode($opt) . ",\n                            'my_items'   : \$('#dropdown_my_items{$rand}').val(),\n                            'itemtype'   : (itemtype === undefined) ? \$('#dropdown_itemtype{$rand}').val() : itemtype,\n                            'items_id'   : (items_id === undefined) ? \$('#dropdown_add_items_id{$rand}').val() : items_id},\n                     success: function(response) {";
     $js .= "          \$(\"#itemAddForm{$rand}\").html(response);";
     $js .= "       }";
     $js .= "    });";
     $js .= " }";
     echo Html::scriptBlock($js);
     echo "</div>";
 }