Страница 1 из 1

Улучшаем панель управления пользователя [готовое решение]

СообщениеДобавлено: 23 май 2013, 17:20
Cornil
Признаюсь честно, первый раз попав в панель управления в качестве пользователя, я заблудился... в трех соснах... и во второй раз тоже... *SCRATCH*
Дабы не смущать пользователей, было решено кое-что поправить. Заодно убрать оттуда форму поиска.

Вот что у меня получилось:
rr.png
rr.png (37.19 КБ) Просмотров: 17619

rr1.png
rr1.png (41.06 КБ) Просмотров: 17619


Теперь пара слов о том каким образом это было сделано.
Прежде всего был написан отдельный лайаут для панели (см. вложение) с кнопками.
Кнопки "платежи" и "пополнить баланс" не будут видны в бесплатной версии.
Форма поиска, для повышения гибкости системы, также вынесена в отдельный файл.
Затем были убраны некоторые, уже ставшие лишними, ссылки в самих представлениях.
Главная страница панели была разбита по вкладкам.

Как сделать:
1. Копируем файл usercpanel.php в папку \protected\views\layouts
2. Подключаем этот лайаут.
открываем \protected\modules\usercpanel\controllers\MainController.php и в начале файла после
Код: Выделить всё
    public $modelName = 'User'; 

добавляем функцию init:
Код: Выделить всё
    public function init() {
        $this->layout='//layouts/usercpanel';
        parent::init();
    } 

аналогичным образом поступаем с файлом \protected\modules\userads\controllers\MainController.php. Здесь перед
Код: Выделить всё
parent::init(); 

добавляем:
Код: Выделить всё
$this->layout='//layouts/usercpanel'; 

3. Заменяем файл \protected\modules\usercpanel\views\index.php на файл из архива
4. Убираем лишние ссылки.
в файле \protected\modules\userads\views\create.php убираем или комментируем код
Код: Выделить всё
$this->widget('zii.widgets.CMenu', array(
    'items' => array(
        array('label'=>tt('Manage apartments', 'apartments'), 'url'=>array('index')),
    )
));
 

в файле \protected\modules\userads\views\update.php ищем и убираем строчку
Код: Выделить всё
array('label' => tt('Manage apartments', 'apartments'), 'url'=>array('index')), 

5. Добавляем классы.
файл \protected\modules\userads\views\index.php
Код: Выделить всё
$this->widget('zii.widgets.CMenu', array(
    'items' => array(
        array('label' => tt('Add apartment', 'apartments'), 'url'=>array('create')),
    )
));
 

меняем на:
Код: Выделить всё
$this->widget('zii.widgets.CMenu', array(
    'items' => array(
        array('label' => tt('Add apartment', 'apartments'), 'url'=>array('create')),
    ),
    'htmlOptions' => array('class' => 'cpanel_submenu'),
));
 

файл \protected\modules\userads\views\update.php
Код: Выделить всё
$this->widget('zii.widgets.CMenu', array(
    'items' => $menuItems
)); 

меняем на:
Код: Выделить всё
$this->widget('zii.widgets.CMenu', array(
    'items' => $menuItems,
    'htmlOptions' => array('class' => 'cpanel_submenu'),
));
 

6. Добавляем в \css\styles.css:
Код: Выделить всё
/*--------------------- usercpanel --------------------*/
.nav-list{
    margin:2px 0 0 0;
    height:35px;
    padding:0;
    background-color:#eee;
}
.
nav-list li{
    list-style:none;
    float:left;
}
.
nav-list li a{
    background-color:#fff;    
    text-decoration:none;
    padding:3px 15px;
    margin:3px 10px;
    border:#ddd 1px solid;
    display:block;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
.
nav-list li a:hover{
    background-color:#fff;    
    border:#aaa 1px solid;
}

.
cpanel_submenu {
    height:25px;
}
.
cpanel_submenu li{
    float:left;
    display:block;
    margin-right:15px;
}
.
usercpanel-wrapper h1{
    margin-bottom:20px;
}
a:focus{
    outline:none;
}
/*--------------------- /usercpanel --------------------*/
 


Если для кнопок нужно применить полностью свои стили, то в начале usercpanel.php лучше убрать строчку.
Код: Выделить всё
<?php Yii::app()->bootstrap->registerAllCss(); ?>

Не забудьте перевести надпись "Your profile" в управлении переводами.

Данный пример требует передачи модели пользователя в лайаут (распространяется только на платный модуль "payment"),
поэтому владельцам платных версий могу предложить раскомментировать первую строчку в начале файла usercpanel.php из архива.
Код: Выделить всё
<?php if (!isset($model)) $model = User::model()->findByPk(Yii::app()->user->id); ?>

Возможно, это не очень правильно с точки зрения экономии ресурсов, но:
1. естественно, используемые в панели управления модели User и UserAds - разные, а для общей менюхи нужна только модель User (поэтому использование виджета в качестве решения также не должно дать положительных результатов);
2. Yii вообще не передает модель в layout, что вполне логично.
Надеюсь, разработчики подскажут более красивое решение данного вопроса без переписывания модулей.

В бесплатной версии, модели в лайауте не нужны, поэтому все работает без такой модификации.

Re: Улучшаем панель управления пользователя [готовое решение

СообщениеДобавлено: 19 сен 2013, 15:42
saxonn
Если выбрать Продажа, Сдать или Обменять - все работает, а если выбираешь Снять или Купить - стиль слетает. Помоги, как прописать его и для этих категорий???


PS решил проблему радикально) удалил категории Снять и Купить, они мне все рано не нужны)

Re: Улучшаем панель управления пользователя [готовое решение

СообщениеДобавлено: 22 сен 2013, 17:41
Cornil
У меня вообще только "сдать посуточно" и "сдать почасово". Остальное убрал как только движок поставил.

Re: Улучшаем панель управления пользователя [готовое решение

СообщениеДобавлено: 27 окт 2013, 20:39
lomuk
Выбивает 500 ошибку с текстом

Undefined variable: baseUrl

1.6.0 Pro

Re: Улучшаем панель управления пользователя [готовое решение

СообщениеДобавлено: 28 окт 2013, 01:44
Cornil
Похоже, что Yii ругается на неопределенную переменную $baseUrl
Ну вообще говоря, это довольно странно... Хотя, конечно, доработка была сделана под версию 1.4

Тут можно попробовать

Вариант 1. В файле usercpanel.php (см. приложение) заменить в строках 12,15 и 19 $baseUrl на Yii::app()->request->baseUrl

Вариант 2. Обернуть URL в тех же строках следующим образом - из вот такого:
Код: Выделить всё
.............. 'url' => $baseUrl . '/usercpanel/main/index' .............. 

сделать вот такое:
Код: Выделить всё
..............'url' => Yii::app()->createUrl('/usercpanel/main/index') .............. 

По аналогии, ссылки там разные...

Re: Улучшаем панель управления пользователя [готовое решение

СообщениеДобавлено: 28 окт 2013, 11:29
lomuk
Всё работает, спасибо ) *BRAVO*

Re: Улучшаем панель управления пользователя [готовое решение

СообщениеДобавлено: 28 окт 2013, 16:20
Cornil
На здоровье :)) Но в платной версии, если не ошибаюсь, все-таки придется немного поработать напильником.

Re: Улучшаем панель управления пользователя [готовое решение

СообщениеДобавлено: 28 окт 2013, 17:17
lomuk
Там мелочи) Уже все подпилил )