Народный политик

Собираем здесь завершённые проекты, использующие Yii. Один проект — одна тема.
Аватара пользователя
coder
Сообщения: 139
Зарегистрирован: 2010.04.09, 23:42
Откуда: Москва

Народный политик

Сообщение coder »

Приветствую. Народный политик - мой второй проект на Yii, но готов раньше первого из-за того, что первый намного сложнее. Когда закончу, покажу и его, он интереснее.
Народный политик» - это первое в стране мультимедийное реалити-шоу. «Народный политик» - это новые лица и новые идеи. Впервые человеку, не имеющему политического опыта, финансовых и административных ресурсов, дается реальная возможность попасть во власть. Такую возможность им дают телезрители. Ведь именно они за пять недель формируют тот рейтинг симпатий, который и повлияет на итог соревнования между десятью претендентами на звание «Народный политик».
Бла, бла, бла, остальное по ссылке: http://www.narodpolitik.ru/info/about

Суть проекта в том, что люди с помощью интернета и телефона выбирают помощника губернатора Алтайского края.

Использовал:
  • EFileUploadAction + swfupload + image (которое взято из Kohana) – для загрузки и нарезки картинок «на лету» в админке.
  • Ckeditor + kcfinder – понятно зачем.
  • EConfig(http://www.yiiframework.com/extension/config/) – настройки в базе данных в виде key-value. Было бы больше времени, сделал бы что-то свое, но с хранением в файле. За неимением времени, использовал это расширение. Использую для включения/отключения виджетов администратором сайта. Выглядит это так:
Изображение

Голосование временно приостановлено, идет подсчет голосов после первого круга отбора, чуть позже, когда администрация остеит выбывших, можно будет посмотреть на голосование.

У сайта около 30 000 просмотров в день на самом обычном виртуальном хостинге. Кеширование пока не включали, полет и так нормальный. Плюс в карму Yii за скорость.

С готовой версткой разработка заняла 4 дня. Долго, но быстрее, чем в первом проекте на Yii, есть куда стремиться. Проблем не было, всё прошло гладко.

Административные функции выполняются с помощью соответствующих действиях контроллеров. Никаких отдельных приложений, я считаю это ненужным усложнением. Ссылки выведены в чит-панель, которая появляется наверху сайта после логина админа. Выглядит так:

Изображение

По ссылкам, в основном, обычные гриды, но ещё с несколькими кнопками для сортировки и просмотра каких-то данных. Например иконка знака вопроса на следующем скриншоте вызывает лайтбокс со статистикой по голосам (ip голосовавшего и страна):

Изображение

По возможности, административный интерфейс пытался сделать привычным. Например расписание редактируется не с помощью грида, а более понятным образом:

Изображение

P.S. Подскажите как под спойлеры картинки прятать. Тег "spoiler" не работает.
Последний раз редактировалось coder 2011.08.05, 16:36, всего редактировалось 1 раз.
Аватара пользователя
Svyatov
Сообщения: 459
Зарегистрирован: 2010.08.12, 14:50
Откуда: Санкт-Петербург
Контактная информация:

Re: Народный политик

Сообщение Svyatov »

Для четырех дней довольно круто.
Аватара пользователя
coder
Сообщения: 139
Зарегистрирован: 2010.04.09, 23:42
Откуда: Москва

Re: Народный политик

Сообщение coder »

Svyatov писал(а):Для четырех дней довольно круто.
Спасибо. Тут стоит отдать должное скорости разработки именно на Yii. Gii экономит кучу времени + наследование. Вынос действий в отдельные файлы и как результат возможность использования их в разных моделях, мне не пришлось писать одни и те же методы по 10 раз. Всё прозрачно, любое расширение легко правится под себя, т.к. все они написаны в едином понятном стиле. Нет надобности писать SQL запросы, всё делает AR. Нет проблем с обработчиками событий модели - есть встроенные события. Ну прямо почти всё, чего душа желает. Поэтому код как будто пишется сам.

Работа с формами заслуживает отдельного абзаца. Боже, сколько я раньше тратил времени на формы. Пожалуй, обработка введенных данных занимала больше всего времени. Сейчас же это как два байта перекачать, правила валидации описал и готово. Всякие абзацы, ссылки, нужные атрибуты введенного текста, сам вставляет встроенный HTML Purifier - сказка, а не библиотека.

На готовой cms, думаю, заняло бы больше времени, т.к. пришлось бы следовать правил этой системы. Тут же нет никаких правил, не нужно думать как натянуть свою архитектуру на cms.
delancer
Сообщения: 58
Зарегистрирован: 2011.03.11, 19:37
Откуда: Украина, Донецк

Re: Народный политик

Сообщение delancer »

Чит панельку тож дали сверстаную, или сам делал? просто тож симпатичненько сделано
Аватара пользователя
coder
Сообщения: 139
Зарегистрирован: 2010.04.09, 23:42
Откуда: Москва

Re: Народный политик

Сообщение coder »

Нарисовал дизайнер, сверстал я )
chang
Сообщения: 125
Зарегистрирован: 2010.12.03, 20:01

Re: Народный политик

Сообщение chang »

___http://my.jetscreenshot.com/demo/20110806-yifq-131kb оригинально
Аватара пользователя
coder
Сообщения: 139
Зарегистрирован: 2010.04.09, 23:42
Откуда: Москва

Re: Народный политик

Сообщение coder »

chang писал(а):___http://my.jetscreenshot.com/demo/20110806-yifq-131kb оригинально
Эта ссылка по реферу формируется. Дизайнер нарисовал, пришлось делать ). Меня больше раздражает, когда рисуют две ссылки "Назад" и "На главную", при том, что уровень вложенности 1.
chang
Сообщения: 125
Зарегистрирован: 2010.12.03, 20:01

Re: Народный политик

Сообщение chang »

своеобразная ссылка -)
когда я нажал на нее то думал что попаду на уровень выше или еще куда-то внутри сайта ...
а попал обратно на этот форум -)
просто если юзер попадет с гугла то он по этой ссылке и вернется обратно в гуголь .... и не факт что поймет что произошло и додумается вернутся обратно

там наверно нужно нужно добавлять TARGET='_blank' для левых доменов или вообще в топку эту ссылку снести
и верстка едет __http://www.narodpolitik.ru/news/opredelenyi_im ... iy_politik ( для этой ссылки )
а здесь бы миниатюры ресайзить __http://www.narodpolitik.ru/behind/montaj_dekoratsiy
а остальное вродь все четко
Аватара пользователя
coder
Сообщения: 139
Зарегистрирован: 2010.04.09, 23:42
Откуда: Москва

Re: Народный политик

Сообщение coder »

chang писал(а): если юзер попадет с гугла то он по этой ссылке и вернется обратно в гуголь
"Вернуться назад" в прямом смысле, ничего не поделать, так задумали. Я так вообще заменил бы на хлебные крошки.
chang писал(а): верстка едет __hммttp://www.narodpolitik.ru/news/opredelenyi_im ... iy_politik, а здесь бы миниатюры ресайзить __http://www.narodpolitik.ru/behind/montaj_dekoratsiy
Это редакторы наполняют уже. Там визуальный редактор, вставляют картинки прямо так (не проресайзишь) и, бывает, ошибаются с тегами, когда хотят через html что-то подправить. Если бы я наполнял, ресайзил бы конечно ) А там, где это возможно, например в анкетах и списках участников, ресайзится на сервере.
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Народный политик

Сообщение esche »

coder писал(а):
chang писал(а): если юзер попадет с гугла то он по этой ссылке и вернется обратно в гуголь
"Вернуться назад" в прямом смысле, ничего не поделать, так задумали. Я так вообще заменил бы на хлебные крошки.
history.back() не лучше?
...
Аватара пользователя
coder
Сообщения: 139
Зарегистрирован: 2010.04.09, 23:42
Откуда: Москва

Re: Народный политик

Сообщение coder »

esche писал(а):history.back() не лучше?
Так ведь тоже самое.
Аватара пользователя
coder
Сообщения: 139
Зарегистрирован: 2010.04.09, 23:42
Откуда: Москва

Re: Народный политик

Сообщение coder »

Спасибо за ссылку. Приятно )
opa-na
Сообщения: 84
Зарегистрирован: 2011.07.19, 13:18

Re: Народный политик

Сообщение opa-na »

Здравствуйте.
В yii делаю первые шаги и поэтому пытаюсь учиться ну чужих проектах.
Заинтересовала реализация меню.
Я так понял, что на Вашем сайте "Народный политик" основное меню сделано через стандартный виджет CMenu.
Для оформления меню используется несколько тегов <span>
Ваш исходный код

Код: Выделить всё

<li><a href="/info/about"><span><span><span><span>О проекте</span></span></span></span></a></li> 
Скажите пожалуйста, как мне в cmenu добиться вывода этих спанов? Куда их приписать?
Вот кусочек моей тестовой разработки:

Код: Выделить всё

<?php $this->widget('zii.widgets.CMenu',array(     
            'items'=>array(
                array('label'=>'Новости', 'url'=>array('/site/index') ),
                array('label'=>'О компании', 'url'=>array('/about/index')),
                array('label'=>'Вопрос-Ответ', 'url'=>array('/vopros/index')),
                array('label'=>'Контакты', 'url'=>array('/site/contact')) ), 
            )); 
                ?>
Заранее благодарен!
Аватара пользователя
coder
Сообщения: 139
Зарегистрирован: 2010.04.09, 23:42
Откуда: Москва

Re: Народный политик

Сообщение coder »

Я просто создал свой виджет, который наследуется от CMenu и переписал единственную функцию renderMenuItem(), куда и добавил необходимую обертку.
opa-na
Сообщения: 84
Зарегистрирован: 2011.07.19, 13:18

Re: Народный политик

Сообщение opa-na »

Значит поделиться этим нельзя и цель темы только в том, чтоб "заценили"? :)
Понял. Спасибо ;)
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: Народный политик

Сообщение Ryadnov »

вам человек всё подсказал, там 10 строчек кода написать надо :shock:
opa-na
Сообщения: 84
Зарегистрирован: 2011.07.19, 13:18

Re: Народный политик

Сообщение opa-na »

Я просто сразу написал, что новичок и просил подсказки.
Я же не просил все разжевывать и объяснять и сам ищу варианты.
Я сразу понял и нашел вот это

Код: Выделить всё

    protected function renderMenuItem($item)
    {
        if(isset($item['url']))
        {
            $label = $item['label'];
            if(!empty($this->linkLabelWrapper))
            {
                foreach($this->linkLabelWrapper as $wrapper)
                   $label = '<' . $wrapper .'>' . $label . '</' . $wrapper . '>'; 
            } 
просто пока не хватает опыта разобраться с тем, куда и как это все вписать.
Просто ни в каких правилах не сказано, что здесь форум матерых программисов и чайникам в принципе нельзя задавать вопросы и скромно просить о том, чтоб им помогли разобраться.
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: Народный политик

Сообщение Ryadnov »

Тут уже много было топиков по использованию меню

1. Без создания нового класса

Код: Выделить всё

$this->widget('zii.widgets.CMenu', array(
    'items'=> array(
        array(
            'label'=> '<span><span><span><span>Новости</span></span></span></span>',
            'url'  => array('/site/index')
        ),
    ),
    'encodeLabel' => false,
)); 
2.

Код: Выделить всё

Yii::import('zii.widgets.CMenu');
class Menu extends CMenu {
    protected function renderMenuItem($item)
    {
        if(isset($item['url'])) // дополнительная обертка только для ссылок
            $item['label'] = '<span><span><span><span>' . $item['label'] . '</span></span></span></span>';

        return parent::renderMenuItem($item);
    }
} 

Код: Выделить всё

$this->widget('Menu', array(
    'items'=> array(
        array(
            'label'=> 'Новости',
            'url'  => array('/site/index')
        ),
    ),
)); 
opa-na
Сообщения: 84
Зарегистрирован: 2011.07.19, 13:18

Re: Народный политик

Сообщение opa-na »

Спасибо!
Теперь понял отчетливо и есть пример для руководства в дальнейшем.
Прошу прощения за "офтопление" темы про политику)
Ответить