Задать вопрос
  • Как изменить формат даты публикации в дополнении Articles?

    @alexalexes Автор вопроса
    Что предпренималось для отладки этой ошибки:
    Модуль, который давал кириллический формат publishedon и publishedon_date дат найден по пути:
    \htdocs\core\components\articles\processors\article\getlist.class.php
    А также в (я так понимаю, это инсталлированная копия):
    \htdocs\core\packages\articles-1.7.11-pl\modCategory\14e4dec8f7fa2803c83b7f7266025282\0\articles\processors\article\getlist.class.php
    Было:
    ....
    if (!empty($resourceArray['publishedon'])) {
            	$publishedon = strtotime($resourceArray['publishedon']);
                $resourceArray['publishedon_date'] = strftime($this->modx->getOption('articles.mgr_date_format',null,'%b %d'),$publishedon);
                $resourceArray['publishedon_time'] = strftime($this->modx->getOption('articles.mgr_time_format',null,'%H:%I %p'),$publishedon);
                $resourceArray['publishedon'] = strftime('%b %d, %Y %H:%I %p',$publishedon);
            }
    ....

    Стало:
    if (!empty($resourceArray['publishedon'])) {
            	$publishedon = strtotime($resourceArray['publishedon']);
                $resourceArray['publishedon_date'] = strftime($this->modx->getOption('articles.mgr_date_format',null,'%d.%m.%Y'),$publishedon);
                $resourceArray['publishedon_time'] = strftime($this->modx->getOption('articles.mgr_time_format',null,'%H:%I %p'),$publishedon);
                $resourceArray['publishedon'] = strftime('%d.%m.%Y %H:%I %p',$publishedon);
            }

    То есть, поменял маску формата strftime все, что может генерировать символические имена компонент даты на числовую маску %d.%m.%Y
    В логе ошибок, в объекте, который проходит через JSON в этом publishedon формат поменялся:
    [deletedby] => 0
                [publishedon] => 12.02.2019 12:12  /* тут был неверный формат даты с корокозяброй Džנ12 - сокращенное название месяца или недели*/
                [publishedby] => 1

    А в другом атрибуте publishedon_date, так и остался прежним с кривой кириллицей:
    createdby_username] => admin
                [tags] => 
                [comments] => 0
                [publishedon_date] => Džנ12     /* а тут формат даты остался неправильный !!!!!! */
                [publishedon_time] => 12:12

    Пробовал сбросить кэш Modx, кэш сайта, переустановить компонент Articles, пересоздать ресурс "новость" и вложенные объекты, почистить каталог core/cache , подождать пару часов если кэш сам сбросится - ничего не помогает.
    Есть вариант правильно подставить английскую локаль перед вызовом списка новостей, но я не уверен, что правильно определю место вызова этого списка. Я думаю, эффективней было бы просто поменять формат даты для поля "опубликовано", чтобы оно не было привязано к локали, но не вышло.
    Какие модули ModX могут еще влиять на вывод списка новостей в админке?
  • Как вызвать функцию, если значение оператора if == false?

    @alexalexes
    Главное, разберитесь, что лежит в def, а что в его свойстве value.
    Для этого поставьте в отладчике браузера точку останова на этой строчке:
    if (def.value == 488)
    и после нажатия submit проследите с помощью наведения мышки на def, а потом на value, что они из себя представляют.
  • Не идёт отсчет после ввода числа( ошибок нету)?

    @alexalexes
    Где-то нужно хранить текущее отминусованное состояние между вызовами go(), можно в input.value обновлять его.
    https://jsfiddle.net/2u9raep5/5/
    Можно глобальную переменную ввести window.myInput поместить, как сделал я в решении.
  • Как добавить несколько строк в БД одной формой?

    @alexalexes
    Сколько раз выполните эту сточку, столько и будет вставок БД:
    $result = $mysqli->query("INSERT INTO ".$db_table." (date, name, position, company, object, time) VALUES ( '$today' , '$rab1', 'Марс', 'Кратор1', 'обустраивание бункера1' , '8')");

    PS: По поводу вставок параметров в запрос.
    Если параметры пришли из пользовательской формы, то вклеивать в строку запроса их - дурной тон.
    ....VALUES ( '$today' , '$rab1', .....
    Не выносите этот опыт дальше учебной практики, это не безопасно с точки зрения хакинга в реальных системах.
    Используйте функции подготовки запроса и безопасной привязки параметров запроса.
  • PHP не делает проверку на количество символов. В чём проблема?

    @alexalexes
    А зачем вы отрицание вставляете, намеренно переводите целое число в булевый тип и хотите при этом что-то получить внятное для понимания?
    Ну попробуйте:
    В случае если длина строки положительна, то имеем такое преобразование int -> bool:
    (false >= 5 && false < 25)
    В случае если длина строки нулевая, то имеем такое преобразование int -> bool:
    (true >= 5 && true < 25)
    PS: Короче говоря, конструкция !strlen($_POST["username"]) эквивалента вопросу "Строка пуста?".
  • Как избежать ошибки 500 при работе с VK API?

    @alexalexes
    Правильно прощупывать элементы в массиве либо через isset():
    if (isset($_POST['submit']))
    либо через array_key_exists():
    if (array_key_exists('submit', $_POST))
    Все остальные попытки получить что-то по ключу submit из массива будут засорять лог в той или иной степени.
  • Переборка массивов. Как реализовать?

    @alexalexes
    Тут 3 идентичных массива. Может тут ошибка при копипасте?
    Array ( [2] => Array ( [n] => 1 [d] => 1 [p] => ) [3] => Array ( [n] => 2 [d] => 2 [p] => ) [4] => Array ( [n] => 3 [d] => 3 [p] => ) [5] => Array ( [n] => 4 [d] => 4 [p] => ) [6] => Array ( [n] => 5 [d] => 5 [p] => )

    Array ( [2] => Array ( [n] => 1 [d] => 1 [p] => ) [3] => Array ( [n] => 2 [d] => 2 [p] => ) [4] => Array ( [n] => 3 [d] => 3 [p] => ) [5] => Array ( [n] => 4 [d] => 4 [p] => ) [6] => Array ( [n] => 5 [d] => 5 [p] => )

    Array ( [2] => Array ( [n] => 1 [d] => 1 [p] => ) [3] => Array ( [n] => 2 [d] => 2 [p] => ) [4] => Array ( [n] => 3 [d] => 3 [p] => ) [5] => Array ( [n] => 4 [d] => 4 [p] => ) [6] => Array ( [n] => 5 [d] => 5 [p] => )

    Что такое n - вы рассказали, а что такое d и p - нет.
    1-1-1
    1-2-1
    1-3-1
    1-1-2
    1-1-3
    1-1-4
    2-2-2

    Что обозначают каждые из этих столбцов чисел?
    По хорошему, чтобы сделать преобразование, то мало входных и выходных данных, нужны правила преобразования. Прежде чем писать код, их явным образом описывают и сверяют с тестовой выборкой. Без них никуда, если у вас не предполагается эти выборки загружать в нейронную сеть.
  • Не работает событие jquery?

    @alexalexes
    Можно еще сванговать, и предположить, что были попытки именовать события как onclick в тех способах, где должен использоваться click и наоборот.
    Пример кода приведите свой.
  • Почему в таком коде не работает вызов метода конструктора?

    @alexalexes
    Вероятно, вам нужно методом formatDate() оперировать датой из класса, а не передавать ее отдельно, могу подсказать один прием в JS.
    function Journal(date)
    {
      // При объявлении new выполняется функция Journal(). Считайте, что все, что вы пишите в контексте этой функции будет выполнено как конструктор.
    
      var that_class = this; // поскольку this может менять свой контекст в методах, введение отдельного указателя that_class позволит точно обращаться к this именно класса из любого контекста.
    
      that_class.date = date; // добавляем переменную date как свойство класса
      
      // получение даты в нужном формате
      that_class.formatDate = function()
      {
        return that_class.date.getDate() + '.' + (that_class.date.getMonth() + 1) + '.' + that_class.date.getFullYear();
      };
    }
    var Journal1 = new Journal(new Date(2018, 3, 5));
    console.log(Journal1.formatDate());
  • Как оптимально получить симметричные данные в таблице?

    @alexalexes
    inner join и просто join эквивалентны.
    Это вопрос удобства чтения кода и того, охота печатать лишние буковки или нет.
  • Как передать координаты произвольному элементу на странице?

    @alexalexes
    нужно, чтобы блоки element [были] разбросаны по странице,

    В каком порядке, в произвольном?
    координата верха у preview

    Я так понимаю, есть верхняя сторона, и речь идет о ее координате Y?
    Или все же вы сравниваете левые верхние углы блоков?
    Покажите графически, что вы имеете ввиду.
  • Как скачать изображение с поле input?

    @alexalexes
    Необходимо вызвать диалог загрузки файла в браузере, как будто браузер принял по http вот такие заголовки:
    Content-Type: application/pdf
    Content-Disposition: attachment; filename="downloaded.pdf"
    /*тело файла*/

    Но без участия сервера.
  • Не работает мышь на Windows 7 после Linux (Ubuntu 16.04)?

    @alexalexes
    Модель бы мышки еще, чтобы понять степень навороченности ее функционала и драйверов (и попутных глюков), а также модель материнской платы.
  • Не работает мышь на Windows 7 после Linux (Ubuntu 16.04)?

    @alexalexes
    Только после "железного" ребута (нажатием кнопки резет) мышь приходит в норму или из Windows штатной перезагрузкой тоже лечится?
  • Как делаются нестандартные элементы форм доступными, кроссбраузерными?

    @alexalexes
    Любой JQuery плагин берете и смотрите, что используется в качестве основы, и что с основой происходит когда вызывают инициализацию $().название_плагина().
    Например, chosen.
    За основу этого плагина-выпадающего списка используется стандартный select.
    После вызова обертки $('select').chosen(), стандартный select прячется:
    <select data-placeholder="Choose a Country..." class="chosen-select" tabindex="-1" style="display: none;">...</select>

    А на его месте появляется:
    <div class="chosen-container chosen-container-single" title="" style="width: 350px;"><a class="chosen-single chosen-default">...</div>

    Насчет синхронизации, я был не точен.
    По умолчанию, плагины не синхронизируют свое состояние с исходными элементами.
    Но вы можете прописать обработчики событий, например, для события выбора пункта выпадающего списка, чтобы в исходном select происходило смена атрибута selected у его option или записывать состояние выбора нескольких пунктов в отдельный скрытый input с одним и тем же именем параметра, что select (тип hidden), если стандартный select не поддерживает такой режим.
    Или перехватывать submit-событие и также дополнять форму необходимыми input-hidden элементами.
    PS: В вашем случае можно кастомизироваоть под нужный дизайн необходимый набор JQuery плагинов или использовать плагины другой библиотеки, если JQuery вам не подходит, или у вас подключен еще какой-то набор JS-библиотек, которые позволяют делать аналогичные вещи.
  • Как делаются нестандартные элементы форм доступными, кроссбраузерными?

    @alexalexes
    Если использовать механику JQuery виджетов, то при инициализации виджета стандартные input и select элементы скрываются из виду, и появляется на их месте спец. обертка, но при этом их содержимое синхронизируется с содержимым визуальной обертки, чтобы при submit не нужно было делать лишних операций для отправки параметров полей.
    Еще вариант - делать прозрачными элементы input, но с сохранением геометрических размеров. Под инпут просто подкладывается стилизованный элемент (актуально для input с типом file).
  • Сравнение и запись в файл одинаковых строк?

    @alexalexes
    Как насчет использования базы данных вместо файлов?