Class Syntax

Einleitung:

Ablauf:
  1. convertContent( $content (Template mit Inhaltseite), $firstrecursion (true) )
  2. Interne Variablen setzen $this->content = $content; und $this->cat = $cat;
  3. ist $firstrecursion = true preparePageContent() ausführen
  4. Nach allen Syntax und Pluginplatzhaltern suchen, die keine Syntax und Pluginplatzhaltern enthalten oder keinen | haben und mit ihren Inhalt ersetzen.
    Das Läuft so lange bis nichts mehr gefunden wird, es wird berücksichtigt das im Inhalt auch wieder Syntax und Pluginplatzhaltern enthalten sein können.
    Auserdem werden alle <script>????</script> und <style>????</style> Tags mit einem dummy Ersetzt da sie {, }, [ und ] enthalten können was zu Problemen mit der Syntax und Pluginplatzhalter Suche führt.
  5. alle <script>????</script> und <style>????</style> wieder einsetzen
  6. mozilo Platzhalter, die mit preparePageContent() geschützt wurden, wieder herstellen
  7. alle -html_???? die mit preparePageContent() erstelt wurden in HTML Code wandeln
  8. wenn preparePageContent() benutzt wurde nach alle Blockelementen die Zeilenwechsel entfernen und alle geschützten Zeichen wieder herstellen
  9. wenn mozilo Syntax benutzt wird.
    Alle Aufeinander folgenden <li> und <ol> die mit Liste und Numliste erstelt wurden gruppieren.
    Alle Absatzlinks erstellen

Syntaxelemnte:
link mail kategorie seite absatz datei galerie bildlinks bildrechts bild hr ([----]) links zentriert block rechts fett kursiv fettkursiv unter durch ueber1 ueber2 ueber3 liste numliste liste1 liste2 liste3 html tabelle include farbe


ToDo:

die gibts auch als Variable {CSS_FILE} {CHARSET} {FAVICON_FILE} {LAYOUT_DIR} {BASE_URL}

{WEBSITE_TITLE} {WEBSITE_KEYWORDS} {WEBSITE_DESCRIPTION} {MAINMENU} {DETAILMENU} {SEARCH} {SITEMAPLINK} {CMSINFO} {TABLEOFCONTENTS}

getWebsiteTitle( {WEBSITE} {CATEGORY} {PAGE} {SEP} )

replacePlaceholders( {WEBSITE_NAME} {LAYOUT_DIR} {CATEGORY} {CATEGORY_URL} {CATEGORY_NAME} {PAGE} {PAGE_URL} {PAGE_FILE} {PAGE_NAME} )

CMS-Variablen im Editor {BASE_URL} {CATEGORY_NAME} {CATEGORY} {CATEGORY_URL} {PAGE_NAME} {PAGE_FILE} {PAGE_URL} {PAGE} {SITEMAPLINK} {CMSINFO} {TABLEOFCONTENTS}

       # alle &lt; und &gt; die in einer page sind sollen so sein
        $content = str_replace(array("&lt;","&gt;"),array("- html_lt~","- html_gt~"),$content);
        # alle < und > in &lt; und &gt; wandeln damit sie nicht als html tags angezeigt werden
        $content = str_replace(array("<",">"),array("&lt;","&gt;"),$content);

        # alle Zeichen die ein davor haben sind geschützte Zeichen
        $content = $specialchars->encodeProtectedChr($content);
# alle & die nicht zu entities gehören wandeln nach &
$content = preg_replace('/&(?!#?[a-z0-9] ;)/i', '- html_amp~', $content);
        // Für Einrückungen
        $content = str_replace("  ","- html_nbsp~- html_nbsp~",$content);
        # Zeilenümbrüche sind in pages später html Umbrüche
        $content = preg_replace('/(\r\n|\r|\n)/', '$1- html_br~', $content);
        // Platzhalter ersetzen
        $content = replacePlaceholders($content, "", ""); index.php




 

convertContent( $content, $firstrecursion )
Konvertiert alle Syntax/Pluginelemente
  • Die Syntax/Pluginelemente werden der Reihe nach wie sie gefunden wurden abgearbeitet.
    Es werden erst alle die keine Syntax/Pluginelemente haben genommen also von innen nach außen.
    Achtung um die Funktion im Plug-in zu verwenden solte man vorher ein $mysyntax = new Syntax(); machen
  • Parameter:
    • $content:
      Der Inhalt der berarbeitet werden soll
    • $firstrecursion:
      false preparePageContent() wird nicht benutzt
      true preparePageContent() wird benutzt
  • Return:
    Übersetzter $content

pluginSelfPlaceholderData( $placeholder, $replace )
Damit kann ein Plugin an sich selbst Daten übermitteln
  • Da wir die Pluginelemente der Reihe nach bearbeiten kommt es vor, dass die Daten die ersetzt werden sollen noch nicht vorhanden sind.
    Beispiel:
    Wir wollen aus einer Inhaltsseite Inhalt im Template als Sidebar einsetzen.
    Wir benutzen also zweimal das Plugin einmal in der Inhaltseite {PLUGIN|Irgendein Inhalt} und einmal im Template {PLUGIN|sidebar}.
    Im Plugin sieht es dann so aus
    $placeholder = '<!-- dummy Sidebar Plugin -->';
    if($value == "sidebar") {
        return $placeholder;
    } else {
        $syntax->pluginSelfPlaceholderData($placeholder,$value);
    }
  • Parameter:
    • $placeholder:
      Ein Text der als Platzhalter für $replace benutzt wird.
      Achtung es sollte was eindeutiges sein und als HTML Kommentar erstelt werden (<!-- was Eindeutiges -->)
    • $replace:
      Der Text, der mit dem $placeholder ersetzt wird
  • Return:
    Kein return

insert_in_head( $data )
Setzt den in $data enthaltenen Text, im Template, im <HEAD> Bereich ein.
  • Es wird gepfüft, ob der Text schon enthalten ist und nur dann eingesetzt wenn er noch nicht vorhanden ist.
  • Parameter:
    • :$data
      alles was im <HEAD> Bereich erlaubt ist. Achtung es gibt keine Überprüfung
  • Return:
    kein Return

syntax_SYNTAXELEMENT( $desciption, $value )
Verarbeitet die moziloCMS Syntaxelemente.
  • Erzeugt aus den moziloCMS Syntaxelementen den entsprechenden HTML Code oder eine Fehlermeldung für die Inhaltsseite.
    SYNTAXELEMENT = link, mail, kategorie, seite, absatz, datei, galerie, bildlinks, bildrechts, bild, hr ([----]), links, zentriert, block, rechts, fett, kursiv, fettkursiv, unter, durch, ueber1, ueber2, ueber3, liste, numliste, liste1, liste2, liste3, html, tabelle, include, farbe
  • Parameter:
    • $desciption:
      [SYNTAXELEMENT= das ist $desciption | ]
    • $value:
      [SYNTAXELEMENT| das ist $value ]
  • Return:
    HTML

syntax_user( $desciption, $value, $syntax )
Verarbeitet die vom User definierten Syntaxelemente.
  • Es gibt keine Überprüfung.
  • Parameter:
    • $desciption:
      Was über den Platzhalter {DESCRIPTION} ersetzt wurde
    • $value:
      Was über den Platzhalter {VALUE} ersetzt wurde
    • $syntax:
      Das Userdefinierte Syntaxelement also das was in der syntax.conf links vom = steht.
      Siehe auch $USER_SYNTAX oder $syntax->syntax_user[]
  • Return:
    Text

splitContent( $content = false )
Zerlegt das Template in vor {CONTENT}, {CONTENT} und nach {CONTENT}.
  • Der Platzhalter {CONTENT} wird mit --- content~~~INHALTSEITE~~~ content--- ersetzt.
  • Parameter:
    • $content:
      false ist gleich $this->content
  • Return:
    Ein Array mit mit 3 Variablen
    1. Template Anfang bis --- content~~~
    2. --- content~~~.INHALTSEITE.~~~ content---
    3. Ab ~~~ content--- bis Ende Template

preparePageContent( $content )
Bereitet den Content für convertContent() vor.
  • Liste der Zeichen, die gewandelt werden, in dieser Reihenfolge
    alle &lt; und &gt; die in einer page sind sollen so sein -> - html_lt~ - html_gt~
    alle < und > in &lt; und &gt; wandeln damit sie nicht als HTML Tags angezeigt werden
    alle Zeichen die ein ^ davor haben sind geschützte Zeichen -> &#94;&#????;
    alle & die nicht zu entities gehören wandeln nach - html_amp~
    alle "  " -> - html_nbsp~- html_nbsp~ wegen dem Einrücken
    alle Zeilenümbrüche -> - html_br~
    Platzhalter ersetzen siehe index.php replacePlaceholders()
  • Return:
    Vorbereiteter $content


Nach oben