Задать вопрос
  • Как сделать доступность не только по табу?

    @ksnk
    Вообще-то мы НЕ МОЖЕМ двигаться по тексту-заголовкам стрелками. Стрелки по умолчанию работают как скроллер страницы. Для этого, вероятно, кто уже навесил на стрелки-заголовки обработчики, которые передвигают видимый параграф-заголовок в окно видимости. Вот там и следует навесить дополнительное состояние на параграф.
    Ну, в крайнем случае - все видимые в данный момент параграфы-заголовки по интервалу отмечать...
  • Как отловить удаление сообщение в телеграм боте?

    @ksnk
    Leadmagneet, Нужно отправить в точности такое сообщение, вместе с кнопками, естественно.
    Вероятно, editMessageReplyMarkup тоже будет работать, но мне оказалось удобнее все сообщение посылать.

    Вообще - бот в каждый момент времени должен общатся с юзером единственным сообщением. Ну, я так вижу :) Как иллюстрация - BotFather. Просто редактировать это сообщение, выводя все нужные кнопки для реакции юзера. Все остальные сообщения можно считать уже посланными и несущественными.
  • Как отловить удаление сообщение в телеграм боте?

    @ksnk
    Сделай edit этому сообщению. С тем же самым содержимым. Придет сообщение о том, что сообщение нельзя отредактировать, так как оно точно такое же.
    Удаленные сообщения имеют другое сообщение об ошибке.
    А зачем часто проверять удалено ли сообщение ? Нужно верить, что оно есть ) И проверять сообщение об ошибке редактирования.
  • Логика для скрытия элементов в списке при недостаточной ширины контейнера?

    @ksnk
    А зачем скрьптом скрывать ? Контейнеру поставь overflow:hidden и он сам скроет все, что не влезло.
    Ну, ежели нужно таки скриптом, то тут может помочь getBoundingClientRect. Возвращает объект с границами элемента, относительно парента. ПРобежаться по всем чилдам и тех, у которых right больше ширины парента - скрыть. Вот только если скрыть (display:none), то будет перерисовываться контейнер и кто его знает, как расположатся после этого оставшиеся видимые элементы. Лучше им делать visibility: hidden, вместе с контейнерным overflow:hidden. так они будут свое место продолжать занимать, но не высовывать свои невлезающие кусочки
  • Как валидировать кнопку у формы при незаполненном инпуте?

    @ksnk
    svm2001, Там где я возвращаю true в обработчике сабмита, можно поставить свою обработку и вернуть false.
  • Как валидировать кнопку у формы при незаполненном инпуте?

    @ksnk
    svm2001, Немного переделал. Кнопка назад теперь button, а не submit и ее обработчик на строчку больше, зато теперь нет float:left и в форме остается только один submit.
  • Как валидировать кнопку у формы при незаполненном инпуте?

    @ksnk
    Зачем несколько кнопок "Отправить" ? Отправлять форму нужно при наличии всех 3-х непустых инпута или нажатых радиобатонов. Логику отображения формы нужно поместить в onsubmit формы.
    Кнопку Next дизейблить только при переходе на форму, которая заполнена не полностью, чтобы не конфликтовать с кнопкой Prev.
    Ну и снимать дизейбол в обработчике "onkeypress" каждого инпута и onchange радиобатонов
  • Как правильно создать глобальный стейт чего угодно на чистом js?

    @ksnk
    let preloaderIsDone = ()=>{
    alert('k');
    }
    ...
    // везде вместо preloaderIsDone = true;
    preloaderIsDone();

    ?
  • Есть ли способ проверить на php, зашли на страницу напрямую или с внутренней страницы сайта?

    @ksnk
    С сессией не все так однозначно. Например накликал юзер с поиска гугла несколько страниц сайта. Однозначно - внешняя ссылка. По первой странице будет - нет сессии/нет записи в сессии === пришли извне. А для других страниц не получится ли, что страницы "с внутренних страниц" ?
  • Как забирать данные из Google Таблицы и вставлять их на сайт в поля?

    @ksnk
    csv читать умешь?
    Если чуть поменять адрес таблицы, расшаренной по ссылке, чтобы получилось вот так
    https://docs.google.com/spreadsheets/d/XXXX/export... , вместо XXXX - длинный код документа то получится тот самый csv
  • Почему не работает click на input text поле?

    @ksnk
    $('#name-display',this) в этом случае будет искать элемент внутри input. Что.то мне кажется, что ничего такого там нет
  • Как получить реальное временя в js?

    @ksnk
    По видимому, топик стартеру нужно узнать "реальное" время в месте пребывания клиента,
    а не то, которое установлено у него на устройстве
    . Технически, задачу можно решать осматривая сетевое окружение и спрашивая у найденных устройств локальное время. Но это выходит за рамки возможностей браузерного JS.
  • POST работает как GET, почему?

    @ksnk
    Указание заголовка недостаточно.
    curl_setopt($ch, CURLOPT_POST, 1);
  • Можно ли как то сделать так, что бы каждое четное число выводилось через секунду?

    @ksnk
    Дмитрий, функция myVivod получает значения, введенные пользователем. По идее - лучше бы использовать функцию parseInt для получения значения вместо магии, так как сейчас можно ввести нецелое число(например 1.5) в первое поле ввода и получить не совсем ожидаемый результат.
    строка if(1===(first&1)) first+=1; всего лишь проверяет, что first нечетно и делает его четным.
    xxx&1 - бинарная операция, получающая 1 если число нечетное и 0 если четное. === - это модная сейчас операция сравнения, которую меня заставил поставить корректор синтаксиса. В этом случае в точности ==.
    После чего, через 1 сек выполняется функция next. 3 и следующие параметры setTimeout передаются как параметры в функцию next.
    next дописывает четное число в нужное нам поле вывода и, если не достигли еще верхней границы, вызывает себя с задержкой в секунду для вывода следующего четного (+2) числа.
  • Почему может зависать сайт на PHP до закрытия всех вкладок?

    @ksnk
    На сервере что-то такое делается, что скрипт продолжает выполняться. Если так и должно быть - нужно читать ответы ниже и закрывать сессии, если так не должно быть - нужно искать почему не заканчиваются скрипты
  • Как запустить бэк локально?

    @ksnk
    Ты не прошел :)
    Ну а если без шуток, то вариантов довольно много. Можно попытаться разобраться с бэком и адаптировать его для запуска в OpenServer, вдруг это возможно... Можно прикупить на алишке недорогой миникомп, прикрутить его к обратной стороне монитора и поставить туда убунту. Ну или что посоветуют разрабы. Будешь разворачивать там докер и вообще привыкать...
    Можно, наконец, спросить разработчиков.
    Ну и можно поискать старенький Докер тулбокс и попытаться его поставить. Только не надо никому говорить, что все откомпилированные тулбоксы разом исчезли из интернета.
  • Как сделать чтобы пользователь мог управлять только собственными комментариями?

    @ksnk
    Каждому пользователю выдаешь токен - такую комбинацию букв и цифр, которые ни у какого больше юзера не повторяются. И сохраняешь ее в куках. Токен сохраняешь вместе с сообщением. Пришло сообщение без токена - делаешь токен, и юзеру его в куки... В конце концов, зря что ли юзер вечно соглашается использовать их на сайте ?
    При выводе списка сообщений, при наличии в куках того же токена что и в сообщении - пририсовываешь кнопки редактирования-удаления. При получении команды редактирования-удаления проверяешь наличие той самой куки и только после этого удаляешь-редактируешь.
    Придумать токен просто - openssl_random_pseudo_bytes. Ну а если openssl что-то не фурычит - md5 от данных формы и приписать crc32 от текущего таймстампа - выглядит надежно ))).
    Если ты не делаешь что-то типа высокогруженной телеги или банковского приложения, схема вполне рабочая...
  • Определить модуль по кешу возможно?

    @ksnk
    47911, А в чем проблема-то? Если не нравится кэширование - можно его совсем отключить. Только нужно проверить, что сайт не стал тормозить слишком уж заметно. Если тормозит - вернуть все обратно.
    В админке. Система>>Общие настройки. Вкладка Система - там искать кэширование.
  • Определить модуль по кешу возможно?

    @ksnk
    47911, Вообще говоря, файл с кэшем XXX-com_modules-XXX содержит список всех модулей системы, которые так или иначе участвуют в жизни сайта , или считают, что участвуют, так как некоторые мои модули следовало бы выкинуть 10 лет назад, а они исправно кэшируются до сих пор. Так что исходный вопрос не имеет особого смысла - найти конкретную заразу, которая производит именно этот файл довольно просто - это сама joomla.
  • Определить модуль по кешу возможно?

    @ksnk
    Извиняюсь, похоже, ввел в заблуждение.
    вот такой скрипт позволит с большей уверенностью понять что находится в файле кэша
    $f='d:/download/48513be50f613e4d85185e87dc3e2283-cache-com_modules-7a279908a08234540c6aec896e89fafa (1).php'; // имя файла в системе
    error_reporting(E_ALL);
    $ff=explode('#x#',file_get_contents($f));
    print_r(unserialize($ff[1], []));

    На моих файлах из cache/com_modules он показывает массив из 200+ элементов. В частности (в моем случае - см картинку), первые элементы этого файла кэша созданы из виджетов (системный модуль mod_widgetkit), определенный в моей джумле с номерами 870 и 871. Другие элементы созданы другими компонентами системы. Так что утверждать, что это именно кэш именно какого то конкретного модуля неверно
    https://disk.yandex.ru/i/OSTTg-lSjHd0PQ

    Разобрать таким же нехитрым образом твой файл я не смог, так как кэш - далеко не текстовый файл, вероятно поломались переводы строк при перегрузке в сохранение.
    >> Notice: unserialize(): Error at offset 862 of 12222296 bytes in ...