Add language property to service messages

master
Mike Koch 7 years ago
parent 3e82065fa4
commit 36295d1861
No known key found for this signature in database
GPG Key ID: 9BA5D7F8391455ED

@ -102,6 +102,7 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
<th style="display: none"><?php echo $hesklang['id']; ?></th>
<th><?php echo $hesklang['sm_mtitle']; ?></th>
<th><?php echo $hesklang['sm_author']; ?></th>
<th><?php echo $hesklang['lgs']; ?></th>
<th><?php echo $hesklang['sm_type']; ?></th>
<th><?php echo $hesklang['opt']; ?></th>
</tr>
@ -131,11 +132,11 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
<form id="service-message" class="form-horizontal" data-toggle="validator" method="post">
<div class="modal-body">
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#contents" role="tab" data-toggle="tab">Contents</a></li>
<li role="presentation" class="active"><a href="#sm-contents" role="tab" data-toggle="tab">Contents</a></li>
<li role="presentation"><a href="#properties" role="tab" data-toggle="tab">Properties</a></li>
</ul><br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="contents">
<div role="tabpanel" class="tab-pane active" id="sm-contents">
<div class="form-group">
<label for="title"
class="col-md-2 control-label"><?php echo $hesklang['sm_mtitle']; ?></label>
@ -364,6 +365,7 @@ echo mfh_get_hidden_fields_for_language(array(
'error_deleting_sm',
'error_sorting_categories',
'error_retrieving_sm',
'all',
));
echo '<script>var users = [];';
@ -376,6 +378,11 @@ while ($row = hesk_dbFetchAssoc($usersRs)) {
name: '".$row['name']."'
}\n";
}
echo "
var languages = [];\n";
foreach ($hesk_settings['languages'] as $key => $value) {
echo "languages[" . json_encode($value['folder']) . "] = " . json_encode($key) . ";\n";
}
echo '</script>';
?>
<script type="text/html" id="service-message-title-template">
@ -400,6 +407,7 @@ echo '</script>';
<td style="display: none"><span data-property="id" data-value="x"></span></td>
<td><span data-property="title"></span></td>
<td><span data-property="author"></span></td>
<td><span data-property="language"></span></td>
<td><span data-property="type"></span></td>
<td>
<span class="sort-arrows">

@ -33,4 +33,7 @@ class ServiceMessage extends \BaseClass {
/* @var $locations string[] */
public $locations;
/* @var $language string */
public $language;
}

@ -118,6 +118,20 @@ class ServiceMessageHandler extends \BaseClass {
$htmlPurifier = new \HeskHTMLPurifier($heskSettings['cache_dir']);
$serviceMessage->message = $htmlPurifier->heskPurify($serviceMessage->message);
}
if ($serviceMessage->language === null || trim($serviceMessage->language) === '') {
$validationModel->errorKeys[] = 'MISSING_LANGUAGE';
}
$languageFound = false;
foreach ($heskSettings['languages'] as $key => $value) {
if ($value['folder'] === $serviceMessage->language || $serviceMessage->language === 'ALL') {
$languageFound = true;
break;
}
}
if (!$languageFound) {
$validationModel->errorKeys[] = 'LANGUAGE_NOT_INSTALLED';
}
if ($serviceMessage->title === null || trim($serviceMessage->title) === '') {
$validationModel->errorKeys[] = 'MISSING_TITLE';

@ -76,6 +76,7 @@ class ServiceMessagesController extends \BaseClass {
$serviceMessage->message = Helpers::safeArrayGet($data, 'message');
$serviceMessage->published = Helpers::safeArrayGet($data, 'published');
$serviceMessage->style = Helpers::safeArrayGet($data, 'style');
$serviceMessage->language = Helpers::safeArrayGet($data, 'language');
$jsonLocations = Helpers::safeArrayGet($data, 'locations');

@ -24,14 +24,15 @@ class ServiceMessagesGateway extends CommonDao {
$type = $serviceMessage->published ? 0 : 1;
// Insert service message into database
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` (`author`,`title`,`message`,`style`,`type`,`order`, `icon`) VALUES (
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` (`author`,`title`,`message`,`style`,`type`,`order`, `icon`, `mfh_language`) VALUES (
'" . intval($serviceMessage->createdBy) . "',
'" . hesk_dbEscape($serviceMessage->title) . "',
'" . hesk_dbEscape($serviceMessage->message) . "',
'" . hesk_dbEscape($style) . "',
'{$type}',
'{$myOrder}',
'" . hesk_dbEscape($serviceMessage->icon) . "'
'" . hesk_dbEscape($serviceMessage->icon) . "',
'" . hesk_dbEscape($serviceMessage->language) . "',
)");
$serviceMessage->id = hesk_dbInsertID();
@ -74,6 +75,7 @@ class ServiceMessagesGateway extends CommonDao {
$serviceMessage->message = $row['message'];
$serviceMessage->style = ServiceMessageStyle::getStyleById($row['style']);
$serviceMessage->icon = $row['icon'];
$serviceMessage->language = $row['mfh_language'];
$serviceMessage->locations = array();
$locationsRs = hesk_dbQuery("SELECT `location` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "mfh_service_message_to_location`
@ -102,7 +104,8 @@ class ServiceMessagesGateway extends CommonDao {
`style` = '" . intval($style) . "',
`type` = " . intval($type) . ",
`icon` = '" . hesk_dbEscape($serviceMessage->icon) . "',
`order` = " . intval($serviceMessage->order) . "
`order` = " . intval($serviceMessage->order) . ",
`mfh_language` = '" . hesk_dbEscape($serviceMessage->language) . "'
WHERE `id` = " . intval($serviceMessage->id));
hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "mfh_service_message_to_location`

@ -50,6 +50,9 @@ function loadTable() {
} else {
$template.find('span[data-property="type"]').text(mfhLang.text('sm_draft'));
}
$template.find('[data-property="language"]').text(this.language === 'ALL' ?
mfhLang.text('all') :
languages[this.language]);
$tableBody.append($template);
@ -148,7 +151,8 @@ function bindEditModal() {
.prop('checked', 'checked').end()
.find('input[name="title"]').val(element.title).end()
.find('input[name="id"]').val(element.id).end()
.find('input[name="order"]').val(element.order).end();
.find('input[name="order"]').val(element.order).end()
.find('select[name="language"]').val(element.language).end();
setIcon(element.icon);
$.each(element.locations, function() {
@ -161,6 +165,11 @@ function bindEditModal() {
$('textarea[name="message"]').val(element.message);
}
$('.tab-pane#sm-contents').addClass('active');
$('.tab-pane#properties').removeClass('active');
$('.nav-tabs > li').removeClass('active');
$('.nav-tabs > li:first').addClass('active');
$modal.modal('show');
});
@ -177,7 +186,8 @@ function bindCreateModal() {
.find('input[name="id"]').val(-1).end()
.find('input[name="order"]').val('').end()
.find('#preview-pane').html('').end()
.find('input[name="location[]"]').prop('checked', false);
.find('input[name="location[]"]').prop('checked', false)
.find('select[name="language"]').val('ALL');
setIcon('');
if ($('input[name="kb_wysiwyg"]').val() === "1") {
@ -186,6 +196,11 @@ function bindCreateModal() {
$('textarea[name="message"]').val('');
}
$('.tab-pane#sm-contents').addClass('active');
$('.tab-pane#properties').removeClass('active');
$('.nav-tabs > li').removeClass('active');
$('.nav-tabs > li:first').addClass('active');
$modal.modal('show');
});
}
@ -218,6 +233,7 @@ function bindFormSubmit() {
published: $modal.find('input[name="type"]:checked').val() === "0",
style: styles[$modal.find('input[name="style"]:checked').val()],
order: $modal.find('input[name="order"]').val(),
language: $modal.find('select[name="language"]').val(),
locations: locations
};

Loading…
Cancel
Save