@@ -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']],
|
||||
'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);
|
||||
'value' => $_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$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);
|
||||
@@ -70,94 +70,55 @@ switch ($_POST["action"]) {
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'unpausecase_or_reassign_or_delete' :
|
||||
if (isset($_POST['unpause'])) {
|
||||
case 'reassign_reminder' :
|
||||
if (isset($_POST['reassign'])) {
|
||||
// here we should re-assign the current task to $_POST['users_id_recipient']
|
||||
$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'])) {
|
||||
// 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);
|
||||
}
|
||||
} else {
|
||||
if ($_POST['users_id_recipient'] == 0) {
|
||||
Session::addMessageAfterRedirect(__('Can\'t un-assign Task!', 'processmaker'), 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'] === $_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);
|
||||
}
|
||||
}
|
||||
//} 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);
|
||||
} elseif (isset($_POST['reminder'])) {
|
||||
// send notification remider as requested for this task
|
||||
|
||||
// $resultPM = $PM_SOAP->deleteCase($locCase->fields['case_guid']);
|
||||
$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']);
|
||||
|
||||
// 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);
|
||||
// }
|
||||
// }
|
||||
// send notification now!
|
||||
$pm_task->sendNotification('task_reminder', $glpi_task, $glpi_item, $locCase);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// to return to item
|
||||
|
||||
@@ -247,7 +247,7 @@ Html::helpHeader(__('New ticket'), $_SERVER['PHP_SELF'], $_SESSION["glpiname"]);
|
||||
if (isset($_REQUEST['case_guid'])) {
|
||||
$res = $DB->request(
|
||||
'glpi_plugin_processmaker_cases', [
|
||||
' case_guid'=>$_REQUEST['case_guid']
|
||||
'case_guid'=>$_REQUEST['case_guid']
|
||||
]);
|
||||
$query = "SELECT * FROM glpi_plugin_processmaker_cases WHERE case_guid='".$_REQUEST['case_guid']."'";
|
||||
//$res = $DB->query( $query );
|
||||
|
||||
76
hook.php
76
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)) {
|
||||
@@ -241,10 +271,11 @@ function plugin_item_update_processmaker_tasks($parm) {
|
||||
$locCase->getFromDB($pmTask->fields['plugin_processmaker_cases_id']);
|
||||
$srccase_guid = $locCase->fields['case_guid'];
|
||||
|
||||
$msg = ' $locCase: '.str_replace("\n", "\n ", print_r($locCase, true))."\n";
|
||||
$msg .= ' $task: '.str_replace("\n", "\n ", print_r($parm, true))."\n";
|
||||
$msg .= ' $pmTask: '.str_replace("\n", "\n ", print_r($pmTask, true))."\n";
|
||||
$msg .= "\n";
|
||||
//$msg = Toolbox::backtrace(false);
|
||||
//$msg .= ' $locCase: '.str_replace("\n", "\n ", print_r($locCase, true))."\n";
|
||||
//$msg .= ' $task: '.str_replace("\n", "\n ", print_r($parm, true))."\n";
|
||||
//$msg .= ' $pmTask: '.str_replace("\n", "\n ", print_r($pmTask, true))."\n";
|
||||
//$msg .= "\n";
|
||||
|
||||
foreach ($DB->request( 'glpi_plugin_processmaker_caselinks', "is_active = 1 AND sourcetask_guid='".$pmTaskCat->fields['pm_task_guid']."'") as $targetTask) {
|
||||
|
||||
@@ -289,17 +320,17 @@ function plugin_item_update_processmaker_tasks($parm) {
|
||||
unset( $infoForTasks[ $casevar ] );
|
||||
}
|
||||
|
||||
$msg .= " ***********\n";
|
||||
$msg .= ' $targetTask: '.str_replace("\n", "\n ", print_r($targetTask, true))."\n";
|
||||
//$msg .= " ***********\n";
|
||||
//$msg .= ' $targetTask: '.str_replace("\n", "\n ", print_r($targetTask, true))."\n";
|
||||
|
||||
$targetTask['sourcecondition'] = str_replace( array_keys($infoForTasks), $infoForTasks, $targetTask['sourcecondition'] );
|
||||
|
||||
$eval = eval( "return (".$targetTask['sourcecondition']." ? 1 : 0);" );
|
||||
|
||||
$msg .= ' $infoForTasks: '.str_replace("\n", "\n ", print_r($infoForTasks, true))."\n";
|
||||
$msg .= ' $targetTask[\'sourcecondition\']: '.str_replace("\n", "\n ", print_r($targetTask['sourcecondition'], true))."\n";
|
||||
$msg .= ' $result: '."$eval\n";
|
||||
$msg .= "\n";
|
||||
//$msg .= ' $infoForTasks: '.str_replace("\n", "\n ", print_r($infoForTasks, true))."\n";
|
||||
//$msg .= ' $targetTask[\'sourcecondition\']: '.str_replace("\n", "\n ", print_r($targetTask['sourcecondition'], true))."\n";
|
||||
//$msg .= ' $result: '."$eval\n";
|
||||
//$msg .= "\n";
|
||||
|
||||
if ($eval) {
|
||||
// look at each linked ticket if a case is attached and then if a task like $val is TO_DO
|
||||
@@ -375,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);
|
||||
}
|
||||
@@ -429,8 +467,8 @@ function plugin_item_update_processmaker_tasks($parm) {
|
||||
|
||||
}
|
||||
|
||||
$msg .= "================\n";
|
||||
Toolbox::logInFile("processmaker", $msg);
|
||||
//$msg .= "================\n";
|
||||
//Toolbox::logInFile("processmaker", $msg);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,15 +385,15 @@ 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]);
|
||||
if ($pm_task_row && count($pm_task_row) == 1) {
|
||||
$pm_task_row = array_shift($pm_task_row);
|
||||
$glpi_task = new $pm_task_row['itemtype'];
|
||||
$glpi_task->getFromDB( $pm_task_row['items_id'] );
|
||||
$glpi_task->getFromDB($pm_task_row['items_id']);
|
||||
|
||||
$itilobject_itemtype = $this->fields['itemtype'];
|
||||
$foreignkey = getForeignKeyFieldForItemType( $itilobject_itemtype );
|
||||
@@ -289,37 +408,7 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
'update' => true] );
|
||||
PluginProcessmakerNotificationTargetProcessmaker::restoreNotificationState($donotif);
|
||||
|
||||
// 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) {
|
||||
$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
|
||||
]);
|
||||
} 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
|
||||
]);
|
||||
}
|
||||
|
||||
// then update the delIndex and delThread
|
||||
//$query = "UPDATE glpi_plugin_processmaker_tasks SET del_index = $newDelIndex, del_thread = $newDelThread WHERE id={$row['id']}; ";
|
||||
//$res = $DB->query($query);
|
||||
$DB->Update( 'glpi_plugin_processmaker_tasks', [
|
||||
'del_index' => $newDelIndex,
|
||||
'del_thread' => $newDelThread
|
||||
@@ -327,10 +416,69 @@ class PluginProcessmakerCase extends CommonDBTM {
|
||||
'id' => $pm_task_row['id']
|
||||
]
|
||||
);
|
||||
|
||||
// send notification now!
|
||||
$pm_task = new PluginProcessmakerTask($pm_task_row['itemtype']);
|
||||
$pm_task->getFromDB($pm_task_row['items_id']);
|
||||
$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 {
|
||||
$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
|
||||
*/
|
||||
@@ -721,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";
|
||||
|
||||
|
||||
@@ -4,13 +4,18 @@
|
||||
* PluginProcessmakerNotificationTargetProcessmaker short summary.
|
||||
*
|
||||
* PluginProcessmakerNotificationTargetProcessmaker description.
|
||||
*
|
||||
*
|
||||
* Common notificationtarget class for cases and tasks
|
||||
*
|
||||
* @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
|
||||
@@ -58,11 +63,16 @@ class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTarge
|
||||
'case.id' => __('Case id', 'processmaker'),
|
||||
'case.title' => __('Case title', 'processmaker'),
|
||||
'case.description' => __('Case description', 'processmaker'),
|
||||
'case.url' => __('URL'),
|
||||
'case.url' => __('Case URL'),
|
||||
'var.XXX' => __('Case variable \'XXX\'', 'processmaker'),
|
||||
'array.YYY' => __('List of values in \'YYY\' array', 'processmaker'),
|
||||
'array.numberofYYY' => __('Number of rows in \'YYY\' array', 'processmaker'),
|
||||
'array.YYY.colname' => __('Value for colname in case array \'YYY\'', 'processamker')
|
||||
'array.YYY.colname' => __('Value for colname in \'YYY\' array', 'processmaker'),
|
||||
'1darray.ZZZ.key' => __('Value for key in \'ZZZ\' assoc array (1-dimension array)', 'processmaker'),
|
||||
'item.type' => __('Item type', 'processmaker'),
|
||||
'item.id' => __('Item id', 'processmaker'),
|
||||
'item.url' => __('Item URL', 'processmaker'),
|
||||
'item.title' => __('Item title', 'processmaker')
|
||||
];
|
||||
|
||||
foreach ($tags as $tag => $label) {
|
||||
@@ -76,6 +86,9 @@ class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTarge
|
||||
$elt['allowed_values'] = [__('YYY is to be replaced by any array variables', 'processmaker')];
|
||||
$elt['foreach'] = true;
|
||||
}
|
||||
if ($tag == '1darray.ZZZ.key') {
|
||||
$elt['allowed_values'] = [__('ZZZ is to be replaced by any assoc array variables (1-dimension array with key/value pairs)', 'processmaker')];
|
||||
}
|
||||
$this->addTagToList($elt);
|
||||
}
|
||||
|
||||
@@ -87,7 +100,7 @@ class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTarge
|
||||
* Get all data needed for template processing
|
||||
**/
|
||||
public function addDataForTemplate($event, $options = []) {
|
||||
global $PM_DB, $CFG_GLPI;
|
||||
global $CFG_GLPI, $PM_DB;
|
||||
|
||||
$excluded = ['_VAR_CHANGED_',
|
||||
'PIN',
|
||||
@@ -107,11 +120,6 @@ class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTarge
|
||||
$process->getFromDB($options['case']->fields['plugin_processmaker_processes_id']);
|
||||
$taskcat_id = $process->fields['taskcategories_id'];
|
||||
|
||||
// set defaults to all
|
||||
foreach ($this->tags as $key => $val) {
|
||||
$this->data["##$key##"] = "-";
|
||||
}
|
||||
|
||||
// get case variable values
|
||||
$res = $PM_DB->query("SELECT APP_DATA, APP_TITLE, APP_DESCRIPTION FROM APPLICATION WHERE APP_NUMBER = ".$options['case']->fields['id']);
|
||||
if ($res && $PM_DB->numrows($res) == 1) {
|
||||
@@ -125,10 +133,16 @@ class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTarge
|
||||
// add numberof for count of rows
|
||||
$this->data["##array.numberof$key##"] = count($val);
|
||||
// get the keys/vals of the sub-array
|
||||
foreach ($val as $row) {
|
||||
foreach ($row as $col_name => $col_val) {
|
||||
$this->data["array.$key"][]["##array.$key.$col_name##"] = $col_val;
|
||||
$this->data["##lang.array.$key.$col_name##"] = $col_name;
|
||||
foreach ($val as $attribute => $row) {
|
||||
if (is_array($row)) {
|
||||
$index = isset($this->data["array.$key"]) ? count($this->data["array.$key"]) : 0;
|
||||
foreach ($row as $col_name => $col_val) {
|
||||
$this->data["array.$key"][$index]["##array.$key.$col_name##"] = $col_val;
|
||||
$this->data["##lang.array.$key.$col_name##"] = $col_name;
|
||||
}
|
||||
} else {
|
||||
$this->data["1darray.$key"]["##array.$key.$attribute##"] = $row;
|
||||
$this->data["##lang.1darray.$key.$attribute##"] = $attribute;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -145,18 +159,29 @@ class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTarge
|
||||
$this->data['##case.id##'] = $options['case']->fields['id'];
|
||||
|
||||
// case URL
|
||||
$this->data['##case.url##'] = $CFG_GLPI["url_base"]."/index.php?redirect=".urlencode("/plugins/processmaker/front/case.form.php?id=".$options['case']->fields['id']);
|
||||
|
||||
$this->data['##case.url##'] = $this->formatURL($options['additionnaloption']['usertype'],
|
||||
urlencode(urlencode($CFG_GLPI["url_base"] .
|
||||
PluginProcessmakerCase::getFormURLWithID($options['case']->fields['id'], false))));
|
||||
// parent task information: meta data on process
|
||||
// will get parent of task which is the process task category
|
||||
$tmp_taskcatinfo['name'] = DropdownTranslation::getTranslatedValue( $taskcat_id, 'TaskCategory', 'name');
|
||||
$tmp_taskcatinfo['comment'] = DropdownTranslation::getTranslatedValue( $taskcat_id, 'TaskCategory', 'comment');
|
||||
$tmp_taskcatinfo['name'] = DropdownTranslation::getTranslatedValue($taskcat_id, 'TaskCategory', 'name');
|
||||
$tmp_taskcatinfo['comment'] = DropdownTranslation::getTranslatedValue($taskcat_id, 'TaskCategory', 'comment');
|
||||
// process title
|
||||
$this->data['##process.categoryid##'] = $taskcat_id;
|
||||
$this->data['##process.category##'] = $tmp_taskcatinfo['name'];
|
||||
$this->data['##process.categorycomment##'] = $tmp_taskcatinfo['comment'];
|
||||
|
||||
// add labels
|
||||
// add information about item that hosts the case
|
||||
$item = new $options['case']->fields['itemtype'];
|
||||
$item->getFromDB($options['case']->fields['items_id']);
|
||||
$this->data['##item.type##'] = $item->getTypeName(1);
|
||||
$this->data['##item.id##'] = sprintf("%07d", $options['case']->fields['items_id']); // to have items_id with 7 digits with leading 0
|
||||
$this->data['##item.url##'] = $this->formatURL($options['additionnaloption']['usertype'],
|
||||
urlencode(urlencode($CFG_GLPI["url_base"] .
|
||||
$item::getFormURLWithID($options['case']->fields['items_id'], false))));
|
||||
$this->data['##item.title##'] = HTML::entities_deep($item->fields['name']);
|
||||
|
||||
// add labels to tags that are not set
|
||||
$this->getTags();
|
||||
foreach ($this->tag_descriptions[NotificationTarget::TAG_LANGUAGE] as $tag => $values) {
|
||||
if (!isset($this->data[$tag])) {
|
||||
@@ -165,4 +190,36 @@ class PluginProcessmakerNotificationTargetProcessmaker extends NotificationTarge
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get header to add to content
|
||||
**/
|
||||
function getContentHeader() {
|
||||
|
||||
if ($this->getMode() == \Notification_NotificationTemplate::MODE_MAIL
|
||||
&& MailCollector::getNumberOfActiveMailCollectors()
|
||||
) {
|
||||
return NotificationTargetTicket::HEADERTAG.' '.__('To answer by email, write above this line').' '.
|
||||
NotificationTargetTicket::HEADERTAG;
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get footer to add to content
|
||||
**/
|
||||
function getContentFooter() {
|
||||
|
||||
if ($this->getMode() == \Notification_NotificationTemplate::MODE_MAIL
|
||||
&& MailCollector::getNumberOfActiveMailCollectors()
|
||||
) {
|
||||
return NotificationTargetTicket::FOOTERTAG.' '.__('To answer by email, write under this line').' '.
|
||||
NotificationTargetTicket::FOOTERTAG;
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,17 +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')]
|
||||
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
|
||||
@@ -53,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;
|
||||
@@ -66,8 +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'];
|
||||
foreach($defaultEvents as $events) {
|
||||
$actions[$events['event'].$row['taskcat']] = $ptaskcats[$row['ptaskcat']]." > ".$temp->fields['name'].": " . $events['label'];
|
||||
}
|
||||
}
|
||||
|
||||
return $actions;
|
||||
@@ -80,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;
|
||||
@@ -92,12 +107,12 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
$baseevent = $locevent[0].'_'.$locevent[1];
|
||||
$taskcat_id = $locevent[2];
|
||||
|
||||
// task action: add or update
|
||||
// task action: add, update or done
|
||||
$this->data['##task.action##'] = $events[$baseevent]['label'];
|
||||
|
||||
// task category information: meta data on task
|
||||
$tmp_taskcatinfo['name'] = DropdownTranslation::getTranslatedValue( $taskcat_id, 'TaskCategory', 'name');
|
||||
$tmp_taskcatinfo['comment'] = DropdownTranslation::getTranslatedValue( $taskcat_id, 'TaskCategory', 'comment');
|
||||
$tmp_taskcatinfo['name'] = DropdownTranslation::getTranslatedValue($taskcat_id, 'TaskCategory', 'name');
|
||||
$tmp_taskcatinfo['comment'] = DropdownTranslation::getTranslatedValue($taskcat_id, 'TaskCategory', 'comment');
|
||||
$this->data['##task.categoryid##'] = $taskcat_id;
|
||||
$this->data['##task.category##'] = $tmp_taskcatinfo['name'];
|
||||
$this->data['##task.categorycomment##'] = $tmp_taskcatinfo['comment'];
|
||||
@@ -131,7 +146,21 @@ 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;
|
||||
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'];
|
||||
}
|
||||
$oldtech = new User;
|
||||
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'];
|
||||
}
|
||||
|
||||
// task group technician
|
||||
$this->data['##task.group##'] = Html::clean(Toolbox::clean_cross_side_scripting_deep(Dropdown::getDropdownName("glpi_groups", $taskobj->fields['groups_id_tech'])), true, 2, false);
|
||||
@@ -146,7 +175,7 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
// task duration
|
||||
$this->data['##task.time##'] = Html::timestampToString($taskobj->fields['actiontime'], false);
|
||||
|
||||
// add labels
|
||||
// add labels to tags that are not set
|
||||
$this->getTags();
|
||||
foreach ($this->tag_descriptions[NotificationTarget::TAG_LANGUAGE] as $tag => $values) {
|
||||
if (!isset($this->data[$tag])) {
|
||||
@@ -173,6 +202,9 @@ class PluginProcessmakerNotificationTargetTask extends PluginProcessmakerNotific
|
||||
'task.categorycomment' => __('Category comment'),
|
||||
'task.time' => __('Total duration'),
|
||||
'task.user' => __('User assigned to task'),
|
||||
'task.user.login' => __('User login assigned to task'),
|
||||
'task.former.user' => __('Former user assigned to task'),
|
||||
'task.former.user.login' => __('Former user login assigned to task'),
|
||||
'task.group' => __('Group assigned to task'),
|
||||
'task.begin' => __('Start date'),
|
||||
'task.end' => __('End date'),
|
||||
@@ -201,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'));
|
||||
@@ -216,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);
|
||||
@@ -239,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;
|
||||
@@ -385,9 +385,9 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
* routes a case (i.e., moves the case to the next task in the process according to its routing rules).
|
||||
* Embedded routeCase() PM web service call (definition: http://wiki.processmaker.com/index.php/2.0/ProcessMaker_WSDL_Web_Services#routeCase.28.29)
|
||||
* A session must be open before with login()
|
||||
* @param $case_guid The case ID, which can be obtained with the caseList() function
|
||||
* @param $delIndex The delegation index, which is a positive integer to identify the current task of the case. If empty then use current delIndex.
|
||||
* @return a routeCaseResponse object, or false exception occured. routing is normalized to be always an array of routeListStruct
|
||||
* @param $case_guid string The case GUID, which can be obtained with the caseList() function
|
||||
* @param $delIndex integer The delegation index, which is a positive integer to identify the current task of the case. If empty then use current delIndex.
|
||||
* @return stdClass|boolean routeCaseResponse object or false when exception occured. routing is normalized to be always an array of routeListStruct
|
||||
*/
|
||||
function routeCase($case_guid, $delIndex) {
|
||||
try {
|
||||
@@ -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;
|
||||
@@ -1854,41 +1877,59 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
//$query = "INSERT INTO glpi_plugin_processmaker_tasks (items_id, itemtype, plugin_processmaker_cases_id, plugin_processmaker_taskcategories_id, del_index, del_thread)
|
||||
// VALUES ({$glpi_task->getId()}, '{$glpi_task->getType()}', $cases_id, {$pmtaskcat->fields['id']}, $delIndex, $delThread);";
|
||||
//$DB->query( $query );
|
||||
//}
|
||||
|
||||
// send notification if needed for new task as now we have the PluginProcessmakerTask in the DB
|
||||
$donotif = PluginProcessmakerNotificationTargetProcessmaker::saveNotificationState($options['notif']);
|
||||
// Notification management
|
||||
$item = new $itemtype;
|
||||
$item->getFromDB($items_id);
|
||||
// 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_add', $glpi_task->fields['taskcategories_id'], $item->fields['entities_id']);
|
||||
if ($res['notifications'] && count($res['notifications']) > 0) {
|
||||
$pm_task = new PluginProcessmakerTask($glpi_task->getType());
|
||||
$pm_task->getFromDB($glpi_task->getId());
|
||||
NotificationEvent::raiseEvent($res['event'],
|
||||
$pm_task,
|
||||
['plugin_processmaker_cases_id' => $cases_id,
|
||||
'itemtype' => $glpi_task->getType(),
|
||||
'task_id' => $glpi_task->getID(),
|
||||
'is_private' => isset($glpi_task->fields['is_private']) ? $glpi_task->fields['is_private'] : 0,
|
||||
'entities_id' => $item->fields['entities_id']
|
||||
]);
|
||||
} else {
|
||||
NotificationEvent::raiseEvent('add_task',
|
||||
$item,
|
||||
['plugin_processmaker_cases_id' => $cases_id,
|
||||
'itemtype' => $itemtype,
|
||||
'task_id' => $glpi_task->getID(),
|
||||
'is_private' => isset($glpi_task->fields['is_private']) ? $glpi_task->fields['is_private'] : 0
|
||||
]);
|
||||
}
|
||||
|
||||
PluginProcessmakerNotificationTargetProcessmaker::restoreNotificationState($donotif);
|
||||
}
|
||||
|
||||
// send notification if needed for new task as now we have the PluginProcessmakerTask in the DB
|
||||
$donotif = PluginProcessmakerNotificationTargetProcessmaker::saveNotificationState($options['notif']);
|
||||
// Notification management
|
||||
$item = new $itemtype;
|
||||
$item->getFromDB($items_id);
|
||||
// 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_add', $glpi_task->fields['taskcategories_id'], $item->fields['entities_id']);
|
||||
if ($res['notifications'] && count($res['notifications']) > 0) {
|
||||
$pm_task = new PluginProcessmakerTask($glpi_task->getType());
|
||||
$pm_task->getFromDB($glpi_task->getId());
|
||||
NotificationEvent::raiseEvent($res['event'],
|
||||
$pm_task,
|
||||
['plugin_processmaker_cases_id' => $cases_id,
|
||||
'itemtype' => $glpi_task->getType(),
|
||||
'task_id' => $glpi_task->getID(),
|
||||
'is_private' => isset($glpi_task->fields['is_private']) ? $glpi_task->fields['is_private'] : 0,
|
||||
'entities_id' => $item->fields['entities_id']
|
||||
]);
|
||||
} else {
|
||||
NotificationEvent::raiseEvent('add_task',
|
||||
$item,
|
||||
['plugin_processmaker_cases_id' => $cases_id,
|
||||
'itemtype' => $itemtype,
|
||||
'task_id' => $glpi_task->getID(),
|
||||
'is_private' => isset($glpi_task->fields['is_private']) ? $glpi_task->fields['is_private'] : 0
|
||||
]);
|
||||
}
|
||||
|
||||
PluginProcessmakerNotificationTargetProcessmaker::restoreNotificationState($donotif);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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;
|
||||
@@ -2098,7 +2143,6 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
$hostItem->getFromDB( $glpi_task->fields[ $itemFKField ] );
|
||||
|
||||
// change current glpi_currenttime to be sure that date_mode for solved task will not be identical than date_mode of the newly started task
|
||||
//$end_date = new DateTime( $_SESSION["glpi_currenttime"] );
|
||||
$saved_date_time = $_SESSION["glpi_currenttime"];
|
||||
$_SESSION["glpi_currenttime"] = (new DateTime($saved_date_time))->sub(new DateInterval("PT1S"))->format("Y-m-d H:i:s");
|
||||
|
||||
@@ -2132,18 +2176,49 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
//'groups_id_tech' => 0,
|
||||
'content' => $DB->escape($glpi_task->fields[ 'content' ].$options['txtToAppend'])
|
||||
];
|
||||
$donotif = PluginProcessmakerNotificationTargetProcessmaker::saveNotificationState($options['notif']);
|
||||
|
||||
$donotif = PluginProcessmakerNotificationTargetProcessmaker::saveNotificationState(false); // do not send notification yet
|
||||
$glpi_task->update($params);
|
||||
PluginProcessmakerNotificationTargetProcessmaker::restoreNotificationState($donotif);
|
||||
|
||||
// Close the task
|
||||
//$DB->query("UPDATE glpi_plugin_processmaker_tasks SET del_thread_status = '".PluginProcessmakerTask::CLOSED."' WHERE id = {$row['id']}");
|
||||
$DB->update('glpi_plugin_processmaker_tasks', ['del_thread_status' => PluginProcessmakerTask::CLOSED], ['id' => $row['id']]);
|
||||
|
||||
// send notification if needed for new task as now the PluginProcessmakerTask has been updated in the DB
|
||||
$donotif = PluginProcessmakerNotificationTargetProcessmaker::saveNotificationState($options['notif']);
|
||||
// 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_done', $glpi_task->fields['taskcategories_id'], $hostItem->fields['entities_id']);
|
||||
if ($res['notifications'] && count($res['notifications']) > 0) {
|
||||
$pm_task = new PluginProcessmakerTask($glpi_task->getType());
|
||||
$pm_task->getFromDB($glpi_task->getId());
|
||||
NotificationEvent::raiseEvent($res['event'],
|
||||
$pm_task,
|
||||
['plugin_processmaker_cases_id' => $cases_id,
|
||||
'itemtype' => $glpi_task->getType(),
|
||||
'task_id' => $glpi_task->getID(),
|
||||
'is_private' => isset($glpi_task->fields['is_private']) ? $glpi_task->fields['is_private'] : 0,
|
||||
'entities_id' => $hostItem->fields['entities_id']
|
||||
]);
|
||||
} else {
|
||||
NotificationEvent::raiseEvent('update_task',
|
||||
$hostItem,
|
||||
['plugin_processmaker_cases_id' => $cases_id,
|
||||
'itemtype' => $hostItem->getType(),
|
||||
'task_id' => $glpi_task->getID(),
|
||||
'is_private' => isset($glpi_task->fields['is_private']) ? $glpi_task->fields['is_private'] : 0
|
||||
]);
|
||||
}
|
||||
PluginProcessmakerNotificationTargetProcessmaker::restoreNotificationState($donotif);
|
||||
|
||||
// restore current glpi time
|
||||
$_SESSION["glpi_currenttime"] = $saved_date_time;
|
||||
|
||||
return $glpi_task;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2285,10 +2360,24 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
*/
|
||||
public static function pre_show_item_processmaker($params) {
|
||||
|
||||
if (!is_array($params['item']) && is_subclass_of( $params['item'], 'CommonITILTask')) {
|
||||
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
|
||||
@@ -2301,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
|
||||
@@ -2574,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" );
|
||||
@@ -2896,13 +2988,15 @@ 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');
|
||||
$item = new $itemtype;
|
||||
$item->getFromDB($items_id);
|
||||
|
||||
//Toolbox::logInFile("processmaker_derivate", Toolbox::backtrace(false) . "derivateCase: myCase = " . print_r($myCase, true) . "\nrequest = " . print_r($request, true) . "\nusers_id = " . print_r($users_id, true) );
|
||||
|
||||
// save the dynaform variables into the current case
|
||||
if (isset($request['UID']) && isset($request['APP_UID']) && isset($request['__DynaformName__'])) {
|
||||
$resultSave = $this->saveForm( $request );
|
||||
@@ -2910,6 +3004,16 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
|
||||
// now derivate the case !!!
|
||||
$pmRouteCaseResponse = $this->routeCase($myCase->fields['case_guid'], $request['DEL_INDEX']);
|
||||
//Toolbox::logInFile("processmaker_derivate", "routeCase: pmRouteCaseResponse = " . print_r($pmRouteCaseResponse, true));
|
||||
|
||||
if ($pmRouteCaseResponse->status_code != 0) {
|
||||
Session::addMessageAfterRedirect(sprintf(__('Unable to derivate case! Retry in a moment, or ask your administrator.<hr>Error code: %u<br/>Error message: %s<br/>', 'processmaker'),
|
||||
$pmRouteCaseResponse->status_code,
|
||||
$pmRouteCaseResponse->message),
|
||||
true,
|
||||
ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
$casevariables = ["GLPI_ITEM_TASK_CONTENT",
|
||||
"GLPI_ITEM_APPEND_TO_TASK",
|
||||
@@ -2935,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);
|
||||
@@ -3034,23 +3144,23 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
|
||||
// reset those variables
|
||||
$resetcasevariables = [];
|
||||
foreach ($casevariables as $val) {
|
||||
$resetcasevariables[$val] = '';
|
||||
if (!empty($casevariablevalues[$val])) {
|
||||
$resetcasevariables[$val] = '';
|
||||
}
|
||||
}
|
||||
$resultSave = $myCase->sendVariables($resetcasevariables);
|
||||
|
||||
// print_r( $pmRouteCaseResponse ) ;
|
||||
// die() ;
|
||||
|
||||
// now manage tasks associated with item
|
||||
// switch own task to 'done' and create a new one
|
||||
$this->solveTask($myCase->getID(),
|
||||
$request['DEL_INDEX'],
|
||||
['txtToAppend' => $txtToAppendToTask,
|
||||
'users_id_tech' => $users_id,
|
||||
'begin' => $solvedTaskStartDate,
|
||||
'end' => $solvedTaskEndDate,
|
||||
'toInformation' => $solvedTaskSetToInformation
|
||||
] );
|
||||
$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') {
|
||||
@@ -3081,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 (txtAreaUserRequestSumUp) {
|
||||
$("textarea[name='content']").val($(txtAreaUserRequestSumUp).val());
|
||||
} else {
|
||||
$("textarea[name='content']").val('_');
|
||||
if ($("textarea[name='content']").val() == '') {
|
||||
if (txtAreaUserRequestSumUp) {
|
||||
tinymce.activeEditor.setContent($(txtAreaUserRequestSumUp).val().replace(/(\r\n)|(\r)|(\n)/g, '<br>'));
|
||||
} else {
|
||||
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.14</num>
|
||||
<num>3.4.25</num>
|
||||
<compatibility>9.2</compatibility>
|
||||
</version>
|
||||
<version>
|
||||
<num>3.5.5</num>
|
||||
<num>3.5.10</num>
|
||||
<compatibility>9.3</compatibility>
|
||||
</version>
|
||||
<version>
|
||||
<num>3.6.5</num>
|
||||
<num>3.6.16</num>
|
||||
<compatibility>9.4</compatibility>
|
||||
</version>
|
||||
</versions>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
define('PROCESSMAKER_VERSION', '3.6.5');
|
||||
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