все форумы все темы добавить тему
Модуль опросов (голосований)
Уважаемый Loki!
 
Отправил на почту свой вариант модуля опросов на ваше рассмотрение.
 
Это первая версия и там пока мало возможностей. Можно создавать любое количество опросов, редактировать их и удалять. На экран выводится один опрос который выбирается рандомно из существующих (планирую доработать, чтобы можно было выбирать, на какой странице какой выводить опрос). Защита от накрутки пока лишь cookie, но хочу добавить возможность и по IP.
 
Из недостатков пока могу сказать, что в файле handler.php есть момент обработки ajax запроса (отправка данных о голосе пользователя), где возвращается результат используется html-код, что не соответствует MVC. Просто пока не до конца раборался с обработкой ajax в LabCMS.
 
В дальнейшем хочу улучшать этот модуль и написать несколько других модулей.
 
Надеюсь, что понравится. Жду Вашу критику и предложений
Замечания такие:
 
1. Версия 0 обозначает что у модуля будет отображаться текущая версия движка. Это удобно для модулей лежащих в общем репозитории, но не очень удобно для сторонних модулей. Так что лучше там поставить хотябы 0.1
 
2. при добавлении нового пункта голосования затираются все предыдущие. Все же в JS лучше работать с DOM а не с html в виде текста.
 
3. для полей БД лучше задать значения по умолчанию. На рабочих серверах mysql, как правило, не работает в strict режиме, а вот на тестовых машинах - очень часто.
 
4. для автоинкрементного поля надо указывать null, а не ''. Иначе это тоже приводит к ошибкам.
 
5. лучше явным образом задавать список добавляемых полей - если завтра вы добавите новое поле, то придется ползать по всему коду проверяя будут ли работать запросы.
 
6. Немного смутила возможность добавить голосование без вариантов ответа... не уверен правильно ли это.
 
7. именовать поля можно просто answers[4], тогда можно будет с их ключами на сервере работать как с int
 
8. css лучше не вставлять в шаблон, а поместить в отдельный файл *.css
 
9. неудобно что ссылка на компонент жестко забита в шаблон. Лучше генерировать ее автоматически. Можно посмотреть как это сделано, например, в модуле личных сообщений.
 
10. текстовые поля в шаблоне надо эсекейпить (если только не предполагается что среди вариантов ответа может быть html
 
11. аякс отправка у меня не заработала - все время отправляет пустой запрос
 
12. для аякс запроса надо указать один из типов: json, js, xml, ajax
в этом случае в ответе сервера не будет отладочной информации
 
13. непонятно где смотреть результаты голосований.
 
Вот вроде бы и все пока.
 
PS ах да, еще хорошо бы чтобы код был валидный по стандарту XHTML Strict, так как именно в нем сверстан дефолтный шаблон.