From 75fc324b8d7bd95812bb4a100e4d14db825a7548 Mon Sep 17 00:00:00 2001 From: Thomas Pollinger Date: Tue, 22 May 2018 13:05:24 +0200 Subject: [PATCH] Update for extended blockmark --- demoNewBlockmarks.html | 554 ++++++++++++++++++++++++++++++++++++++++ demoNewxBlockmarks.html | 554 ++++++++++++++++++++++++++++++++++++++++ demoWSM.html | 2 +- demoxWSM.html | 51 ++++ scripts/shBrushWSM.js | 34 +-- scripts/shBrushxWSM.js | 64 +++++ styles/shCoreWSM.css | 10 +- styles/shCorexWSM.css | 68 +++++ 8 files changed, 1314 insertions(+), 23 deletions(-) create mode 100644 demoNewBlockmarks.html create mode 100644 demoNewxBlockmarks.html create mode 100644 demoxWSM.html create mode 100644 scripts/shBrushxWSM.js create mode 100644 styles/shCorexWSM.css diff --git a/demoNewBlockmarks.html b/demoNewBlockmarks.html new file mode 100644 index 0000000..2f0a149 --- /dev/null +++ b/demoNewBlockmarks.html @@ -0,0 +1,554 @@ + + + + + + + + + + + + + + + + + + +

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: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>
+    
+ +
+ +

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

+

+ (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>
+    
+ +
+ +

Variante A2

+ +

+ 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. +
+
+

plus weitere:

+ -and/-or
+ -like/-notlike
+ -match/-notmatch
+
+

+ + +

Note

+

+ -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>
+    
+ +
+ +

(weitere Constraint Beispiele)

+
+        <!IoRangeConstraint><%ArrayElement%> -containsany ("A", "B", "C") <!/IoRangeConstraint>
+        <!IoRangeConstraint><%ElementTypeNumber%> -gt 5 <!/IoRangeConstraint>
+    
+ +
+ +

...natürlich auch mit Verkettung

+
+        <!IoRangeConstraint>
+          <%ElementATypeNumber%> -le 100 -AND <%ElementBTypeNumber%> -existinany ("3", "7", "9").asInt32()
+        <!/IoRangeConstraint>
+    
+ +
+ +

Variante B

+

+ wie vor, jedoch vereinfachte Kurzschreibweise +
Gibt Element bei vorhanden/gefüllt aus, ansonsten den Else Teil +

+
+        <!IoRangeConditional>
+            <%Element%>
+            <!IoRangeElse> ... <!IoRangeElse>
+        <!/IoRangeConditional>
+    
+ +
+ +

Inline-Funktionen

+ ähnlich wie im Delivery Server oder RenderTags ;) like .NET C# - Einige Beispiele: +
+        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()%>
+
+        
+ +
+ + + + + \ No newline at end of file diff --git a/demoNewxBlockmarks.html b/demoNewxBlockmarks.html new file mode 100644 index 0000000..abe8d9b --- /dev/null +++ b/demoNewxBlockmarks.html @@ -0,0 +1,554 @@ + + + + + + + + + + + + + + + + + + +

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: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>
+    
+ +
+ +

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

+

+ (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>
+    
+ +
+ +

Variante A2

+ +

+ 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. +
+
+

plus weitere:

+ -and/-or
+ -like/-notlike
+ -match/-notmatch
+
+

+ + +

Note

+

+ -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>
+    
+ +
+ +

(weitere Constraint Beispiele)

+
+        <!IoRangeConstraint><%ArrayElement%> -containsany ("A", "B", "C") <!/IoRangeConstraint>
+        <!IoRangeConstraint><%ElementTypeNumber%> -gt 5 <!/IoRangeConstraint>
+    
+ +
+ +

...natürlich auch mit Verkettung

+
+        <!IoRangeConstraint>
+          <%ElementATypeNumber%> -le 100 -AND <%ElementBTypeNumber%> -existinany ("3", "7", "9").asInt32()
+        <!/IoRangeConstraint>
+    
+ +
+ +

Variante B

+

+ wie vor, jedoch vereinfachte Kurzschreibweise +
Gibt Element bei vorhanden/gefüllt aus, ansonsten den Else Teil +

+
+        <!IoRangeConditional>
+            <%Element%>
+            <!IoRangeElse> ... <!IoRangeElse>
+        <!/IoRangeConditional>
+    
+ +
+ +

Inline-Funktionen

+ ähnlich wie im Delivery Server oder RenderTags ;) like .NET C# - Einige Beispiele: +
+        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()%>
+
+        
+ +
+ + + + + \ No newline at end of file diff --git a/demoWSM.html b/demoWSM.html index 9e27257..ebf9f2c 100644 --- a/demoWSM.html +++ b/demoWSM.html @@ -11,7 +11,7 @@ -
+    
         <!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