Änderungen von Dokument Home
Zuletzt geändert von Steffen Rehfuß am 14.08.2026 18:59
Von Version 4.1
bearbeitet von Steffen Rehfuß
am 14.08.2026 18:25
am 14.08.2026 18:25
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version 1.1
bearbeitet von Steffen Rehfuß
am 14.08.2026 16:40
am 14.08.2026 16:40
Änderungskommentar:
Install extension [org.xwiki.platform:xwiki-platform-distribution-flavor-common/17.10.9]
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -1,400 +1,42 @@ 1 -{{velocity}} 2 -## ===================================================================== 3 -## Intranet-Startseite — Hero (TOP-Blogpost) + 12 App-Buttons + 4 Kacheln 4 -## Einfach in den Seiten-Editor (Quelltext/Wiki) einfuegen. 5 -## ===================================================================== 6 -## 7 -## ---- KONFIG 1: Blog-Space + Hero-Kategorie ---- 8 -#set ($blogSpace = 'Blog') ## technischer Space-Name des Blogs 9 -#set ($heroCategory = 'TOP') ## Kategorie, die gross dargestellt wird 10 -## 11 -## ---- KONFIG 2: Die 12 App-Buttons (Text / Icon / Link / Farbe) ---- 12 -## icon = Font-Awesome-Name (ohne "fa-"). Farbe = beliebiger Hex-Wert. 13 -#set ($apps = [ 14 - {'label':'Abteilung I', 'icon':'search', 'ref':'abteilung01:Main.WebHome', 'color':'#16a085'}, 15 - {'label':'MyPage', 'icon':'key', 'ref':'MyPage.WebHome', 'color':'#2980b9'}, 16 - {'label':'Blog', 'icon':'star', 'ref':'Blog.WebHome', 'color':'#8e44ad'}, 17 - {'label':'Chatbot', 'icon':'pencil-square-o', 'url':"javascript:document.getElementById('toggle-chat-button').click();void(0);", 'color':'#16a085'}, 18 - {'label':'Forum', 'icon':'group', 'ref':'Forums.WebHome', 'color':'#2980b9'}, 19 - {'label':'Umfragen', 'icon':'question', 'ref':'XPoll.WebHome', 'color':'#8e44ad'}, 20 - {'label':'Gruppenräume', 'icon':'life-ring', 'ref':'Rooms.WebHome', 'color':'#16a085'}, 21 - {'label':'Meine Favoriten', 'icon':'star', 'ref':'Internes.Favoriten.WebHome', 'color':'#2980b9'}, 22 - {'label':'Kalender', 'icon':'clock-o', 'ref':'MoccaCalendar.WebHome', 'color':'#8e44ad'}, 23 - {'label':'Org-Chart', 'icon':'sitemap', 'ref':'Internes.Organigramm.WebHome', 'color':'#2c3e50'}, 24 - {'label':'Tag Filter', 'icon':'filter', 'ref':'KBC Anwendungen.Tag Filter.WebHome', 'color':'#2c3e50'}, 25 - {'label':'Kantine', 'icon':'coffee', 'ref':'Internes.Kantine.Speiseplan vom 13\.07\.2026 - 17\.07\.2026.WebHome', 'color':'#2c3e50'} 26 -]) 27 -## 28 -## ---- Posts laden (neueste zuerst) ---- 29 -#set ($xwql = "from doc.object(Blog.BlogPostClass) as post where post.published = 1 and doc.hidden = false") 30 -#if ($blogSpace != '') 31 - #set ($xwql = "$xwql and doc.space like :space") 32 -#end 33 -#set ($xwql = "$xwql order by post.publishDate desc") 34 -#set ($q = $services.query.xwql($xwql).setLimit(30)) 35 -#if ($blogSpace != '') 36 - #set ($q = $q.bindValue('space', "$blogSpace%")) 37 -#end 38 -#set ($postNames = $q.execute()) 39 -## 40 -## ---- Hero (erster TOP-Post) + bis zu 4 Kachel-Posts bestimmen ---- 41 -#set ($heroDoc = $NULL) 42 -#set ($heroObj = $NULL) 43 -#set ($tilePosts = []) 44 -#foreach ($pn in $postNames) 45 - #set ($pd = $xwiki.getDocument($pn)) 46 - #set ($po = $pd.getObject('Blog.BlogPostClass')) 47 - #set ($isTop = false) 48 - #set ($cats = $po.getValue('category')) 49 - #if ($cats) 50 - #foreach ($c in $cats) 51 - #set ($cn = "$c") 52 - #set ($cn = $cn.substring($mathtool.add($cn.lastIndexOf('.'), 1))) 53 - #if ($cn == $heroCategory) 54 - #set ($isTop = true) 55 - #end 56 - #end 57 - #end 58 - #if ($isTop && !$heroDoc) 59 - #set ($heroDoc = $pd) 60 - #set ($heroObj = $po) 61 - #elseif ($tilePosts.size() < 4) 62 - #set ($discard = $tilePosts.add($pn)) 63 - #end 64 -#end 65 -## Fallback: kein TOP-Post -> neuesten Post als Hero nehmen 66 -#if (!$heroDoc && $postNames.size() > 0) 67 - #set ($heroDoc = $xwiki.getDocument($postNames.get(0))) 68 - #set ($heroObj = $heroDoc.getObject('Blog.BlogPostClass')) 69 - #set ($tilePosts = []) 70 - #foreach ($pn in $postNames) 71 - #if ("$pn" != "$postNames.get(0)" && $tilePosts.size() < 4) 72 - #set ($discard = $tilePosts.add($pn)) 73 - #end 74 - #end 75 -#end 76 -## 77 -## ---- Hero-Daten aufbereiten ---- 78 -#set ($heroImg = '') 79 -#if ($heroDoc) 80 - #foreach ($att in $heroDoc.getAttachmentList()) 81 - #if ($heroImg == '' && $att.getMimeType().startsWith('image/')) 82 - #set ($heroImg = $heroDoc.getAttachmentURL($att.getFilename())) 83 - #end 84 - #end 85 - #set ($heroTitle = $heroDoc.getPlainTitle()) 86 - #set ($heroText = "$!heroObj.getValue('extract')") 87 - #set ($heroDate = $heroObj.getValue('publishDate')) 88 -#end 89 -## 90 -{{html clean="false" wiki="false"}} 91 -<style> 92 -## Seitenkopf (Titel + "Zuletzt geaendert" + Aktionsmenue) auf DIESER Seite ausblenden 93 -.document-header { display: none !important; } 94 -## Breadcrumb (Pfad-Navigation) inkl. Wrapper ausblenden 95 -#hierarchy_breadcrumb, #hierarchy, .breadcrumb { display: none !important; } 96 -## Horizontale Trennlinie + Rechte-Warnung entfernen, Inhalt nach oben ziehen 97 -#mainContentArea > hr { display: none !important; } 98 -#missing-required-rights-warning { display: none !important; } 99 -## vom Editor erzeugten Leerabsatz um den Style-Block wegnehmen 100 -#xwikicontent > p:first-child { display: none !important; } 101 -#xwikicontent > p:empty { display: none !important; } 102 -## Fusszeile: Tags + "Gefaellt mir" + "Erstellt von / uebersetzt von" ausblenden 103 -#xdocTags, .doc-tags, .like-container, .xdocCreation { display: none !important; } 104 -.intra-wrap { width: 90%; max-width: 90%; margin: 0 auto; } 105 -.intra-cols { display: flex; gap: 20px; align-items: stretch; } 106 -.intra-main { flex: 2 1 0; min-width: 0; } 107 -.intra-side { flex: 1 1 0; display: flex; flex-direction: column; gap: 16px; } 108 -.intra-hero { 109 - position: relative; width: 100%; min-height: 360px; border-radius: 14px; 110 - overflow: hidden; background: #223; background-size: cover; background-position: center; 111 - box-shadow: 0 6px 18px rgba(0,0,0,.15); text-decoration: none; display: block; 112 -} 113 -.intra-hero::after { 114 - content: ""; position: absolute; inset: 0; 115 - background: linear-gradient(180deg, rgba(0,0,0,0) 30%, rgba(0,0,0,.75) 100%); 116 -} 117 -.intra-hero-body { position: absolute; left: 0; bottom: 0; z-index: 2; padding: 28px; color: #fff; } 118 -.intra-chip { 119 - display: inline-block; background: #e74c3c; color: #fff; font-weight: 700; 120 - font-size: 12px; letter-spacing: .08em; padding: 4px 12px; border-radius: 20px; text-transform: uppercase; 121 -} 122 -.intra-hero-date { opacity: .85; font-size: 13px; margin: 14px 0 4px; } 123 -.intra-hero h2 { color: #fff; margin: 4px 0 16px; font-size: 30px; line-height: 1.15; max-width: 90%; } 124 -.intra-btn { 125 - display: inline-block; background: #27ae60; color: #fff !important; text-decoration: none; 126 - padding: 9px 20px; border-radius: 24px; font-weight: 600; font-size: 14px; 127 -} 128 -.intra-btn:hover { filter: brightness(1.08); } 129 -.intra-apps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } 1 +== Willkommen in Ihrem Wiki == 130 130 131 -.intra-app { 132 - display: flex; 133 - flex-direction: column; 134 - justify-content: space-between; 135 - border-radius: 10px; 136 - padding: 12px 12px 10px; 137 - min-height: 84px; 138 - color: #fff !important; 139 - text-decoration: none; 140 - transition: transform .15s ease, 141 - box-shadow .15s ease, 142 - filter .15s ease; 143 -} 3 +XWiki ist das beste Werkzeug, um Ihr Wissen zu organisieren und zu verwalten. Ein //Wiki// ist aufgeteilt in eine Hierarchie von //Seiten//. Sie können mehrere Wikis erstellen, jedes mit einem eigenen Satz von Seiten. 144 144 145 -.intra-app:hover { 146 - transform: translateY(-2px); 147 - filter: brightness(.90); /* ca. 8 % dunkler */ 148 - box-shadow: 0 6px 14px rgba(0,0,0,.18); 149 -} 5 +XWiki kann als Wissensdatenbank (Support, Dokumentation, Vertrieb, etc.), für kollaborative Arbeitsbereiche oder sogar als komplettes Intranet genutzt werden. 150 150 151 -.intra-app:active { 152 - filter: brightness(.86); 153 -} 7 +== Die Grundlagen == 154 154 9 +Um das Meiste aus Ihrem Wiki herauszuholen, melden Sie sich an und: 155 155 156 -.intra-app-ic { font-size: 22px; line-height: 1; } 157 -.intra-app-ic .fa { color: #fff; } 158 -.intra-app-lbl { font-size: 13px; font-weight: 600; margin-top: 8px; } 159 -.intra-tiles { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; } 160 -.intra-side-fn { 161 - border: 2px dashed #cbd3dc; border-radius: 12px; padding: 20px; min-height: 120px; 162 - display: flex; flex-direction: column; align-items: center; justify-content: center; 163 - color: #8a97a6; text-align: center; font-size: 13px; 164 -} 165 -.intra-widget { background: #fff; border: 0.5px solid #e2e6ea; border-radius: 12px; padding: 16px 18px; box-shadow: 0 3px 12px rgba(0,0,0,.06); margin-top: 35px; } 166 -.intra-widget-h { font-size: 14px; font-weight: 700; color: #16324f; margin-bottom: 10px; } 167 -.intra-tagcloud { line-height: 2; } 168 -.intra-tag { display: inline-block; margin: 0 9px 4px 0; color: #2c6fbb; text-decoration: none; } 169 -.intra-tag:hover { text-decoration: underline; } 170 -.intra-cal-list { display: flex; flex-direction: column; } 171 -.intra-cal-item { display: flex; gap: 10px; align-items: baseline; padding: 7px 0; border-bottom: 1px solid #eef1f4; text-decoration: none; } 172 -.intra-cal-item:last-child { border-bottom: 0; } 173 -.intra-cal-item:hover .intra-cal-title { text-decoration: underline; } 174 -.intra-cal-date { flex: 0 0 auto; font-size: 12px; font-weight: 700; color: #2c6fbb; min-width: 52px; letter-spacing: .02em; } 175 -.intra-cal-title { font-size: 13px; color: #16324f; } 176 -.intra-cal-empty { color: #8a97a6; font-size: 13px; } 177 -.intra-tile { 178 - display: flex; background: #fff; border-radius: 12px; overflow: hidden; 179 - box-shadow: 0 3px 12px rgba(0,0,0,.10); text-decoration: none; color: #1a1a1a; min-height: 128px; 180 - transition: transform .15s ease, box-shadow .15s ease; 181 -} 182 -.intra-tile:hover { transform: translateY(-2px); box-shadow: 0 8px 18px rgba(0,0,0,.15); } 183 -.intra-tile-txt { flex: 1 1 auto; padding: 16px 18px; } 184 -.intra-tile-txt h3 { margin: 6px 0 6px; font-size: 17px; color: #16324f; } 185 -.intra-tile-ex { font-size: 13px; color: #555; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } 186 -.intra-tile-date { font-size: 12px; color: #8a8a8a; margin-top: 10px; } 187 -.intra-mini-chip { display:inline-block; font-size: 11px; font-weight: 700; color:#2c6fbb; letter-spacing:.05em; text-transform: uppercase; } 188 -.intra-tile-img { flex: 0 0 40%; background-size: cover; background-position: center; background-color: #dde3ea; } 189 -.intra-h { font-size: 15px; font-weight: 700; color: #16324f; margin: 26px 0 12px; } 190 -@media (max-width: 860px) { 191 - .intra-cols { flex-direction: column; } 192 - .intra-apps { grid-template-columns: repeat(4, 1fr); } 193 - .intra-tiles { grid-template-columns: 1fr; } 194 -} 195 -/* Aussenhuelle faengt den 3D-Ueberstand ab -> kein Scrollbalken-Flackern */ 196 -.intra-flip-outer { overflow: hidden; padding: 8px 12px 18px; margin-top: 24px; } 197 -.intra-flip { perspective: 1600px; } 198 -.intra-flip-inner { 199 - position: relative; 200 - transform-style: preserve-3d; 201 - transition: transform .6s cubic-bezier(.2,.7,.2,1); 202 - transition-delay: 0s; /* Richtungserkennung im JS verhindert Fehl-Flips */ 203 -} 204 -.intra-flip.is-back .intra-flip-inner { transform: rotateY(180deg); } 11 +Verwenden Sie die {{displayIcon name="pencil"/}} Schaltfläche oberhalb, um diese Seite zu //bearbeiten// und beginnen Sie damit, das Wiki Ihren Vorstellungen anzupassen. 205 205 206 -.intra-flip-face { 207 - -webkit-backface-visibility: hidden; backface-visibility: hidden; 208 - box-sizing: border-box; 209 - background: #fff; border: .5px solid #e2e6ea; border-radius: 12px; 210 - box-shadow: 0 3px 12px rgba(0,0,0,.06); padding: 16px 18px; 211 -} 212 -.intra-flip-front { position: relative; min-height: 250px; } /* gibt die Hoehe vor */ 213 -.intra-flip-back { position: absolute; inset: 0; transform: rotateY(180deg); overflow: auto; } 13 +Verwenden Sie die {{displayIcon name="add"/}} Schaltfläche oberhalb, um neue Seiten zu //erstellen// und erzeugen Sie eine //Hierarchie//, die Ihre Informationen am besten organisiert. 214 214 215 -/* Rueckseite darf nicht durch die Vorderseite hindurch klickbar sein */ 216 -.intra-flip-back { pointer-events: none; } 217 -.intra-flip.is-back .intra-flip-back { pointer-events: auto; } 218 -.intra-flip.is-back .intra-flip-front { pointer-events: none; } 15 +Verwenden Sie die {{displayIcon name="home"/}} Breadcrumbs über dem Titel, um innerhalb Ihrer Seiten zu navigieren. Ohne diese ist es leicht, sich in einem großen Wiki zu verirren. 219 219 220 -.intra-flip-hint { 221 - position: absolute; top: 12px; right: 14px; 222 - font-size: 10px; color: #8a97a6; background: #f2f5f8; 223 - border: 1px solid #e2e6ea; padding: 2px 8px; border-radius: 20px; 224 - pointer-events: none; 225 -} 226 -</style> 17 +Außerdem können Sie den [[Sandkasten>>Sandbox.WebHome]] verwenden, um weitere Demo-Inhalte anzusehen und die einzelnen Funktionen des Wikis auszuprobieren und besser kennenzulernen. 227 227 228 -<div class="intra-wrap"> 229 - <div class="intra-cols"> 19 +{{box}} 20 +Mit dem [[Getting Started Guide>>https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/GettingStarted/WebHome]] erfahren Sie mehr darüber, wie Sie XWiki verwenden. 21 +{{/box}} 230 230 231 - ## ===== LINKE SPALTE: Hero + 4 Blog-Kacheln ===== 232 - <div class="intra-main"> 23 +(%class="row"%) 24 +((( 25 +(%class="col-xs-12 col-sm-6"%) 26 +((( 27 +== Erweitern Sie Ihr Wiki == 233 233 234 - ## ----- HERO (grosser TOP-Post) ----- 235 - #if ($heroDoc) 236 - <a class="intra-hero" href="$heroDoc.getURL('view')" style="#if($heroImg != '')background-image: url('$heroImg');#end"> 237 - <div class="intra-hero-body"> 238 - <span class="intra-chip">$escapetool.xml($heroCategory)</span> 239 - #if ($heroDate)<div class="intra-hero-date">$datetool.format('dd. MMMM yyyy', $heroDate)</div>#end 240 - <h2>$escapetool.xml($heroTitle)</h2> 241 - <span class="intra-btn">Weiterlesen</span> 242 - </div> 243 - </a> 244 - #else 245 - <div class="intra-hero"><div class="intra-hero-body"><h2>Noch kein Blog-Beitrag</h2></div></div> 246 - #end 29 +Um die Leistungsfähigkeit zu erhöhen und den Funktionsumfang Ihres Wikis zu erweitern, verwenden Sie den [[Extension Manager>>XWiki.XWikiPreferences||queryString="editor=globaladmin§ion=XWiki.Extensions"]], um Erweiterungen zu suchen und zu installieren. 247 247 248 - ## ----- 4 BLOG-KACHELN (2 x 2), direkt unter dem Hero ----- 249 - <div class="intra-h">Aktuelles</div> 250 - <div class="intra-tiles"> 251 - #foreach ($pn in $tilePosts) 252 - #set ($td = $xwiki.getDocument($pn)) 253 - #set ($to = $td.getObject('Blog.BlogPostClass')) 254 - #set ($tImg = '') 255 - #foreach ($att in $td.getAttachmentList()) 256 - #if ($tImg == '' && $att.getMimeType().startsWith('image/')) 257 - #set ($tImg = $td.getAttachmentURL($att.getFilename())) 258 - #end 259 - #end 260 - #set ($tEx = "$!to.getValue('extract')") 261 - #set ($tCat = '') 262 - #set ($tcats = $to.getValue('category')) 263 - #if ($tcats && $tcats.size() > 0) 264 - #set ($fc = "$tcats.get(0)") 265 - #set ($tCat = $fc.substring($mathtool.add($fc.lastIndexOf('.'), 1))) 266 - #end 267 - #set ($tDate = $to.getValue('publishDate')) 268 - <a class="intra-tile" href="$td.getURL('view')"> 269 - <div class="intra-tile-txt"> 270 - #if ($tCat != '')<span class="intra-mini-chip">$escapetool.xml($tCat)</span>#end 271 - <h3>$escapetool.xml($td.getPlainTitle())</h3> 272 - <div class="intra-tile-ex">$escapetool.xml($tEx)</div> 273 - #if ($tDate)<div class="intra-tile-date">$datetool.format('dd.MM.yyyy', $tDate)</div>#end 274 - </div> 275 - <div class="intra-tile-img" style="#if($tImg != '')background-image: url('$tImg');#end"></div> 276 - </a> 277 - #end 278 - </div> 279 - </div> 31 +Benutzen Sie das [[Erweiterungsverzeichnis>>https://extensions.xwiki.org]], um durch die mehr als 900 für XWiki verfügbaren Community-Erweiterungen zu blättern. 32 +))) 280 280 281 - ## ===== RECHTE SPALTE: 12 App-Buttons + Platz fuer weitere Funktion ===== 282 - <div class="intra-side"> 34 +(%class="col-xs-12 col-sm-6"%) 35 +((( 36 +== Erstellen Sie Ihre Anwendung == 283 283 284 - ## ----- 12 APP-BUTTONS ----- 285 - <div class="intra-apps"> 286 - #foreach ($app in $apps) 287 - <a class="intra-app" style="background: $app.color;" href="#if($app.url != '')$app.url#else#end"> 288 - <span class="intra-app-ic"><span class="fa fa-$app.icon" aria-hidden="true"></span></span> 289 - <span class="intra-app-lbl">$escapetool.xml($app.label)</span> 290 - </a> 291 - #end 292 - </div> 38 +Gehen Sie über die verfügbaren Erweiterungen hinaus und definieren Sie die //Struktur// Ihrer Daten basierend auf //Ihrem// Bedarf, indem Sie //Ihre// eigenen Anwendungen mit [[App Within Minutes>>AppWithinMinutes]] (AWM) erstellen. 293 293 294 -## ----- NAECHSTE TERMINE (Mocca Calendar) / RUECKSEITE: TAGCLOUD ----- 295 -<div class="intra-flip-outer"> 296 - <div class="intra-flip" id="intra-flip-side"> 297 - <div class="intra-flip-inner"> 298 - 299 - <!-- VORDERSEITE: Naechste Termine --> 300 - <div class="intra-flip-face intra-flip-front"> 301 - <span class="intra-flip-hint">⋮ Maus von unten</span> 302 - <div class="intra-widget-h">Nächste Termine</div> 303 - <div class="intra-cal-list"> 304 - #set ($now = $datetool.date) 305 - #set ($evtXwql = "from doc.object(MoccaCalendar.MoccaCalendarEventClass) as event where event.startDate >= :now and doc.hidden = false order by event.startDate asc") 306 - #set ($evtNames = $services.query.xwql($evtXwql).bindValue('now', $now).setLimit(6).execute()) 307 - #if ($evtNames && $evtNames.size() > 0) 308 - #foreach ($en in $evtNames) 309 - #set ($ed = $xwiki.getDocument($en)) 310 - #set ($eo = $ed.getObject('MoccaCalendar.MoccaCalendarEventClass')) 311 - #set ($eStart = $eo.getValue('startDate')) 312 - #set ($eAllDay = $eo.getValue('allDay')) 313 - #set ($eTitle = $ed.getPlainTitle()) 314 - #if ($eTitle == '')#set ($eTitle = "$!eo.getValue('title')")#end 315 - <a class="intra-cal-item" href="$ed.getURL('view')"> 316 - <span class="intra-cal-date">#if($eStart)$datetool.format('dd.MM.', $eStart)#if("$!eAllDay" != '1') $datetool.format('HH:mm', $eStart)#end#end</span> 317 - <span class="intra-cal-title">$escapetool.xml($eTitle)</span> 318 - </a> 319 - #end 320 - #else 321 - <span class="intra-cal-empty">Keine anstehenden Termine.</span> 322 - #end 323 - </div> 324 - </div> 325 - 326 -<!-- RUECKSEITE: Tagcloud -->## 327 -<div class="intra-flip-face intra-flip-back">## 328 - <div class="intra-widget-h">Beliebte Themen</div>## 329 - #set ($tagMap = $xwiki.tag.getTagCount())## 330 - #if ($tagMap && $tagMap.size() > 0)## 331 - #set ($top = [])## 332 - #set ($maxCnt = 1)## 333 - #set ($minCnt = 999999)## 334 - #set ($tagCount = 0)## 335 -#foreach ($e in $collectiontool.sort($tagMap.entrySet(), ['value:desc']))## 336 - #if ($tagCount >= 40)#break#end## 337 - #if ($e.key.toLowerCase() != 'id')## 338 - #set ($discard = $top.add($e.key))## 339 - #set ($tagCount = $mathtool.add($tagCount, 1))## 340 - #if ($e.value > $maxCnt)#set ($maxCnt = $e.value)#end## 341 - #if ($e.value < $minCnt)#set ($minCnt = $e.value)#end## 342 - #end## 343 -#end## 344 - #set ($span = $mathtool.max(1, $mathtool.sub($maxCnt, $minCnt)))## 345 - #set ($alpha = $collectiontool.sort($top))## 346 - <div class="intra-tagcloud">## 347 - #foreach ($tagName in $top)## 348 - #set ($cnt = $tagMap.get($tagName))## 349 - #set ($lvl = $mathtool.round($mathtool.div($mathtool.mul($mathtool.sub($cnt, $minCnt), 4), $span)))## 350 - #set ($ord = $alpha.indexOf($tagName))## 351 - <a class="intra-tag intra-tag-l${lvl}" style="order: ${ord};"## 352 - href="$xwiki.getURL('Main.Tags', 'view', "do=viewTag&tag=$escapetool.url($tagName)")"## 353 - title="$escapetool.xml($tagName): $cnt Seiten">## 354 - <span class="intra-tag-name">$escapetool.xml($tagName)</span><span class="intra-tag-cnt">$cnt</span>## 355 - </a>## 356 - #end## 357 - </div>## 358 - #else## 359 - <div class="intra-tagcloud"><span class="intra-cal-empty">Noch keine Tags vergeben.</span></div>## 360 - #end## 361 -</div>## 362 - 363 - </div> 364 - </div> 365 - </div> 366 - 367 - </div> 368 - 369 - </div> 370 -</div> 371 -<script> 372 -(function(){ 373 - var box = document.getElementById('intra-flip-side'); 374 - if(!box){ return; } 375 - var hoverCapable = !!(window.matchMedia && window.matchMedia('(hover: hover)').matches); 376 - 377 - // Letzte bekannte Maus-Y-Position global mitverfolgen, um beim Betreten der Karte 378 - // die Bewegungsrichtung zu kennen (Y waechst nach unten -> "von unten" = Y wird kleiner). 379 - var lastY = null; 380 - document.addEventListener('mousemove', function(e){ lastY = e.clientY; }, {passive:true}); 381 - 382 - box.addEventListener('mouseenter', function(e){ 383 - if (!hoverCapable) { return; } 384 - var enteredFromBelow = (lastY !== null && (lastY - e.clientY) > 2); 385 - if (enteredFromBelow) { 386 - box.classList.toggle('is-back'); 387 - } 388 - lastY = e.clientY; 389 - }); 390 - 391 - box.addEventListener('click', function(e){ 392 - if(e.target.closest('a')){ return; } 393 - if(hoverCapable){ return; } 394 - box.classList.toggle('is-back'); 395 - }); 396 -})(); 397 -</script> 398 - 399 -{{/html}} 400 -{{/velocity}} 40 +AWM übernimmt für Sie und Ihre Benutzer die einfache Erstellung und Verwaltung der Daten. 41 +))) 42 +)))