26

Re: Вопросы по написанию плагинов

assets - обычно это разноплановая статика сайта, которая не изменяется или редко меняется.

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

27

Re: Вопросы по написанию плагинов

и если плагин позволяет добавлять фотографии (галерея, например), то в какую папку загружать фотки?

3) /public/uploads/gallery/

1) /storage/gallery/

В storage ничего публичного ложить нельзя. В ней только приватные данные. папка /public/ для публичных данных

Сайт Awilum

Поделиться

28

Re: Вопросы по написанию плагинов

JINN, вообщем в папке public создавать папку gallery но уж точно не в /assets/ или /storage/  smile

Сайт Awilum

Поделиться

29

Re: Вопросы по написанию плагинов

JINN, достаточно написать вот так:

<div class="accordion">
    <div class="accordion-group">
        <div class="accordion-heading">
            <a href="#collapseOne" data-toggle="collapse" class="accordion-toggle">
            Extra
            </a>
        </div>
        <div class="accordion-body collapse" id="collapseOne">
            <div class="accordion-inner">
               Test content here
            </div>
        </div>
    </div>
</div>

Сайт Awilum

Поделиться

30 (2012-05-15 21:36:18 отредактировано DmitriyMX)

Re: Вопросы по написанию плагинов

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

$table = new Table('table_name');
// и
$table = Table::get('table_name');
Русская документация Monstra. Правки приветствуются.

Сайт DmitriyMX

Поделиться

31

Re: Вопросы по написанию плагинов

DmitriyMX

$table = Table::get('table_name');

Возвращает название файла(таблицы) и весь xml файл(таблицу).

Использовать нужно

$table = new Table('table_name');

Потому что это позволит потом работать с таблицей используя XMLDB API. Например:

$users = new Table('users');
$users->insert(array('login'=>'admin', 'password'=>'pass'));

Сайт Awilum

Поделиться

32 (2012-05-30 11:39:09 отредактировано El'Drako)

Re: Вопросы по написанию плагинов

тут возникла мысля - может те, кто пишут сейчас что под монстру, отпишутся над чем работают, если позже это пойдёт в паблик? чтобы не было пустой работы над одним и тем же?

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

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

33

Re: Вопросы по написанию плагинов

у меня сейчас идёт работа над плагином авторизации: управление юзерами в админке, регистрация, авторизация на сайте, активация по мылу.

В Монстре есть бекенд по работе с юзерами. Нету фронтенда.
Этот плагин не мог бы расширить(дополнить) существующий функционал, даже если этот плагин будет EL'Users smile ?

юзеры не будут иметь доступа к админке, т.к. они в отдельной таблице.

Насколько сложно будет этот плагин адаптировать к таблице пользователей ? так как в Монстре имеется таблица пользователей уже.

Сайт Awilum

Поделиться

34

Re: Вопросы по написанию плагинов

я не стал использовать существующих юзеров по двум причинам:
1. Пользователи фронта никак не связаны с бекэндом. Т.к. в цмс нет админского функцианала во фронте (например, как в Джумле редактирование материалов не уходя с сайта), то это никак не повлияет на работу.
2. У разных проектов будут разные поля в акке юзеров - каждый раз влезать в системную таблицу не комильфо. ИМХО, плагин не должен влиять на систему или же должен удаляться без следов. Терять же данные юзеров при отключении плагина тоже не очень.

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

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

35

Re: Вопросы по написанию плагинов

El'Drako пишет:

тут возникла мысля - может те, кто пишут сейчас что под монстру, отпишутся над чем работают, если позже это пойдёт в паблик? чтобы не было пустой работы над одним и тем же?

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

Поделиться

36 (2012-06-01 23:51:14 отредактировано DmitriyMX)

Re: Вопросы по написанию плагинов

Сейчас воспринимать всерьез мою работу(читай "велосипед") не стоит, но если интересно, то работаю над плагином Новостей. Реализую самый простой функционал: название новости, текст(сокращенный и полный) и дата публикации таковой. Но я еще только учусь писать плагины под Монстру, учитывайте это smile

Русская документация Monstra. Правки приветствуются.

Сайт DmitriyMX

Поделиться

37

Re: Вопросы по написанию плагинов

А где в документации список всех хуков и инфа по Action?

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

38

Re: Вопросы по написанию плагинов

Про Action тут есть немного: https://docs.google.com/document/d/1LYS … BQf_jplxfo

Русская документация Monstra. Правки приветствуются.

Сайт DmitriyMX

Поделиться

39

Re: Вопросы по написанию плагинов

нету по ссылке ничего. smile
впрочем, я просто внимание обратить хотел этим на упущение в доках сайта.

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

40

Re: Вопросы по написанию плагинов

о_О вау.... и правда ссылка тупанутая...
Вот вам, нормальная: http://goo.gl/A6OMu

Русская документация Monstra. Правки приветствуются.

Сайт DmitriyMX

Поделиться

41

Re: Вопросы по написанию плагинов

Возможно ли расширить функционал стандартных хелперов монстры

Поделиться

42

Re: Вопросы по написанию плагинов

Какие хелперы хотите расширять ?

Сайт Awilum

Поделиться

43

Re: Вопросы по написанию плагинов

Хелпер форм.
Я так понимаю сейчас можно создать хелпер form_ext и юзать его параллельно с хелпером form.
Возможно ли как нибудь расширить сам класс form чтобы не плодить хелперы.
Допустим, чтобы монстра сначала искала их в активном плагине, а если не находит, то загружает из /monstra/helpers/

Поделиться

44

Re: Вопросы по написанию плагинов

Можно сделать вот это "Зарегистрировать новый метод для Form Helper-a"

Form::macro('my_field', function() {
    return '<input type="awesome">';
});
echo Form::my_field();

Но для этого необходим php 5.3

UPD
для Form - добавил кастомные макросы: https://github.com/Awilum/monstra-cms/c … 63eee40376 - минимальная версия php 5.3 для них

Сайт Awilum

Поделиться

45

Re: Вопросы по написанию плагинов

Несколько советов по разработке плагинов.

1) Формы должны содержать спрятанное поле с токеном

<?php echo (Form::hidden('csrf', Security::token())); ?>

И этот токен нужно проверять при сабмите формы:

if (Request::post('my_form_submit')) {
    if (Security::check(Request::post('csrf'))) {
        // some code here...
    } else { die('csrf detected!'); }
}

2) Токены также необходимо вешать и на екшены. Например удаление записей или файлов.

В шаблоне ссылка вместе с токеном:

<?php echo Html::anchor(__('Delete', 'filesmanager'),
           'index.php?id=filesmanager&delete_file='.$file.'&path='.$path.'&token='.Security::token(),
           array('class' => 'btn btn-actions', 'onclick' => "return confirmDelete('".__('Delete file: :file', 'filesmanager', array(':file' => $file))."')"));
?>    

В контролере:

// some code here...
if(Request::get('action') == 'delete') {
   if (Security::check(Request::get('token'))) {
       // some code here...
   }
}
// some code here...

Сайт Awilum

Поделиться

46

Re: Вопросы по написанию плагинов

1. Javascript::add() - не подключает JS со стороннего сайта (тот же JQuery), я правильно понял?

не подключает.

2. в плагине jQuery идет подключение Action::add('theme_header', 'jQueryThemesHeaders');
но в шаблонной теме нет theme_header, есть только theme_footer. Это баг или так задумано? (в моем плагине удалось подключить скрипт только к theme_footer)

бага и там и там.

Сайт Awilum

Поделиться

47

Re: Вопросы по написанию плагинов

function foo($attributes, $content) {
    $color = (isset($attributes['color'])) ? $attributes['color'] : 'black';
    return '<span style="color:'.$color.'">'.$content.'</span>';
}

Shortcode::add('foo', 'foo');


{foo}test{/foo}

{foo color="red"}test{/foo}

обновил доку: http://monstra.org/documentation/shortcode-api

Сайт Awilum

Поделиться

48

Re: Вопросы по написанию плагинов

Возможно это старый код https://github.com/Awilum/monstra-cms/b … in.php#L66 который больше не нужен. Но помню что делал это для того что бы Pages::pageLoader() не срабатывал в админке так как в результате его выполнения в админке страницы отдавались со статусом 404.

В гостевой книге этого нету, так как там нету вот такого https://github.com/Awilum/monstra-cms/b … n.php#L127

по поводу плагина Pages я пресмотрю этот код еще раз. отпишусь вечером....

Сайт Awilum

Поделиться

49

Re: Вопросы по написанию плагинов

JINN, да нужно.
в main() в твоем случае если будет что типа https://github.com/Awilum/monstra-cms/b … n.php#L127 то не допустить это выполнить в админке.

if (BACKEND == false) {
 // тут только то что должно работать во фронтенде
}

p.s. уже думаю как это решить на стороне движка...

Сайт Awilum

Поделиться

50

Re: Вопросы по написанию плагинов

Плагины для Монстра делятся на два вида:

1) плагин "живущий своей жизнью". любой плагин, который выполняет какие либо действия не влияющие на фронтенд системы, а именно модуля Site.php

2) плагин компонент системы. любой плагин, который влияет на работу фронтенда системы, на модуль Site.php. Он влияет на отображаемый контент, заголовок, ключевые слова, описание, шаблон страницы...
Такой плагин должен наследовать Frontend "интерфейс" класс. https://github.com/Awilum/monstra-cms/b … s.php#L208

Пример:

class Sandbox extends Frontend {
       
}

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

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

тоже самое относится и к Backend https://github.com/Awilum/monstra-cms/b … s.php#L223

Сайт Awilum

Поделиться