Cherry pick from 3.5.10 to 3.6.16
Added feature GLPI_TASK_PREVENT_REASSIGN to prevent assignment of a list of users (can be PM UID, GLPI id, GLPI logon) to a specific task (can be task list) Cherry pick from 3.4.24 to 3.6.15 Cherry pick from 3.4.23 Added a proxy and SSL mangement to external application calls Added an escape DB for ticket name and ticket solution description Updated translation Added swingcall.php file (to test swing api) Set version to 3.6.14 Cherry pick from version 3.4.22 Added a new case variable to be able to create information tasks GLPI_ITEM_INFORMATION_TASK Cherry pick from 3.4.21 Revert back $_REQUEST into $_POST cherry pick from version 3.4.20 Added Send reminder Added unclaim task Rewrite some code for clearer maintenance commented line HTTPROXY setup Bugfixe : remove the default setting of a followup bugfixes: - list the processes according to the type of ticket (request or incident). - set variable 'content' according to the variable sent by processmaker in the addItemFollowup function - logged error information of curl Set content to tinymce content field Bugfixes : Update the taskId (value and letter case) Bugfixes requests. bad syntax with the new ORM Changed folder properties Changed text Deleted unused param Added a hook to manage the change of user login Cleaning of unused code Set version to 3.6.8 add condition to set user = admin when script is run in crontask fixes
This commit is contained in:
@@ -87,11 +87,6 @@ $count = 0;
|
||||
}
|
||||
//}
|
||||
|
||||
if (!function_exists('dpuser_cmp')) {
|
||||
function dpuser_cmp($a, $b) {
|
||||
return strcasecmp($a, $b);
|
||||
}
|
||||
}
|
||||
|
||||
$datas = [];
|
||||
|
||||
|
||||
@@ -18,31 +18,120 @@ if (!defined('GLPI_ROOT')) {
|
||||
|
||||
Session::checkLoginUser();
|
||||
|
||||
$commoninputs = "<input type='hidden' name='items_id' value='".$_REQUEST['items_id']."'>".
|
||||
"<input type='hidden' name='itemtype' value='".$_REQUEST['itemtype']."'>".
|
||||
"<input type='hidden' name='cases_id' value='".$_REQUEST['cases_id']."'>".
|
||||
"<input type='hidden' name='delIndex' value='".$_REQUEST['delIndex']."'>".
|
||||
"<input type='hidden' name='users_id' value='".$_REQUEST['users_id']."'>".
|
||||
"<input type='hidden' name='taskGuid' value='".$_REQUEST['taskGuid']."'>".
|
||||
"<input type='hidden' name='delThread' value='".$_REQUEST['delThread']."'>".
|
||||
"<input type='hidden' name='tasktype' value='".$_REQUEST['tasktype']."'>".
|
||||
"<input type='hidden' name='tasks_id' value='".$_REQUEST['tasks_id']."'>";
|
||||
|
||||
$PM_SOAP = new PluginProcessmakerProcessmaker; // not used in this context, just here to define the type of $PM_SOAP
|
||||
$PM_DB = new PluginProcessmakerDB;
|
||||
$rand = rand();
|
||||
|
||||
echo "<form style='margin-bottom: 0px' name='processmaker_form_task$rand-".$_REQUEST['delIndex']."' id='processmaker_form_task$rand-".$_REQUEST['delIndex']."' method='post' action='".Toolbox::getItemTypeFormURL("PluginProcessmakerProcessmaker")."'>";
|
||||
echo __('Re-assign task to', 'processmaker')." ";
|
||||
echo "<input type='hidden' name='action' value='unpausecase_or_reassign_or_delete'>";
|
||||
echo "<input type='hidden' name='items_id' value='".$_REQUEST['items_id']."'>";
|
||||
echo "<input type='hidden' name='itemtype' value='".$_REQUEST['itemtype']."'>";
|
||||
echo "<input type='hidden' name='cases_id' value='".$_REQUEST['cases_id']."'>";
|
||||
echo "<input type='hidden' name='delIndex' value='".$_REQUEST['delIndex']."'>";
|
||||
echo "<input type='hidden' name='users_id' value='".$_REQUEST['users_id']."'>";
|
||||
echo "<input type='hidden' name='taskGuid' value='".$_REQUEST['taskGuid']."'>";
|
||||
echo "<input type='hidden' name='delThread' value='".$_REQUEST['delThread']."'>";
|
||||
echo "<input type='hidden' name='action' value='reassign_reminder'>";
|
||||
echo "<input type='hidden' name='comment' value=''>";
|
||||
echo $commoninputs;
|
||||
|
||||
$can_unclaim = false; // by default
|
||||
$query = "SELECT TAS_GROUP_VARIABLE FROM TASK WHERE TAS_UID='".$_REQUEST['taskGuid']."' AND TAS_ASSIGN_TYPE='SELF_SERVICE';";
|
||||
$res = $PM_DB->query($query);
|
||||
if ($PM_DB->numrows($res) > 0) {
|
||||
$can_unclaim = true;
|
||||
}
|
||||
|
||||
PluginProcessmakerUser::dropdown( ['name' => 'users_id_recipient',
|
||||
'value' => $_REQUEST['users_id'],
|
||||
'used' => [$_REQUEST['users_id']],
|
||||
'used' => $_REQUEST['used'],
|
||||
'entity' => 0, //$item->fields["entities_id"], // not used, as any user can be assigned to any tasks
|
||||
'entity_sons' => false, // not used, as any user can be assigned to any tasks
|
||||
'right' => 'all',
|
||||
'rand' => $rand,
|
||||
'width' => '',
|
||||
'specific_tags' => ['taskGuid' => $_REQUEST['taskGuid']]]);
|
||||
echo " ";
|
||||
echo "<input type='submit' name='reassign' value='".__('Re-assign', 'processmaker')."' class='submit'>";
|
||||
Html::closeForm(true);
|
||||
'specific_tags' => ['taskGuid' => $_REQUEST['taskGuid']]
|
||||
]);
|
||||
|
||||
echo " ";
|
||||
echo "<input type='submit' name='reassign$rand' value='".__('Re-assign', 'processmaker')."' class='submit'>";
|
||||
echo "<input type='submit' name='reassign' value='".__('Re-assign', 'processmaker')."' class='submit' style='display:none'>";
|
||||
|
||||
echo HTML::scriptBlock("
|
||||
$(function () {
|
||||
// Dialog helpers
|
||||
// Create the dialog with \"Re-assign\" button
|
||||
function showCommentDlg(title, content, alttext) {
|
||||
|
||||
var dlgContents = {
|
||||
title: title,
|
||||
modal: true,
|
||||
width: 'auto',
|
||||
height: 'auto',
|
||||
resizable: false,
|
||||
close: function (event, ui) {
|
||||
$(this).dialog('destroy').remove();
|
||||
},
|
||||
buttons: [{
|
||||
text: alttext,
|
||||
id: 'submit$rand',
|
||||
disabled: 'disabled',
|
||||
click: function() {
|
||||
$('#processmaker_form_task$rand-".$_REQUEST['delIndex']." input[name=comment]').val($('#comment$rand').val());
|
||||
//$('#processmaker_form_task$rand-".$_REQUEST['delIndex']."').submit();
|
||||
$('input[name=reassign').click();
|
||||
$('#submit$rand').button('disable');
|
||||
}
|
||||
}],
|
||||
show: true,
|
||||
hide: true
|
||||
}
|
||||
$('<div id=reassign$rand></div>').appendTo($('#processmaker_form_task$rand-".$_REQUEST['delIndex']."'));
|
||||
var locDlg = $('#reassign$rand').html(content + '<p><textarea id=comment$rand rows=6 cols=60></textarea></p><font color=red>Input at least 10 words in English to justify.</font>').dialog(dlgContents);
|
||||
$('#comment$rand').focus();
|
||||
$('#comment$rand').on('keydown keyup', function(e) {
|
||||
if ($('#comment$rand').val().split(/\W+/).length > 10) {
|
||||
$('#submit$rand').button('enable');
|
||||
} else {
|
||||
$('#submit$rand').button('disable');
|
||||
}
|
||||
});
|
||||
|
||||
return locDlg;
|
||||
};
|
||||
|
||||
$('input[name=reassign$rand]').click(function (e) {
|
||||
e.preventDefault();
|
||||
if ($('input[name=users_id]').val() == $('input[name=users_id_recipient]').val()) {
|
||||
// task is already assigned to this user
|
||||
alert('".__('Task is already assigned to this user or group!', 'processmaker')."', '".__('Re-assign task', 'processmaker')."');
|
||||
} else if ($('input[name=users_id_recipient]').val() == 0) {
|
||||
// un-claim
|
||||
if (".($can_unclaim ? 1 : 0)." && $('input[name=users_id]').val() != 0) {
|
||||
showCommentDlg('".__('Un-claim task', 'processmaker')."',
|
||||
'".__('Please input reason to un-claim<br/>(task will be re-assigned to former group):', 'processmaker')."',
|
||||
'".__('Un-claim', 'processmaker')."');
|
||||
} else {
|
||||
// task can't be unclaim because it isn't SELF_SERVICE
|
||||
alert('".__('Can\\\'t un-assign Task!', 'processmaker')."', '".__('Un-claim task', 'processmaker')."');
|
||||
}
|
||||
} else {
|
||||
showCommentDlg('".__('Re-assign task', 'processmaker')."',
|
||||
'".__('Please input reason to re-assign:', 'processmaker')."',
|
||||
'".__('Re-assign', 'processmaker')."');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
})
|
||||
");
|
||||
|
||||
|
||||
if (Session::getLoginUserID() != $_REQUEST['users_id']) {
|
||||
echo " ";
|
||||
echo "<input type='submit' name='reminder' value='".__('Send reminder', 'processmaker')."' class='submit'>";
|
||||
}
|
||||
|
||||
Html::closeForm(true);
|
||||
|
||||
@@ -62,7 +62,7 @@ switch ($_POST["action"]) {
|
||||
// Must show it...
|
||||
//
|
||||
$rand = rand( );
|
||||
Html::redirect($CFG_GLPI['root_doc']."/plugins/processmaker/front/processmaker.helpdesk.form.php?processes_id=".$_POST['plugin_processmaker_processes_id']."&case_guid=".$resultCase->caseId."&rand=$rand&itilcategories_id=".$_POST["itilcategories_id"]."&type=".$_REQUEST["type"]."&entities_id=".$_REQUEST['entities_id']);
|
||||
Html::redirect($CFG_GLPI['root_doc']."/plugins/processmaker/front/processmaker.helpdesk.form.php?processes_id=".$_POST['plugin_processmaker_processes_id']."&case_guid=".$resultCase->caseId."&rand=$rand&itilcategories_id=".$_POST["itilcategories_id"]."&type=".$_POST["type"]."&entities_id=".$_POST['entities_id']);
|
||||
|
||||
} else {
|
||||
Session::addMessageAfterRedirect( PluginProcessmakerProcessmaker::getPMErrorMessage($resultCase->status_code)."<br>$resultCase->message ($resultCase->status_code)", true, ERROR);
|
||||
@@ -72,92 +72,53 @@ switch ($_POST["action"]) {
|
||||
}
|
||||
break;
|
||||
|
||||
case 'unpausecase_or_reassign_or_delete' :
|
||||
if (isset($_POST['unpause'])) {
|
||||
$locCase = new PluginProcessmakerCase;
|
||||
$locCase->getFromDB($_POST['cases_id']);
|
||||
$pmResultUnpause = $locCase->unpauseCase($_POST['delIndex'], $_POST['users_id']);
|
||||
if ($pmResultUnpause->status_code == 0) {
|
||||
Html::back();
|
||||
} else {
|
||||
echo "Error unpausing case: ".$pmResultUnpause->message." \n";
|
||||
}
|
||||
} else if (isset($_POST['reassign'])) {
|
||||
case 'reassign_reminder' :
|
||||
if (isset($_POST['reassign'])) {
|
||||
// here we should re-assign the current task to $_POST['users_id_recipient']
|
||||
//$GLPINewPMUserId = PluginProcessmakerUser::getPMUserId( $_POST['users_id_recipient'] );
|
||||
if ($_POST['users_id'] != $_POST['users_id_recipient'] && $_POST['users_id_recipient'] != 0) { // normally should be different as of the dropdown prevents already used
|
||||
$locCase = new PluginProcessmakerCase;
|
||||
$locCase->getFromDB($_POST['cases_id']);
|
||||
|
||||
if ($_POST['users_id_recipient'] != 0) {
|
||||
// we are assigning a new tech to a task
|
||||
$pmResponse = $locCase->reassignCase($_POST['delIndex'],
|
||||
$_POST['taskGuid'],
|
||||
$_POST['delThread'],
|
||||
$_POST['users_id'],
|
||||
$_POST['users_id_recipient']);
|
||||
$_POST['users_id_recipient'],
|
||||
['comment' => $_POST['comment']]);
|
||||
if ($pmResponse) {
|
||||
Session::addMessageAfterRedirect(__('Task re-assigned!', 'processmaker'), true, INFO);
|
||||
} else {
|
||||
Session::addMessageAfterRedirect(__('Error re-assigning task: ', 'processmaker').$pmResponse->message, true, ERROR);
|
||||
}
|
||||
} elseif ($_POST['users_id_recipient'] == 0) {
|
||||
// we are unassigning a task, i.e.: task un-claim
|
||||
$pmResponse = $locCase->unassignCase($_POST['delIndex'],
|
||||
$_POST['taskGuid'],
|
||||
$_POST['tasktype'],
|
||||
$_POST['tasks_id'],
|
||||
$_POST['itemtype'],
|
||||
['comment' => $_POST['comment']]);
|
||||
if ($pmResponse) {
|
||||
Session::addMessageAfterRedirect(__('Task un-claimed!', 'processmaker'), true, INFO);
|
||||
} else {
|
||||
if ($_POST['users_id_recipient'] == 0) {
|
||||
Session::addMessageAfterRedirect(__('Can\'t un-assign Task!', 'processmaker'), true, ERROR);
|
||||
} else {
|
||||
if ($_POST['users_id'] === $_POST['users_id_recipient'] ) { // normally should be different as of the dropdown prevents already used
|
||||
Session::addMessageAfterRedirect(__('Task already assigned to this person!', 'processmaker'), true, ERROR);
|
||||
Session::addMessageAfterRedirect(__("Can't un-claim task! Verify 'Assignement Rules' in the process definition.", 'processmaker'), true, ERROR);
|
||||
}
|
||||
}
|
||||
} elseif (isset($_POST['reminder'])) {
|
||||
// send notification remider as requested for this task
|
||||
|
||||
$locCase = new PluginProcessmakerCase;
|
||||
$locCase->getFromDB($_POST['cases_id']);
|
||||
$glpi_item = new $_POST['itemtype'];
|
||||
$glpi_item->getFromDB($_POST['items_id']);
|
||||
$pm_task = new PluginProcessmakerTask($_POST['tasktype']);
|
||||
$pm_task->getFromDB($_POST['tasks_id']);
|
||||
$glpi_task = new $_POST['tasktype'];
|
||||
$glpi_task->getFromDB($_POST['tasks_id']);
|
||||
|
||||
// send notification now!
|
||||
$pm_task->sendNotification('task_reminder', $glpi_task, $glpi_item, $locCase);
|
||||
}
|
||||
//} else if (isset($_POST['delete'])) {
|
||||
// // delete case from case table, this will also delete the tasks
|
||||
// $locCase = new PluginProcessmakerCase;
|
||||
// if ($locCase->getFromDB($_POST['cases_id']) && $locCase->deleteCase()) {
|
||||
// // request delete from pm itself
|
||||
// $PM_SOAP->login(true);
|
||||
|
||||
// $resultPM = $PM_SOAP->deleteCase($locCase->fields['case_guid']);
|
||||
|
||||
// if ($resultPM->status_code == 0) {
|
||||
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['deleted'], true, INFO);
|
||||
// } else {
|
||||
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errordeleted'], true, ERROR);
|
||||
// }
|
||||
// } else {
|
||||
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errordeleted'], true, ERROR);
|
||||
// }
|
||||
//} else if (isset($_POST['cancel'])) {
|
||||
// // cancel case from PM
|
||||
// $locCase = new PluginProcessmakerCase;
|
||||
// $locCase->getFromDB($_POST['cases_id']);
|
||||
// $resultPM = $PM_SOAP->cancelCase($locCase->fields['case_guid']); //, $_POST['plugin_processmaker_del_index'], $_POST['plugin_processmaker_users_id'] ) ;
|
||||
// if ($resultPM->status_code === 0) {
|
||||
// //$locCase = new PluginProcessmakerCase;
|
||||
// //$locCase->getFromDB($_POST['cases_id']);
|
||||
// if ($locCase->cancelCase()) {
|
||||
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['cancelled'], true, INFO);
|
||||
// } else {
|
||||
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errorcancelled'], true, ERROR);
|
||||
// }
|
||||
// } else {
|
||||
// if ($resultPM->status_code == 100 && $locCase->deleteCase()) { // case is draft then delete it
|
||||
// // request delete from pm itself
|
||||
// $PM_SOAP->login(true);
|
||||
|
||||
// $resultPM = $PM_SOAP->deleteCase($locCase->fields['case_guid']);
|
||||
|
||||
// if ($resultPM->status_code == 0) {
|
||||
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['deleted'], true, INFO);
|
||||
// } else {
|
||||
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errordeleted'], true, ERROR);
|
||||
// }
|
||||
// } else {
|
||||
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errorcancelled']. " " . $resultPM->message, true, ERROR);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// to return to item
|
||||
|
||||
51
hook.php
51
hook.php
@@ -180,7 +180,10 @@ function plugin_pre_item_update_processmaker(CommonITILObject $parm) {
|
||||
* @param mixed $parm is the object
|
||||
*/
|
||||
function plugin_item_update_processmaker_satisfaction($parm) {
|
||||
|
||||
global $PM_SOAP;
|
||||
if (Session::isCron()) { // Task cron log with user admin
|
||||
$PM_SOAP->login(true);
|
||||
}
|
||||
$cases = PluginProcessmakerCase::getIDsFromItem('Ticket', $parm->fields['tickets_id']);
|
||||
foreach ($cases as $cases_id) {
|
||||
$locCase = new PluginProcessmakerCase;
|
||||
@@ -192,6 +195,33 @@ function plugin_item_update_processmaker_satisfaction($parm) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of plugin_item_update_processmaker_user
|
||||
* When a user login is changed, then must change it in the PM tables
|
||||
* @param User $param is the user being changed
|
||||
*/
|
||||
function plugin_item_update_processmaker_user(User $param) {
|
||||
// Must test if user login has been changed
|
||||
// if yes, must change the login in the PM tables:
|
||||
// USERS and RBAC_USERS, othewise the link in the processmaker_users table will be invalid
|
||||
if (in_array('name', $param->updates)) {
|
||||
// check if user is in the processmaker_user table
|
||||
$pm_user = PluginProcessmakerUser::getPMUserId($param->getID());
|
||||
if ($pm_user) {
|
||||
// must update the user in PM tables
|
||||
global $PM_SOAP;
|
||||
if ($param->fields['is_active'] == 0 || $param->fields['is_deleted'] == 1) {
|
||||
$status = "INACTIVE";
|
||||
} else {
|
||||
$status = "ACTIVE";
|
||||
}
|
||||
$PM_SOAP->login(true);
|
||||
$pmResult = $PM_SOAP->updateUser( $pm_user, $param->fields['name'], $param->fields['firstname'], $param->fields['realname'], $status );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function plugin_processmaker_post_init() {
|
||||
global $PM_DB, $PM_SOAP;
|
||||
if (!isset($PM_DB)) {
|
||||
@@ -376,15 +406,22 @@ function plugin_item_update_processmaker_tasks($parm) {
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'Content-Length: ' . strlen($externalapplicationparams), 'Expect:']);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, 1);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $pmconfig->fields['ssl_verify']);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $pmconfig->fields['ssl_verify']);
|
||||
|
||||
//curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1 ) ;
|
||||
//curl_setopt($ch, CURLOPT_PROXY, "localhost:8889");
|
||||
if (isset($externalapplication['ssl_verify'])) {
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $externalapplication['ssl_verify']);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $externalapplication['ssl_verify']);
|
||||
}
|
||||
|
||||
if (isset($externalapplication['proxy'])) {
|
||||
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1 ) ;
|
||||
curl_setopt($ch, CURLOPT_PROXY, $externalapplication['proxy']);
|
||||
}
|
||||
|
||||
$response = curl_exec ($ch);
|
||||
|
||||
//Toolbox::logDebug( $response ) ;
|
||||
if ($response === false) {
|
||||
//throw new Exception(curl_error($ch), curl_errno($ch));
|
||||
Toolbox::logDebug( curl_error($ch).":".curl_errno($ch) );
|
||||
}
|
||||
|
||||
curl_close ($ch);
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
//static public $items_id = 'items_id'; // Field name
|
||||
static $rightname = 'plugin_processmaker_case';
|
||||
|
||||
private $process = null;
|
||||
|
||||
const DRAFT = 'DRAFT';
|
||||
const TO_DO = 'TO_DO';
|
||||
const COMPLETED = 'COMPLETED';
|
||||
@@ -221,6 +223,123 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of unassignCase
|
||||
* Will unassign the delIndex task, restoring the assigned group
|
||||
* @param $delIndex int the delegation index
|
||||
* @param $taskGuid string the GUID of the task
|
||||
* @param $tasktype string the type of task (TicketTask, ChangeTask, ProblemTask)
|
||||
* @param $tasks_id int the id of the task
|
||||
* @param $itemtype string the type of the ITIL object (Ticket, Change, Problem)
|
||||
* @return bool
|
||||
*/
|
||||
function unassignCase($delIndex, $taskGuid, $tasktype, $tasks_id, $itemtype, $options) {
|
||||
global $PM_DB, $PM_SOAP, $DB;
|
||||
|
||||
// un-claim task
|
||||
// will unclaim the task
|
||||
// to unclaim a task, we must un-assign the task in the APP_DELEGATION table
|
||||
// and un-assign the task in glpi_itemtypeTask table
|
||||
$groupname = '';
|
||||
|
||||
// should get the group that is assigned to the task in SELF_SERVICE assign type
|
||||
$query = "SELECT TAS_GROUP_VARIABLE FROM TASK WHERE TAS_UID='".$taskGuid."' AND TAS_ASSIGN_TYPE='SELF_SERVICE' LIMIT 1;";
|
||||
foreach($PM_DB->request($query) as $pmGroup) {
|
||||
// should have only one record
|
||||
if ($pmGroup['TAS_GROUP_VARIABLE'] == '') {
|
||||
// then we are in the self-service with a group in the TASK_USER table
|
||||
// TU_RELATION=2 is groups and TU_TYPE=1 means normal (= not adhoc)
|
||||
// then get the group name from the CONTENT table
|
||||
$query = "SELECT CONTENT.CON_VALUE FROM TASK_USER
|
||||
JOIN CONTENT ON CONTENT.CON_ID=TASK_USER.USR_UID AND CONTENT.CON_CATEGORY='GRP_TITLE' AND CONTENT.CON_LANG = 'en'
|
||||
WHERE TASK_USER.TAS_UID='".$taskGuid."' AND TASK_USER.TU_RELATION=2 AND TASK_USER.TU_TYPE=1 LIMIT 1;";
|
||||
|
||||
foreach ($PM_DB->request($query) as $onlyrec) {
|
||||
$groupname = $onlyrec['CON_VALUE'];
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
// then we are in the self-service with a case variable that contains either a group either an array of users
|
||||
// array of users is not yet supported by PM plugin, as GLPI tasks have one and only one users_id_tech.
|
||||
// group guid (in the case variable) must be retrieved from APP DATA
|
||||
|
||||
// TODO
|
||||
////////////////////////////////////////////////////////////////
|
||||
// Currently this case is not manageable by GLPI
|
||||
// as GLPI needs at least a user or a group to be assigned to a task
|
||||
// and when using the self-service value based assignment, there
|
||||
// is a case variable that contains a list of users. This list of users cannot be mapped to a group in GLI
|
||||
// OR may be we may create an artificial group in GLPI that would contains the list of users
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
// and then we get the name of the group from the CONTENT table
|
||||
//$query = "SELECT CON_VALUE FROM CONTENT
|
||||
// WHERE CONTENT.CON_ID='$groupId' AND CONTENT.CON_CATEGORY='GRP_TITLE' AND CONTENT.CON_LANG='en' ;";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$groups_id_tech = PluginProcessmakerProcessmaker::getGLPIGroupId($groupname);
|
||||
|
||||
if ($groups_id_tech) {
|
||||
// unclaim the case only when a GLPI group can be found
|
||||
|
||||
$query = "UPDATE APP_DELEGATION SET USR_UID='', DEL_INIT_DATE=NULL, USR_ID=0 WHERE APP_NUMBER=".$this->getID()." AND DEL_INDEX=$delIndex;";
|
||||
$PM_DB->query($query);
|
||||
|
||||
$glpi_task = new $tasktype;
|
||||
$glpi_task->getFromDB($tasks_id);
|
||||
$foreignkey = getForeignKeyFieldForItemType( $itemtype );
|
||||
|
||||
$donotif = PluginProcessmakerNotificationTargetProcessmaker::saveNotificationState(false); // do not send notification yet
|
||||
$glpi_task->update( ['id' => $glpi_task->getID(),
|
||||
$foreignkey => $glpi_task->fields[$foreignkey],
|
||||
'users_id_tech' => 0,
|
||||
'groups_id_tech' => $groups_id_tech,
|
||||
'update' => true] );
|
||||
PluginProcessmakerNotificationTargetProcessmaker::restoreNotificationState($donotif);
|
||||
|
||||
// send notification now!
|
||||
$pm_task = new PluginProcessmakerTask($tasktype);
|
||||
$pm_task->getFromDB($tasks_id);
|
||||
$glpi_item = new $itemtype;
|
||||
$glpi_item->getFromDB($glpi_task->fields[$foreignkey]);
|
||||
$pm_task->sendNotification('task_unclaim', $glpi_task, $glpi_item, $this);
|
||||
|
||||
// create an information task and add comment
|
||||
$pm_process = $this->getProcess();
|
||||
$dbu = new DbUtils;
|
||||
$info = __('<b>Task un-claimed!</b><br/><b>Case: </b>%s<br/><b>Task: </b>"%s" has been un-assigned from "%s" and assigned to "%s" group.<br/><b>Reason: </b>%s', 'processmaker');
|
||||
$info .= "<input name='caseid' type='hidden' value='".$this->getID()."'><input name='taskid' type='hidden' value='".$pm_task->getID()."'>";
|
||||
$taskCat = new TaskCategory;
|
||||
$taskCat->getFromDB( $glpi_task->fields['taskcategories_id'] );
|
||||
$info = sprintf($info,
|
||||
$this->getNameID(['forceid' => true]),
|
||||
DropdownTranslation::getTranslatedValue($glpi_task->fields['taskcategories_id'], 'TaskCategory', 'name', $_SESSION['glpilanguage'], $taskCat->fields['name']),
|
||||
Html::clean($dbu->getUserName(isset($glpi_task->oldvalues['users_id_tech']) ? $glpi_task->oldvalues['users_id_tech'] : 0)),
|
||||
Html::clean($groupname),
|
||||
$options['comment']
|
||||
);
|
||||
// unescape some chars and replace CRLF, CR or LF by <br/>
|
||||
$info = str_replace(["\\'", '\\"', '\r\n', '\r', '\n'], ["'", '"', '<br>', '<br>', '<br>'], $info);
|
||||
|
||||
$glpi_task->add([$foreignkey => $glpi_task->fields[$foreignkey],
|
||||
'is_private' => 0, // a post-only user can't create private task
|
||||
'taskcategories_id' => $pm_process->fields['taskcategories_id'],
|
||||
'content' => $DB->escape($info),
|
||||
'users_id' => $PM_SOAP->taskWriter,
|
||||
'state' => Planning::INFO,
|
||||
'users_id_tech' => Session::getLoginUserID(),
|
||||
]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of reassignCase
|
||||
* @param mixed $delIndex
|
||||
@@ -230,7 +349,7 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
* @param mixed $users_id_target
|
||||
* @return mixed
|
||||
*/
|
||||
function reassignCase($delIndex, $taskGuid, $delThread, $users_id_source, $users_id_target) {
|
||||
function reassignCase($delIndex, $taskGuid, $delThread, $users_id_source, $users_id_target, $options) {
|
||||
global $PM_SOAP;
|
||||
$users_guid_source = ''; // by default
|
||||
if ($users_id_source !== 0) { // when task is not 'to be claimed'
|
||||
@@ -253,7 +372,7 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->reassignTask($delIndex, $newDelIndex, $delThread, $newDelThread, $users_id_target );
|
||||
$this->reassignTask($delIndex, $newDelIndex, $delThread, $newDelThread, $users_id_target, $options);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -266,8 +385,8 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
* @param mixed $newDelIndex
|
||||
* @param mixed $newTech
|
||||
*/
|
||||
public function reassignTask ($delIndex, $newDelIndex, $delThread, $newDelThread, $newTech) {
|
||||
global $DB;
|
||||
public function reassignTask ($delIndex, $newDelIndex, $delThread, $newDelThread, $newTech, $options) {
|
||||
global $DB, $PM_SOAP;
|
||||
|
||||
$dbu = new DbUtils;
|
||||
$pm_task_row = $dbu->getAllDataFromTable(PluginProcessmakerTask::getTable(), ['plugin_processmaker_cases_id' => $this->getID(), 'del_index' => $delIndex, 'del_thread' => $delThread]);
|
||||
@@ -298,37 +417,68 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
]
|
||||
);
|
||||
|
||||
// Notification management
|
||||
// search if at least one active notification is existing for that pm task with that event 'task_update_'.$glpi_task->fields['taskcategories_id']
|
||||
$res = PluginProcessmakerNotificationTargetTask::getNotifications('task_update', $glpi_task->fields['taskcategories_id'], $this->fields['entities_id']);
|
||||
if ($res['notifications'] && count($res['notifications']) > 0) {
|
||||
// send notification now!
|
||||
$pm_task = new PluginProcessmakerTask($pm_task_row['itemtype']);
|
||||
$pm_task->getFromDB($pm_task_row['items_id']);
|
||||
NotificationEvent::raiseEvent($res['event'],
|
||||
$pm_task,
|
||||
['plugin_processmaker_cases_id' => $this->getID(),
|
||||
'itemtype' => $pm_task_row['itemtype'],
|
||||
'task_id' => $glpi_task->getID(),
|
||||
'old_users_id_tech' => $glpi_task->oldvalues['users_id_tech'],
|
||||
'is_private' => isset($glpi_task->fields['is_private']) ? $glpi_task->fields['is_private'] : 0,
|
||||
'entities_id' => $this->fields['entities_id'],
|
||||
'case' => $this
|
||||
]);
|
||||
$glpi_item = new $itilobject_itemtype;
|
||||
$glpi_item->getFromDB($glpi_task->fields[$foreignkey]);
|
||||
$pm_task->sendNotification('task_reassign', $glpi_task, $glpi_item, $this);
|
||||
|
||||
// create an information task and add comment
|
||||
$pm_process = $this->getProcess();
|
||||
$old_users_tech_id = isset($glpi_task->oldvalues['users_id_tech']) ? $glpi_task->oldvalues['users_id_tech'] : 0;
|
||||
$taskCat = new TaskCategory;
|
||||
$taskCat->getFromDB( $glpi_task->fields['taskcategories_id'] );
|
||||
$task_name = DropdownTranslation::getTranslatedValue($glpi_task->fields['taskcategories_id'], 'TaskCategory', 'name', $_SESSION['glpilanguage'], $taskCat->fields['name']);
|
||||
$new_tech_name = Html::clean($dbu->getUserName($newTech));
|
||||
if ($old_users_tech_id) {
|
||||
$info = __('<b>Task re-assigned!</b><br/><b>Case: </b>%s<br/><b>Task: </b>"%s" has been re-assigned from "%s" to "%s".<br/><b>Reason: </b>%s', 'processmaker');
|
||||
$info = sprintf($info,
|
||||
$this->getNameID(['forceid' => true]),
|
||||
$task_name,
|
||||
Html::clean($dbu->getUserName(isset($glpi_task->oldvalues['users_id_tech']) ? $glpi_task->oldvalues['users_id_tech'] : 0)),
|
||||
$new_tech_name,
|
||||
$options['comment']
|
||||
);
|
||||
} else {
|
||||
$item = new $itilobject_itemtype;
|
||||
$item->getFromDB($glpi_task->fields[$foreignkey]);
|
||||
NotificationEvent::raiseEvent('update_task',
|
||||
$item,
|
||||
['plugin_processmaker_cases_id' => $this->getID(),
|
||||
'itemtype' => $pm_task_row['itemtype'],
|
||||
'task_id' => $glpi_task->getID(),
|
||||
'is_private' => isset($glpi_task->fields['is_private']) ? $glpi_task->fields['is_private'] : 0
|
||||
]);
|
||||
$info = __('<b>Task assigned!</b><br/><b>Case: </b>%s<br/><b>Task: </b>"%s" has been assigned to "%s".<br/><b>Reason: </b>%s', 'processmaker');
|
||||
$info = sprintf($info,
|
||||
$this->getNameID(['forceid' => true]),
|
||||
$task_name,
|
||||
$new_tech_name,
|
||||
$options['comment']
|
||||
);
|
||||
}
|
||||
$info .= "<input name='caseid' type='hidden' value='".$this->getID()."'><input name='taskid' type='hidden' value='".$pm_task->getID()."'>";
|
||||
|
||||
// unescape some chars and replace CRLF, CR or LF by <br/>
|
||||
$info = str_replace(["\\'", '\\"', '\r\n', '\r', '\n'], ["'", '"', '<br>', '<br>', '<br>'], $info);
|
||||
|
||||
$glpi_task->add([$foreignkey => $glpi_task->fields[$foreignkey],
|
||||
'is_private' => 0, // a post-only user can't create private task
|
||||
'taskcategories_id' => $pm_process->fields['taskcategories_id'],
|
||||
'content' => $DB->escape($info),
|
||||
'users_id' => $PM_SOAP->taskWriter,
|
||||
'state' => Planning::INFO,
|
||||
'users_id_tech' => Session::getLoginUserID(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of getProcess
|
||||
* Returns process object
|
||||
* @return bool|PluginProcessmakerProcess
|
||||
*/
|
||||
function getProcess() {
|
||||
$pm_process = new PluginProcessmakerProcess;
|
||||
if (!$this->process && $pm_process->getFromDB($this->fields['plugin_processmaker_processes_id'])) {
|
||||
$this->process = $pm_process;
|
||||
}
|
||||
return $this->process;
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary of showCaseProperties
|
||||
*/
|
||||
@@ -719,16 +869,13 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
echo "<tr class='tab_bg_2'><td class='tab_bg_2'>";
|
||||
echo __('Select the process you want to add', 'processmaker');
|
||||
echo "</td><td class='tab_bg_2'>";
|
||||
$condition[] = ['is_active' => 1];
|
||||
if ($itemtype == 'Ticket') {
|
||||
$condition[] = ['is_incident' => 1];
|
||||
//$is_itemtype = "AND is_incident=1";
|
||||
if ($item->fields['type'] == Ticket::DEMAND_TYPE) {
|
||||
$condition[] = ['is_request' => 1];
|
||||
//$is_itemtype = "AND is_request=1";
|
||||
}
|
||||
$condition['is_active'] = 1;
|
||||
if ($itemtype == 'Ticket' && $item->fields['type'] == Ticket::INCIDENT_TYPE) {
|
||||
$condition['is_incident'] = 1;
|
||||
} else if ($itemtype == 'Ticket' && $item->fields['type'] == Ticket::DEMAND_TYPE) {
|
||||
$condition['is_request'] = 1;
|
||||
} else {
|
||||
$condition[] = ['is_'.strtolower($itemtype) => 1];
|
||||
$condition['is_'.strtolower($itemtype)] = 1;
|
||||
//$is_itemtype = "AND is_".strtolower($itemtype)."=1";
|
||||
}
|
||||
PluginProcessmakerProcess::dropdown(['value' => 0,
|
||||
|
||||
@@ -271,4 +271,15 @@ class PluginProcessmakerCaselink extends CommonDBTM {
|
||||
return $tab;
|
||||
}
|
||||
|
||||
|
||||
function prepareInputForUpdate($input) {
|
||||
return Toolbox::unclean_cross_side_scripting_deep($input);
|
||||
}
|
||||
|
||||
|
||||
function prepareInputForAdd($input) {
|
||||
return Toolbox::unclean_cross_side_scripting_deep($input);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ class PluginProcessmakerConfig extends CommonDBTM {
|
||||
if (!$config->fields['maintenance']) {
|
||||
|
||||
echo "<tr class='tab_bg_1'>";
|
||||
echo "<td >".__('Server URL (must be in same domain than GLPI)', 'processmaker')."</td><td >";
|
||||
echo "<td >".__('Server URL (must be in same domain than GLPI, if GLPI is using HTTPS, PM server must also use HTTPS)', 'processmaker')."</td><td >";
|
||||
echo "<input size='50' type='text' name='pm_server_URL' value='".$config->fields['pm_server_URL']."'>";
|
||||
echo "</td></tr>\n";
|
||||
|
||||
|
||||
@@ -10,7 +10,12 @@
|
||||
* @version 1.0
|
||||
* @author MoronO
|
||||
*/
|
||||
class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTarget {
|
||||
class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTargetCommonITILObject {
|
||||
|
||||
const PM_USER_TYPE = 1000;
|
||||
|
||||
const OLD_TASK_TECH_IN_CHARGE = 1;
|
||||
|
||||
|
||||
/**
|
||||
* Summary of saveNotificationState
|
||||
|
||||
@@ -12,18 +12,33 @@ if (!defined('GLPI_ROOT')) {
|
||||
// Class NotificationTarget
|
||||
class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotificationTargetProcessmaker {
|
||||
|
||||
|
||||
/**
|
||||
* Summary of getDefaultEvents
|
||||
* @return array[]
|
||||
*/
|
||||
private static function getDefaultEvents() {
|
||||
return ['task_add' => ['event' => 'task_add_', 'label' => __('New task')],
|
||||
'task_update' => ['event' => 'task_update_', 'label' => __('Update of a task')],
|
||||
'task_done' => ['event' => 'task_done_', 'label' => __('Task done')]
|
||||
return ['task_add' => ['event' => 'task_add_', 'label' => __('Task add'), 'glpi' => 'add_task'],
|
||||
'task_reassign' => ['event' => 'task_reassign_', 'label' => __('Task re-assign'), 'glpi' => 'update_task'],
|
||||
'task_unclaim' => ['event' => 'task_unclaim_', 'label' => __('Task un-claim'), 'glpi' => 'update_task'],
|
||||
'task_done' => ['event' => 'task_done_', 'label' => __('Task done'), 'glpi' => 'update_task'],
|
||||
'task_reminder' => ['event' => 'task_reminder_', 'label' => __('Task reminder'), 'glpi' => 'update_task']
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of getDefaultGLPIEvents
|
||||
* Will return the GLPI default task event matching a self type
|
||||
* @param string $type
|
||||
* @return string
|
||||
*/
|
||||
static function getDefaultGLPIEvents($type) {
|
||||
$events = self::getDefaultEvents();
|
||||
return $events[$type]['glpi'];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of getNotification
|
||||
* @param mixed $evt
|
||||
@@ -54,9 +69,7 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
$table = PluginProcessmakerTaskCategory::getTable();
|
||||
$ptable = PluginProcessmakerProcess::getTable();
|
||||
$query = "SELECT $table.taskcategories_id AS taskcat, $ptable.taskcategories_id AS ptaskcat FROM $table
|
||||
LEFT JOIN $ptable ON $ptable.id=$table.plugin_processmaker_processes_id
|
||||
WHERE $table.is_active = 1
|
||||
AND $ptable.is_active = 1";
|
||||
LEFT JOIN $ptable ON $ptable.id=$table.plugin_processmaker_processes_id";
|
||||
|
||||
$ptaskcats = [];
|
||||
$temp = new TaskCategory;
|
||||
@@ -67,9 +80,9 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
}
|
||||
$temp->getFromDB($row['taskcat']);
|
||||
|
||||
$actions[$defaultEvents['task_add']['event'].$row['taskcat']] = $ptaskcats[$row['ptaskcat']]." > ".$temp->fields['name'].": " . $defaultEvents['task_add']['label'];
|
||||
$actions[$defaultEvents['task_update']['event'].$row['taskcat']] = $ptaskcats[$row['ptaskcat']]." > ".$temp->fields['name'].": " . $defaultEvents['task_update']['label'];
|
||||
$actions[$defaultEvents['task_done']['event'].$row['taskcat']] = $ptaskcats[$row['ptaskcat']]." > ".$temp->fields['name'].": " . $defaultEvents['task_done']['label'];
|
||||
foreach($defaultEvents as $events) {
|
||||
$actions[$events['event'].$row['taskcat']] = $ptaskcats[$row['ptaskcat']]." > ".$temp->fields['name'].": " . $events['label'];
|
||||
}
|
||||
}
|
||||
|
||||
return $actions;
|
||||
@@ -82,7 +95,7 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
public function addDataForTemplate($event, $options = []) {
|
||||
global $PM_DB, $CFG_GLPI;
|
||||
|
||||
if (!isset($options['case'])) {
|
||||
if (!isset($options['case']) || $options['case'] == null) {
|
||||
$mycase = new PluginProcessmakerCase;
|
||||
$mycase->getFromDB($options['plugin_processmaker_cases_id']);
|
||||
$options['case'] = $mycase;
|
||||
@@ -133,13 +146,18 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
$this->data['##task.lastupdater##'] = Html::clean($dbu->getUserName($taskobj->fields['users_id_editor']));
|
||||
|
||||
// task technician
|
||||
$this->data['##task.user##'] = Html::clean($dbu->getUserName($taskobj->fields['users_id_tech']));
|
||||
$this->data['##task.user##'] = '';
|
||||
$this->data['##task.user.login##'] = ''; // by default
|
||||
$tech = new User;
|
||||
$tech->getFromDB($taskobj->fields['users_id_tech']);
|
||||
if ($taskobj->fields['users_id_tech'] > 0
|
||||
&& $tech->getFromDB($taskobj->fields['users_id_tech'])) {
|
||||
$this->data['##task.user##'] = Html::clean($dbu->getUserName($taskobj->fields['users_id_tech']));
|
||||
$this->data['##task.user.login##'] = $tech->fields['name'];
|
||||
if (isset($options['old_users_id_tech'])) {
|
||||
}
|
||||
$oldtech = new User;
|
||||
$oldtech->getFromDB($options['old_users_id_tech']);
|
||||
if (isset($options['old_users_id_tech'])
|
||||
&& $options['old_users_id_tech'] > 0
|
||||
&& $oldtech->getFromDB($options['old_users_id_tech'])) {
|
||||
$this->data['##task.former.user##'] = Html::clean($dbu->getUserName($options['old_users_id_tech']));
|
||||
$this->data['##task.former.user.login##'] = $oldtech->fields['name'];
|
||||
}
|
||||
@@ -215,6 +233,11 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
$this->addTarget(Notification::TASK_ASSIGN_TECH, __('Technician in charge of the task'));
|
||||
$this->addTarget(Notification::TASK_ASSIGN_GROUP, __('Group in charge of the task'));
|
||||
|
||||
$this->addTarget(Notification::OBSERVER_GROUP, __('Watcher group'));
|
||||
$this->addTarget(Notification::OBSERVER, __('Watcher'));
|
||||
|
||||
$this->addTarget(Notification::AUTHOR, __('Requester'), PluginProcessmakerNotificationTargetProcessmaker::PM_USER_TYPE);
|
||||
|
||||
if (strpos($event, 'task_update_') === 0) {
|
||||
$this->addTarget(Notification::OLD_TECH_IN_CHARGE,
|
||||
__('Former technician in charge of the task'));
|
||||
@@ -230,12 +253,35 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
*/
|
||||
function addSpecificTargets($data, $options) {
|
||||
|
||||
//Look for all targets whose type is Notification::ITEM_USER
|
||||
$obj = $this->obj;
|
||||
$this->obj = $options['obj'];
|
||||
|
||||
switch ($data['type']) {
|
||||
case PluginProcessmakerNotificationTargetProcessmaker::PM_USER_TYPE :
|
||||
|
||||
switch ($data['items_id']) {
|
||||
|
||||
//Send to the requester of the ITIL object
|
||||
case Notification::AUTHOR :
|
||||
$this->addItemAuthor();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case Notification::USER_TYPE :
|
||||
|
||||
switch ($data['items_id']) {
|
||||
|
||||
//Notification to the ITIL object's observer group
|
||||
case Notification::OBSERVER_GROUP :
|
||||
$this->addLinkedGroupByType(CommonITILActor::OBSERVER);
|
||||
break;
|
||||
|
||||
//Notification to the ITIL object's observer user
|
||||
case Notification::OBSERVER :
|
||||
$this->addLinkedUserByType(CommonITILActor::OBSERVER);
|
||||
break;
|
||||
|
||||
//Send to the ITIL object followup author
|
||||
case Notification::TASK_ASSIGN_TECH :
|
||||
$this->addTaskAssignUser($options);
|
||||
@@ -253,72 +299,15 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$this->obj = $obj;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add user assigned to task
|
||||
*
|
||||
* @param array $options Options
|
||||
*
|
||||
* @return void
|
||||
* Summary of addOldAssignTechnician
|
||||
* @param $options
|
||||
*/
|
||||
function addTaskAssignUser($options = []) {
|
||||
global $DB;
|
||||
|
||||
// In case of delete task pass user id
|
||||
if (isset($options['task_users_id_tech'])) {
|
||||
$query = $this->getDistinctUserSql()."
|
||||
FROM `glpi_users` ".
|
||||
$this->getProfileJoinSql()."
|
||||
WHERE `glpi_users`.`id` = '".$options['task_users_id_tech']."'";
|
||||
|
||||
foreach ($DB->request($query) as $data) {
|
||||
$this->addToRecipientsList($data);
|
||||
}
|
||||
} else if (isset($options['task_id'])) {
|
||||
$dbu = new DbUtils;
|
||||
$tasktable = $dbu->getTableForItemType($options['itemtype']); //getTableForItemType($this->obj->getType().'Task');
|
||||
|
||||
$query = $this->getDistinctUserSql()."
|
||||
FROM `$tasktable`
|
||||
INNER JOIN `glpi_users`
|
||||
ON (`glpi_users`.`id` = `$tasktable`.`users_id_tech`)".
|
||||
$this->getProfileJoinSql()."
|
||||
WHERE `$tasktable`.`id` = '".$options['task_id']."'";
|
||||
|
||||
foreach ($DB->request($query) as $data) {
|
||||
$this->addToRecipientsList($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add group assigned to the task
|
||||
*
|
||||
* @param array $options Options
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function addTaskAssignGroup($options = []) {
|
||||
global $DB;
|
||||
|
||||
// In case of delete task pass user id
|
||||
if (isset($options['task_groups_id_tech'])) {
|
||||
$this->addForGroup(0, $options['task_groups_id_tech']);
|
||||
|
||||
} else if (isset($options['task_id'])) {
|
||||
$dbu = new DbUtils;
|
||||
$tasktable = $dbu->getTableForItemType($options['itemtype']); //getTableForItemType($this->obj->getType().'Task');
|
||||
foreach ($DB->request([$tasktable, 'glpi_groups'], "`glpi_groups`.`id` = `$tasktable`.`groups_id_tech`
|
||||
AND `$tasktable`.`id` = '".$options['task_id']."'") as $data) {
|
||||
$this->addForGroup(0, $data['groups_id_tech']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function addOldAssignTechnician($options = []) {
|
||||
global $DB;
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
private $pmWorkspace = "";
|
||||
private $pmAdminSession = false;
|
||||
|
||||
private $taskWriter = 0;
|
||||
var $taskWriter = 0;
|
||||
private $pm_group_guid = ''; // guid for default user group in Process Maker is used for all GLPI user synchronization into ProcessMaker
|
||||
var $lasterror;
|
||||
var $lang;
|
||||
@@ -143,24 +143,24 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
public function addItemFollowup($itemtype, $itemId, $txtForFollowup, $users_id = null) {
|
||||
global $DB;
|
||||
$fu = new ITILFollowup();//new TicketFollowup();
|
||||
$fu->getEmpty(); // to get default values
|
||||
//$fu->getEmpty(); // to get default values
|
||||
$input = $fu->fields;
|
||||
if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_CONTENT'] )) {
|
||||
if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_CONTENT']) && $txtForFollowup['GLPI_TICKET_FOLLOWUP_CONTENT'] != "" ) {
|
||||
$input['content'] = $DB->escape($txtForFollowup['GLPI_TICKET_FOLLOWUP_CONTENT']);
|
||||
}
|
||||
if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_CONTENT'] )) {
|
||||
if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_CONTENT']) && $txtForFollowup['GLPI_ITEM_FOLLOWUP_CONTENT'] != "" ) {
|
||||
$input['content'] = $DB->escape($txtForFollowup['GLPI_ITEM_FOLLOWUP_CONTENT']);
|
||||
}
|
||||
if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_IS_PRIVATE'] )) {
|
||||
if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_IS_PRIVATE'] ) && $txtForFollowup['GLPI_TICKET_FOLLOWUP_IS_PRIVATE'] != "") {
|
||||
$input['is_private'] = $txtForFollowup['GLPI_TICKET_FOLLOWUP_IS_PRIVATE'];
|
||||
}
|
||||
if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_IS_PRIVATE'] )) {
|
||||
if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_IS_PRIVATE'] ) && $txtForFollowup['GLPI_TICKET_FOLLOWUP_IS_PRIVATE'] != "") {
|
||||
$input['is_private'] = $txtForFollowup['GLPI_ITEM_FOLLOWUP_IS_PRIVATE'];
|
||||
}
|
||||
if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_REQUESTTYPES_ID'] )) {
|
||||
if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_REQUESTTYPES_ID'] ) && $txtForFollowup['GLPI_TICKET_FOLLOWUP_REQUESTTYPES_ID'] != "") {
|
||||
$input['requesttypes_id'] = $txtForFollowup['GLPI_TICKET_FOLLOWUP_REQUESTTYPES_ID'];
|
||||
}
|
||||
if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_REQUESTTYPES_ID'] )) {
|
||||
if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_REQUESTTYPES_ID'] ) && $txtForFollowup['GLPI_ITEM_FOLLOWUP_REQUESTTYPES_ID'] != "") {
|
||||
$input['requesttypes_id'] = $txtForFollowup['GLPI_ITEM_FOLLOWUP_REQUESTTYPES_ID'];
|
||||
}
|
||||
$input['items_id'] = $itemId;//$input['tickets_id'] = $itemId;
|
||||
@@ -1330,9 +1330,9 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
// insert into DB the link between glpi users and pm user
|
||||
$pmuser = new PluginProcessmakerUser;
|
||||
if ($pmuser->getFromDB( $user['id'] )) {
|
||||
$pmuser->update( [ 'id' => $user['id'], 'pm_users_id' => $pmResult->userUID, 'password' => md5( $pass ) ] );
|
||||
$pmuser->update( [ 'id' => $user['id'], 'pm_users_id' => $pmResult->userUID ] );
|
||||
} else {
|
||||
$pmuser->add( [ 'id' => $user['id'], 'pm_users_id' => $pmResult->userUID, 'password' => md5( $pass ) ] );
|
||||
$pmuser->add( [ 'id' => $user['id'], 'pm_users_id' => $pmResult->userUID ] );
|
||||
}
|
||||
$actionCode = 1;
|
||||
|
||||
@@ -1747,8 +1747,25 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
$res = $PM_DB->request([
|
||||
'SELECT' => 'CONTENT.CON_VALUE',
|
||||
'FROM' => 'TASK_USER',
|
||||
'INNER JOIN' => ['CONTENT' => ['AND' => ['FKEY' => ['CONTENT' => 'CON_ID', 'TASK_USER' => 'USR_UID'], ['CONTENT' => 'CON_CATEGORY', 'GRP_TITLE'], ['CONTENT' => 'CON_LANG', 'en']]]],
|
||||
'WHERE' => ['AND' => ['TASK_USER.TAS_UID' => $pmTaskId, 'TASK_USER.TU_RELATION' => 2, 'TASK_USER.TU_TYPE' => 1]],
|
||||
'INNER JOIN' => [
|
||||
'CONTENT' => [
|
||||
'AND' => [
|
||||
'FKEY' => [
|
||||
'CONTENT' => 'CON_ID',
|
||||
'TASK_USER' => 'USR_UID'
|
||||
],
|
||||
['CONTENT.CON_CATEGORY' => 'GRP_TITLE'],
|
||||
['CONTENT.CON_LANG' => 'en']
|
||||
]
|
||||
]
|
||||
],
|
||||
'WHERE' => [
|
||||
'AND' => [
|
||||
'TASK_USER.TAS_UID' => $pmTaskId,
|
||||
'TASK_USER.TU_RELATION' => 2,
|
||||
'TASK_USER.TU_TYPE' => 1
|
||||
]
|
||||
],
|
||||
'LIMIT' => 1
|
||||
]);
|
||||
//$query = "SELECT CONTENT.CON_VALUE FROM TASK_USER
|
||||
@@ -1758,7 +1775,13 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
$res = $PM_DB->request([
|
||||
'SELECT' => 'CON_VALUE',
|
||||
'FROM' => 'CONTENT',
|
||||
'WHERE' => ['AND' => ['CONTENT.CON_ID' => $groupId, 'CONTENT.CON_CATEGORY' => 'GRP_TITLE', 'CONTENT.CON_LANG' => 'en']]
|
||||
'WHERE' => [
|
||||
'AND' => [
|
||||
'CONTENT.CON_ID' => $groupId,
|
||||
'CONTENT.CON_CATEGORY' => 'GRP_TITLE',
|
||||
'CONTENT.CON_LANG' => 'en'
|
||||
]
|
||||
]
|
||||
]);
|
||||
//$query = "SELECT CON_VALUE FROM CONTENT
|
||||
// WHERE CONTENT.CON_ID='$groupId' AND CONTENT.CON_CATEGORY='GRP_TITLE' AND CONTENT.CON_LANG='en' ;";
|
||||
@@ -1809,7 +1832,7 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
|
||||
$input['is_private'] = 0;
|
||||
$input['actiontime'] = 0;
|
||||
$input['state'] = 1; // == TO_DO
|
||||
$input['state'] = Planning::TODO; // == TO_DO
|
||||
$input['users_id_tech'] = 0; // by default as it can't be empty
|
||||
if ($techId) {
|
||||
$input['users_id_tech'] = $techId;
|
||||
@@ -1889,6 +1912,24 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of getGLPIGroupId
|
||||
* returns GLPI group id from pm group name
|
||||
* returns false when not found
|
||||
* @param string $pmGroupName
|
||||
* @return bool|integer
|
||||
*/
|
||||
static function getGLPIGroupId(string $pmGroupName) {
|
||||
global $DB;
|
||||
$query = "SELECT id AS glpi_group_id FROM glpi_groups WHERE name LIKE '$pmGroupName';";
|
||||
$res = $DB->query($query);
|
||||
if ($DB->numrows($res) > 0) {
|
||||
$row = $DB->fetch_array($res);
|
||||
return $row['glpi_group_id'];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary of add1stTask
|
||||
* adds a GLPI task to ticket
|
||||
@@ -1958,10 +1999,12 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
* @param mixed $newtitle
|
||||
*/
|
||||
public function setItemTitle($itemtype, $itemId, $newtitle) {
|
||||
global $DB;
|
||||
|
||||
$dbu = new DbUtils;
|
||||
$item = $dbu->getItemForItemtype( $itemtype );
|
||||
if ($item->getFromDB( $itemId )) {
|
||||
$item->update( ['id' => $itemId, 'name' => $newtitle] );
|
||||
$item->update( ['id' => $itemId, 'name' => $DB->escape($newtitle)] );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1988,6 +2031,8 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
* @param mixed $casevariablevalues
|
||||
*/
|
||||
public function setItemSolution($itemType, $itemId, $casevariablevalues) {
|
||||
global $DB;
|
||||
|
||||
$dbu = new DbUtils;
|
||||
$item = $dbu->getItemForItemtype( $itemType );
|
||||
if ($item->getFromDB( $itemId )) {
|
||||
@@ -2035,7 +2080,7 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
if ($solution != '') {
|
||||
$solution .= "\n";
|
||||
}
|
||||
$solution .= $casevariablevalues[ 'GLPI_ITEM_APPEND_TO_SOLUTION_DESCRIPTION' ];
|
||||
$solution .= $DB->escape($casevariablevalues[ 'GLPI_ITEM_APPEND_TO_SOLUTION_DESCRIPTION' ]);
|
||||
$to_update = true;
|
||||
}
|
||||
|
||||
@@ -2078,7 +2123,7 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
* 'begin' => is the new begin date of the task
|
||||
* 'end' => is the new end date of the task
|
||||
* 'toInformation' => is the new status of the task (usually set to INFORMATION)
|
||||
*
|
||||
* @return false|object the solved task, when found
|
||||
*/
|
||||
public function solveTask($cases_id, $delIndex, $options = []) {
|
||||
global $DB;
|
||||
@@ -2170,8 +2215,10 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
// restore current glpi time
|
||||
$_SESSION["glpi_currenttime"] = $saved_date_time;
|
||||
|
||||
return $glpi_task;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2316,7 +2363,21 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
if (!is_array($params['item']) && is_subclass_of($params['item'], 'CommonITILTask')) {
|
||||
// must check if Task is bound to a PM task
|
||||
$pmTask = new PluginProcessmakerTask($params['item']->getType());
|
||||
if ($pmTask->getFromDB($params['item']->getId())) {//$pmTask->getFromDBByQuery("WHERE itemtype='".$params['item']->getType()."' and items_id=".$params['item']->getId())) {
|
||||
$is_pmtask = $pmTask->getFromDB($params['item']->getId());
|
||||
if (!$is_pmtask && $params['item']->fields['state'] == Planning::INFO) {
|
||||
// look if it is a meta task for this process
|
||||
// means a re-assign or an un-claim task info
|
||||
$pm_process = new PluginProcessmakerProcess;
|
||||
if ($pm_process->getFromDBByQuery( " WHERE `taskcategories_id` = ".$params['item']->fields['taskcategories_id'])) {
|
||||
// then look into content to get case id
|
||||
$re = '/<input name=\'caseid\' type=\'hidden\' value=\'(?\'caseid\'\d+)\'><input name=\'taskid\' type=\'hidden\' value=\'(?\'taskid\'\d+)\'>/';
|
||||
if (preg_match($re, $params['item']->fields['content'], $matches)) {
|
||||
// here we get the case id and the task id
|
||||
$is_pmtask = $pmTask->getFromDB($matches['taskid']);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($is_pmtask) {
|
||||
$params['item']->fields['can_edit'] = false; // to prevent task edition
|
||||
|
||||
// replace ##ticket.url##_PluginProcessmakerCase$processmakercases by a setActiveTab to the Case panel
|
||||
@@ -2329,7 +2390,7 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
} else {
|
||||
$params['item']->fields['content'] = str_replace( '##processmaker.taskcomment##', $taskComment, $params['item']->fields['content'] );
|
||||
}
|
||||
$taskJSId = "viewitem".$params['item']->getType().$params['item']->getId().$params['options']['rand'];
|
||||
$taskJSId = strtolower("viewitem".$params['item']->getType().$params['item']->getId());
|
||||
|
||||
// special case for <hr> which will provoke the rendering to be split into several <p>
|
||||
// add <p></p> which othervise will be missing
|
||||
@@ -2602,7 +2663,10 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
// ### 2nd call to save Data POST ###
|
||||
curl_setopt($ch, CURLOPT_URL, $this->serverURL."/cases/cases_SaveData?UID=".$request['UID']."&APP_UID=".$request['APP_UID'] );
|
||||
$response = curl_exec ($ch);
|
||||
|
||||
if ($response === false) {
|
||||
//throw new Exception(curl_error($ch), curl_errno($ch));
|
||||
Toolbox::logInFile( "pmtrace", curl_error($ch).":".curl_errno($ch)."\n" );
|
||||
}
|
||||
curl_close ($ch);
|
||||
if ($loggable) {
|
||||
Toolbox::logInFile( "pmtrace", "URL:\n".$this->serverURL."/cases/cases_SaveData?UID=".$request['UID']."&APP_UID=".$request['APP_UID']."\nData:\n".print_r($data, true )."\nResponse:\n".$response."\n\n\n" );
|
||||
@@ -2924,7 +2988,7 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
*/
|
||||
public function derivateCase($myCase, $request, $users_id = null) {
|
||||
//$cookies,
|
||||
global $PM_DB, $CFG_GLPI;
|
||||
global $PM_DB, $CFG_GLPI, $DB;
|
||||
|
||||
$itemtype = $myCase->getField('itemtype');
|
||||
$items_id = $myCase->getField('items_id');
|
||||
@@ -2975,12 +3039,18 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
"GLPI_ITEM_APPEND_TO_SOLUTION_DESCRIPTION",
|
||||
"GLPI_ITEM_INITIAL_DUE_DATE",
|
||||
"GLPI_ITEM_DUE_DATE",
|
||||
"GLPI_SEND_EMAIL"
|
||||
"GLPI_SEND_EMAIL",
|
||||
"GLPI_ITEM_INFORMATION_TASK"
|
||||
];
|
||||
|
||||
// now tries to get some variables to setup content for new task and to append text to solved task
|
||||
$casevariablevalues = $myCase->getVariables($casevariables);
|
||||
|
||||
$information_task = '';
|
||||
if (array_key_exists( 'GLPI_ITEM_INFORMATION_TASK', $casevariablevalues ) && $casevariablevalues[ 'GLPI_ITEM_INFORMATION_TASK' ] != '') {
|
||||
$information_task = $casevariablevalues[ 'GLPI_ITEM_INFORMATION_TASK' ];
|
||||
}
|
||||
|
||||
$sendemail = '';
|
||||
if (array_key_exists( 'GLPI_SEND_EMAIL', $casevariablevalues ) && $casevariablevalues[ 'GLPI_SEND_EMAIL' ] != '') {
|
||||
$sendemail = json_decode($casevariablevalues[ 'GLPI_SEND_EMAIL' ], true);
|
||||
@@ -3074,20 +3144,23 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
// reset those variables
|
||||
$resetcasevariables = [];
|
||||
foreach ($casevariables as $val) {
|
||||
if (!empty($casevariablevalues[$val])) {
|
||||
$resetcasevariables[$val] = '';
|
||||
}
|
||||
}
|
||||
$resultSave = $myCase->sendVariables($resetcasevariables);
|
||||
|
||||
// now manage tasks associated with item
|
||||
// switch own task to 'done' and create a new one
|
||||
$this->solveTask($myCase->getID(),
|
||||
$glpi_task = $this->solveTask($myCase->getID(),
|
||||
$request['DEL_INDEX'],
|
||||
['txtToAppend' => $txtToAppendToTask,
|
||||
'users_id_tech' => $users_id,
|
||||
'begin' => $solvedTaskStartDate,
|
||||
'end' => $solvedTaskEndDate,
|
||||
'toInformation' => $solvedTaskSetToInformation
|
||||
] );
|
||||
]
|
||||
);
|
||||
|
||||
// create a followup if requested
|
||||
if ($createFollowup) { // && $itemtype == 'Ticket') {
|
||||
@@ -3118,6 +3191,38 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
// get the new case info
|
||||
$caseInfo = $myCase->getCaseInfo($request['DEL_INDEX']); // not sure that it should passed this
|
||||
|
||||
// create an information task if requested
|
||||
if ($information_task != '' && $glpi_task) {
|
||||
// create an information task and add comment
|
||||
// $information_task is the content of the task
|
||||
$pm_process = $myCase->getProcess();
|
||||
$taskCat = new TaskCategory;
|
||||
$taskCat->getFromDB($glpi_task->fields['taskcategories_id']);
|
||||
// we may replace ##casename## by the name of the case, and ##taskname## by the task name
|
||||
$search = ['##casename##',
|
||||
'##taskname##'
|
||||
];
|
||||
$replace = [$caseInfo->caseName." (".$myCase->getID().")",
|
||||
DropdownTranslation::getTranslatedValue($glpi_task->fields['taskcategories_id'], 'TaskCategory', 'name', $_SESSION['glpilanguage'], $taskCat->fields['name'])
|
||||
];
|
||||
$info = str_replace($search, $replace, $information_task);
|
||||
|
||||
$info .= "<input name='caseid' type='hidden' value='".$myCase->getID()."'><input name='taskid' type='hidden' value='".$glpi_task->getID()."'>";
|
||||
|
||||
// unescape some chars and replace CRLF, CR or LF by <br/>
|
||||
$info = str_replace(["\\'", '\\"', '\r\n', '\r', '\n'], ["'", '"', '<br>', '<br>', '<br>'], $info);
|
||||
|
||||
$foreignkey = getForeignKeyFieldForItemType($glpi_task->getItilObjectItemType());
|
||||
$glpi_task->add([$foreignkey => $glpi_task->fields[$foreignkey],
|
||||
'is_private' => 1,
|
||||
'taskcategories_id' => $pm_process->fields['taskcategories_id'],
|
||||
'content' => $DB->escape($info),
|
||||
'users_id' => $this->taskWriter,
|
||||
'state' => Planning::INFO,
|
||||
'users_id_tech' => Session::getLoginUserID(),
|
||||
]);
|
||||
}
|
||||
|
||||
// now create the new tasks if any
|
||||
if (property_exists( $pmRouteCaseResponse, 'routing' )) {
|
||||
|
||||
|
||||
@@ -67,6 +67,15 @@ class PluginProcessmakerTask extends CommonITILTask
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of getPMTaskID
|
||||
* @return mixed
|
||||
*/
|
||||
function getPMTaskID() {
|
||||
return $this->fields['items_id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Summary of getToDoTasks
|
||||
* returns all 'to do' tasks associated with this case
|
||||
@@ -377,31 +386,53 @@ class PluginProcessmakerTask extends CommonITILTask
|
||||
}
|
||||
|
||||
if (isset($currentUser)) {
|
||||
if (/*$currentUser->userId &&*/ $task[$tabnum]['del_index']) {
|
||||
if ($task[$tabnum]['del_index']) {
|
||||
// to load users for task re-assign only when task is not a sub-case
|
||||
|
||||
echo "<div class='tab_bg_2' id='divUsers-".$currentUser->delIndex."'><div class='loadingindicator'>".__('Loading...')."</div></div>";
|
||||
echo "<script>$('#divUsers-{$task[$tabnum]['del_index']}').load( '".$CFG_GLPI["root_doc"]."/plugins/processmaker/ajax/task_users.php?cases_id="
|
||||
.$case->getID()
|
||||
."&items_id="
|
||||
.$case->fields['items_id']
|
||||
."&itemtype="
|
||||
.$case->fields['itemtype']
|
||||
."&users_id="
|
||||
.PluginProcessmakerUser::getGLPIUserId($currentUser->userId)
|
||||
."&taskGuid="
|
||||
.$currentUser->taskId
|
||||
."&delIndex={$task[$tabnum]['del_index']}&delThread={$currentUser->delThread}&rand=$rand' ); </script>";
|
||||
//} else {
|
||||
// // manages the claim
|
||||
// // current task is to be claimed
|
||||
// // get the assigned group to the item task
|
||||
// $itemtask = $dbu->getItemForItemtype( $task[$tabnum]['itemtype'] );
|
||||
// $itemtask->getFromDB( $task[$tabnum]['items_id'] );
|
||||
// // check if this group can be found in the current user's groups
|
||||
// if (!isset($_SESSION['glpigroups']) || !in_array( $itemtask->fields['groups_id_tech'], $_SESSION['glpigroups'] )) {
|
||||
// $hide_claim_button=true;
|
||||
// }
|
||||
|
||||
// try to get users whom can't be assigned to this task
|
||||
// already assigned user can't be assigned again to this task
|
||||
$current_assigned_user = PluginProcessmakerUser::getGLPIUserId($currentUser->userId);
|
||||
// and then any forbiden users defined from the case itself
|
||||
$casevariablevalues = $case->getVariables(['GLPI_TASK_PREVENT_REASSIGN']);
|
||||
$prevent_assign = [];
|
||||
if (array_key_exists( 'GLPI_TASK_PREVENT_REASSIGN', $casevariablevalues ) && $casevariablevalues[ 'GLPI_TASK_PREVENT_REASSIGN' ] != '') {
|
||||
$prevent_assign = json_decode($casevariablevalues[ 'GLPI_TASK_PREVENT_REASSIGN' ], true);
|
||||
}
|
||||
|
||||
|
||||
$used_users = [];
|
||||
$used_users[] = $current_assigned_user;
|
||||
if (array_key_exists($currentUser->taskId, $prevent_assign)) {
|
||||
if (is_array($prevent_assign[$currentUser->taskId])) {
|
||||
foreach ($prevent_assign[$currentUser->taskId] as $pmuser) {
|
||||
$usr_id = PluginProcessmakerUser::getGlpiIdFromAny($pmuser);
|
||||
if ($usr_id) {
|
||||
$used_users[] = $usr_id;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$usr_id = PluginProcessmakerUser::getGlpiIdFromAny($prevent_assign[$currentUser->taskId]);
|
||||
if ($usr_id) {
|
||||
$used_users[] = $usr_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$data = "{
|
||||
cases_id : {$case->getID()},
|
||||
items_id : {$case->fields['items_id']},
|
||||
itemtype : '{$case->fields['itemtype']}',
|
||||
tasktype : '{$task[$tabnum]['itemtype']}',
|
||||
tasks_id : {$task[$tabnum]['items_id']},
|
||||
users_id : {$current_assigned_user},
|
||||
taskGuid : '{$currentUser->taskId}',
|
||||
delIndex : {$task[$tabnum]['del_index']},
|
||||
delThread : {$currentUser->delThread},
|
||||
used : [".join(',', array_unique($used_users))."]
|
||||
}";
|
||||
echo html::scriptBlock("$('#divUsers-{$task[$tabnum]['del_index']}').load('".$CFG_GLPI["root_doc"]."/plugins/processmaker/ajax/task_users.php', $data);");
|
||||
}
|
||||
|
||||
if (!$currentUser->userId || !$task[$tabnum]['del_index']) {
|
||||
@@ -422,18 +453,6 @@ class PluginProcessmakerTask extends CommonITILTask
|
||||
|
||||
$csrf = Session::getNewCSRFToken();
|
||||
|
||||
//echo "<iframe id='caseiframe-task-{$task[$tabnum]['del_index']}' onload=\"onTaskFrameLoad( event, {$task[$tabnum]['del_index']}, "
|
||||
// .($hide_claim_button?"true":"false")
|
||||
// .", '$csrf' );\" style='border:none;' class='tab_bg_2' width='100%' src='";
|
||||
//echo $PM_SOAP->serverURL
|
||||
// ."/cases/cases_Open?sid="
|
||||
// .$PM_SOAP->getPMSessionID()
|
||||
// ."&APP_UID="
|
||||
// .$case->fields['case_guid']
|
||||
// ."&DEL_INDEX="
|
||||
// .$task[$tabnum]['del_index']
|
||||
// ."&action=TO_DO";
|
||||
//echo "&rand=$rand&glpi_domain={$config->fields['domain']}'></iframe></div>";
|
||||
$url = $PM_SOAP->serverURL
|
||||
."/cases/cases_Open?sid=".$PM_SOAP->getPMSessionID()
|
||||
."&APP_UID=".$case->fields['case_guid']
|
||||
@@ -471,6 +490,42 @@ class PluginProcessmakerTask extends CommonITILTask
|
||||
}
|
||||
});
|
||||
");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of sendNotification
|
||||
* Will send either dedicated notification, or standard one
|
||||
* @param string $type is 'task_add', 'task_reassign', 'task_done', 'task_reminder'
|
||||
* @param CommonITILTask $task is the task (TicketTask,...)
|
||||
* @param CommonITILObject $item is the ITIL item (Ticket,...)
|
||||
* @param PluginProcessmakerCase $case is the case
|
||||
*/
|
||||
function sendNotification(string $type, CommonITILTask $task, CommonITILObject $item, PluginProcessmakerCase $case = null) {
|
||||
// Notification management
|
||||
// search if at least one active notification is existing for that pm task with that event 'task_update_'.$glpi_task->fields['taskcategories_id']
|
||||
$res = PluginProcessmakerNotificationTargetTask::getNotifications($type, $task->fields['taskcategories_id'], $item->fields['entities_id']);
|
||||
if ($res['notifications'] && count($res['notifications']) > 0) {
|
||||
NotificationEvent::raiseEvent($res['event'],
|
||||
$this,
|
||||
['plugin_processmaker_cases_id' => $this->fields['plugin_processmaker_cases_id'],
|
||||
'itemtype' => $item->getType(),
|
||||
'task_id' => $task->getID(),
|
||||
'old_users_id_tech' => isset($task->oldvalues['users_id_tech']) ? $task->oldvalues['users_id_tech'] : 0,
|
||||
'is_private' => isset($task->fields['is_private']) ? $task->fields['is_private'] : 0,
|
||||
'entities_id' => $item->fields['entities_id'],
|
||||
'case' => $case,
|
||||
'obj' => $item
|
||||
]);
|
||||
} else {
|
||||
NotificationEvent::raiseEvent(PluginProcessmakerNotificationTargetTask::getDefaultGLPIEvents($type),
|
||||
$item,
|
||||
['plugin_processmaker_cases_id' => $this->fields['plugin_processmaker_cases_id'],
|
||||
'itemtype' => $item->getType(),
|
||||
'task_id' => $task->getID(),
|
||||
'is_private' => isset($task->fields['is_private']) ? $task->fields['is_private'] : 0
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -295,6 +295,7 @@ class PluginProcessmakerUser extends CommonDBTM {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of getPMUserId
|
||||
* returns processmaker user id for given GLPI user id
|
||||
@@ -309,6 +310,31 @@ class PluginProcessmakerUser extends CommonDBTM {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Summary of getGlpiIdFromAny
|
||||
* Returns the GLPI id of the user or false if not found
|
||||
* Accept either PM GUID, GLPI logon, or GLPI ID
|
||||
* @param $any
|
||||
* @return mixed GLPI ID of the user or fasle if not found
|
||||
*/
|
||||
public static function getGlpiIdFromAny($any) {
|
||||
$ret = self::getGLPIUserId($any);
|
||||
if ($ret) {
|
||||
return $ret;
|
||||
}
|
||||
$ret = self::getPMUserId($any);
|
||||
if ($ret) {
|
||||
return $any;
|
||||
}
|
||||
$usr = new User;
|
||||
if ($usr->getFromDBbyName($any)) {
|
||||
return $usr->getId();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
///**
|
||||
// * Summary of getNewPassword
|
||||
// * @param mixed $username
|
||||
|
||||
@@ -81,7 +81,7 @@ CREATE TABLE IF NOT EXISTS `glpi_plugin_processmaker_configs` (
|
||||
`domain` varchar(50) DEFAULT '',
|
||||
`maintenance` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`ssl_verify` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`db_version` varchar(10) NOT NULL DEFAULT '3.4.9',
|
||||
`db_version` varchar(10) NOT NULL DEFAULT '3.4.10',
|
||||
`max_cases_per_item` int(11) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
@@ -44,6 +44,10 @@ function processmaker_update() {
|
||||
// will upgrade 3.3.8 to 3.4.9
|
||||
include_once(GLPI_ROOT."/plugins/processmaker/install/update_3_3_8_to_3_4_9.php");
|
||||
$new_version = update_3_3_8_to_3_4_9();
|
||||
case '3.4.9' :
|
||||
// will upgrade 3.4.9 to 3.4.10
|
||||
include_once(GLPI_ROOT."/plugins/processmaker/install/update_3_4_9_to_3_4_10.php");
|
||||
$new_version = update_3_4_9_to_3_4_10();
|
||||
}
|
||||
|
||||
if (isset($new_version)) {
|
||||
|
||||
12
install/update_3_4_9_to_3_4_10.php
Normal file
12
install/update_3_4_9_to_3_4_10.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
function update_3_4_9_to_3_4_10() {
|
||||
global $DB;
|
||||
|
||||
// needs to change _update_ into _reassign_ in the events field of the glpi_notifications table
|
||||
|
||||
$query = "UPDATE `glpi_notifications` SET `event` = REPLACE( `event`, '_update_', '_reassign_') WHERE `event` LIKE '%_update_%' AND `itemtype` = 'PluginProcessmakerTask';";
|
||||
$DB->query($query) or die("error when updating event field in glpi_notifications" . $DB->error());
|
||||
|
||||
return '3.4.10';
|
||||
}
|
||||
@@ -7,10 +7,12 @@ function onClickContinue(obj) {
|
||||
//debugger;
|
||||
contentDocument = caseIFrame.contentDocument;
|
||||
var txtAreaUserRequestSumUp = contentDocument.getElementById('form[UserRequestSumUp]');
|
||||
if ($("textarea[name='content']").val() == '') {
|
||||
if (txtAreaUserRequestSumUp) {
|
||||
$("textarea[name='content']").val($(txtAreaUserRequestSumUp).val());
|
||||
tinymce.activeEditor.setContent($(txtAreaUserRequestSumUp).val().replace(/(\r\n)|(\r)|(\n)/g, '<br>'));
|
||||
} else {
|
||||
$("textarea[name='content']").val('_');
|
||||
tinymce.activeEditor.setContent('_');
|
||||
}
|
||||
}
|
||||
|
||||
// call old handler if any
|
||||
|
||||
BIN
locales/fr_FR.mo
BIN
locales/fr_FR.mo
Binary file not shown.
508
locales/fr_FR.po
508
locales/fr_FR.po
@@ -1,22 +1,23 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: processmaker-plugin\n"
|
||||
"POT-Creation-Date: 2018-08-06 14:32+0200\n"
|
||||
"PO-Revision-Date: 2018-08-06 14:44+0200\n"
|
||||
"POT-Creation-Date: 2020-07-13 09:41+0200\n"
|
||||
"PO-Revision-Date: 2020-07-13 11:02+0200\n"
|
||||
"Last-Translator: tomolimo\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr_FR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.3.1\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Poedit-KeywordsList: ;__:1,2t;_e:1,2t;_x:1c,2,3t;_n:1,2,4t;__s:1,2t;"
|
||||
"_ex:1c,2,3t;_sx:1c,2,3t;_nx:1c,2,3,5t\n"
|
||||
"X-Poedit-KeywordsList: ;__:1,2t;_e:1,2t;_x:1c,2,3t;_n:1,2,4t;__s:1,2t;_ex:1c,2,3t;_sx:1c,2,3t;_nx:1c,2,3,5t\n"
|
||||
"X-Crowdin-Project: processmaker-plugin\n"
|
||||
"X-Crowdin-Project-ID: 310131\n"
|
||||
"X-Crowdin-Language: fr\n"
|
||||
"X-Crowdin-File: /3.3.0/source.po\n"
|
||||
"X-Crowdin-File: /3.4 - GLPI 9.2/source.po\n"
|
||||
"X-Crowdin-File-ID: 20\n"
|
||||
"X-Poedit-SearchPath-0: ajax\n"
|
||||
"X-Poedit-SearchPath-1: front\n"
|
||||
"X-Poedit-SearchPath-2: inc\n"
|
||||
@@ -25,239 +26,306 @@ msgstr ""
|
||||
"X-Poedit-SearchPath-5: hook.php\n"
|
||||
"X-Poedit-SearchPath-6: setup.php\n"
|
||||
|
||||
#: ajax/task_users.php:25
|
||||
#: ajax/task_users.php:36
|
||||
msgid "Re-assign task to"
|
||||
msgstr "Ré-affecter tâche à"
|
||||
|
||||
#: ajax/task_users.php:45
|
||||
#: ajax/task_users.php:60 ajax/task_users.php:61 ajax/task_users.php:124
|
||||
msgid "Re-assign"
|
||||
msgstr "Ré-affecter"
|
||||
|
||||
#: front/case.form.php:35
|
||||
#: ajax/task_users.php:110
|
||||
#| msgid "Task already assigned to this person!"
|
||||
msgid "Task is already assigned to this user or group!"
|
||||
msgstr "La tâche est déjà affectée à cet utilisateur (ou ce groupe) !"
|
||||
|
||||
#: ajax/task_users.php:110 ajax/task_users.php:122
|
||||
#| msgid "Re-assign task to"
|
||||
msgid "Re-assign task"
|
||||
msgstr "Ré-affecter tâche"
|
||||
|
||||
#: ajax/task_users.php:114 ajax/task_users.php:119
|
||||
#| msgid "Claim target task"
|
||||
msgid "Un-claim task"
|
||||
msgstr "Annuler affectation de la tâche"
|
||||
|
||||
#: ajax/task_users.php:115
|
||||
msgid "Please input reason to un-claim<br/>(task will be re-assigned to former group):"
|
||||
msgstr "Saisir la raison pour l'annulation de l'affectation<br/>(la tâche sera ré-affectée au groupe précédent) :"
|
||||
|
||||
#: ajax/task_users.php:116
|
||||
msgid "Un-claim"
|
||||
msgstr "Annulation de l'affectation"
|
||||
|
||||
#: ajax/task_users.php:119
|
||||
msgid "Can\\'t un-assign Task!"
|
||||
msgstr "Annulation de l'affectation impossible !"
|
||||
|
||||
#: ajax/task_users.php:123
|
||||
msgid "Please input reason to re-assign:"
|
||||
msgstr "Saisir la raison pour la ré-affectation :"
|
||||
|
||||
#: ajax/task_users.php:134
|
||||
msgid "Send reminder"
|
||||
msgstr "Envoyer un rappel"
|
||||
|
||||
#: front/case.form.php:32
|
||||
msgid "Case has been deleted!"
|
||||
msgstr "Le cas a été effacé !"
|
||||
|
||||
#: front/case.form.php:37
|
||||
#: front/case.form.php:34
|
||||
msgid "Unable to delete case!"
|
||||
msgstr "Impossible d'effacer le cas !"
|
||||
|
||||
#: front/case.form.php:50
|
||||
#: front/case.form.php:46
|
||||
msgid "Case has been cancelled!"
|
||||
msgstr "Le cas a été annulé !"
|
||||
|
||||
#: front/case.form.php:52 front/case.form.php:55
|
||||
#: front/case.form.php:48 front/case.form.php:51
|
||||
msgid "Unable to cancel case!"
|
||||
msgstr "Impossible d'annuler le cas !"
|
||||
|
||||
#: front/case.form.php:76 front/case.form.php:78 inc/case.class.php:1018
|
||||
#: front/case.form.php:70 front/case.form.php:72 inc/case.class.php:1310
|
||||
msgid "Process cases"
|
||||
msgstr "Cas des processus"
|
||||
|
||||
#: front/case.php:5 front/caselink.form.php:27 front/caselink.php:5
|
||||
#: front/process.form.php:25 front/process.php:5 inc/caselink.class.php:143
|
||||
#: inc/config.class.php:50 inc/config.class.php:354 inc/process.class.php:393
|
||||
#: front/case.php:5 front/caselink.form.php:29 front/caselink.php:5
|
||||
#: front/process.form.php:27 front/process.php:5 inc/caselink.class.php:157
|
||||
#: inc/config.class.php:50 inc/config.class.php:363 inc/process.class.php:409
|
||||
#: inc/profile.class.php:52 inc/profile.class.php:83
|
||||
msgid "ProcessMaker"
|
||||
msgstr "ProcessMaker"
|
||||
|
||||
#: front/processmaker.form.php:85
|
||||
#: front/processmaker.form.php:80
|
||||
msgid "Task re-assigned!"
|
||||
msgstr "Tâche ré-affectée !"
|
||||
|
||||
#: front/processmaker.form.php:87
|
||||
#: front/processmaker.form.php:82
|
||||
msgid "Error re-assigning task: "
|
||||
msgstr "Impossible de re-affecter cette tâche : "
|
||||
msgstr "Impossible de ré-affecter cette tâche :"
|
||||
|
||||
#: front/processmaker.form.php:90
|
||||
msgid "Task already assigned to this person!"
|
||||
msgstr "Tâche déjà affectée à cette personne !"
|
||||
#: front/processmaker.form.php:93
|
||||
#| msgid "Task name"
|
||||
msgid "Task un-claimed!"
|
||||
msgstr "Annulation de l'affectation de la tâche effectuée !"
|
||||
|
||||
#: front/processmaker.form.php:95
|
||||
msgid "Can't un-claim task! Verify 'Assignement Rules' in the process definition."
|
||||
msgstr "Annulation de l'affectation impossible ! Vérifiez les règles d'assignation dans la définition du Processus."
|
||||
|
||||
#: front/processmaker.helpdesk.form.php:21
|
||||
msgid "Process - Case"
|
||||
msgstr "Processus - Cas"
|
||||
|
||||
#: front/processmaker.helpdesk.form.php:24 inc/case.class.php:605
|
||||
#: front/processmaker.helpdesk.form.php:24 inc/case.class.php:799
|
||||
msgid "Select the process you want to add"
|
||||
msgstr "Choisir le processus à démarrer"
|
||||
|
||||
#: hook.php:31 inc/taskcategory.class.php:98
|
||||
#: hook.php:9 inc/taskcategory.class.php:214
|
||||
msgid "Synchronize Task List"
|
||||
msgstr "Synchroniser la liste des Tâches"
|
||||
|
||||
#: hook.php:158 inc/case.class.php:77
|
||||
#: hook.php:76 inc/case.class.php:89
|
||||
msgid "Case"
|
||||
msgstr "Cas"
|
||||
|
||||
#: hook.php:158 inc/case.class.php:586 inc/case.class.php:1062
|
||||
#: hook.php:76 inc/case.class.php:778 inc/case.class.php:1355
|
||||
msgid "Status"
|
||||
msgstr "Statut"
|
||||
|
||||
#: inc/case.class.php:23 inc/case.class.php:90 inc/case.class.php:92
|
||||
#: inc/case.class.php:25 inc/case.class.php:102 inc/case.class.php:104
|
||||
msgid "Process case"
|
||||
msgid_plural "Process cases"
|
||||
msgstr[0] "Cas du processus"
|
||||
msgstr[1] "Cas des processus"
|
||||
|
||||
#: inc/case.class.php:80
|
||||
#: inc/case.class.php:92
|
||||
msgid "Sub-case"
|
||||
msgstr "Sous-cas"
|
||||
|
||||
#: inc/case.class.php:312
|
||||
#: inc/case.class.php:303
|
||||
#, php-format
|
||||
msgid "<b>Task un-claimed!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has been un-assigned from \"%s\" and assigned to \"%s\" group.<br/><b>Reason: </b>%s"
|
||||
msgstr "<b>Annulation de l'affection de la tâche effectuée !</b><br/><b>Cas : </b>%s<br/><b>Tâche : </b>\"%s\" a été libérée de \"%s\" et assignée au groupe \"%s\".<br/><b>Motif : </b>%s"
|
||||
|
||||
#: inc/case.class.php:420
|
||||
#, php-format
|
||||
msgid "<b>Task re-assigned!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has been re-assigned from \"%s\" to \"%s\".<br/><b>Reason: </b>%s"
|
||||
msgstr "<b>Tâche ré-assignée !</b><br/><b>Cas : </b>%s<br/><b>Tâche : </b>\"%s\" a été ré-assignée de \"%s\" à \"%s\".<br/><b>Motif : </b>%s"
|
||||
|
||||
#: inc/case.class.php:429
|
||||
#, php-format
|
||||
msgid "<b>Task assigned!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has been assigned to \"%s\".<br/><b>Reason: </b>%s"
|
||||
msgstr "<b>Tâche assignée !</b><br/><b>Cas : </b>%s<br/><b>Tâche : </b>\"%s\" a été asignée à \"%s\".<br/><b>Motif : </b>%s"
|
||||
|
||||
#: inc/case.class.php:510
|
||||
msgid "Current task(s) properties"
|
||||
msgstr "Propriétés des tâches en cours"
|
||||
|
||||
#: inc/case.class.php:316 inc/task.class.php:263
|
||||
#: inc/case.class.php:514 inc/task.class.php:283
|
||||
msgid "Task"
|
||||
msgstr "Tâche"
|
||||
|
||||
#: inc/case.class.php:317 inc/task.class.php:264
|
||||
#: inc/case.class.php:515 inc/task.class.php:284
|
||||
msgid "Task guid"
|
||||
msgstr "Guid de la tâche"
|
||||
|
||||
#: inc/case.class.php:318 inc/task.class.php:265
|
||||
#: inc/case.class.php:516 inc/task.class.php:285
|
||||
msgid "Current user"
|
||||
msgstr "Utilisateur actuel"
|
||||
|
||||
#: inc/case.class.php:319 inc/task.class.php:266
|
||||
#: inc/case.class.php:517 inc/task.class.php:286
|
||||
msgid "Task delegation date"
|
||||
msgstr "Date de délégation de tâche"
|
||||
|
||||
#: inc/case.class.php:341 inc/task.class.php:275
|
||||
#: inc/case.class.php:539 inc/task.class.php:295
|
||||
msgid "To be claimed"
|
||||
msgstr "A réclamer"
|
||||
|
||||
#: inc/case.class.php:377
|
||||
#: inc/case.class.php:575
|
||||
msgid "Sub-case properties"
|
||||
msgstr "Propriétés du sous-cas"
|
||||
|
||||
#: inc/case.class.php:380
|
||||
#: inc/case.class.php:578
|
||||
msgid "Parent case properties"
|
||||
msgstr "Propriétés du cas parent"
|
||||
|
||||
#: inc/case.class.php:382
|
||||
#: inc/case.class.php:580
|
||||
msgid "Case properties"
|
||||
msgstr "Propriétés du cas"
|
||||
|
||||
#: inc/case.class.php:387 inc/case.class.php:584 inc/case.class.php:1036
|
||||
#: inc/process.class.php:548
|
||||
#: inc/case.class.php:585 inc/case.class.php:776 inc/case.class.php:1328
|
||||
#: inc/process.class.php:576
|
||||
msgid "Process"
|
||||
msgstr "Processus"
|
||||
|
||||
#: inc/case.class.php:388
|
||||
#: inc/case.class.php:586 inc/notificationtargetprocessmaker.class.php:64
|
||||
msgid "Case title"
|
||||
msgstr "Titre du cas"
|
||||
|
||||
#: inc/case.class.php:389
|
||||
#: inc/case.class.php:587
|
||||
msgid "Case number"
|
||||
msgstr "Numéro du cas"
|
||||
|
||||
#: inc/case.class.php:390
|
||||
#: inc/case.class.php:588
|
||||
msgid "Case status"
|
||||
msgstr "Statut du cas"
|
||||
|
||||
#: inc/case.class.php:391
|
||||
#: inc/case.class.php:589
|
||||
msgid "Case guid"
|
||||
msgstr "Guid du cas"
|
||||
|
||||
#: inc/case.class.php:392
|
||||
#: inc/case.class.php:590
|
||||
msgid "Creator"
|
||||
msgstr "Créateur"
|
||||
|
||||
#: inc/case.class.php:393
|
||||
#: inc/case.class.php:591 inc/case.class.php:1370
|
||||
msgid "Creation date"
|
||||
msgstr "Date de création"
|
||||
|
||||
#: inc/case.class.php:394
|
||||
#: inc/case.class.php:592
|
||||
msgid "Last update"
|
||||
msgstr "Dernière mise à jour"
|
||||
|
||||
#: inc/case.class.php:479
|
||||
#: inc/case.class.php:675
|
||||
#, php-format
|
||||
msgid "Case is linked to a %1s"
|
||||
msgstr "Le cas est lié à un %1s"
|
||||
|
||||
#: inc/case.class.php:481
|
||||
#: inc/case.class.php:677
|
||||
#, php-format
|
||||
msgid "Sub-case is linked to a %1s"
|
||||
msgstr "Le sous-cas est lié à un %1s"
|
||||
|
||||
#: inc/case.class.php:506
|
||||
#: inc/case.class.php:698
|
||||
msgid "Case cancellation"
|
||||
msgstr "Annulation du cas"
|
||||
|
||||
#: inc/case.class.php:507
|
||||
#: inc/case.class.php:699
|
||||
msgid "Cancel case"
|
||||
msgstr "Annuler cas"
|
||||
|
||||
#: inc/case.class.php:511
|
||||
#: inc/case.class.php:703
|
||||
msgid "Confirm cancellation?"
|
||||
msgstr "Confirmer l’annulation ?"
|
||||
|
||||
#: inc/case.class.php:511 inc/profile.class.php:23
|
||||
#: inc/case.class.php:703 inc/profile.class.php:23
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: inc/case.class.php:532
|
||||
#: inc/case.class.php:717
|
||||
msgid "Case deletion"
|
||||
msgstr "Suppression du cas"
|
||||
|
||||
#: inc/case.class.php:533
|
||||
msgid "Delete case"
|
||||
msgstr "Supprimer le cas"
|
||||
|
||||
#: inc/case.class.php:585 inc/case.class.php:1029
|
||||
#: inc/case.class.php:777 inc/case.class.php:1321
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: inc/case.class.php:587 inc/case.class.php:1070
|
||||
#: inc/case.class.php:779 inc/case.class.php:1362
|
||||
msgid "Sub-case of"
|
||||
msgstr "Sous-cas de"
|
||||
|
||||
#: inc/case.class.php:602
|
||||
#: inc/case.class.php:796
|
||||
msgid "Add a new case"
|
||||
msgstr "Ajouter un nouveau cas"
|
||||
|
||||
#: inc/case.class.php:995
|
||||
#: inc/case.class.php:1227
|
||||
msgctxt "case_status"
|
||||
msgid "Draft"
|
||||
msgstr "Brouillon"
|
||||
|
||||
#: inc/case.class.php:996
|
||||
#: inc/case.class.php:1228
|
||||
msgctxt "case_status"
|
||||
msgid "To do"
|
||||
msgstr "A faire"
|
||||
|
||||
#: inc/case.class.php:997
|
||||
#: inc/case.class.php:1229
|
||||
msgctxt "case_status"
|
||||
msgid "Completed"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: inc/case.class.php:998
|
||||
#: inc/case.class.php:1230
|
||||
msgctxt "case_status"
|
||||
msgid "Cancelled"
|
||||
msgstr "Annulé"
|
||||
|
||||
#: inc/case.class.php:1022
|
||||
#: inc/case.class.php:1314
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: inc/case.class.php:1049
|
||||
#: inc/case.class.php:1335 inc/notificationtargetprocessmaker.class.php:72
|
||||
#| msgid "Item entity"
|
||||
msgid "Item type"
|
||||
msgstr "Type de l'item"
|
||||
|
||||
#: inc/case.class.php:1342
|
||||
msgid "Item"
|
||||
msgstr "Item"
|
||||
|
||||
#: inc/case.class.php:1056
|
||||
#: inc/case.class.php:1349
|
||||
msgid "Item entity"
|
||||
msgstr "Entité de l'item"
|
||||
|
||||
#: inc/casechangelog.class.php:35
|
||||
#: inc/case.class.php:1379
|
||||
#| msgid "Last update"
|
||||
msgid "Last update date"
|
||||
msgstr "Date de dernière mise à jour"
|
||||
|
||||
#: inc/case.class.php:1392
|
||||
#, php-format
|
||||
#| msgid "Case status"
|
||||
msgid "Case status is '%s'"
|
||||
msgstr "L'état du cas est '%s'"
|
||||
|
||||
#: inc/casechangelog.class.php:36
|
||||
msgid "Change log"
|
||||
msgstr "Evolution"
|
||||
|
||||
#: inc/casedynaform.class.php:80
|
||||
#: inc/casedynaform.class.php:83
|
||||
msgid "Dynaforms"
|
||||
msgstr "DynaForms"
|
||||
|
||||
#: inc/casehistory.class.php:35
|
||||
#: inc/casehistory.class.php:36
|
||||
msgid "History"
|
||||
msgstr "Historique"
|
||||
|
||||
@@ -269,43 +337,51 @@ msgstr "Liens-cas"
|
||||
msgid "Case-link"
|
||||
msgstr "Lien-cas"
|
||||
|
||||
#: inc/caselink.class.php:75 inc/caselink.class.php:165
|
||||
#: inc/caselink.class.php:75
|
||||
msgid "Synchronous"
|
||||
msgstr "Synchrone"
|
||||
|
||||
#: inc/caselink.class.php:80 inc/caselink.class.php:179
|
||||
msgid "External data"
|
||||
msgstr "Données externes"
|
||||
|
||||
#: inc/caselink.class.php:80 inc/caselink.class.php:171
|
||||
#: inc/caselink.class.php:85 inc/caselink.class.php:185
|
||||
msgid "Self"
|
||||
msgstr "Self"
|
||||
|
||||
#: inc/caselink.class.php:85 inc/caselink.class.php:189
|
||||
#: inc/caselink.class.php:90 inc/caselink.class.php:203
|
||||
msgid "Source task GUID"
|
||||
msgstr "GUID de la tâche source"
|
||||
|
||||
#: inc/caselink.class.php:93 inc/caselink.class.php:195
|
||||
#: inc/caselink.class.php:98 inc/caselink.class.php:209
|
||||
msgid "Target task GUID"
|
||||
msgstr "GUID de la tâche cible"
|
||||
|
||||
#: inc/caselink.class.php:101 inc/caselink.class.php:207
|
||||
#: inc/caselink.class.php:106 inc/caselink.class.php:221
|
||||
msgid "Target process GUID"
|
||||
msgstr "GUID du Processus cible"
|
||||
|
||||
#: inc/caselink.class.php:110 inc/caselink.class.php:201
|
||||
#: inc/caselink.class.php:115 inc/caselink.class.php:215
|
||||
msgid "Target dynaform GUID"
|
||||
msgstr "GUID du dynaform cible"
|
||||
|
||||
#: inc/caselink.class.php:115 inc/caselink.class.php:213
|
||||
#: inc/caselink.class.php:120 inc/caselink.class.php:227
|
||||
msgid "Source condition"
|
||||
msgstr "Condition d'activation du lien"
|
||||
|
||||
#: inc/caselink.class.php:121 inc/caselink.class.php:177
|
||||
#: inc/caselink.class.php:126 inc/caselink.class.php:191
|
||||
msgid "Claim target task"
|
||||
msgstr "Tâche cible 'à réclamer'"
|
||||
|
||||
#: inc/caselink.class.php:126 inc/caselink.class.php:183
|
||||
#: inc/caselink.class.php:136
|
||||
msgid "Impersonate target task user"
|
||||
msgstr "Personnifier l'utilisateur de la tâche cible"
|
||||
|
||||
#: inc/caselink.class.php:141 inc/caselink.class.php:197
|
||||
msgid "External application JSON config"
|
||||
msgstr "Configuration JSON de l'application externe"
|
||||
|
||||
#: inc/casemap.class.php:43
|
||||
#: inc/casemap.class.php:44
|
||||
msgid "Map"
|
||||
msgstr "Carte"
|
||||
|
||||
@@ -314,190 +390,294 @@ msgid "ProcessMaker setup"
|
||||
msgstr "Configuration du serveur ProcessMaker"
|
||||
|
||||
#: inc/config.class.php:159
|
||||
msgid "Server URL (must be in same domain than GLPI)"
|
||||
msgstr "URL du serveur (doit être dans le même domaine que GLPI)"
|
||||
#| msgid "Server URL (must be in same domain than GLPI)"
|
||||
msgid "Server URL (must be in same domain than GLPI, if GLPI is using HTTPS, PM server must also use HTTPS)"
|
||||
msgstr "URL du serveur (doit être dans le même domaine que GLPI, si GLPI utilise HTTPS, alors PM doit aussi utiliser HTTPS)"
|
||||
|
||||
#: inc/config.class.php:164
|
||||
#: inc/config.class.php:163
|
||||
msgid "Common domain with GLPI"
|
||||
msgstr "Domaine commun avec GLPI"
|
||||
|
||||
#: inc/config.class.php:193
|
||||
#: inc/config.class.php:192
|
||||
msgid "None!"
|
||||
msgstr "Aucun !"
|
||||
|
||||
#: inc/config.class.php:202
|
||||
#: inc/config.class.php:201
|
||||
msgid "Verify SSL certificate"
|
||||
msgstr "Verification du certificat SSL"
|
||||
|
||||
#: inc/config.class.php:206
|
||||
msgid "Workspace Name"
|
||||
msgstr "Nom du Workspace"
|
||||
|
||||
#: inc/config.class.php:207
|
||||
#: inc/config.class.php:211
|
||||
msgid "Server administrator name"
|
||||
msgstr "Non de l'administreur du server ProcessMaker"
|
||||
|
||||
#: inc/config.class.php:212
|
||||
#: inc/config.class.php:216
|
||||
msgid "Server administrator password"
|
||||
msgstr "Mot de passe de l'administrateur du serveur ProcessMaker"
|
||||
|
||||
#: inc/config.class.php:218 inc/config.class.php:258
|
||||
#: inc/config.class.php:222 inc/config.class.php:262
|
||||
msgid "Connection status"
|
||||
msgstr "Status de la connexion"
|
||||
|
||||
#: inc/config.class.php:234
|
||||
#: inc/config.class.php:238
|
||||
msgid "SQL server setup"
|
||||
msgstr "Configuration du serveur SQL"
|
||||
|
||||
#: inc/config.class.php:237
|
||||
#: inc/config.class.php:241
|
||||
msgid "SQL server (MariaDB or MySQL)"
|
||||
msgstr "SQL server (MariaDB ou MySQL)"
|
||||
|
||||
#: inc/config.class.php:242
|
||||
#: inc/config.class.php:246
|
||||
msgid "Database name"
|
||||
msgstr "Nom de la base de données"
|
||||
|
||||
#: inc/config.class.php:247
|
||||
#: inc/config.class.php:251
|
||||
msgid "SQL user"
|
||||
msgstr "Utilisateur SQL"
|
||||
|
||||
#: inc/config.class.php:252
|
||||
#: inc/config.class.php:256
|
||||
msgid "SQL password"
|
||||
msgstr "Mot de passe SQL"
|
||||
|
||||
#: inc/config.class.php:269
|
||||
#: inc/config.class.php:273
|
||||
msgid "Theme Name"
|
||||
msgstr "Nom du thème"
|
||||
|
||||
#: inc/config.class.php:275
|
||||
#: inc/config.class.php:279
|
||||
msgid "Main Task Category (edit to change name)"
|
||||
msgstr "Catégorie principale des tâches (éditer pour changer le nom)"
|
||||
|
||||
#: inc/config.class.php:282
|
||||
#: inc/config.class.php:286
|
||||
msgid "Task Writer (edit to change name)"
|
||||
msgstr "Auteur des tâches (éditer pour changer le nom)"
|
||||
|
||||
#: inc/config.class.php:302
|
||||
#: inc/config.class.php:306
|
||||
msgid "Group in ProcessMaker which will contain all GLPI users"
|
||||
msgstr "Groupe dans ProcessMaker qui contiendra les utilisateurs de GLPI"
|
||||
|
||||
#: inc/config.class.php:331
|
||||
#: inc/config.class.php:321 inc/process.class.php:510 inc/process.class.php:637
|
||||
msgid "Max cases per item (0=unlimited)"
|
||||
msgstr "Nombre de cas maxi par item (0 = pas de limite)"
|
||||
|
||||
#: inc/config.class.php:340
|
||||
msgid "Processmaker system information"
|
||||
msgstr "Informations système du serveur ProcessMaker"
|
||||
|
||||
#: inc/config.class.php:334 inc/config.class.php:344
|
||||
#: inc/config.class.php:343 inc/config.class.php:353
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: inc/config.class.php:335
|
||||
#: inc/config.class.php:344
|
||||
msgid "Web server"
|
||||
msgstr "Serveur web"
|
||||
|
||||
#: inc/config.class.php:336
|
||||
#: inc/config.class.php:345
|
||||
msgid "Server name"
|
||||
msgstr "Nom du serveur"
|
||||
|
||||
#: inc/config.class.php:337
|
||||
#: inc/config.class.php:346
|
||||
msgid "PHP version"
|
||||
msgstr "Version de PHP"
|
||||
|
||||
#: inc/config.class.php:338
|
||||
#: inc/config.class.php:347
|
||||
msgid "DB version"
|
||||
msgstr "Version de la Db"
|
||||
|
||||
#: inc/config.class.php:339
|
||||
#: inc/config.class.php:348
|
||||
msgid "DB server IP"
|
||||
msgstr "IP du serveur DB"
|
||||
|
||||
#: inc/config.class.php:340
|
||||
#: inc/config.class.php:349
|
||||
msgid "DB name"
|
||||
msgstr "Nom de la BD"
|
||||
|
||||
#: inc/config.class.php:341
|
||||
#: inc/config.class.php:350
|
||||
msgid "User browser"
|
||||
msgstr "Navigateur de l’utilisateur"
|
||||
|
||||
#: inc/config.class.php:342
|
||||
#: inc/config.class.php:351
|
||||
msgid "User IP"
|
||||
msgstr "IP de l'utilisateur"
|
||||
|
||||
#: inc/config.class.php:344
|
||||
#: inc/config.class.php:353
|
||||
msgid "Not yet!"
|
||||
msgstr "Pas encore !"
|
||||
|
||||
#: inc/process.class.php:350
|
||||
#: inc/notificationtargetcase.class.php:26
|
||||
msgid "Send email"
|
||||
msgstr "Envoi d'email"
|
||||
|
||||
#: inc/notificationtargetcase.class.php:37
|
||||
msgid "eMail recipients"
|
||||
msgstr "Destinataires des emails"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:60
|
||||
#| msgid "Process case"
|
||||
#| msgid_plural "Process cases"
|
||||
msgid "Process category"
|
||||
msgstr "Catégorie du processus"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:61
|
||||
#| msgid "Process case"
|
||||
#| msgid_plural "Process cases"
|
||||
msgid "Process category id"
|
||||
msgstr "ID de la catégorie du processus"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:62
|
||||
#| msgid "Process case task"
|
||||
#| msgid_plural "Process case tasks"
|
||||
msgid "Process category comment"
|
||||
msgstr "Commentaire de la catégorie du processus"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:63
|
||||
#| msgid "Case guid"
|
||||
msgid "Case id"
|
||||
msgstr "ID du cas"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:65
|
||||
#| msgid "Case deletion"
|
||||
msgid "Case description"
|
||||
msgstr "Description du cas"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:67
|
||||
msgid "Case variable 'XXX'"
|
||||
msgstr "Variable de cas 'XXX'"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:68
|
||||
msgid "List of values in 'YYY' array"
|
||||
msgstr "Liste des valeurs du tableau 'YYY'"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:69
|
||||
msgid "Number of rows in 'YYY' array"
|
||||
msgstr "Nombre de lignes du tableau 'YYY'"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:70
|
||||
msgid "Value for colname in 'YYY' array"
|
||||
msgstr "Valeur de la colonne 'colname' du tableau 'YYY'"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:71
|
||||
msgid "Value for key in 'ZZZ' assoc array (1-dimension array)"
|
||||
msgstr "Valeur pour la clé 'key' du tableau associatif à une dimension 'ZZZ'"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:73
|
||||
#| msgid "Item"
|
||||
msgid "Item id"
|
||||
msgstr "ID de l'item"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:74
|
||||
#| msgid "Item"
|
||||
msgid "Item URL"
|
||||
msgstr "URL de l'item"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:75
|
||||
#| msgid "Item entity"
|
||||
msgid "Item title"
|
||||
msgstr "Titre de l'item"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:83
|
||||
msgid "XXX is to be replaced by any case variable names"
|
||||
msgstr "XXX doit être remplacé par n'importe quel nom de variable de cas"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:86
|
||||
msgid "YYY is to be replaced by any array variables"
|
||||
msgstr "YYY doit être remplacé par n'importe quel nom de tableau"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:90
|
||||
msgid "ZZZ is to be replaced by any assoc array variables (1-dimension array with key/value pairs)"
|
||||
msgstr "ZZZ doit être replacé par n'importe quel nom de tableau associatif à une dimension (paire clé/valeur)"
|
||||
|
||||
#: inc/notificationtargettask.class.php:195
|
||||
#| msgid "Task delegation date"
|
||||
msgid "Task action"
|
||||
msgstr "Action de la tâche"
|
||||
|
||||
#: inc/process.class.php:366
|
||||
msgid "Synchronize Process List"
|
||||
msgstr "Synchroniser la liste des processus"
|
||||
|
||||
#: inc/process.class.php:427 inc/process.class.php:589
|
||||
#: inc/process.class.php:443 inc/process.class.php:617
|
||||
msgid "Process GUID"
|
||||
msgstr "GUID du Processus"
|
||||
|
||||
#: inc/process.class.php:433
|
||||
#: inc/process.class.php:449
|
||||
msgid "Process type"
|
||||
msgstr "Type de processus"
|
||||
|
||||
#: inc/process.class.php:439
|
||||
#: inc/process.class.php:455
|
||||
msgid "Hide case num. & title"
|
||||
msgstr "Cacher num. et titre du cas"
|
||||
|
||||
#: inc/process.class.php:445
|
||||
#: inc/process.class.php:461
|
||||
msgid "Insert Task Category"
|
||||
msgstr "Insérer la catégorie des tâches"
|
||||
|
||||
#: inc/process.class.php:457
|
||||
#: inc/process.class.php:473
|
||||
msgid "Ticket type (self-service)"
|
||||
msgstr "Type de ticket (self-service)"
|
||||
|
||||
#: inc/process.class.php:464 inc/process.class.php:609
|
||||
#: inc/process.class.php:480 inc/process.class.php:642
|
||||
msgid "Visible in Incident for Central interface"
|
||||
msgstr "Visible pour un Incident sur l'interface Centrale"
|
||||
|
||||
#: inc/process.class.php:470 inc/process.class.php:614
|
||||
#: inc/process.class.php:486 inc/process.class.php:647
|
||||
msgid "Visible in Request for Central interface"
|
||||
msgstr "Visible pour une demande sur l'interface Centrale"
|
||||
|
||||
#: inc/process.class.php:476 inc/process.class.php:666
|
||||
#: inc/process.class.php:492 inc/process.class.php:699
|
||||
msgid "Visible in Change"
|
||||
msgstr "Visible dans un Changement"
|
||||
|
||||
#: inc/process.class.php:482 inc/process.class.php:671
|
||||
#: inc/process.class.php:498 inc/process.class.php:704
|
||||
msgid "Visible in Problem"
|
||||
msgstr "Visible dans un Problème"
|
||||
|
||||
#: inc/process.class.php:519
|
||||
#: inc/process.class.php:504
|
||||
msgid "Maintenance"
|
||||
msgstr "Maintenance"
|
||||
|
||||
#: inc/process.class.php:547
|
||||
msgctxt "process_type"
|
||||
msgid "Classic"
|
||||
msgstr "Classique"
|
||||
|
||||
#: inc/process.class.php:520
|
||||
#: inc/process.class.php:548
|
||||
msgctxt "process_type"
|
||||
msgid "BPMN"
|
||||
msgstr "BPMN"
|
||||
|
||||
#: inc/process.class.php:546
|
||||
#: inc/process.class.php:574
|
||||
msgid "Processes"
|
||||
msgstr "Processus"
|
||||
|
||||
#: inc/process.class.php:599
|
||||
#: inc/process.class.php:627
|
||||
msgid "Hide case number and title in task descriptions"
|
||||
msgstr "Masquer numéro et titre des cas dans les descriptions des tâches"
|
||||
|
||||
#: inc/process.class.php:604
|
||||
#: inc/process.class.php:632
|
||||
msgid "Insert Task Category comments in Task Description"
|
||||
msgstr ""
|
||||
"Insérer les commentaires des Catégories de Tâches dans les descriptions des "
|
||||
"Tâches"
|
||||
msgstr "Insérer les commentaires des Catégories de Tâches dans les descriptions des Tâches"
|
||||
|
||||
#: inc/process.class.php:619
|
||||
#: inc/process.class.php:652
|
||||
msgid "ITIL Category for Self-service interface (left empty to disable)"
|
||||
msgstr ""
|
||||
"Catégorie ITIL pour l'interface libre-service (laissez vide pour désactiver)"
|
||||
msgstr "Catégorie ITIL pour l'interface libre-service (laissez vide pour désactiver)"
|
||||
|
||||
#: inc/process.class.php:646
|
||||
#: inc/process.class.php:679
|
||||
msgid "Type for Self-service interface"
|
||||
msgstr "Type de ticket pour l'interface libre-service"
|
||||
|
||||
#: inc/process.class.php:676
|
||||
#: inc/process.class.php:709
|
||||
msgid "Process type (to be changed only if not up-to-date)"
|
||||
msgstr "Type de processus (à modifier uniquement si pas à jour)"
|
||||
|
||||
#: inc/process.class.php:862
|
||||
#, php-format
|
||||
#| msgid "ProcessMaker plugin is under maintenance, please retry later, thank you."
|
||||
msgid "Process '%s' is under maintenance, please retry later, thank you."
|
||||
msgstr "Le processus '%s' est en maintenance, ré-essayez plus tard, merci."
|
||||
|
||||
#: inc/process_profile.class.php:26 inc/process_profile.class.php:45
|
||||
msgid "Authorizations"
|
||||
msgstr "Autorisations"
|
||||
@@ -516,40 +696,42 @@ msgctxt "errors"
|
||||
msgid "Can't create case: no rights for it!"
|
||||
msgstr "Impossible de créer le cas : pas de droits pour cela !"
|
||||
|
||||
#: inc/processmaker.class.php:984
|
||||
#: inc/processmaker.class.php:1012
|
||||
msgid "Syncs GLPI users and groups into ProcessMaker."
|
||||
msgstr "Synchronisation des utilisateurs GLPI et des groups avec ProcessMaker."
|
||||
|
||||
#: inc/processmaker.class.php:986
|
||||
#: inc/processmaker.class.php:1014
|
||||
msgid "Cleaning of orphan cases."
|
||||
msgstr "Nettoyage des cas orphelins."
|
||||
|
||||
#: inc/processmaker.class.php:986
|
||||
#: inc/processmaker.class.php:1014
|
||||
msgid "Number of days to keep orphan cases"
|
||||
msgstr "Nombre de jours avant nettoyage des cas orphelins"
|
||||
|
||||
#: inc/processmaker.class.php:988
|
||||
#: inc/processmaker.class.php:1016
|
||||
msgid "To apply task actions between cases."
|
||||
msgstr "Pour appliquer des actions de tâches entre cas."
|
||||
|
||||
#: inc/processmaker.class.php:1696
|
||||
#: inc/processmaker.class.php:1720
|
||||
msgid "Case title: "
|
||||
msgstr "Titre du cas : "
|
||||
|
||||
#: inc/processmaker.class.php:2178
|
||||
#: inc/processmaker.class.php:2275
|
||||
msgid "A 'Case' is running!"
|
||||
msgstr "Un 'Cas' est en cours !"
|
||||
|
||||
#: inc/processmaker.class.php:2179
|
||||
#: inc/processmaker.class.php:2276
|
||||
msgid "You must manage it first (see 'Process - Case' tab)!"
|
||||
msgstr "Vous devez d'abord le terminer (voir onglet 'Processus - Cas') !"
|
||||
|
||||
#: inc/processmaker.class.php:3038
|
||||
msgid ""
|
||||
"ProcessMaker plugin is under maintenance, please retry later, thank you."
|
||||
msgstr ""
|
||||
"Le plugin ProcessMaker est en maintenance, veuillez ré-essayer plus tard, "
|
||||
"merci."
|
||||
#: inc/processmaker.class.php:2774
|
||||
#, php-format
|
||||
msgid "Unable to derivate case! Retry in a moment, or ask your administrator.<hr>Error code: %u<br/>Error message: %s<br/>"
|
||||
msgstr "Impossible de dériver le cas ! Ré-essayez dans un moment, ou demandez à votre administrateur.<hr>Code d'erreur : %u<br/>Message d'erreur : %s<br/>"
|
||||
|
||||
#: inc/processmaker.class.php:3281
|
||||
msgid "ProcessMaker plugin is under maintenance, please retry later, thank you."
|
||||
msgstr "Le plugin ProcessMaker est en maintenance, veuillez ré-essayer plus tard, merci."
|
||||
|
||||
#: inc/profile.class.php:17
|
||||
msgid "Process configuration"
|
||||
@@ -559,36 +741,62 @@ msgstr "Configuration des Processus"
|
||||
msgid "Cases"
|
||||
msgstr "Cas"
|
||||
|
||||
#: inc/profile.class.php:23
|
||||
msgid "Ad Hoc user re-assign"
|
||||
msgstr "Ré-assignation d'un utilisateur Ad Hoc"
|
||||
|
||||
#: inc/task.class.php:29
|
||||
msgid "Process case task"
|
||||
msgid_plural "Process case tasks"
|
||||
msgstr[0] "Tâche d'un cas"
|
||||
msgstr[1] "Tâches d'un cas"
|
||||
|
||||
#: inc/task.class.php:258
|
||||
#: inc/task.class.php:278
|
||||
msgid "Sub-case task(s)"
|
||||
msgstr "Tache(s) du sous-cas"
|
||||
|
||||
#: inc/taskcategory.class.php:21 inc/taskcategory.class.php:31
|
||||
#: inc/taskcategory.class.php:24 inc/taskcategory.class.php:116
|
||||
#| msgid "Process case"
|
||||
#| msgid_plural "Process cases"
|
||||
msgid "Process task"
|
||||
msgstr "Tâche du processus"
|
||||
|
||||
#: inc/taskcategory.class.php:29
|
||||
#| msgid "Task List"
|
||||
msgid "Task list"
|
||||
msgstr "List des tâches"
|
||||
|
||||
#: inc/taskcategory.class.php:39
|
||||
msgid "Task List"
|
||||
msgstr "Liste des tâches"
|
||||
|
||||
#: inc/taskcategory.class.php:32
|
||||
#: inc/taskcategory.class.php:40 inc/taskcategory.class.php:118
|
||||
msgid "Task name"
|
||||
msgstr "Nom de la Tâche"
|
||||
|
||||
#: inc/taskcategory.class.php:34 inc/taskcategory.class.php:60
|
||||
#: inc/taskcategory.class.php:42 inc/taskcategory.class.php:68
|
||||
#: inc/taskcategory.class.php:121 inc/taskcategory.class.php:155
|
||||
msgid "Start"
|
||||
msgstr "Démarrer"
|
||||
|
||||
#: inc/taskcategory.class.php:35
|
||||
#: inc/taskcategory.class.php:43 inc/taskcategory.class.php:122
|
||||
msgid "Task GUID"
|
||||
msgstr "GUID de la Tâche"
|
||||
|
||||
#: inc/taskcategory.class.php:38 inc/taskcategory.class.php:78
|
||||
#: inc/taskcategory.class.php:46 inc/taskcategory.class.php:86
|
||||
#: inc/taskcategory.class.php:125 inc/taskcategory.class.php:173
|
||||
msgid "Sub-process"
|
||||
msgstr "Sous-processus"
|
||||
|
||||
#: inc/taskcategory.class.php:117
|
||||
#| msgid "Process case"
|
||||
#| msgid_plural "Process cases"
|
||||
msgid "Process name"
|
||||
msgstr "Nom du procesus"
|
||||
|
||||
#~ msgid "Delete case"
|
||||
#~ msgstr "Delete case"
|
||||
|
||||
#~ msgid "Case item"
|
||||
#~ msgstr "Case item"
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Processmaker plugin 3.3.0\n"
|
||||
"POT-Creation-Date: 2018-08-06 14:32+0200\n"
|
||||
"PO-Revision-Date: 2018-08-06 14:33+0200\n"
|
||||
"POT-Creation-Date: 2020-07-13 09:41+0200\n"
|
||||
"PO-Revision-Date: 2020-07-13 11:03+0200\n"
|
||||
"Last-Translator: tomolimo\n"
|
||||
"Language-Team: en_GB\n"
|
||||
"Language: en_GB\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.3.1\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-KeywordsList: ;__:1,2t;_e:1,2t;_x:1c,2,3t;_n:1,2,4t;__s:1,2t;"
|
||||
@@ -22,239 +22,324 @@ msgstr ""
|
||||
"X-Poedit-SearchPath-5: hook.php\n"
|
||||
"X-Poedit-SearchPath-6: setup.php\n"
|
||||
|
||||
#: ajax/task_users.php:25
|
||||
#: ajax/task_users.php:36
|
||||
msgid "Re-assign task to"
|
||||
msgstr "Re-assign task to"
|
||||
|
||||
#: ajax/task_users.php:45
|
||||
#: ajax/task_users.php:60 ajax/task_users.php:61 ajax/task_users.php:124
|
||||
msgid "Re-assign"
|
||||
msgstr "Re-assign"
|
||||
|
||||
#: front/case.form.php:35
|
||||
#: ajax/task_users.php:110
|
||||
#| msgid "Task already assigned to this person!"
|
||||
msgid "Task is already assigned to this user or group!"
|
||||
msgstr "Task is already assigned to this user or group!"
|
||||
|
||||
#: ajax/task_users.php:110 ajax/task_users.php:122
|
||||
#| msgid "Re-assign task to"
|
||||
msgid "Re-assign task"
|
||||
msgstr "Re-assign task"
|
||||
|
||||
#: ajax/task_users.php:114 ajax/task_users.php:119
|
||||
#| msgid "Claim target task"
|
||||
msgid "Un-claim task"
|
||||
msgstr "Un-claim task"
|
||||
|
||||
#: ajax/task_users.php:115
|
||||
msgid ""
|
||||
"Please input reason to un-claim<br/>(task will be re-assigned to former "
|
||||
"group):"
|
||||
msgstr ""
|
||||
"Please input reason to un-claim<br/>(task will be re-assigned to former "
|
||||
"group):"
|
||||
|
||||
#: ajax/task_users.php:116
|
||||
msgid "Un-claim"
|
||||
msgstr "Un-claim"
|
||||
|
||||
#: ajax/task_users.php:119
|
||||
msgid "Can\\'t un-assign Task!"
|
||||
msgstr "Can\\'t un-assign Task!"
|
||||
|
||||
#: ajax/task_users.php:123
|
||||
msgid "Please input reason to re-assign:"
|
||||
msgstr "Please input reason to re-assign:"
|
||||
|
||||
#: ajax/task_users.php:134
|
||||
msgid "Send reminder"
|
||||
msgstr "Send reminder"
|
||||
|
||||
#: front/case.form.php:32
|
||||
msgid "Case has been deleted!"
|
||||
msgstr "Case has been deleted!"
|
||||
|
||||
#: front/case.form.php:37
|
||||
#: front/case.form.php:34
|
||||
msgid "Unable to delete case!"
|
||||
msgstr "Unable to delete case!"
|
||||
|
||||
#: front/case.form.php:50
|
||||
#: front/case.form.php:46
|
||||
msgid "Case has been cancelled!"
|
||||
msgstr "Case has been cancelled!"
|
||||
|
||||
#: front/case.form.php:52 front/case.form.php:55
|
||||
#: front/case.form.php:48 front/case.form.php:51
|
||||
msgid "Unable to cancel case!"
|
||||
msgstr "Unable to cancel case!"
|
||||
|
||||
#: front/case.form.php:76 front/case.form.php:78 inc/case.class.php:1018
|
||||
#: front/case.form.php:70 front/case.form.php:72 inc/case.class.php:1310
|
||||
msgid "Process cases"
|
||||
msgstr "Process cases"
|
||||
|
||||
#: front/case.php:5 front/caselink.form.php:27 front/caselink.php:5
|
||||
#: front/process.form.php:25 front/process.php:5 inc/caselink.class.php:143
|
||||
#: inc/config.class.php:50 inc/config.class.php:354 inc/process.class.php:393
|
||||
#: front/case.php:5 front/caselink.form.php:29 front/caselink.php:5
|
||||
#: front/process.form.php:27 front/process.php:5 inc/caselink.class.php:157
|
||||
#: inc/config.class.php:50 inc/config.class.php:363 inc/process.class.php:409
|
||||
#: inc/profile.class.php:52 inc/profile.class.php:83
|
||||
msgid "ProcessMaker"
|
||||
msgstr "ProcessMaker"
|
||||
|
||||
#: front/processmaker.form.php:85
|
||||
#: front/processmaker.form.php:80
|
||||
msgid "Task re-assigned!"
|
||||
msgstr "Task re-assigned!"
|
||||
|
||||
#: front/processmaker.form.php:87
|
||||
#: front/processmaker.form.php:82
|
||||
msgid "Error re-assigning task: "
|
||||
msgstr "Error re-assigning task: "
|
||||
|
||||
#: front/processmaker.form.php:90
|
||||
msgid "Task already assigned to this person!"
|
||||
msgstr "Task already assigned to this person!"
|
||||
#: front/processmaker.form.php:93
|
||||
#| msgid "Task name"
|
||||
msgid "Task un-claimed!"
|
||||
msgstr "Task un-claimed!"
|
||||
|
||||
#: front/processmaker.form.php:95
|
||||
msgid ""
|
||||
"Can't un-claim task! Verify 'Assignement Rules' in the process definition."
|
||||
msgstr ""
|
||||
"Can't un-claim task! Verify 'Assignement Rules' in the process definition."
|
||||
|
||||
#: front/processmaker.helpdesk.form.php:21
|
||||
msgid "Process - Case"
|
||||
msgstr "Process - Case"
|
||||
|
||||
#: front/processmaker.helpdesk.form.php:24 inc/case.class.php:605
|
||||
#: front/processmaker.helpdesk.form.php:24 inc/case.class.php:799
|
||||
msgid "Select the process you want to add"
|
||||
msgstr "Select the process you want to add"
|
||||
|
||||
#: hook.php:31 inc/taskcategory.class.php:98
|
||||
#: hook.php:9 inc/taskcategory.class.php:214
|
||||
msgid "Synchronize Task List"
|
||||
msgstr "Synchronize Task List"
|
||||
|
||||
#: hook.php:158 inc/case.class.php:77
|
||||
#: hook.php:76 inc/case.class.php:89
|
||||
msgid "Case"
|
||||
msgstr "Case"
|
||||
|
||||
#: hook.php:158 inc/case.class.php:586 inc/case.class.php:1062
|
||||
#: hook.php:76 inc/case.class.php:778 inc/case.class.php:1355
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: inc/case.class.php:23 inc/case.class.php:90 inc/case.class.php:92
|
||||
#: inc/case.class.php:25 inc/case.class.php:102 inc/case.class.php:104
|
||||
msgid "Process case"
|
||||
msgid_plural "Process cases"
|
||||
msgstr[0] "Process case"
|
||||
msgstr[1] "Process cases"
|
||||
|
||||
#: inc/case.class.php:80
|
||||
#: inc/case.class.php:92
|
||||
msgid "Sub-case"
|
||||
msgstr "Sub-case"
|
||||
|
||||
#: inc/case.class.php:312
|
||||
#: inc/case.class.php:303
|
||||
#, php-format
|
||||
msgid ""
|
||||
"<b>Task un-claimed!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has been "
|
||||
"un-assigned from \"%s\" and assigned to \"%s\" group.<br/><b>Reason: </b>%s"
|
||||
msgstr ""
|
||||
"<b>Task un-claimed!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has been "
|
||||
"un-assigned from \"%s\" and assigned to \"%s\" group.<br/><b>Reason: </b>%s"
|
||||
|
||||
#: inc/case.class.php:420
|
||||
#, php-format
|
||||
msgid ""
|
||||
"<b>Task re-assigned!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has "
|
||||
"been re-assigned from \"%s\" to \"%s\".<br/><b>Reason: </b>%s"
|
||||
msgstr ""
|
||||
"<b>Task re-assigned!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has "
|
||||
"been re-assigned from \"%s\" to \"%s\".<br/><b>Reason: </b>%s"
|
||||
|
||||
#: inc/case.class.php:429
|
||||
#, php-format
|
||||
msgid ""
|
||||
"<b>Task assigned!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has been "
|
||||
"assigned to \"%s\".<br/><b>Reason: </b>%s"
|
||||
msgstr ""
|
||||
"<b>Task assigned!</b><br/><b>Case: </b>%s<br/><b>Task: </b>\"%s\" has been "
|
||||
"assigned to \"%s\".<br/><b>Reason: </b>%s"
|
||||
|
||||
#: inc/case.class.php:510
|
||||
msgid "Current task(s) properties"
|
||||
msgstr "Current task(s) properties"
|
||||
|
||||
#: inc/case.class.php:316 inc/task.class.php:263
|
||||
#: inc/case.class.php:514 inc/task.class.php:283
|
||||
msgid "Task"
|
||||
msgstr "Task"
|
||||
|
||||
#: inc/case.class.php:317 inc/task.class.php:264
|
||||
#: inc/case.class.php:515 inc/task.class.php:284
|
||||
msgid "Task guid"
|
||||
msgstr "Task guid"
|
||||
|
||||
#: inc/case.class.php:318 inc/task.class.php:265
|
||||
#: inc/case.class.php:516 inc/task.class.php:285
|
||||
msgid "Current user"
|
||||
msgstr "Current user"
|
||||
|
||||
#: inc/case.class.php:319 inc/task.class.php:266
|
||||
#: inc/case.class.php:517 inc/task.class.php:286
|
||||
msgid "Task delegation date"
|
||||
msgstr "Task delegation date"
|
||||
|
||||
#: inc/case.class.php:341 inc/task.class.php:275
|
||||
#: inc/case.class.php:539 inc/task.class.php:295
|
||||
msgid "To be claimed"
|
||||
msgstr "To be claimed"
|
||||
|
||||
#: inc/case.class.php:377
|
||||
#: inc/case.class.php:575
|
||||
msgid "Sub-case properties"
|
||||
msgstr "Sub-case properties"
|
||||
|
||||
#: inc/case.class.php:380
|
||||
#: inc/case.class.php:578
|
||||
msgid "Parent case properties"
|
||||
msgstr "Parent case properties"
|
||||
|
||||
#: inc/case.class.php:382
|
||||
#: inc/case.class.php:580
|
||||
msgid "Case properties"
|
||||
msgstr "Case properties"
|
||||
|
||||
#: inc/case.class.php:387 inc/case.class.php:584 inc/case.class.php:1036
|
||||
#: inc/process.class.php:548
|
||||
#: inc/case.class.php:585 inc/case.class.php:776 inc/case.class.php:1328
|
||||
#: inc/process.class.php:576
|
||||
msgid "Process"
|
||||
msgstr "Process"
|
||||
|
||||
#: inc/case.class.php:388
|
||||
#: inc/case.class.php:586 inc/notificationtargetprocessmaker.class.php:64
|
||||
msgid "Case title"
|
||||
msgstr "Case title"
|
||||
|
||||
#: inc/case.class.php:389
|
||||
#: inc/case.class.php:587
|
||||
msgid "Case number"
|
||||
msgstr "Case number"
|
||||
|
||||
#: inc/case.class.php:390
|
||||
#: inc/case.class.php:588
|
||||
msgid "Case status"
|
||||
msgstr "Case status"
|
||||
|
||||
#: inc/case.class.php:391
|
||||
#: inc/case.class.php:589
|
||||
msgid "Case guid"
|
||||
msgstr "Case guid"
|
||||
|
||||
#: inc/case.class.php:392
|
||||
#: inc/case.class.php:590
|
||||
msgid "Creator"
|
||||
msgstr "Creator"
|
||||
|
||||
#: inc/case.class.php:393
|
||||
#: inc/case.class.php:591 inc/case.class.php:1370
|
||||
msgid "Creation date"
|
||||
msgstr "Creation date"
|
||||
|
||||
#: inc/case.class.php:394
|
||||
#: inc/case.class.php:592
|
||||
msgid "Last update"
|
||||
msgstr "Last update"
|
||||
|
||||
#: inc/case.class.php:479
|
||||
#: inc/case.class.php:675
|
||||
#, php-format
|
||||
msgid "Case is linked to a %1s"
|
||||
msgstr "Case is linked to a %1s"
|
||||
|
||||
#: inc/case.class.php:481
|
||||
#: inc/case.class.php:677
|
||||
#, php-format
|
||||
msgid "Sub-case is linked to a %1s"
|
||||
msgstr "Sub-case is linked to a %1s"
|
||||
|
||||
#: inc/case.class.php:506
|
||||
#: inc/case.class.php:698
|
||||
msgid "Case cancellation"
|
||||
msgstr "Case cancellation"
|
||||
|
||||
#: inc/case.class.php:507
|
||||
#: inc/case.class.php:699
|
||||
msgid "Cancel case"
|
||||
msgstr "Cancel case"
|
||||
|
||||
#: inc/case.class.php:511
|
||||
#: inc/case.class.php:703
|
||||
msgid "Confirm cancellation?"
|
||||
msgstr "Confirm cancellation?"
|
||||
|
||||
#: inc/case.class.php:511 inc/profile.class.php:23
|
||||
#: inc/case.class.php:703 inc/profile.class.php:23
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
|
||||
#: inc/case.class.php:532
|
||||
#: inc/case.class.php:717
|
||||
msgid "Case deletion"
|
||||
msgstr "Case deletion"
|
||||
|
||||
#: inc/case.class.php:533
|
||||
msgid "Delete case"
|
||||
msgstr "Delete case"
|
||||
|
||||
#: inc/case.class.php:585 inc/case.class.php:1029
|
||||
#: inc/case.class.php:777 inc/case.class.php:1321
|
||||
msgid "Title"
|
||||
msgstr "Title"
|
||||
|
||||
#: inc/case.class.php:587 inc/case.class.php:1070
|
||||
#: inc/case.class.php:779 inc/case.class.php:1362
|
||||
msgid "Sub-case of"
|
||||
msgstr "Sub-case of"
|
||||
|
||||
#: inc/case.class.php:602
|
||||
#: inc/case.class.php:796
|
||||
msgid "Add a new case"
|
||||
msgstr "Add a new case"
|
||||
|
||||
#: inc/case.class.php:995
|
||||
#: inc/case.class.php:1227
|
||||
msgctxt "case_status"
|
||||
msgid "Draft"
|
||||
msgstr "Draft"
|
||||
|
||||
#: inc/case.class.php:996
|
||||
#: inc/case.class.php:1228
|
||||
msgctxt "case_status"
|
||||
msgid "To do"
|
||||
msgstr "To do"
|
||||
|
||||
#: inc/case.class.php:997
|
||||
#: inc/case.class.php:1229
|
||||
msgctxt "case_status"
|
||||
msgid "Completed"
|
||||
msgstr "Completed"
|
||||
|
||||
#: inc/case.class.php:998
|
||||
#: inc/case.class.php:1230
|
||||
msgctxt "case_status"
|
||||
msgid "Cancelled"
|
||||
msgstr "Cancelled"
|
||||
|
||||
#: inc/case.class.php:1022
|
||||
#: inc/case.class.php:1314
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: inc/case.class.php:1049
|
||||
#: inc/case.class.php:1335 inc/notificationtargetprocessmaker.class.php:72
|
||||
#| msgid "Item entity"
|
||||
msgid "Item type"
|
||||
msgstr "Item type"
|
||||
|
||||
#: inc/case.class.php:1342
|
||||
msgid "Item"
|
||||
msgstr "Item"
|
||||
|
||||
#: inc/case.class.php:1056
|
||||
#: inc/case.class.php:1349
|
||||
msgid "Item entity"
|
||||
msgstr "Item entity"
|
||||
|
||||
#: inc/casechangelog.class.php:35
|
||||
#: inc/case.class.php:1379
|
||||
#| msgid "Last update"
|
||||
msgid "Last update date"
|
||||
msgstr "Last update date"
|
||||
|
||||
#: inc/case.class.php:1392
|
||||
#, php-format
|
||||
#| msgid "Case status"
|
||||
msgid "Case status is '%s'"
|
||||
msgstr "Case status is '%s'"
|
||||
|
||||
#: inc/casechangelog.class.php:36
|
||||
msgid "Change log"
|
||||
msgstr "Change log"
|
||||
|
||||
#: inc/casedynaform.class.php:80
|
||||
#: inc/casedynaform.class.php:83
|
||||
msgid "Dynaforms"
|
||||
msgstr "Dynaforms"
|
||||
|
||||
#: inc/casehistory.class.php:35
|
||||
#: inc/casehistory.class.php:36
|
||||
msgid "History"
|
||||
msgstr "History"
|
||||
|
||||
@@ -266,43 +351,51 @@ msgstr "Case-links"
|
||||
msgid "Case-link"
|
||||
msgstr "Case-link"
|
||||
|
||||
#: inc/caselink.class.php:75 inc/caselink.class.php:165
|
||||
#: inc/caselink.class.php:75
|
||||
msgid "Synchronous"
|
||||
msgstr "Synchronous"
|
||||
|
||||
#: inc/caselink.class.php:80 inc/caselink.class.php:179
|
||||
msgid "External data"
|
||||
msgstr "External data"
|
||||
|
||||
#: inc/caselink.class.php:80 inc/caselink.class.php:171
|
||||
#: inc/caselink.class.php:85 inc/caselink.class.php:185
|
||||
msgid "Self"
|
||||
msgstr "Self"
|
||||
|
||||
#: inc/caselink.class.php:85 inc/caselink.class.php:189
|
||||
#: inc/caselink.class.php:90 inc/caselink.class.php:203
|
||||
msgid "Source task GUID"
|
||||
msgstr "Source task GUID"
|
||||
|
||||
#: inc/caselink.class.php:93 inc/caselink.class.php:195
|
||||
#: inc/caselink.class.php:98 inc/caselink.class.php:209
|
||||
msgid "Target task GUID"
|
||||
msgstr "Target task GUID"
|
||||
|
||||
#: inc/caselink.class.php:101 inc/caselink.class.php:207
|
||||
#: inc/caselink.class.php:106 inc/caselink.class.php:221
|
||||
msgid "Target process GUID"
|
||||
msgstr "Target process GUID"
|
||||
|
||||
#: inc/caselink.class.php:110 inc/caselink.class.php:201
|
||||
#: inc/caselink.class.php:115 inc/caselink.class.php:215
|
||||
msgid "Target dynaform GUID"
|
||||
msgstr "Target dynaform GUID"
|
||||
|
||||
#: inc/caselink.class.php:115 inc/caselink.class.php:213
|
||||
#: inc/caselink.class.php:120 inc/caselink.class.php:227
|
||||
msgid "Source condition"
|
||||
msgstr "Source condition"
|
||||
|
||||
#: inc/caselink.class.php:121 inc/caselink.class.php:177
|
||||
#: inc/caselink.class.php:126 inc/caselink.class.php:191
|
||||
msgid "Claim target task"
|
||||
msgstr "Claim target task"
|
||||
|
||||
#: inc/caselink.class.php:126 inc/caselink.class.php:183
|
||||
#: inc/caselink.class.php:136
|
||||
msgid "Impersonate target task user"
|
||||
msgstr "Impersonate target task user"
|
||||
|
||||
#: inc/caselink.class.php:141 inc/caselink.class.php:197
|
||||
msgid "External application JSON config"
|
||||
msgstr "External application JSON config"
|
||||
|
||||
#: inc/casemap.class.php:43
|
||||
#: inc/casemap.class.php:44
|
||||
msgid "Map"
|
||||
msgstr "Map"
|
||||
|
||||
@@ -311,187 +404,303 @@ msgid "ProcessMaker setup"
|
||||
msgstr "ProcessMaker setup"
|
||||
|
||||
#: inc/config.class.php:159
|
||||
msgid "Server URL (must be in same domain than GLPI)"
|
||||
msgstr "Server URL (must be in same domain than GLPI)"
|
||||
#| msgid "Server URL (must be in same domain than GLPI)"
|
||||
msgid ""
|
||||
"Server URL (must be in same domain than GLPI, if GLPI is using HTTPS, PM "
|
||||
"server must also use HTTPS)"
|
||||
msgstr ""
|
||||
"Server URL (must be in same domain than GLPI, if GLPI is using HTTPS, PM "
|
||||
"server must also use HTTPS)"
|
||||
|
||||
#: inc/config.class.php:164
|
||||
#: inc/config.class.php:163
|
||||
msgid "Common domain with GLPI"
|
||||
msgstr "Common domain with GLPI"
|
||||
|
||||
#: inc/config.class.php:193
|
||||
#: inc/config.class.php:192
|
||||
msgid "None!"
|
||||
msgstr "None!"
|
||||
|
||||
#: inc/config.class.php:202
|
||||
#: inc/config.class.php:201
|
||||
msgid "Verify SSL certificate"
|
||||
msgstr "Verify SSL certificate"
|
||||
|
||||
#: inc/config.class.php:206
|
||||
msgid "Workspace Name"
|
||||
msgstr "Workspace Name"
|
||||
|
||||
#: inc/config.class.php:207
|
||||
#: inc/config.class.php:211
|
||||
msgid "Server administrator name"
|
||||
msgstr "Server administrator name"
|
||||
|
||||
#: inc/config.class.php:212
|
||||
#: inc/config.class.php:216
|
||||
msgid "Server administrator password"
|
||||
msgstr "Server administrator password"
|
||||
|
||||
#: inc/config.class.php:218 inc/config.class.php:258
|
||||
#: inc/config.class.php:222 inc/config.class.php:262
|
||||
msgid "Connection status"
|
||||
msgstr "Connection status"
|
||||
|
||||
#: inc/config.class.php:234
|
||||
#: inc/config.class.php:238
|
||||
msgid "SQL server setup"
|
||||
msgstr "SQL server setup"
|
||||
|
||||
#: inc/config.class.php:237
|
||||
#: inc/config.class.php:241
|
||||
msgid "SQL server (MariaDB or MySQL)"
|
||||
msgstr "SQL server (MariaDB or MySQL)"
|
||||
|
||||
#: inc/config.class.php:242
|
||||
#: inc/config.class.php:246
|
||||
msgid "Database name"
|
||||
msgstr "Database name"
|
||||
|
||||
#: inc/config.class.php:247
|
||||
#: inc/config.class.php:251
|
||||
msgid "SQL user"
|
||||
msgstr "SQL user"
|
||||
|
||||
#: inc/config.class.php:252
|
||||
#: inc/config.class.php:256
|
||||
msgid "SQL password"
|
||||
msgstr "SQL password"
|
||||
|
||||
#: inc/config.class.php:269
|
||||
#: inc/config.class.php:273
|
||||
msgid "Theme Name"
|
||||
msgstr "Theme Name"
|
||||
|
||||
#: inc/config.class.php:275
|
||||
#: inc/config.class.php:279
|
||||
msgid "Main Task Category (edit to change name)"
|
||||
msgstr "Main Task Category (edit to change name)"
|
||||
|
||||
#: inc/config.class.php:282
|
||||
#: inc/config.class.php:286
|
||||
msgid "Task Writer (edit to change name)"
|
||||
msgstr "Task Writer (edit to change name)"
|
||||
|
||||
#: inc/config.class.php:302
|
||||
#: inc/config.class.php:306
|
||||
msgid "Group in ProcessMaker which will contain all GLPI users"
|
||||
msgstr "Group in ProcessMaker which will contain all GLPI users"
|
||||
|
||||
#: inc/config.class.php:331
|
||||
#: inc/config.class.php:321 inc/process.class.php:510 inc/process.class.php:637
|
||||
msgid "Max cases per item (0=unlimited)"
|
||||
msgstr "Max cases per item (0=unlimited)"
|
||||
|
||||
#: inc/config.class.php:340
|
||||
msgid "Processmaker system information"
|
||||
msgstr "Processmaker system information"
|
||||
|
||||
#: inc/config.class.php:334 inc/config.class.php:344
|
||||
#: inc/config.class.php:343 inc/config.class.php:353
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: inc/config.class.php:335
|
||||
#: inc/config.class.php:344
|
||||
msgid "Web server"
|
||||
msgstr "Web server"
|
||||
|
||||
#: inc/config.class.php:336
|
||||
#: inc/config.class.php:345
|
||||
msgid "Server name"
|
||||
msgstr "Server name"
|
||||
|
||||
#: inc/config.class.php:337
|
||||
#: inc/config.class.php:346
|
||||
msgid "PHP version"
|
||||
msgstr "PHP version"
|
||||
|
||||
#: inc/config.class.php:338
|
||||
#: inc/config.class.php:347
|
||||
msgid "DB version"
|
||||
msgstr "DB version"
|
||||
|
||||
#: inc/config.class.php:339
|
||||
#: inc/config.class.php:348
|
||||
msgid "DB server IP"
|
||||
msgstr "DB server IP"
|
||||
|
||||
#: inc/config.class.php:340
|
||||
#: inc/config.class.php:349
|
||||
msgid "DB name"
|
||||
msgstr "DB name"
|
||||
|
||||
#: inc/config.class.php:341
|
||||
#: inc/config.class.php:350
|
||||
msgid "User browser"
|
||||
msgstr "User browser"
|
||||
|
||||
#: inc/config.class.php:342
|
||||
#: inc/config.class.php:351
|
||||
msgid "User IP"
|
||||
msgstr "User IP"
|
||||
|
||||
#: inc/config.class.php:344
|
||||
#: inc/config.class.php:353
|
||||
msgid "Not yet!"
|
||||
msgstr "Not yet!"
|
||||
|
||||
#: inc/process.class.php:350
|
||||
#: inc/notificationtargetcase.class.php:26
|
||||
msgid "Send email"
|
||||
msgstr "Send email"
|
||||
|
||||
#: inc/notificationtargetcase.class.php:37
|
||||
msgid "eMail recipients"
|
||||
msgstr "eMail recipients"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:60
|
||||
#| msgid "Process case"
|
||||
#| msgid_plural "Process cases"
|
||||
msgid "Process category"
|
||||
msgstr "Process category"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:61
|
||||
#| msgid "Process case"
|
||||
#| msgid_plural "Process cases"
|
||||
msgid "Process category id"
|
||||
msgstr "Process category id"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:62
|
||||
#| msgid "Process case task"
|
||||
#| msgid_plural "Process case tasks"
|
||||
msgid "Process category comment"
|
||||
msgstr "Process category comment"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:63
|
||||
#| msgid "Case guid"
|
||||
msgid "Case id"
|
||||
msgstr "Case id"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:65
|
||||
#| msgid "Case deletion"
|
||||
msgid "Case description"
|
||||
msgstr "Case description"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:67
|
||||
msgid "Case variable 'XXX'"
|
||||
msgstr "Case variable 'XXX'"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:68
|
||||
msgid "List of values in 'YYY' array"
|
||||
msgstr "List of values in 'YYY' array"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:69
|
||||
msgid "Number of rows in 'YYY' array"
|
||||
msgstr "Number of rows in 'YYY' array"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:70
|
||||
msgid "Value for colname in 'YYY' array"
|
||||
msgstr "Value for colname in 'YYY' array"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:71
|
||||
msgid "Value for key in 'ZZZ' assoc array (1-dimension array)"
|
||||
msgstr "Value for key in 'ZZZ' assoc array (1-dimension array)"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:73
|
||||
#| msgid "Item"
|
||||
msgid "Item id"
|
||||
msgstr "Item id"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:74
|
||||
#| msgid "Item"
|
||||
msgid "Item URL"
|
||||
msgstr "Item URL"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:75
|
||||
#| msgid "Item entity"
|
||||
msgid "Item title"
|
||||
msgstr "Item title"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:83
|
||||
msgid "XXX is to be replaced by any case variable names"
|
||||
msgstr "XXX is to be replaced by any case variable names"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:86
|
||||
msgid "YYY is to be replaced by any array variables"
|
||||
msgstr "YYY is to be replaced by any array variables"
|
||||
|
||||
#: inc/notificationtargetprocessmaker.class.php:90
|
||||
msgid ""
|
||||
"ZZZ is to be replaced by any assoc array variables (1-dimension array with "
|
||||
"key/value pairs)"
|
||||
msgstr ""
|
||||
"ZZZ is to be replaced by any assoc array variables (1-dimension array with "
|
||||
"key/value pairs)"
|
||||
|
||||
#: inc/notificationtargettask.class.php:195
|
||||
#| msgid "Task delegation date"
|
||||
msgid "Task action"
|
||||
msgstr "Task action"
|
||||
|
||||
#: inc/process.class.php:366
|
||||
msgid "Synchronize Process List"
|
||||
msgstr "Synchronize Process List"
|
||||
|
||||
#: inc/process.class.php:427 inc/process.class.php:589
|
||||
#: inc/process.class.php:443 inc/process.class.php:617
|
||||
msgid "Process GUID"
|
||||
msgstr "Process GUID"
|
||||
|
||||
#: inc/process.class.php:433
|
||||
#: inc/process.class.php:449
|
||||
msgid "Process type"
|
||||
msgstr "Process type"
|
||||
|
||||
#: inc/process.class.php:439
|
||||
#: inc/process.class.php:455
|
||||
msgid "Hide case num. & title"
|
||||
msgstr "Hide case num. & title"
|
||||
|
||||
#: inc/process.class.php:445
|
||||
#: inc/process.class.php:461
|
||||
msgid "Insert Task Category"
|
||||
msgstr "Insert Task Category"
|
||||
|
||||
#: inc/process.class.php:457
|
||||
#: inc/process.class.php:473
|
||||
msgid "Ticket type (self-service)"
|
||||
msgstr "Ticket type (self-service)"
|
||||
|
||||
#: inc/process.class.php:464 inc/process.class.php:609
|
||||
#: inc/process.class.php:480 inc/process.class.php:642
|
||||
msgid "Visible in Incident for Central interface"
|
||||
msgstr "Visible in Incident for Central interface"
|
||||
|
||||
#: inc/process.class.php:470 inc/process.class.php:614
|
||||
#: inc/process.class.php:486 inc/process.class.php:647
|
||||
msgid "Visible in Request for Central interface"
|
||||
msgstr "Visible in Request for Central interface"
|
||||
|
||||
#: inc/process.class.php:476 inc/process.class.php:666
|
||||
#: inc/process.class.php:492 inc/process.class.php:699
|
||||
msgid "Visible in Change"
|
||||
msgstr "Visible in Change"
|
||||
|
||||
#: inc/process.class.php:482 inc/process.class.php:671
|
||||
#: inc/process.class.php:498 inc/process.class.php:704
|
||||
msgid "Visible in Problem"
|
||||
msgstr "Visible in Problem"
|
||||
|
||||
#: inc/process.class.php:519
|
||||
#: inc/process.class.php:504
|
||||
msgid "Maintenance"
|
||||
msgstr "Maintenance"
|
||||
|
||||
#: inc/process.class.php:547
|
||||
msgctxt "process_type"
|
||||
msgid "Classic"
|
||||
msgstr "Classic"
|
||||
|
||||
#: inc/process.class.php:520
|
||||
#: inc/process.class.php:548
|
||||
msgctxt "process_type"
|
||||
msgid "BPMN"
|
||||
msgstr "BPMN"
|
||||
|
||||
#: inc/process.class.php:546
|
||||
#: inc/process.class.php:574
|
||||
msgid "Processes"
|
||||
msgstr "Processes"
|
||||
|
||||
#: inc/process.class.php:599
|
||||
#: inc/process.class.php:627
|
||||
msgid "Hide case number and title in task descriptions"
|
||||
msgstr "Hide case number and title in task descriptions"
|
||||
|
||||
#: inc/process.class.php:604
|
||||
#: inc/process.class.php:632
|
||||
msgid "Insert Task Category comments in Task Description"
|
||||
msgstr "Insert Task Category comments in Task Description"
|
||||
|
||||
#: inc/process.class.php:619
|
||||
#: inc/process.class.php:652
|
||||
msgid "ITIL Category for Self-service interface (left empty to disable)"
|
||||
msgstr "ITIL Category for Self-service interface (left empty to disable)"
|
||||
|
||||
#: inc/process.class.php:646
|
||||
#: inc/process.class.php:679
|
||||
msgid "Type for Self-service interface"
|
||||
msgstr "Type for Self-service interface"
|
||||
|
||||
#: inc/process.class.php:676
|
||||
#: inc/process.class.php:709
|
||||
msgid "Process type (to be changed only if not up-to-date)"
|
||||
msgstr "Process type (to be changed only if not up-to-date)"
|
||||
|
||||
#: inc/process.class.php:862
|
||||
#, php-format
|
||||
#| msgid ""
|
||||
#| "ProcessMaker plugin is under maintenance, please retry later, thank you."
|
||||
msgid "Process '%s' is under maintenance, please retry later, thank you."
|
||||
msgstr "Process '%s' is under maintenance, please retry later, thank you."
|
||||
|
||||
#: inc/process_profile.class.php:26 inc/process_profile.class.php:45
|
||||
msgid "Authorizations"
|
||||
msgstr "Authorizations"
|
||||
@@ -510,35 +719,44 @@ msgctxt "errors"
|
||||
msgid "Can't create case: no rights for it!"
|
||||
msgstr "Can't create case: no rights for it!"
|
||||
|
||||
#: inc/processmaker.class.php:984
|
||||
#: inc/processmaker.class.php:1012
|
||||
msgid "Syncs GLPI users and groups into ProcessMaker."
|
||||
msgstr "Syncs GLPI users and groups into ProcessMaker."
|
||||
|
||||
#: inc/processmaker.class.php:986
|
||||
#: inc/processmaker.class.php:1014
|
||||
msgid "Cleaning of orphan cases."
|
||||
msgstr "Cleaning of orphan cases."
|
||||
|
||||
#: inc/processmaker.class.php:986
|
||||
#: inc/processmaker.class.php:1014
|
||||
msgid "Number of days to keep orphan cases"
|
||||
msgstr "Number of days to keep orphan cases"
|
||||
|
||||
#: inc/processmaker.class.php:988
|
||||
#: inc/processmaker.class.php:1016
|
||||
msgid "To apply task actions between cases."
|
||||
msgstr "To apply task actions between cases."
|
||||
|
||||
#: inc/processmaker.class.php:1696
|
||||
#: inc/processmaker.class.php:1720
|
||||
msgid "Case title: "
|
||||
msgstr "Case title: "
|
||||
|
||||
#: inc/processmaker.class.php:2178
|
||||
#: inc/processmaker.class.php:2275
|
||||
msgid "A 'Case' is running!"
|
||||
msgstr "A 'Case' is running!"
|
||||
|
||||
#: inc/processmaker.class.php:2179
|
||||
#: inc/processmaker.class.php:2276
|
||||
msgid "You must manage it first (see 'Process - Case' tab)!"
|
||||
msgstr "You must manage it first (see 'Process - Case' tab)!"
|
||||
|
||||
#: inc/processmaker.class.php:3038
|
||||
#: inc/processmaker.class.php:2774
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Unable to derivate case! Retry in a moment, or ask your administrator."
|
||||
"<hr>Error code: %u<br/>Error message: %s<br/>"
|
||||
msgstr ""
|
||||
"Unable to derivate case! Retry in a moment, or ask your administrator."
|
||||
"<hr>Error code: %u<br/>Error message: %s<br/>"
|
||||
|
||||
#: inc/processmaker.class.php:3281
|
||||
msgid ""
|
||||
"ProcessMaker plugin is under maintenance, please retry later, thank you."
|
||||
msgstr ""
|
||||
@@ -552,36 +770,62 @@ msgstr "Process configuration"
|
||||
msgid "Cases"
|
||||
msgstr "Cases"
|
||||
|
||||
#: inc/profile.class.php:23
|
||||
msgid "Ad Hoc user re-assign"
|
||||
msgstr "Ad Hoc user re-assign"
|
||||
|
||||
#: inc/task.class.php:29
|
||||
msgid "Process case task"
|
||||
msgid_plural "Process case tasks"
|
||||
msgstr[0] "Process case task"
|
||||
msgstr[1] "Process case tasks"
|
||||
|
||||
#: inc/task.class.php:258
|
||||
#: inc/task.class.php:278
|
||||
msgid "Sub-case task(s)"
|
||||
msgstr "Sub-case task(s)"
|
||||
|
||||
#: inc/taskcategory.class.php:21 inc/taskcategory.class.php:31
|
||||
#: inc/taskcategory.class.php:24 inc/taskcategory.class.php:116
|
||||
#| msgid "Process case"
|
||||
#| msgid_plural "Process cases"
|
||||
msgid "Process task"
|
||||
msgstr "Process task"
|
||||
|
||||
#: inc/taskcategory.class.php:29
|
||||
#| msgid "Task List"
|
||||
msgid "Task list"
|
||||
msgstr "Task list"
|
||||
|
||||
#: inc/taskcategory.class.php:39
|
||||
msgid "Task List"
|
||||
msgstr "Task List"
|
||||
|
||||
#: inc/taskcategory.class.php:32
|
||||
#: inc/taskcategory.class.php:40 inc/taskcategory.class.php:118
|
||||
msgid "Task name"
|
||||
msgstr "Task name"
|
||||
|
||||
#: inc/taskcategory.class.php:34 inc/taskcategory.class.php:60
|
||||
#: inc/taskcategory.class.php:42 inc/taskcategory.class.php:68
|
||||
#: inc/taskcategory.class.php:121 inc/taskcategory.class.php:155
|
||||
msgid "Start"
|
||||
msgstr "Start"
|
||||
|
||||
#: inc/taskcategory.class.php:35
|
||||
#: inc/taskcategory.class.php:43 inc/taskcategory.class.php:122
|
||||
msgid "Task GUID"
|
||||
msgstr "Task GUID"
|
||||
|
||||
#: inc/taskcategory.class.php:38 inc/taskcategory.class.php:78
|
||||
#: inc/taskcategory.class.php:46 inc/taskcategory.class.php:86
|
||||
#: inc/taskcategory.class.php:125 inc/taskcategory.class.php:173
|
||||
msgid "Sub-process"
|
||||
msgstr "Sub-process"
|
||||
|
||||
#: inc/taskcategory.class.php:117
|
||||
#| msgid "Process case"
|
||||
#| msgid_plural "Process cases"
|
||||
msgid "Process name"
|
||||
msgstr "Process name"
|
||||
|
||||
#~ msgid "Delete case"
|
||||
#~ msgstr "Delete case"
|
||||
|
||||
#~ msgid "Case item"
|
||||
#~ msgstr "Case item"
|
||||
|
||||
|
||||
@@ -29,15 +29,15 @@
|
||||
<compatibility>9.1</compatibility>
|
||||
</version>
|
||||
<version>
|
||||
<num>3.4.17</num>
|
||||
<num>3.4.25</num>
|
||||
<compatibility>9.2</compatibility>
|
||||
</version>
|
||||
<version>
|
||||
<num>3.5.6</num>
|
||||
<num>3.5.10</num>
|
||||
<compatibility>9.3</compatibility>
|
||||
</version>
|
||||
<version>
|
||||
<num>3.6.6</num>
|
||||
<num>3.6.16</num>
|
||||
<compatibility>9.4</compatibility>
|
||||
</version>
|
||||
</versions>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
define('PROCESSMAKER_VERSION', '3.6.6');
|
||||
define('PROCESSMAKER_VERSION', '3.6.16');
|
||||
|
||||
// used for case cancellation
|
||||
define("CANCEL", 256);
|
||||
@@ -67,7 +67,8 @@ function plugin_init_processmaker() {
|
||||
}
|
||||
$PLUGIN_HOOKS['pre_item_update']['processmaker'] = $hooks;
|
||||
|
||||
$hooks = ['TicketSatisfaction' => 'plugin_item_update_processmaker_satisfaction'];
|
||||
$hooks = ['TicketSatisfaction' => 'plugin_item_update_processmaker_satisfaction',
|
||||
'User' => 'plugin_item_update_processmaker_user'];
|
||||
foreach ($objects as $obj) {
|
||||
$hooks[$obj.'Task'] = 'plugin_item_update_processmaker_tasks';
|
||||
}
|
||||
@@ -91,6 +92,7 @@ function plugin_init_processmaker() {
|
||||
}
|
||||
$PLUGIN_HOOKS['item_get_pdfdatas']['processmaker'] = $hooks;
|
||||
|
||||
// Javascript
|
||||
$plugin = new Plugin();
|
||||
if ($plugin->isActivated('processmaker')
|
||||
&& Session::getLoginUserID() ) {
|
||||
|
||||
Reference in New Issue
Block a user