1 2012-06-02 18:58:07 (2012-06-02 19:07:45 отредактировано Mobelis)

Тема: Плагин Каталог

Это beta версия админки плагина. Если вам необходимо вывести данные, созданные в админке, на сайте, то можете править файл - catalog.plugin.php

Что реализовано:
1. Создание, редактирование,копирование, удаление  страниц(элементов).
2. Создание, редактирование, удаление разделов(каталогов).
3. Вывод списка разделов и элементов.
4. Управление сортировкой, активация/деактивация элементов,разделов.
5. Установка,удаление каталога с всеми данными.
6. Массовые действия (активация,деактивация,удаление).
7.Подсказка при наведении на элементы управления(tooltip)

Что необходимо реализовать:
Создать страницу управления настройками каталога такими как:
1. Количество элементов в списке в админке по умолчанию.
2. Шаблон по умолчанию.
3. Переключатели (статус публикации, переключатель меню, no Index,no Follow) по умолчанию.
4. Как перемещаться по каталогам (ajax или ссылки).
5. Настройка размеров и качества картинок и их превью.
6. URL параметр, определяющий, что на сайте должен подключаться и обрабатываться каталог.
7. Использовать наследование настроек родителя или те, что по умолчанию.
8. Генерировать slug из title.

Особенности:
1. Данные базы хранятся в отдельном файле catalog.table.xml.
2. Контент и его превью текст тоже отдельно хранятся в своей папке в storage.
3. Картинки и превью картинок хранятся в uploads в директории, которая указана по умолчанию как catalog.
4. Копировать можно только страницы.
5. Если деактивировать раздел, то все элементы и разделы внутри так же деактивируются.
6. При добавлении картинки, она сохраняется как cat_1_1338662880.jpg т.е. cat_ИД_время создания.расширение файла (допускаются gif,png,jpg,jpeg).

После установки плагина в разделе меню Контент появится новый пункт Каталог, перейдя в него, мы увидим форму по управлению каталогом:
http://mobelis.od.ua/plugins/catalog/img/list.png

Важно:
Чтобы работали правильно ajax запросы (не происходило дублирования страницы), необходимо в monstra/engine/plugins.php в строке 708 заменить

// isset arguments ?
   if (isset($args)) {

на

// isset arguments ?
   if (isset($args)&& count($args)>0) {

Загрузка плагина: Download

P.S. Времени все доделать и произвести рефакторинг кода не было. После, как все ошибки в админке будут доработаны и реализована форма настройки каталога, можно будет приступить к выводу каталога на сайте.

Поделиться

2 2012-06-02 20:12:04

Re: Плагин Каталог

http://img1.uploadscreenshot.com/images/orig/6/15306593337-orig.png

Tabs_menu, Tabs_seo, Tabs_seting, .... ?

Сайт Awilum

Поделиться

3 2012-06-02 21:18:43

Re: Плагин Каталог

Я не делал перевода локализации на английский. Следовательно, если в админке выбран язык русский, тогда все нормально отображается. А это вкладки с остальными настройками.
http://mobelis.od.ua/plugins/catalog/img/new_page.jpg
http://mobelis.od.ua/plugins/catalog/img/new_page_2.jpg
http://mobelis.od.ua/plugins/catalog/img/new_page_3.jpg
http://mobelis.od.ua/plugins/catalog/img/new_page_4.jpg

Поделиться

4 2012-06-02 21:20:27

Re: Плагин Каталог

Mobelis
Подход локализации в корне неправильный. т.к. __('значение') не ключ или какое либо другое обозначение.

    /**
     * Global Translation/internationalization function.
     * Accepts an English string and returns its translation
     * to the active system language. If the given string is not available in the
     * current dictionary the original English string will be returned.
     *
     *  
     *      // Display a translated message
     *      echo __('Hello, world');
     *
     *      // With parameter replacement
     *      echo __('Hello, :user', array(':user' => $username));
     *  
     *
     * @global array  $dictionary Dictionary
     * @param  string $string     String to translate
     * @param  array  $values     Values to replace in the translated text
     * @return string
     */
    function __($string, array $values = null) {          
        // Redefine arguments
        $string = (string) $string;        
        // Find string in dictionary
        $string = I18n::find($string);
        // Return string
        return empty($values) ? $string : strtr($string, $values);
    }

Сайт Awilum

Поделиться

5 2012-06-02 21:27:52

Re: Плагин Каталог

По возможности перепишу код.

Поделиться

6 2012-06-03 07:52:24

Re: Плагин Каталог

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

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.

Поделиться

7 2012-06-03 09:32:35

Re: Плагин Каталог

ха ха я вообще нифига не понял..... smile Как все енто дело выводиться на сайте... ( А идея мне нравиться smile

Поделиться

8 2012-06-03 13:35:53

Re: Плагин Каталог

Касательно локализации есть трудности, в частности с подсказками (tooltip).

'T_C_tooltip_delete'=>'Удалить элемент'

, если написать это как задумано, то для того, чтобы не было перекрытия, необходимо писать нечто:

'Help: delete element '=>'Подсказка: Удалить элемент'

, что есть не логично.

kromverk пишет:

ха ха я вообще нифига не понял..... smile Как все енто дело выводиться на сайте... ( А идея мне нравиться smile

В самом начале я писал, что это лишь бета-версия админ части, т.е. та часть плагина, которая отвечает за ввод информации в плагине для cms Monstra. При желании и необходимом минимуме знаний можно это вывести на сайте любым способом, отредактировав файл catalog.plugin.php. Прежде чем самому приступать к реализации 2 части плагина (вывод информации на сайте), необходимо произвести ряд доработок и найти ошибки в текущей реализации.

Эти ошибки, я надеюсь, что вы мне и подскажете, протестировав плагин.

Поделиться

9 2012-06-03 13:40:28

Re: Плагин Каталог

Mobelis

'delete element' => 'удалить элемент'
'Help: delete element '=>'Подсказка: удалить элемент'

логично. почему нет ?

Сайт Awilum

Поделиться

10 2012-06-03 13:43:53 (2012-06-03 13:44:04 отредактировано Mobelis)

Re: Плагин Каталог

Ну, не хотелось бы лишнее слово  'Help:, Подсказка: использовать.

Поделиться

11 2012-06-03 13:48:51

Re: Плагин Каталог

Такой способ локализации используется в современных фреймворках. Например в том же YII

Сайт Awilum

Поделиться

12 2012-06-03 14:22:05

Re: Плагин Каталог

В Yii поддерживаются разные варианты хранения перевода, одним из которых может быть ключ=>значение. Да, изначально I18N реализовано как

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

Поделиться

13 2012-06-03 14:33:51

Re: Плагин Каталог

вот-вот. Yii - фреймворк, который используется в конечном проекте и его lang-файлы именно под него и просто в силу архитектуры не могут иметь пересечений.

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

из этой ситуации можно выйти только двумя способами:
1. Отойти от нативных фраз и использовать их в виде '[название плагина] фраза' => 'перевод' для двух языков.
2. Перейти к использованию для плагинов локального (в пределах плагина) lang-массива.

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

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.

Поделиться