We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28814 ☆ A M B ☆
    • 1,086 Posts
    Quote from: suvit at Sep 26, 2008, 09:02 AM

    Господа, я просил вас помочь мне, надавить на разработчиков, чтобы исправилась эта проблема тут
    Поддержал smiley
    http://modxcms.com/forums/index.php/topic,27946.msg177323.html#msg177323
      Разработка сайтов и программных модулей на MODX.
      Опыт работы на MODx с 2005 года. Высокое качество.
      Компания Baltic Design Colors: http://www.bdcolors.ru.
      • 785
      • 2,113 Posts
      Quote from: Fuzzy at Sep 26, 2008, 09:26 AM

      Поддержал smiley
      Вообще, предлагаю общими усилиями все же выработать список исправлений, важных для русскоязычного сообщества, и отправить их потом разработчикам. От себя готов в ближайшие пару дней обнаружить некоторые глюки и выдать рекомендации по их исправлению. Предлагать разработчикам что-то мне сложно, так как есть проблемы с английским (я пока пару вещей разработчику AjaxSearch написал, аж вспотел весь).
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 28814 ☆ A M B ☆
        • 1,086 Posts
        Quote from: AKots at Sep 26, 2008, 09:36 AM

        Вообще, предлагаю общими усилиями все же выработать список исправлений, важных для русскоязычного сообщества, и отправить их потом разработчикам.
        Отличная идея. А пока просто забросим разработчикам такой звоночек, пусть будут в курсе, что реально с кодировками существует проблема и ее очень хочется решить.
          Разработка сайтов и программных модулей на MODX.
          Опыт работы на MODx с 2005 года. Высокое качество.
          Компания Baltic Design Colors: http://www.bdcolors.ru.
          • 785
          • 2,113 Posts
          Как и обещал выше, пишу о проблемах, обнаруженных в новой версии MODx. Отмечу, что большинство их них остались с предыдущих версий. Некоторые проблемы, обнаруженные и описанные в англоязычной части форума, я не рассматриваю.

          I. ПРОБЛЕМЫ, НЕ СВЯЗАННЫЕ С РУССКИМ ЯЗЫКОМ

          1. Имеется достаточно много проблем, связанных с попыткой записать в числовое поле базы данных пустое значение (""). Если MySQL работает в режиме Strict Mode, то есть в режиме строгого соответствия стандартам, такие попытки приводят к ошибкам (может возникнуть ошибка #1366 - Incorrect integer value или просто операция не будет выполнена). Рекомендации использовать другой режим MySQL не слишком полезны, так как не всегда эта возможность доступна, да и CMS, на мой взгляд, должна создавать корректные запросы SQL. А корректными в данном случае являются только числовые значения (например, 0) или NULL. Вот обнаруженные мною места, в которых требуется внести исправления:
          1.1. Нельзя добавить значение TV после создания документа. Можно ввести значение вместе с вводом нового документа или исправить введенное ранее, но если при создании TV не задать, потом ввести его будет невозможно. Об этом я писал и в английской части форума:
          http://modxcms.com/forums/index.php/topic,19892.msg156826.html#msg156826
          и в русской:
          http://modxcms.com/forums/index.php/topic,25778.msg157947.html#msg157947
          но исправления в новую версию не внесены.
          Для решения проблемы нужно найти файл manager/processors/save_content.processor.php
          и заменить в нем строки
          $tvChanges[] = '(\''.$tvIds[$tvId].'\', '.$tvId.', '.$id.', \''.mysql_escape_string($tvVal).'\')';

          на
          if ($tvIds[$tvId] == '') $tvIds[$tvId]="NULL";
          else $tvIds[$tvId]='\''.$tvIds[$tvId].'\'';
          $tvChanges[] = '('.$tvIds[$tvId].', '.$tvId.', '.$id.', \''.mysql_escape_string($tvVal).'\')';


          1.2. Нельзя добавить событие для ранее сохраненного плагина. В файле
          manager/processors/save_plugin.processor.php
          добавить строку
          if ($priority=="") $priority=0; 

          перед
          if($i>0) $sql.=","; 


          1.3. Ошибка при создании TV ($rs not set! New variable not saved!), возникающая, если не задать порядок в соответствующем списке. В файле
          manager/processors/save_tmplvars.processor.php
          заменить
          $rank = isset ($_POST['rank']) ? mysql_escape_string($_POST['rank']) : 0; 

          на
          $rank = (isset ($_POST['rank']) && $_POST['rank']!='') ? mysql_escape_string($_POST['rank']) : 0; 


          Скорее всего, есть и другие проблемные места, и было бы хорошо, если разработчики MODx везде обеспечили формирование запросов в соответствии с требованиями SQL.

          2. Навязчивая ошибка «Error while inserting event log into database.», преследующая пользователей уже несколько версий. Я ранее писал о решении этой проблемы, но повторюсь.
          Для начала, следует исправить неверный вызов записи события при проверке конфигурации. В файле
          manager/includes/config_check.inc.php
          найти четыре вызова функции logEvent:
          $modx->logEvent(0,2,$warnings[$i][1],$_lang['configcheck_configinc']);
          $modx->logEvent(0,2,$warnings[$i][1],$_lang['configcheck_installer']);
          $modx->logEvent(0,2,$warnings[$i][1],$_lang['configcheck_cache']);
          $modx->logEvent(0,2,$warnings[$i][1],$_lang['configcheck_images']);

          КАЖДЫЙ вызов заменить на
          $modx->logEvent(0,2,$warnings[$i][1],'Config Check');

          То есть сделать все вызовы одинаковыми. Если есть желание, можно сделать их разными, например ’Config Check inclide’ и ’Config Check installer’.

          Следует отметить, что ошибка возникает только при использовании неверной конфигурации, так что те, у которых нет проблем с конфигурацией, не встречались с этой ошибкой.

          Для того, чтобы полностью исключить проблемы при сохранении сообщений об ошибках, следует исправить функцию logEvent. В файле
          manager/includes/document.parser.class.inc.php
          вместо
          echo "Error while inserting event log into database.";

          выводить
          echo "Error while inserting event log into database: ". mysql_error().", SQL: ".$sql;

          То есть писать, какая именно ошибка возникла, чтобы ее в дальнейшем исправить.
          Также после строки
          $evtid= intval($evtid);

          добавить две строки
          $LoginUserID=$this->getLoginUserID();	
          if ($LoginUserID=='') $LoginUserID=0;

          и изменить
          "VALUES($evtid,$type," . time() . ",'$source','$msg','" . $this->getLoginUserID() . "')";

          на
          "VALUES($evtid,$type," . time() . ",'$source','$msg','" . $LoginUserID . "')";

          То есть в численное поле записывается ноль, а не пустая строка (проблема та же, что и в предыдущем пункте).
          И еще после строки
          $source= mysql_escape_string($source);

          добавить
          if ($GLOBALS['database_connection_charset'] == 'utf8' && extension_loaded('mbstring')) {
          $source = mb_substr($source, 0, 50 , "UTF-8");
          } else {
          $source = substr($source, 0, 50);
          }


          3. В последних версиях не работает блокировка при неверном вводе пароля. Для менеджеров исправления вносятся в файл
          manager/processors/login.processor.inc.php
          вставить строку
          $blocked_minutes=$modx->config['blocked_minutes'];

          после строки с комментарием
          increment the failed login counter, and block!

          а также несколькими строками ниже, сразу после строки
          @session_destroy();

          добавить строку
          return;

          Аналогичные изменения для web-пользователей следует внести в файл
          assets/snippets/weblogin/weblogin.processor.inc

          4. Кстати, для сниппета Weblogin можно было бы внести небольшие изменения. В файле
          assets/snippets/weblogin/weblogin.inc.php
          Неплохо бы вынести JavaScript в отдельный файл, то есть добавить строку
          <script type="text/JavaScript" src="assets/snippets/weblogin/weblogin.js"></script>

          а то, что было раньше, записать в файл weblogin.js
          Также для некоторых случаев лучше в строках
          $tpl = "<div id='WebLoginLayer0' style='position:relative'>".$tpls[0]."</div>";
          $tpl.= "<div id='WebLoginLayer2' style='position:relative;display:none'>".$tpls[2]."</div>";

          убрать style=’position:relative’ (при необходимости это можно описать в файле стиля).

          О проблемах с русским языком будет написано ниже.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 36823
            • 334 Posts
            В 0.9.6.3 из svn, многое исправлено.
              • 785
              • 2,113 Posts
              II. ПРОБЛЕМЫ РУСИФИКАЦИИ И ИСПОЛЬЗОВАНИЯ КОДИРОВКИ UTF8

              1. Исправления в языковом файле описаны тут:
              http://modxcms.com/forums/index.php/topic,29123.0.html
              и я не буду повторяться.

              2. При работе с Tinymce портится кодировка списка ссылок. Начальные шаги для исправления сделаны в версии 0.9.6.2, имеющиеся ошибки отмечены и известны пути их устранения, но при работе с UTF8 проблема все равно остается. Ссылки из базы читаются в правильной кодировке, но отсылаются уже в неправильной. Есть несколько вариантов решения проблемы:
              Вариант 1
              В файл assets/plugins/tinymce3101/jscripts/tiny_mce/plugins/advlink/link.html
              добавить строку
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

              но при этом ошибки появятся в других кодировках, отличных от UTF8.
              Вариант 2
              Можно в файл assets/plugins/tinymce3101/tinymce.linklist.php добавить:
              if ($database_connection_charset == 'utf8' && extension_loaded('mbstring')) {
              $caption = mb_convert_encoding($caption, "CP1251", "UTF-8");
              }

              но при этом проблемы возникнут при использовании UTF8 для других языков.

              Как решить данную проблему, я не знаю – может кто-то что-то посоветует.

              3. Не знаю кому как, но мне не нравятся смесь разных языков типа «документ загружен из base». Для исправления ситуации в файле manager/includes/document.parser.class.inc.php
              найти
              $queryTime= sprintf("%2.4f s", $queryTime);
              $totalTime= sprintf("%2.4f s", $totalTime);
              $phpTime= sprintf("%2.4f s", $phpTime);
              $source= $this->documentGenerated == 1 ? "database" : "cache";

              и убрать из шаблона s, а также добавить в языковый файл database и cache.

              4. Проблема с русификацией некоторых сниппетов – Jot, Weblogin, а также файла login.processor.inc.php.
              Все эти программы не поддерживают смену языка. Лучше всего, конечно, переписать их и добавить языковые файлы, но пока предлагаю для обсуждения компромиссный вариант:
              Создать на этом форуме тему по дополнительной русификации системы, а в русском языковом файле инсталлятора добавить сообщение о том, что для полноценной русификации требуется заменить некоторые файлы, которые можно скачать по предлагаемой ссылке. Это сообщение можно добавить, например, перед выводом лицензии (то есть просто добавить абзац к соответствующей переменной). То есть, выбрав русский язык при установке, пользователь кроме лицензии прочитает о том, что нужно скачать дополнительные файлы. Предлагаю обсудить этот вариант.

              Хорошо бы, если в этой теме другие люди добавят описание найденных проблем, а также выскажутся по поводу поднятых проблем.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 785
                • 2,113 Posts
                Quote from: Andrei at Sep 28, 2008, 06:49 AM

                В 0.9.6.3 из svn, многое исправлено.
                Если знаете, что исправлено, напишите об этом.
                  Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                  Статьи о MODx, регулярно новые публикации
                  • 28957
                  • 122 Posts
                  Quote from: AKots at Sep 28, 2008, 05:08 AM


                  1.1. Нельзя добавить значение TV после создания документа. Можно ввести значение вместе с вводом нового документа или исправить введенное ранее, но если при создании TV не задать, потом ввести его будет невозможно. Об этом я писал и в английской части форума:
                  http://modxcms.com/forums/index.php/topic,19892.msg156826.html#msg156826
                  и в русской:
                  http://modxcms.com/forums/index.php/topic,25778.msg157947.html#msg157947
                  но исправления в новую версию не внесены.
                  Для решения проблемы нужно найти файл manager/processors/save_content.processor.php
                  и заменить в нем строки
                  $tvChanges[] = '(\''.$tvIds[$tvId].'\', '.$tvId.', '.$id.', \''.mysql_escape_string($tvVal).'\')';

                  на
                  if ($tvIds[$tvId] == '') $tvIds[$tvId]="NULL";
                  else $tvIds[$tvId]='\''.$tvIds[$tvId].'\'';
                  $tvChanges[] = '('.$tvIds[$tvId].', '.$tvId.', '.$id.', \''.mysql_escape_string($tvVal).'\')';


                  1.3. Ошибка при создании TV ($rs not set! New variable not saved!), возникающая, если не задать порядок в соответствующем списке. В файле
                  manager/processors/save_tmplvars.processor.php
                  заменить
                  $rank = isset ($_POST['rank']) ? mysql_escape_string($_POST['rank']) : 0; 

                  на
                  $rank = (isset ($_POST['rank']) && $_POST['rank']!='') ? mysql_escape_string($_POST['rank']) : 0; 


                  1.1 исправлено тут
                  http://svn.modxcms.com/crucible/browse/modx/branches/0.9.6/manager/processors/save_content.processor.php?r1=4090&r2=4097
                  и тут
                  http://svn.modxcms.com/crucible/browse/modx/branches/0.9.6/manager/processors/save_content.processor.php?r1=4118&r2=4173

                  1.3 похоже поправлено тут
                  http://svn.modxcms.com/crucible/browse/modx/branches/0.9.6/manager/actions/mutate_tmplvars.dynamic.php?r1=3238&r2=4184
                    suvit
                    РROGWAY
                    • 785
                    • 2,113 Posts
                    Quote from: suvit at Sep 29, 2008, 02:45 AM

                    1.1 исправлено тут
                    1.3 похоже поправлено тут
                    1.1. наконец-то вроде бы действительно учтено.
                    1.3. исправлено не слишком удачно. Там добавляется по умолчанию значение «0», но проверка при вводе все равно отсутствует. Если по каким-то причинам в поле ввода удалить 0, то снова появится ошибка. Правильнее будет кроме задания значения исправить также пустой ввод.

                    Остаются остальные ошибки...
                      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                      Статьи о MODx, регулярно новые публикации
                      • 8492
                      • 12 Posts
                      Для тех у кого вылезает вот эта ошибка в админке, после первой инсталяции
                      Fatal error: Maximum execution time of 60 seconds exceeded in C:\server\htdocs\manager\includes\config.inc.php on line 61

                      или если у вас админка сильно виснет.
                      Это потому, что вы на "Денвере" сидите, ну или на своем установленном локально сервере. МОDx пытается связаться с домом (новая возможность в последней версии. RSS), но не может, вот его и глючит. Выход простой - дайте ему связь с домом и он на время успакоится. Ну или убейте RSS. В файле manager\includes\rss.inc.php замените url-ы на "#". И будет MODx у вас летать.