#2 3. 6. 2009 0:17
Re: Nette a Texyla?
Já jsem s Texylou nikdy nedělal, ale Honza Marek na poslední Poslední sobotě měl přednášku právě na toto téma, takže si myslím, že nějaká ukázka by se mohl brzy objevit veřejně, případně zkus spíše napsat na fórum Texyly.
Offline
#3 3. 6. 2009 8:49
- Honza Marek
- Moderator

- Místo: Kladno
- Registrovaný: 31. 3. 2007
- Příspěvky: 1281
- Web
Re: Nette a Texyla?
Jde ti předpokládám o to, jak zprovoznit nějaký nette náhled. Pokud bys potřeboval víc informací, tak ještě napiš.
- Je dobré stáhnout aktuální verzi Texyly. To má například tu výhodu, že je kompatibilní s mým ajaxovacím pluginem do nette :-D
- Veškeré cesty k php skriptům jsou v Texyle nastavitelné. Změníme tedy cestu k náhledu. Náhled nyní povede na TexylaPresenter, action preview.
V šabloně (například @layout.phtml):
<html>
<head>
<!-- vložení texyly -->
...
<!-- nastavení výchozích hodnot -->
<script type="text/javascript">
$.texyla("setDefaults", {
previewPath: {plink Texyla:preview}
});
</script>
</head>
<body>
<textarea rows="10" cols="50"></textarea>
...
</body>
</html>
- Vytvoříme TexylaPresenter.
<?php
class TexylaPresenter extends Presenter {
public function actionPreview($texy) {
$texyInstance = new Texy;
echo $texyInstance->process($texy);
$this->terminate();
}
}
?>
Editoval Honza M. (4. 6. 2009 0:07)
Offline
#4 3. 6. 2009 12:30
Re: Nette a Texyla?
fajn dík , tohle jsem potřeboval, dobré by bylo kdyby jsi nějak ukázal kombinaci nette a pluginu (myslím že) Files
Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítání
Twitter: http://twitter.com/MartinSadovy
Offline
#5 3. 6. 2009 12:47
- Honza Marek
- Moderator

- Místo: Kladno
- Registrovaný: 31. 3. 2007
- Příspěvky: 1281
- Web
Re: Nette a Texyla?
To jsem přesně ukazoval na Poslední sobotě. Ale bastlil jsem to tam na poslední chvíli, tak to zveřejním až budu mít nějaký reprezentativní zdroják :)
Offline
#6 3. 6. 2009 13:19
Re: Nette a Texyla?
Honza M. napsal(a):
Tohle je takový základ. Určitě je zajímavé třeba rozběhat v nette správce souborů, ale to sepíšu někdy jindy – až na to budu mít vzorně udělané skripty :-D
A to bude asi tak kdy? A nejenom soubory ale i obrázky… Možná by se u souborů a obrazků hodilo upload chybějícího souboru (AJAXově).
„Nastala chyba která neměla nastat“ aneb „Když se chce všechno jde.“
Offline
#7 3. 6. 2009 14:10
- Honza Marek
- Moderator

- Místo: Kladno
- Registrovaný: 31. 3. 2007
- Příspěvky: 1281
- Web
Re: Nette a Texyla?
Jelikož to potřebuju taky, tak brzo. Co si mám představit pod pojmem upload chybějícího souboru?
Offline
#8 3. 6. 2009 15:08
- Honza Marek
- Moderator

- Místo: Kladno
- Registrovaný: 31. 3. 2007
- Příspěvky: 1281
- Web
Re: Nette a Texyla?
Prezenter pro správce souborů Texyly. Neřeší oprávnění, ale nějakou jednu podmínku není problém přidat.
<?php
class TexylaFilesPresenter extends BasePresenter {
protected $baseFolderPath;
protected $baseFolderUri;
public function startup() {
$this->baseFolderPath = realpath(WWW_DIR . "/files");
$this->baseFolderUri = Environment::getVariable("baseUri") . "files";
}
public function actionListFiles($folder = "") {
$folderPath = realpath($this->baseFolderPath . ($folder ? "/" . $folder : ""));
$folderUri = $this->baseFolderUri . ($folder ? "/" . $folder : "");
// check if dir exists and is base folder or subdir of base folder
if (!is_dir($folderPath) || !String::startsWith($folderPath, $this->baseFolderPath)) {
$this->payload->error = "Folder does not exist.";
$this->terminate();
}
// list of files
$folders = array();
$files = array();
// up
if ($folder !== "") {
$lastPos = strrpos($folder, "/");
$key = $lastPos === false ? "" : substr($folder, 0, $lastPos);
$folders[] = array(
"type" => "up",
"name" => "..",
"key" => $key,
);
}
foreach (new DirectoryIterator($folderPath) as $fileInfo) {
$fileName = $fileInfo->getFileName();
// skip hidden files, . and ..
if (String::startsWith($fileName, ".")) continue;
// directory
if ($fileInfo->isDir()) {
$folders[] = array(
"type" => "folder",
"name" => $fileName,
"key" => ($folder ? $folder . "/" : "") . $fileName,
);
// file
} elseif ($fileInfo->isFile()) {
// image
if (@getImageSize($fileInfo->getPathName())) {
$key = ($folder ? $folder . "/" : "") . $fileName;
$thumbailKey = $this->link("thumbail", $key);
$files[] = array(
"type" => "image",
"name" => $fileName,
"insertUrl" => $folderUri . "/" . $fileName,
"description" => "Image $fileName",
"thumbailKey" => $thumbailKey,
);
// other file
} else {
$files[] = array(
"type" => "file",
"name" => $fileName,
"insertUrl" => $folderUri . "/" . $fileName,
"description" => "File $fileName",
);
}
}
}
$this->payload->list = array_merge($folders, $files);
$this->terminate();
}
public function actionThumbail($key) {
Image::fromFile($this->baseFolderPath . "/" . $key)->resize(60, 40)->send();
$this->terminate();
}
public function isAjax() {
// nutné kvůli uploadu
// v texyle upload se tváří ajaxově, ale ve skutečnosti se formulář submituje do iframu
// $this->getAction() == "upload" || parent::isAjax() nefunguje
return true;
}
public function actionUpload($folder) {
// RoutingDebugger::disable();
// initialize payload
// když trochu předělám Texylu, tak to nebude nutné
$this->payload->error = "";
$this->payload->filename = "";
$this->payload->type = "";
// paths
$folderPath = realpath($this->baseFolderPath . ($folder ? "/" . $folder : ""));
$folderUri = $this->baseFolderUri . ($folder ? "/" . $folder : "");
// check if dir exists and is base folder or subdir of base folder
if (!is_dir($folderPath) || !String::startsWith($folderPath, $this->baseFolderPath)) {
$this->payload->error = "Folder does not exist.";
$this->terminate();
}
// file
$file = Environment::getHttpRequest()->getFile("file");
// check upload
if ($file === null || !$file->isOk()) {
$this->payload->error = "Upload error.";
$this->terminate();
}
// move
$fileName = String::webalize($file->getName(), ".");
if (@$file->move($folderPath . "/" . $fileName)) {
$this->payload->filename = $folderUri . "/" . $fileName;
$this->payload->type = @$file->getImageSize() ? "image" : "file";
} else {
$this->payload->error = "Move failed.";
}
$this->terminate();
}
}
?>
Nastavení cest v Texyle:
<script type="text/javascript">
$.texyla("setDefaults", {
// soubory
filesPath: {plink TexylaFiles:listFiles},
filesThumbPath: "%var%",
filesUploadPath: {plink TexylaFiles:upload}
});
</script>
Nechce se mi to celé podrobně vysvětlovat, tak se kdyžtak ptejte.
Editoval Honza M. (3. 6. 2009 23:16)
Offline
#9 3. 6. 2009 15:52
Re: Nette a Texyla?
Honza M. napsal(a):
Jelikož to potřebuju taky, tak brzo. Co si mám představit pod pojmem upload chybějícího souboru?
Řekněme že vkládání obrázků bude probíhat pomocí procházení nějáké složky s obrázky a tak by se hodilo kdyby to umělo i uploadnout obrázek který v této složce ještě není ale chci ho použít.
Už chápeme?
„Nastala chyba která neměla nastat“ aneb „Když se chce všechno jde.“
Offline
#10 3. 6. 2009 16:00
Re: Nette a Texyla?
vrtak-cz napsal(a):
Řekněme že vkládání obrázků bude probíhat pomocí procházení nějáké složky s obrázky a tak by se hodilo kdyby to umělo i uploadnout obrázek který v této složce ještě není ale chci ho použít.
Už chápeme?
To to, pokud jsem na Poslední sobotě dobře koukal, umí. :)
Tomik – tomik@jmx.cz | http://tomik.jmx.cz
Offline
#11 3. 6. 2009 16:10
- Honza Marek
- Moderator

- Místo: Kladno
- Registrovaný: 31. 3. 2007
- Příspěvky: 1281
- Web
Re: Nette a Texyla?
Tak to je základ, ne? :) Adresu obrázku si člověk zapamatuje, ale přece nebude kvůli nahrání nového obrázku lézt na FTP.
Offline
#12 3. 6. 2009 16:39
- romansklenar
- Moderator

- Místo: Ostrava
- Registrovaný: 20. 7. 2008
- Příspěvky: 769
- Web
Re: Nette a Texyla?
Nestudoval jsem Texylu do podrobna, ale myslím, že by neměl být problém ji přepsat pro lepší použití s Nette do Controlu. Napadá tě Honzo něco, kvůli čemu by to nebylo možné?
Offline
#13 3. 6. 2009 17:18
Re: Nette a Texyla?
Na PS jsem bohužel nebyl. Ležel jsem doma s horečkou… A to že je to samozdřejmost z vlastní zkušenosti vím že moc ne… Ještě jsem na to nekoukal ale nechceš to hodit do Extras?
„Nastala chyba která neměla nastat“ aneb „Když se chce všechno jde.“
Offline
#14 4. 6. 2009 10:53
- Ola
- Nette guru
- Registrovaný: 21. 10. 2008
- Příspěvky: 477
Re: Nette a Texyla?
Ještě k Texyle a náhledu – po kliknutí na náhled mi firefox ve firebugu vyhodí exception:
uncaught exception: [Exception... "Could not convert JavaScript argument arg 0 [nsIDOMDocumentFragment.appendChild]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://localhost/texyla-test/document_root/js/jquery/jquery.js :: anonymous :: line 12" data: no]"
Ve Chrome mi to funguje dobře…
Editoval Ola (4. 6. 2009 10:55)
Offline
#15 12. 7. 2009 13:24
- Oggy
- Nette guru

- Místo: Kladno
- Registrovaný: 7. 4. 2009
- Příspěvky: 218
Re: Nette a Texyla?
při prochazení robotloaderem mi to hlásí: Cannot redeclare class ArgumentOutOfRangeException
Offline
#16 12. 7. 2009 15:59
- paranoiq
- Člen

- Místo: Tábor
- Registrovaný: 14. 11. 2006
- Příspěvky: 167
Re: Nette a Texyla?
Oggy napsal(a):
při prochazení robotloaderem mi to hlásí: Cannot redeclare class ArgumentOutOfRangeException
v distribuci texyly je soubor php/libs/loader.php. ten obsahuje kompletni nette framework. aby se nenačital framework dvakrát, je třeba soubor smazat nebo zabránit jeho indexaci pomoci netterobots.txt (viz: http://forum.nette.org/…-robotloader)
Always wear your helmet, when working with a framework! / http://twitter.com/paranoiq
Offline
#17 12. 7. 2009 19:05
- Oggy
- Nette guru

- Místo: Kladno
- Registrovaný: 7. 4. 2009
- Příspěvky: 218
Re: Nette a Texyla?
paranoiq napsal(a):
Oggy napsal(a):
při prochazení robotloaderem mi to hlásí: Cannot redeclare class ArgumentOutOfRangeException
v distribuci texyly je soubor php/libs/loader.php. ten obsahuje kompletni nette framework. aby se nenačital framework dvakrát, je třeba soubor smazat nebo zabránit jeho indexaci pomoci netterobots.txt (viz: http://forum.nette.org/…-robotloader)
díky..
Offline
#18 12. 7. 2009 20:51
- Oggy
- Nette guru

- Místo: Kladno
- Registrovaný: 7. 4. 2009
- Příspěvky: 218
Re: Nette a Texyla?
jak zavěšujete texylu na určitou textareu v nette? .. na stránkách textyly z toho nejsem moc moudrý.. ono jde zase spíše o komplet zavedení do nette ..
Editoval Oggy (12. 7. 2009 20:54)
Offline
#19 12. 7. 2009 21:49
- Honza Marek
- Moderator

- Místo: Kladno
- Registrovaný: 31. 3. 2007
- Příspěvky: 1281
- Web
Re: Nette a Texyla?
V nette zavěšujeme Texylu takhle:
$form->addTextarea("text", "Text:", 50, 10)->getControlPrototype()->class("texyla");
a v javascriptu pomocí jQuery
$(function () {
$("textarea.texyla").texyla({
...
});
});
Offline
#20 12. 7. 2009 21:50
- Ondřej Mirtes
- Moderator

- Místo: Praha
- Registrovaný: 8. 1. 2009
- Příspěvky: 1357
- Web
Re: Nette a Texyla?
Oggy napsal(a):
jak zavěšujete texylu na určitou textareu v nette? .. na stránkách textyly z toho nejsem moc moudrý.. ono jde zase spíše o komplet zavedení do nette ..
Pro zavěšení na určitou textareu to chce spíš znalost jQuery, než Nette, a dělá se to takto:
$("CSS selektor textarey").texyla();
A kompletní zavedení do Nette máš popsané výše v tomto threadu, i když si to můžeš udělat jakkoli po svém :)
EDIT: Pozdě, Honza Marek byl rychlejší :o))
Editoval LastHunter (12. 7. 2009 21:51)
Offline
#21 3. 8. 2009 1:06
- Z0MBie
- Člen
- Registrovaný: 22. 7. 2008
- Příspěvky: 21
Re: Nette a Texyla?
Pokoušel jsem se do Nette a Texyly implementovat tento presenter. Vše mi v něm už funguje až na jednu výjimku. V momentě, kdy uploaduji soubor mi po dokončí uploadu nabídne prohlížeč ke stažení soubor, ve kterém jsou serializovaná javascriptová data s informacemi od (pravděpodobně) payloadu. Problém je v tom, že místo aby si je Texyla nějakým způsobem sežvejkala, tak dobublají až k prohlížeči, kde je musím odmítnout a pak zavřít a otevřít okno od filesuploaderu. Můžu se zeptat, kde mám chybu, popřípadě jak ji opravit? Zajímavé je to, že všechno funguje, jen při uploadu to takto selhá. Prohlížeče Firefox a Opera
Edit: po hledání na foru jsem zjistil, že budu muset manualne změnit
content-type. Takže jsem si za public function actionUpload($folder)
{ připsal ještě header('Content-type: text/plain');.
V ten moment narážím na další chybu: http://zombik.net/…49257355.png. V praxi má asi Firefox
v texyla.js problém s tím, že je tam eval("var data =
"+content+";");, jenže nevím, co přesně a jak upravit.
Editoval Z0MBie (3. 8. 2009 2:00)
Offline
#22 3. 8. 2009 10:27
Re: Nette a Texyla?
Honzo (Marek): co takhle udělat komponentu pro Form jako AddTexyla která by dědila textareu v parametrech se nastaví informace a pak to automaticky na konci rendrovani to přidá další javascript s texylou. Co myslíš ?
Editoval sodae (3. 8. 2009 10:30)
Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítání
Twitter: http://twitter.com/MartinSadovy
Offline
#23 21. 8. 2009 13:03
- Saska
- Člen
- Místo: Kolín
- Registrovaný: 21. 7. 2009
- Příspěvky: 26
Re: Nette a Texyla?
Také bych se přikláněl k této variantě. I když úplně nejideálnější by bylo texy distribuovat rovnou s Texylou.
Offline
#24 21. 8. 2009 20:34
- Honza Marek
- Moderator

- Místo: Kladno
- Registrovaný: 31. 3. 2007
- Příspěvky: 1281
- Web
Re: Nette a Texyla?
sodae napsal(a):
Honzo (Marek): co takhle udělat komponentu pro Form jako AddTexyla která by dědila textareu v parametrech se nastaví informace a pak to automaticky na konci rendrovani to přidá další javascript s texylou. Co myslíš ?
Já Texylu přidávám takhle:
$form->addTextarea("text", "Text", 50, 20)->getControlPrototype()->class = "texyla";
O zbytek se postará Javascript. Řekl bych, že je to tak nejlepší, protože v metodě addTexyla bych ještě musel vymyslet způsob, jak Texylu konfigurovat a podobně.
Offline
#25 21. 8. 2009 21:00
- Honza Kuchař
- Moderator

- Místo: Brno
- Registrovaný: 12. 8. 2007
- Příspěvky: 1285
- Web
Re: Nette a Texyla?
Počkejte ještě pár dní s tím uploadováním souborů. Hned co dodělám do nějakého použitelného stavu ten MultipleFileUploader (viz extras), tak se bude moci začít používat pravý AJAX na odesílání souborů. A ještě jich můžeš vybrat více současně.
Offline


