Как стать автором
Обновить

Комментарии 20

неплохо было бы показать простой пример
Так как цель автора не отчеты а именно библиотека, то тут хватит и стандартных примеров www.extjs.com/deploy/dev/examples/samples.html
Готовится очередная статья. Большая, с кучей примеров. Обещаю, будет интересно :)
буду ждать)
перенесите, пожалуйста, в блог тематический по ExtJS
С радостью перенёс бы, но кармы пока не хватает. Да и стыдно немного за статью. Она скорее для себя, как вводное слово. Но если вам кажется, что кто-то где-то из статьи почерпнёт хоть что-то интересное — перенесу в тематический блог сразу, как появится карма.
ну со своей стороны я сделал все что мог — кармы вам добавил. По ексту нужны все статьи, потому не бойтесь, переносите как только сможете, заранее спасибо
Всегда было интересно как правильно реализовать авторизацию на ExtJS. Не поделитесь секретом?)
гм. а при чем тут екст? Форму авторизации можно сделать любым способом, проверку на сервере тоже. Есть даже готовый компонент LoginForm, там даже виртуальная клавиатура есть, очень кстати удобная штука
Извиняюсь, я конечно имел ввиду аутентификацию. Суть проблемы — проверка на сервере у меня осуществлялась через Interceptor, который в случае отказа доступа отправляет ответ примерно такого вида: {success: false, reason='denied'}. Собственно проблема в том, что я не нашел единого способа обработки такого ответа во всех компонентах ExtJs. Т.е. для форм, для AJAX запросов, для Stor-ов и прочего везде приходилось ручками обрабатывать этот ответ. Может есть способ красивее? Типа назначить некий глобальный прокси на все http запросы и анализировать ответ на наличие инфы об отказе доступа и показывать форму логина если нужно.

Еще вопрос — как красивее организовать формировать различного UI на ExtJS для различных групп пользователей? Где это лучше делать на сервере или на клинте? Я делал на клиенте, получалось довольно убого — запрашиваем права доступа у сервера, дальше мешанина проверок. Хотелось бы по-красивше. Может стоит посмотреть на Ext-GWT и делать все на сервере?
я в своем одном проекте сделал через кастомные ответы сервера — типа HTTP 500 — это ошибка вообще, 901 — неверный логин, 902 неверный пароль и так далее. Общий обработчик failure для обьекта Ext.Ajax все ответы которые не 200 ОК обрабатывает, а значит везде в приложении это можно перехватить.
О, спасибо насчет Ext.Ajax. Вот нарыл код, который мне подойдет:

Ext.Ajax.on('requestcomplete', function( oConn, oResp, oOpts ) {
var oData = Ext.decode(oResp.responseText);
if ( Ext.type(oData) == 'object' &&! oData.success ) {
if ( oData.reason == 'denied' ) {
/* Do something */
}
}
});

А с кодами ошибок, это вы видимо обработчик на requestexception повесили?
Ext.Ajax.request({
url: 'foo.php',
success: someFn,
failure: otherFn, — вот сюда
Лучше присмотритесь к Ext.Ajax.request — это более высокоуровневое решение. В параметрах можно указать функции для success и failure.
Ext.Ajax.on('requestcomplete', fun);
удобен для централизованного вылова ответов
напр 1 раз написать механизм обработки success: false и выводить напр msg: — как ошибку…
и в других местах уже не парится о сообщениях об ошибке…
В моих проектах надо было две похожие вещи. Нет, вру, три.
первая: выводить различное меню для различных групп пользователей
вторая: выводить в некоторых гридах различные колонки для различных групп пользователей
третья: отображать данные по-разному для различных групп пользователей.

первая решается на сервере. Просто отдаётся нужный json-объект для панели навигации.
вторая решается плагином MetaGrid, который позволяет менять метаинформацию грида динамически. Т.е. от сервера сначала приходили необходимые настройки для грида, а потом запрашивалась сама информация.

На третьей я остановлюсь подробнее. Это были анонсы. Для администраторов необходимо было выводить грид с возможностью добавления-удаления-редактирования новости, в то время как остальным надо было вывести форматированные новости. Решилось это на клиенте с использованием XTemplate. Панель новости имела тип лейаута «card» и в зависимости от пользователя показывала либо XTemplate, либо грид.
Поделюсь :) Но не в следующей статье. Могу мылом.
Было бы здорово! Мое мыло denis.borovikov@gmail.com. Зареннее спасибо.
Сегодня вам отпишусь
В области содержимого необязательно только грид, если приложение достаточно большое, то там обычно можно встретить TabPanel
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории