• Как удалить добавленный класс?

    @alexalexes
    Если элемент .close-popup лежит внутри элемента .inner-item, то вполне возможно, что событие клика всплывает и запускаются оба обработчика событий. Проконтролируйте этот момент, выставив точки останова в коде обоих обработчиков и понаблюдайте, что происходит при клике на .close-popup.
  • Выборка рандомно-сгенерированного текста в sql?

    @alexalexes
    Если будет задействован PL/pgSQL, то вообще не принципиально, как там будет выглядеть реализация.
    Главное, сформулировать математику этого решения, потом сформулировать псевдокод решения, а потом впихнуть в выбранную среду разработки.
  • Выборка рандомно-сгенерированного текста в sql?

    @alexalexes
    По пункту 1 я имел ввиду, что вам нужно предложить функцию, которая:
    а) взвесит некий фрагмент строки и даст ему нормированный вес, скажем, между 0 - не случайная последовательность символов, и 1 - полностью случайная последовательность символов.
    К примеру, наша функция g = f(s) с аргументом s = 'Мама мыла раму' вернет значение g = 0.1;
    при s = 'мвма мкла рамн' вернет, скажем, g = 0.5;
    при s = 'мнпм выкц пршо' вернет, скажем, g = 0.9;
    б) превратится в критерий случайности, если этой функции задать минимум один порог.
    Скажем если g >= 0.8, то предложенный фрагмент строки считаем составленный из случайных символов, если g не превышает этот порог, то скорее всего символы в фрагменте не случайны.
  • Выборка рандомно-сгенерированного текста в sql?

    @alexalexes
    1) Каков критерий случайности генерации фрагмента текста? (Навскидку могу предложить взять меру энтропии, но это не точно)
    2) Некий алгоритм должен детектить самый маленький фрагмент текста (ленивый стиль поиска) или самый большой (жадный стиль поиска)?
    3) Находить первый попавшийся фрагмент текста, удовлетворяющий условию 1 или все возможные варианты внутри исходного текста?
  • Как в JS склонять при числах окончание в словах на -ние в родительном падеже?

    @alexalexes
    Как только встает вопрос сделать грамотно-говорящий русскоязычный интерфейс, такая функция обязана быть доступна в глобальном окружении. Там же, где вы хотите разместить правильные названия дней недели и месяцев, чтобы нормально сформировать даты.)
  • Как закодировать URL utf8 в cp1251?

    @alexalexes
    Только учтите, что этот способ ограничен алфавитом t и некоторыми символами, которые перечислены в регулярках replace(). Да и теоретически, полное пространство символов utf8 больше чем пространство cp1251, поэтому, как бы не была полна функция преобразования convert_to_cp1251(), не всегда любой произвольный символ получиться перевести из utf8 в cp1251. Этот способ будет работать на тех строках, где набор символов известен, и что-то лишнего ждать не придется, например, нужно преобразовать ФИО.
  • Несколько массивов вместо одного?

    @alexalexes
    То, что вы хотите получить на выходе в первом сообщении с точки зрения json - некорректно, это легко проверить если разложить данные вертикально по иерархии скобочек:
    [
      {
         "uuid":"20190922163205",
         "goods":
         // Упс!!! Нижестоящие записи goods - это коллекция, а она внезапно оказалась без контейнера [] //
                      [{"good_uuid":2,"good_name":"Конверт на выписку","quantity":1,"price":1,"tag1214":4}], 
                      [{"good_uuid":1,"good_name":"Звездная ночь на шампани","quantity":1,"price":1,"tag1214":4}]
    }
    ]

    Корректно либо так, как вы получили изначально:
    [
      {
        "uuid":"20190922163205",
        "goods":
        [ // вот это и есть контейнер для коллекции goods
          [{"good_uuid":2,"good_name":"Конверт на выписку","quantity":1,"price":1,"tag1214":4}], 
          [{"good_uuid":1,"good_name":"Звездная ночь на шампани","quantity":1,"price":1,"tag1214":4}]
        ] // конец контейнера
      }
    ]

    Либо то, что я предложил:
    [
      {
        "uuid":"20190922163205",
        "goods":
        [ //  контейнер для коллекции goods никуда не делся и не может пропасть, это ведь коллекция все таки.
          {"good_uuid":2,"good_name":"Конверт на выписку","quantity":1,"price":1,"tag1214":4}, 
          {"good_uuid":1,"good_name":"Звездная ночь на шампани","quantity":1,"price":1,"tag1214":4}
        ] // конец контейнера
      }
    ]
  • Несколько массивов вместо одного?

    @alexalexes
    Так у вас оно и будет, только определитесь с нотацией, как обозначать в коде массив:
    Вот так:
    $description1[] =
    array(
              'good_uuid' => $rowcart["idprod"],
              'good_name' => $rowcart["name"], 
              'quantity' => $rowcart["quantity"],
              'price' => $rowcart["price"],
              'tag1214' => 4
    );

    или вот так:
    $description1[] =
    [
              'good_uuid' => $rowcart["idprod"],
              'good_name' => $rowcart["name"], 
              'quantity' => $rowcart["quantity"],
              'price' => $rowcart["price"],
              'tag1214' => 4
    ];
  • Как сделать таб для слайдера?

    @alexalexes
    1) Вы не знаете, как настроить штатные навигационные стрелки Вперед (next) и Назад (prev), или Точечки перехода на определенный слайд (dots)? Настроить их вид?
    2) Вам нужно сделать отдельные элементы управления вне слайдера и подписать на события навигации, как будто используются один из вариантов элементов 1.
    3) Удалить существующие слайды и добавить новые?
  • Как сделать выборку из нескольких таблиц с помощью оператора IN?

    @alexalexes
    Опять же можно было обойтись одной таблицей:
    EVENT
    id - идентификатор события,
    event_type_id - тип события, внешний ключ,
    date - дата события
    event - описание события.
    Справочник EVENT_TYPE
    id - идентификатор типа события,
    type_name - наименование типа

    Типичный запрос бы выглядел так:
    select t1.id, t1.event_type_id,  t2.type_name, t1.date, t1.event
    from event t1
    join evet_type t2 on t1.event_type_id = t2.id
    where
     (t1.event_type_id = 1 and Month(t1.date) = Month(STR_TO_DATE(:date, '%d.%m.%Y')) and Day(t1.date) = Day(STR_TO_DATE(:date, '%d.%m.%Y'))) -- так получаем периодичные события (тип id = 1 ), год в t1.date игнорируем
    OR
    (t1.event_type_id <> 1 and t1.date = STR_TO_DATE(:date, '%d.%m.%Y')) -- а так получаем не периодичные события, отличные от типа 1.

    Чтобы потом ввести еще один тип события, достаточно добавить в справочник этот тип, и если он имеет какие-то особенности, то поправить where.
  • Как сделать выборку из нескольких таблиц с помощью оператора IN?

    @alexalexes
    Все таки нужно изучить вашу предметную область, чтобы понять, зачем вы сделали две таблицы для однотипных сущностей, возможно, нужно было в структуру данных ввести какой-нибудь тип события, тогда бы не нужна была дублирующая вторая таблица, а нужна была бы таблица- справочник типов событий. Возможно и имеет смыл разделять данные на две таблицы, если у вас события отличаются, например, свойством периодичности, но опять же это нужно смотреть с высоты знания предметной области.
    Если вы тип события не добавили изначально в структуру, то будете эмулировать его в каждом запросе полем t_type, такой уж будет костыль.))
    select a.*
    from
    (
    
    select 'from_t1' t_type,  t1.date, t1.event from t1 where t1.date = :date
    
    union all
    
    select 'from_t2' t_type,  t2.date, t2.event from t2 where t2.date = :date
    
    ) a
  • Как сделать выборку из нескольких таблиц с помощью оператора IN?

    @alexalexes
    Пойдем другим путем. Приведите пример данных из таблицы t1 и t2, и пример данных выходной выборки, какую вы хотите получить запросом.
  • Как сделать выборку из нескольких таблиц с помощью оператора IN?

    @alexalexes
    Ну, соединяйте. Причем тут in?
    select t1.*, t2.*
    from table1 as t1
    join table2 as t2 on t2.id_to_table1 = t1.id -- вероятно, у вас сомнения, как пишется выражение в клаузе ON
    where t1.id in (1, 2, 5)
  • Как очистить textaria с помощью javascript?

    @alexalexes
    Давайте по аналогии.
    document - это озеро.
    Элемент textarea - это интересуемая конкретная особь рыбы, которая плавает в озере document.
    Чтобы ее выловить, нужно использовать что-то из рыболовного инвентаря:
    getElementById()
    getElementsByClassName()
    getElementsByTagName()
    querySelector()
    querySelectorAll();

    Есть удочки, которые достают ровно одну рыбу:
    var elem_1 = document.getElementById('my_fish');
    var elem_2 = document.querySelector('textarea');

    Однако, чтобы document.getElementById('my_fish') ловил нужную особь, необходима чтобы эта особь в документе имела искомый атрибут id:
    <textarea id="my_fish"></textarea>
    Метод document.querySelector('textarea') выловит первую попавшуюся рыбу.
    Однако, если textarea будет несколько в документе, чтобы использовать его, вам нужно быть уверенным, что интересуемая особь либо будет единственная на странице, либо идти первым по структуре документа.
    Собственно, если что-то поймалось, то можно с этим что-то сделать:
    elem_1.value = 'добавили текст в textarea';
    elem_2.value = 'добавили текст в textarea';

    Далее, есть рыболовные сети:
    var elements_1 = document.getElementsByClassName('fishes');
    var elements_2 = document.getElementsByTagName('textarea');
    var elements_3 = document.querySelectorAll('form div.row div textarea');

    Для getElementsByClassName нужно, чтобы рыбы имели такой опознавательный знак:
    <textarea class="fishes"></textarea>
    Метод getElementsByTagName('textarea') извлекает из озера все то, что имеет тег textarea.
    Метод querySelectorAll('form div.row div textarea') извлекает рыбу, которая залегает по определенному CSS-признаку.
    Отличительная особенность этих методов в том, что они могут поймать не одну рыбку за один присест, а несколько, поэтому, чтобы взаимодействовать с конкретной извлеченной рыбкой, нужно обратиться в рыбный садок по индексу:
    elements_1[0].value = "добавили текст в textarea";
  • Как очистить textaria с помощью javascript?

    @alexalexes
    Чтобы манипулировать элементами страницы, вам нужно изучить, как правильно пользоваться методами:
    getElementById()
    getElementsByClassName() (обратите внимание почему Elements, а не Element)
    getElementsByTagName (тоже самое)
    querySelector()
    querySelectorAll()
  • Как ограничить доступ к компоненту Опросы (Polls)?

    @alexalexes Автор вопроса
    Да, актуально. Зафиксировал Issue:
    1) https://github.com/himurovich/MODX-Polls/issues/49
    2) https://github.com/himurovich/MODX-Polls/issues/50
    Если нужно могу поправить формулировки проблем и выслать свою реализацию вам по прокси голосованию.
  • Как ограничить доступ к компоненту Опросы (Polls)?

    @alexalexes Автор вопроса
    У меня еще были свои хотелки реализовать такие вещи:
    1. Возможность фиксации голосов от пользователей, находящиеся за прокси-сервером. А то один пользователь за прокси проголосует, а другие оттуда же увидят, что они уже проголосовали.
    2. Добавить тип вопроса, позволяющий выбирать множество ответов.
    Первую возможность я реализовал, но не совсем получилось чисто написать код.
    Для второй я напишу issue.
  • Как ограничить доступ к компоненту Опросы (Polls)?

    @alexalexes Автор вопроса
    Поискал на github, не писали ли похожую проблему.
    Нашел https://github.com/himurovich/MODX-Polls/issues/4
    Этот проблемный вопрос закрыли.
  • Почему на клиенте при входе через Chrome не работает https://animate.css/?

    @alexalexes
    Darya Shvakh, путь сертификации в Chrome просматривается так:
    Клик по "замку" в адресной строке -> Сертификат -> Путь сертификации.
    В Firefox:
    Клик по "замку" в адресной строке -> "Соединение >" -> Подробнее -> Защита -> Посмотреть сертификат -> Подробности -> Иерархия сертификатов.
    Не знаю, проверьте этот момент, мне как-то доводилось видеть "опеку" антивируса в виде подстановки своего сертификата.