четверг, 2 июля 2015 г.

Полезности под рукой: Приятные SharePoint уведомления для пользователя

Очень часто при работе над проектом, сталкиваешься с необходимостью уведомлять пользователя и в большинстве случаев мы используем SP.UI.Notify.addNotification("ТЕКСТ сообщения") и для того чтобы сказать пользователю что мы думаем SP.UI.Notify.showLoadingNotification() с ним все в порядке, но для первого вариант есть хорошая альтернатива, класс SP.UI.Notify.Notification




Из интересного:

В конструкторе данного класса Notification, можно передавать onclickHandler и вешать дополнительную логику на клик по уведомлению и кастомизировать.

Можете воспользоваться функцией (для примера) ниже, чтобы сразу посмотреть в действие данные уведомления. Только не забудьте положить свои картинки на типы уведомления в папку images на вашем SPWeb.

var logger=logger||{};
logger = function () {
        var logName = "UI Notification", log = function (message, showNotification) {
            writeLog(message, showNotification, "info");
        }, logError = function (message, showNotification) {
            writeLog(message, showNotification, "error");
        }, logSuccess = function (message, showNotification) {
            writeLog(message, showNotification, "success");
        }, logWarning = function (message, showNotification) {
            writeLog(message, showNotification, "warning");
        }, logWithCallback = function (message, showNotification, clickHandler) {
            writeLogWithCallback(message, showNotification, "info", clickHandler);
        }, logErrorWithCallback = function (message, showNotification, clickHandler) {
            writeLogWithCallback(message, showNotification, "error", clickHandler);
        }, logSuccessWithCallback = function (message, showNotification, clickHandler) {
            writeLogWithCallback(message, showNotification, "success", clickHandler);
        }, logWarningWithCallback = function (message, showNotification, clickHandler) {
            writeLogWithCallback(message, showNotification, "warning", clickHandler);
        }, writeLog = function (message, showNotification, notificationType) {
            var iconUrl, notificationTitle = "";
            showNotification = showNotification || true;
            if (showNotification) {
                if (notificationType === 'info') {
                    iconUrl = _spPageContextInfo.webAbsoluteUrl + "/images/info.png";
                    notificationTitle = logName + ": INFO";
                }
                else if (notificationType === 'error') {
                    iconUrl = _spPageContextInfo.webAbsoluteUrl + "/images/error.png";
                    notificationTitle = logName + ": ERROR";
                }
                else if (notificationType === 'warning') {
                    iconUrl = _spPageContextInfo.webAbsoluteUrl + "/images/warning.png";
                    notificationTitle = logName + ": WARNING";
                }
                else if (notificationType === 'success') {
                    iconUrl = _spPageContextInfo.webAbsoluteUrl + "/images/success.png";
                    notificationTitle = logName;
                }
                var notificationData = new SPStatusNotificationData("", STSHtmlEncode(message), iconUrl, null);
                var notification = new SP.UI.Notify.Notification(SPNotifications.ContainerID.Status, STSHtmlEncode(notificationTitle), false, null, null, notificationData);
                notification.Show(false);
            }
        }, writeLogWithCallback = function (message, showNotification, notificationType, clickHandler) {
            var iconUrl, notificationTitle = "";
            showNotification = showNotification || true;
            if (showNotification) {
                if (notificationType === 'info') {
                    iconUrl = _spPageContextInfo.webAbsoluteUrl + "/images/info.png";
                    notificationTitle = logName + ": INFO";
                }
                else if (notificationType === 'error') {
                    iconUrl = _spPageContextInfo.webAbsoluteUrl + "/images/error.png";
                    notificationTitle = logName + ": ERROR";
                }
                else if (notificationType === 'warning') {
                    iconUrl = _spPageContextInfo.webAbsoluteUrl + "/images/warning.png";
                    notificationTitle = logName + ": WARNING";
                }
                else if (notificationType === 'success') {
                    iconUrl = _spPageContextInfo.webAbsoluteUrl + "/images/success.png";
                    notificationTitle = logName;
                }
                var notificationData = new SPStatusNotificationData("", STSHtmlEncode(message), iconUrl, null);
                var notification = new SP.UI.Notify.Notification(SPNotifications.ContainerID.Status, STSHtmlEncode(notificationTitle), false, null, clickHandler, notificationData);
                notification.Show(false);
            }
        };
        return {
            log: log,
            logError: logError,
            logSuccess: logSuccess,
            logWarning: logWarning,
            logWithCallback: logWithCallback,
            logErrorWithCallback: logErrorWithCallback,
            logSuccessWithCallback: logSuccessWithCallback,
            logWarningWithCallback: logWarningWithCallback
        };
    }();

Хороших проектов! =)

Комментариев нет:

Отправить комментарий