Skip to content

Commit

Permalink
Justification UI changes BT#16385
Browse files Browse the repository at this point in the history
  • Loading branch information
jmontoyaa committed Dec 11, 2019
1 parent 4988c3d commit f33b7c6
Show file tree
Hide file tree
Showing 7 changed files with 139 additions and 33 deletions.
82 changes: 81 additions & 1 deletion main/auth/profile.php
Expand Up @@ -750,17 +750,97 @@ function show_image(image,width,height) {
Display::addFlash(Display::return_message($plugin->get_lang('JustificationSaved')));
}
}

header('Location: '.api_get_self());
exit;
}

$userJustifications = $plugin->getUserJustificationList(api_get_user_id());
$userJustificationList = '';
$action = isset($_REQUEST['a']) ? $_REQUEST['a'] : '';

$justificationContent = '';
switch ($action) {
case 'edit_justification':
$justificationId = isset($_REQUEST['justification_id']) ? (int) $_REQUEST['justification_id'] : '';
$userJustification = $plugin->getUserJustification($justificationId);
$justification = $plugin->getJustification($userJustification['justification_document_id']);
if ($justification['date_manual_on'] == 0) {
api_not_allowed(true);
}
$formEdit = new FormValidator('edit', 'post', api_get_self().'?a=edit_justification&justification_id='.$justificationId);
$formEdit->addHeader($justification['name']);
$element = $formEdit->addDatePicker('date_validity', $plugin->get_lang('ValidityDate'));
$element->setValue($userJustification['date_validity']);
$formEdit->addButtonUpdate(get_lang('Update'));
$formEdit->setDefaults($userJustification);
$justificationContent = $formEdit->returnForm();
if ($formEdit->validate()) {
$values = $formEdit->getSubmitValues();
$date = Database::escape_string($values['date_validity']);
$sql = "UPDATE justification_document_rel_users SET date_validity = '$date'
WHERE id = $justificationId AND user_id = ".$user_data['id'];
Database::query($sql);
Display::addFlash(Display::return_message(get_lang('Updated')));
header('Location: '.api_get_self());
exit;
}
break;
case 'delete_justification':
$justificationId = isset($_REQUEST['justification_id']) ? (int) $_REQUEST['justification_id'] : '';
$userJustification = $plugin->getUserJustification($justificationId);
if ($userJustification && $userJustification['user_id'] == api_get_user_id()) {
api_remove_uploaded_file_by_id('justification', $justificationId, $userJustification['file_path']);
$sql = "DELETE FROM justification_document_rel_users
WHERE id = $justificationId AND user_id = ".$user_data['id'];
Database::query($sql);
Display::addFlash(Display::return_message(get_lang('Deleted')));
}

header('Location: '.api_get_self());
exit;
break;
}

if (!empty($userJustifications)) {
$userJustificationList .= Display::page_subheader3($plugin->get_lang('MyJustifications'));
$table = new HTML_Table(['class' => 'data_table']);
$column = 0;
$row = 0;
$headers = [
get_lang('Name'),
get_lang('File'),
$plugin->get_lang('ValidityDate'),
get_lang('Actions'),
];
foreach ($headers as $header) {
$table->setHeaderContents($row, $column, $header);
$column++;
}
$row = 1;
foreach ($userJustifications as $userJustification) {
$justification = $plugin->getJustification($userJustification['justification_document_id']);
$url = api_get_uploaded_web_url('justification', $userJustification['id'], $userJustification['file_path']);
$link = Display::url($userJustification['file_path'], $url);
$userJustificationList .= $link.'<br/>';
$col = 0;
$table->setCellContents($row, $col++, $justification['name']);
$table->setCellContents($row, $col++, $link);
$date = $userJustification['date_validity'];
if ($userJustification['date_validity'] < api_get_local_time()) {
$date = Display::label($userJustification['date_validity'], 'warning');
}
$table->setCellContents($row, $col++, $date);
$actions = '';

if ($justification['date_manual_on'] == 1) {
$actions .= Display::url(get_lang('Edit'), api_get_self().'?a=edit_justification&justification_id='.$userJustification['id'], ['class' => 'btn btn-primary']);
}
$actions .= '&nbsp;'.Display::url(get_lang('Delete'), api_get_self().'?a=delete_justification&justification_id='.$userJustification['id'], ['class' => 'btn btn-danger']);
$table->setCellContents($row, $col++, $actions);
$row++;
}

$userJustificationList .= $justificationContent.$table->toHtml();
}

$justification = $formValidator->returnForm().$userJustificationList;
Expand Down
42 changes: 21 additions & 21 deletions main/inc/lib/api.lib.php
Expand Up @@ -1980,7 +1980,7 @@ function api_get_anonymous_id()
$ip = Database::escape_string(api_get_real_ip());
$max = (int) api_get_configuration_value('max_anonymous_users');
if ($max >= 2) {
$sql = "SELECT * FROM $table as TEL
$sql = "SELECT * FROM $table as TEL
JOIN $tableU as U
ON U.user_id = TEL.login_user_id
WHERE TEL.user_ip = '$ip'
Expand Down Expand Up @@ -2015,8 +2015,8 @@ function api_get_anonymous_id()
}

$table = Database::get_main_table(TABLE_MAIN_USER);
$sql = "SELECT user_id
FROM $table
$sql = "SELECT user_id
FROM $table
WHERE status = ".ANONYMOUS." ";
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
Expand Down Expand Up @@ -4753,7 +4753,7 @@ function api_display_language_form($hide_if_no_choice = false, $showAsButton = f
} else {
$html = '
<a href="'.$url.'" class="dropdown-toggle" data-toggle="dropdown" role="button">
<span class="flag-icon flag-icon-'.$countryCode.'"></span>
<span class="flag-icon flag-icon-'.$countryCode.'"></span>
'.$currentLanguageInfo['original_name'].'
<span class="caret"></span>
</a>
Expand Down Expand Up @@ -4868,7 +4868,7 @@ function languageToCountryIsoCode($languageIsoCode)
function api_get_languages()
{
$tbl_language = Database::get_main_table(TABLE_MAIN_LANGUAGE);
$sql = "SELECT * FROM $tbl_language WHERE available='1'
$sql = "SELECT * FROM $tbl_language WHERE available='1'
ORDER BY original_name ASC";
$result = Database::query($sql);
$language_list = [];
Expand Down Expand Up @@ -8217,8 +8217,8 @@ function api_get_password_checker_js($usernameInputId, $passwordInputId)
};
$(function() {
var lang = ".json_encode($translations).";
var options = {
var lang = ".json_encode($translations).";
var options = {
onLoad : function () {
//$('#messages').text('Start typing password');
},
Expand All @@ -8236,7 +8236,7 @@ function api_get_password_checker_js($usernameInputId, $passwordInputId)
options.i18n = {
t: function (key) {
var result = lang[key];
return result === key ? '' : result; // This assumes you return the
return result === key ? '' : result; // This assumes you return the
}
};
$('".$passwordInputId."').pwstrength(options);
Expand Down Expand Up @@ -9568,7 +9568,7 @@ function api_set_noreply_and_from_address_to_mailer(PHPMailer $mailer, array $se
isset($platformEmail['SMTP_UNIQUE_SENDER']) &&
$platformEmail['SMTP_UNIQUE_SENDER']
) {
$senderName = $notification->getDefaultPlatformSenderName();
$senderName = $notification->getDefaultPlatformSenderName();
$senderEmail = $notification->getDefaultPlatformSenderEmail();

if (PHPMailer::ValidateAddress($senderEmail)) {
Expand Down Expand Up @@ -9596,7 +9596,7 @@ function api_find_template($template)
function api_get_language_list_for_flag()
{
$table = Database::get_main_table(TABLE_MAIN_LANGUAGE);
$sql = "SELECT english_name, isocode FROM $table
$sql = "SELECT english_name, isocode FROM $table
ORDER BY original_name ASC";
static $languages = [];
if (empty($languages)) {
Expand Down Expand Up @@ -9627,11 +9627,11 @@ function api_get_language_translate_html()
$hideAll .= '
$("span:lang('.$language['isocode'].')").filter(
function(e, val) {
// Only find the spans if they have set the lang
if ($(this).attr("lang") == null) {
// Only find the spans if they have set the lang
if ($(this).attr("lang") == null) {
return false;
}
// Ignore ckeditor classes
return !this.className.match(/cke(.*)/);
}).hide();'."\n";
Expand All @@ -9648,32 +9648,32 @@ function(e, val) {

return '
$(function() {
'.$hideAll.'
var defaultLanguageFromUser = "'.$isoCode.'";
'.$hideAll.'
var defaultLanguageFromUser = "'.$isoCode.'";
$("span:lang('.$isoCode.')").filter(
function() {
// Ignore ckeditor classes
return !this.className.match(/cke(.*)/);
}).show();
var defaultLanguage = "";
var langFromUserFound = false;
$(this).find("span").filter(
function() {
// Ignore ckeditor classes
return !this.className.match(/cke(.*)/);
}).each(function() {
defaultLanguage = $(this).attr("lang");
defaultLanguage = $(this).attr("lang");
if (defaultLanguage) {
$(this).before().next("br").remove();
$(this).before().next("br").remove();
if (defaultLanguageFromUser == defaultLanguage) {
langFromUserFound = true;
}
}
});
// Show default language
if (langFromUserFound == false && defaultLanguage) {
$("span:lang("+defaultLanguage+")").filter(
Expand Down
2 changes: 1 addition & 1 deletion main/inc/lib/formvalidator/FormValidator.class.php
Expand Up @@ -237,7 +237,7 @@ public function addDateRangePicker($name, $label, $required = true, $attributes
* @param string $label
* @param array $attributes
*
* @return mixed
* @return DatePicker
*/
public function addDatePicker($name, $label, $attributes = [])
{
Expand Down
3 changes: 2 additions & 1 deletion plugin/justification/add.php
Expand Up @@ -21,11 +21,12 @@

if ($form->validate()) {
$values = $form->getSubmitValues();
$dateManual = isset($values['date_manual_on']) ? 1 : 0;
$params = [
'name' => $values['name'],
'code' => $values['code'],
'validity_duration' => $values['validity_duration'],
'date_manual_on' => (int) $values['date_manual_on'],
'date_manual_on' => $dateManual,
'comment' => $values['comment'],
];
Database::insert('justification_document', $params);
Expand Down
27 changes: 24 additions & 3 deletions plugin/justification/justification_by_user.php
Expand Up @@ -35,8 +35,10 @@
$list = $plugin->getUserJustificationList($userId);
if ($list) {
foreach ($list as &$item) {
if ($item['date_validity'] < api_get_local_time()) {
$item['date_validity'] = Display::label($item['date_validity'], 'warning');
}
$item['justification'] = $plugin->getJustification($item['justification_document_id']);

$item['file_path'] = Display::url(
$item['file_path'],
api_get_uploaded_web_url('justification', $item['id'], $item['file_path']),
Expand All @@ -50,7 +52,6 @@
$tpl->assign('list', $list);
}


$tpl->assign('user_id', $userId);
$content = $tpl->fetch('justification/view/justification_user_list.tpl');

Expand All @@ -60,6 +61,27 @@
$id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;

switch ($action) {
case 'edit':
$userJustification = $plugin->getUserJustification($id);
$userInfo = api_get_user_info($userJustification['user_id']);
$form = new FormValidator('edit', 'post', api_get_self().'?a=edit&id='.$id.'&user_id='.$userId);
$form->addHeader($userInfo['complete_name']);
$element = $form->addDatePicker('date_validity', $plugin->get_lang('ValidityDate'));
$element->setValue($userJustification['date_validity']);
$form->addButtonUpdate(get_lang('Update'));
$form->setDefaults($userJustification);
$content = $form->returnForm();

if ($form->validate()) {
$values = $form->getSubmitValues();
$date = Database::escape_string($values['date_validity']);
$sql = "UPDATE justification_document_rel_users SET date_validity = '$date' WHERE id = $id";
Database::query($sql);
Display::addFlash(Display::return_message(get_lang('Updated')));
header('Location: '.api_get_self().'?user_id='.$userId);
exit;
}
break;
case 'delete':
$userJustification = $plugin->getUserJustification($id);
if ($userJustification) {
Expand Down Expand Up @@ -87,6 +109,5 @@
Display::toolbarAction('toolbar', [$actionLinks])
);


$tpl->assign('content', $content);
$tpl->display_one_col_template();
2 changes: 1 addition & 1 deletion plugin/justification/lang/english.php
Expand Up @@ -9,7 +9,7 @@
$strings['DateManualOn'] = "Date Manual On";
$strings['JustificationCode'] = "Justification code";
$strings['NoJustificationFound'] = "No justification found";
$strings['DateValidity'] = "Date validity";
$strings['ValidityDate'] = "Validity date";
$strings['Justification'] = "Justification";
$strings['MyJustifications'] = "My justifications";

Expand Down
14 changes: 9 additions & 5 deletions plugin/justification/view/justification_user_list.tpl
Expand Up @@ -8,21 +8,25 @@
</div>
<table class="table">
<tr>

<th>{{ 'Justification'| get_plugin_lang('Justification') }}</th>
<th>{{ 'File'| get_lang }}</th>
<th>{{ 'Date'| get_lang('Date') }}</th>
<th>{{ 'Actions'| get_lang }}</th>
</tr>

{% for item in list %}
<tr>

<td >{{ item.justification.name }} </td>
<td >{{ item.file_path }} </td>
<td >{{ item.date_validity }} </td>
<td >
{{ item.date_validity }}
</td>
<td>
<a href="{{_p.web_plugin }}justification/justification_by_user.php?a=delete&user_id={{ user_id }}&id={{ item.id }}" class="btn btn-danger">
<a href="{{_p.web_plugin }}justification/justification_by_user.php?a=edit&user_id={{ user_id }}&id={{ item.id }}"
class="btn btn-primary">
{{'Edit' | get_lang}}
</a>
<a href="{{_p.web_plugin }}justification/justification_by_user.php?a=delete&user_id={{ user_id }}&id={{ item.id }}"
class="btn btn-danger">
{{'Delete' | get_lang}}
</a>
</td>
Expand Down

0 comments on commit f33b7c6

Please sign in to comment.