Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 143 комментария

Алексей Карташов
Алексей Карташов
Если не хотите писать запрос руками, то юзайте pdoTools Василия.
pdoTools — это такой конструктор запросов. В нём можно присоединять сколько вам угодно таблиц, использовать сортировки и всё-всё-всё. Описание ищите здесь на сайте.
Илья Уткин
Илья Уткин
Bond Nataly
Bond Nataly
Здравствуйте, у меня проблемы 2 и 3, jquery вызывается в самом начале. Покопалась, похоже из-за того, что в вывод только что отправленного коммента не подставляется его id
<li class="ticket-comment" id="comment-" data-parent="0">
...
</li>
С чем это может быть связано?
ps Консоль ошибок не выдает
Мордынский Николай
Мордынский Николай
Народ прокомментируйте пожалуйста ситуацию.
Все таки взялся за освоение создания собственных компонентов и пошел естественно по мануалу.
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 не актуален

Иван Бондаренко
Иван Бондаренко
Залез в базу
createdon — 2013
editedon — 2013
publishedon — 2013

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

И еще, я восстановил основной сайт из авто бекапа, который делает клауд — все с тикетами нормально. Писать в сапорт клауда в этом случае?
Василий Наумкин
Василий Наумкин
Если ты хочешь заменить дефолтный id, то нужно наследовать таблицу от xPDOObject.

Если ты хочешь именно копировать из id в reg_nomer, когда не прислано значение — через xml этого не сделать.
Нужно изменить в классе ATPItem метод save(), чтобы он проверял reg_nomer на пустоту и если что — копировал туда id перед сохранением.
Вячеслав Серков
Вячеслав Серков
У меня аналогичное было с использование скрипта установки нескольких расширений. Там дата ставилась по умолчанию 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');
Алексей
Алексей
При апгрейде линоды, статический контент быстрее отдается (без настройки nginx на кэширование статики), или просто увеличивается оперативка и доступное место?
Раз уж нужно перегружаться, нужно выжать из перезагрузки по максимуму.
Василий Наумкин
Василий Наумкин