Implentace texy a texyly – jak na to?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
zuhla
Člen | 33
+
0
-

Dobrý den, mám problém s implentací texy a texyly.

ArticlesPresenter:

public function templatePrepareFilters($template)
       {
        parent::templatePrepareFilters($template);

       // inicializace Texy
       TemplateFilters::$texy = new Texy();
       TemplateFilters::$texy->encoding = 'utf-8';
       TemplateFilters::$texy->allowedTags = Texy::NONE;
       TemplateFilters::$texy->allowedStyles = Texy::NONE;
       TemplateFilters::$texy->setOutputMode(Texy::HTML5);

       // registrace filtru texyElements
       $template->registerFilter('TemplateFilters::texyElements');
       }

A template:

<texy>**Ahoj**</texy>

Děkuji všem za odpovědi a rady.

S pozdravem Krhovský

Editoval zuhla (19. 10. 2010 19:37)

Aurielle
Člen | 1281
+
0
-

Dobrý den, mám problém s implementací XXX. Nepřiložím chybovou hlášku a budu všechny žádat o odpovědi a rady.

Vážně, pokud nám více nepopíšeš svůj problém nebo nepřiložíš chybovou hlášku, tak ti pomoci nedokážeme…

edit: je to implementace, nikoliv implantace :D

Editoval gmvasek (19. 10. 2010 19:24)

Honza Marek
Člen | 1664
+
0
-

Lepší je si vyrobit šablonový helper. Filtr texy elements nelze doporučit.

presenter:

protected function createTemplate()
{
	$template = parent::createTemplate();
	$texy = new Texy;
	$template->registerHelper("texy", array($texy, "process"));
	return $template;
}

šablona:

{!$promennaSTexyZdrojem|texy}

{* nebo *}

{block|texy}
**Ahoj!**
{/block}

snad jsem to napsal přesně

Dobrý den, mám problém s implantací texy a texyly.

Ovšem Texyla není žádný implantát, to bych si vyprošoval.

Aurielle
Člen | 1281
+
0
-

@Honza Marek: neměla by náhodou metoda createTemplate vracet instanci ITemplate a nikoliv Texy?

Honza Marek
Člen | 1664
+
0
-

Měla, ovšem mohl jsi to brát jako test pozornosti :-D

zuhla
Člen | 33
+
0
-

Velice se omlouvám za implantaci moje chyba, už jsem opravil. Vůbec jsem si toho nevšiml opravil mě to google chrome bez mého vědomí. Musím si tu funkci vypnout. A mohl by jste mi teď popsat kompletní návod jak na texylu? Zkoušel jsem jak máte v example to nette a mohužel nefunguje hlásí

Cannot redeclare class Nette\Caching\Cache
Honza Marek
Člen | 1664
+
0
-

Jestli je tam taková chyba, pravděpodobně je to způsobeno nějakou marginalitou, jako je nesmazaná cache nebo něco podobného. Jinak zdrojákem se inspirovat určitě lze. Nyní vidím, že tam chybí příklad na ten helper. To (někdy) přidám.

Aurielle
Člen | 1281
+
0
-

Tohle vypadá že buď 2× načítáš Nette nebo že se pokoušíš zavolat require na Cache…

zuhla
Člen | 33
+
0
-

Nette 2× nenačítam ani cache nevolám. Jestli chceš tak řekni čeho chceš poslat zdrojáky a já je sem hodím.

zuhla
Člen | 33
+
0
-

Mmnt zmazal jsem temp, a teď naskočilo

Temp path does not exist.

File: C:\xampp\htdocs\texyla\libs\WebLoader\WebLoader.php   Line: 96

Line  89:         * @param string temp path
Line  90:         * @return WebLoader
Line  91:         */
Line  92:        public function setTempPath($tempPath) {
Line  93:            $tempPath = realpath($tempPath);
Line  94:
Line  95:            if ($tempPath === false) {
Line  96:                throw new \FileNotFoundException("Temp path does not exist.");
Line  97:            }
Line  98:
Line  99:            if (!is_writable($tempPath)) {
Line 100:                throw new \InvalidStateException("Directory '$tempPath' is not writeable.");
Line 101:            }
Line 102:
Line 103:            $this->tempPath = $tempPath;
Aurielle
Člen | 1281
+
0
-

Nemáš nakonfigurovaný WebLoader… takže si do BasePresenteru doplň něco takového:

protected function createComponentCss($name)
{
	$css = new \WebLoader\CssLoader($this, $name);

	$css->sourcePath = WWW_DIR . '/css';
	$css->tempPath = WWW_DIR . '/webtemp';
	$css->tempUri = \Nette\Environment::getVariable('baseUri') . 'webtemp';

	return $css;
}

protected function createComponentJs($name)
{
	$js = new \WebLoader\JavaScriptLoader($this, $name);

	$js->sourcePath = WWW_DIR . '/js';
	$js->tempPath = WWW_DIR . '/webtemp';
	$js->tempUri = \Nette\Environment::getVariable('baseUri') . 'webtemp';

	return $js;
}
zuhla
Člen | 33
+
0
-

Je tam

protected function createComponentTexyla()
	{
		$texyla = new TexylaLoader;

		$texyla->filters[] = new WebLoader\VariablesFilter(array(
			"baseUri" => Environment::getVariable("baseUri"),
			"previewPath" => $this->link("Texyla:preview"),
			"filesPath" => $this->link("Texyla:listFiles"),
			"filesUploadPath" => $this->link("Texyla:upload"),
			"filesMkDirPath" => $this->link("Texyla:mkDir"),
			"filesRenamePath" => $this->link("Texyla:rename"),
			"filesDeletePath" => $this->link("Texyla:delete"),
		));

		$texyla->addFile(WWW_DIR . "/js/texyla-init.js");

		return $texyla;
	}

Ale i při přidání dalšího kodu furt to samé. Nemůže najít cestu do temp. Při tom tam je.

Honza Marek
Člen | 1664
+
0
-

Jo… v tom, co si stáhneš z githubu, tak chybí některé složky. Git totiž neumí verzovat prázdné složky.

zuhla
Člen | 33
+
0
-

Dobrý den, tak už jsem vytvořil „webtemp“ a už mi to hodilo další chybu.

Source path does not exist.

Source file ▼

File: C:\xampp\htdocs\texyla\libs\WebLoader\WebLoader.php   Line: 69

Line 62:         * @param string source path
Line 63:         * @return WebLoader
Line 64:         */
Line 65:        public function setSourcePath($sourcePath) {
Line 66:            $sourcePath = realpath($sourcePath);
Line 67:
Line 68:            if ($sourcePath === false) {
Line 69:                throw new \FileNotFoundException("Source path does not exist.");
Line 70:            }
Line 71:
Line 72:            $this->sourcePath = $sourcePath;
Line 73:
Line 74:            return $this;
Line 75:        }
Line 76:

Ale bohužel teď nevím jak se má jmenovat tato složka? Nebylo by možné poslat nějaký seznam složek i těch prázdných? Děkuji

Etch
Člen | 403
+
0
-

sourcePath je složka obsahující texylu. Nastavení proměnné je v souboru classes/TexylaLoader.php v konstructoru.

		$this->tempUri = Environment::getVariable("baseUri") . "webtemp";
		$this->tempPath = WWW_DIR . "/webtemp";
		$this->sourcePath = APP_DIR . "/../../../texyla";

Editoval Etch (29. 10. 2010 16:14)

Felix
Nette Core | 1190
+
0
-

Honza Marek napsal(a):

<?php
protected function createTemplate()
{
	$template = parent::createTemplate();
	$texy = new Texy;
	$template->registerHelper("texy", array($texy, "process"));
	return $template;
}
?>

tohle je fakt uplne bomba, zbytecny to dlouho vypisovat s

<?php
$template->registerFilter('Nette\Templates\TemplateFilters::texyElements');
?>

fakt najs :)

Editoval Felix (8. 2. 2011 19:50)