From 75fc324b8d7bd95812bb4a100e4d14db825a7548 Mon Sep 17 00:00:00 2001
From: Thomas Pollinger
+ Int:0 When you open the page in page preview mode.
+
+ (angleich an WSM DS Logik) mit Constraint-Block und if/else
+
+ So notiert, könnte man auch weitere, „echte“ Constraints formulieren, wie im DS:
+ Haben wir schon
+
+ Standard-Blockmarkierungen
+
+ <!IoRangeBack> ... <!/IoRangeBack>
+ <!IoRangeBreadCrumb> ... <!/IoRangeBreadCrumb>
+ <!IoRangeConditional> ... <!/IoRangeConditional>
+ <!IoRangeData> ... <!/IoRangeData>
+ <!IoRangeDragDrop> ... <!/IoRangeDragDrop>
+ <!IoRangeDynLink> ... <!/IoRangeDynLink>
+ <!IoRangeHit> ... <!/IoRangeHit>
+ <!IoRangeList> ... <!/IoRangeList>
+
+
+
+
+ Ausführung von Code zur Laufzeit oder Publizierung
+
+ <!IoRangeRDExecute>
+ ...
+ Dieser Block wird nur innerhalb des CMS zur Laufzeit (SmartEdit/Preview)
+ ausgeführt und nicht bei der Publizierung. Er muss entsprechenden
+ Code (z.B. C#, VBScript, PHP etc. enthalten) => Läuft innerhalb
+ des CMS AppPool und unterliegt diesen Regeln.
+ ...
+ <!/IoRangeRDExecute>
+
+
+ <!IoRangePreExecute>
+ ...
+ Dieser Block wird nur innerhalb des CMS zur Laufzeit (Preview/Publish)
+ ausgeführt und nicht im SmartEdit. Er muss entsprechenden Code
+ (z.B. C#, VBScript, PHP etc. enthalten) => PreExecute-Regeln via
+ extra AppPool.
+ ...
+ <!/IoRangePreExecute>
+
+
+
+
+ Mal was neues
+
+ Rendermodes 2.0
+
Int:1 When you open the page in SmartEdit.
+
Int:2 When you publish the page.
+
+
+ = Modus 0
+ <!IoRangePreviewMode> ... <!/IoRangePreviewMode>
+ alias für
+ <!IoRangeNoRedDotMode> ... <!/IoRangeNoRedDotMode>
+
+ = Modus 1
+ <!IoRangeEditMode> ... <!/IoRangeEditMode>
+ <!IoRangeEditModeOn> ... <!/IoRangeEditModeOn>
+ <!IoRangeEditModeOff> ... <!/IoRangeEditModeOff>
+ alias für:
+ <!IoRangeRedDotMode> ... <!/IoRangeRedDotMode>
+ <!IoRangeRedDotEditOnly> ... <!/IoRangeRedDotEditOnly>
+ <!IoRangeNoEditMode> ... <!/IoRangeNoEditMode>
+
+ = Modus 2
+ <!IoRangePublishMode> ... <!/IoRangePublishMode>
+
+
+
+
+ Definitionsblöcke
+
+ <!IoRangePreDefinition> oder <!IoRangeTemp>
+ ...
+ Variablen (MetaElemente), welche nur innerhalb der Content-Klasse temporär zur Verfügung stehen.
+ ...
+ <%tempVar%> = 3000
+ ...
+ <%valueIntA%> = 0
+ ...
+ <%ArrayElement%> = ("A","B","C","D","1")
+ ...
+ <!/IoRangePreDefinition> oder <!/IoRangeTemp>
+
+
+
+
+ Zugriff auf die Session im SmartEdit/SmartTree (Vorschau etc.)
+
+ <!IoRangeSession> oder <!IoRangeUiSession>
+ ...
+ Variablen (MetaElemente), welche nur innerhalb der aktuellen Session (GUI only)
+ temporär zur Verfügung stehen. Diese können gesetzt oder abgefragt werden.
+ ...
+ <%lastAction%> = "..." Aus Session
+ ...
+ "..." = <%lastAction%> In Session
+ ...
+ <!/IoRangeSession> oder <!/IoRangeUiSession>
+
+
+
+
+ If/Else - Bedingung
+
+ <!IoRangeIf>
+ <%ConditionElement%>
+ <!IoRangeThen> ... <!/IoRangeThen>
+ <!IoRangeElse> ... <!/IoRangeElse>
+ <!/IoRangeIf>
+
+
+
+
+ If Exists/Else - Bedingung
+
+ <!IoRangeIfExists>
+ <%Element%>
+ <!IoRangeThen> ... <!/IoRangeThen>
+ <!IoRangeElse> ... <!/IoRangeElse>
+ <!/IoRangeIfExists>
+
+
+
+
+ Switch/Case - Bedingung
+
+ <!IoRangeSwitch>
+ <%ConditionElement%>
+ <!IoRangeCase> <%CaseElement%> ... <!/IoRangeCase>
+ <!IoRangeCase> <%CaseElement%> ... <!/IoRangeCase>
+ <!IoRangeCase> <%CaseElement%> ... <!/IoRangeCase>
+ <!IoRangeCase> <%CaseElement%> ... <!/IoRangeCase>
+ <!IoRangeElse> ... <!/IoRangeElse>
+ <!/IoRangeSwitch>
+
+
+
+
+ ForEach - Schleife
+
+ <!IoRangeForEach>
+ ...
+ <%ArrayElement%>
+ ...
+ <!/IoRangeForEach>
+
+
+
+
+ For Do - Schleife
+
+ <!IoRangeFor>
+ <%ConditionElement%>
+ <!IoRangeDo>
+ ...
+ <!/IoRangeDo>
+ <!/IoRangeFor>
+
+
+
+
+ Einfache Berechnungen
+
+ operator + - / * ≈ auf Typ: FLOAT, INT oder DATE
+
+ <!IoRangeMath>
+ ...
+ <%valueIntA%> - 1
+ ...
+ <%valueIntA%> + <%tempVar%>
+ ...
+ <%valueIntA%> + <%valueIntB%>
+ ...
+ <%valueDateA%> - (1).asDate("day")
+ ...
+ <%valueDateA%> - (1).asDate("hour")
+ ...
+ <!/IoRangeMath>
+
+
+ Beispiel:
+
+ <!IoRangePreDefinition> oder <!IoRangeTemp>
+ ...
+ <%tempVar%> = <!IoRangeMath><%valueIntA%> + 3000<!/IoRangeMath>
+ ...
+ <!/IoRangePreDefinition> oder <!/IoRangeTemp>
+
+
+
+
+ Include vom Filesystem des Servers
+
+ <!IoRangeInclude>
+ ...
+ <%FileRepositoryElement%>
+ ...
+ <!/IoRangeInclude>
+
+
+
+
+ Für Kommentare innerhalb der Templates, welche beim Publizieren verschwinden können
+
+ <!IoRangeComment>
+ ...
+ Hier steht Text, welcher beim Publizieren nicht ausgegeben wird (removed)
+ ...
+ <!/IoRangeComment>
+
+ = Ersatz für <!IoRangeNoRedDotMode><!IoRangeRedDotMode> ... <!/IoRangeRedDotMode><!/IoRangeNoRedDotMode>
+
+
+
+
+ Eine Idee ähnlich wie javaDOC, damit man automatisch eine CK/Template Doku erzeugen kann
+
+ <!IoRangeDocumentation>
+ ...
+ Hier steht Text, welcher als Documentation innerhalb der Content-Klassen dient.
+ Diese Blöcke können später in einem noch zu definierenden Format
+ (z.B. Markdown etc.) ausgegeben, abgefragt oder auf andere Art und Weise verwendent werden.
+ ...
+ <!/IoRangeDocumentation>
+
+
+
+
+ Keine Ausgabe bei der Publizierung, jedoch ohne Einschränkung auf die Elementeigenschaften
+
+ <!IoRangeNoOutput>
+ ...
+ Hier steht Element, welches z.B. für
+
+ <!IoRangeConditional> ... <!/IoRangeConditional>
+
+ oder
+
+ <!IoRangeList> ... <!/IoRangeList>
+
+ benötigt wird (z.B. Liste etc)
+ ...
+ <!/IoRangeNoOutput>
+
+ = Ersatz für <!IoRangeNoRedDotMode><!IoRangeRedDotMode> ... <!/IoRangeRedDotMode><!/IoRangeNoRedDotMode>
+
+ Beispiel:
+
+ Vorher:
+ <!IoRangeDynLink><a id="<%infoPageID%>"><%headlinePage%></a>
+ <!IoRangeNoRedDotMode><!IoRangeRedDotMode><%anchorDynamic%><!/IoRangeRedDotMode><!/IoRangeNoRedDotMode>
+ <!/IoRangeDynLink>
+
+ Nachher:
+ <!IoRangeDynLink><a id="<%infoPageID%>"><%headlinePage%></a>
+ <!IoRangeNoOutput><%anchorDynamic%><!/IoRangeNoOutput>
+ <!/IoRangeDynLink>
+
+
+
+
+ Navigation
+
+ In den Navigation-Templates
+ Hinweis => Jetzt Referenzieren möglich, ähnlich (Navigation ... guid: oder GetPage(Guid:) ...)
+
+ <a href="<%ListNavigationA%>" target="_blank"><%pageHeadline%></a>
+ <!IoRangeIfExists>
+ <%ListNavigationA%> <!-- Bsp: HasChildren() und nachfolgend navigation:nextlevel -->
+ <!IoRangeThen> <!IoRangeNavigation><%ListNavigationA%><!/IoRangeNavigation> <!/IoRangeThen>
+ <!IoRangeElse> <!IoRangeNavigation><%ListNavigationB%><!/IoRangeNavigation> <!/IoRangeElse>
+ <!/IoRangeIfExists>
+
+
+ Aufruf Outputarea
+ Hinweis => Jetzt Referenzieren möglich, Mapping und weitere Eigenschaften im Element ähnlich Liste/Container.
+
+ <!IoRangeNavigationArea><%NavigationElementBreadcrumb%><!/IoRangeNavigationArea>
+
+
+ Boolsche Werte bzw. ein generisches Navigation-Element mit folgenden Optionen
+
+ Indizes:
+ <%FirstIndex%>
+ <%CurrentIndex%>
+ <%LastIndex%>
+ <%Parent%> ?? Noch nötig ??
+
+ Bool:
+ <%IsHidden%> ?? Noch nötig oder reicht der "Erscheinungszeitraum"
+ und/oder "Nicht in der Navigation anzeigen" bei Seiteneigenschaften ??
+ <%IsRoot%> ?? Noch nötig ??
+
+ Int32:
+ <%CurrentLevelCount%>
+ <%CurrentDepth%>
+ <%Count%>
+
+
+ Beispiele
+
+ <!IoRangeConditional>
+ <!IoRangeConstraint>
+ <%FirstIndex%> -ne <%CurrentIndex%>
+ <!/IoRangeConstraint>
+ <!IoRangeThen>
+ <!IoRangePreDefinition>
+ <%tempVar%> = <!IoRangeMath><%valueIntA%> + 3000 <!/IoRangeMath>
+ <!/IoRangePreDefinition>
+ <!/IoRangeThen>
+ <!IoRangeElse>
+ <!IoRangeInclude>
+ <%FileRepositoryElement%>
+ <!/IoRangeInclude>
+ <!/IoRangeElse>
+ <!/IoRangeConditional>
+
+
+
+ <!IoRangeConditional>
+ <!IoRangeConstraint>
+ <%FirstIndex%> -ne ("46012D6C5A5F4624B37424E2E3677202").asGuid()
+ <!/IoRangeConstraint>
+ <!IoRangeThen> ... <!IoRangeThen>
+ <!IoRangeElse> ... <!IoRangeElse>
+ <!/IoRangeConditional>
+
+
+
+
+ Image-Gallery
+
+ <!IoRedDot_ImageListMyGallery>
+ <!IoRangeImageList>
+ <span class="xxx">
+ <img src="<%ImageListMyGallery%>" alt="<%attributeDescription%> (Quelle: <%attributeSource%>)" />
+ </span>
+ <!/IoRangeImageList>
+
+
+
+
+
+
+
+
+ Variante A1
+
Ausgabe bei if/else kann dann ganz anderer Text sein
+
+ <!IoRangeConditional>
+ <!IoRangeConstraint><%Element%><!/IoRangeConstraint>
+ <!IoRangeThen> ... <!IoRangeThen>
+ <!IoRangeElse> ... <!IoRangeElse>
+ <!/IoRangeConditional>
+
+
+
+
+ Variante A2
+
+
+
+
+ -eq (equals):
+
Checks whether the attribute value and the comparison value of the value parameter are equal.
+
+
+ -ne (not equal):
+
Checks whether the attribute value and the comparison value of the value parameter are not equal.
+
+
+ -gt (greater than):
+
Checks whether the attribute value is greater than the comparison value from the value parameter.
+
+
+ -ge (greater equal):
+
Checks whether the attribute value is greater than or equal to the comparison value from the value parameter.
+
+
+ -lt (less than):
+
Checks whether the attribute value is less than the comparison value from the value parameter.
+
+
+ -le (less equal):
+
Checks whether the attribute value is less than or equal to the comparison value from the value parameter.
+
+
+ -contains/-notcontains:
+
Checks whether the value parameter's comparison value is/is not contained in the attribute's first value. Other
+ values of multivalued attributes are not evaluated.
+
+
+ plus weitere:
+ -and/-or
+ -like/-notlike
+ -match/-notmatch
+
+
+ -containsall/-notcontainsall:
+
For value lists of multivalued attributes: Checks whether all comparison values from value are contained in the
+ attribute values. To negate the statement, use the not prefix.
+
+
+ -containsany/--notcontainsany:
+
For value lists of multivalued attributes: Checks whether at least one comparison value of the value parameter is
+ contained in the attribute values. To negate the statement, use the not prefix.
+
+
+ -existsinall/-notexistsinall:
+
For value lists of multivalued attributes: Checks whether all attribute values are contained in the comparison values
+ of value. To negate the statement, use the not prefix.
+
+
+ -existsinany/-notexistsinany:
+
For value lists of multivalued attributes: checks whether at least one attribute values contained in the comparison
+ values of value. To negate the statement, use the not prefix.
+
+
+
+ <!IoRangeConditional> + <!IoRangeConstraint><%Element%> -ne ("") <!/IoRangeConstraint> + <!IoRangeThen> ... <!IoRangeThen> + <!IoRangeElse> ... <!IoRangeElse> + <!/IoRangeConditional> ++ +
+ <!IoRangeConstraint><%ArrayElement%> -containsany ("A", "B", "C") <!/IoRangeConstraint> + <!IoRangeConstraint><%ElementTypeNumber%> -gt 5 <!/IoRangeConstraint> ++ +
+ <!IoRangeConstraint> + <%ElementATypeNumber%> -le 100 -AND <%ElementBTypeNumber%> -existinany ("3", "7", "9").asInt32() + <!/IoRangeConstraint> ++ +
+ wie vor, jedoch vereinfachte Kurzschreibweise
+
Gibt Element bei vorhanden/gefüllt aus, ansonsten den Else Teil
+
+ <!IoRangeConditional> + <%Element%> + <!IoRangeElse> ... <!IoRangeElse> + <!/IoRangeConditional> ++ +
+ Bool: + <%Element.StartsWidth()%> + <%Element.EndsWidth()%> + + String: + <%Element.ToLower()%> + <%Element.ToUpper()%> + <%Element.SubString()%> + <%Element.Replace()%> + <%Element.RegExReplace()%> + + Int32: + <%Element.IndexOf()%> + <%Element.LastIndexOf()%> + <%Element.Length()%> + + Encoding: + <%Element.HtmlEncode()%> + <%Element.HtmlDecode()%> + <%Element.UrlEncode()%> + <%Element.UrlDecode()%> + <%Element.HtmlAttributeEncode()%> + <%Element.JavaScriptEncode()%> + <%Element.JavaScriptDecode()%> + <%Element.JsonEncode()%> + <%Element.JsonDecode()%> + <%Element.MD5Encode()%> + <%Element.Base64Encode()%> + <%Element.Base64Decode()%> + + Casting: + ("46012D6C5A5F4624B37424E2E3677202").asGuid() + ("1234").asInt32() + ("12345678").asInt64() + ("1").asBoolean() + + <%Element.asGuid()%> + <%Element.asString()%> + <%Element.asInt32()%> + <%Element.asInt64()%> + <%Element.asBoolean()%> + <%Element.asDate()%> + ++ +
+ <!IoRangeBack> ... <!/IoRangeBack> + <!IoRangeBreadCrumb> ... <!/IoRangeBreadCrumb> + <!IoRangeConditional> ... <!/IoRangeConditional> + <!IoRangeData> ... <!/IoRangeData> + <!IoRangeDragDrop> ... <!/IoRangeDragDrop> + <!IoRangeDynLink> ... <!/IoRangeDynLink> + <!IoRangeHit> ... <!/IoRangeHit> + <!IoRangeList> ... <!/IoRangeList> ++ +
+ <!IoRangeRDExecute> + ... + Dieser Block wird nur innerhalb des CMS zur Laufzeit (SmartEdit/Preview) + ausgeführt und nicht bei der Publizierung. Er muss entsprechenden + Code (z.B. C#, VBScript, PHP etc. enthalten) => Läuft innerhalb + des CMS AppPool und unterliegt diesen Regeln. + ... + <!/IoRangeRDExecute> + + + <!IoRangePreExecute> + ... + Dieser Block wird nur innerhalb des CMS zur Laufzeit (Preview/Publish) + ausgeführt und nicht im SmartEdit. Er muss entsprechenden Code + (z.B. C#, VBScript, PHP etc. enthalten) => PreExecute-Regeln via + extra AppPool. + ... + <!/IoRangePreExecute> ++ +
+ Int:0 When you open the page in page preview mode.
+
Int:1 When you open the page in SmartEdit.
+
Int:2 When you publish the page.
+
+
+ = Modus 0 + <!IoRangePreviewMode> ... <!/IoRangePreviewMode> + alias für + <!IoRangeNoRedDotMode> ... <!/IoRangeNoRedDotMode> + + = Modus 1 + <!IoRangeEditMode> ... <!/IoRangeEditMode> + <!IoRangeEditModeOn> ... <!/IoRangeEditModeOn> + <!IoRangeEditModeOff> ... <!/IoRangeEditModeOff> + alias für: + <!IoRangeRedDotMode> ... <!/IoRangeRedDotMode> + <!IoRangeRedDotEditOnly> ... <!/IoRangeRedDotEditOnly> + <!IoRangeNoEditMode> ... <!/IoRangeNoEditMode> + + = Modus 2 + <!IoRangePublishMode> ... <!/IoRangePublishMode> ++ +
+ <!IoRangePreDefinition> oder <!IoRangeTemp> + ... + Variablen (MetaElemente), welche nur innerhalb der Content-Klasse temporär zur Verfügung stehen. + ... + <%tempVar%> = 3000 + ... + <%valueIntA%> = 0 + ... + <%ArrayElement%> = ("A","B","C","D","1") + ... + <!/IoRangePreDefinition> oder <!/IoRangeTemp> ++ +
+ <!IoRangeSession> oder <!IoRangeUiSession> + ... + Variablen (MetaElemente), welche nur innerhalb der aktuellen Session (GUI only) + temporär zur Verfügung stehen. Diese können gesetzt oder abgefragt werden. + ... + <%lastAction%> = "..." Aus Session + ... + "..." = <%lastAction%> In Session + ... + <!/IoRangeSession> oder <!/IoRangeUiSession> ++ +
+ <!IoRangeIf> + <%ConditionElement%> + <!IoRangeThen> ... <!/IoRangeThen> + <!IoRangeElse> ... <!/IoRangeElse> + <!/IoRangeIf> ++ +
+ <!IoRangeIfExists> + <%Element%> + <!IoRangeThen> ... <!/IoRangeThen> + <!IoRangeElse> ... <!/IoRangeElse> + <!/IoRangeIfExists> ++ +
+ <!IoRangeSwitch> + <%ConditionElement%> + <!IoRangeCase> <%CaseElement%> ... <!/IoRangeCase> + <!IoRangeCase> <%CaseElement%> ... <!/IoRangeCase> + <!IoRangeCase> <%CaseElement%> ... <!/IoRangeCase> + <!IoRangeCase> <%CaseElement%> ... <!/IoRangeCase> + <!IoRangeElse> ... <!/IoRangeElse> + <!/IoRangeSwitch> ++ +
+ <!IoRangeForEach> + ... + <%ArrayElement%> + ... + <!/IoRangeForEach> ++ +
+ <!IoRangeFor> + <%ConditionElement%> + <!IoRangeDo> + ... + <!/IoRangeDo> + <!/IoRangeFor> ++ +
+ operator + - / * ≈ auf Typ: FLOAT, INT oder DATE + + <!IoRangeMath> + ... + <%valueIntA%> - 1 + ... + <%valueIntA%> + <%tempVar%> + ... + <%valueIntA%> + <%valueIntB%> + ... + <%valueDateA%> - (1).asDate("day") + ... + <%valueDateA%> - (1).asDate("hour") + ... + <!/IoRangeMath> ++ +
+ <!IoRangePreDefinition> oder <!IoRangeTemp> + ... + <%tempVar%> = <!IoRangeMath><%valueIntA%> + 3000<!/IoRangeMath> + ... + <!/IoRangePreDefinition> oder <!/IoRangeTemp> ++ +
+ <!IoRangeInclude> + ... + <%FileRepositoryElement%> + ... + <!/IoRangeInclude> ++ +
+ <!IoRangeComment> + ... + Hier steht Text, welcher beim Publizieren nicht ausgegeben wird (removed) + ... + <!/IoRangeComment> + + = Ersatz für <!IoRangeNoRedDotMode><!IoRangeRedDotMode> ... <!/IoRangeRedDotMode><!/IoRangeNoRedDotMode> ++ +
+ <!IoRangeDocumentation> + ... + Hier steht Text, welcher als Documentation innerhalb der Content-Klassen dient. + Diese Blöcke können später in einem noch zu definierenden Format + (z.B. Markdown etc.) ausgegeben, abgefragt oder auf andere Art und Weise verwendent werden. + ... + <!/IoRangeDocumentation> ++ +
+ <!IoRangeNoOutput> + ... + Hier steht Element, welches z.B. für + + <!IoRangeConditional> ... <!/IoRangeConditional> + + oder + + <!IoRangeList> ... <!/IoRangeList> + + benötigt wird (z.B. Liste etc) + ... + <!/IoRangeNoOutput> + + = Ersatz für <!IoRangeNoRedDotMode><!IoRangeRedDotMode> ... <!/IoRangeRedDotMode><!/IoRangeNoRedDotMode> + + Beispiel: + + Vorher: + <!IoRangeDynLink><a id="<%infoPageID%>"><%headlinePage%></a> + <!IoRangeNoRedDotMode><!IoRangeRedDotMode><%anchorDynamic%><!/IoRangeRedDotMode><!/IoRangeNoRedDotMode> + <!/IoRangeDynLink> + + Nachher: + <!IoRangeDynLink><a id="<%infoPageID%>"><%headlinePage%></a> + <!IoRangeNoOutput><%anchorDynamic%><!/IoRangeNoOutput> + <!/IoRangeDynLink> ++ +
+ <a href="<%ListNavigationA%>" target="_blank"><%pageHeadline%></a> + <!IoRangeIfExists> + <%ListNavigationA%> <!-- Bsp: HasChildren() und nachfolgend navigation:nextlevel --> + <!IoRangeThen> <!IoRangeNavigation><%ListNavigationA%><!/IoRangeNavigation> <!/IoRangeThen> + <!IoRangeElse> <!IoRangeNavigation><%ListNavigationB%><!/IoRangeNavigation> <!/IoRangeElse> + <!/IoRangeIfExists> ++ +
+ <!IoRangeNavigationArea><%NavigationElementBreadcrumb%><!/IoRangeNavigationArea> ++ +
+ Indizes: + <%FirstIndex%> + <%CurrentIndex%> + <%LastIndex%> + <%Parent%> ?? Noch nötig ?? + + Bool: + <%IsHidden%> ?? Noch nötig oder reicht der "Erscheinungszeitraum" + und/oder "Nicht in der Navigation anzeigen" bei Seiteneigenschaften ?? + <%IsRoot%> ?? Noch nötig ?? + + Int32: + <%CurrentLevelCount%> + <%CurrentDepth%> + <%Count%> ++ +
+ <!IoRangeConditional> + <!IoRangeConstraint> + <%FirstIndex%> -ne <%CurrentIndex%> + <!/IoRangeConstraint> + <!IoRangeThen> + <!IoRangePreDefinition> + <%tempVar%> = <!IoRangeMath><%valueIntA%> + 3000 <!/IoRangeMath> + <!/IoRangePreDefinition> + <!/IoRangeThen> + <!IoRangeElse> + <!IoRangeInclude> + <%FileRepositoryElement%> + <!/IoRangeInclude> + <!/IoRangeElse> + <!/IoRangeConditional> ++ +
+ <!IoRangeConditional> + <!IoRangeConstraint> + <%FirstIndex%> -ne ("46012D6C5A5F4624B37424E2E3677202").asGuid() + <!/IoRangeConstraint> + <!IoRangeThen> ... <!IoRangeThen> + <!IoRangeElse> ... <!IoRangeElse> + <!/IoRangeConditional> ++ +
+ <!IoRedDot_ImageListMyGallery> + <!IoRangeImageList> + <span class="xxx"> + <img src="<%ImageListMyGallery%>" alt="<%attributeDescription%> (Quelle: <%attributeSource%>)" /> + </span> + <!/IoRangeImageList> ++ +
+ (angleich an WSM DS Logik) mit Constraint-Block und if/else
+
Ausgabe bei if/else kann dann ganz anderer Text sein
+
+ <!IoRangeConditional> + <!IoRangeConstraint><%Element%><!/IoRangeConstraint> + <!IoRangeThen> ... <!IoRangeThen> + <!IoRangeElse> ... <!IoRangeElse> + <!/IoRangeConditional> ++ +
+ So notiert, könnte man auch weitere, „echte“ Constraints formulieren, wie im DS:
+
+
+
+ -eq (equals):
+
Checks whether the attribute value and the comparison value of the value parameter are equal.
+
+
+ -ne (not equal):
+
Checks whether the attribute value and the comparison value of the value parameter are not equal.
+
+
+ -gt (greater than):
+
Checks whether the attribute value is greater than the comparison value from the value parameter.
+
+
+ -ge (greater equal):
+
Checks whether the attribute value is greater than or equal to the comparison value from the value parameter.
+
+
+ -lt (less than):
+
Checks whether the attribute value is less than the comparison value from the value parameter.
+
+
+ -le (less equal):
+
Checks whether the attribute value is less than or equal to the comparison value from the value parameter.
+
+
+ -contains/-notcontains:
+
Checks whether the value parameter's comparison value is/is not contained in the attribute's first value. Other
+ values of multivalued attributes are not evaluated.
+
+
+
+ -containsall/-notcontainsall:
+
For value lists of multivalued attributes: Checks whether all comparison values from value are contained in the
+ attribute values. To negate the statement, use the not prefix.
+
+
+ -containsany/--notcontainsany:
+
For value lists of multivalued attributes: Checks whether at least one comparison value of the value parameter is
+ contained in the attribute values. To negate the statement, use the not prefix.
+
+
+ -existsinall/-notexistsinall:
+
For value lists of multivalued attributes: Checks whether all attribute values are contained in the comparison values
+ of value. To negate the statement, use the not prefix.
+
+
+ -existsinany/-notexistsinany:
+
For value lists of multivalued attributes: checks whether at least one attribute values contained in the comparison
+ values of value. To negate the statement, use the not prefix.
+
+
+
+ <!IoRangeConditional> + <!IoRangeConstraint><%Element%> -ne ("") <!/IoRangeConstraint> + <!IoRangeThen> ... <!IoRangeThen> + <!IoRangeElse> ... <!IoRangeElse> + <!/IoRangeConditional> ++ +
+ <!IoRangeConstraint><%ArrayElement%> -containsany ("A", "B", "C") <!/IoRangeConstraint> + <!IoRangeConstraint><%ElementTypeNumber%> -gt 5 <!/IoRangeConstraint> ++ +
+ <!IoRangeConstraint> + <%ElementATypeNumber%> -le 100 -AND <%ElementBTypeNumber%> -existinany ("3", "7", "9").asInt32() + <!/IoRangeConstraint> ++ +
+ wie vor, jedoch vereinfachte Kurzschreibweise
+
Gibt Element bei vorhanden/gefüllt aus, ansonsten den Else Teil
+
+ <!IoRangeConditional> + <%Element%> + <!IoRangeElse> ... <!IoRangeElse> + <!/IoRangeConditional> ++ +
+ Bool: + <%Element.StartsWidth()%> + <%Element.EndsWidth()%> + + String: + <%Element.ToLower()%> + <%Element.ToUpper()%> + <%Element.SubString()%> + <%Element.Replace()%> + <%Element.RegExReplace()%> + + Int32: + <%Element.IndexOf()%> + <%Element.LastIndexOf()%> + <%Element.Length()%> + + Encoding: + <%Element.HtmlEncode()%> + <%Element.HtmlDecode()%> + <%Element.UrlEncode()%> + <%Element.UrlDecode()%> + <%Element.HtmlAttributeEncode()%> + <%Element.JavaScriptEncode()%> + <%Element.JavaScriptDecode()%> + <%Element.JsonEncode()%> + <%Element.JsonDecode()%> + <%Element.MD5Encode()%> + <%Element.Base64Encode()%> + <%Element.Base64Decode()%> + + Casting: + ("46012D6C5A5F4624B37424E2E3677202").asGuid() + ("1234").asInt32() + ("12345678").asInt64() + ("1").asBoolean() + + <%Element.asGuid()%> + <%Element.asString()%> + <%Element.asInt32()%> + <%Element.asInt64()%> + <%Element.asBoolean()%> + <%Element.asDate()%> + ++ +
+<!IoRedDotOpenPage><a href="<%infoBackLink%>">BACK</a><br/><br/> <hr/> <!IoRangeDynLink><%anchorDymanic%><br/><!/IoRangeDynLink> diff --git a/demoxWSM.html b/demoxWSM.html new file mode 100644 index 0000000..ee06c39 --- /dev/null +++ b/demoxWSM.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + ++ <!IoRedDotOpenPage><a href="<%infoBackLink%>">BACK</a><br/><br/> + <hr/> + <!IoRangeDynLink><%anchorDymanic%><br/><!/IoRangeDynLink> + <%!! Store:Get(test) !!%> + <li> + <!-- Render link to the current index page --> + <a href="<%!! Context:CurrentIndex.GetUrl() !!%>"> + <%!! Context:CurrentIndex.Page.Headline !!%> + </a> + <reddot:cms> + <if> + If the current index has child pages + <query valuea="Context:CurrentIndex.HasChildren()" operator="==" valueb="Bool:True"> + <htmltext> + <!-- Render list and call next level --> + <ul> + <navigation:nextlevel> + </ul> + </htmltext> + </query> + </if> + </reddot:cms> + </li> + <reddot:cms> + <foreach itemname="item" object="Context:CurrentPage.Elements" countername="counter"> + <output type="object" object="Store:counter" /> + <output type="object" object="Store:item.Name" /> + <output type="object" object="Escape:Br" /> + </foreach> + </reddot:cms> ++ + + + \ No newline at end of file diff --git a/scripts/shBrushWSM.js b/scripts/shBrushWSM.js index 598ecfd..4be9647 100644 --- a/scripts/shBrushWSM.js +++ b/scripts/shBrushWSM.js @@ -1,20 +1,20 @@ -SyntaxHighlighter.brushes.Custom = function () { +SyntaxHighlighter.brushes.wsm = function () { this.regexList = [ - { regex: /<%([^!])+?%>/gm, css: 'placeholder' }, - { regex: /<!(\/?)IoRange(.+?)>/gm, css: 'blockmark' }, - { regex: /<!IoRedDot(.+?)>/gm, css: 'smartedit-wsm' }, - { regex: /<%!!(.+?)!!%>/gm, css: 'rendertag-short' }, - { regex: /<(\/?)reddot:cms>/gm, css: 'rendertag' }, - { regex: /<navigation(.*?)>/gm, css: 'rendertag' }, - { regex: /<(\/?)output(.*?)>/gm, css: 'rendertag' }, - { regex: /<(\/?)foreach(.*?)>/gm, css: 'rendertag' }, - { regex: /<(\/?)if>/gm, css: 'rendertag' }, - { regex: /<(\/?)query(.*?)>/gm, css: 'rendertag' }, - { regex: /<(\/?)htmltext>/gm, css: 'rendertag' }, - { regex: /<(\/?)xmltext>/gm, css: 'rendertag' }, - { regex: /<(\/?)currentPageCommentCount(.*?)>/gm, css: 'rendertag' }, - { regex: /<(\/?)pagesMostCommented(.*?)>/gm, css: 'rendertag' } + { regex: /<%([^!])+?%>/gm, css: 'wsm-placeholder' }, + { regex: /<!(\/?)IoRange(.+?)>/gm, css: 'wsm-blockmark' }, + { regex: /<!IoRedDot(.+?)>/gm, css: 'wsm-smartedit' }, + { regex: /<%!!(.+?)!!%>/gm, css: 'wsm-rendertag-short' }, + { regex: /<(\/?)reddot:cms>/gm, css: 'wsm-rendertag' }, + { regex: /<navigation(.*?)>/gm, css: 'wsm-rendertag' }, + { regex: /<(\/?)output(.*?)>/gm, css: 'wsm-rendertag' }, + { regex: /<(\/?)foreach(.*?)>/gm, css: 'wsm-rendertag' }, + { regex: /<(\/?)if>/gm, css: 'wsm-rendertag' }, + { regex: /<(\/?)query(.*?)>/gm, css: 'wsm-rendertag' }, + { regex: /<(\/?)htmltext>/gm, css: 'wsm-rendertag' }, + { regex: /<(\/?)xmltext>/gm, css: 'wsm-rendertag' }, + { regex: /<(\/?)currentPageCommentCount(.*?)>/gm, css: 'wsm-rendertag' }, + { regex: /<(\/?)pagesMostCommented(.*?)>/gm, css: 'wsm-rendertag' } ]; }; -SyntaxHighlighter.brushes.Custom.prototype = new SyntaxHighlighter.Highlighter(); -SyntaxHighlighter.brushes.Custom.aliases = ['WSM']; \ No newline at end of file +SyntaxHighlighter.brushes.wsm.prototype = new SyntaxHighlighter.Highlighter(); +SyntaxHighlighter.brushes.wsm.aliases = ['wsm','ms']; \ No newline at end of file diff --git a/scripts/shBrushxWSM.js b/scripts/shBrushxWSM.js new file mode 100644 index 0000000..33d37d7 --- /dev/null +++ b/scripts/shBrushxWSM.js @@ -0,0 +1,64 @@ +SyntaxHighlighter.brushes.xwsm = function () { + this.regexList = [ + { regex: /<%([^!])+?%>/gm, css: 'xplaceholder' }, + { regex: /<!(\/?)IoRangeNavigation>/gm, css: 'xblockmark-navigation' }, + { regex: /<!(\/?)IoRangeNavigationArea>/gm, css: 'xblockmark-navigation' }, + { regex: /<!(\/?)IoRangeIf>/gm, css: 'xblockmark-condition' }, + { regex: /<!(\/?)IoRangeIfExists>/gm, css: 'xblockmark-condition' }, + { regex: /<!(\/?)IoRangeSwitch>/gm, css: 'xblockmark-condition' }, + { regex: /<!(\/?)IoRangeConstraint>/gm, css: 'xblockmark-constraint' }, + { regex: /<!(\/?)IoRangeThen>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeElse>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeCase>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeFor>/gm, css: 'xblockmark-loop' }, + { regex: /<!(\/?)IoRangeForEach>/gm, css: 'xblockmark-loop' }, + { regex: /<!(\/?)IoRangeDo>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeComment>/gm, css: 'xblockmark-comment' }, + { regex: /<!(\/?)IoRangeDocumentation>/gm, css: 'xblockmark-comment' }, + { regex: /<!(\/?)IoRangeNoOutput>/gm, css: 'xblockmark-comment' }, + { regex: /<!(\/?)IoRangeImageList>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeInclude>/gm, css: 'xblockmark-rendermode' }, + { regex: /<!(\/?)IoRangeMath>/gm, css: 'xblockmark-math' }, + { regex: /<!(\/?)IoRangePreDefinition>/gm, css: 'xblockmark-special' }, + { regex: /<!(\/?)IoRangeTemp>/gm, css: 'xblockmark-special' }, + { regex: /<!(\/?)IoRangeSession>/gm, css: 'xblockmark-special' }, + { regex: /<!(\/?)IoRangeUiSession>/gm, css: 'xblockmark-special' }, + { regex: /<!(\/?)IoRangePreviewMode>/gm, css: 'xblockmark-rendermode' }, + { regex: /<!(\/?)IoRangeEditMode>/gm, css: 'xblockmark-rendermode' }, + { regex: /<!(\/?)IoRangeEditModeOn>/gm, css: 'xblockmark-rendermode' }, + { regex: /<!(\/?)IoRangeEditModeOff>/gm, css: 'xblockmark-rendermode' }, + { regex: /<!(\/?)IoRangePublishMode>/gm, css: 'xblockmark-rendermode' }, + { regex: /<!(\/?)IoRangeRDExecute>/gm, css: 'xblockmark-rendermode' }, + { regex: /<!(\/?)IoRangePreExecute>/gm, css: 'xblockmark-rendermode' }, + + { regex: /<!(\/?)IoRangeBlocktyp>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeBack>/gm, css: 'xblockmark-navigation' }, + { regex: /<!(\/?)IoRangeBreadCrumb>/gm, css: 'xblockmark-navigation' }, + { regex: /<!(\/?)IoRangeConditional>/gm, css: 'xblockmark-condition' }, + { regex: /<!(\/?)IoRangeData>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeDragDrop>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeDynLink>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeHit>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeList>/gm, css: 'xblockmark-loop' }, + { regex: /<!(\/?)IoRangeRedDotMode>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeNoRedDotMode>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeRedDotEditOnly>/gm, css: 'xblockmark' }, + { regex: /<!(\/?)IoRangeNoEditMode>/gm, css: 'xblockmark' }, + + { regex: /<!(\/?)IoRangeX(.+?)>/gm, css: 'xblockmark' }, + { regex: /<!IoRedDot(.+?)>/gm, css: 'xsmartedit-wsm' }, + { regex: /<%!!(.+?)!!%>/gm, css: 'xrendertag-short' }, + { regex: /<(\/?)reddot:cms>/gm, css: 'xrendertag' }, + { regex: /<navigation(.*?)>/gm, css: 'xrendertag' }, + { regex: /<(\/?)output(.*?)>/gm, css: 'xrendertag' }, + { regex: /<(\/?)foreach(.*?)>/gm, css: 'xrendertag' }, + { regex: /<(\/?)if>/gm, css: 'xrendertag' }, + { regex: /<(\/?)query(.*?)>/gm, css: 'xrendertag' }, + { regex: /<(\/?)htmltext>/gm, css: 'xrendertag' }, + { regex: /<(\/?)xmltext>/gm, css: 'xrendertag' }, + { regex: /<(\/?)currentPageCommentCount(.*?)>/gm, css: 'xrendertag' }, + { regex: /<(\/?)pagesMostCommented(.*?)>/gm, css: 'xrendertag' } + ]; +}; +SyntaxHighlighter.brushes.xwsm.prototype = new SyntaxHighlighter.Highlighter(); +SyntaxHighlighter.brushes.xwsm.aliases = ['xwsm','xms']; \ No newline at end of file diff --git a/styles/shCoreWSM.css b/styles/shCoreWSM.css index 3eedb99..cb9789b 100644 --- a/styles/shCoreWSM.css +++ b/styles/shCoreWSM.css @@ -2,27 +2,27 @@ line-height: 1.2em !important; } -.syntaxhighlighter .placeholder { +.syntaxhighlighter .wsm-placeholder { color: #000000 !important; background-color: #ffff80 !important; } -.syntaxhighlighter .blockmark { +.syntaxhighlighter .wsm-blockmark { color: #008800 !important; background-color: #ccffcc !important; } -.syntaxhighlighter .smartedit-wsm { +.syntaxhighlighter .wsm-smartedit { color: #ff0000 !important; background-color: #ffe5e5 !important; } -.syntaxhighlighter .rendertag { +.syntaxhighlighter .wsm-rendertag { color: #197674 !important; background-color: #ccf0ff !important; } -.syntaxhighlighter .rendertag-short { +.syntaxhighlighter .wsm-rendertag-short { color: #000000 !important; background-color: #ccf0ff !important; } \ No newline at end of file diff --git a/styles/shCorexWSM.css b/styles/shCorexWSM.css new file mode 100644 index 0000000..d4e97a8 --- /dev/null +++ b/styles/shCorexWSM.css @@ -0,0 +1,68 @@ +.syntaxhighlighter a, .syntaxhighlighter div, .syntaxhighlighter code, .syntaxhighlighter table, .syntaxhighlighter table td, .syntaxhighlighter table tr, .syntaxhighlighter table tbody, .syntaxhighlighter table thead, .syntaxhighlighter table caption, .syntaxhighlighter textarea { + line-height: 1.2em !important; +} + +.syntaxhighlighter .xplaceholder { + color: #000000 !important; + background-color: #ffff80 !important; +} + +.syntaxhighlighter .xblockmark { + color: #008800 !important; + background-color: #ccffcc !important; +} + +.syntaxhighlighter .xblockmark-comment { + color: #000000 !important; + background-color: #d8d8d8 !important; +} + +.syntaxhighlighter .xblockmark-condition { + color: #8a4b08 !important; + background-color: #f5d0a9 !important; +} + +.syntaxhighlighter .xblockmark-loop { + color: #886a08 !important; + background-color: #f3e2a9 !important; +} + +.syntaxhighlighter .xblockmark-constraint { + color: #8a2908 !important; + background-color: #f5bca9 !important; +} + +.syntaxhighlighter .xblockmark-navigation { + color: #197674 !important; + background-color: #ccf0ff !important; +} + +.syntaxhighlighter .xblockmark-rendermode { + color: #08088a !important; + background-color: #cecef6 !important; +} + +.syntaxhighlighter .xblockmark-math { + color: #8a0808 !important; + background-color: #f8e0e0 !important; +} + +.syntaxhighlighter .xblockmark-special { + color: #610b5e !important; + background-color: #f6cef5 !important; +} + +.syntaxhighlighter .xsmartedit-wsm { + color: #ff0000 !important; + background-color: #ffe5e5 !important; +} + +.syntaxhighlighter .xrendertag { + color: #197674 !important; + background-color: #ccf0ff !important; +} + +.syntaxhighlighter .xrendertag-short { + color: #000000 !important; + background-color: #ccf0ff !important; +} \ No newline at end of file