Окно с сообщением об успешно добавленном комментарии

Материал из Umicms
Версия от 10:08, 5 июня 2013; Mad grant (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 2.9

Если требуется, чтобы после добавление пользователем комментария, он видел сообщение, о том что комментарий добавлен, нужно организовать вывод сообщения по событию comments_message_post_do. Для этого, нужно первым делать перехватить событие. В файле custom_event.php директории ~/classes/modules/comments/ Должен быть следующий код:

<?php
new umiEventListener('comments_message_post_do', 'comments', 'onCommentPost_session');
?>

Где onCommentPost_session - имя кастомного макроса, обрабатывающего событие. Теперь собственно код самого метода, который должен будет создавать для пользователя информацию о том, что комментарий добавлен. Код дожен быть расположен в файле __custom.php той же директории после строки //TODO: Write here your own macroses

public function onCommentPost_session(iUmiEventPoint $event) {
	if($event->getMode() == 'after') {
		$_SESSION['comment_add']='yes';
	}
}

Данный метод, после добавления комментария запишет в переменную $_SESSION['comment_add'] значение, которое можно в дальнейшем использовать для определения того, что комментарий добавлен. Для вывода сообщения, нужно будет проверить значение переменной $_SESSION['comment_add'], и если оно соответствует требуемому, вывести сообщение. Это можно сделать посредством кода:

public function comment_post(){
	if(isset($_SESSION['comment_add'])){
		if($_SESSION['comment_add']=='yes'){
                        //Вывод сообщения
			echo "<script>alert('Comment was added');</script>";
			}
		        $_SESSION['comment_add']='no';
		}
	}
}

В данном случае мы использовали javascript, но после строки //Вывод сообщения можно вставить любой код, в зависимости от требований вёрстки. Этот метод, можно вызывать как любой макрос. Если переменная $_SESSION['comment_add'] будет равна "yes", выведется сообщение, в противном случае нет. Ну и последнее что нужно сделать, это добавить запись с методом comment_post в файл permissions.custom.php, для того, чтобы кастом мог работать для всех пользователей:

<?php
	$permissions = Array(
		'insert' => Array(
			'comment_post',
		)
	);
?>

Так же подобным образом можно организовать уведомления на почту администратора, о том что добавлен комментарий. Для этого в методе, который выполняется по событию comments_message_post_do добавить отправку сообщения. О работе с umiMail, подробно написано в статье UmiMail