Редактор PHP с поддержкой LS

Есть еще разработчки? Подскажите пожалуйста, а каким редактором PHP вы пользуетесь, чтобы нормально работало перемещение по коду?

те чтобы в функции

public function GetUsersByDateRegister($iLimit=20)
    {
        if (false === ($data = $this->Cache_Get("user_date_register_{$iLimit}")))
        {
            $data = $this->oMapper->GetUsersByDateRegister($iLimit);
            $this->Cache_Set($data, "user_date_register_{$iLimit}", array("user_new"), 60 * 60 * 24 * 3);
        }

        $data = $this->GetUsersAdditionalData($data);
        return $data;
    }


можно было кликнуть по Cache_Get и попасть в нужное место?

Плагин Компании (LS 1.0.3) + php 7.4 - "лечение" бага при редактировании компании

Доброго времени!

В связке LS 1.0.3 + плагин Компании (от gran-а) столкнулся с невозможностью редактирования данных у некоторых компаний (брендирование, виджеты и т.п.).
Также на станице редактирования компании появлялась ошибка: Warning: Illegal string offset in...

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

В файле /plugins/company/classes/modules/company/entity/Company.entity.class.php находим функцию protected function extractPrefs и меняем её содержимое на:
protected function extractPrefs () {
    if (is_null($this->aPrefs)) {
        $aFixPrefs = preg_replace_callback ( '!s:(\d+):"(.*?)";!s', function ($match) {
            return ($match[1] == strlen($match[2])) ? $match[0] : 's:' . strlen($match[2]) . ':"' . $match[2] . '";';
        }, $this->getPrefs() );
        $aPrefs = unserialize($aFixPrefs);
        $this->aPrefs = is_array($aPrefs) ? $aPrefs : array();
    }
}


P.S.: для решения воспользовался этой информацией

Помогите установить LS

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

Как не потерять текст при написании топика



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

Чтобы избежать этого, мы можем выводить предупреждение по событию beforeunload, т.е. перед тем как пользователь покидает страницу. Только перед этим проверим были ли изменения в полях ввода.

Как реализовать?
Необходимо на страницах добавления и редактирования топика добавить скрипт. На мой взгляд проще всего это сделать через php-хук движка:
Читать дальше →

Нужен контакт разработчика плагина "Медали"

Здравствуйте! Очень нужны какие-то актуальные контакты разработчика плагина «Медали и достижения (User medals)» catalog.livestreetcms.com/addon/view/134/, он же PSNet. Писал ему тут в личку, на все найденные контакты но все безрезультатно. Очень бы хотел приобрести вышеназванный плагин, но купить в каталоге, конечно же, невозможно. Может кто-то поможет связаться с разработчиком?

"Чудом" удалось залогиниться (проблема логина решена)

Друзья, товарисчи!

Уже недели 3-4 на этот сайт практически невозможно залогиниться.
Сейчас каким-то чудом залогинился через Yandex браузер. Пользуясь случаем, пишу этот топик.

Большая просьба ко всем — у кого есть проблемы с логином, отпишитесь pls в этом тикете

Upd (23.06.2021)

В Chrome v91 убрали флаг same-site-by-default-cookies
Но можно запустить Chrome с командной строки.
Для Win10:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-features=SameSiteByDefaultCookies
Для OSX:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --disable-features=SameSiteByDefaultCookies

Upd (25.02.2021)
Вобщем выяснил наконец причину!

Дело в том, что начиная с 80-й версии chrome-based браузеров появилась защита от межсайстовой передачи куков (межсайтовых POST-запросов). А на LS сейчас именно такая система используется: passport.livestreetcms.com редиректит на livestreet.ru, передавая куки

«Вылечить» можно так:
1. Заходим по адресу chrome://flags/#same-site-by-default-cookies
2. Устанавливаем для свойства SameSite by default cookies значение Disabled
3. Перезапускаем браузер и все работает

Иными славами для файлов (в т.ч. куков) добавлено новое свойство: SameSite. У которого возможно 3 значения:
SameSite=Strict — куки передаются только в пределах одного сайта
SameSite=Lax (именно такое значение задается кукам по дефолту, если оно не задано явно) — куки передаются между сайтами только в пределах одного домена
SameSite=None — ограничения на передачу куков отсутствуют

Подробнее здесь и здесь.

Глобально решить проблему можно, задав для куков авторизации свойство SameSite со значением None (SameSite=None; Secure). И при этом необходимо чтобы и livestreet.ru также был на https.

Сделать это можно примерно так:
Для php < 7.3 (через установку заголовков):
header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');
Для php ≥ 7.3:
setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);

Или поставить примерно такую либу.

Но это может сделать только Макс, если захочет ;)

Решение — кросс-пост с тикета на github

Исправление позиции на странице после подгрузки ajax-ом в Chrome

В браузере Chrome начиная с v56 появилась т.н. функция Scroll Anchoring, которая включена по умолчанию.

В результате на всех Chrome-based браузерах на странице с подгрузкой контента (например в Активности) после подгрузки скролл уходит вниз страницы. и подгружаемый контент «уходит» вверх, а не появляется внизу как положено. В итоге теряется смысл этой фичи и чтобы увидеть подгруженный контент, нужно скроллить вверх вручную.

Этот баг воспроизводится и на этом сайте (см. страницу Активность). В Firefox все работает как надо.

Решение:
Читать дальше →

Lazy Loading на самом деле не совсем Lazy

На сайте подключена библиотека для ленивой загрузки изображений (Lazy Loading).
Таких js-библиотек достаточное количество на github-е. Вот одна из популярных.
Как правило, для задействования либы требуется:
a) — наличие у тега img определенного класса
b) — наличие у тега img атрибута data-original (или data-src) c указанием ссылки на изображения.
Примерно так:
<img data-original="site.com/uploads/.../img.jpg"/>

Атрибут src может быть не задан вовсе, либо в нем должна быть ссылка на «заглушку».
Чтобы не «ковырять» редактор и/или текстовый парсер было решено сделать в js так:
$('#content .topic-type-topic img').each(function () {
    $(this).addClass('lazy');
    $(this).attr('data-original', $(this).attr('src'));
    $(this).removeAttr('src');
});

$("img.lazy").lazyload({
    effect: "fadeIn"
});

После этого все работает, картинки подгружаются при скролле, по крайней мере визуально.

Недавно заглянул в консоль и увидел, что картинки при загрузке страницы все равно загружаются все разом, а эффект ленивой подгрузки лишь визуальный, т.к. никакой экономии трафика не происходит. Причина загрузки всех изображений в том, что обработка атрибутов тега img происходит ПОСЛЕ загрузки дерева DOM, в частности после загрузки всех картинок и jQuery.

В идеале конечно обработать img в самом движке — добавить правила Jevix, подправить редактор и/или текстовый парсер, затем все имеющиеся топики прогнать через все это.
Можно ли обработать тег img на лету до загрузки страницы? (через модуль Viewer?)

Гугл предложил еще вариант — заменить js-обработку тега img с jQuery на чистый JavaScript и вставить её в head. Кто знает как это сделать — прошу помочь, а я протестирую этот вариант.