[v1.0] Taggable Behaviour

Выкладываем свои наработки
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: [v0.6] Taggable Behaviour

Сообщение slavcodev »

Так как model()->with() возвращает CActiveFinder а не AR, и методы поведения не выполняются, код ниже не работает

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

$records = Post::model()->with('author')->findAllByTags(array('yii'); 
может добавить в метод findAllByTags доп. параметр?
Жду Yii 3!
SpiLLeR
Сообщения: 350
Зарегистрирован: 2009.09.17, 16:47
Откуда: Санкт-Петербург
Контактная информация:

Re: [v0.6] Taggable Behaviour

Сообщение SpiLLeR »

Предложения по дополнению к поведению TaggableBehaviour, будут перенесены в основное расширение?

P.S. и как изменить в выводе ссылок, чтобы пробелы заменялись не на +, а допустим на - или оставались пробелами
Предупрежден - значит вооружен.
devKP.ru
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: [v0.6] Taggable Behaviour

Сообщение slavcodev »

Некоторые дополнения соединятся, но не все. Решено вывод меток с линками не добавлять в поведение, не его это дело. Для этого виджет лучше написать.
Жду Yii 3!
SpiLLeR
Сообщения: 350
Зарегистрирован: 2009.09.17, 16:47
Откуда: Санкт-Петербург
Контактная информация:

Re: [v0.6] Taggable Behaviour

Сообщение SpiLLeR »

При удаление возникала ошибка в методе afterDelete($event) вылечилось с помощью добавления строки:

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

$conn = $this->owner->dbConnection;
 
Ни у кого проблемы не возникало?
Предупрежден - значит вооружен.
devKP.ru
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v0.7] Taggable Behaviour

Сообщение samdark »

Залил в SVN версию 0.7.

Изменения
[*] Некоторые методы изменены на protected.
[*] К findAllByTags() добавлен параметр $with.
[+] getAllTags().
[+] Модульные тесты.
[+] Опция createTagsAutomatically, позволяющая выкидывать исключение при попытке добавить несуществующий тег.

http://code.google.com/p/yiiext/source/ ... eBehaviour
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v0.7] Taggable Behaviour

Сообщение samdark »

Код в SVN обновлён. Изменений много. Новая версия с API старой не совместима, зато это самое API теперь намного приятнее.

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

Также обновлены инструкции
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v0.7] Taggable Behaviour

Сообщение samdark »

На 1.0 появились ещё идеи, поэтому выкладываю 0.8. Изменений по сравнению с тем, что выкладывал вчера два:
1. Можно задать имя поля tagId в таблице-связке.
2. В readme добавлено описание работы с несколькими группами тегов.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v0.9] Taggable Behaviour

Сообщение samdark »

0.9

— Добавлены методы resetAllTagsCache() и resetAllTagsWithModelsCountCache().
— Исправлен сброс кеша getAllTags() и getAllTagsWithModelsCount().
— Теги сохраняются при save() только если их меняли.
— Совместимость с Yii 1.1. Несовместимость с 1.0.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение samdark »

1.0
— Больше PHPDoc документации.
— Исправлено возможное затирание кеша при использовании нескольких групп тегов в одной модели.
— Отрендеренная документация в HTML.

http://yiiext.googlecode.com/files/CTag ... ur_1.0.zip
dec5e
Сообщения: 7
Зарегистрирован: 2009.12.18, 00:57
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение dec5e »

Хорошо бы еще задавать имя поля name в tagTable. Для полной кастомизации.
И еще идея: добавить возможность связывания тега с моделью тегов? Например, чтобы потом в модели привязать к тегам поведение CTimestampBehavior.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение samdark »

Записал обе идеи в трекер: http://code.google.com/p/yiiext/issues/list

name в tagTable точно сделаю, что касается моделей, надо подумать…
dec5e
Сообщения: 7
Зарегистрирован: 2009.12.18, 00:57
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение dec5e »

Сделал name в tagTable по аналогии с остальным кодом. У меня работает, но у меня не полное покрытие кода. Так что надо протестировать еще
tagTableName.zip
(1.09 КБ) 453 скачивания
По поводу моделей: можно вынести работу с базой данных из TaggableBehaviour в наследников. Допустим, SQLTaggableBehaviour и ActiveRecordTaggableBehaviour. В ActiveRecordTaggableBehaviour сделать дополнительный параметр — класс модели тега. Очень заинтересован в этом, могу поспособствовать, в любом случае себе делать надо будет.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение samdark »

Вообще изначально была проблема выбора — цеплять модель или ограничится несколько более быстрым SQL, так что планы у нас совпадают.

Чтобы не передавать патчи вот таким образом, думаю, лучше будет дать доступ к SVN YiiExt (см. ЛС).
mitallast
Сообщения: 207
Зарегистрирован: 2010.02.21, 20:40
Откуда: Голицыно
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение mitallast »

Нашел баг (а может и фичу :) ) , в методе getAllTags по документации можно передать CdbCriteria, но сам параметр игнорируется :

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

  
     /**
     * Get all possible tags for current model class
     *
     * @param CDbCriteria $criteria
     * @return array
     */
     public function getAllTags($criteria = null){
        if(!($tags = $this->cache->get('Taggable'.$this->getOwner()->tableName().'All'))){
            // getting associated tags
            $builder = $this->getOwner()->getCommandBuilder();
            $criteria = new CDbCriteria(); // тут не учитывается, передан ли параметр
            $criteria->select = 'name';
            $tags = $builder->createFindCommand($this->tagTable, $criteria)->queryColumn();

            $this->cache->set('Taggable'.$this->getOwner()->tableName().'All', $tags);
        }

        return $tags;
    } 
в методе getAllTagsWithModelsCount вообще не учитывается, в нем запрос практически статический, не считая биндинга параметров
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение samdark »

Можно вот сюда продублировать? http://code.google.com/p/yiiext/issues/list Чтобы я наверняка не забыл поправить.
dec5e
Сообщения: 7
Зарегистрирован: 2009.12.18, 00:57
Контактная информация:

[v1.1] Taggable Behaviour

Сообщение dec5e »

Выложил обновления:
[*] Коннект с базой сохраняется в приватной переменную для лучшей производительности
[+] добавлен параметр tagTableName — имя поля name в таблице тегов http://code.google.com/p/yiiext/issues/detail?id=12
[+] добавлен параметр tagTableCount — имя поля счетчика использования тегов. Если null, то хранение счетчика в базе не используется http://code.google.com/p/yiiext/issues/detail?id=17
[+] Добавлен новый подкласс EARTaggableBehaviour для связывания тега с моделью тегов. Полезно, например, для назначания тегам поведения http://code.google.com/p/yiiext/issues/detail?id=13

Готов выслушать замечания и пожелания
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение samdark »

Влил немного очень мелких правок.

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

Ещё пару фиксов и можно релиз упаковывать.
dec5e
Сообщения: 7
Зарегистрирован: 2009.12.18, 00:57
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение dec5e »

Спасибо за исправления. Английский прихрамавает. Ну и пару комментов пропустил по неопытности
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [v1.0] Taggable Behaviour

Сообщение samdark »

Начали закрадываться подозрения о не очень верной работе кеша в методах getAllTags и getAllTagsWithModelsCount. По идее оно может перекрыться для совершенно разных связок.

Идеально было бы написать группу тестов для кеша.
Ответить