Add messages and warnings, remove required user dependency see BT#11081

ofaj
Julio 10 years ago
parent 8e456de62e
commit a067857e05
  1. 18
      main/inc/ajax/user_manager.ajax.php
  2. 2
      main/inc/lib/formvalidator/Element/SelectAjax.php
  3. 5
      main/inc/lib/usermanager.lib.php
  4. 6
      plugin/ticket/lang/english.php
  5. 126
      plugin/ticket/src/new_ticket.php
  6. 157
      plugin/ticket/src/ticket.class.php
  7. 4
      plugin/ticket/src/ticket_details.php

@ -7,6 +7,24 @@ require_once '../global.inc.php';
$action = $_GET['a'];
switch ($action) {
case 'get_user_like':
$query = $_REQUEST['q'];
$conditions = [
'username' => $query,
'firstname' => $query,
'lastname' => $query,
];
$users = UserManager::get_user_list_like($conditions, [], false, 'OR');
$result = [];
if (!empty($users)) {
foreach ($users as $user) {
$result[] = ['id' => $user['id'], 'text' => $user['complete_name'].' ('.$user['username'].')'];
}
$result['items'] = $result;
}
echo json_encode($result);
break;
case 'get_user_popup':
$user_info = api_get_user_info($_REQUEST['user_id']);
$ajax_url = api_get_path(WEB_AJAX_PATH).'message.ajax.php';

@ -65,7 +65,7 @@ class SelectAjax extends HTML_QuickForm_select
$id = $this->getAttribute('name');
$this->setAttribute('id', $id);
}
// URL must return ajax json_encode arrady [items => [['id'=>1, 'text'='content']]
$url = $this->getAttribute('url');
if (!$url) {

@ -1352,6 +1352,11 @@ class UserManager
}
$sql_result = Database::query($sql_query);
while ($result = Database::fetch_array($sql_result)) {
$result['complete_name'] = api_get_person_name(
$result['firstname'],
$result['lastname']
);
$return_array[] = $result;
}
return $return_array;

@ -83,12 +83,18 @@ $strings['AreYouSure'] = "Are you sure?";
$strings['allow_student_add'] = "Allow students to generate tickets";
$strings['PleaseBeforeRegisterATicketSelectOneUser'] = "Please select a user before you register a ticket.";
$strings['RequestConfirmation'] = "Request confirmation";
$strings['TicketUpdated'] = "Ticket updated";
$strings['TicketClosed'] = "Ticket closed";
$strings['TicketXCreated'] = "Ticket <b>%s</b>created";
$strings['allow_category_edition'] = "Allow category edition";
$strings['warn_admin_no_user_in_category'] = "Warn admin if category doesn't have users related";
$strings['send_warning_to_all_admins'] = "Send warning to all admins, if category doesn't have users related";
$strings['WarningCategoryXDoesntHaveUsers'] = "Warning: The category '%s' doesn't have users assigned";
$strings['TicketInformation'] = 'Ticket information';
$strings['CategoryWithNoUserNotificationSentToAdmins'] = 'Category with no user sent to all administrators.';
$strings['TicketXAssignedToUserX'] = 'Ticket <b>#%s</b> assigned to user <b>%s</b>';
$strings['TicketXCreatedWithNoCategory'] = 'Ticket <b>#%s</b> created with no category';

@ -18,13 +18,6 @@ if (!api_is_platform_admin() &&
api_block_anonymous_users();
$scrollTop = '';
if (api_is_platform_admin()) {
$scrollTol = '$("html, body").animate({
scrollTop: $(".divTicket").offset().top - 20
}, "slow");';
}
$htmlHeadXtra[] = '
<script>
function load_course_list (div_course, my_user_id, user_email) {
@ -38,7 +31,6 @@ function load_course_list (div_course, my_user_id, user_email) {
$("#user_id_request").val(my_user_id);
$("#personal_email").val(user_email);
$("#btnsubmit").attr("disabled", false);
' . $scrollTol . '
}
});
}
@ -73,10 +65,7 @@ function validate() {
document.getElementById("content").value= fckEditor1val;
var selected = document.getElementById("category_id").selectedIndex;
var id = document.getElementById("category_id").options[selected].value;
if (document.getElementById("user_id_request").value == "") {
alert("' . $plugin->get_lang("ValidUser") . '");
return false;
} else if(id == 0) {
if (id == 0) {
alert("' . $plugin->get_lang("ValidType") . '");
return false;
} else if(document.getElementById("subject").value == "") {
@ -86,8 +75,10 @@ function validate() {
alert("' . $plugin->get_lang("ValidCourse") . '");
return false;
} else if(id != "CUR" && parseInt(course_required[id]) != 1 && !re.test(document.getElementById("personal_email").value)) {
alert("' . $plugin->get_lang("ValidEmail") . '");
return false;
if (document.getElementById("personal_email").value != "") {
alert("' . $plugin->get_lang("ValidEmail") . '");
return false;
}
} else if(fckEditor1val == "") {
alert("' . $plugin->get_lang("ValidMessage") . '");
return false;
@ -200,7 +191,6 @@ function js_array($array, $name, $key)
function show_form_send_ticket()
{
global $types, $plugin;
echo '<div class="divTicket">';
// Category List
$categoryList = array();
@ -263,8 +253,7 @@ function show_form_send_ticket()
"",
array(
'enctype' => 'multipart/form-data',
'onsubmit' => 'return validate()',
'class' => 'span8 offset1 form-horizontal'
'onsubmit' => 'return validate()'
)
);
@ -317,48 +306,12 @@ function show_form_send_ticket()
)
);
$form->addLabel('',
Display::div(
'',
array(
'id' => 'user_request'
)
)
);
$form->addElement(
'select',
'status_id',
get_lang('Status'),
$statusList,
$statusAttributes
);
$form->addElement(
'select',
'source_id',
$plugin->get_lang('Source'),
$sourceList,
$sourceAttributes
);
$form->addElement(
'text',
'subject',
get_lang('Subject'),
array(
'id' => 'subject',
'style' => 'width: 550px;'
)
);
$form->addElement(
'text',
'personal_email',
$plugin->get_lang('PersonalEmail'),
array(
'id' => 'personal_email',
'style' => 'width: 550px;'
'id' => 'subject'
)
);
@ -369,20 +322,49 @@ function show_form_send_ticket()
false,
array(
'ToolbarSet' => 'Profile',
'Width' => '600',
'Height' => '250'
)
);
//if (api_is_platform_admin()) {
$form->addElement(
'SelectAjax',
'user_id',
get_lang('Assign'),
null,
['url' => api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php?a=get_user_like']
);
//}
$form->addElement(
'text',
'phone',
get_lang('Phone') . ' (' . $plugin->get_lang('Optional') . ')',
'personal_email',
$plugin->get_lang('PersonalEmail'),
array(
'id' => 'phone'
'id' => 'personal_email'
)
);
$form->addLabel('',
Display::div(
'',
array(
'id' => 'user_request'
)
)
);
$form->addElement(
'select',
'status_id',
get_lang('Status'),
$statusList,
$statusAttributes
);
$form->addElement(
'select',
'priority_id',
@ -393,6 +375,25 @@ function show_form_send_ticket()
'for' => 'priority_id'
)
);
$form->addElement(
'select',
'source_id',
$plugin->get_lang('Source'),
$sourceList,
$sourceAttributes
);
$form->addElement(
'text',
'phone',
get_lang('Phone') . ' (' . $plugin->get_lang('Optional') . ')',
array(
'id' => 'phone'
)
);
$form->addElement('file', 'attach_1', get_lang('FilesAttachment'));
$form->addLabel('', '<span id="filepaths"><div id="filepath_1"></div></span>');
@ -431,18 +432,19 @@ function save_ticket()
if ($_POST['phone'] != "") {
$content .= '<p style="color:red">&nbsp;' . get_lang('Phone') . ': ' . Security::remove_XSS($_POST['phone']). '</p>';
}
$course_id = $_POST['course_id'];
$course_id = isset($_POST['course_id']) ? $_POST['course_id'] : 0;
$project_id = $_POST['project_id'];
$subject = $_POST['subject'];
$other_area = (int) $_POST['other_area'];
$email = $_POST['email'];
$personal_email = $_POST['personal_email'];
$source = $_POST['source_id'];
$user_id = $_POST['user_id_request'];
$user_id = isset($_POST['user_id']) ? $_POST['user_id'] : 0;
$priority = $_POST['priority_id'];
$status = $_POST['status_id'];
$file_attachments = $_FILES;
$responsible = (api_is_platform_admin() ? api_get_user_id() : 0);
if (TicketManager::insert_new_ticket(
$category_id,
$course_id,
@ -577,6 +579,8 @@ function get_user_data($from, $number_of_items, $column, $direction)
if (!isset($_POST['compose'])) {
if (api_is_platform_admin()) {
Display::display_header(get_lang('ComposeMessage'));
/*
$message = $plugin->get_lang('PleaseBeforeRegisterATicketSelectOneUser');
Display::display_warning_message($message);
echo '
@ -613,7 +617,7 @@ if (!isset($_POST['compose'])) {
$table->set_header(5, get_lang('Email'));
$table->set_header(6, get_lang('Action'));
$table->display();
echo '</div>';
echo '</div>';*/
} else {
$userInfo = api_get_user_info();
$htmlHeadXtra[] = "

@ -235,7 +235,7 @@ class TicketManager
$email,
$subject,
$content,
$personalEmail = "",
$personalEmail = '',
$file_attachments,
$source = 'VRT',
$priority = 'NRM',
@ -248,6 +248,9 @@ class TicketManager
$table_support_category = Database::get_main_table(
TABLE_TICKET_CATEGORY
);
$now = api_get_utc_datetime();
$user_id = api_get_user_id();
$course_id = intval($course_id);
$category_id = intval($category_id);
$project_id = intval($project_id);
@ -264,8 +267,6 @@ class TicketManager
$personalEmail = Database::escape_string($personalEmail);
$status = Database::escape_string($status);
$now = api_get_utc_datetime();
$user_id = api_get_user_id();
if ($status == '') {
$status = NEWTCK;
if ($other_area > 0) {
@ -273,9 +274,65 @@ class TicketManager
}
}
if ($request_user == '' && $source == 'VRT') {
if (!empty($category_id)) {
$categoryInfo = TicketManager::getCategory($category_id);
if ($plugin->get('warn_admin_no_user_in_category')) {
$usersInCategory = TicketManager::getUsersInCategory($category_id);
if (empty($usersInCategory)) {
$subject = sprintf(
$plugin->get_lang('WarningCategoryXDoesntHaveUsers'),
$categoryInfo['name']
);
$message = '<h2>'.$plugin->get_lang('TicketInformation').'</h2><br />'.$helpDeskMessage;
if ($plugin->get('send_warning_to_all_admins')) {
Display::addFlash(Display::return_message(
$plugin->get_lang('CategoryWithNoUserNotificationSentToAdmins')
));
$admins = UserManager::get_all_administrators();
foreach ($admins as $userId => $data) {
if ($data['active']) {
MessageManager::send_message_simple(
$userId,
$subject,
$message
);
}
}
}
}
} else {
}
if (empty($request_user)) {
$usersInCategory = TicketManager::getUsersInCategory($category_id);
if (!empty($usersInCategory) && count($usersInCategory) > 0) {
$userCategoryInfo = $usersInCategory[0];
if (isset($userCategoryInfo['user_id'])) {
$assigned_user = $userCategoryInfo['user_id'];
}
}
}
}
if (empty($request_user)) {
$request_user = $user_id;
}
$assignedUserInfo = api_get_user_info($assigned_user);
if (empty($assignedUserInfo)) {
return false;
}
// insert_ticket
$sql = "INSERT INTO $table_support_tickets
(
@ -301,28 +358,72 @@ class TicketManager
'$personalEmail',
'$status',
'$now',
$user_id,
$request_user,
'$now',
'$user_id',
'$request_user',
'$now',
'$source'
)";
Database::query($sql);
$ticket_id = Database::insert_id();
if ($assigned_user != 0) {
self::assign_ticket_user($ticket_id, $assigned_user);
}
if ($ticket_id != 0) {
$ticket_code = "A" . str_pad(
(int) $ticket_id, 11, "0", STR_PAD_LEFT
);
if (empty($category_id)) {
if ($plugin->get('send_warning_to_all_admins')) {
Display::addFlash(Display::return_message(
sprintf(
$plugin->get_lang('TicketXCreatedWithNoCategory')
)
));
$admins = UserManager::get_all_administrators();
foreach ($admins as $userId => $data) {
if ($data['active']) {
MessageManager::send_message_simple(
$userId,
$subject,
$message
);
}
}
}
}
if ($assigned_user != 0) {
self::assign_ticket_user($ticket_id, $assigned_user);
Display::addFlash(Display::return_message(
sprintf(
$plugin->get_lang('TicketXAssignedToUserX'),
$ticket_code,
$assignedUserInfo['complete_name']
),
'normal',
false
));
} else {
Display::addFlash(Display::return_message(
sprintf(
$plugin->get_lang('TicketXCreated'),
$ticket_code
),
'normal',
false
));
}
// Update code
$sql = "UPDATE $table_support_tickets
SET ticket_code = '$ticket_code'
WHERE ticket_id = '$ticket_id'";
Database::query($sql);
$data_files = array();
// Update total
$sql = "UPDATE $table_support_category
@ -398,42 +499,7 @@ class TicketManager
);
}
if (!empty($category_id)) {
$categoryInfo = TicketManager::getCategory($category_id);
if ($plugin->get('warn_admin_no_user_in_category')) {
$usersInCategory = TicketManager::getUsersInCategory($category_id);
if (empty($usersInCategory)) {
$subject = sprintf(
$plugin->get_lang('WarningCategoryXDoesntHaveUsers'),
$categoryInfo['name']
);
$message = '<h2>'.$plugin->get_lang('TicketInformation').'</h2><br />'.$helpDeskMessage;
if ($plugin->get('send_warning_to_all_admins')) {
$admins = UserManager::get_all_administrators();
foreach ($admins as $userId => $data) {
if ($data['active']) {
MessageManager::send_message_simple(
$userId,
$subject,
$message
);
}
}
} else {
MessageManager::send_message_simple(
api_get_user_id(),
$subject,
$message
);
}
}
}
}
return true;
@ -846,6 +912,7 @@ class TicketManager
)";
}
}
if ($keyword_unread == 'yes') {
$sql .= " AND ticket.ticket_id IN (SELECT ticket.ticket_id
FROM $table_support_tickets ticket,

@ -283,8 +283,6 @@ if (!isset($_POST['compose'])) {
<table width="100%" >
<tr>
<td colspan="3" style="width:65%">
<h1>' . $titulo . ' '.$form_close_ticket.' '.$img_assing.' </h1>
<h2>'.$subTitle.'</h2>
<p>
@ -295,7 +293,7 @@ if (!isset($_POST['compose'])) {
'#',
['title' => $ticket['ticket']['start_date'], 'class' => 'boot-tooltip']
).'. '.
get_lang('Updated').' '.
$plugin->get_lang('TicketUpdated').' '.
Display::url(
date_to_str_ago($ticket['ticket']['sys_lastedit_datetime_from_db']),
'#',

Loading…
Cancel
Save