Comments 61
не понял, что значит вообще?
изначальная затея была показать что и как делать в zf, но вскоре это вырастит в достаточно хороший os todo проект на php коих мало, и я бы таким «примером» пользовался бы по прямому его назначению, как todo =)
Интерисует русифицированый фронтенд в Dodo или в любом, неважно каком, приложении на ZF?
Из /application/Bootstrap.php убрать
public function _initTranslate()
{
  // this will make App_Translate use the right language
  $translate = new Zend_Translate('array', APPLICATION_PATH . '/languages/en.php', 'en');
  Zend_Registry::set('Zend_Translate', $translate);
  return $translate;
}


* This source code was highlighted with Source Code Highlighter.


В /configs/application.ini добавить, так же добавить соответствующие языковые файлы.
; ==============================================================================
; TRANSLATE
; ==============================================================================
resources.translate.registry_key = "Zend_Translate"
resources.translate.data = APPLICATION_PATH "/languages"
resources.translate.adapter = "Zend_Translate_Adapter_Ini"
resources.translate.locale = "auto"
resources.translate.options.clear = false
resources.translate.options.disableNotices = false
resources.translate.options.ignore = "."
;resources.translate.options.locale = "auto"
;resources.translate.options.log = null
;resources.translate.options.logMessage = "Untranslated message within '%locale%': %message%"
;resources.translate.options.logUntranslated = false
resources.translate.options.scan = null
;resources.translate.options.delimiter = ;
;resources.translate.options.enclosure = '"
;resources.translate.options.length = 0


* This source code was highlighted with Source Code Highlighter.
пока не дочитал до конца, думал что это все на Хабре :)
у нас ведь тоже была статья про Zend_Auth
Какая удачная возможность просматривать на тестовом сервере все ту-ду листы, меняя индекс листа.
То что в приложении есть уязвимости это нормально, сейчас его тестируют, следовательно кто-нибудь да и сообщит разработчикам о проблеме. Видимо какие-то недоработки в реализации ACL.

Это проблема относится не к Zend Framework, а к конкретной реализации, т. е. Dodo.
Понятное дело что это не проблема фреймворка, я думал это очевидно, а уже заминусовали
Капитана Очевидность, несмотря на его прикольность, тут не сильно жалуют, а еще дело в том что тебе вроде как не совсем понятно что это проблема не библиотеки.
А причем здесь ZF? Когда даете пользователю что-либо сделать с чем-то, проверяйте, чтобы это что-то принадлежало этому пользователю. Это в любом языке в любом типе приложений.
притом что ребята учат работать с zf, а глядя на это прям руки опускаются
глядя на эти руки мне уже не нравится zf
Баги есть всегда и у всех. Ребята впервые взяли в свои руки незнакомый инструмент и пытаются с ним освоиться. При этом показывают таким же чайникам, как и откуда копать, чтобы хоть что-то начало получаться.

Когда я начинал его изучать, мне этого очень сильно не хватало. Были только обрывочные статьи, типа «Как сделать такую вот штуку на ZF» и потом 3 страницы кода с незнакомыми терминами, причем не целиком файловое дерево — где какой файл и что он делает, а просто вырезка из какого-нибудь контроллера. И что с этим делать — фиг знает.

А тут взяли, сделали простое приложение с типовым базовым функционалом, который обычно требуется реализовать, сделали и дали другим посмотреть, как это делается. Только в плюс.
Только, ради Бога, не соверши суицид такими темпами.

Ребята никого ничему не учат. Они предлагают посмотреть на то что делают они, безвозмездно, поучаствовать в этом процессе нам, так как никто не совершенен. Учиться они, кстати, предлагают у Роба Аллена, а он вроде как личность авторитетная, которая не будет писать статьи по кривым библиотекам.

Ты будешь сильно удивлен но это один из немногих доступных хороших примеров приложения.

Не нравится — и пожалуйста, никто не заставляет, возможно Yii, Symfony или Drupal тебе подойдет больше. У тебя есть выбор, или если все дело только в руках — докажи что смотреть на твои руки приятнее.
Овет разработчика через полтора часа после обнаружения ошибки внимательным chalif:
Big time catch! Thanks for finding this. That deserved an immediate hot-fix. If you try it now on a random id you should see the standard Zend error page saying that the list could not be found.

I really appreciate you submitting this one. Thanks a lot. I still need to update the source code download to include the fix.

Since you might already have the source code: I fixed the following line of code in TaskController.php (frontend module) to the following:

$this->view->tasklist = $model_list->getList($list_id, $user_id);

I added the $user_id parameter.

Thanks Again, Greg Wessels
Что касается полезности и удобства.

У вас справа есть ссылка «Создать новый лист». Ведет на отдельную страницу, на которой только одно поле для ввода названия листа. Если сделаете добавление аяксом, чтобы форма появлялась при клике по этой ссылке, упростите людям жизнь. JS-код там небольшой, страницу не нагрузит.
«the page does not load» насколько я знаю значит — «страница не загружается». :)))
Все вопросы к translate.google.ru, меня попросили я сделал. Думаю авторы поймут общий смысл и так. ;)
а чего logout не сделать через

Zend_Auth::getInstance()->clearIdentity();

а то в сорсах
$session = $this->getSession();
$session->unsetAll();

да и в моделе там где таски

public function getTask($id)
{
$select = $this->select()->where('id = ?', (int)$id);
$user = $this->fetchRow($select);

мы же не юзера выбираем :)
$session = $this->getSession();
$session->unsetAll();


* This source code was highlighted with Source Code Highlighter.

Полностью очищает $_SESSION

Zend_Auth::getInstance()->clearIdentity();

* This source code was highlighted with Source Code Highlighter.

Убирает из сесии только данные Zend_Auth

Соответственно при следующей авторизации с другими данными у нас может быть мусор в $_SESSION.

Насчет $user… глаз алмаз =) но это видимо последствия катнпаста:
public function getUser($id)
{
    $select = $this->select()->where('id = ?', (int)$id);
    $user = $this->fetchRow($select);
    if (!$user) {
        throw new Exception("user [$id] not found!");
    }
    return $user->toArray();
}


* This source code was highlighted with Source Code Highlighter.
А это можно было позиционировать и как плюс: «Местами даже соблюдаются стандарты кодирования!».

Но на самом деле, к стандартам кодирования приводится уже после того как были проведены модульные и нагрузочные тесты, исправлены ошибки… взять тот же SVN у ZF там это в комментариях часто видно что фиксы до, форматирование кода после, все-таки несоблюдение стандартов целиком и полностью это же не смертный грех? Обязательно на это найдется время, но потом.
жизнь показывает, что потом времени, как правило, не находится. поэтому стандарты кодирования лучше соблюдать сразу.
Абсолютно с тобой согласен! Стандарты кодирования должны соблюдаться с самого начала — это как рефлекс!
Велосипедов в коде много, модульности нет, но в целом неплохо. $this->_session->{'user_id'} порадовало :)
Что значит нет модульности когда там есть поддержка модулей фронт контроллера?
вынести бекенд и фронтенд в отдельные модули, это не модульность
Не знаю, что такое модули фронт контроллера, но у ребят модули используются, чтобы разделить backend (админка) и frontend. + «модуль» api, который просто выводит todo-список в xml для экспорта. Модульность от этого не появилась.
Модульность это что-то типа: jazzslider.wordpress.com/2009/06/15/a-reusable-zend-framework-content-module/
Вот backend, frontend, api это модули фронт контроллера. Они участвуют в процессе диспетчеризации. За линк спасибо позже почитаю если будет полезно — может и переведу.
В терминологии ZF понятия модуля фронт-контроллера нет (есть помощники и плагины). Но это и неважно, суть в том, что такое разделение на «модули» никакого практического удобства не несет, а «модуль» api появился лишь от незнания ContextSwitch.
Я для себя ContextSwitch открыл вообще случайно, читая документацию не в поисках ответа на какой-то вопрос, а так, скорее просматривая возможности. Возможно у них такая же история.
Предложил авторам эту идею, может они ее тоже реализуют так же быстро как и багфикс.
Ответ почему все таки был API, а так же помогли найти еще один баг.
You sure could accomplish the same thing that way. My opinion is that I favor the API module approach because of the session — I don’t touch or establish a session for requests coming in to the API module. So that way I can separate the controllers that depend on a session and the currently logged in user vs the API controllers which completely depend on the api keys coming in on each request. My 2 cents.

Although it looks like the bootstrap is initializing the Session everytime — I need to fix that. Regardless, no user information is pulled out of the session for API module requests

Greg
Ну, lazy loading еще никто не отменял. Если они боятся, что их же код вдруг что-то вытащит из сессии — Zend_Session_Namespace в помощь.
App_Controller_Action::sendJsonResponse() — это уж точно работа ContextSwitch.
И если уж вы связываетесь с автором, то всякие App_Route, App_Translate и т.д. было бы неплохо убрать подальше :)
Я дал ссылку на комментарии, так что возможно он прислушается к части советов. В любом случае еще раз убедился, что хабр неплохая бесплатная платформа для тестирования некоторых вещей.
А мне больше нравится «Кризис-Шмизис», как то прям заряжает позитивной энергией. 8D
Dodo будет довольно сложно конкурировать с уже существующими BaseCamp и RememberTheMilk.
Извините, вы прочитали статью?
Так появилась идея что у будет некое приложение содержащее наработки основываясь на котором мы сможем быстрее приступить к реализации произвольных задач, не повторяя уже пройденные ранее моменты.
Они не собираются конкурировать, приложения делалось не приложения ради, а пользы для.
По секрету: автор лично подтвердил, что Dodo не позиционируется как приложение конкурирующее с RemberTheMilk, Tada Lists или подобными. И еще поблагодарил всех за тестирование и отзывы.
Отлично! Даже нетбиановский проект в архиве сохранили)) Респект разрабам, полезное дело делают.
Как уже бедный «to do» не перефразировали, и tudu и dodo и toodoo. Торопитесь разработчики, остались еще варианты toto и tutu!
Only those users with full accounts are able to leave comments. Log in, please.