Павел Гвоздь

Павел Гвоздь

С нами с 31 мая 2015; Место в рейтинге пользователей: #4
30 мая 2016, 13:46
0
Спасибо, готово! Была утрачена совместимость с ранними версия PHP, относительно 5.5. Обновил пакет на твоём сайте.

Я наверное первый бета-тестер)
Пакет тестировался на сайте заказчика пакета. Так что нет, ты не первый бета-тестер. Ты первый тестер с PHP 5.4. :)
30 мая 2016, 01:02
+2
Чтобы ufForm не мешал работать нативным модалкам Bootstrap, надо прописать это где-нибудь в шапке:
<script>
    jQuery.Modal = jQuery.Modal || true;
</script>

Надеюсь автор поправит этот неприятный момент в новой версии.
30 мая 2016, 00:49
3
+1
Итого вот:

В tpl.Tickets.comment.form вызываем форму загрузки файла:
{$_modx->runSnippet('!ufForm', [
    'class' => 'modUser',
    'list' => 'comment-' ~ $thread,
    'tplForm' => 'uf.form',
    'dropzone' => '{
        "maxFilesize": 2,
        "maxFiles": 5,
        "acceptedFiles": ".jpg, .jpeg, .gif, .png",
        "template": "edit"
    }',
])}

Важный момент, который ты почему-то не упомянул:
Чанк uf.form переписываем так, чтобы там не было тега form (заменяем его на div):
<div class="userfiles-form-wrapper">
    <div class="userfiles-form userfiles-dropzone" id="[[+propkey]]" data-clickable=".userfiles-form-clickable-[[+propkey]]" data-sorting="1">
        <div class="dz-message needsclick">[[%userfiles_msg_needsclick]]</div>
    </div>
    <a class="userfiles-form-clickable userfiles-form-clickable-[[+propkey]]">[[%userfiles_msg_select_files]]</a>
</div>
Не знаю, насколько это правильно, но работает. :)

В tpl.Tickets.comment.one.auth и tpl.Tickets.comment.one.guest прописываем вывод файлов комментария:
{$_modx->runSnippet('!pdoResources', [
    'class' => 'UserFile',
    'loadModels' => 'UserFiles',
    'limit' => 10,
    'tpl' => '@INLINE
        <div class="item pull-left">
            <a href="{$url}" rel="fancybox"><img src="{$thumb}" alt=""></a>
        </div>
    ',
    'leftJoin' => '{
        "Thumb": {
            "class": "UserFile",
            "on": "Thumb.parent = UserFile.id AND Thumb.properties LIKE \'%w\":120,\"h\":90%\'"
        }
    }',
    'select' => '{
        "UserFile": "url",
        "Thumb": "Thumb.url as thumb"
    }',
    'where' => '{
        "UserFile.class": "modUser",
        "UserFile.list": "comment-' ~ $id ~ '"
        
    }',
    'sortby' => '{"rank":"ASC"}',
])}

И плагин будет выглядеть так:
switch ($modx->event->name) {
    case 'OnCommentSave':
        if ($mode == 'new' && $modx->user->isAuthenticated($modx->context->key)) {
            $corePath = MODX_CORE_PATH.'components/userfiles/';
            if ($uf = $modx->getService('UserFiles', 'UserFiles', $corePath.'model/userfiles/', array('core_path' => $corePath))) {
                if ($files = $modx->getCollection('UserFile', array('parent' => $modx->user->id, 'list' => 'comment-'.$object->Thread->name))) {
                    foreach ($files as $file) {
                        $file->set('list', 'comment-'.$object->id);
                        $file->save();
                        
                        if ($children = $file->getMany('Children')) {
                            foreach ($children as $child) {
                                $child->remove();
                            }
                            $file->generateThumbnails();
                        }
                    }
                }
            }
        }
        break;
}

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

— Обновлено --

Данная реализация разбивает файлы по группам comment-[[+id]], что позволяет более проще получить к ним доступ в бекенде на странице UserFiles или на вкладке UserFiles страницы редактирования юзера.
29 мая 2016, 23:55
+1
У тебя в плагине ошибка.
Ты получаешь все файлы юзера по его user_id, соответствующему свойству parent:
$files = $modx->getCollection('UserFile', array('parent' => $user_id));
Потом, ты у каждого файла перезаписываешь его parent, то бишь user_id, на id нового комментария:
$file->set('parent', $id);
Почему это плохо? Потому что юзер, чей id совпадает с id нового комментария, который ты напишешь, будет иметь доступ к тем фоткам, которые были добавлены в этот комментарий тобой. А ты доступа к этим фоткам уже не имеешь, по сути, ибо parent (читай user_id) файлов, которые были тобой загружены, уже не соответствует твоему user_id.
29 мая 2016, 21:38
+2
Я для себя понимаю так:
Это тип, к которому будет приведено значение полученное из базы, средствами xPDO. То бишь dbtype может быть text, а phptype — и string, и json.

Я читаю здесь — github.com/modxcms/revolution/blob/89c79f7ae886184dd4136cfe09663bf5c019ee7d/core/model/schema/modx.mysql.schema.xml
28 мая 2016, 22:34
0
Я не тестировал, но вряд ли.
23 мая 2016, 18:46
0
Скорее всего это из-за какого-то редактора, который навешивается на оригинальное поле контента. Я не тестировал пакет таким образом.
23 мая 2016, 15:48
0
В настройках контекстов погляди.
23 мая 2016, 15:45
0
Или может быть есть какое то решение что бы ограничить владельца сайта не натворить что нибудь в функционале сайта через админскую часть!
Этот компонент позволит сделать то, что нужно — modstore.pro/packages/users/modaccessmanager
22 мая 2016, 19:09
0
Прекрасно! А старый способ подключения колбеков останется?
16 мая 2016, 13:26
+1
Если я не ошибаюсь, то уже работает тег {ignore}. По крайней мере на крайних версиях pdoTools мне удавалось его использовать.
14 мая 2016, 14:10
+1
От этого безопасность страдает…
05 мая 2016, 23:33
0
А что не так с ExtJS?
05 мая 2016, 21:07
0
Поиграйся с сист. настройкой cache_resource, может поможет…
04 мая 2016, 16:59
0
Спасибо, я посмотрю, что можно с этим сделать. Что-то я не заметил этого раньше. А жаль.
27 апреля 2016, 17:51
0
Нет, такого нет. Это делается самостоятельно.
27 апреля 2016, 17:37
0
Нет. У меня загруз «по полной», что называется.
27 апреля 2016, 10:07
+1
Создашь плагин и отмечаешь галочками события, по которым он будет срабатывать.