|
|
|
|
Edit v1.111 from 2008-08-19 to 2011-07-18 by TSc+HSc
Das HuSvEDVF-Plugin
Die warscheinlich größte Erungenschaft der Joomla-Plugin's.
Eine funktionierende Quelltextausgabe! :)
Dieses Plugin bietet aber noch sehr viel mehr
(bzw. das Plugin wird mehr bieten).
|
Edit v1.100 from 2008-08-19 to 2008-08-22 by TSc
Syntax des Tag's
Die vollständige Syntax zum Anwenden des Plugin's lautet:
{husvedvf
type=""
src="/"
alt=""
lang=""}...inlinetext...{/husvedvf}
bzw.
<husvedvf
type=""
src="/"
alt=""
lang="">
...inlinetext...
</husvedvf>
Schwarz
= Grundkonstrukt
Rot = Pflichtattribute
Blau
= Optionale Attribute
Wie man klar sehen kann ist type das einzige Pflichtattribut.
Die Reihenfolge der Attribute spielt dabei keine Rolle,
das Plugin erkennt diese immer richtig (dank Regular Expression's).
Nun stellt sich noch die Frage,
warum gibt es davon 2 Varianten,
also mit < und > bzw. mit { und } ?
Das hat damit was zu tun,
ob der Code im Fehlerfall im Browser angezeigt wird oder nicht.
Das Beispiel mit den geschweiften Klammer'n würde
im Fehlerfall den Tag im Browser anzeigen.
Das Beispiel mit größer bzw. kleiner als
würde dann logischerweise die Ausgabe verbergen,
da ein kleiner als gefolgt vom Buchstaben dem Browser ein HTML-Tag
signalisiert.
Welche Variante verwendet werden soll, ist jedem selbst überlassen.
Es kommt halt darauf an,
ob man den Fehler sehen möchte oder nicht.
Ich persönlich empfehle die Methode mit den geschweiften Klammer'n,
weil sie im Fehlerfall den Tag ausgibt und zudem noch W3C-Konform ist.
Attribute
Attribut |
Eigenschaften |
mögliche Werte |
Beschreibung |
type |
Pflicht |
source, info, css |
Legt fest, was das Plugin tun soll.
(ähnlich wie das Typ-Attribut vom Input-Tag,
welches nur bestimmte Werte animmt.)
Man kann den Wert auch als Modus ansehen,
indem das Plugin arbeiten soll.
|
src |
Optional |
Dateipfadangaben |
Wie das src-Attribut vom img-Tag.
Mit diesem Attribut legt man fest,
ob und welche Datei eingelesen/geladen werden soll.
|
lang |
Optional |
Landessprachbeschreibung oder Programmiersprache |
Legt die Sprache der Ausgabe fest.
Der Standardwert ist momentan: text
|
alt |
Optional |
Alternativtext. Darf nicht umgebrochen werden,
da Steuerzeichen im Attribut nicht erlaubt sind.
|
Wie bisher: Alternativtext,
der Beispielsweise Text anzeigt,
wenn man den Mauszeiger über das entsprechende Element hält
|
zwischen Start-Tag und Ende-Tag (...inlinetext...)
|
Optional |
beliebig |
Der zu formatierende Inhalt. |
|
Edit v1.100 from 2008-08-19 to 2008-08-22 by TSc
Typattributwert: source (Quelltextanzeige)
Gibt man als type den Wert source an,
arbeitet das Plugin als Quelltextanzeige.
Nun kann man entscheiden,
ob der Quellcode aus einer externen Datei geladen werden soll,
oder direkt in den Artikel geschrieben wird.
Möchte man den Quelltext direkt hineinschreiben,
läßt man das src-Attribut weg und
schreibt den Quellcode zwischen Start-Tag und Ende-Tag.
(Da, wo ...inlinetext... im ersten Beispiel steht.)
Die Anzeige des Codes aus einer externen Datei funktioniert genau umgedreht.
Man schreibt nichts zwischen Start-Tag und Ende-Tag und
gibt den src-Attribut einen Pfad mit Dateinamen.
Das src-Attribut hat dabei eine höhere Priorität,
d.h. Wenn man eine gültige Datei angibt, bzw. das src-Attribut benutzt,
dann versucht das Plugin den Quellcode zu laden und ignoriert somit,
was zwischen Start-Tag und Ende-Tag steht.
Selbst wenn der Pfad zur Datei falsch ist oder
die Datei nicht gelesen werden kann, gilt diese Regelung.
Ein weiterer Vorteil der Quelltextanzeige ist das Syntax-Highlighting
(Farbliche Hervorhebung).
Damit das Plugin weiß,
für welche Programmiersprache der Quelltext hervorgehoben wird,
gibts das lang-Attribut .
Als Wert gibt man dann an, in welcher Sprache hervorgehoben werden soll.
z.B. cpp für C++ oder javascript für Javascripte.
Um zu erfahren welche Sprachen das Plugin kennt,
läßt man das Plugin als type="info" laufen.
Ist die Programmiersprache nicht vorhanden,
läßt man das Attribut weg oder man schreibt text als Wert.
HINWEIS: Die Info-Ausgabe wurde noch nicht implementiert.
Um trotzdem zu erfahren, welche Sprachen das Plugin kennt ,
schaut man in das Verzeichnis (von Joomla-Root aus gesehen) nach
libraries/geshi/geshi/ .
Dort sind alle installierten Sprachen aufzufinden.
Der Name dieser Dateien entspricht dem,
was man in das lang-Attribut hineinschreibt. (Ausgenommen index.html)
Also die Dateien, die die Endung .php haben sind Sprachen,
die das Plugin kennt .
Beispiele
Beispiel 1:
{husvedvf type="source" lang="php" title="testtitel"
src="/images/stories/source/php/31return.php"
}{/husvedvf}
lädt 31return.php aus den PHP-Beispielen zeigt es im PHP-Format an und
besitzt den Maushover-Titel testtitel .
<?php /****************************************************************************** * Eine Funktion mit Rueckgabe selber Erstellen und Verwenden. * * Dieses Beispiel: Berechnen eines Quadervolumens mit selbsterstellter, * * fuer diese Seite angepasste Funktion. * * ========================================================================== * * Copyright by Hilfe & Service von EDV-Fachleuten * * Reilstr. 6, D-06114 Halle (Saale) * * Edit v1.010 from 2007-08-17 to 2007-09-11 by TSc * * -------------------------------------------------------------------------- * * Input * * Process * * + Variable, internal * * - $fltLaenge: Die Laenge des Quaders aus dem Formular. * * - $fltBreite: Die Breite des Quaders aus dem Formular. * * - $fltHoehe: Die Hoehe des Quaders aus dem Formular. * * - $stfEinheit: Verwendete Einheit aus dem Formular. * * - $strErgebnis: Enthaelt die Funktion. * * Output * ******************************************************************************/ /******* Variablen deklarieren ************************************************/ $fltLaenge = $_REQUEST['Laenge']; $fltBreite = $_REQUEST['Breite']; $fltHoehe = $_REQUEST['Hoehe']; $stfEinheit = $_REQUEST['Einheit']; $strErgebnis = ""; /****************************************************************************** * Funktion: Volumen eines Quaders berechnen. * * Folgende Schritte werden durchgeführt: * * 1. Wenn Absenden noch nicht gedrueckt wurde -> Informationstext. * * 2. Wenn eines der Werte keine Zahl oder kleiner/gleich 0 ist -> Fehler. * * 3. Sonst Werte berechnen und Ergebnis erzeugen. * * 4. Zurueckgeben des Ergebnisses anhand einer der Bedingungen. * * -------------------------------------------------------------------------- * * Edit v1.000 from 2007-08-17 to 2007-08-17 by TSc * * -------------------------------------------------------------------------- * * Input * * Process * * + Variable, internal * * - $strErgebnis: Je nach Bedingung wird diese Variable am * Ende der Funktion zurueckgegeben. * * - $fltBerechnung: Formel zur Berechnung des Quader-Volumens. * * - $stfHochDrei: Die Offiziele HTML-Ausgabe des Kubiks (Hoch-3). * * Output * ******************************************************************************/ function calc_quadvolume($fltLaenge,$fltBreite,$fltHoehe,$stfEinheit) { /******* Variablen deklarieren ************************************************/ $strErgebnis = ""; $fltBerechnung = ""; $stfHochDrei = "³"; /******* Wenn eines der Werte 0 ist, dann Fehler ausgeben *********************/ if (!$_REQUEST) { $strErgebnis = "Tragen sie die Werte in das Formular ein und drücken Sie dann auf '<font class=\"PHP-MARK\">Ausrechnen</font>'!"; } // if (!$_REQUEST) elseif ($fltLaenge <= 0 OR $fltBreite <= 0 OR $fltHoehe <= 0) { $strErgebnis = "<font class=\"PHP-MARK\" style=\"color:#FF0000;\"> Fehler:</font> <font style=\"color:#FF0000;\"> Eines der Werte veranlasst den Körper, nicht 3 Dimensional zu sein!</font>"; } // elseif ($intLaenge == 0 OR $intBreite == 0 OR $intHoehe == 0) else { $fltBerechnung = $fltLaenge * $fltBreite * $fltHoehe; $strErgebnis = "Bei diesem Quader (Länge = '<font class=\"PHP-VARS\">".$fltLaenge.$stfEinheit."</font>', Breite = '<font class=\"PHP-VARS\">".$fltBreite.$stfEinheit."</font>' und Höhe = '<font class=\"PHP-VARS\">".$fltBreite.$stfEinheit."</font>'), beträgt das Volumen '<font class=\"PHP-VARS\">" .$fltBerechnung.$stfEinheit.$stfHochDrei."</font> '!"; } // else von if ($fltLaenge == 0 OR $fltBreite == 0 OR $fltHoehe == 0) return $strErgebnis; } // function calc_quadvolume($intLaenge,$intBreite,$intHoehe) /******** Funktion mit Werten in eine Variable deklarieren ********************/ $strErgebnis = calc_quadvolume($fltLaenge,$fltBreite,$fltHoehe,$stfEinheit); /******* Den Seitenkopf ausgeben **********************************************/ <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> <html lang=\"en\"> <head> <title>Eine Funktion mit Rückgabe Erstellen</title> <link rel=\"stylesheet\" href=\"php.css\" type=\"text/css\"> </head> <body> <div class=\"PHP-HEAD\"> Eine Funktion mit Rückgabe Erstellen (Berechnung eines Quader-Volumens) </div> <hr/> Um eine eigene Funktion zu erstellen beginnt man immer mit function NAME. <br/><br/> Beispiel: <font class=\"PHP-MARK\">function calc_quadvolume</font> <br/><br/> Wichtig dabei ist das der Name noch nicht verwendet wurde oder der Name schon durch eine PHP-Interne Funktion verwendet wird. <br/> Direkt hinten dran kommt die Parameterangabe, hier legt man fest, welche Werte die Funktion verarbeiten soll. <br/><br/> Beispiel: <font class=\"PHP-MARK\">function calc_quadvolume(\$fltLaenge,\$fltBreite,\$fltHoehe,\$stfEinheit)</font> <br/><br/> Im Anschluss setzt man mit einer Geschweiften Klammer <font class=\"PHP-MARK\">\"<span class=\"PHP-VARS\">{</span>\"</font> den Beginn des Funktionskörpers. <br/><br/> Beispiel: <font class=\"PHP-MARK\">function calc_quadvolume(\$fltLaenge,\$fltBreite,\$fltHoehe,\$stfEinheit) {</font> <br/><br/> Innerhalb der Geschweiften Klammer befindet sich dann die Funktion. <br/> Am Ende der Funktion muss man nur noch Sagen, welcher Wert zurückgegeben werden soll. <br/> Das geschieht mit <font class=\"PHP-MARK\">return</font>, Variablen, Zahlen und Array's können zurückgegeben werden. <br/><br/> Beispiel:<br/> <font class=\"PHP-MARK\">function calc_quadvolume(\$fltLaenge,\$fltBreite,\$fltHoehe,\$stfEinheit) { <br/> ... (Der Eigendliche Funktionscode) ... <br/> return \$strErgebnis;</font> <br/><br/> Das Ende der Funktion ist natürlich das setzen der schließenden, geschweiften Klammer <font class=\"PHP-MARK\">\"<span class=\"PHP-VARS\">}</span>\"</font>. <br/><br/> Komplett sieht das ganze dann so aus: <br/> <font class=\"PHP-MARK\">function calc_quadvolume(\$fltLaenge,\$fltBreite,\$fltHoehe,\$stfEinheit) { <br/> ... (Der Eigendliche Funktionscode) ... <br/> return \$strErgebnis; <br/> }</font> <hr/> Durch dieses Formular werden die Werte in die selbsterstellte Funktion eingetragen! <br/> Wenn eines der Werte <font class=\"PHP-MARK\">keine</font> Zahl oder <font class=\"PHP-MARK\">kleiner/gleich 0</font> ist, wird ein Fehler ausgegeben. <br/> Solange das Formular nicht abgesendet wurde, wird unten ein Informationstext angezeigt. <br/> Das zusätzliche Feature ist die Angabe der Einheit, sie wird Automatisch dem Ergebnis angehängt! <br/><br/> <font class=\"PHP-MARK\">Hinweis!:</font> PHP unterscheidet nicht ziwschen Prozedur- und Rückgabefunktion. <br/> Dies wurde durch Vereinfachung der Scriptsprache von den PHP-Entwicklern beabsichtigt! <hr>"; /******* Das Formular ausgeben ************************************************/ <form action=\"31return.php\" method=\"post\"> <table border=\"0\" class=\"PHP-INPUT\"> <tr> <td>Länge:</td> <td> <input size=\"5\" type=\"text\" name=\"Laenge\" value=\"".$fltLaenge."\" style=\"direction:rtl;\" class=\"PHP-INPUT\"/> </td> </tr> <tr> <td>Breite:</td> <td> <input size=\"5\" type=\"text\" name=\"Breite\" value=\"".$fltBreite."\" style=\"direction:rtl;\" class=\"PHP-INPUT\"/> </td> </tr> <tr> <td>Höhe:</td> <td> <input size=\"5\" type=\"text\" name=\"Hoehe\" value=\"".$fltHoehe."\" style=\"direction:rtl;\" class=\"PHP-INPUT\"/> </td> </tr> <tr> <td>Einheit:</td> <td> <input type=\"radio\" name=\"Einheit\" value=\"mm\" checked=\"checked\"/> Milimeter <br/> <input type=\"radio\" name=\"Einheit\" value=\"cm\"/> Zentimeter <br/> <input type=\"radio\" name=\"Einheit\" value=\"m\"/> Meter </td> </tr> <tr> <td colspan=\"2\"> <input type=\"submit\" value=\"Ausrechnen\" class=\"PHP-INPUT\"/> </td> </tr> </table> </form> <hr>"; /******* Das Ergebnis ausgeben ************************************************/ /******* HTML-Endtags *********************************************************/ </body> </html>"; /******* EOF ******************************************************************/ ?>
Beispiel 2:
{husvedvf}{/husvedvf}
gibt einen Fehler aus, weil das Pflichtattribut type fehlt.
plgContentHuSvEDVF>Case: Das Attribut type fehlt!
Beispiel 3:
{husvedvf type="source" lang="cpp" title="testtitel"
src="/images/stories/source/cpp/info.cpp"}{/husvedvf}
lädt info.cpp aus den C++ Info-Beispiel und zeigt es im C++ -Format an.
/****************************************************************************** * CPP-Datei für das Formular frmInfo * * ===========================================================================* * Copyright by Dipl.-Phys. Harald Schaerfer * * Hilfe & Service von EDV-Fachleuten * * Reilstr. 6, D-06114 Halle/Saale * * Tel. (0345) 521 13 40 * * Edit v0.041 from 2007-10-25 to 2008-07-03 by M. Moebes * * ===========================================================================* * Input * * + Variablen * * - gstfProgramm[255]: Variable für den Programmnamen, siehe HUS.H * * - gstfEdit[255]: Variable für die Editzeile, siehe HUS.H * * Process * * + Objekte, intern deklariert * * - btnOk: Schließt das Fenster * * - frmInfo: Infoformular * * - imgProgramm: Firmenlogo * * - lblProgramm: Textausgabe des Programmnamens * * - lblVersion: Textausgabe der Editzeile * * - lblFirma: Textausgabe der Firmenbezeichnung * * - lblKommentar: Textausgabe der Programmbeschreibung * * - pnlInfo: Zusammenfassung der Formularelemente * * + Variablen, intern deklariert * * - stfPuffer1[255]; Variable zum Speichern der Zeichenkette aus start.cpp * * - stfPuffer2[255]; Variable zum Speichern der Zeichenkette aus start.cpp * * Output * ******************************************************************************/ /******* Bibliotheken laden ***************************************************/ #include <vcl.h> #include <string.h> #pragma hdrstop #include "info.h" /******* Package-Beschreibungen ***********************************************/ #pragma package(smart_init) #pragma resource "*.dfm" /******* Variablen und Objekte deklarieren ************************************/ TfrmInfo *frmInfo; __fastcall TfrmInfo::TfrmInfo(TComponent* AOwner) : TForm(AOwner) { /******* Variablen deklarieren ************************************************/ extern char gstfProgramm[255]; extern char gstfEdit[255]; char stfPuffer[255]; char stfPuffer2[255]; /******* Werte in den Puffer schreiben ****************************************/ strcpy(stfPuffer, gstfProgramm); strcpy(stfPuffer2, gstfEdit); /******* Werte im Fenster ausgeben ********************************************/ frmInfo->lblProgramm->Caption=stfPuffer; frmInfo->lblVersion->Caption=stfPuffer2; //frmInfo->imgProgramm->Picture="TransPos.jpg"; } // __fastcall TfrmInfo::TfrmInfo(TComponent* AOwner) /****************************************************************************** * Funktion für BtnOK, schließt das Fenster frmInfo * * Edit v1.000 from 2007-11-05 to 2007-11-16 by M. Moebes * * ---------------------------------------------------------------------------* * Input * * - Sender: Zeiger von dem rufenden Formular * * Process * * Output * ******************************************************************************/ void __fastcall TfrmInfo::btnOkClick(TObject *Sender) { Close(); } // void __fastcall TfrmInfo::btnOkClick(TObject *Sender) /******* EOF ******************************************************************/
Beispiel 4:
{husvedvf type="source" lang="cpp" title="testtitel"
src="/images/stories/source/cpp/info.h"}{/husvedvf}
lädt info.h Headerdatei aus den C++ Info-Beispiel und
zeigt es im C++ -Format an.
/****************************************************************************** * Header-Datei fuer das Formular frmInfo * * ===========================================================================* * Copyright by Dipl.-Phys. Harald Schaerfer * * Hilfe & Service von EDV-Fachleuten * * Reilstr. 6, D-06114 Halle/Saale * * Tel. (0345) 521 13 40 * * Edit v0.040 from 2007-10-25 to 2008-07-01 by M. Moebes * * ===========================================================================* * Input * * + Variablen * * - gstfProgramm[255]: Variable für den Programmnamen, siehe HUS.H * * - gstfEdit[255]: Variable für die Editzeile, siehe HUS.H * * Process * * + Objekte, intern deklariert * * - btnOk: Schließt das Fenster * * - frmInfo: Infoformular * * - imgProgramm: Firmenlogo * * - lblProgramm: Textausgabe des Programmnamens * * - lblVersion: Textausgabe der Editzeile * * - lblFirma: Textausgabe der Firmenbezeichnung * * - lblKommentar: Textausgabe der Programmbeschreibung * * - pnlInfo: Zusammenfassung der Formularelemente * * + Variablen, intern deklariert * * - stfPuffer1[255]; Variable zum Speichern der Zeichenkette aus start.cpp * * - stfPuffer2[255]; Variable zum Speichern der Zeichenkette aus start.cpp * * Output * ******************************************************************************/ #ifndef InfoH #define InfoH #include <vcl\System.hpp> #include <vcl\Windows.hpp> #include <vcl\SysUtils.hpp> #include <vcl\Classes.hpp> #include <vcl\Graphics.hpp> #include <vcl\Forms.hpp> #include <vcl\Controls.hpp> #include <vcl\StdCtrls.hpp> #include <vcl\Buttons.hpp> #include <vcl\ExtCtrls.hpp> #include <jpeg.hpp> class TfrmInfo : public TForm { __published: TPanel *pnlInfo; TImage *imgProgramm; TLabel *lblProgramm; TLabel *lblVersion; TLabel *lblFirma; TLabel *lblKommentar; TButton *btnOk; void __fastcall btnOkClick(TObject *Sender); private: public: virtual __fastcall TfrmInfo(TComponent* AOwner); }; extern PACKAGE TfrmInfo *frmInfo; #endif // #ifndef InfoH /******* EOF ******************************************************************/
|
Edit v1.000 from 2008-08-22 to 2008-08-22 by TSc
Typattributwert: info
Gibt man als type den Wert info an,
erfolgt eine Info-Ausgabe.
Beispiel
Beispiel:
{husvedvf type="info"}{/husvedvf}
gibt die Info aus.
HuSvEDVF-Plugin-Info |
---|
Verfügbare Sprachen zur Syntax-Hervorhebung (Generic Syntax-Highlighting): | abap, actionscript, actionscript3, ada, apache, applescript, asm, asp, autoit, bash, basic4gl, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp, cpp-qt, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gettext, glsl, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, kixtart, latex, lisp, lotusformulas, lotusscript, lua, m68k, matlab, mirc, mpasm, mxml, mysql, nsis, objc, ocaml, ocaml-brief, oobas, oracle8, pascal, per, perl, php, php-brief, plsql, python, qbasic, rails, reg, robots, ruby, sas, scala, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, verilog, vhdl, visualfoxpro, winbatch, xml, xpp, z80 |
|
|
|
|