mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-02 12:49:27 +00:00
415b37a8f4
- After message is sent then read page is loaded
255 lines
5.3 KiB
JavaScript
255 lines
5.3 KiB
JavaScript
// ***********************************************************************
|
|
// List all personal messages, used by view system/messages/ajaxRead
|
|
// ***********************************************************************
|
|
|
|
// Global variable that contains tha tabulator instance
|
|
var tableMessageLst;
|
|
var selectedToggleMessage = "received";
|
|
|
|
/**
|
|
* Use DialogLib to display a Generic error
|
|
*/
|
|
function readMessagesGenericError()
|
|
{
|
|
FHC_DialogLib.alertError(FHC_PhrasesLib.t("global", "genericError"));
|
|
}
|
|
|
|
/**
|
|
* Gets all the received messages
|
|
*/
|
|
function getReceivedMessages()
|
|
{
|
|
tableMessageLst.hideColumn("to");
|
|
tableMessageLst.showColumn("from");
|
|
|
|
_getMessages(FHC_JS_DATA_STORAGE_OBJECT.called_path + "/listReceivedMessages");
|
|
}
|
|
|
|
/**
|
|
* Gets all the sent messages
|
|
*/
|
|
function getSentMessages()
|
|
{
|
|
tableMessageLst.hideColumn("from");
|
|
tableMessageLst.showColumn("to");
|
|
|
|
_getMessages(FHC_JS_DATA_STORAGE_OBJECT.called_path + "/listSentMessages");
|
|
}
|
|
|
|
/**
|
|
* Change the TinyMCE content
|
|
*/
|
|
function changeTinyMCE(row)
|
|
{
|
|
if (row == null)
|
|
{
|
|
tinyMCE.get("readMessagePanel").setContent('');
|
|
}
|
|
else
|
|
{
|
|
tinyMCE.get("readMessagePanel").setContent(row.getData().body);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Called on Tabulator row click event
|
|
* - If a clicked message is unread thes is set as read
|
|
* - Change the TinyMCE content with the clicked message body
|
|
*/
|
|
function rowClick(e, row)
|
|
{
|
|
// If in received mode and the message is not unread
|
|
if (selectedToggleMessage == "received" && row.getData().status == "0")
|
|
{
|
|
FHC_AjaxClient.ajaxCallPost(
|
|
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/setMessageRead",
|
|
{
|
|
message_id: row.getData().message_id,
|
|
statusPersonId: row.getData().statusPersonId
|
|
},
|
|
{
|
|
successCallback: function(data, textStatus, jqXHR) {
|
|
|
|
if (FHC_AjaxClient.isSuccess(data))
|
|
{
|
|
rowFormatter(row, "normal"); // format row
|
|
row.getData().status = "1"; // update status to read
|
|
}
|
|
else
|
|
{
|
|
readMessagesGenericError();
|
|
}
|
|
},
|
|
errorCallback: readMessagesGenericError,
|
|
veilTimeout: 300
|
|
}
|
|
);
|
|
}
|
|
|
|
// If NOT in send mode
|
|
if (selectedToggleMessage == "received")
|
|
{
|
|
$("#replyMessage").show();
|
|
}
|
|
|
|
changeTinyMCE(row); // Change TinyMCE content
|
|
}
|
|
|
|
/**
|
|
* Radio button click event to switch between received and sent messages
|
|
*/
|
|
function toggleMessages()
|
|
{
|
|
if ($(this)[0].id == "received")
|
|
{
|
|
selectedToggleMessage = "received";
|
|
getReceivedMessages();
|
|
}
|
|
else
|
|
{
|
|
selectedToggleMessage = "send";
|
|
$("#replyMessage").hide();
|
|
getSentMessages();
|
|
}
|
|
|
|
changeTinyMCE(null); // clean tinymce
|
|
tableMessageLst.redraw(); // redraw table after its content is changed
|
|
}
|
|
|
|
/**
|
|
* Formats tabulator rows
|
|
*/
|
|
function rowFormatter(row, fontWeight = 700)
|
|
{
|
|
if (row.getData().status == "0")
|
|
{
|
|
var cells = row.getElement().childNodes;
|
|
|
|
for (var i = 0; i < cells.length; i++)
|
|
{
|
|
cells[i].style.fontWeight = fontWeight;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get received/sent messages and change tabulator content
|
|
*/
|
|
function _getMessages(getMessagesURL)
|
|
{
|
|
tableMessageLst.replaceData(Array());
|
|
|
|
FHC_AjaxClient.ajaxCallGet(
|
|
getMessagesURL,
|
|
null,
|
|
{
|
|
successCallback: function(data, textStatus, jqXHR) {
|
|
|
|
if (FHC_AjaxClient.hasData(data))
|
|
{
|
|
var messages = null;
|
|
|
|
try
|
|
{
|
|
messages = JSON.parse(FHC_AjaxClient.getData(data));
|
|
}
|
|
catch (syntaxError) {}
|
|
|
|
if ($.isArray(messages))
|
|
{
|
|
try
|
|
{
|
|
tableMessageLst.replaceData(messages);
|
|
}
|
|
catch (syntaxError)
|
|
{
|
|
readMessagesGenericError();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
errorCallback: readMessagesGenericError,
|
|
veilTimeout: 300
|
|
}
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Open new tab/window to write a new message
|
|
*/
|
|
function writeNewMessage()
|
|
{
|
|
window.location = FHC_JS_DATA_STORAGE_OBJECT.app_root +
|
|
FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/" +
|
|
FHC_JS_DATA_STORAGE_OBJECT.called_path +
|
|
"/write";
|
|
}
|
|
|
|
/**
|
|
* Open new tab/window to reply to a received message
|
|
*/
|
|
function replyMessage()
|
|
{
|
|
var selectedMessages = tableMessageLst.getSelectedData();
|
|
|
|
if ($.isArray(selectedMessages))
|
|
{
|
|
var selectedMessage = selectedMessages[0];
|
|
|
|
window.open("writeReply?token=" + selectedMessage.token, "_blank");
|
|
}
|
|
else //
|
|
{
|
|
FHC_DialogLib.alertInfo(FHC_PhrasesLib.t("ui", "pleaseSelectMessage"));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Start me up!
|
|
*/
|
|
$(document).ready(function () {
|
|
|
|
$("#replyMessage").hide();
|
|
|
|
// TinyMCE initialization
|
|
tinymce.init({
|
|
selector: "#readMessagePanel",
|
|
plugins: "autoresize",
|
|
menubar: false,
|
|
toolbar: false,
|
|
statusbar: false,
|
|
readonly: 1,
|
|
autoresize_min_height: 300,
|
|
autoresize_bottom_margin: 0
|
|
});
|
|
|
|
// Tabulator initialization
|
|
tableMessageLst = new Tabulator("#lstMessagesPanel", {
|
|
height: "270px",
|
|
layout: "fitColumns",
|
|
selectable: 1,
|
|
layoutColumnsOnNewData: true,
|
|
columns: [
|
|
{title: "Subject", field: "subject", responsive: 0},
|
|
{title: "From", field: "from", visible: false},
|
|
{title: "To", field: "to", visible: false},
|
|
{title: "Date", field: "sent", sorter: "datetime"}
|
|
],
|
|
rowClick: rowClick,
|
|
rowFormatter: rowFormatter
|
|
});
|
|
|
|
// Bind radio buttons click event with toggleMessages function
|
|
$("#toggleMessages input").click(toggleMessages);
|
|
|
|
// Bind write a new message button
|
|
$("#writeMessage").click(writeNewMessage);
|
|
|
|
// Bind reply to a message button
|
|
$("#replyMessage").click(replyMessage);
|
|
|
|
// First retrieve the received message and populate the tabulator
|
|
getReceivedMessages();
|
|
|
|
});
|