Etomite 1.1 s Texylou je tu!

Téma venovaná novinkám okolo redakčného systému Etomite.

Moderátor: Moderators

Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Dnes som testoval Etomite v praxi: aktualizácia z Etomite Prelude 1.1 na Etomite Prelude 1.1 s Texylou (web Etomite.SK/CZ). Databázu som aktualizoval manuálne pomocou skriptu (myslím, že na konci má byť bodkočiarka a nie čiarka ako je to v 053upgrade.sql):

Kód: Vybrať všetko

ALTER TABLE `{PREFIX}site_content` ADD `texy` mediumtext collate utf8_unicode_ci NOT NULL ;
Nakopíroval som zmenené súbory. Aby bola aktualizácia databázy úspešne dokončená, tak potrebujem prekopírovať obsah content do texy, pretože teraz je tabuľka texy prázdna, ako nato? Aby som to nemusel robiť manuálne...
Prílohy
texyla.png
texyla.png (109.72 KiB) 10403 zobrazení
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Poriešené. :) Kamarát qWečko mi poradil mySQL príkaz:

Kód: Vybrať všetko

update etomite_site_content set texy = content where 1=1 ;
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Texy syntax som používal už dávnejšie, ale všetko som riešil pomocou snippetu, a nemal som tabuľky rozdelené na texy a content. Môj texy syntax sa nachádzal v tabuľke content. Príkazmi hore som vytvoril tabuľku texy a skopíroval donej obsah content tabuľky, kde sa nachádzali články v texy syntaxi. Teraz potrebujem texy tabuľku prehnať texy konvertorom a html uložiť do content... dalo by sa to aj tak, žeby som otvoril každý dokument a uložil ho, je to jeden zo spôsobov, ale článkov mám kúsok viacej (nevýhoda takéhoto spôsobu je tá, že sa zmení dátum vytvorenia)...

Môj script vyzerá takto (dole). Keďže sa v PHP a mySQL veľmi nevyznám, tak potrebujem kúsok nakopnúť (neskôr by sa dal script zneužiť na konvertovanie html2texy, pre užívateľov čo majú opačný problém)...

Kód: Vybrať všetko

<?php
require_once 'manager/media/texyla/texy/texy.compact.php';
$texy = new Texy();

$connection = mysql_connect("localhost", "root", "pass");
mysql_select_db("www_etomite_sk", $connection);
$result = mysql_query("SELECT texy FROM etomite_site_content", $connection);
while($row = mysql_fetch_row($result))
	{
	$html = $texy->process($row['COUNT(name)']);
	print_r($html);
	mysql_query("UPDATE SET content = '$html' WHERE id = '$row'", $connection);
	}
?>
Update - HTML2Texy script:

Kód: Vybrať všetko

<?php
require_once 'manager/media/texyla/texy/texy.compact.php';
$texy = new Texy();

$connection = mysql_connect("db.etomite.sk", "www_etomite_sk", "-");
mysql_select_db("www_etomite_sk", $connection);
$result = mysql_query("SELECT texy FROM etomite_site_content", $connection);
$id = 0;
while($row = mysql_fetch_row($result))
   {
   $html = $texy->process($row['$id']);
   mysql_query("UPDATE site_content SET content = '$html' WHERE id = '$id'", $connection);
   $id ++;
   }
?>
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
krteczek
Texyla
Príspevky: 14
Dátum registrácie: St Jún 11, 2008 10:02 am
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa krteczek »

Tak jsem to přepsal do funkční podoby.
Nejprve musíte přidat sloupec texy (pokud ho už nemáte)
Pak zavoláte v prohlížeči tento script
Je to i se stránkováním, kdybyste těch článků měli moc

!upravuje jen ty řádky, které mají prázdný texy!

Kód: Vybrať všetko

<?php
error_reporting(E_ALL);

require_once 'texy.compact.php';

require_once 'db.php';


# název tabulky na které se bude provádět převod
$tableName = 'etomite_beta2_site_content';

# začátek změn
$start = 0;

# kolik se má změnit řádků maximálně
$pocet = 10;

# vytvoření instance Texy

$texy = new Texy();


# vytvoření instance db

$dbs = new db('127.0.0.1', 'root', '', 'etomite' , 'utf8');

$dbs->log = true;

$dbs->logPath = '/log/';


# vytvoření instance stránkovače
$str = new Strankovani($dbs);
$str->pocetOdkazuPred = 2;

$str->getName = 'page';


$podmn = " ORDER BY `id` ASC ";

#inicializace stránkovací rutiny
$str->str($tableName, $podmn);

# zprávy

$txt = ''; 


# vytažení 

$d = "SELECT `id`, `content`, `texy` FROM `" . $tableName . "` " . $podmn . $str->limit();

$v = $dbs->q($d);

if(is_array($v))

  {

    foreach($v as $f)

      {

        if(empty($f['texy']))

          {

            # předpokládám že v content je uložená Texy syntaxe:

            # provádí se:

            #  - přesun texy syntaxe z content do texy

            #  - převod texy syntaxe do html a uložení html do content          

            

            # převod na texy

            $content = $texy->process($f['content']);

            

            # sestavení dotazu

            $d1 = "UPDATE `" . $tableName . "` SET";

            $d2 = array(

              'content' => $content,

              'texy' => $f['content'],

              );

            $d3 = "WHERE `id` = " . $f['id'];

            $v1 = $dbs->in($d1, $d2, $d3);

            if($v1 === true)

              {

                # je to v pořádku

                $txt .= "\n" . '- řádek č. ' . $f['id'] . ' je O.K.';

              }

            else

              {

                # vrátilo to chybu

                $txt .=  "\n" . '- řádek č. ' . $f['id'] . ' ' . $v1;

              }

          }

        

      }

  }
else
	{
		echo $v;
	}
echo $str->BlokCisel();

echo $texy->process($txt);

?>
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Pekný script. K otestovaniu mi ešte chýba súbor db.php a trieda Strankovani.
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
krteczek
Texyla
Príspevky: 14
Dátum registrácie: St Jún 11, 2008 10:02 am
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa krteczek »

no jo, to mi nedošlo, ten script db je moje db třída, nikde nepublikovaná
A stránkování je na tom stejně
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Ok, v pohodke... ako návod to pomohlo a plní to svoj účel. :) Aspoň sa trocha aktívne zapojím a budem mať dôvod požiť ďalší projekt od Davida Grudla - dibi.
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
krteczek
Texyla
Príspevky: 14
Dátum registrácie: St Jún 11, 2008 10:02 am
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa krteczek »

Tak jsem to přepsal, na funkčnost bez mé db...

Kód: Vybrať všetko

<?php
error_reporting(E_ALL);
require_once 'texy.compact.php';

# require_once 'db.php';

# název tabulky na které se bude provádět převod
$tableName = 'etomite_beta2_site_content';

# začátek změn
$od = !empty($_GET['dalsi']) ? $_GET['dalsi'] : 0;

# kolik se má změnit řádků maximálně
$po = 10;

# vytvoření instance texy
$texy = new texy();

# vytvoření instance db
# $dbs = new db('127.0.0.1', 'root', '', 'etomite' , 'utf8');
# $dbs->log = true;
# $dbs->logpath = '/log/';

function dbConnect($server = '127.0.0.1', $user = 'root', $password = '', $dbname = 'etomite', $kodovani = 'utf8')
	{
		/*
			funkci poprvé voláme včetně parametrů, kde uvedeme potřebné údaje, 
			nebo je natvrdo zapíšeme do inicializace funkce jak je ukázáno.
		*/
		static $pripoj;
		if($pripoj)
			{
				# už je nastaveno připojení, není třeba znovu připojovat
				return $pripoj;
			} 
		if(!$pripoj=mysql_connect($server, $user , $password))
			{
				trigger_error('<meta http-equiv="content-type" content="text/html; charset=utf-8"><p>nepodařilo se připojit k databázovému stroji...', e_user_error);
			}
		if(!@mysql_select_db($dbname))
			{
				trigger_error('<meta http-equiv="content-type" content="text/html; charset=utf-8"><p>je mi líto, databáze je nedostupná... chyba neznámá db</p>', e_user_error);
			}
		else
			{
				mysql_query("set names '" . $kodovani . "'");
				return $pripoj;
			}
	}
function dbEsc($txt)
	{
		/*
			funkce slouží k ošetření vstupních dat do databáze
			$text = dbEsc($_POST['text']);
			Pokud je to text, ošetří ho některou z funkcí (podle toho která je dostupná))
			
		*/
		if(!is_numeric($txt))
			{
				$txt =  "'" . (function_exists('mysql_real_escape_string') ? mysql_real_escape_string($txt, dbConnect()) : (function_exists('mysql_escape_string') ? mysql_escape_string($txt) : addslashes($txt)) ) . "'";
			}
		return $txt;
	}
	
dbConnect('127.0.0.1', 'root', '', 'etomite', 'utf8');

# zprávy
$txt = ''; 

# vytažení 
$d = "SELECT `id`, `content`, `texy` FROM `" . $tableName . "`  ORDER BY `id` ASC LIMIT " . $od . ", " . $po . "";
if($v = mysql_query($d))
	{
		$p = mysql_num_rows($v);
		if($p > 0)
			{
				for($i = 0; $i < $p; $i++)
					{
						$r = mysql_fetch_assoc($v);
						$content = $texy->process($r['content']);
						$d1 = "UPDATE `" . $tableName . "` SET "
								. " `content` = " . dbEsc($content) . ", "
								. " `texy` = " . dbEsc($r['content'])
								. " WHERE `id` = " . dbEsc($r['id']);
						if($v1 = mysql_query($d1))
							{
								# je to v pořádku
								$txt .= "\n" . '- řádek č. ' . $r['id'] . ' je o.k.';
							}
						elseif(mysql_errno())
							{
								# vrátilo to chybu
								$txt .= "\n" . '- řádek č. ' . $r['id'] . "\n  :) " . $d1 . "\n  " . mysql_error();
							}
						else
							{
								$txt .= "\n" . '- řádek č. ' . $r['id'] . " Nebyl změněn...";
							}						
					}
				# if()
				$txt .= "\n\n" . '"Pokračovat":' . $_SERVER['SCRIPT_NAME'] . '?dalsi=' . ($r['id'] + 1) . "\n\n";
					
			}
		else
			{
				$txt .= '<p>V databázi nic není... ';
			}
	}
else
	{
		$txt .= "\n- došlo k chybě při práci s databází: \n  " . $d . "\n " . mysql_error();
	}

echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">' . $texy->process($txt);
?>
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Scriptík som zatiaľ stihol otestovať na databáze mySQL 4.0, kde mi to nefunguje kvôli "nepovoleným znakom" (aspoň toľko som sa dozvedel z debugeru, ktorý vypľulo texy.compact). Otestujem to ešte na mySQL 5.0 a konvertovanie novej inštalácie Etomite a potom nejaké SK/CZ dáta. Keď budem mať nejaké podrobnosti, tak sem hodím report.
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
krteczek
Texyla
Príspevky: 14
Dátum registrácie: St Jún 11, 2008 10:02 am
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa krteczek »

A jaká je tam verze PHP?

MySql4.0 nemá podporu pro jiné znakové sady. Kde přesně je problém, netuším, osobně jsem si myslel že tyto db už nikde nejsou...

V tom případě je třeba udělat dump databáze, a tyto data uložit do utf-8 a teprve ukládat do MySql5.x (teda já bych to asi takhle udělal, na 4.0 bych nejel)
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Bežím väčšinou na PHP 5.2.6 :) Asi je načase zaktualizovať fórum aj web na mySQL 5.0 :)
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Prekonvertoval som DB na mySQL 5.0.51b a PHP 5.2.6. Pri spustení scriptu som narazil na tú istú chybovú hlášku:

Kód: Vybrať všetko

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /data/e/t/etomite.sk/web/manager/media/texyla/texy/texy.compact.php on line 279
Asi sa nato vybodnem (prekopírujem obsah content, kde sú moje staré články v texy do texy tabuľky a v etomite ich uložím, aby sa konvertli do html v content), som asi jediný človek, ktorý už má svoje staré články v DB, ktoré sú v Texy! formáte.

Script sa dá krásne použiť pre oveľa častejší prípad, keď sú články v HTML a treba ich prerobiť do Texy, napr. pomocou Html2Texy (prvé rýchle použitie).
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
krteczek
Texyla
Príspevky: 14
Dátum registrácie: St Jún 11, 2008 10:02 am
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa krteczek »

Ahoj,

Takže našel jsem chybu, kterou jsi mi popisoval: nejde vytvořit odkaz na stránku jako článek.

Ceý problém byl v tom, že jsem při přidávání Texyly nenevěděl, že rozdíl mezi článkem a referencí je v příznaku a že obojí má stejný název proměnné. Tím došlo k automatickému generování <a href=... z odkazu. Pro použití tohoto odkazu při načítání stránky se používá funkce header(); která jako parametr očekává adresu odkazu ale měla tam místo toho html.

Opraveno, Adresa ke stažení: http://download.jaknato.com/etomite-1.1-texyla.zip

pokud si chcete jen opravit ten jeden soubor, kde ta chyba byly, tak upravte následující soubor:
./manager/procesors/save_content.processor.php
tento kód:

Kód: Vybrať všetko

//edit byx krteczek: path to use Texyla
if($which_editor == 6)
	{
		# when use Texyla
		$content = o(texyla($_POST['ta'], 'admin', 'utf-8'));
		$texy = o($_POST['ta']); //added for Texyla
	}
else
	{
		# non use Texyla
		$content = o($_POST['ta']);
		$texy = o($_POST['ta']); //added for Texyla
	}
nahraďte tímto kódem:

Kód: Vybrať všetko

/edit by krteczek: path to use Texyla
if($which_editor == 6)
	{
		/* edit by krteczek 2008-10-02
		$content = o(texyla($_POST['ta'], 'admin', 'utf-8'));
		*/
		if($_POST['type'] === 'reference')
			{
				# jedná se o odkaz (reference) tak nebudeme upravovat text
				$content = o($_POST['ta']);
			}
		else
			{
				# when use Texyla
				$content = o(texyla($_POST['ta'], 'admin', 'utf-8'));
			}		
		$texy = o($_POST['ta']); //added for Texyla
	}
else
	{
		# non use Texyla
		$content = o($_POST['ta']);
		$texy = o($_POST['ta']); //added for Texyla
	}
takže tohle je vše co musíte udělat pro opravu výše zmíněné chyby.
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Ďakujem za fixnutie chybičky. Táto verzia Etomite, Texyly, Texy! a FSHL je už zrelá na ostré tetovanie a prevádzku, odporúčam ju vrelo každému. :)

Ešte napíšem nejaký článok na hlavnú stránku Etomite, aby sa vedelo vo čo kráčí a prečo je toto spojenie ideálne na písanie článkov.
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Etomite 1.1 s Texylou je tu!

Príspevok od používateľa _rasel^ »

Našiel som ďalšie chybičky krásy pri testovaní na ktoré som narazil až teraz počas fungovania na Etomite.sk. Týka sa vypínania a zapínania editorov. Vysvetlím o čo ide a ako to funguje.

Fungovanie Texy! syntaxi pri vypnutých editoroch v HTML:

V konfigurácií Etomite v časti rozhranie & editor sa dá vybrať globálne nastavenia pre celé Etomite a to použiť editor dokumentov pre úpravu článkov v Etomite (Áno/Nie). Ak je možnosť vypnutá, tak sa pri úprave článkov nepoužívajú editorý a používateľ vidí HTML kód článku. Ale pri úprave v HTML funguje Texy syntax - čo by nemal. To že sa do tabuľky Content a Texy ukladá HTML kód je správne, aby sa zachovala aktuálna verzia článkov.

Každý článok má vo vlastnostiach možnosť externý editor?. Táto možnosť vypína editory v prípade, že je globálne zapnuté používanie editorov pri úprave článkov. Ak ja lokálne v dokumente vypnutý editor (vplyvom nastavenia vo vlastnostiach), tak používateľ upravuje článok v HTML a tiež tu funguje Texy syntax čo by nemal.

Nemožnosť pridávania kľúčových slov:

Neviem prečo, ale vo vlastnostiach, ak si označím nejaké kľúčové slovo, tak sa toto nastavenie neuloží. Neviem či je to spôsobené implementovaným editorom Texyla, ešte to otestujem...

Myslím, že toto by mali byť posledné chybičky krásy..
..:: Etomite CMS → Rulezzz !.!.!. ::..
Napísať odpoveď