Всего 125 991 комментарий

Giant Dad
09 ноября 2021, 17:34
0
Спасибо за совет. Я попробую
Giant Dad
09 ноября 2021, 17:34
0
А migx для того, чтобы можно было добавлять и удалять элементы, каждый из которых содержал бы в себе кол-во баллов и дату сгорания. Т.е. кол-во полей должно динамически меняться
iWatchYouFromAfar
09 ноября 2021, 17:30
0
А зачем вам для этого migx? Вот пример добавление в раздел пользователя таба, внутри которой можете рендерить что угодно и работать с этими полями штатно, как с другими полями пользователя.

Роман
09 ноября 2021, 17:24
0

Что-то типа того.
Посмотрите, тут, может натолкнет на мысль.
Часть кода, что быстро написал:
Ext.override(MODx.panel.User,{
    getParentFields: MODx.panel.User.prototype.getFields,
    
    getFields: function(config) {
        var parentFields = this.getParentFields.call(this,config);
		parentFields.push({
			id: 'my-custom-tab'
			,title: 'Доступ к курсам'
			,layout: 'form'
			,defaults: { border: false ,autoHeight: true }
			,hideMode: 'offsets'
			,items: [{
				html: '<p>Включение и отключение доступа пользователя к видео-урокам</p>'
				,xtype: 'modx-description'
			},
			{
				xtype: 'textfield'
				,fieldLabel: 'Кол-во баллов'
				,name: 'ball'
				,width: 300
			
			},
			{
			xtype: 'panel',
			cls: 'container',
			items: [
				{
					xtype: 'grid',
					columns: [ // Добавляем ширину и заголовок столбца
						{dataIndex: 'date', width: 150, header: 'Дата'},
						{dataIndex: 'count', width: 150, header: 'Кол-во'}
					],
					autoHeight: true, // Высота таблицы вычисляется автоматически
					viewConfig: {
						forceFit: true, // Растягиваем таблицу на всю ширину
						scrollOffset: 0 // Убираем вертикальный скролл (у нас же автовысота)
					},
					store: new Ext.data.ArrayStore({
						fields: ['date','count'],
						data: [
							['2021-11-09', '-7'],
							['2021-11-09', '-3'],
							['2021-11-09', '+10'],
						]
					})
				}]
			}]
		});

        return parentFields;
    }
});
iWatchYouFromAfar
09 ноября 2021, 17:24
0
Не буду тратить время, пытаясь вслепую понять, почему ваш сайт попал в 00.01% сайтов, на котором сниппет не работает.

Главное что вы решили вашу проблему. А как, и чем это аукнеться, это уже вопрос для более глубоких тем и обсуждений.
Giant Dad
09 ноября 2021, 16:41
0
Вообще, я хочу сделать в админке баллы для пользователя магазина. Знаю, что есть модуль для MiniShop2, но проблема в том, что на сайте Shopkeeper. Поэтому решил реализовать сам, пусть и костыльно. Не придумал ничего лучше, чем попробовать реализовать доп. вкладку у пользователя, на которой было бы поле migx, в которое можно было бы заносить элементы, в которых было бы записано количество баллов и дата их сгорания.
Роман
09 ноября 2021, 16:30
0
Нет, не пробовал. А что вы хотите сделать?
Поищите на ютубе: «Свои xtype в ExtJS».
Андрей
09 ноября 2021, 15:52
0
Сравнивай с оригинальным чанком, проверяй и делай по аналогии — chunk.comment_one_auth.tpl
Giant Dad
09 ноября 2021, 15:36
0
Спасибо! Это помогло. А как в таком случае выводить кастомное поле на вкладке? А Вам не приходилось добавлять в профиль в админке поле migx? Не можете подсказать как это можно сделать?
Игорь
09 ноября 2021, 15:03
0
1. @iWatchYouFromAfar, вы правы — мне следовало написать, что предложенный вами вариант решает задачу формирования семантически правильных ХК («хлебных крошек») в 99,9% случаях (специально проверил на своих и клиентских сайтах). Спасибо, что выложили рабочий код, но заметки на вашем сайте я читаю достаточно внимательно (давно уже в закладках).

Тем не менее, предложенный вами вариант формирования ХК на одном сайте «не сработал» (повторно перепроверял … ни в какую… ). Спасибо за предложенный вами вариант замены
href="{$_modx->makeUrl(1)}"
на
href="{$_modx->makeUrl($_modx->config['site_start’])}"
но в этом случае получаю ошибку
«Unexpected token 'site_start' in expression in pdoCrumbs»
Буду благодарен за совет, как от нее избавится.

2. По поводу того, что «на всех нормальных сайтах в ХК просто напросто нет текущего элемента» — не соглашусь. Например, на многих «нормальных» сайтах установлен SeoFilter, в котором «стандартный функционал заточен под чанк tpl.SeoFilter.crumbs.current, который идёт в комплекте. Для тех, кто использует pdoCrumbs, достаточно указать параметр в вызове сниппета: &tplCurrent=`tpl.SeoFilter.crumbs.current`»

Не стоит забывать, что уровень технических знаний у нас всех разный и кто-то (как, например, я) воспользуется документацией SeoFilter. Правда, чтобы добиться семантически правильных ХК, мне пришлось изменить tpl.SeoFilter.crumbs.current

<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="breadcrumb-item sf_crumb{if !$sflink} active{/if}" data-idx="{$idx}" data-separator="{$outputSeparator|htmlentities}">
    {if $sflink}
        <a title="{$menutitle}" itemprop="item" href="{$link}"><span itemprop="name">{$menutitle}</span>
        <meta itemprop="position" content="{$idx}"></a>
    {else}
        <span itemprop="name">{$menutitle}</span>
        <meta itemprop="position" content="{$idx}"
    {/if}
</li>{if $sflink}{$outputSeparator}<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="breadcrumb-item active sf_crumbs" data-idx="{++$idx}">
<span itemprop="name" class="sf_link">{$sflink}</span>
<meta itemprop="position" content="{$idx}"
    {*закомментированный ниже вариант позволит возвращать ссылку *}
    {*{set $page_link = $link}
    {foreach ['.html','.php'] as $suffix}
        {set $msufx = '*'~$suffix}
        {if $page_link | match : $msufx}
            {set $r_mask = '/'~$suffix~'$/'}
            {set $page_link = ($page_link | ereplace: $r_mask:'/')}
            {break}
        {/if}
    {/foreach}
    <a href="{$page_link}{$sfurl}" class="sf_link">{$sflink}</a>
    *}
</li>
{/if}
Возможно @Евгений Шеронов или кто-то из «старших товарищей» исправит и этот «говнокод» — к сожалению, других «правильных» вариантов мне найти не удалось.
Дмитрий Беляков
09 ноября 2021, 14:03
0
Да, кнопка появилась с комментарий ответный в панель залетает, но почему не выводиться в дереве на странице
Роман
09 ноября 2021, 13:37
0
Попробуй вставить: после
<div class="comment-content">[[+text]]</div>
<div class="comment-reply">
        <a href="#" class="reply">ответить</a>
</div>
Дмитрий Беляков
09 ноября 2021, 13:21
0
А подробнее?
вот мой чанк самого комментария, куда вставить
<div class="comment-item ticket-comment" id="comment-[[+id]]" data-parent="[[+parent]]" data-newparent="[[+new_parent]]" data-id="[[+id]]">
<div class="row no-margin ticket-comment-body[[+bad]]">
<div class="col-lg-1 col-xs-12 col-sm-2 no-margin left">
<div class="avatar">
<img src="[[+avatar]]" alt="avatar">
</div>
</div>
<div class="col-xs-12 col-lg-11 col-sm-10 no-margin-right right">
<div class="comment-body">
<div class="meta-info">
<header class="row no-margin">
<div class="pull-left ticket-comment-rating inactive">
<h4 class="author"><a href="[[+url]]#comment-[[+id]]">[[+fullname]]</a></h4>
<span class="date">- [[+date_ago]]</span>
<span class="likes plus"><span class="likes-count rating[[+rating_positive]][[+rating_negative]]">[[+rating]]</span>
</span>
[[+has_parent]]
<span class="ticket-comment-down"><a href="#" data-child="">↓</a></span>
</div>
</header>
</div>
<div class="comment-content">[[+text]]</div>
<div class="clients" style="display:none;">[[+fullname]]</div>
</div>
</div>
</div>

</div>
<!--tickets_rating_positive  positive-->
<!--tickets_rating_negative  negative-->
<!--tickets_has_parent <span class="ticket-comment-up"><a href="[[+url]]#comment-[[+parent]]" data-id="[[+id]]" data-parent="[[+parent]]">↑</a></span>-->
Василий
09 ноября 2021, 12:02
0
Тоже столкнулся с отправкой через smtp, для меня решением было добавление сертификата ssl в параметры PHPMailer:
$mail->SMTPOptions = array(
        'ssl' => [
            'verify_peer' => true,
            'verify_depth' => 3,
            'allow_self_signed' => true,
            'peer_name' => 'smtp.yandex.ru',
            'cafile' => $_SERVER['DOCUMENT_ROOT'].'/PHPMailer/cacert.pem',
        ],
    );
А сам сертификат благополучно утащил из папки /core/model/aws/lib/requestcore/, но можно получить и свой, но не стал заморачиваться пока. Тестил на своем сниппете, в modx пока не пробовал добавлять, но думаю, что там проблема решится, т.к. PHPMailer той же версии брал, что и в modx стоит.
Алексей
09 ноября 2021, 11:33
0
Добрый день!
Вот, мне кажется ваш вариант.
Кнопка Показать больше/Показать меньше
Роман
09 ноября 2021, 11:12
0
Я делал так и ставил событие на OnUserFormRender
if ($modx->event->name != 'OnUserFormRender') return '';
$modx->controller->addLastJavascript('/assets/components/customModx/js/mgr/user/tab.js');

Файл: /assets/components/customModx/js/mgr/user/tab.js
Ext.override(MODx.panel.User,{
    getParentFields: MODx.panel.User.prototype.getFields,
    getFields: function(config) {
        var parentFields = this.getParentFields.call(this,config);
		parentFields.push({
			id: 'my-custom-tab'
			,title: 'Доступ к курсам'
			,layout: 'form'
			,defaults: { border: false ,autoHeight: true }
			,hideMode: 'offsets'
			,items: [{
				html: '<p>Включение и отключение доступа пользователя к видео-урокам</p>'
				,xtype: 'modx-description'
			},{
				//Тут остальные элементы
			}]
		});

        return parentFields;
    }
});
alex
09 ноября 2021, 09:00
0
Можно все это через js сделать. Отображаете первое предложение, остальное прячете в скрытый блок, при клике разворачиваете его.
Сергей Лим
09 ноября 2021, 07:48
0
Пока решил закомментированием проверки в ms2form.class.php

/*if (!$this->authenticated || empty($this->config['allowFiles'])) {
return $this->error('ms2form_err_access_denied');
}*/