Änderungen von Dokument Sandbox

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

Von Version 9.1
bearbeitet von Holger Engels
am 2023/11/08 06:52
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 12.1
bearbeitet von Holger Engels
am 2023/11/08 21:46
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -99,45 +99,8 @@
99 99  
100 100  [[image:XWikiLogo.png]]
101 101  
102 -= Makros =
102 +== Orphaned Pages ==
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 -{{html clean="false"}}
107 -<script>
108 - customElements.define("star-rating", class extends HTMLElement {
109 - set rating(rate) {
110 - if (!String(rate).includes("%")) rate = Number(rate) / this.stars * 100 + "%";
111 - this.querySelector(":nth-child(2)").setAttribute("width", rate); //2nd rect
112 - }
113 - set value(v) {
114 - this.setAttribute("rating", v);
115 - }
116 - connectedCallback() {
117 - let {bgcolor,stars,nocolor,color,rating} = this.attributes;
118 - let repeat = (count, func) => Array(count).fill().map(func);
119 - this.stars = ~~stars.value || 5;
120 - this.innerHTML = `<svg viewBox="0 0 ${this.stars*100} 100" style=cursor:pointer>` +
121 - `<rect height=100 fill=${nocolor.value} width=100% />` +
122 - `<rect height=100 fill=${color.value} />` +
123 - 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"/>`) +
124 - repeat(this.stars * 2, (i, n) => `<rect x=${ n*50 } n=${n} opacity=0 width=50 height=100 ` +
125 - ` onclick="this.closest('star-rating').value=${(n+1)/2}; this.closest('star-rating').dispatchEvent(new Event('click'))" ` +
126 - ` onmouseover="this.closest('star-rating').rating=${(n+1)/2}"/>`) +
127 - "</svg>";
128 - this.rating = rating.value;
129 - this.addEventListener('mouseleave', (e) => {
130 - if (e.target.tagName === 'STAR-RATING') {
131 - e.target.rating = e.target.getAttribute("rating")
132 - }
133 - })
134 - }
135 - });
136 -</script>
137 -{{/html}}
138 -
139 -
140 -
141 141  {{velocity filter="none"}}
142 142  {{html clean="false" wiki="true"}}
143 143  #set ($query = "where (doc.parent is null or doc.parent='') and doc.fullName != 'Main.WebHome' order by doc.name asc")
... ... @@ -154,6 +154,8 @@
154 154  {{/velocity}}
155 155  
156 156  
120 +== Rating Tests ==
121 +
157 157  {{html clean="false"}}
158 158  <script>
159 159   customElements.define("star-rating", class extends HTMLElement {
... ... @@ -186,3 +186,16 @@
186 186   });
187 187  </script>
188 188  {{/html}}
154 +
155 +{{velocity}}
156 +$doc.space
157 +#set ($lala = $services.ratings.exercise.setRating($doc.space + '.lala', $xcontext.getUser(), 1))
158 +#set ($lala = $services.ratings.exercise.setRating('lolo', $xcontext.getUser(), 1))
159 +
160 +{{html clean="false" wiki="true"}}
161 +<style>
162 +star-rating { display: inline-block; width: 120px }
163 +</style>
164 +<star-rating stars=5 rating="$services.ratings.pagereflection.getAverageRating($doc.space + 'lala').get().averageVote" bgcolor="white" nocolor="lightgrey" color="gold"></star-rating>
165 +{{/html}}
166 +{{/velocity}}