CQTreeGridView = CGridView + YiiExt Nested set + treeTable

Выкладываем свои наработки
i_nolan
Сообщения: 1
Зарегистрирован: 2011.08.07, 18:41

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение i_nolan »

Присоединяюсь к вопросу:
spavlov писал(а): при перемещении браузер отправляет меня со страницы "index.php?r=category/admin" на страницы типа "moveNode/action/before/to/", что вызывает ошибки сервера
Столкнувшись с такой же проблемой я изменил строки 132, 135, 138 в CQTreeGridView.php, добавив window.location.href = "'.Yii::app()->createUrl(Yii::app()->controller->id).'/moveNode/.
Теперь все работает нормально, но, как я понимаю, это был далеко не лучший выход. Подскажите, как исправить эту проблему сообразно идеологии Yii?
spavlov
Сообщения: 66
Зарегистрирован: 2011.07.29, 10:42

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение spavlov »

i_nolan писал(а):Теперь все работает нормально, но, как я понимаю, это был далеко не лучший выход. Подскажите, как исправить эту проблему сообразно идеологии Yii?
вот эта штука в конфиге main.php по "идеологии yii" решает проблему :)

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

'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ), 

но вопрос с delete() остался :(

upd.: блин, надо было просто удалить "actionDelete" в контроллере
Аватара пользователя
Insolita
Сообщения: 788
Зарегистрирован: 2011.06.06, 01:39
Контактная информация:

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение Insolita »

А под обычное дерево id | parent_id переделать сложно?
Нет "обычного" типа деревьев. Есть четкая классификация деревьев. Дерево такого типа - это Adjacency Lists. Для деревьев такого типа нужно отдельное расширение (которое уже в разработке).
Для дерева такого типа есть расширение zTree основанное на jquery-плагине ztree - по факту очень функциональное, jquery - плагин снабжен подробнейшим API и кучей примеров с картинками... но это всё жуууууутко китайское :ugeek: :lol:
Rodin
Сообщения: 5
Зарегистрирован: 2012.01.10, 23:03

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение Rodin »

Пытаюсь пересесть со "своих велосипедов" на yii и создание древовидной структуры разделов сайта - это основа.
Есть несколько вопросов:
1. При попытке переместить раздел получаю ошибку "You are not authorized to perform this action", хотя авторизовываюсь как admin. Создание и редактирование работают нормально.
Удаление куска кода контроллера решило задачу.

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

    public function filters()
    {
        return array(
            'accessControl', // perform access control for CRUD operations
        );
    }
Так и нужно?

2. При создании и редактировании раздела как можно сразу сделать выборку родителя?
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение esche »

Rodin писал(а):Так и нужно?
Ну да.. Теперь любой может редактировать и удалять всё что захочет.
Вам сюда http://yiiframework.ru/doc/guide/ru/topics.auth . Если всё осилить не получится - обратить внимание на раздел "Фильтр контроля доступа".
Бонусный пример - свежий сгенерированный CRUD
2. При создании и редактировании раздела как можно сразу сделать выборку родителя?
При редактировании - он по идее должен быть уже проставлен.. При создании - задать параметр (_GET['parent']) например, и присвоить соответствующему атрибуту свежесозданной модели.
...
Rodin
Сообщения: 5
Зарегистрирован: 2012.01.10, 23:03

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение Rodin »

При редактировании - он по идее должен быть уже проставлен.. При создании - задать параметр (_GET['parent']) например, и присвоить соответствующему атрибуту свежесозданной модели.
Не совсем понятно. Сейчас чтобы создать новую категорию в нужной ветке я создаю новую категорию, сохраняю. Она создается как категория 2-го уровня (1-й Root). Затем я ее перемещаю в нужное место. Как можно организовать при создании категории выбор родителя? Алгоритм понятен. При создании (редактировании) нужно получить все дерево и вывести в форму создания категории. При сохранении брать выбранного родителя. Если можно кусок кода. (Совсем еще разобрался с моделью. Что, откуда и куда)
Rodin
Сообщения: 5
Зарегистрирован: 2012.01.10, 23:03

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение Rodin »

Есть интересный вопросов:
У меня несколько деревьев.
При редактировании категории нужно получить все деревья, в которых редактируемая категория не является дочерней веткой или корнем. Плюс часть дерева со всеми ветками, кроме куска ветки, где редактируемая категория является началом части. Можно ли это сделать?
Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение aser »

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

в файле CQTreeGridView.php код:

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

$("#'.$this->getId().' .items tr.initialized").draggable({
            helper: "clone",
            opacity: .75,
            refreshPositions: true, // Performance?
            revert: "invalid",
            revertDuration: 300,
            scroll: true
            });
заменил на

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

$("#'.$this->getId().' .items tr.initialized").draggable({
            handle: "a.draggable-handle",
            helper: "clone",
            opacity: .75,
            refreshPositions: true, // Performance?
            revert: "invalid",
            revertDuration: 300,
            scroll: true
            });
P.S. добавилась одна строчка

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

 handle: "a.draggable-handle",
Ну и в самом гриде добавил кнопочку

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

'buttons'=>array(
                'draggable' => array(
                    'label' => 'Переместить',
                    'imageUrl' => Yii::app()->theme->baseUrl.'/img/draggable.png', // если вы не используете темы измените путь
                    'url'   => '',
                    'options' => array('class'=>'draggable-handle'),
                ),
            ),
и изменил template

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

'template'=>'{draggable} {view} {update} {delete}',
Аватара пользователя
MaxOtto
Сообщения: 139
Зарегистрирован: 2010.01.30, 17:44

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение MaxOtto »

Всем привет. Отличное расширение, пытаюсь пристроить к одному проекту.

Был вопрос - разобрался. :lol:
Аватара пользователя
jedi
Сообщения: 82
Зарегистрирован: 2010.12.01, 08:49

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение jedi »

Подскажите, а можно сделать так, чтобы сортировать еще и root-элементы ? ( когда стоит 'hasManyRoots'=>true )
joomla->drupal->yii
thekip
Сообщения: 16
Зарегистрирован: 2012.08.03, 16:07

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение thekip »

Добрый день, установил, все запустилось - работает, но есть вопрос с пагинацией.
Она вообще продумывалась? Так как сейчас если в грид вываливается большое количество элементов пагницаия подключается сама, но если переключиться на вторую страницу, то выдаст "tree is corrupted" (видимо потому что родитель остался на предидущей странице)

Скажите как у вас вообще реализован сценарий работы с большими деревьями?
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение lancecoder »

как по мне это не айс дерево в таблицу, для этого есть специальный CTreeView
upd: причем с аякс подгрузкой веток по запросу
thekip
Сообщения: 16
Зарегистрирован: 2012.08.03, 16:07

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение thekip »

lancecoder писал(а):как по мне это не айс дерево в таблицу, для этого есть специальный CTreeView
upd: причем с аякс подгрузкой веток по запросу
Это если от дерева требуется только его просмотр. А если вам нужно его редактировать, перемещать ноды, фильтровать, сортировать, видеть не только название но и еще какие то другие параметры, то здесь самое то.

плагин вроде довольно стабилен, но очень хочет "допиливания"
К примеру мне не совсем понятно зачем после какждой ячейки создаются 2 элемента (before-id, after-id). Т.е. перемещая ноду в промежуток между какими то другими двумя нодами, у меня появлятся бесполезный выбор, задействовать функцию insertAfter верхней ноды, или insertBefore нижней ноды, что по сути сделает одно и тоже только разными методами.

И еще много чего, к примеру фильтр по гриду у меня тоже как то не очень захотел работать, да и вот с пагинацией косяк.

ДУмаю на днях займусь им, и попотрошу его до более вылизаного состояния (с автоподгрузкой нод и прочего)
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение lancecoder »

А если вам нужно его редактировать, перемещать ноды, фильтровать, сортировать, видеть не только название но и еще какие то другие параметры, то здесь самое то.
все реально, редактировать можно в модальном, есть перетаскивание в других яваскрипт tree плагинах (почти все одинаковые данные на вход ждут). Вообщем ваша проблема по работе с деревом в плагине созданном для деревьев полностью вымышленная
HiJack
Сообщения: 19
Зарегистрирован: 2010.04.01, 12:05

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение HiJack »

Небольшая поправочка Create.php
строка 9, заменить на

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

if (isset($_POST[$this->getController()->CQtreeGreedView['modelClassName']])) {
А то ругается на invalid key, при

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

if ($_POST[$this->getController()->CQtreeGreedView['modelClassName']]) {
Вообще странно, что я 1 написал. Качал код из первого поста.
Аватара пользователя
fad
Сообщения: 72
Зарегистрирован: 2012.02.21, 20:26

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение fad »

Есть улучшенная версия с использованием TbExtendedGridView и ajax сохранением, если нужно будет, могу загрузить.
Simple Yii CMS — простая CMS на Yii1 (без composer) с веб-инстяллтором и поддержкой разных БД.
Maxym
Сообщения: 3
Зарегистрирован: 2013.01.05, 04:01

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение Maxym »

Всем привет. Использую это расширение, очень понравилось, но есть проблема с пагинацией (если много элементов). Есть ли возможность работы с большим количеством элементов. Если есть расширенная версия, загрузите плиз!!
Аватара пользователя
howard
Сообщения: 528
Зарегистрирован: 2012.11.16, 18:55
Откуда: Україна, Вінниця

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение howard »

Кто-то скажет есть ли уже расширение для 2-уровневого дерева (parentId) ?
Агрегатор цен на услуги хостинга - https://hostcost.net
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение S c »

выскакивала ошибка
Uncaught TypeError: Object function ( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
} has no method 'curCSS' - jquery-ui.js:10079
погуглил:
http://habrahabr.ru/post/149403/
$.CurCSS. Этот метод был просто псевдонимом для jQuery.css(), начиная с jQuery 1.3. Хотя свойство никогда не было частью документации API, некоторые его использовали. Теперь его больше нет.
сюда же
http://bugs.jquery.com/ticket/11921

Как я понял в новых версиях jquery (>1.8) curCSS метода больше нет. Вроде в более новых версиях jqeury.ui этот метод поменяли
Решил проблему с помощью подключения в main layout:

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

Yii::app()->clientScript->registerCoreScript('jquery.ui');
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: CQTreeGridView = CGridView + YiiExt Nested set + treeTab

Сообщение Ekstazi »

Чего-то не работает расширение. Придется свое писать
Ответить