Всего 122 718 комментариев

Василий Наумкин
05 марта 2013, 14:24
0
Вот прямо сейчас делаю, чтобы чанки писем заказа оформлялись на языке того контекста, в котором он сделан.

То есть, MS2 пишется с расчётом на мультиязычность. Другой вопрос, насколько удобно получится?
Aleksey
05 марта 2013, 14:15
0
Простых вариантов нет — это точно. Может быть miniShop2 порадует.
Василий Наумкин
05 марта 2013, 13:50
0
На miniShop1 этого нормально не сделать.

На miniShop2 сделать, но там еще нет инструмента связи товаров через контексты, придётся юзать Babel.

Про остальных не знаю.
Jury
05 марта 2013, 11:06
0
nic.ru — 2.4 проблем не было!!! с 2.6 не работает formit c sendmail, глюков тоже достаточно, поддержка никакая, Какой смысл в поддержке в которую дозваниваться нужно 40 минут?
Мордынский Николай
04 марта 2013, 23:33
0
не хватает кнопочки удалить комент для особо поспешных коментов)
Мордынский Николай
04 марта 2013, 23:13
0
Народ прокомментируйте пожалуйста ситуацию.
Все таки взялся за освоение создания собственных компонентов и пошел естественно по мануалу.
1 часть вроде нормально получил результат хотя в английском варианте некоторыем еста отличались от перевода на хабре habrahabr.ru/post/127722/. Ориентировался на перевод и все заработало.

А вот перевода 2 части нет и следуя инструкциям вот этого мануала.

rtfm.modx.com/display/revolution20/Developing+an+Extra+in+MODX+Revolution вот в этом месте автор радуется
Cool! We've got a MODX-styled panel going. Unfortunately, it's pretty useless. We need to add a grid to manage our Doodles. Let's go ahead and do that now.
у нас должна была появится панель на самом деле ни хрена не появляется.

Ладно на другой тестовый сайт залил готовый doodles и что. Структура файлов doodles и мануала отличается — в итоге в мануале даже не показано, что они где то инициализировали объект doodles. И вмануале есть дополнительные классы у насдледованные от modExtraManagerController, а в готовом doodles просто подключается объект doodles и все.

Я неправ или мануал для последних версий modx revo не актуален

Иван Бондаренко
04 марта 2013, 22:27
0
Это случилось на MODX Cloud?
Иван Бондаренко
04 марта 2013, 22:22
0
Залез в базу
createdon — 2013
editedon — 2013
publishedon — 2013

Кстати, может поможет: провел эксперимент. Поставил Tickets на голый сайт. Создал пару тикетов, опубликовал. Сделал снапшот этого облака и встроил снапшот в другой клауд. Результат такой же. “Published On” снова изменилась.

И еще, я восстановил основной сайт из авто бекапа, который делает клауд — все с тикетами нормально. Писать в сапорт клауда в этом случае?
Александр Донский
04 марта 2013, 22:21
0
оказалось, неправильные права на /mymanager/assets, хотя вроде я не менял их
Василий Наумкин
04 марта 2013, 22:12
0
Если ты хочешь заменить дефолтный id, то нужно наследовать таблицу от xPDOObject.

Если ты хочешь именно копировать из id в reg_nomer, когда не прислано значение — через xml этого не сделать.
Нужно изменить в классе ATPItem метод save(), чтобы он проверял reg_nomer на пустоту и если что — копировал туда id перед сохранением.
Іван Клімчук
04 марта 2013, 21:58
0
Такое часто случается, если включено сжатие js и css в админке. Об этом говорит ошибка 400 в одном из запросов. Еще возможно что-то с конфигом сервера и запросы к файлам непонятно куда уходят.
Вячеслав Серков
04 марта 2013, 21:55
0
У меня аналогичное было с использование скрипта установки нескольких расширений. Там дата ставилась по умолчанию 0, то есть где-то 1969 г… Через некоторое время, после ручной очистки кеша все даты расставлялись правильно.

Попробуйте восстановить на своём тестовом сервере копию MODx

<?php
$output = '';
include './core/config/config.inc.php';
set_time_limit(0);

function backup_tables($host,$user,$pass,$name,$tables = '*')
{    
    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);
    
    //get all of the tables
    if($tables == '*') 
    {
        $tables = array();
        $result = mysql_query('SHOW TABLES');
        while($row = mysql_fetch_row($result))
        {
            $tables[] = $row[0];
        }
    }
    else
    {
        $tables = is_array($tables) ? $tables : explode(',',$tables);
    }
    
    //cycle through
    foreach($tables as $table)
    {
        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);
    
        $return.= 'DROP TABLE '.$table.';';
        $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
        $return.= "\n\n".$row2[1].";\n\n";
    
        for ($i = 0; $i < $num_fields; $i++) 
        {
          while($row = mysql_fetch_row($result))
          {
            $return.= 'INSERT INTO '.$table.' VALUES(';
            for($j=0; $j<$num_fields; $j++) 
            {
              $row[$j] = addslashes($row[$j]);
              $row[$j] = ereg_replace("\n","\\n",$row[$j]);
              if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
              if ($j<($num_fields-1)) { $return.= ','; }
            }
            $return.= ");\n";
          }
        }
        $return.="\n\n\n";
    }
  
    //save file
    $str_name = $_SERVER[SERVER_NAME].'-'.date('j_m_Y_h_i_s').'.sql';
    $handle = fopen("./core/".$str_name,'w+');
      
    fwrite($handle,$return);
    fclose($handle);
    
    return "<p>Файл ".$str_name." успешно создан.</p>";
}

function addFolderToZip($dir, $zipArchive, $zipdir = ''){ 
    if (is_dir($dir)) { 
        if ($dh = opendir($dir)) {
        
            //Add the directory 
            if(!empty($zipdir)) $zipArchive->addEmptyDir($zipdir);
            
            // Loop through all the files 
            while (($file = readdir($dh)) !== false) { 
            
                //If it's a folder, run the function again! 
                if(!is_file($dir . $file)){ 
                
                    // Skip parent and root directories
                    if( ($file !== ".") && ($file !== "..")){ 
                        addFolderToZip($dir . $file . "/", $zipArchive, $zipdir . $file . "/"); 
                    }
                }else{
                
                    // Add the files 
                    $zipArchive->addFile($dir . $file, $zipdir . $file);
                }
            }
        }
    }
}

$output .= backup_tables($database_server,$database_user,$database_password,$dbase);

$archive_dir = "./";
$src_dir = "./";

$zip = new ZipArchive();

$fileName = $archive_dir.$_SERVER[SERVER_NAME]." backup_".date('j_m_Y_h_i_s')."_.zip";

if ($zip->open("./core/".$fileName, ZIPARCHIVE::CREATE) !== true) {
    fwrite(STDERR, "Error while creating archive file");
    $output = "<p>Ошибка создания архива</p>";
}

addFolderToZip($src_dir, $zip, $archive_dir);

$zip->close();
 
$output .= " <p>Архив <b>".$fileName."</b> успешно создан.</p>";

echo $output;

Или очистить кеш

<?php
	set_time_limit(0);
	
	function delTree($dir = './'){
		if(is_dir($dir))
		{
			if($dh = opendir($dir))
			{
				while(($file = readdir($dh)) !== false){
					if(!is_file($dir.$file)){
						if( ($file  !== '.') && ($file !== '..') ){
							delTree($dir.$file.'/');
							//chmod($dir.$file,0770);
							if(!rmdir($dir.$file))
								echo '<p style="color:red;">Директория не удалена: '.$dir.$file.'</p>';
						}
					} else {
						if((substr($file,-5,5) !== '_.zip') && ($file !== 'install.php') ){
							//chmod($dir.$file,0770);
							if(!unlink($dir.$file))
								echo '<p style="color:red;">Файл не удален: '.$dir.$file.'</p>';
						}
					}
				}
				closedir($dh);
			}
		}
	}
	delTree('./core/cache');
Василий Наумкин
04 марта 2013, 19:22
0
Просто увеличение. Со скоростями там и так всё окей, вроде.
Алексей
04 марта 2013, 19:19
0
При апгрейде линоды, статический контент быстрее отдается (без настройки nginx на кэширование статики), или просто увеличивается оперативка и доступное место?
Раз уж нужно перегружаться, нужно выжать из перезагрузки по максимуму.
Василий Наумкин
04 марта 2013, 19:19
0
Вот не знаю, как такое может быть, если Ticket — это расширенный modResource, который хранится в той же таблице modx_site_content и по тем же правилам.

Там конечно отличаются всякие процессоры и внутренние методы, но как это может влиять на бэкап\восстановление — я без понятия. Видишь, переопределения полей нет.

Так что, не знаю, чем тебе помочь. Как там насчет других дат, типа createdon, updatedon?
Василий Наумкин
04 марта 2013, 19:03
0
Если ubuntu просит перезагрузки, это значит, что иначе никак.

Обычно такое при обновлении ядра или особо важных либ. Просто выбери время и ребутни машину.
Василий Наумкин
04 марта 2013, 15:25
0
Пока только своим сниппетом, через xPDO.

В будущем запланирована такая возможность при работе через TicketLatest.
Богдан
04 марта 2013, 15:12
0
Уже сделал все через сессию. Думал, что GET запросы не будут передаваться при постраничной навигации, поэтому даже не попробовал этот вариант. Спасибо, за совет.
Василий Наумкин
04 марта 2013, 07:09
0
Если речь про miniShop, то там корзина хранится только в сессии, никаких кук.

И если сессия у вас не сохраняется, а пропадает только корзина — значит что-то ее чистит. Например плагин какой-то, или еще кто.

У меня на демо-сайте товары в корзине лежат очень долго.
Василий Наумкин
04 марта 2013, 07:06
0
Если параметры фильтра передавать через $_GET, то getPage их бережно сохранит.

Это со всех сторон правильнее, и для поисковых машин и для передачи ссылок на результаты поиска людям.