Änderungen von Dokument Sandbox

Zuletzt geändert von Holger Engels am 2024/01/26 15:58

Von Version 18.2
bearbeitet von Holger Engels
am 2023/11/11 18:56
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 7.2
bearbeitet von Holger Engels
am 2023/11/07 21:18
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -99,8 +99,36 @@
99 99  
100 100  [[image:XWikiLogo.png]]
101 101  
102 -== Orphaned Pages ==
102 += Makros =
103 103  
104 +Makros bieten die Möglichkeit, das Aussehen von Wiki-Seiten zu verbessern und stellen zusätzliche Funktionalitäten in der Seite zur Verfügung. Hier sind zwei Beispiele, wie Makros die Inhalte verbessern können:
105 +
106 +== Makro: Warnmeldung ==
107 +
108 +Dieses Makro bietet die Möglichkeit, die Aufmerksamkeit der Leser auf einen bestimmten Text zu lenken:
109 +
110 +{{warning}}
111 +Dies ist ein wichtiger Hinweis!
112 +{{/warning}}
113 +
114 +=== Ausrichten am ===
115 +
116 + ~===
117 +
118 +{{formula}}
119 +\begin{align*}
120 +f(x) &= x^2\! +3x\! +2 \\
121 +f(x) &= x^2+3x+2 \\
122 +f(x) &= x^2\, +3x\, +2 \\
123 +f(x) &= x^2\: +3x\: +2 \\
124 +f(x) &= x^2\; +3x\; +2 \\
125 +f(x) &= x^2\ +3x\ +2 \\
126 +f(x) &= x^2\quad +3x\quad +2 \\
127 +f(x) &= x^2\qquad +3x\qquad +2
128 +\end{align*}
129 +{{/formula}}
130 +
131 +
104 104  {{velocity filter="none"}}
105 105  {{html clean="false" wiki="true"}}
106 106  #set ($query = "where (doc.parent is null or doc.parent='') and doc.fullName != 'Main.WebHome' order by doc.name asc")
... ... @@ -117,37 +117,36 @@
117 117  {{/velocity}}
118 118  
119 119  
120 -== Rating Tests ==
121 -
122 -{{velocity}}
123 -#set($average = $services.ratings.aufgaben.setRating($doc.space + "^" + "test", 2))
124 -#set($average = $services.ratings.aufgaben.getAverageRating($doc.space + "^" + "test"))
125 -
126 -
127 -{{html clean="false" wiki="true"}}
128 -<style>
129 -star-rating { display: inline-block; width: 120px }
130 -</style>
131 -<star-rating stars=5 rating="$average.get().averageVote" bgcolor="white" nocolor="lightgrey" color="gold" onclick="event"></star-rating>
132 -{{/html}}
133 -{{/velocity}}
134 -
135 135  {{html clean="false"}}
136 136  <script>
137 - var setVote = function (vote) {
138 - fetch(new XWiki.Document('WebHome', 'Macros.Aufgabenbewertung').getURL('get') + "?outputSyntax=plain", {
139 - method: "POST",
140 - headers: { "Content-Type": "application/json"},
141 - body: JSON.stringify({
142 - vote: vote,
143 - doc: XWiki.currentDocument.space,
144 - id: "test",
145 - form_token: document.documentElement.getAttribute("data-xwiki-form-token")
146 - })
147 - }).then(data => {
148 - console.log(data.json())
150 + customElements.define("star-rating", class extends HTMLElement {
151 + set rating(rate) {
152 + if (!String(rate).includes("%")) rate = Number(rate) / this.stars * 100 + "%";
153 + this.querySelector(":nth-child(2)").setAttribute("width", rate); //2nd rect
154 + }
155 + set value(v) {
156 + this.setAttribute("rating", v);
157 + }
158 + connectedCallback() {
159 + let {bgcolor,stars,nocolor,color,rating} = this.attributes;
160 + let repeat = (count, func) => Array(count).fill().map(func);
161 + this.stars = ~~stars.value || 5;
162 + this.innerHTML = `<svg viewBox="0 0 ${this.stars*100} 100" style=cursor:pointer>` +
163 + `<rect height=100 fill=${nocolor.value} width=100% />` +
164 + `<rect height=100 fill=${color.value} />` +
165 + repeat(this.stars , (i, n) => `<path fill=${bgcolor.value} d="m${ n*100 } 0h102v100h-102v-100m91 42a6 6 90 00-4-10l-22-1a1 1 90 01-1 0l-8-21a6 6 90 00-11 0l-8 21a1 1 90 01-1 1l-22 1a6 6 90 00-4 10l18 14a1 1 90 010 1l-6 22a6 6 90 008 6l19-13a1 1 90 011 0l19 13a6 6 90 006 0a6 6 90 002-6l-6-22a1 1 90 010-1z"/>`) +
166 + repeat(this.stars * 2, (i, n) => `<rect x=${ n*50 } n=${n} opacity=0 width=50 height=100 ` +
167 + ` onclick="this.closest('star-rating').value=${(n+1)/2}; this.closest('star-rating').dispatchEvent(new Event('click'))" ` +
168 + ` onmouseover="this.closest('star-rating').rating=${(n+1)/2}"/>`) +
169 + "</svg>";
170 + this.rating = rating.value;
171 + this.addEventListener('mouseleave', (e) => {
172 + if (e.target.tagName === 'STAR-RATING') {
173 + e.target.rating = e.target.getAttribute("rating")
174 + }
175 + })
176 + }
149 149   });
150 - }
151 - setVote(4)
152 152  </script>
153 153  {{/html}}
180 +