diff --git a/front/processmaker.helpdesk.form.php b/front/processmaker.helpdesk.form.php index f8a1e08..d7c146c 100644 --- a/front/processmaker.helpdesk.form.php +++ b/front/processmaker.helpdesk.form.php @@ -30,506 +30,511 @@ function processMakerShowProcessList ($ID, $from_helpdesk) { } -function showFormHelpdesk($ID, $pmItem, $caseInfo, $ticket_template=false) { - global $DB, $CFG_GLPI; - - if (!Ticket::canCreate()) { - return false; - } - - if (!$ticket_template - && Session::haveRightsOr('ticketvalidation', TicketValidation::getValidateRights())) { - - $opt = array(); - $opt['reset'] = 'reset'; - $opt['criteria'][0]['field'] = 55; // validation status - $opt['criteria'][0]['searchtype'] = 'equals'; - $opt['criteria'][0]['value'] = CommonITILValidation::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, - '&'); - - if (TicketValidation::getNumberToValidate(Session::getLoginUserID()) > 0) { - echo "". - __('Tickets awaiting approval')."

"; - } - } - - $email = UserEmail::getDefaultForUser($ID); - $default_use_notif = Entity::getUsedConfig('is_notif_enable_default', $_REQUEST['entities_id'], '', 1); - - // Set default values... - $default_values = array('_users_id_requester_notif' - => array('use_notification' - => (($email == "")?0:$default_use_notif)), - 'nodelegate' => 1, - '_users_id_requester' => 0, - '_users_id_observer' => array(0), - '_users_id_observer_notif' - => array('use_notification' => $default_use_notif), - 'name' => '', - 'content' => '', - 'itilcategories_id' => 0, - 'locations_id' => 0, - 'urgency' => 3, - - 'items_id' => 0, - 'entities_id' => $_REQUEST['entities_id'], - 'plan' => array(), - 'global_validation' => CommonITILValidation::NONE, - '_add_validation' => 0, - 'type' => Entity::getUsedConfig('tickettype', - $_REQUEST['entities_id'], - '', Ticket::INCIDENT_TYPE), - '_right' => "id", - '_filename' => array(), - '_tag_filename' => array()); - - // Get default values from posted values on reload form - if (!$ticket_template) { - if (isset($_POST)) { - $values = Html::cleanPostForTextArea($_POST); - } - } - - $ticket = new Ticket(); - // Restore saved value or override with page parameter - if (!function_exists('restoreInput')) { - function restoreInput(Array $default=array()) { - - if (isset($_SESSION['saveInput']['Ticket'])) { - $saved = Html::cleanPostForTextArea($_SESSION['saveInput']['Ticket']); - - // clear saved data when restored (only need once) - unset($_SESSION['saveInput']['Ticket']); - - return $saved; - } - - return $default; - } - } - $saved = restoreInput(); - foreach ($default_values as $name => $value) { - if (!isset($values[$name])) { - if (isset($saved[$name])) { - $values[$name] = $saved[$name]; - } else { - $values[$name] = $value; - } - } - } - - // Check category / type validity - if ($values['itilcategories_id']) { - $cat = new ITILCategory(); - if ($cat->getFromDB($values['itilcategories_id'])) { - switch ($values['type']) { - case Ticket::INCIDENT_TYPE : - if (!$cat->getField('is_incident')) { - $values['itilcategories_id'] = 0; - } - break; - - case Ticket::DEMAND_TYPE : - if (!$cat->getField('is_request')) { - $values['itilcategories_id'] = 0; - } - break; - - default : - break; - } - } - } - - if (!$ticket_template) { - echo "
"; - } - - $delegating = User::getDelegateGroupsForUser($values['entities_id']); - - if (count($delegating)) { - echo "
"; - echo ""; - echo ""; - - echo "
".__('This ticket concerns me')." "; - - $rand = Dropdown::showYesNo("nodelegate", $values['nodelegate']); - - $params = array('nodelegate' => '__VALUE__', - 'rand' => $rand, - 'right' => "delegate", - '_users_id_requester' - => $values['_users_id_requester'], - '_users_id_requester_notif' - => $values['_users_id_requester_notif'], - 'use_notification' - => $values['_users_id_requester_notif']['use_notification'], - 'entity_restrict' - => $_REQUEST['entities_id']); - - Ajax::UpdateItemOnSelectEvent("dropdown_nodelegate".$rand, "show_result".$rand, - $CFG_GLPI["root_doc"]."/ajax/dropdownDelegationUsers.php", - $params); - - $class = 'right'; - if ($CFG_GLPI['use_check_pref'] && $values['nodelegate']) { - echo "".__('Check your personnal information'); - $class = 'center'; - } - - echo "
"; - echo "
"; - - $self = $ticket; // new self(); - if ($values["_users_id_requester"] == 0) { - $values['_users_id_requester'] = Session::getLoginUserID(); - } else { - $values['_right'] = "delegate"; - } - $self->showActorAddFormOnCreate(CommonITILActor::REQUESTER, $values); - echo "
"; - if ($CFG_GLPI['use_check_pref'] && $values['nodelegate']) { - echo "
"; - User::showPersonalInformation(Session::getLoginUserID()); - } - echo "
"; - echo ""; - - } else { - // User as requester - $values['_users_id_requester'] = Session::getLoginUserID(); - - if ($CFG_GLPI['use_check_pref']) { - echo "
"; - echo ""; - echo ""; - echo "
".__('Check your personnal information')."
"; - User::showPersonalInformation(Session::getLoginUserID()); - echo "
"; - } - } - - echo ""; - echo ""; - - // Load ticket template if available : - $tt = $ticket->getTicketTemplateToUse($ticket_template, $values['type'], - $values['itilcategories_id'], - $_REQUEST['entities_id']); - - // Predefined fields from template : reset them - if (isset($values['_predefined_fields'])) { - $values['_predefined_fields'] - = Toolbox::decodeArrayFromInput($values['_predefined_fields']); - } else { - $values['_predefined_fields'] = array(); - } - - // Store predefined fields to be able not to take into account on change template - $predefined_fields = array(); - - if (isset($tt->predefined) && count($tt->predefined)) { - foreach ($tt->predefined as $predeffield => $predefvalue) { - if (isset($values[$predeffield]) && isset($default_values[$predeffield])) { - // Is always default value : not set - // Set if already predefined field - // Set if ticket template change - if (((count($values['_predefined_fields']) == 0) - && ($values[$predeffield] == $default_values[$predeffield])) - || (isset($values['_predefined_fields'][$predeffield]) - && ($values[$predeffield] == $values['_predefined_fields'][$predeffield])) - || (isset($values['_tickettemplates_id']) - && ($values['_tickettemplates_id'] != $tt->getID()))) { - $values[$predeffield] = $predefvalue; - $predefined_fields[$predeffield] = $predefvalue; - } - } else { // Not defined options set as hidden field - echo ""; - } - } - // All predefined override : add option to say predifined exists - if (count($predefined_fields) == 0) { - $predefined_fields['_all_predefined_override'] = 1; - } - } else { // No template load : reset predefined values - if (count($values['_predefined_fields'])) { - foreach ($values['_predefined_fields'] as $predeffield => $predefvalue) { - if ($values[$predeffield] == $predefvalue) { - $values[$predeffield] = $default_values[$predeffield]; - } - } - } - } - - if (($CFG_GLPI['urgency_mask'] == (1<<3)) - || $tt->isHiddenField('urgency')) { - // Dont show dropdown if only 1 value enabled or field is hidden - echo ""; - } - - // Display predefined fields if hidden - if ($tt->isHiddenField('items_id')) { - - if (!empty($values['items_id'])) { - foreach ($values['items_id'] as $itemtype => $items) { - foreach ($items as $items_id) { - echo ""; - } - } - } - } - if ($tt->isHiddenField('locations_id')) { - echo ""; - } - echo ""; - echo ""; - echo "
"; - - echo ""; - - echo ""; - echo ""; - echo ""; - - echo ""; - echo ""; - echo ""; - - if ($CFG_GLPI['urgency_mask'] != (1<<3)) { - if (!$tt->isHiddenField('urgency')) { - echo ""; - echo ""; - echo ""; - } - } - - if (empty($delegating) - && NotificationTargetTicket::isAuthorMailingActivatedForHelpdesk()) { - echo ""; - echo ""; - echo ""; - } - if (($_SESSION["glpiactiveprofile"]["helpdesk_hardware"] != 0) - && (count($_SESSION["glpiactiveprofile"]["helpdesk_item_type"]))) { - if (!$tt->isHiddenField('itemtype')) { - echo ""; - echo ""; - echo ""; - } - } - - if (!$tt->isHiddenField('locations_id')) { - echo ""; - } - - if (!$tt->isHiddenField('_users_id_observer') - || $tt->isPredefinedField('_users_id_observer')) { - echo ""; - echo ""; - echo ""; - } - - if (!$tt->isHiddenField('name') - || $tt->isPredefinedField('name')) { - echo ""; - echo ""; - } - - if (!$tt->isHiddenField('content') - || $tt->isPredefinedField('content')) { - echo ""; - echo ""; - } - - echo ""; - echo ""; - - // File upload system - $width = '100%'; - if ($CFG_GLPI['use_rich_text']) { - $width = '50%'; - } - echo ""; - echo ""; - echo ""; - echo ""; - - echo ""; - echo ""; - echo ""; - - if (!$ticket_template) { - echo ""; - echo ""; - } - - echo "
".$caseInfo->processName.""; - - if (Session::isMultiEntitiesMode()) { - echo "(".Dropdown::getDropdownName("glpi_entities", $_REQUEST['entities_id']).")"; - } - echo "
".sprintf(__('%1$s%2$s'), __('Urgency'), $tt->getMandatoryMark('urgency')). - ""; - Ticket::dropdownUrgency(array('value' => $values["urgency"])); - echo "
".__('Inform me about the actions taken').""; - if ($values["_users_id_requester"] == 0) { - $values['_users_id_requester'] = Session::getLoginUserID(); - } - $_POST['value'] = $values['_users_id_requester']; - $_POST['field'] = '_users_id_requester_notif'; - $_POST['use_notification'] = $values['_users_id_requester_notif']['use_notification']; - include (GLPI_ROOT."/ajax/uemailUpdate.php"); - - echo "
".sprintf(__('%1$s%2$s'), _n('Watcher', 'Watchers', 2), - $tt->getMandatoryMark('_users_id_observer')).""; - $values['_right'] = "groups"; - - if (!$tt->isHiddenField('_users_id_observer')) { - // Observer - - if ($tt->isPredefinedField('_users_id_observer') - && !is_array($values['_users_id_observer'])) { - - //convert predefined value to array - $values['_users_id_observer'] = array($values['_users_id_observer']); - $values['_users_id_observer_notif']['use_notification'] = - array($values['_users_id_observer_notif']['use_notification']); - - // add new line to permit adding more observers - $values['_users_id_observer'][1] = 0; - $values['_users_id_observer_notif']['use_notification'][1] = 1; - } - - echo "
"; - if (isset($values['_users_id_observer'])) { - $observers = $values['_users_id_observer']; - foreach ($observers as $index_observer => $observer) { - $options = array_merge($values, array('_user_index' => $index_observer)); - Ticket::showFormHelpdeskObserver($options); - } - } - echo "
"; - - } else { // predefined value - if (isset($values["_users_id_observer"]) && $values["_users_id_observer"]) { - echo Ticket::getActorIcon('user', CommonITILActor::OBSERVER)." "; - echo Dropdown::getDropdownName("glpi_users", $values["_users_id_observer"]); - echo ""; - - } - } - echo "
"; - $rand = rand(); - $pmCaseUser = $caseInfo->currentUsers[0]; // by default - $paramsURL = "DEL_INDEX=".$pmCaseUser->delIndex."&action=".$caseInfo->caseStatus; - echo ""; - echo "
".sprintf(__('%1$s (%2$s)'), __('File'), Document::getMaxUploadSize()); - DocumentType::showAvailableTypesLink(); - echo ""; - echo "
"; - echo "
"; - echo ""; - echo ""; - if ($CFG_GLPI['use_rich_text']) { - echo ""; - } - echo "
"; - - echo Html::file(array('multiple' => true, - 'values' => array('filename' => $values['_filename'], - 'tag' => $values['_tag_filename']) - )); - // "
"; - echo "
"; - if (!isset($rand)) { - $rand = mt_rand(); - } - - echo Html::initImagePasteSystem($content_id, $rand); - echo "
"; - - echo "
"; - if (!$ticket_template) { - Html::closeForm(); - } -} +//function showFormHelpdesk($ID, $pmItem, $caseInfo, $ticket_template=false) { +// global $DB, $CFG_GLPI; + +// if (!Ticket::canCreate()) { +// return false; +// } + +// if (!$ticket_template +// && Session::haveRightsOr('ticketvalidation', TicketValidation::getValidateRights())) { + +// $opt = array(); +// $opt['reset'] = 'reset'; +// $opt['criteria'][0]['field'] = 55; // validation status +// $opt['criteria'][0]['searchtype'] = 'equals'; +// $opt['criteria'][0]['value'] = CommonITILValidation::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, +// '&'); + +// if (TicketValidation::getNumberToValidate(Session::getLoginUserID()) > 0) { +// echo "". +// __('Tickets awaiting approval')."

"; +// } +// } + +// $email = UserEmail::getDefaultForUser($ID); +// $default_use_notif = Entity::getUsedConfig('is_notif_enable_default', $_REQUEST['entities_id'], '', 1); + +// // Set default values... +// $default_values = array('_users_id_requester_notif' +// => array('use_notification' +// => (($email == "")?0:$default_use_notif)), +// 'nodelegate' => 1, +// '_users_id_requester' => 0, +// '_users_id_observer' => array(0), +// '_users_id_observer_notif' +// => array('use_notification' => $default_use_notif), +// 'name' => '', +// 'content' => '', +// 'itilcategories_id' => 0, +// 'locations_id' => 0, +// 'urgency' => 3, + +// 'items_id' => 0, +// 'entities_id' => $_REQUEST['entities_id'], +// 'plan' => array(), +// 'global_validation' => CommonITILValidation::NONE, +// '_add_validation' => 0, +// 'type' => Entity::getUsedConfig('tickettype', +// $_REQUEST['entities_id'], +// '', Ticket::INCIDENT_TYPE), +// '_right' => "id", +// '_filename' => array(), +// '_tag_filename' => array()); + +// // Get default values from posted values on reload form +// if (!$ticket_template) { +// if (isset($_POST)) { +// $values = Html::cleanPostForTextArea($_POST); +// } +// } + +// $ticket = new Ticket(); +// // Restore saved value or override with page parameter +// if (!function_exists('restoreInput')) { +// function restoreInput(Array $default=array()) { + +// if (isset($_SESSION['saveInput']['Ticket'])) { +// $saved = Html::cleanPostForTextArea($_SESSION['saveInput']['Ticket']); + +// // clear saved data when restored (only need once) +// unset($_SESSION['saveInput']['Ticket']); + +// return $saved; +// } + +// return $default; +// } +// } +// $saved = restoreInput(); +// foreach ($default_values as $name => $value) { +// if (!isset($values[$name])) { +// if (isset($saved[$name])) { +// $values[$name] = $saved[$name]; +// } else { +// $values[$name] = $value; +// } +// } +// } + +// // Check category / type validity +// if ($values['itilcategories_id']) { +// $cat = new ITILCategory(); +// if ($cat->getFromDB($values['itilcategories_id'])) { +// switch ($values['type']) { +// case Ticket::INCIDENT_TYPE : +// if (!$cat->getField('is_incident')) { +// $values['itilcategories_id'] = 0; +// } +// break; + +// case Ticket::DEMAND_TYPE : +// if (!$cat->getField('is_request')) { +// $values['itilcategories_id'] = 0; +// } +// break; + +// default : +// break; +// } +// } +// } + +// if (!$ticket_template) { +// echo ""; +// } + +// $delegating = User::getDelegateGroupsForUser($values['entities_id']); + +// if (count($delegating)) { +// echo "
"; +// echo ""; +// echo ""; + +// echo "
".__('This ticket concerns me')." "; + +// $rand = Dropdown::showYesNo("nodelegate", $values['nodelegate']); + +// $params = array('nodelegate' => '__VALUE__', +// 'rand' => $rand, +// 'right' => "delegate", +// '_users_id_requester' +// => $values['_users_id_requester'], +// '_users_id_requester_notif' +// => $values['_users_id_requester_notif'], +// 'use_notification' +// => $values['_users_id_requester_notif']['use_notification'], +// 'entity_restrict' +// => $_REQUEST['entities_id']); + +// Ajax::UpdateItemOnSelectEvent("dropdown_nodelegate".$rand, "show_result".$rand, +// $CFG_GLPI["root_doc"]."/ajax/dropdownDelegationUsers.php", +// $params); + +// $class = 'right'; +// if ($CFG_GLPI['use_check_pref'] && $values['nodelegate']) { +// echo "".__('Check your personnal information'); +// $class = 'center'; +// } + +// echo "
"; +// echo "
"; + +// $self = $ticket; // new self(); +// if ($values["_users_id_requester"] == 0) { +// $values['_users_id_requester'] = Session::getLoginUserID(); +// } else { +// $values['_right'] = "delegate"; +// } +// $self->showActorAddFormOnCreate(CommonITILActor::REQUESTER, $values); +// echo "
"; +// if ($CFG_GLPI['use_check_pref'] && $values['nodelegate']) { +// echo "
"; +// User::showPersonalInformation(Session::getLoginUserID()); +// } +// echo "
"; +// echo ""; + +// } else { +// // User as requester +// $values['_users_id_requester'] = Session::getLoginUserID(); + +// if ($CFG_GLPI['use_check_pref']) { +// echo "
"; +// echo ""; +// echo ""; +// echo "
".__('Check your personnal information')."
"; +// User::showPersonalInformation(Session::getLoginUserID()); +// echo "
"; +// } +// } + +// echo ""; +// echo ""; + +// // Load ticket template if available : +// $tt = $ticket->getTicketTemplateToUse($ticket_template, $values['type'], +// $values['itilcategories_id'], +// $_REQUEST['entities_id']); + +// // Predefined fields from template : reset them +// if (isset($values['_predefined_fields'])) { +// $values['_predefined_fields'] +// = Toolbox::decodeArrayFromInput($values['_predefined_fields']); +// } else { +// $values['_predefined_fields'] = array(); +// } + +// // Store predefined fields to be able not to take into account on change template +// $predefined_fields = array(); + +// if (isset($tt->predefined) && count($tt->predefined)) { +// foreach ($tt->predefined as $predeffield => $predefvalue) { +// if (isset($values[$predeffield]) && isset($default_values[$predeffield])) { +// // Is always default value : not set +// // Set if already predefined field +// // Set if ticket template change +// if (((count($values['_predefined_fields']) == 0) +// && ($values[$predeffield] == $default_values[$predeffield])) +// || (isset($values['_predefined_fields'][$predeffield]) +// && ($values[$predeffield] == $values['_predefined_fields'][$predeffield])) +// || (isset($values['_tickettemplates_id']) +// && ($values['_tickettemplates_id'] != $tt->getID()))) { +// $values[$predeffield] = $predefvalue; +// $predefined_fields[$predeffield] = $predefvalue; +// } +// } else { // Not defined options set as hidden field +// echo ""; +// } +// } +// // All predefined override : add option to say predifined exists +// if (count($predefined_fields) == 0) { +// $predefined_fields['_all_predefined_override'] = 1; +// } +// } else { // No template load : reset predefined values +// if (count($values['_predefined_fields'])) { +// foreach ($values['_predefined_fields'] as $predeffield => $predefvalue) { +// if ($values[$predeffield] == $predefvalue) { +// $values[$predeffield] = $default_values[$predeffield]; +// } +// } +// } +// } + +// if (($CFG_GLPI['urgency_mask'] == (1<<3)) +// || $tt->isHiddenField('urgency')) { +// // Dont show dropdown if only 1 value enabled or field is hidden +// echo ""; +// } + +// // Display predefined fields if hidden +// if ($tt->isHiddenField('items_id')) { + +// if (!empty($values['items_id'])) { +// foreach ($values['items_id'] as $itemtype => $items) { +// foreach ($items as $items_id) { +// echo ""; +// } +// } +// } +// } +// if ($tt->isHiddenField('locations_id')) { +// echo ""; +// } +// echo ""; +// echo ""; +// echo "
"; + +// echo ""; + +// echo ""; +// echo ""; +// echo ""; + +// echo ""; +// echo ""; +// echo ""; + +// if ($CFG_GLPI['urgency_mask'] != (1<<3)) { +// if (!$tt->isHiddenField('urgency')) { +// echo ""; +// echo ""; +// echo ""; +// } +// } + +// if (empty($delegating) +// && NotificationTargetTicket::isAuthorMailingActivatedForHelpdesk()) { +// echo ""; +// echo ""; +// echo ""; +// } +// if (($_SESSION["glpiactiveprofile"]["helpdesk_hardware"] != 0) +// && (count($_SESSION["glpiactiveprofile"]["helpdesk_item_type"]))) { +// if (!$tt->isHiddenField('itemtype')) { +// echo ""; +// echo ""; +// echo ""; +// } +// } + +// if (!$tt->isHiddenField('locations_id')) { +// echo ""; +// } + +// if (!$tt->isHiddenField('_users_id_observer') +// || $tt->isPredefinedField('_users_id_observer')) { +// echo ""; +// echo ""; +// echo ""; +// } + +// if (!$tt->isHiddenField('name') +// || $tt->isPredefinedField('name')) { +// echo ""; +// echo ""; +// } + +// if (!$tt->isHiddenField('content') +// || $tt->isPredefinedField('content')) { +// echo ""; +// echo ""; +// } + +// echo ""; +// echo ""; + +// // File upload system +// $width = '100%'; +// if ($CFG_GLPI['use_rich_text']) { +// $width = '50%'; +// } +// echo ""; +// echo ""; +// echo ""; +// echo ""; + +// echo ""; +// echo ""; +// echo ""; + +// if (!$ticket_template) { +// echo ""; +// echo ""; +// } + +// echo "
".$caseInfo->processName.""; + +// if (Session::isMultiEntitiesMode()) { +// echo "(".Dropdown::getDropdownName("glpi_entities", $_REQUEST['entities_id']).")"; +// } +// echo "
".sprintf(__('%1$s%2$s'), __('Urgency'), $tt->getMandatoryMark('urgency')). +// ""; +// Ticket::dropdownUrgency(array('value' => $values["urgency"])); +// echo "
".__('Inform me about the actions taken').""; +// if ($values["_users_id_requester"] == 0) { +// $values['_users_id_requester'] = Session::getLoginUserID(); +// } +// $_POST['value'] = $values['_users_id_requester']; +// $_POST['field'] = '_users_id_requester_notif'; +// $_POST['use_notification'] = $values['_users_id_requester_notif']['use_notification']; +// include (GLPI_ROOT."/ajax/uemailUpdate.php"); + +// echo "
".sprintf(__('%1$s%2$s'), _n('Watcher', 'Watchers', 2), +// $tt->getMandatoryMark('_users_id_observer')).""; +// $values['_right'] = "groups"; + +// if (!$tt->isHiddenField('_users_id_observer')) { +// // Observer + +// if ($tt->isPredefinedField('_users_id_observer') +// && !is_array($values['_users_id_observer'])) { + +// //convert predefined value to array +// $values['_users_id_observer'] = array($values['_users_id_observer']); +// $values['_users_id_observer_notif']['use_notification'] = +// array($values['_users_id_observer_notif']['use_notification']); + +// // add new line to permit adding more observers +// $values['_users_id_observer'][1] = 0; +// $values['_users_id_observer_notif']['use_notification'][1] = 1; +// } + +// echo "
"; +// if (isset($values['_users_id_observer'])) { +// $observers = $values['_users_id_observer']; +// foreach ($observers as $index_observer => $observer) { +// $options = array_merge($values, array('_user_index' => $index_observer)); +// Ticket::showFormHelpdeskObserver($options); +// } +// } +// echo "
"; + +// } else { // predefined value +// if (isset($values["_users_id_observer"]) && $values["_users_id_observer"]) { +// echo Ticket::getActorIcon('user', CommonITILActor::OBSERVER)." "; +// echo Dropdown::getDropdownName("glpi_users", $values["_users_id_observer"]); +// echo ""; + +// } +// } +// echo "
"; +// $rand = rand(); +// $pmCaseUser = $caseInfo->currentUsers[0]; // by default +// $paramsURL = "DEL_INDEX=".$pmCaseUser->delIndex."&action=".$caseInfo->caseStatus; +// echo ""; +// echo "
".sprintf(__('%1$s (%2$s)'), __('File'), Document::getMaxUploadSize()); +// DocumentType::showAvailableTypesLink(); +// echo ""; +// echo "
"; +// echo "
"; +// echo ""; +// echo ""; +// if ($CFG_GLPI['use_rich_text']) { +// echo ""; +// } +// echo "
"; + +// echo Html::file(array('multiple' => true, +// 'values' => array('filename' => $values['_filename'], +// 'tag' => $values['_tag_filename']) +// )); +// // "
"; +// echo "
"; +// if (!isset($rand)) { +// $rand = mt_rand(); +// } + +// echo Html::initImagePasteSystem($content_id, $rand); +// echo "
"; + +// echo "
"; +// if (!$ticket_template) { +// Html::closeForm(); +// } +//} @@ -547,13 +552,87 @@ function processMakerShowCase( $ID, $from_helpdesk ) { $rand = rand(); - echo ""; //?rand=$rand' + echo ""; - showFormHelpdesk(Session::getLoginUserID(), $pmItem, $caseInfo); + $tkt = new Ticket; + + // to get the HTML code for the helpdesk form + $saved_ob_level = ob_get_level(); + ob_start(); + + // as showFormHelpdesk uses $_POST, we must set it + $_POST = $_REQUEST; + $tkt->showFormHelpdesk($ID); + $buffer = ob_get_clean(); + + // 9.1 only: hack to fix an issue with the initEditorSystem which calls scriptStart without calling scriptEnd + if (ob_get_level() > $saved_ob_level) { + $buffer = ob_get_clean().$buffer; + } + + //echo $buffer; + //return; + + // to change this HTML code + $dom = new DOMDocument(); + $dom->loadHTML($buffer, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD | LIBXML_NOXMLDECL); + $xpath = new DOMXPath($dom); + + // hide some fields + $list = [ 'name', 'type', 'locations_id', 'itilcategories_id', 'items_id', 'add' ] ; + $xpath_str = '//*[@name="'.implode( '"]/ancestor::tr[1] | //*[@name="', $list ).'"]/ancestor::tr[1]'; + $res = $xpath->query($xpath_str); + foreach($res as $elt) { + $elt->setAttribute( 'style', 'display:none;'); + } + + // special case for content textarea which is in the same tr than the file upload + $res = $xpath->query('//*[@name="content"]/ancestor::div[1] | //*[@name="content"]/ancestor::tr[1]/td[1]'); + foreach($res as $elt) { + $elt->setAttribute( 'style', 'display:none;'); + } + + $res = $xpath->query('//*[@name="content"]/ancestor::td[1]'); + foreach($res as $elt) { + // there should be only one td + $elt->setAttribute( 'colspan', '2'); + } + + //$res = $xpath->query('//*[@name="content"]/ancestor::tr[1]'); + $res = $xpath->query('//*[@name="add"]/ancestor::tr[@class="tab_bg_1"]/preceding-sibling::tr[1]'); + $table = $xpath->query('//*[@name="add"]/ancestor::table[1]'); + + $tr = $table->item(0)->insertBefore(new DOMElement('tr'), $res->item(0)); + //$tr = $table->item(0)->appendChild(new DOMElement('tr')); + + $td = $tr->appendChild(new DOMElement('td')); + $td->setAttribute('colspan', '2'); + + $iframe = $td->appendChild(new DOMElement('iframe')); + + $pmCaseUser = $caseInfo->currentUsers[0]; // by default + $paramsURL = "DEL_INDEX={$pmCaseUser->delIndex}&action={$caseInfo->caseStatus}"; + + $iframe->setAttribute('id', 'caseiframe' ) ; + $iframe->setAttribute('onload', "onLoadFrame( event, '{$caseInfo->caseId}', {$pmCaseUser->delIndex}, {$caseInfo->caseNumber}, '{$caseInfo->processName}') ;" ) ; + $iframe->setAttribute('width', '100%' ) ; + $iframe->setAttribute('style', 'border:none;' ) ; + $iframe->setAttribute('src', "{$pmItem->serverURL}/cases/cases_Open?sid={$_SESSION["pluginprocessmaker"]["session"]["id"]}&APP_UID={$caseInfo->caseId}&{$paramsURL}&rand=$rand&glpi_domain={$pmItem->config->fields['domain']}" ) ; + + // set the width and the title of the first table th + $th = $xpath->query('//*[@name="add"]/ancestor::table[1]/*/th[1]'); + $th->item(0)->setAttribute('width', '30%'); + $th->item(0)->nodeValue = $caseInfo->processName; + + $buffer = $dom->saveHTML(); + + echo $buffer; + //showFormHelpdesk($ID, $pmItem, $caseInfo); } } + function in_array_recursive($needle, $haystack) { $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($haystack)); diff --git a/js/domain.js.php b/js/domain.js.php index 75b3001..f77a19a 100644 --- a/js/domain.js.php +++ b/js/domain.js.php @@ -11,7 +11,7 @@ if( isset($config->fields['domain']) && $config->fields['domain'] != '' ) { g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.type = 'text/javascript'; - g.text = 'document.domain = \'".$config->fields['domain']."\';'; + g.text = 'try { document.domain = \'".$config->fields['domain']."\'; } catch(ev) { /*console.log(ev);*/ }'; s.parentNode.insertBefore(g, s); " ; } diff --git a/processmaker.xml b/processmaker.xml index 2ff94ed..df35907 100644 --- a/processmaker.xml +++ b/processmaker.xml @@ -23,11 +23,11 @@ - 3.2.3 + 3.2.4 9.2 - 3.2.3 + 3.2.4 9.1 diff --git a/setup.php b/setup.php index f6d8fd9..5f88c43 100644 --- a/setup.php +++ b/setup.php @@ -37,6 +37,11 @@ function plugin_init_processmaker() { $PLUGIN_HOOKS['pre_show_item']['processmaker'] = array('PluginProcessmakerProcessmaker', 'pre_show_item_processmakerticket'); + //$PLUGIN_HOOKS['pre_item_form']['processmaker'] + // = array('PluginProcessmakerProcessmaker', 'pre_item_form_processmakerticket'); + //$PLUGIN_HOOKS['post_item_form']['processmaker'] + // = array('PluginProcessmakerProcessmaker', 'post_item_form_processmakerticket'); + $PLUGIN_HOOKS['pre_show_tab']['processmaker'] = array('PluginProcessmakerProcessmaker', 'pre_show_tab_processmaker'); $PLUGIN_HOOKS['post_show_tab']['processmaker'] @@ -114,7 +119,7 @@ function plugin_version_processmaker() { global $LANG; return array ('name' => 'Process Maker', - 'version' => '3.2.3', + 'version' => '3.2.4', 'author' => 'Olivier Moron', 'homepage' => 'https://github.com/tomolimo/processmaker', 'minGlpiVersion' => '9.1');