Всего 123 717 комментариев

Николай Савин
08 августа 2024, 13:45
0
А как связаны между собой крон и сниппет?

Крон дергает PHP файлы обычно. А сниппет — это запись в базе данных — совсем другая сущность.
Показал бы уже полную запись в крон менеджере
Konstantin
08 августа 2024, 08:35
0
Профиксите пожалуйста баг — при загрузке файлов валидатор ругается на файлы у которых в названии присутствуют точки считая что после них должно быть сразу расширение, не найдя нужного расширения после них выдает ошибку — что может смутить человека который отправляет файлы с фронта
Дмитрий
07 августа 2024, 21:24
0
31 июля 2024 разработчики обновили панель, после чего у меня перестал работать сайт. Пришлось поправить конфиг. Актуальный конфиг теперь такой:

server {
    listen 10.10.10.10:80;
    server_name my-site.ru www.my-site.ru;
    return 301 https://my-site.ru$request_uri;
}

server {
    listen 10.10.10.10:443 ssl http2;
    server_name my-site.ru www.my-site.ru;

    # Изменить имя сертификата, если создан другой сертификат (нужно выпустить wildcard, для корректной работы переадресации с www)
    ssl_certificate     /var/www/httpd-cert/my-site.ru_2023-06-27-00-03_12.crt;
    ssl_certificate_key /var/www/httpd-cert/my-site.ru_2023-06-27-00-03_12.key;

    charset utf-8;

    gzip on;
    gzip_min_length 1000;
    gzip_proxied any;
    gzip_types gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    gzip_comp_level 5;

    set $root_path /var/www/my_site_user/data/www/my-site.ru;
    root $root_path;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    
    location / {
    	root $root_path;
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?q=$1 last;
        }
    }

    # Редирект с www на адрес без www
    if ($host ~* '^www\.(.*)$') {
        return 301 $scheme://$1$request_uri;
    }

    # Редирект с index.php на корень сайта:
    if ($request_uri ~* '^/index.php$') {
        return 301 /;
    }

    # Убираем повторяющиеся слеши из адреса
    # Вариант, работающий только при merge_slashes = on
    if ($request_uri ~ ^[^?]*//) {
        rewrite ^ $uri permanent;
    }
    # Универсальный вариант
    #if ($request_uri ~ ^(?P<left>[^?]*?)//+(?P<right>[^?]*)) {
    #    rewrite ^ $left/$right permanent;
    #}

    # Удаление слеша в конце URL
    # Если изменили адрес админки MODX, то нужно указать его в условии этого правила, иначе будет бесконечный редирект.
    #if ($request_uri ~ ".*/$") {
    #    rewrite ^/((?!core|connectors|manager|setup).*)/$ /$1 permanent;
    #}

    # Добавление слеша в конце URL
    #if ($request_uri !~* "(?:\?)|(?:\.\w+$)|(?:\/$)") {
    #    return 301 $request_uri/;
    #}

    # Запрет для всех для при обращении к ядру MODx из браузера
	location ~ ^/core/.* {
	  deny all;
	  return 403;
	}
    
    location ~ ^/config.core.php {
	  return 404;
	}

	location @rewrite {
	  rewrite ^/(.*)$ /index.php?q=$1;
	}

    location ~ \.php$ {
        # Базовая авторизация в служебные каталоги
        location ~* ^/(manager|connectors)/ {
            auth_basic "Restricted Access";
            auth_basic_user_file /var/www/my_site_user/data/.htpasswd;
            try_files $uri $uri/ @rewrite;
            location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/my-site.ru.sock;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;
            }
        }
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/my-site.ru.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf|ico|7z|doc|docx|map|ogg|otf|pdf|ttf|tif|txt|wav|webp|woff|woff2|xls|xlsx|xml)$ {
        try_files $uri @rewrite;
        access_log off;
	    expires 30d;
	    break;
    }

    location @fallback {
        fastcgi_pass unix:/var/run/my-site.ru.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

	location ~ /\.ht {
	  deny all;
	}
    
    include "/etc/nginx/fastpanel2-sites/my_site_user/my-site.ru.includes";
    include /etc/nginx/fastpanel2-includes/*.conf;

    error_log /var/www/my_site_user/data/logs/my-site.ru-frontend.error.log;
    access_log /var/www/my_site_user/data/logs/my-site.ru-frontend.access.log;
}
Роман
07 августа 2024, 20:55
0
Это предположение. Насчёт пути — указываю напрямую название сниппета, пару раз перепроверял — путь верный. Если другие, более лёгкие сниппеты, запускаются, у меня только этот вариант
Prihod
07 августа 2024, 20:42
+1
При добавлении или удалении в избранное сообщений никаких нет так как по индикатору и так все понятно и нет смысла лишний раз перегружать интерфейс лишней инфой, если они тебе нужны то ты сам должен их показывать

window.addEventListener('DOMContentLoaded', e => {
myFavorites.on('add', (self) => {
     self.notifier.success("add success");
  });
myFavorites.on('remove', (self) => {
     self.notifier.success("remove success");
  });
});
Артур Шевченко
07 августа 2024, 19:41
0
А как ты понял что именно не переваривает, а не скажем, просто не запускает, потому что путь не к скрипту неверный?
Sergey (Sentinel)
07 августа 2024, 16:54
0
class MyNotifier {
  success(msg) {
      iziToast.success({
          title: 'Success',
          message: msg,
      });
  }
  error(msg) {
      iziToast.error({
          title: 'Error',
          message: msg,
      });
  }
}

window.addEventListener('DOMContentLoaded', e => {
  myFavorites.on('init', (self) => {
      const notifier = new MyNotifier();
      self.setNotifier(notifier);
  });
});
и так тоже не работает
Sergey (Sentinel)
07 августа 2024, 13:39
0
Понял, спасибо.
Так же на тесте не работают уведомления из коробки ms2
s34437.h5.modhost.pro/index.php?id=3
Николай Савин
07 августа 2024, 10:26
0
Конечно же он под тройку только. Там совершенно другая архитектура. Даже модели по другому именуются
Konstantin
07 августа 2024, 08:38
0
А вот это уже дело говорите. Добавил в корневой htaccess эти правила и закрыл core с глаз долой:

# Закрыть доступ к core и другим чувствительным файлам/директориям
RewriteCond %{REQUEST_URI} ^/(core|config\.core\.php|_build|_gitify|_backup) [NC]
RewriteRule ^.*$ - [F,L]
# Установить пользовательскую страницу ошибки для 403
ErrorDocument 403 /error401
Arahort
07 августа 2024, 03:21
0
Спасибо что не забрасываете, особенно за такие скромные суммы.
Стоит надеяться что ms3 будет работать на Modx 2.x? Или он чисто под 3ку?
Wassi Wassinen
07 августа 2024, 00:28
+6
По Яндекс Метрике — у главной страницы Modx.pro восемь тысяч посетителей за месяц. Если они будут чаще видеть кнопку\блок доната, то вероятность набрать больше денег, скорее всего, повысится. :)
Wassi Wassinen
07 августа 2024, 00:24
+7
Что-то вроде этого (макет). :)

Wassi Wassinen
07 августа 2024, 00:09
+3
Смысл в том, чтобы топовые донаты всегда были на виду у сообщества. Это основной принцип при сборе. :)
Собраны маленькие суммы, в том числе, потому, что информацию о краудфаундинге не найти. Точнее, найти можно, но это нужно специально стараться искать. :)

Как написал Иван ниже — хотя бы блок с ссылками добавьте в шапку сайта. Или строку с баннером\кнопкой. Дизайн могу наверстать.
Артур Шевченко
06 августа 2024, 23:31
1
0
создатели движка настоятельно рекомендуют это сделать
Что мешает сделать так же (см. под заголовком Protect the Core and Other Locations) со второй версией?

Я не отрицаю наличие проблемы, просто не знаю как её решить со стороны компонента.
Ivan K.
06 августа 2024, 23:23
+3
Спасибо вам за работу. Очень жду финальной версии.
Поместите хотя бы кнопку доната в верхнее меню, и сделайте ее жирной и красной))
Я например, донатил бы чаще, а не только, когда вижу хорошие новости)
а то 46 000 руб. это уж совсем скромный результат.
Николай Савин
06 августа 2024, 23:01
0
Честно, я не вижу в этом большого смысла.
Крупных мотивирующих сумм собрать не получится — у нас не так много народу. А возиться за идею вроде как некому. Может быть после минишопа.
Wassi Wassinen
06 августа 2024, 22:59
+2
Николай, прежде всего — вы молодцы.
Что хотелось бы предложить ( не уверен, что предложение по адресу).

Добавьте на Modx.pro раздел «Краудфандинг». Или что-то схожее по названию и смыслу. Логика следующая — в этот раздел можно будет добавить тикеты о краудфандинге (сборе) на тот или иной компонент и доработки. За сбор можно будет проголосовать (поставив + к рейтингу) и это будет поднимать крауды в топе. По сути, это ещё один раздел с стандартными тикетами в которых будут ссылки на донаты. Эти тикеты всегда будут на виду и отранжированы по рейтингу.

В шапке главной странице добавьте блок с выводом трёх плашек-ссылок на краудфандинги. Краудфандинг на MS3 — чтобы его постоянно было видно на главной странице + ещё пару топовых по рейтингу сборов. Или он сам в топ вылезет (уверен).

Таким образом:
1. Будет больше внимания привлечено к донатам на развитие дополнений MODx
2. Донаты всегда будут на виду (сейчас информацию про них найти довольно сложно)
3. Это хорошая инициатива для развития других компонентов

Благодарю за внимание.
Алексей
06 августа 2024, 22:45
0
Все решил, не проследил что исполняющий файл создан от другого пользователя, у кого проблемы с cron, проверяйте права и пользователя.
Файл cron:
<?php
    define('MODX_API_MODE', true);
    require 'Полный пусть до файла index.php в корне';
    $modx->getService('error', 'error.modError');
    $modx->setLogLevel(modX::LOG_LEVEL_ERROR);
    
    $corePath = $modx->getOption('sync_core_path', null,
	$modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/sync/');
	$Sync = $modx->getService('sync');

	$params = array(
	'service'   => 'moysklad',
	'action'    => 'mgr/mscategory/sync',
	'sync_step' => 'sync_init',
	);

	$response = $Sync->curlExec($params);
Prihod
06 августа 2024, 19:55
0
Ну тебе нужно перед показом окна делать самому AJAX запрос на сайт что бы подтянуть инфу с списком избранного и добавлять его в модальное окно после чего показывать. Из коробки такого функционала нет.