User Tools

Site Tools


Sidebar

code:modx:problemy

MODx problémy a řešení

Problém: Nesprávné odsazení ikon u potomků ve stromu v Manager

řešení

  • do souboru /web/manager/media/style/MODxLight/style.css přidat na řádek 458 pod #treeHolder{}
#treeRoot div img{
	margin-left:-6px;
} 

Problém: Nefunkční nahravání souborů s diakritikou přes FCK FileManager

  • při nahrávání souboru obsahujícího diakritiku v názvu, dojde ke skomolení názvu + nebude možné zobrazit výpis souorů

řešení (Stahuj: fileupload.zip)

  • soubor nutno uložit jako UTF-8 bez BOM
  • problém je v soboru \manager\media\browser\mcpuk\connectors\php\Commands\FileUpload.php
  • je třeba na řádku 72 zaměnit definici proměnné $filename za $filename = basename($this→convertToAscii(str_replace(“\\”,“/”,$_FILES['NewFile']['name'])));
  • přidat na řádek 244 následující kód:
    function convertToAscii($text) {
    	// Convert accented characters to their non-accented counterparts.
    	$replace_array = array(
    		// Punctuation and special characters
    		' ' => '-',
    		',' => '-',
    		'?' => '-',
    		'"' => '-',
    		'\'' => '-',
    		',' => '-',
    		':' => '-',
    		';' => '-',
    		'/' => '-',
    		'\\' => '-',
    		//'.' => '-',
    		'!' => '-',
    		'@' => '-',
    		'#' => '-',
    		'$' => '-',
    		'%' => '-',
    		'^' => '-',
    		'&' => 'and',
    		'*' => '-',
    		'(' => '-',
    		')' => '-',
    		'[' => '-',
    		']' => '-',
    		'=' => '-',
 
    		// Letters
    		'À' => 'A',
    		'Á' => 'A',
    		'Â' => 'A',
    		'Ã' => 'A',
    		'Ä' => 'e',
    		'Å' => 'A',
    		'Æ' => 'E',
    		'Ā' => 'A',
    		'Ą' => 'A',
    		'Ă' => 'A',
    		'Ç' => 'C',
    		'Ć' => 'C',
    		'Č' => 'C',
    		'Ĉ' => 'C',
    		'Ċ' => 'C',
    		'Ď' => 'D',
    		'Đ' => 'D',
    		'È' => 'E',
    		'É' => 'E',
    		'Ê' => 'E',
    		'Ë' => 'E',
    		'Ē' => 'E',
    		'Ę' => 'E',
    		'Ě' => 'E',
    		'Ĕ' => 'E',
    		'Ė' => 'E',
    		'Ĝ' => 'G',
    		'Ğ' => 'G',
    		'Ġ' => 'G',
    		'Ģ' => 'G',
    		'Ĥ' => 'H',
    		'Ħ' => 'H',
    		'Ì' => 'I',
    		'Í' => 'I',
    		'Î' => 'I',
    		'Ï' => 'I',
    		'Ī' => 'I',
    		'Ĩ' => 'I',
    		'Ĭ' => 'I',
    		'Į' => 'I',
    		'İ' => 'I',
    		'IJ' => 'J',
    		'Ĵ' => 'J',
    		'Ķ' => 'K',
    		'Ľ' => 'K',
    		'Ĺ' => 'K',
    		'Ļ' => 'K',
    		'Ŀ' => 'K',
    		'Ñ' => 'N',
    		'Ń' => 'N',
    		'Ň' => 'N',
    		'Ņ' => 'N',
    		'Ŋ' => 'N',
    		'Ò' => 'O',
    		'Ó' => 'O',
    		'Ô' => 'O',
    		'Õ' => 'O',
    		'Ö' => 'e',
    		'Ø' => 'O',
    		'Ō' => 'O',
    		'Ő' => 'O',
    		'Ŏ' => 'O',
    		'Œ' => 'E',
    		'Ŕ' => 'R',
    		'Ř' => 'R',
    		'Ŗ' => 'R',
    		'Ś' => 'S',
    		'Ş' => 'S',
    		'Ŝ' => 'S',
    		'Ș' => 'S',
    		'Š' => 'S',
    		'Ť' => 'T',
    		'Ţ' => 'T',
    		'Ŧ' => 'T',
    		'Ț' => 'T',
    		'Ù' => 'U',
    		'Ú' => 'U',
    		'Û' => 'U',
    		'Ü' => 'e',
    		'Ū' => 'U',
    		'Ů' => 'U',
    		'Ű' => 'U',
    		'Ŭ' => 'U',
    		'Ũ' => 'U',
    		'Ų' => 'U',
    		'Ŵ' => 'W',
    		'Ŷ' => 'Y',
    		'Ÿ' => 'Y',
    		'Ý' => 'Y',
    		'Ź' => 'Z',
    		'Ż' => 'Z',
    		'Ž' => 'Z',
    		'à' => 'a',
    		'á' => 'a',
    		'â' => 'a',
    		'ã' => 'a',
    		'ä' => 'e',
    		'å' => 'a',
    		'ā' => 'a',
    		'ą' => 'a',
    		'ă' => 'a',
    		'å' => 'a',
    		'æ' => 'e',
    		'ç' => 'c',
    		'ć' => 'c',
    		'č' => 'c',
    		'ĉ' => 'c',
    		'ċ' => 'c',
    		'ď' => 'd',
    		'đ' => 'd',
    		'è' => 'e',
    		'é' => 'e',
    		'ê' => 'e',
    		'ë' => 'e',
    		'ē' => 'e',
    		'ę' => 'e',
    		'ě' => 'e',
    		'ĕ' => 'e',
    		'ė' => 'e',
    		'ƒ' => 'f',
    		'ĝ' => 'g',
    		'ğ' => 'g',
    		'ġ' => 'g',
    		'ģ' => 'g',
    		'ĥ' => 'h',
    		'ħ' => 'h',
    		'ì' => 'i',
    		'í' => 'i',
    		'î' => 'i',
    		'ï' => 'i',
    		'ī' => 'i',
    		'ĩ' => 'i',
    		'ĭ' => 'i',
    		'į' => 'i',
    		'ı' => 'i',
    		'ij' => 'j',
    		'ĵ' => 'j',
    		'ķ' => 'k',
    		'ĸ' => 'k',
    		'ł' => 'l',
    		'ľ' => 'l',
    		'ĺ' => 'l',
    		'ļ' => 'l',
    		'ŀ' => 'l',
    		'ñ' => 'n',
    		'ń' => 'n',
    		'ň' => 'n',
    		'ņ' => 'n',
    		'ʼn' => 'n',
    		'ŋ' => 'n',
    		'ò' => 'o',
    		'ó' => 'o',
    		'ô' => 'o',
    		'õ' => 'o',
    		'ö' => 'e',
    		'ø' => 'o',
    		'ō' => 'o',
    		'ő' => 'o',
    		'ŏ' => 'o',
    		'œ' => 'e',
    		'ŕ' => 'r',
    		'ř' => 'r',
    		'ŗ' => 'r',
    		'š' => 's',
    		'ù' => 'u',
    		'ú' => 'u',
    		'û' => 'u',
    		'ü' => 'e',
    		'ū' => 'u',
    		'ů' => 'u',
    		'ű' => 'u',
    		'ŭ' => 'u',
    		'ũ' => 'u',
    		'ų' => 'u',
    		'ŵ' => 'w',
    		'ÿ' => 'y',
    		'ŷ' => 'y',
    		'ý' => 'y',
    		'ż' => 'z',
    		'ź' => 'z',
    		'ž' => 'z',
    		'ß' => 's',
    		'ſ' => 's',
    		'Α' => 'A',
    		'Ά' => 'A',
    		'Β' => 'B',
    		'Γ' => 'G',
    		'Δ' => 'D',
    		'Ε' => 'E',
    		'Έ' => 'E',
    		'Ζ' => 'Z',
    		'Η' => 'I',
    		'Ή' => 'I',
    		'Θ' => 'TH',
    		'Ι' => 'I',
    		'Ί' => 'I',
    		'Ϊ' => 'I',
    		'Κ' => 'K',
    		'Λ' => 'L',
    		'Μ' => 'M',
    		'Ν' => 'N',
    		'Ξ' => 'KS',
    		'Ο' => 'O',
    		'Ό' => 'O',
    		'Π' => 'P',
    		'Ρ' => 'R',
    		'Σ' => 'S',
    		'Τ' => 'T',
    		'Υ' => 'Y',
    		'Ύ' => 'Y',
    		'Ϋ' => 'Y',
    		'Φ' => 'F',
    		'Χ' => 'X',
    		'Ψ' => 'PS',
    		'Ω' => 'O',
    		'Ώ' => 'O',
    		'α' => 'a',
    		'ά' => 'a',
    		'β' => 'b',
    		'γ' => 'g',
    		'δ' => 'd',
    		'ε' => 'e',
    		'έ' => 'e',
    		'ζ' => 'z',
    		'η' => 'i',
    		'ή' => 'i',
    		'θ' => 'th',
    		'ι' => 'i',
    		'ί' => 'i',
    		'ϊ' => 'i',
    		'ΐ' => 'i',
    		'κ' => 'k',
    		'λ' => 'l',
    		'μ' => 'm',
    		'ν' => 'n',
    		'ξ' => 'ks',
    		'ο' => 'o',
    		'ό' => 'o',
    		'π' => 'p',
    		'ρ' => 'r',
    		'σ' => 's',
    		'τ' => 't',
    		'υ' => 'y',
    		'ύ' => 'y',
    		'ϋ' => 'y',
    		'ΰ' => 'y',
    		'φ' => 'f',
    		'χ' => 'x',
    		'ψ' => 'ps',
    		'ω' => 'o',
    		'ώ' => 'o',
    	);
 
	   $text = strtr($text, $replace_array);
	   $text = str_replace('--',"-",$text);
	   $text = str_replace('--',"-",$text);
	   $text = str_replace('--',"-",$text);
	   $text = strtolower($text);
 
	   return $text;
    }

Problém: frontend zobrazuje prázdnou (bílou) stránku a Manager hlásí chyby

Warning: fopen(X:/www/public/MODx/manager/media/style//login.html) [function.fopen]: failed to open stream: No such file or directory in X:\www\public\MODx\manager\includes\accesscontrol.inc.php on line 83

Warning: filesize() [function.filesize]: stat failed for X:/www/public/MODx/manager/media/style//login.html in X:\www\public\MODx\manager\includes\accesscontrol.inc.php on line 84

Warning: fread(): supplied argument is not a valid stream resource in X:\www\public\MODx\manager\includes\accesscontrol.inc.php on line 84

Warning: fclose(): supplied argument is not a valid stream resource in X:\www\public\MODx\manager\includes\accesscontrol.inc.php on line 85

Řešení:

  1. řešení
    • /assets/cache - nastavit atributy na 777
    • /assets/cache/siteCache.idx.php - nastavit atributy na 777, popřípadě přepsat zálohou
    • /assets/cache/sitePublishing.idx.php - nastavit atributy na 777, popřípadě přepsat zálohou (obsahuje pouze <?php $cacheRefreshTime=0; ?>)
  2. řešení
    • řešením je také soubory smazat a v Adminu kliknout v záložce WEB na VYROVNÁVACÍ PAMĚŤ

Problém: převod DB z latin1 do utf8 (pod windows)

  1. dump DB (s kódováním dat v latin1) přes PhpMyAdmina, který to vyexportuje v utf8 (ale se špatnou diakritikou)
  2. naimportování na localhost přes PhpMyAdmina (opět to bude se špatnou diakritikou)
  3. nyní je třeba provést dump z příkazové řádky pomocí příkazu (možná by šel ještě zjednodušit)
mysqldump.exe -u root --default-character-set=latin1 --compatible=mysql40 --no-create-db --quick --compact webXXX_u1 > dump.sql
  1. soubor dump.sql je nyní v kódování utf8
  2. teď pomocí příkazové řádky opět nahrajeme zpět do MySQL DB příkazem
mysql -u root --default-character-set=utf8 web188_db2 < d:\bbb.sql

Možná by mohlo být někdy potřeba

  1. pokud by byl problém s diakritikou z důvodu nastavení znakové sady v souboru je třeba si soubor otevřít v nějakém editoru (PSPad, Notepad++, …), který má podporu nahrazování a odstranit ze souboru (tzn. nahradit za prázdné místo) několik řádků, a to tyto sady řádků:
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;

a

SET character_set_client = @saved_cs_client;

Problémy s nastavením MySQL

  1. po spuštění z CMD se objeví hláška ERROR 2006 (HY000) at line 46: MySQL server has gone away
  2. v souboru my.ini nastavte vyšší hodnotu max_allowed_packet = 16M

Problém: AjaxSearch 1.8.0 a UTF8

  • tady se ten kdo tenhle snippet trosku sekl protože mu u nastavení znakové sady chybí závorky za názvem metody ($this→setDatabaseCharset()), takže se znaková sada nemohla nikdy nastavit na utf8
  • je třeba změnit v souboru AjaxSearch/classes/ajaxSearch.class.inc.php na řádce č. 104
    $this->setDatabaseCharset;  // initialize database charset and pcre modifiers

na

    $this->setDatabaseCharset();  // initialize database charset and pcre modifiers
  • taká je třeba přidat do souboru AjaxSearch/classes/search.class.inc.php příkaz mb_internal_encoding(“UTF-8”); na řádku č. 731
        $mbSubstr = 'mb_substr';
        $mbStrrpos = 'mb_strrpos';
        mb_internal_encoding("UTF-8");
      }
      else {

Problém: AjaxSearch neořezává ukázky textů s ohledem na mezery

  • je třeba zaměnit znak >1 za >0 v souboru AjaxSearch/classes/search.class.inc.php na řádce č. 795
      // sort the extracts by left and right position  
      $nbExtr = count($extracts); // number of relevant extracts founded
      if ($nbExtr > 0){
        for($i=0;$i<$nbExtr;$i++) {
          $lft[$i] = $extracts[$i]['left'];

Problém: AjaxSearch a vyhledávání při zadání mezery do vyhledávání

  • úprava souboru AjaxSearch/classes/search.class.inc.php přidáním $searchString = trim($searchString); na řádek č. 116
  function defaultStripInput($searchString){
 
    if ($searchString !== ''){  
      // Remove escape characters
      $searchString = stripslashes($searchString);
 
      // Remove modx sensitive tags
      $searchString = stripTags($searchString);
 
      // Strip HTML tags
      $searchString = stripHtml($searchString);  
 
      // Trim spaces
      $searchString = trim($searchString);
    }  
    return $searchString;
  }
code/modx/problemy.txt · Last modified: 2014/01/23 19:29 (external edit)