Pull to refresh

Comments 23

Приятно хоть иногда увидеть что-то про CodeIgniter!
Я как раз недавно решал такую задачу, но пока лишь ограничился js скриптом и сессиями, написание библиотеки оставил на потом.
Теперь, когда дойду до этого, может и ваш скрипт использую, правда не очень хорошо что js и css не в отдельном файле — придется это каждый раз со страницей отдавать и не получиться закешировать на стороне юзера.
По поводу кода — вы забыли упомянуть что переназначаете стандартный класс сессий (кстати зачем?). Также укажите, что используете jquery)
По началу использовался расширенный файл сессий, но в рабочем коде от него остался только метод add_userdata, избавившись от которого, потерял надобность в библиотеке. Исключил ее из исходника.
Упомянул про зависимость от jQuery в посте. Действительно, jQuery настолько прочно вошел в жизнь (ну в мою по крайней мере), что воспринимается как что-то само собой разумеющееся)
По поводу css/js хардкода дополнил пост.
Насчет кеширования да, согласен. Не скажется разве что если есть какой-то шаблонизатор, который будет собирать js в один файл и кешировать уже его, но это конечно не выход, я понимаю.
А обратная совместимость осталась?
Простите, я по поводу изменённого CI_Session
Боюсь, не совсем понимаю о чем вы. Обратная совместимость с чем?
До того как вы убрали класс Session, переопределяющий стандартный, мне было интересно, не поломал ли бы он остальной код, использующий эти сессии.
Но раз вы его убрали, вопрос более не актуален)
Ну сама библиотека использовала лишь метод add_userdata.
В проекте в целом ничего не поломалось, библиотека предоставляет те же методы, что и стандартная, но делает это не через куки, а через $_SESSION.
Авторство библиотеки точно не вспомню, но где-то сверху в поисковой выдаче плавала.
Метод add_userdata самодельный, как и некоторые другие. Сделаны для личных целей.
Согласен. Игнитер в последнее время затаился и разработчики постами не балуют. Жадно читаю любую инфу по нем. Появился сайт с русским руководством пользователя для версии 2.0 codeigniter.su
Уже 2.0.1 версия давно, медленно перевод идет — коммьюнити видимо и правда не большое у него…
Я если всё ок будет может запощу статейку про расширение модификации modular extensions, чтобы она могла библиотеки наследовать в модулях.
Ох, хранить css и js код в PHP как то не очень.

Вообще мне очень понравился модуль jGrowl (http://habrahabr.ru/post/52271/) для вывода сообщений.

Я например вывожу все сообщения через ajax в json формате в переменной message и в JS ловлю их так:

$(document).ajaxComplete(function(e, response) {
		try {
			var json = $.parseJSON(response.responseText);
			if(typeof(json.message) == 'string') 
			{
				$.jGrowl(json.message);
			}
			else if(typeof(json.message) == 'object')
			{
				for(msg in json.message)
				{
					$.jGrowl(json.message[msg]);
				}
			}

		} catch(e) {}
	});
А если нужно показать нотификейшен сразу при загрузке страницы?
По поводу css/js хардкода дополнил пост.
Да, я знаю о jGrowl) Конструкция кстати мне ваша понравилась, странно что раньше не обращал внимания на ajaxComplete.
jQuery(document).ready(function() {
    $.jGrowl('Страница загружена');
});


Вообще все зависит от того, что именно вы хотите показать после загрузки страницы!
Удобная штука. Давно в этом блоге не было новостей. Спасибо автору за пост.
Не знаток codeigniter, но не понимаю, что вам мешает просто принять ответ от сервера и работать с ним как угодно? Почему для этого надо подключать какие-то скрипты/стили/зависимости? почему нельзя просто написать echo «mysupernotify» в php-скрипте, и чем это будет отличаться от этой мега библиотеки? Какие проблемы она решает? Может это User Interface какой-нибудь?
Ну и с «мега» вы преувеличили. Это маленькая библиотека, для конкретной задачи.
Для какой задачи?
Основная задача — вывод уведомлений на экран. Единый вывод сообщений посланных как сервером, так с html-страницы. На сервере вы просто выполняете метод допустим returnError(), и не задумываетесь, будет ли он возвращен в json'е, или сохранен в сессии.
Ну а вообще библиотеки облегчают жизнь, позволяют повторно использовать код.
Если ваши вопросы не риторические, сформулируйте их максимально четко или перефразируйте, и я постараюсь ответить по-другому.

«почему нельзя просто написать echo»
Если это неочевидно, то постараюсь объяснить:
Во-первых потому что выводится очередь сообщений.
Во-вторых, сообщения могут быть поставлены как до перезагрузки страницы, так и после, а значит их нельзя хранить просто в переменной «mysupernotify».
А так по большому счету ничем это особо не отличается от эхо, просто вместо цикла с проверками на пустоту ответа используется один «говорящий» метод (это же ооп-way, если я не ошибаюсь ;) ), который выводит сообщения. И человеку постороннему он будет говорить надеюсь немного больше, чем цикл с эхо (да и собственному глазу приятнее).

«Почему для этого надо подключать какие-то скрипты/стили/зависимости?»
Вы конечно извините, но я не могу не спросить про зависимости: а зачем тогда вообще зависимости от javascript? Зачем этот пользовательский интерфейс? Вы действительно считаете современные сайты независимыми от js-фреймворков?
Или может быть вообще вернуться к скриптам, которые передают сообщение об ошибке в адресной строке?
Если же вам не нравится встроенный css, то просто не выводите его — для этого на замену метода initJsCss() имеются раздельные initJs() и initCss(). Подключите только js, и css используйте свой. Все необходимые классы библиотека проставит.

В общем ваши вопросы мне не понятны, попробуйте перефразировать, если вам все еще интересны ответы.
Что такое «очередь сообщений»? Вы подразумеваете comet? Если да, то могу сказать что это не для php задача, если не можете без php то делайте простой polling с интервалом. Но тут вопрос стоял именно по серверной стороне, а не по клиентской, поэтому «ничем это особо не отличается от эхо»

«Если это неочевидно» — нету такого слова

«могут быть поставлены как до перезагрузки страницы, так и после» — при чем тут сервер?

В остальном я демагогии разводить не собираюсь, просто скажу что это не тру вей
Боже, при чем здесь comet?

Я так и понял, что ответы вас не интересуют.

«В остальном я демагогии разводить не собираюсь»
Спасибо, так бы сразу.
Прошу прощения, а чем работа с FlashData не устроила?

Бегло пробежался по функционалу… на мой взгляд, все это еще более элегантно решается стандартными средствами еще первой веткой CI (http://code-igniter.ru/user_guide/libraries/sessions.html смотрим flashdata).

PS «с вами самодельНОй» поправьте пожалуйста.
Исправил, спасибо.

Про flashdata я знаю. По крайней мере на данном этапе)
Не могу сейчас вспомнить, почему не использовал его, но видимо какие-то причины были.
Sign up to leave a comment.

Articles