canCreate() static public method

static public canCreate ( )
 function canCreateItem()
 {
     if (isset($this->input['itemtype']) && isset($this->input['items_id'])) {
         if ($item = getItemForItemtype($this->input['itemtype'])) {
             if ($item->canAddItem('Document')) {
                 return true;
             }
         }
     }
     // From Ticket Document Tab => check right to add followup.
     if (isset($this->fields['tickets_id']) && $this->fields['tickets_id'] > 0) {
         $ticket = new Ticket();
         if ($ticket->getFromDB($this->fields['tickets_id'])) {
             return $ticket->canAddFollowups();
         }
     }
     if (Document::canCreate()) {
         return parent::canCreateItem();
     }
     return false;
 }
Esempio n. 2
0
 /**
  * @since version 0.90
  *
  * @param $rand
  **/
 function showTimelineForm($rand)
 {
     global $CFG_GLPI;
     //check global rights
     if (!Session::haveRight("ticket", Ticket::READMY) && !Session::haveRightsOr("followup", array(TicketFollowup::SEEPUBLIC, TicketFollowup::SEEPRIVATE))) {
         return false;
     }
     // javascript function for add and edit items
     echo "<script type='text/javascript' >\n";
     echo "function viewAddSubitem" . $this->fields['id'] . "{$rand}(itemtype) {\n";
     $params = array('type' => 'itemtype', 'parenttype' => 'Ticket', 'tickets_id' => $this->fields['id'], 'id' => -1);
     if (isset($_GET['load_kb_sol'])) {
         $params['load_kb_sol'] = $_GET['load_kb_sol'];
     }
     $out = Ajax::updateItemJsCode("viewitem" . $this->fields['id'] . "{$rand}", $CFG_GLPI["root_doc"] . "/ajax/timeline_viewsubitem.php", $params, "", false);
     echo str_replace("\"itemtype\"", "itemtype", $out);
     echo "};";
     $out = "function viewEditSubitem" . $this->fields['id'] . "{$rand}(e, itemtype, items_id, o) {\n\n               var target = e.target || window.event.srcElement;\n               if (target.nodeName == 'a') return;\n               if (target.className == 'read_more_button') return;";
     $params = array('type' => 'itemtype', 'parenttype' => 'Ticket', 'tickets_id' => $this->fields['id'], 'id' => 'items_id');
     $out .= Ajax::updateItemJsCode("viewitem" . $this->fields['id'] . "{$rand}", $CFG_GLPI["root_doc"] . "/ajax/timeline_viewsubitem.php", $params, "", false);
     $out = str_replace("\"itemtype\"", "itemtype", $out);
     $out = str_replace("\"items_id\"", "items_id", $out);
     echo $out;
     //scroll to edit form
     echo "\$('body').scrollTop(0);";
     echo "\$('.ui-tabs-panel').scrollTop(0);";
     // add a mark to currently edited element
     echo "var found_active = \$('.talk_active');\n            i = found_active.length;\n            while(i--) {\n               var classes = found_active[i].className.replace( /(?:^|\\s)talk_active(?!\\S)/ , '' );\n               found_active[i].className = classes;\n            }\n            o.className = o.className + ' talk_active';\n      };";
     if (isset($_GET['load_kb_sol'])) {
         echo "viewAddSubitem" . $this->fields['id'] . "{$rand}('Solution');";
     }
     echo "</script>\n";
     //check sub-items rights
     $tmp = array('tickets_id' => $this->getID());
     $fup = new TicketFollowup();
     $ttask = new TicketTask();
     $canadd_fup = TicketFollowup::canCreate() && $fup->can(-1, UPDATE, $tmp);
     $canadd_task = TicketTask::canCreate() && $ttask->can(-1, UPDATE, $tmp);
     $canadd_document = Document::canCreate();
     $canadd_solution = Ticket::canUpdate() && $this->canSolve();
     if (!$canadd_fup && !$canadd_task && !$canadd_document && !$canadd_solution) {
         return false;
     }
     //show choices
     if ($this->fields["status"] != CommonITILObject::SOLVED && $this->fields["status"] != CommonITILObject::CLOSED) {
         echo "<h2>" . _sx('button', 'Add') . " : </h2>";
         echo "<div class='timeline_form'>";
         echo "<ul class='timeline_choices'>";
         if ($canadd_fup) {
             echo "<li class='followup' onclick='" . "javascript:viewAddSubitem" . $this->fields['id'] . "{$rand}(\"TicketFollowup\");'>" . __("Followup") . "</li>";
         }
         if ($canadd_task) {
             echo "<li class='task' onclick='" . "javascript:viewAddSubitem" . $this->fields['id'] . "{$rand}(\"TicketTask\");'>" . __("Task") . "</li>";
         }
         if ($canadd_document) {
             echo "<li class='document' onclick='" . "javascript:viewAddSubitem" . $this->fields['id'] . "{$rand}(\"Document_Item\");'>" . __("Document") . "</li>";
         }
         if ($canadd_solution) {
             echo "<li class='solution' onclick='" . "javascript:viewAddSubitem" . $this->fields['id'] . "{$rand}(\"Solution\");'>" . __("Solution") . "</li>";
         }
         echo "</ul>";
         // timeline_choices
         echo "<div class='clear'>&nbsp;</div>";
         echo "</div>";
         //end timeline_form
     }
     echo "<div class='ajax_box' id='viewitem" . $this->fields['id'] . "{$rand}'></div>\n";
 }