W

Wanderer

+21
Репутация
2
Рейтинг
#1 Не работает мультивыбор 1 мая 2015 в 19:49
Пока как решение, сделанное на коленке. Выполняется проверка наличия хотя бы одного флажка для списка с мультивыбором.

system/core/controller.php строка 669
нужно заменить
  1.  
  2. public function validate_array_keys($array, $values){
  3. if (empty($values)) { return true; }
  4. foreach($values as $value){
  5. if (!isset($array[$value])) { return ERR_VALIDATE_INVALID; }
  6. }
  7. return true;
  8. }
  9.  
на

  1.  
  2. public function validate_array_keys($array, $values){
  3. if (empty($values)) { return true; }
  4. $pos = strpos($values, "1");
  5. if (!$pos) {return ERR_VALIDATE_INVALID; }
  6. return true;
  7. }
#2 Проблема с установкой дополнений после обновления ICMS 2.1.2 1 мая 2015 в 18:57
Нашел 2 проблемы, почему не встают обновления (у меня 2.2.1):
1. Первая проблема кроется непосредственно в FTP сервере, точнее, в ответе сервера на запрос php.ftp_nlist
По неизвестной причине некоторые сервера отдают только список файлов; когда другие сервера отдают список файлы+каталоги.
InstantCMS проверяет пути по наличию каталогов system и template по указанному пути. Если ftp_nlist (="сервер") возвращает только файлы, то CMS не будет найдена.
Тестирую сайт на домашнем ПК, проблема воспроизводится при использовании сервера Xlight FTP Server.
На сервере Quick'n Easy FTP Server Lite проблем нет.
Оба сервера бесплатные и portable.

Как решать эту проблему с хостером — пока не знаю. Скорее всего менять алгоритм проверки установленной InstantCMS.

2. В случае указания пути к каталогу с установленной InstantCMS в нижнем поле (Путь папки сайта) отличному от "/", InstantCMS также не будет найден. Причина кроется в файле system/controllers/admin/actions/install_ftp.php, а именно: при проверке наличия каталогов дублируется переменная пути, что приводит к невозможности проверки наличия каталогов (проверяемые значения /www/system/, а в переменной $list /system/)
Нужно в 106-ой строке заменить
Код PHP:
if (!in_array($account['path']. $dir, $list)){
на
Код PHP:
if (!in_array($dir, $list)){
Либо указывать полный путь в адресе сервера.

Ниже часть кода из файла для понимания места возникновения проблемы:
Код PHP:
$list = ftp_nlist($connection, $account['path']);
............
foreach($check_dirs as $dir){
if (!in_array($account['path']. $dir, $list)){
cmsUser::addSessionMessage(sprintf(LANG_CP_FTP_BAD_ROOT, $ftp_path), 'error');
return false;
}
#3 Как в универсальном каталоге свойства, разместить ниже полей? 1 мая 2015 в 18:52
Пригодится кому-нибудь.
Очередность вывода задается в файле system/controllers/content/frontend.php
Строчки примерно 467 (поиск по if ($ctype['props']){ )
Вот эту группу строк нужно переместить примерно на строчку 532 (перед словами
// Если ручной ввод SLUG, то добавляем поле для этого
if (!$ctype['is_auto_url']){
)
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.