Texy! a FSHL
» Posledná aktualizácia: 18-10-2008 23:41:12, autor: Matej Kolesár
Texy! – je (viac ako) plnohodnotná náhrada WYSIWYG
editorov → formátuje texty na základe sémantických pravidiel, má plnú
podporu UTF-8, typografické pravidla… a pod.
FSHL – je „Univerzálny syntaktický zvýrazňovač“
spolu s Texy! tvoria plnohodnotný celok pre formátovanie textov a
zvýrazňovanie syntaxu:
Viac o FSHL si môžete prečítať tu: http://hvge.sk/…/doc-sk.html
Použitie:
- Najprv sa zbavíme WYSIWYG Editorov v Etomite. V „Etomite configuration
→ Interface & editor settings“ – „Enable editor“ nastavime
na „No“
- Stiahneme prilohu (z fora v tejto teme), rozbalime
a uploadneme ju do
<eto-rootu>
- Vytvorime novy snippet s nazvom „texy-content“ a skopírujeme
text (dole)
- Otvoríme templat, ktorý používame a nahradíme:
- snippet:
[*
content
*]
- za:
[ [
texy-content
] ]
Upozornenie – Ak v dokumentoch budete používať
snippety, tak ich používajte v takomto formáte (aby ich Texy! zbytočne
neformátovalo):
Použitie snippetov v Etomite:
1: /---html
2: [ [navov_snippetu] ]
3: ---
Texy! 1.x
Kód snippetu texy-content
:
1: 2: $texyPath = dirname(__FILE__).'/texy/texy/';
3: $fshlPath = dirname(__FILE__).'/fshl/fshl/';
4:
5: 6: require_once ($texyPath . 'texy.php');
7: include_once ($fshlPath . 'fshl.php');
8:
9: 10: function myUserFunc(&$element) {
11: $lang = strtoupper($element->lang);
12: if ($lang == 'JAVASCRIPT') $lang = 'JS';
13: if (!in_array(
14: $lang,
15: array('CPP', 'CSS', 'HTML', 'JAVA', 'PHP', 'JS', 'SQL'))
16: ) return;
17:
18: $parser = new fshlParser($element->texy->utf ? 'HTML_UTF8' : 'HTML', P_TAB_INDENT);
19: $element->setContent($parser->highlightString($lang, $element->content), TRUE);
20: }
21:
22: 23: $texy = &new Texy();
24:
25: 26: $texy->utf = true;
27: 28: $texy->blockModule->codeHandler = 'myUserFunc';
29: 30: $texy->imageModule->root = 'images/';
31: $copyright = "nn.{color: #808080}n Copyright & 2005-2006 by "Matthew Wheeler":etomite@etomite.sk under "GNU/FDL((Free Documentation License))":[http://www.gnu.org/copyleft/fdl.txt]";
32:
33: 34: 35:
36:
37: 38: $texy->smiliesModule->allowed = TRUE;
39: 40: $texy->smiliesModule->root = 'images/smiles/';
41: 42: $texy->smiliesModule->class = 'smilie';
43: 44: $texy->smiliesModule->icons[':D'] = 'icon_biggrin.gif';
45: $texy->smiliesModule->icons[':)'] = 'icon_smile.gif';
46: $texy->smiliesModule->icons[':('] = 'icon_sad.gif';
47: $texy->smiliesModule->icons[':o'] = 'icon_surprised.gif';
48: $texy->smiliesModule->icons[':shock:'] = 'icon_eek.gif';
49: $texy->smiliesModule->icons[':?'] = 'icon_confused.gif';
50: $texy->smiliesModule->icons['8)'] = 'icon_cool.gif';
51: $texy->smiliesModule->icons[':lol:'] = 'icon_lol.gif';
52: $texy->smiliesModule->icons[':x'] = 'icon_mad.gif';
53: $texy->smiliesModule->icons[':P'] = 'icon_razz.gif';
54: $texy->smiliesModule->icons[':oops:'] = 'icon_redface.gif';
55: $texy->smiliesModule->icons[':cry:'] = 'icon_cry.gif';
56: $texy->smiliesModule->icons[':evil:'] = 'icon_evil.gif';
57: $texy->smiliesModule->icons[':twisted:'] = 'icon_twisted.gif';
58: $texy->smiliesModule->icons[':roll:'] = 'icon_rolleyes.gif';
59: $texy->smiliesModule->icons[';)'] = 'icon_wink.gif';
60: $texy->smiliesModule->icons[':!:'] = 'icon_exclaim.gif';
61: $texy->smiliesModule->icons[':?:'] = 'icon_question.gif';
62: $texy->smiliesModule->icons[':idea:'] = 'icon_idea.gif';
63: $texy->smiliesModule->icons[':arrow:'] = 'icon_arrow.gif';
64: $texy->smiliesModule->icons[':|'] = 'icon_neutral.gif';
65: $texy->smiliesModule->icons[':mrgreen:'] = 'icon_mrgreen.gif';
66: $texy->smiliesModule->icons[':swoon:'] = 'swoon.gif';
67: $texy->smiliesModule->icons[':suicide:'] = 'suicide.gif';
68: $texy->smiliesModule->icons[':rofl:'] = 'rofl.gif';
69: $texy->smiliesModule->icons[':punish:'] = 'punish.gif';
70: $texy->smiliesModule->icons[':nhl-checking:'] = 'nhl_checking.gif';
71: $texy->smiliesModule->icons[':omg:'] = 'Just_Cuz_23.gif';
72: $texy->smiliesModule->icons[':ass:'] = 'Just_Cuz_17.gif';
73: $texy->smiliesModule->icons[':fuk:'] = 'fuk.gif';
74: $texy->smiliesModule->icons[':drinks:'] = 'drinks.gif';
75: $texy->smiliesModule->icons[':dancer:'] = 'hip23951fc5js.gif';
76: $texy->smiliesModule->icons[':beersss:'] = 'Just_Cuz_08.gif';
77: $texy->smiliesModule->icons[':caf:'] = 'Just_Cuz_19.gif';
78: $texy->smiliesModule->icons[':PP'] = 'Just_Cuz_34.gif';
79: $texy->smiliesModule->icons[':jupiii:'] = 'tatice_04.gif';
80: $texy->smiliesModule->icons[':B)'] = 'tatice_06.gif';
81: $texy->smiliesModule->icons[':**'] = 'fisch.gif';
82: $texy->smiliesModule->icons[':psp:'] = 'gathering.gif';
83: $texy->smiliesModule->icons[':*)'] = 'mwah1.gif';
84: $texy->smiliesModule->icons['<*><-'] = 'smileysex.gif';
85:
86: 87: 88:
89:
90: 91: $sep = " → ";
92:
93: $ptarr = array();
94: $pid = $etomite->documentObject['parent'];
95: $ptarr[] = """.$etomite->documentObject['pagetitle']."":".$etomite->documentObject['id']."";
96:
97: while ($parent=$etomite->getParent($pid)) {
98: $ptarr[] = "<a href='".$parent['id']."'>".$parent['pagetitle']."</a>";
99: $pid = $parent['parent'];
100: }
101:
102: $ptarr = array_reverse($ptarr);
103: $pageTrial = join($ptarr, $sep);
104:
105: 106: 107:
108:
109: 110: $site_name = $etomite->config['site_name'];
111:
112: $docInfo = $etomite->getDocument($etomite->documentIdentifier);
113: 114: $pagetitle = $docInfo['pagetitle'];
115: 116: $longtitle = $docInfo['longtitle'];
117: 118: $description = $docInfo['description'];
119: 120: $editedon = date("d. m. Y", $etomite->documentObject['editedon']);
121:
122: 123: 124:
125:
126: $output = "";
127:
128: 129: 130:
131:
132: 133: $output .= "======= ".$longtitle." =======nn";
134: $output .= ".{color: #808080}n ".$description." | Posledná úprava: ".$editedon."nn";
135: 136: 137:
138: 139: 140:
141:
142: $doc = $etomite->getDocument($etomite->documentObject['id'], "content");
143: if($doc) {
144: $output .= $doc['content'];
145: }
146: else {
147: $output .= "";
148: }
149:
150: 151: 152:
153:
154: $output .= $copyright;
155:
156: 157: $html = $texy->process($output);
158: return $html;
Texy! 2.x
Kód snippetu texy-content
:
// Cesta k Texy! a FSHL
$texyPath = dirname(__FILE__).'/texy/texy/';
$fshlPath = dirname(__FILE__).'/fshl/fshl/';
// Vlozenie suborov
require_once ($texyPath . 'texy.php');
include_once ($fshlPath . 'fshl.php');
// Funkcia pre externy FSHL syntakticky formatovac
class myHandler
{
/**
* User handler for code block
*
* @param TexyBlockParser
* @param string block type
* @param string text to highlight
* @param string language
* @param TexyModifier modifier
* @return TexyHtml
*/
public function block($parser, $blocktype, $content, $lang, $modifier)
{
if ($blocktype !== 'block/code')
return Texy::PROCEED;
$texy = $parser->texy;
$lang = strtoupper($lang);
if ($lang == 'JAVASCRIPT') $lang = 'JS';
if (!in_array(
$lang,
array('CPP', 'CSS', 'HTML', 'JAVA', 'PHP', 'JS', 'SQL'))
) return Texy::PROCEED;
$parser = new fshlParser('HTML_UTF8', P_TAB_INDENT);
$content = $texy->blockModule->outdent($content);
$content = $parser->highlightString($lang, $content);
$content = $texy->protect($content);
$el = TexyHtml::el('code');
$el->setContent( $content );
$elPre = TexyHtml::el('pre');
if ($modifier) $modifier->decorate($texy, $elPre);
$elPre->class = strtolower($lang);
$elPre->addChild($el);
return $elPre;
}
}
// Inicializacia Texy!
$texy = new Texy();
// Ak nepouzivate UTF-8, tak tento riadok odstrante resp. zakomentujte
// $texy->encoding = 'windows-1250'; // disable UTF-8
// Zapnutie funkcie pre externy FSHL
$texy->blockModule->codeHandler = 'myUserFunc';
// Cesta k obrazkom pouzivanym v dokumentoch - Texy! syntax
$texy->imageModule->root = 'images/';
$copyright = "nn.{color: #808080}n Copyright & 2005-2006 by "Matthew Wheeler":etomite@etomite.sk under "GNU/FDL((Free Documentation License))":[http://www.gnu.org/copyleft/fdl.txt]";
/**
* Smilies
*/
// Zapnutie modulu
$texy->allowed['emoticon'] = TRUE;
// Cesta k smajlikom
$texy->smiliesModule->root = 'images/smiles/';
// CSS trieda pre smajliky
$texy->emoticonModule->class = 'smilie';
// Konfiguracia smajlikov priradenie znak -> obrazok
$texy->smiliesModule->icons[':D'] = 'icon_biggrin.gif';
$texy->emoticonModule->icons[':)'] = 'icon_smile.gif';
$texy->emoticonModule->icons[':('] = 'icon_sad.gif';
$texy->emoticonModule->icons[':o'] = 'icon_surprised.gif';
$texy->emoticonModule->icons[':shock:'] = 'icon_eek.gif';
$texy->emoticonModule->icons[':?'] = 'icon_confused.gif';
$texy->emoticonModule->icons['8)'] = 'icon_cool.gif';
$texy->emoticonModule->icons[':lol:'] = 'icon_lol.gif';
$texy->emoticonModule->icons[':x'] = 'icon_mad.gif';
$texy->emoticonModule->icons[':P'] = 'icon_razz.gif';
$texy->emoticonModule->icons[':oops:'] = 'icon_redface.gif';
$texy->emoticonModule->icons[':cry:'] = 'icon_cry.gif';
$texy->emoticonModule->icons[':evil:'] = 'icon_evil.gif';
$texy->emoticonModule->icons[':twisted:'] = 'icon_twisted.gif';
$texy->emoticonModule->icons[':roll:'] = 'icon_rolleyes.gif';
$texy->emoticonModule->icons[';)'] = 'icon_wink.gif';
$texy->emoticonModule->icons[':!:'] = 'icon_exclaim.gif';
$texy->emoticonModule->icons[':?:'] = 'icon_question.gif';
$texy->emoticonModule->icons[':idea:'] = 'icon_idea.gif';
$texy->emoticonModule->icons[':arrow:'] = 'icon_arrow.gif';
$texy->emoticonModule->icons[':|'] = 'icon_neutral.gif';
$texy->emoticonModule->icons[':mrgreen:'] = 'icon_mrgreen.gif';
$texy->emoticonModule->icons[':swoon:'] = 'swoon.gif';
$texy->emoticonModule->icons[':suicide:'] = 'suicide.gif';
$texy->emoticonModule->icons[':rofl:'] = 'rofl.gif';
$texy->emoticonModule->icons[':punish:'] = 'punish.gif';
$texy->emoticonModule->icons[':nhl-checking:'] = 'nhl_checking.gif';
$texy->emoticonModule->icons[':omg:'] = 'Just_Cuz_23.gif';
$texy->emoticonModule->icons[':ass:'] = 'Just_Cuz_17.gif';
$texy->emoticonModule->icons[':fuk:'] = 'fuk.gif';
$texy->emoticonModule->icons[':drinks:'] = 'drinks.gif';
$texy->emoticonModule->icons[':dancer:'] = 'hip23951fc5js.gif';
$texy->emoticonModule->icons[':beersss:'] = 'Just_Cuz_08.gif';
$texy->emoticonModule->icons[':caf:'] = 'Just_Cuz_19.gif';
$texy->emoticonModule->icons[':PP'] = 'Just_Cuz_34.gif';
$texy->emoticonModule->icons[':jupiii:'] = 'tatice_04.gif';
$texy->emoticonModule->icons[':B)'] = 'tatice_06.gif';
$texy->emoticonModule->icons[':**'] = 'fisch.gif';
$texy->emoticonModule->icons[':psp:'] = 'gathering.gif';
$texy->emoticonModule->icons[':*)'] = 'mwah1.gif';
$texy->emoticonModule->icons['<*><-'] = 'smileysex.gif';
/*******************************************************************************
* Page Trial - navigacne menu - poloha dokumentu
******************************************************************************/
// Separator
$sep = " → ";
$ptarr = array();
$pid = $etomite->documentObject['parent'];
$ptarr[] = """.$etomite->documentObject['pagetitle']."":".$etomite->documentObject['id']."";
while ($parent=$etomite->getParent($pid)) {
$ptarr[] = "".$parent['pagetitle']."";
$pid = $parent['parent'];
}
$ptarr = array_reverse($ptarr);
$pageTrial = join($ptarr, $sep);
/*******************************************************************************
* docInfo - informacie a atributy dokumentu
******************************************************************************/
// Nazov stranky - webu
$site_name = $etomite->config['site_name'];
$docInfo = $etomite->getDocument($etomite->documentIdentifier);
// Titulok stranky - dokumentu
$pagetitle = $docInfo['pagetitle'];
// Dlhy nazov dokumentu
$longtitle = $docInfo['longtitle'];
// Popis dokumentu
$description = $docInfo['description'];
// Posledna uprava dokumentu
$editedon = date("d. m. Y", $etomite->documentObject['editedon']);
/*******************************************************************************
* Texy! Content
******************************************************************************/
$output = "";
/**
* Header - Hlavicka (co nepotrebujete odstrante)
*/
// $output .= "======= ".$site_name." =======nn";
$output .= "======= ".$longtitle." =======nn";
$output .= ".{color: #808080}n ".$description." | Posledná úprava: ".$editedon."nn";
// $output .= " ".$pageTrial."n---nn";
// $output .= "/---htmln ".$pageTrial."n---nn";
/**
* Etomite Content
*/
$doc = $etomite->getDocument($etomite->documentObject['id'], "content");
if($doc) {
$output .= $doc['content'];
}
else {
$output .= "";
}
/**
* Footer
*/
$output .= $copyright;
// Preformatovanie do HTML
$html = $texy->process($output);
return $html;
Smajlíky – smiliesModule
/
emoticonModule
Texy! → nahradi sekvenciu znakov za obrázok.
:D
:)
:)
:(
:(
:o
:o
:shock:
:shock:
:?
:?
8)
8)
:lol:
:lol:
:x
:x
:P
:P
:oops:
:oops:
:cry:
:cry:
:evil:
:evil:
:twisted:
:twisted:
:roll:
:roll:
;)
;)
:!:
:!:
:?:
:?:
:idea:
:idea:
:arrow:
:arrow:
:mrgreen:
:mrgreen:
:swoon:
:swoon:
:suicide:
:suicide:
:rofl:
:rofl:
:punish:
:punish:
:nhl-checking:
:nhl-checking:
:omg:
:omg:
:ass:
:ass:
:fuk:
:fuk:
:drinks:
:drinks:
:dancer:
:dancer:
:beersss:
:beersss:
:caf:
:caf:
:PP
:PP
:jupiii:
:jupiii:
:B)
:B)
:**
:**
:psp:
:psp:
:*)
:*)
Update
- 18.6.2006 – Texy! 1.1 & FSHL 0.4.17