@@ -364,6 +365,7 @@ echo mfh_get_hidden_fields_for_language(array(
'error_deleting_sm',
'error_sorting_categories',
'error_retrieving_sm',
+ 'all',
));
echo '';
?>
';
|
|
|
+ |
|
diff --git a/api/BusinessLogic/ServiceMessages/ServiceMessage.php b/api/BusinessLogic/ServiceMessages/ServiceMessage.php
index 9a5aff94..f40e9b9c 100644
--- a/api/BusinessLogic/ServiceMessages/ServiceMessage.php
+++ b/api/BusinessLogic/ServiceMessages/ServiceMessage.php
@@ -33,4 +33,7 @@ class ServiceMessage extends \BaseClass {
/* @var $locations string[] */
public $locations;
+
+ /* @var $language string */
+ public $language;
}
\ No newline at end of file
diff --git a/api/BusinessLogic/ServiceMessages/ServiceMessageHandler.php b/api/BusinessLogic/ServiceMessages/ServiceMessageHandler.php
index e852f4cf..2cf31892 100644
--- a/api/BusinessLogic/ServiceMessages/ServiceMessageHandler.php
+++ b/api/BusinessLogic/ServiceMessages/ServiceMessageHandler.php
@@ -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';
diff --git a/api/Controllers/ServiceMessages/ServiceMessagesController.php b/api/Controllers/ServiceMessages/ServiceMessagesController.php
index 481c10a6..bf6c26de 100644
--- a/api/Controllers/ServiceMessages/ServiceMessagesController.php
+++ b/api/Controllers/ServiceMessages/ServiceMessagesController.php
@@ -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');
diff --git a/api/DataAccess/ServiceMessages/ServiceMessagesGateway.php b/api/DataAccess/ServiceMessages/ServiceMessagesGateway.php
index 6a58b070..371089a9 100644
--- a/api/DataAccess/ServiceMessages/ServiceMessagesGateway.php
+++ b/api/DataAccess/ServiceMessages/ServiceMessagesGateway.php
@@ -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`
diff --git a/internal-api/js/service-messages.js b/internal-api/js/service-messages.js
index ebe79766..e75719eb 100644
--- a/internal-api/js/service-messages.js
+++ b/internal-api/js/service-messages.js
@@ -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
};
|