• Как перед однозначным номером даты поставить ноль?

    @ksnk
    Что не правильно?
    В регулярке написано, что менять одну цифру, перед которой стоит пробел и после которого стоит пробел. В исходной строке перед цифрой стоит начало строки.

    Если очень нужно получить две цифры при выводе даты - используй не 'long' а прямой формат

    $formattedDate =Yii::$app->formatter->asDate($date, 'dd MMMM Y г.');
    Написано
  • Как закрыть данный попап при клике вне него?

    @ksnk
    Добавь в функцию renderPopup в конец что-то такое
    ...
    popup.appendChild(btnBrand);
    //
          var mouseupHandler=function (e) {
            if (!popup.contain(e.target)) {
                document.removeEventListener("mouseup", mouseupHandler);
                popup.classList.remove("open");
            }
        };
        document.addEventListener("mouseup",mouseupHandler,true);
    }

    Ну а потом покликай на кнопку быстро несколько раз и пойми сам в чем еще ты не прав...
    Написано
  • Как сделать открытие страницы в новой вкладке в маленьком размере?

    @ksnk
    Останется только объяснить тем пользователям, которые запретили себе "всплывающие окна", что они в корне неправы ;)
    Написано
  • Как сделать открытие страницы в новой вкладке в маленьком размере?

    @ksnk
    Почему бы не
    - открыть форму прямо в отдельной вкладке href="..." target="_blank" ?
    - если хочется чтобы адрес не менялся - можно скриптом скачать страничку и вставить ее содержимое в iframе на нужной. Или завести отдельную "прокси" страничку на базовом сайте, которая сама будет подменяться нужной формой. Так как "форма наша" - предстоящий геморрой с простановкой абсолютных адресов скриптов и стилей с картинками можно пережить.
    Написано
  • Как сделать линии по всему сайту ПРАВИЛЬНО и логично?

    @ksnk
    Ну, так же как и сделано уже. вот только при размере экрана <1220 делать svg бэкграунд с теми же полосками. Svg - чтобы не атрофировались линии при неудачном расширении. Поставить background-size:100%
    Написано
  • Возможно ли шифрование GPG-ключом при авторизации на сайте?

    @ksnk
    imho, количество денег, которые ты вложишь в разработку (хотя бы дошираки для себя), будут дороже минимальных хостингов с PHP (< 200 рублей в год.) Разрабатывать свой https из палок и GPG (Кстати, это случайно не PGP ?) довольно накладно и достаточно бессмысленно.
    Написано
  • Как скрыть backend своего сайта?

    @ksnk
    Задача начинается "простенький сайт с JS", а совет - "прикрути нейронную сеть". :) Ну, так, навскидку -"простенький сайт" (код, без картинок) - ну, там, 10-20 кб собственного кода, предлагается заменить на мегабайты сети?

    Если не офтопить, то еще забавный вариант - прятать пароль в webgl. WebGl - это сишный код, встраиваемый в страницу броузера, в который можно много чего напихать + данные, в которые влезет тоже достаточно много чего, кроме пароля. Так что дебажить это дело может оказаться, особенно с непривычки, накладно.

    Хотя, может быть смешно, если тот самый токен, который тут прячут, виден в отладчике броузера при общении страницы со сторонним рессурсом...
    Написано
  • Как перевести дату в секунды если доступен только год?

    @ksnk
    DateTime::createFromFormat. Перебрать все используемые в базе форматы и выдать первый попавшийся успешно отконвертированный. Всего есть 2 формата ?
    'Y' и 'd-m-Y'.
    Написано
  • Как правильно обрезать предложения?

    @ksnk
    mb_substr($title, 0, 140,'utf-8').'...';
    Или, если нужно обрезать по пробельному символу
    $topborder=30; // все строки больше этого - режем
    $minborder=20; // столько символов гарантированно оставляем
    $test='Строка для обрезания. Строка для обрезания. Строка для обрезания. Строка для обрезания.';
    
    echo preg_replace('~^(.{'.$minborder.'}[^\s\.]{0,'.($topborder-$minborder).'}).*$~u','\\1...',$test).PHP_EOL;
    Написано
  • Как менять некоторую информацию на сайте через Telegram бота?

    @ksnk
    мой господин, В смысле ? Сайт УЖЕ есть. Аккаунт в телеге, вероятно, уже тоже есть. Бота поставить на существующий уже хостинг - 5 минут читать документацию. Без регистраций и СМС...
    Написано
  • Как заполнить input из $_FILES?

    @ksnk
    1 - никак. Но могут быть нюансы. Сохрани файл во временную папку. И в сессию то, что в $_FILES прилетело, куда-нибудь. При выводе этого поля файл, в зависимости от этой сессионной переменной, приписывай ему снизу - "загружен такойтофайл". При следующем сабмите формы доставай его из поля, а если нет в поле - из сессии.
    Написано
  • Как в Canvas сравнить перекрытие фигур?

    @ksnk
    Если совсем странная фигура уже нарисована и просчитать ее в полигонах нельзя - можно взять цвет точки и сравнить с цветом фона. Как простой вариант - точки вершин рисуемого полигона, если полигоны разного размера - центры или 3-4 засечки точек по каждому ребру.
    Ну а если хочется теории, то тут
    Написано
  • Как сделать доступность не только по табу?

    @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 радиобатонов
    Написано