Changes for page Service Navigator
Last modified by Veronika Kocher on Thursday, 03 Sep 2026 14:15
From version 22.17
edited by Veronika Kocher
on Thursday, 03 Sep 2026 14:15
on Thursday, 03 Sep 2026 14:15
Change comment:
There is no comment for this version
To version 13.1
edited by Veronika Kocher
on Tuesday, 25 Aug 2026 16:48
on Tuesday, 25 Aug 2026 16:48
Change comment:
Rollback to version 11.1
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (0 modified, 0 added, 4 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,1688 +1,49 @@ 1 -{{html}} 2 -<div style="max-width:1400px;margin:0 auto;"> 1 +<div class="rh-grid"> 3 3 4 - <p style="margin:0 0 8px 0;"> 5 - Artistic and administrative services at the University support many different needs — from research projects and teaching to employment, IT, rooms, procurement, legal questions, international mobility and library services. 6 - </p> 7 - 8 - <p style="margin:0 0 22px 0;"> 9 - The <strong>Service Navigator</strong> is organised around what you need to do, not around the university's organisational chart. 10 - </p> 11 - 12 - <section style="margin:0 0 28px 0;padding:16px 18px;border:1px solid #e3ded6;border-radius:10px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);"> 13 - <h2 style="font-size:20px;margin:0 0 6px 0;color:#35312d;">Find a service</h2> 14 - <p style="margin:0 0 12px 0;color:#6a655e;"> 15 - Search by task, topic or question — for example <em>room, invoice, disability, DOI, event, employment, data protection</em> or <em>library</em>. 16 - </p> 17 - 18 - <form action="https://xwiki.uni-ak.ac.at/bin/view/Main/SolrSearch" method="get" role="search" style="margin:0;"> 19 - <div style="display:flex;gap:10px;align-items:center;flex-wrap:wrap;"> 20 - <label for="service-navigator-search" style="position:absolute;left:-10000px;">Search services</label> 21 - <input 22 - id="service-navigator-search" 23 - name="text" 24 - type="search" 25 - placeholder="What do you need help with?" 26 - autocomplete="off" 27 - style="flex:1 1 520px;min-width:260px;padding:11px 13px;border:1px solid #cfc8bd;border-radius:6px;background:#fffdf9;font-size:16px;" 28 - /> 29 - <button type="submit" class="btn btn-primary" style="padding:11px 22px;">Search</button> 3 + <div class="rh-col"> 4 + <a class="rh-img" href="#"></a> 5 + <div class="rh-body"> 6 + <h3 class="rh-heading"><a href="#"><span class="rh-num">1.</span> Planning & Set-up</a></h3> 7 + <p class="rh-desc">Resources for preparation of your research</p> 8 + <div class="rh-cards"> 9 + <a class="rh-card rh-flame1" href="#">Data Management</a> 10 + <a class="rh-card rh-flame2" href="#">Research Strategy and Funding</a> 11 + <a class="rh-card rh-flame3" href="#">Research Strategy and Funding</a> 12 + <a class="rh-card rh-flame4" href="#">Responsible and Compliant Research</a> 30 30 </div> 31 - </form> 32 - </section> 14 + <a class="rh-btn" href="#">Explore Planning & Set-up</a> 15 + </div> 16 + </div> 33 33 34 - <h2 style="font-size:24px;margin:0 0 16px 0;color:#35312d;">Find services by what you need to do</h2> 35 - 36 - <div style=" 37 - display:grid; 38 - grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); 39 - gap:18px; 40 - align-items:stretch; 41 - "> 42 - 43 - <!-- 1. PEOPLE, EQUALITY, HEALTH & WORK --> 44 - <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #f0aa00;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 45 - <div style="padding:18px 18px 14px 18px;flex:1;"> 46 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">PEOPLE & WORK</div> 47 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">People, Equality, Health & Work</h3> 48 - <p style="color:#6a655e;margin:0 0 14px 0;">Employment, equality, diversity, disability, accessibility and health.</p> 49 - 50 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 51 - <ul style="margin:0 0 14px 18px;padding:0;"> 52 - <li>ask about employment, working conditions or labour law</li> 53 - <li>get support concerning discrimination, equality or diversity</li> 54 - <li>address disability, accessibility or health at work</li> 55 - </ul> 56 - 57 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 58 - HR · staff development · equal treatment · diversity · disability · accessibility · health · labour law 59 - </div> 18 + <div class="rh-col"> 19 + <a class="rh-img" href="#"></a> 20 + <div class="rh-body"> 21 + <h3 class="rh-heading"><a href="#"><span class="rh-num">2.</span> Execution</a></h3> 22 + <p class="rh-desc">Daily support resources during your project</p> 23 + <div class="rh-cards"> 24 + <a class="rh-card rh-flame5" href="#">Collaboration Tools</a> 25 + <a class="rh-card rh-flame1" href="#">Computing resources</a> 26 + <a class="rh-card rh-flame2" href="#">Daily IT Support</a> 27 + <a class="rh-card rh-flame3" href="#">Graduate School</a> 28 + <a class="rh-card rh-flame4" href="#">TU Delft collections</a> 60 60 </div> 61 - <div style="padding:0 18px 18px 18px;"> 62 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore People & Work</span> 63 - </div> 64 - </section> 30 + <a class="rh-btn" href="#">Explore Execution</a> 31 + </div> 32 + </div> 65 65 66 - <!-- 2. IT & DIGITAL SERVICES --> 67 - <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #38b76a;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 68 - <div style="padding:18px 18px 14px 18px;flex:1;"> 69 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">IT & DIGITAL</div> 70 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">IT & Digital Services</h3> 71 - <p style="color:#6a655e;margin:0 0 14px 0;">Accounts, systems, software, digital infrastructure and IT support.</p> 72 - 73 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 74 - <ul style="margin:0 0 14px 18px;padding:0;"> 75 - <li>access an account, system or digital service</li> 76 - <li>solve an IT problem</li> 77 - <li>plan or coordinate a digital or IT project</li> 78 - </ul> 79 - 80 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 81 - Accounts · IT support · software · digital tools · infrastructure · IT project coordination 82 - </div> 34 + <div class="rh-col"> 35 + <a class="rh-img" href="#"></a> 36 + <div class="rh-body"> 37 + <h3 class="rh-heading"><a href="#"><span class="rh-num">3.</span> Dissemination</a></h3> 38 + <p class="rh-desc">Sharing, publishing and archiving research</p> 39 + <div class="rh-cards"> 40 + <a class="rh-card rh-flame5" href="#">Media Production</a> 41 + <a class="rh-card rh-flame1" href="#">Publishing</a> 42 + <a class="rh-card rh-flame2" href="#">Science Communication</a> 43 + <a class="rh-card rh-flame3" href="#">Tech Transfer</a> 83 83 </div> 84 - <div style="padding:0 18px 18px 18px;"> 85 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore IT & Digital Services</span> 86 - </div> 87 - </section> 88 - 89 - <!-- 3. ROOMS, BUILDINGS & CAMPUS --> 90 - <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #38b76a;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 91 - <div style="padding:18px 18px 14px 18px;flex:1;"> 92 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">CAMPUS</div> 93 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Rooms, Buildings & Campus</h3> 94 - <p style="color:#6a655e;margin:0 0 14px 0;">Rooms, buildings, facilities, campus use and operational support.</p> 95 - 96 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 97 - <ul style="margin:0 0 14px 18px;padding:0;"> 98 - <li>book or use a room</li> 99 - <li>report a building, equipment or safety issue</li> 100 - <li>find information about campus facilities or house rules</li> 101 - </ul> 102 - 103 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 104 - Facility management · estates · room coordination · building services · safety · house rules · campus operations 105 - </div> 106 - </div> 107 - <div style="padding:0 18px 18px 18px;"> 108 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Rooms & Campus</span> 109 - </div> 110 - </section> 111 - 112 - <!-- 4. ART & RESEARCH SERVICES --> 113 - <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #21b6d7;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 114 - <div style="padding:18px 18px 14px 18px;flex:1;"> 115 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">ART & RESEARCH</div> 116 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Art & Research Services</h3> 117 - <p style="color:#6a655e;margin:0 0 8px 0;">Cross-unit guidance for planning, managing, publishing, sharing and preserving artistic and research projects.</p> 118 - <!-- ARSN_ROOT_SCOPE_ROUTING_V1 --> 119 - <div style="font-size:12px;color:#506168;line-height:1.45;margin:0 0 14px 0;padding:7px 9px;background:#eef7f9;border-radius:5px;"><strong>Central project & funding hub:</strong> Support Kunst und Forschung · specialist responsibilities remain with the relevant service units.</div> 120 - 121 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 122 - <ul style="margin:0 0 14px 18px;padding:0;"> 123 - <li>develop or plan an artistic or research project</li> 124 - <li>manage research data, documentation or collaboration</li> 125 - <li>publish, cite, share or preserve outputs</li> 126 - </ul> 127 - 128 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 129 - Research projects · research data management · rights & ethics · repositories · publication · preservation 130 - </div> 131 - </div> 132 - <div style="padding:0 18px 18px 18px;"> 133 - <a href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/" class="btn btn-primary btn-block">Explore Art & Research Services</a> 134 - </div> 135 - </section> 136 - 137 - <!-- 5. STUDY, TEACHING & CURRICULUM --> 138 - <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #21b6d7;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 139 - <div style="padding:18px 18px 14px 18px;flex:1;"> 140 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">STUDY & TEACHING</div> 141 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Study, Teaching & Curriculum</h3> 142 - <p style="color:#6a655e;margin:0 0 14px 0;">Support for studying, teaching, curricula and the learning environment.</p> 143 - 144 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 145 - <ul style="margin:0 0 14px 18px;padding:0;"> 146 - <li>clarify a study-related question</li> 147 - <li>develop or change teaching or curricula</li> 148 - <li>find support for final projects or accessibility in study</li> 149 - </ul> 150 - 151 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 152 - Student affairs · teaching quality · curriculum development · final projects · student workspace 153 - </div> 154 - </div> 155 - <div style="padding:0 18px 18px 18px;"> 156 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Study & Teaching</span> 157 - </div> 158 - </section> 159 - 160 -<!-- 6. RESEARCH & DISCOVERY RESOURCES --> 161 - <section style="display:flex;flex-direction:column;min-height:340px;border:1px solid #e3ded6;border-left:6px solid #21b6d7;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 162 - <div style="padding:18px 18px 14px 18px;flex:1;"> 163 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">FIND · SEARCH · DISCOVER</div> 164 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Research & Discovery Resources</h3> 165 - <p style="color:#6a655e;margin:0 0 14px 0;">Find literature, databases, archives, collections, repositories and specialist research resources across the University.</p> 166 - 167 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 168 - <ul style="margin:0 0 14px 18px;padding:0;"> 169 - <li>find literature, media, databases or digital resources</li> 170 - <li>research archival, artistic or institutional collections</li> 171 - <li>discover repositories, specialist archives and research databases</li> 172 - </ul> 173 - 174 - <div style="font-size:12px;color:#6a655e;line-height:1.5;"> 175 - University Library & supA · licensed databases · University Archive & Art Collection · online collection databases · Oskar Kokoschka Centre · Viktor J. Papanek Foundation · Venedig Biennale Archiv Austria · Weibel Institute & Peter Weibel Archive · Ursula Blickle Video Archive · Angewandte Repository 176 - </div> 177 - </div> 178 - <div style="padding:0 18px 18px 18px;"> 179 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Research & Discovery</span> 180 - </div> 181 - </section> 182 - 183 - <!-- 7. PURCHASING, FINANCE & LOGISTICS --> 184 - <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #38b76a;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 185 - <div style="padding:18px 18px 14px 18px;flex:1;"> 186 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">PURCHASE & MOVE</div> 187 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Purchasing, Finance & Logistics</h3> 188 - <p style="color:#6a655e;margin:0 0 14px 0;">Buy, pay, budget, send, transport and move things.</p> 189 - 190 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 191 - <ul style="margin:0 0 14px 18px;padding:0;"> 192 - <li>purchase materials or services</li> 193 - <li>clarify an invoice, budget or financial process</li> 194 - <li>send, transport or move items</li> 195 - </ul> 196 - 197 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 198 - Procurement · controlling · accounting · resource planning · mail & logistics · transport · relocations 199 - </div> 200 - </div> 201 - <div style="padding:0 18px 18px 18px;"> 202 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Finance & Logistics</span> 203 - </div> 204 - </section> 205 - 206 - <!-- 8. LEGAL, DATA PROTECTION & GOVERNANCE --> 207 - <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #f0aa00;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 208 - <div style="padding:18px 18px 14px 18px;flex:1;"> 209 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">RIGHTS & RULES</div> 210 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Legal, Data Protection & Governance</h3> 211 - <p style="color:#6a655e;margin:0 0 14px 0;">Legal questions, privacy, information rights and institutional rules.</p> 212 - 213 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 214 - <ul style="margin:0 0 14px 18px;padding:0;"> 215 - <li>clarify a legal or contractual question</li> 216 - <li>deal with personal data or privacy</li> 217 - <li>understand an institutional rule or information-access requirement</li> 218 - </ul> 219 - 220 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 221 - Legal affairs · data protection · freedom of information · governance · institutional rules 222 - </div> 223 - </div> 224 - <div style="padding:0 18px 18px 18px;"> 225 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Legal & Governance</span> 226 - </div> 227 - </section> 228 - 229 - <!-- 9. COMMUNICATION, MEDIA & EVENTS --> 230 - <section style="display:flex;flex-direction:column;min-height:320px;border:1px solid #e3ded6;border-left:6px solid #e94b13;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 231 - <div style="padding:18px 18px 14px 18px;flex:1;"> 232 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">COMMUNICATE & ORGANISE</div> 233 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">Communication, Media & Events</h3> 234 - <p style="color:#6a655e;margin:0 0 14px 0;">Communicate, publish, print, promote and organise events.</p> 235 - 236 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 237 - <ul style="margin:0 0 14px 18px;padding:0;"> 238 - <li>communicate or publicise something</li> 239 - <li>produce a publication, flyer or printed material</li> 240 - <li>organise or support an event</li> 241 - </ul> 242 - 243 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 244 - Press & communications · publications · print materials · event management · Open House · festival 245 - </div> 246 - </div> 247 - <div style="padding:0 18px 18px 18px;"> 248 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore Communication & Events</span> 249 - </div> 250 - </section> 251 - 252 - <!-- 10. INTERNATIONAL OFFICE --> 253 - <section style="display:flex;flex-direction:column;min-height:300px;border:1px solid #e3ded6;border-left:6px solid #21b6d7;border-radius:12px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);overflow:hidden;"> 254 - <div style="padding:18px 18px 14px 18px;flex:1;"> 255 - <div style="display:inline-block;font-size:12px;font-weight:700;letter-spacing:.065em;color:#4f4a44;margin-bottom:8px;padding:4px 7px;background:#f3efe8;border-radius:4px;">GO INTERNATIONAL</div> 256 - <h3 style="font-size:21px;line-height:1.25;margin:0 0 8px 0;color:#252321;">International Office</h3> 257 - <p style="color:#6a655e;margin:0 0 14px 0;">International mobility, exchange and international support.</p> 258 - 259 - <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 260 - <ul style="margin:0 0 14px 18px;padding:0;"> 261 - <li>plan an international stay or exchange</li> 262 - <li>ask about mobility opportunities</li> 263 - <li>find support for an international context</li> 264 - </ul> 265 - 266 - <div style="font-size:12px;color:#6a655e;line-height:1.45;"> 267 - Mobility · exchange · international cooperation · international support 268 - </div> 269 - </div> 270 - <div style="padding:0 18px 18px 18px;"> 271 - <span class="btn btn-default btn-block disabled" style="background:#f4f0e9;border-color:#d8d1c7;color:#6b655d;" aria-disabled="true">Explore International Office</span> 272 - </div> 273 - </section> 274 - 275 - 45 + <a class="rh-btn" href="#">Explore Dissemination</a> 46 + </div> 276 276 </div> 277 277 278 - <aside style="margin-top:26px;padding:14px 16px;border:1px solid #cfe8ef;border-left:4px solid #21b6d7;background:#eaf6f9;border-radius:6px;"> 279 - <strong>Not sure where to start?</strong> 280 - <div style="margin-top:4px;"> 281 - Use the search at the top of the page or choose the card that best matches what you are trying to do. A service may deliberately appear in more than one area when this makes it easier to find. 282 - </div> 283 - </aside> 284 - 285 285 </div> 286 -{{/html}} 287 - 288 -{{html clean="false"}} 289 -<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START --> 290 - 291 -<style data-sn-service-navigator-master="1"> 292 -/* ========================================================= 293 - MASTER TYPOGRAPHY 294 - ========================================================= */ 295 -#xwikicontent h1, 296 -#xwikicontent h2, 297 -#xwikicontent h3, 298 -#xwikicontent h4, 299 -#xwikicontent h5, 300 -#xwikicontent h6, 301 -#xwikicontent .box-title, 302 -#xwikicontent [role="heading"], 303 -#xwikicontent h1 a, 304 -#xwikicontent h2 a, 305 -#xwikicontent h3 a, 306 -#xwikicontent h4 a, 307 -#xwikicontent h5 a, 308 -#xwikicontent h6 a, 309 -#xwikicontent .box-title a, 310 -#xwikicontent [role="heading"] a{ 311 - text-align:left!important; 312 - text-justify:auto!important; 313 - word-spacing:normal!important; 314 -} 315 - 316 -/* ========================================================= 317 - COMING SOON / IN VORBEREITUNG 318 - ========================================================= */ 319 -.sn-coming-soon-badge{ 320 - display:inline-block; 321 - vertical-align:middle; 322 - margin-left:10px; 323 - padding:4px 8px; 324 - border-radius:14px; 325 - border:1px solid #efd9cc; 326 - background:#fff4ee; 327 - color:#8a4d36; 328 - font-size:11px; 329 - font-weight:700; 330 - letter-spacing:.055em; 331 - line-height:1.2; 332 - white-space:nowrap; 333 -} 334 - 335 -/* ========================================================= 336 - NATIVE / DETAIL CALLOUT GEOMETRY 337 - Preserve existing backgrounds. 338 - ========================================================= */ 339 -#xwikicontent .arsn-info, 340 -#xwikicontent .dmp-info, 341 -#xwikicontent .ido-info, 342 -#xwikicontent .pp-info, 343 -#xwikicontent .infomessage{ 344 - box-sizing:border-box!important; 345 - border-left:4px solid #21b6d7!important; 346 - border-radius:8px; 347 - text-align:left!important; 348 - word-spacing:normal!important; 349 -} 350 - 351 -#xwikicontent .arsn-warn, 352 -#xwikicontent .dmp-warn, 353 -#xwikicontent .ido-warn, 354 -#xwikicontent .pp-warn, 355 -#xwikicontent .warn, 356 -#xwikicontent .warning, 357 -#xwikicontent .warningmessage, 358 -#xwikicontent .errormessage{ 359 - box-sizing:border-box!important; 360 - border-left:4px solid #e94b13!important; 361 - border-radius:8px; 362 - text-align:left!important; 363 - word-spacing:normal!important; 364 -} 365 - 366 -[data-sn-master-equal-height], 367 -[data-sn-master-first-row]{ 368 - box-sizing:border-box; 369 -} 370 - 371 -/* ========================================================= 372 - FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS 373 - ========================================================= */ 374 -#xwikicontent .arsn-area-label[data-sn-three-line="1"]{ 375 - display:grid!important; 376 - grid-template-columns:minmax(0,1fr)!important; 377 - grid-auto-rows:auto!important; 378 - width:100%!important; 379 - max-width:none!important; 380 - box-sizing:border-box!important; 381 - justify-items:start!important; 382 - align-items:start!important; 383 - gap:2px!important; 384 - text-align:left!important; 385 - text-align-last:left!important; 386 - text-justify:auto!important; 387 - word-spacing:normal!important; 388 - white-space:normal!important; 389 -} 390 -#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number, 391 -#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title, 392 -#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{ 393 - display:block!important; 394 - width:100%!important; 395 - margin:0!important; 396 - text-align:left!important; 397 - text-align-last:left!important; 398 - text-justify:auto!important; 399 - word-spacing:normal!important; 400 - white-space:normal!important; 401 -} 402 -</style> 403 - 404 -<script data-sn-service-navigator-master="1"> 405 -(function(){ 406 - "use strict"; 407 - 408 - var PAGE_KIND="overview"; 409 - var PLACEHOLDER=false; 410 - var PLACEHOLDER_LABEL="COMING SOON"; 411 - 412 - var MOBILE_MAX=767; 413 - var ROW_TOLERANCE=6; 414 - var RESIZE_DEBOUNCE=220; 415 - 416 - var root= 417 - document.getElementById("xwikicontent")|| 418 - document.querySelector(".xwiki-rendering-content")|| 419 - document.querySelector("main")|| 420 - document.body; 421 - 422 - if(!root)return; 423 - 424 - var managedHeight=new Set(); 425 - var managedMargin=new Set(); 426 - var originalHeight=new WeakMap(); 427 - var originalMargin=new WeakMap(); 428 - 429 - var resizeTimer=0; 430 - var running=false; 431 - 432 - var THEMES=[ 433 - { 434 - name:"BLUE", 435 - accent:"#21b6d7", 436 - bg:"#eaf7fb", 437 - text:"#315d68", 438 - labels:[ 439 - "HIER STARTEN", 440 - "ENTSCHEIDEN", 441 - "ÜBERPRÜFEN & ANPASSEN", 442 - "START HERE", 443 - "DECIDE", 444 - "REVIEW & ADAPT" 445 - ] 446 - }, 447 - { 448 - name:"RED", 449 - accent:"#e94b13", 450 - bg:"#fff1ec", 451 - text:"#8a4d36", 452 - labels:[ 453 - "PLANEN & ORGANISIEREN", 454 - "ORGANISIEREN & DOKUMENTIEREN", 455 - "PUBLIZIEREN & PRÄSENTIEREN", 456 - "PLAN & ORGANISE", 457 - "PLAN & ORGANIZE", 458 - "ORGANISE & DOCUMENT", 459 - "ORGANIZE & DOCUMENT", 460 - "PUBLISH & PRESENT" 461 - ] 462 - }, 463 - { 464 - name:"YELLOW", 465 - accent:"#f0aa00", 466 - bg:"#fff8e7", 467 - text:"#785b17", 468 - labels:[ 469 - "SCHÜTZEN & KLÄREN", 470 - "STANDARDISIEREN & IDENTIFIZIEREN", 471 - "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN", 472 - "PROTECT & CLARIFY", 473 - "STANDARDISE & IDENTIFY", 474 - "STANDARDIZE & IDENTIFY", 475 - "OPEN, REUSE & MAKE FINDABLE" 476 - ] 477 - }, 478 - { 479 - name:"GREEN", 480 - accent:"#38b76a", 481 - bg:"#edf9f1", 482 - text:"#3f7451", 483 - labels:[ 484 - "INFRASTRUKTUR EINRICHTEN", 485 - "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN", 486 - "SPEICHERN & ZUGRIFF STEUERN", 487 - "REPOSITORIUM, ERHALTEN & ÜBERGEBEN", 488 - "SET UP INFRASTRUCTURE", 489 - "SET UP INFRASTRUCTURE & COLLABORATION", 490 - "STORE & CONTROL ACCESS", 491 - "REPOSITORY, PRESERVE & HAND OVER" 492 - ] 493 - } 494 - ]; 495 - 496 - function num(value){ 497 - var n=parseFloat(value); 498 - return Number.isFinite(n)?n:0; 499 - } 500 - 501 - function norm(value){ 502 - return String(value||"") 503 - .replace(/\s+/g," ") 504 - .trim() 505 - .toUpperCase(); 506 - } 507 - 508 - function visible(el){ 509 - if(!el||el.nodeType!==1)return false; 510 - 511 - var style=getComputedStyle(el); 512 - var rect=el.getBoundingClientRect(); 513 - 514 - return ( 515 - style.display!=="none"&& 516 - style.visibility!=="hidden"&& 517 - rect.width>20&& 518 - rect.height>4 519 - ); 520 - } 521 - 522 - function saveStyle(el,map,property){ 523 - if(map.has(el))return; 524 - 525 - map.set(el,{ 526 - value:el.style.getPropertyValue(property), 527 - priority:el.style.getPropertyPriority(property) 528 - }); 529 - } 530 - 531 - function restoreStyle(el,map,property){ 532 - var original=map.get(el); 533 - 534 - if(original&&original.value){ 535 - el.style.setProperty( 536 - property, 537 - original.value, 538 - original.priority||"" 539 - ); 540 - }else{ 541 - el.style.removeProperty(property); 542 - } 543 - } 544 - 545 - function resetRuntime(){ 546 - managedHeight.forEach(function(el){ 547 - restoreStyle( 548 - el, 549 - originalHeight, 550 - "min-height" 551 - ); 552 - el.removeAttribute( 553 - "data-sn-master-equal-height" 554 - ); 555 - }); 556 - 557 - managedMargin.forEach(function(el){ 558 - restoreStyle( 559 - el, 560 - originalMargin, 561 - "margin-top" 562 - ); 563 - el.removeAttribute( 564 - "data-sn-master-first-row" 565 - ); 566 - }); 567 - 568 - managedHeight.clear(); 569 - managedMargin.clear(); 570 - } 571 - 572 - function themeFor(text){ 573 - var value=norm(text); 574 - 575 - for(var i=0;i<THEMES.length;i++){ 576 - for(var j=0;j<THEMES[i].labels.length;j++){ 577 - var label=THEMES[i].labels[j]; 578 - 579 - if( 580 - value===label|| 581 - value.indexOf(label+" ")===0|| 582 - value.indexOf(label+" -")===0|| 583 - value.indexOf(label+" ·")===0 584 - ){ 585 - return THEMES[i]; 586 - } 587 - } 588 - } 589 - 590 - return null; 591 - } 592 - 593 - /* ======================================================= 594 - BORDERLESS FILLED RED/ORANGE CTA BUTTONS 595 - ======================================================= */ 596 - 597 - function colourDistance(a,b){ 598 - return Math.sqrt( 599 - Math.pow(a[0]-b[0],2)+ 600 - Math.pow(a[1]-b[1],2)+ 601 - Math.pow(a[2]-b[2],2) 602 - ); 603 - } 604 - 605 - function makeFilledRedOrangeCTAsBorderless(){ 606 - var RED_ORANGE=[233,75,19]; 607 - 608 - Array.from( 609 - root.querySelectorAll( 610 - 'a,button,[role="button"],input[type="submit"],input[type="button"]' 611 - ) 612 - ).forEach(function(el){ 613 - if(!visible(el))return; 614 - 615 - var style=getComputedStyle(el); 616 - var rgb=parseRGB(style.backgroundColor); 617 - 618 - if(!rgb)return; 619 - 620 - if( 621 - colourDistance( 622 - rgb, 623 - RED_ORANGE 624 - )>55 625 - ){ 626 - return; 627 - } 628 - 629 - var rect=el.getBoundingClientRect(); 630 - 631 - if( 632 - rect.width<80|| 633 - rect.height<24 634 - ){ 635 - return; 636 - } 637 - 638 - el.style.setProperty( 639 - "border", 640 - "none", 641 - "important" 642 - ); 643 - 644 - el.style.setProperty( 645 - "border-left", 646 - "none", 647 - "important" 648 - ); 649 - 650 - el.style.setProperty( 651 - "border-top", 652 - "none", 653 - "important" 654 - ); 655 - 656 - el.style.setProperty( 657 - "border-right", 658 - "none", 659 - "important" 660 - ); 661 - 662 - el.style.setProperty( 663 - "border-bottom", 664 - "none", 665 - "important" 666 - ); 667 - 668 - el.style.setProperty( 669 - "box-shadow", 670 - "none", 671 - "important" 672 - ); 673 - }); 674 - } 675 - 676 - /* ======================================================= 677 - FULL-WIDTH THREE-LINE AREA LABELS 678 - ======================================================= */ 679 - 680 - function compactText(value){ 681 - return String(value||"") 682 - .replace(/\s+/g," ") 683 - .trim(); 684 - } 685 - 686 - function makeThreeLineAreaLabels(){ 687 - Array.from( 688 - root.querySelectorAll( 689 - ".arsn-area-label" 690 - ) 691 - ).forEach(function(label){ 692 - if( 693 - label.getAttribute( 694 - "data-sn-three-line" 695 - )==="1" 696 - ){ 697 - return; 698 - } 699 - 700 - var number= 701 - label.querySelector( 702 - ":scope > .arsn-area-number" 703 - ); 704 - 705 - var action= 706 - label.querySelector( 707 - ":scope > .arsn-area-action" 708 - ); 709 - 710 - if( 711 - !number|| 712 - !action 713 - ){ 714 - return; 715 - } 716 - 717 - var clone= 718 - label.cloneNode(true); 719 - 720 - var cloneNumber= 721 - clone.querySelector( 722 - ":scope > .arsn-area-number" 723 - ); 724 - 725 - var cloneAction= 726 - clone.querySelector( 727 - ":scope > .arsn-area-action" 728 - ); 729 - 730 - if(cloneNumber){ 731 - cloneNumber.remove(); 732 - } 733 - 734 - if(cloneAction){ 735 - cloneAction.remove(); 736 - } 737 - 738 - var titleText= 739 - compactText( 740 - clone.textContent 741 - ); 742 - 743 - if(!titleText){ 744 - return; 745 - } 746 - 747 - var numberNode= 748 - number.cloneNode(true); 749 - 750 - var actionNode= 751 - action.cloneNode(true); 752 - 753 - var titleNode= 754 - document.createElement( 755 - "span" 756 - ); 757 - 758 - titleNode.className= 759 - "sn-area-label-title"; 760 - 761 - titleNode.textContent= 762 - titleText; 763 - 764 - while(label.firstChild){ 765 - label.removeChild( 766 - label.firstChild 767 - ); 768 - } 769 - 770 - label.appendChild( 771 - numberNode 772 - ); 773 - 774 - label.appendChild( 775 - titleNode 776 - ); 777 - 778 - label.appendChild( 779 - actionNode 780 - ); 781 - 782 - label.setAttribute( 783 - "data-sn-three-line", 784 - "1" 785 - ); 786 - 787 - var head= 788 - label.closest( 789 - ".arsn-area-head" 790 - ); 791 - 792 - if(head){ 793 - head.style.setProperty( 794 - "width", 795 - "100%", 796 - "important" 797 - ); 798 - 799 - head.style.setProperty( 800 - "max-width", 801 - "100%", 802 - "important" 803 - ); 804 - 805 - head.style.setProperty( 806 - "box-sizing", 807 - "border-box", 808 - "important" 809 - ); 810 - } 811 - }); 812 - } 813 - 814 - /* ======================================================= 815 - PLACEHOLDER BADGE 816 - ======================================================= */ 817 - 818 - function applyPlaceholderBadge(){ 819 - if(!PLACEHOLDER)return; 820 - 821 - if( 822 - document.querySelector( 823 - ".sn-coming-soon-badge" 824 - ) 825 - ){ 826 - return; 827 - } 828 - 829 - var title= 830 - document.querySelector( 831 - "#document-title" 832 - )|| 833 - document.querySelector( 834 - "h1" 835 - ); 836 - 837 - if(!title)return; 838 - 839 - var badge= 840 - document.createElement( 841 - "span" 842 - ); 843 - 844 - badge.className= 845 - "sn-coming-soon-badge"; 846 - 847 - badge.textContent= 848 - PLACEHOLDER_LABEL; 849 - 850 - badge.setAttribute( 851 - "aria-label", 852 - PLACEHOLDER_LABEL 853 - ); 854 - 855 - title.appendChild( 856 - badge 857 - ); 858 - } 859 - 860 - /* ======================================================= 861 - DETAIL PAGE OWN-ACCENT PROPAGATION 862 - ======================================================= */ 863 - 864 - function parseRGB(value){ 865 - var match=String(value||"").match( 866 - /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i 867 - ); 868 - 869 - if(!match)return null; 870 - 871 - return [ 872 - Number(match[1]), 873 - Number(match[2]), 874 - Number(match[3]) 875 - ]; 876 - } 877 - 878 - function distance(a,b){ 879 - return Math.sqrt( 880 - Math.pow(a[0]-b[0],2)+ 881 - Math.pow(a[1]-b[1],2)+ 882 - Math.pow(a[2]-b[2],2) 883 - ); 884 - } 885 - 886 - function paletteMatch(cssColor){ 887 - var rgb=parseRGB(cssColor); 888 - 889 - if(!rgb)return null; 890 - 891 - var palette=[ 892 - {hex:"#21b6d7",rgb:[33,182,215]}, 893 - {hex:"#e94b13",rgb:[233,75,19]}, 894 - {hex:"#f0aa00",rgb:[240,170,0]}, 895 - {hex:"#38b76a",rgb:[56,183,106]} 896 - ]; 897 - 898 - var best=null; 899 - var bestDistance=Infinity; 900 - 901 - palette.forEach(function(item){ 902 - var d=distance(rgb,item.rgb); 903 - 904 - if(d<bestDistance){ 905 - best=item; 906 - bestDistance=d; 907 - } 908 - }); 909 - 910 - return bestDistance<=30 911 - ?best 912 - :null; 913 - } 914 - 915 - function propagateDetailAccents(){ 916 - if(PAGE_KIND!=="detail")return; 917 - 918 - Array.from( 919 - root.querySelectorAll( 920 - ".arsn-call,.dmp-call,.ido-call,.pp-call,"+ 921 - ".arsn-source,.dmp-source,.ido-source,.pp-source" 922 - ) 923 - ).forEach(function(el){ 924 - if(!visible(el))return; 925 - 926 - var style=getComputedStyle(el); 927 - 928 - if( 929 - num(style.borderTopWidth)>=2 930 - ){ 931 - var match= 932 - paletteMatch( 933 - style.borderTopColor 934 - ); 935 - 936 - if(match){ 937 - el.style.setProperty( 938 - "border-left", 939 - "4px solid "+match.hex, 940 - "important" 941 - ); 942 - } 943 - } 944 - }); 945 - 946 - // Warning families: explicit safety override. 947 - Array.from( 948 - root.querySelectorAll( 949 - ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+ 950 - ".warn,.warning,.warningmessage,.errormessage" 951 - ) 952 - ).forEach(function(el){ 953 - if(!visible(el))return; 954 - 955 - el.style.setProperty( 956 - "border-left", 957 - "4px solid #e94b13", 958 - "important" 959 - ); 960 - }); 961 - 962 - // Info families: explicit orientation override. 963 - Array.from( 964 - root.querySelectorAll( 965 - ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage" 966 - ) 967 - ).forEach(function(el){ 968 - if(!visible(el))return; 969 - 970 - el.style.setProperty( 971 - "border-left", 972 - "4px solid #21b6d7", 973 - "important" 974 - ); 975 - }); 976 - } 977 - 978 - /* ======================================================= 979 - OVERVIEW SEMANTIC THEME PALETTE 980 - ======================================================= */ 981 - 982 - function smallestThemeHeaders(){ 983 - return Array.from( 984 - root.querySelectorAll( 985 - "div,span,p,strong,h3,h4,h5,h6" 986 - ) 987 - ).filter(function(el){ 988 - if(!visible(el))return false; 989 - if(!themeFor(el.textContent))return false; 990 - 991 - return !Array.from( 992 - el.children||[] 993 - ).some(function(child){ 994 - return !!themeFor( 995 - child.textContent 996 - ); 997 - }); 998 - }); 999 - } 1000 - 1001 - function findOverviewCard(header){ 1002 - var node=header.parentElement; 1003 - var candidates=[]; 1004 - 1005 - while(node&&node!==root){ 1006 - var rect=node.getBoundingClientRect(); 1007 - var style=getComputedStyle(node); 1008 - 1009 - var border= 1010 - num(style.borderTopWidth)+ 1011 - num(style.borderRightWidth)+ 1012 - num(style.borderBottomWidth)+ 1013 - num(style.borderLeftWidth); 1014 - 1015 - if( 1016 - rect.width>=220&& 1017 - rect.width<=800&& 1018 - rect.height>=120&& 1019 - border>=1 1020 - ){ 1021 - candidates.push(node); 1022 - } 1023 - 1024 - node=node.parentElement; 1025 - } 1026 - 1027 - if(!candidates.length)return null; 1028 - 1029 - candidates.sort(function(a,b){ 1030 - return ( 1031 - b.getBoundingClientRect().height- 1032 - a.getBoundingClientRect().height 1033 - ); 1034 - }); 1035 - 1036 - return candidates[0]; 1037 - } 1038 - 1039 - function rowCandidates(link,card){ 1040 - var result=[]; 1041 - var cardRect= 1042 - card.getBoundingClientRect(); 1043 - 1044 - var node=link; 1045 - 1046 - while(node&&node!==card){ 1047 - if(visible(node)){ 1048 - var rect= 1049 - node.getBoundingClientRect(); 1050 - 1051 - if( 1052 - rect.height<=105&& 1053 - rect.width>= 1054 - cardRect.width*.50&& 1055 - rect.width<= 1056 - cardRect.width*1.03 1057 - ){ 1058 - result.push(node); 1059 - } 1060 - } 1061 - 1062 - node=node.parentElement; 1063 - } 1064 - 1065 - return result; 1066 - } 1067 - 1068 - function chooseOuterRow( 1069 - candidates, 1070 - link 1071 - ){ 1072 - if(!candidates.length){ 1073 - return link; 1074 - } 1075 - 1076 - var bordered= 1077 - candidates.filter(function(el){ 1078 - return ( 1079 - num( 1080 - getComputedStyle(el) 1081 - .borderLeftWidth 1082 - )>=1 1083 - ); 1084 - }); 1085 - 1086 - var pool= 1087 - bordered.length 1088 - ?bordered 1089 - :candidates; 1090 - 1091 - pool.sort(function(a,b){ 1092 - var ar= 1093 - a.getBoundingClientRect(); 1094 - 1095 - var br= 1096 - b.getBoundingClientRect(); 1097 - 1098 - return ( 1099 - ar.left-br.left|| 1100 - br.width-ar.width 1101 - ); 1102 - }); 1103 - 1104 - return pool[0]||link; 1105 - } 1106 - 1107 - function applyOverviewPalette(){ 1108 - if(PAGE_KIND!=="overview"){ 1109 - return []; 1110 - } 1111 - 1112 - var headers= 1113 - smallestThemeHeaders() 1114 - .map(function(el){ 1115 - return { 1116 - el:el, 1117 - theme: 1118 - themeFor( 1119 - el.textContent 1120 - ), 1121 - card: 1122 - findOverviewCard( 1123 - el 1124 - ) 1125 - }; 1126 - }) 1127 - .filter(function(row){ 1128 - return !!row.card; 1129 - }); 1130 - 1131 - var unique=[]; 1132 - var seenHeaders=new Set(); 1133 - 1134 - headers.forEach(function(row){ 1135 - var key= 1136 - row.theme.name+ 1137 - "|"+ 1138 - Math.round( 1139 - row.card 1140 - .getBoundingClientRect() 1141 - .left 1142 - )+ 1143 - "|"+ 1144 - Math.round( 1145 - row.el 1146 - .getBoundingClientRect() 1147 - .top 1148 - ); 1149 - 1150 - if(!seenHeaders.has(key)){ 1151 - seenHeaders.add(key); 1152 - unique.push(row); 1153 - } 1154 - }); 1155 - 1156 - unique.forEach(function(row){ 1157 - var headerRect= 1158 - row.el 1159 - .getBoundingClientRect(); 1160 - 1161 - row.el.style.setProperty( 1162 - "background", 1163 - row.theme.bg, 1164 - "important" 1165 - ); 1166 - 1167 - row.el.style.setProperty( 1168 - "color", 1169 - row.theme.text, 1170 - "important" 1171 - ); 1172 - 1173 - row.el.style.setProperty( 1174 - "text-align", 1175 - "left", 1176 - "important" 1177 - ); 1178 - 1179 - row.el.style.setProperty( 1180 - "word-spacing", 1181 - "normal", 1182 - "important" 1183 - ); 1184 - 1185 - var later= 1186 - unique 1187 - .filter(function(other){ 1188 - return ( 1189 - other.card===row.card&& 1190 - other.el 1191 - .getBoundingClientRect() 1192 - .top> 1193 - headerRect.top+2 1194 - ); 1195 - }) 1196 - .sort(function(a,b){ 1197 - return ( 1198 - a.el 1199 - .getBoundingClientRect() 1200 - .top- 1201 - b.el 1202 - .getBoundingClientRect() 1203 - .top 1204 - ); 1205 - }); 1206 - 1207 - var stopTop= 1208 - later.length 1209 - ?later[0].el 1210 - .getBoundingClientRect() 1211 - .top 1212 - :Infinity; 1213 - 1214 - Array.from( 1215 - row.card.querySelectorAll("a") 1216 - ).forEach(function(link){ 1217 - if(!visible(link))return; 1218 - 1219 - var rect= 1220 - link.getBoundingClientRect(); 1221 - 1222 - if( 1223 - rect.top<= 1224 - headerRect.bottom-2|| 1225 - rect.top>= 1226 - stopTop-2 1227 - ){ 1228 - return; 1229 - } 1230 - 1231 - var candidates= 1232 - rowCandidates( 1233 - link, 1234 - row.card 1235 - ); 1236 - 1237 - var target= 1238 - chooseOuterRow( 1239 - candidates, 1240 - link 1241 - ); 1242 - 1243 - candidates.forEach(function(el){ 1244 - el.style.setProperty( 1245 - "border-left", 1246 - "0 solid transparent", 1247 - "important" 1248 - ); 1249 - }); 1250 - 1251 - target.style.setProperty( 1252 - "border-left", 1253 - "3px solid "+ 1254 - row.theme.accent, 1255 - "important" 1256 - ); 1257 - 1258 - target.style.setProperty( 1259 - "box-sizing", 1260 - "border-box", 1261 - "important" 1262 - ); 1263 - }); 1264 - }); 1265 - 1266 - return unique; 1267 - } 1268 - 1269 - /* ======================================================= 1270 - OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW 1271 - ======================================================= */ 1272 - 1273 - function alignOverviewCards(headers){ 1274 - if( 1275 - PAGE_KIND!=="overview"|| 1276 - window.innerWidth<=MOBILE_MAX 1277 - ){ 1278 - return; 1279 - } 1280 - 1281 - var cards=[]; 1282 - var seen=new Set(); 1283 - 1284 - headers.forEach(function(row){ 1285 - if(!seen.has(row.card)){ 1286 - seen.add(row.card); 1287 - cards.push(row.card); 1288 - } 1289 - }); 1290 - 1291 - if(cards.length<2){ 1292 - return; 1293 - } 1294 - 1295 - // Group cards by actual top position. 1296 - var groups=[]; 1297 - 1298 - cards.forEach(function(card){ 1299 - var top= 1300 - card.getBoundingClientRect().top; 1301 - 1302 - var group=null; 1303 - 1304 - for(var i=0;i<groups.length;i++){ 1305 - if( 1306 - Math.abs( 1307 - groups[i].top-top 1308 - )<=ROW_TOLERANCE 1309 - ){ 1310 - group=groups[i]; 1311 - break; 1312 - } 1313 - } 1314 - 1315 - if(!group){ 1316 - group={ 1317 - top:top, 1318 - cards:[] 1319 - }; 1320 - groups.push(group); 1321 - } 1322 - 1323 - group.cards.push(card); 1324 - }); 1325 - 1326 - groups.forEach(function(group){ 1327 - if(group.cards.length<2){ 1328 - return; 1329 - } 1330 - 1331 - var firstHeaders= 1332 - group.cards.map(function(card){ 1333 - var candidates= 1334 - headers 1335 - .filter(function(row){ 1336 - return row.card===card; 1337 - }) 1338 - .sort(function(a,b){ 1339 - return ( 1340 - a.el 1341 - .getBoundingClientRect() 1342 - .top- 1343 - b.el 1344 - .getBoundingClientRect() 1345 - .top 1346 - ); 1347 - }); 1348 - 1349 - return candidates.length 1350 - ?candidates[0] 1351 - :null; 1352 - }); 1353 - 1354 - if( 1355 - !firstHeaders.some(function(row){ 1356 - return !row; 1357 - }) 1358 - ){ 1359 - var targetTop= 1360 - Math.max.apply( 1361 - Math, 1362 - firstHeaders.map(function(row){ 1363 - return ( 1364 - row.el 1365 - .getBoundingClientRect() 1366 - .top- 1367 - row.card 1368 - .getBoundingClientRect() 1369 - .top 1370 - ); 1371 - }) 1372 - ); 1373 - 1374 - firstHeaders.forEach(function(row){ 1375 - var relativeTop= 1376 - row.el 1377 - .getBoundingClientRect() 1378 - .top- 1379 - row.card 1380 - .getBoundingClientRect() 1381 - .top; 1382 - 1383 - var delta= 1384 - targetTop-relativeTop; 1385 - 1386 - if(delta>1){ 1387 - saveStyle( 1388 - row.el, 1389 - originalMargin, 1390 - "margin-top" 1391 - ); 1392 - 1393 - var current= 1394 - num( 1395 - getComputedStyle( 1396 - row.el 1397 - ).marginTop 1398 - ); 1399 - 1400 - row.el.style.setProperty( 1401 - "margin-top", 1402 - ( 1403 - current+delta 1404 - )+"px" 1405 - ); 1406 - 1407 - row.el.setAttribute( 1408 - "data-sn-master-first-row", 1409 - "1" 1410 - ); 1411 - 1412 - managedMargin.add( 1413 - row.el 1414 - ); 1415 - } 1416 - }); 1417 - } 1418 - 1419 - var maxHeight=0; 1420 - 1421 - group.cards.forEach(function(card){ 1422 - maxHeight= 1423 - Math.max( 1424 - maxHeight, 1425 - card 1426 - .getBoundingClientRect() 1427 - .height 1428 - ); 1429 - }); 1430 - 1431 - maxHeight= 1432 - Math.ceil(maxHeight); 1433 - 1434 - group.cards.forEach(function(card){ 1435 - saveStyle( 1436 - card, 1437 - originalHeight, 1438 - "min-height" 1439 - ); 1440 - 1441 - card.style.setProperty( 1442 - "min-height", 1443 - maxHeight+"px" 1444 - ); 1445 - 1446 - card.setAttribute( 1447 - "data-sn-master-equal-height", 1448 - "1" 1449 - ); 1450 - 1451 - managedHeight.add( 1452 - card 1453 - ); 1454 - }); 1455 - }); 1456 - } 1457 - 1458 - /* ======================================================= 1459 - DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY 1460 - ======================================================= */ 1461 - 1462 - function equaliseDetailGrids(){ 1463 - if( 1464 - PAGE_KIND!=="detail"|| 1465 - window.innerWidth<=MOBILE_MAX 1466 - ){ 1467 - return; 1468 - } 1469 - 1470 - var selectors=[ 1471 - ".arsn-grid", 1472 - ".arsn-grid-2", 1473 - ".arsn-grid-3", 1474 - ".dmp-grid", 1475 - ".ido-grid", 1476 - ".pp-grid" 1477 - ]; 1478 - 1479 - selectors.forEach(function(selector){ 1480 - Array.from( 1481 - root.querySelectorAll(selector) 1482 - ).forEach(function(grid){ 1483 - var children= 1484 - Array.from( 1485 - grid.children||[] 1486 - ).filter(visible); 1487 - 1488 - if(children.length<2){ 1489 - return; 1490 - } 1491 - 1492 - var groups=[]; 1493 - 1494 - children.forEach(function(child){ 1495 - var top= 1496 - child 1497 - .getBoundingClientRect() 1498 - .top; 1499 - 1500 - var group=null; 1501 - 1502 - for(var i=0;i<groups.length;i++){ 1503 - if( 1504 - Math.abs( 1505 - groups[i].top-top 1506 - )<=ROW_TOLERANCE 1507 - ){ 1508 - group=groups[i]; 1509 - break; 1510 - } 1511 - } 1512 - 1513 - if(!group){ 1514 - group={ 1515 - top:top, 1516 - items:[] 1517 - }; 1518 - groups.push(group); 1519 - } 1520 - 1521 - group.items.push(child); 1522 - }); 1523 - 1524 - groups.forEach(function(group){ 1525 - if(group.items.length<2){ 1526 - return; 1527 - } 1528 - 1529 - var maxHeight=0; 1530 - 1531 - group.items.forEach(function(item){ 1532 - maxHeight= 1533 - Math.max( 1534 - maxHeight, 1535 - item 1536 - .getBoundingClientRect() 1537 - .height 1538 - ); 1539 - }); 1540 - 1541 - maxHeight= 1542 - Math.ceil(maxHeight); 1543 - 1544 - group.items.forEach(function(item){ 1545 - saveStyle( 1546 - item, 1547 - originalHeight, 1548 - "min-height" 1549 - ); 1550 - 1551 - item.style.setProperty( 1552 - "min-height", 1553 - maxHeight+"px" 1554 - ); 1555 - 1556 - item.setAttribute( 1557 - "data-sn-master-equal-height", 1558 - "1" 1559 - ); 1560 - 1561 - managedHeight.add(item); 1562 - }); 1563 - }); 1564 - }); 1565 - }); 1566 - } 1567 - 1568 - /* ======================================================= 1569 - RUN / RESPONSIVE SCHEDULING 1570 - ======================================================= */ 1571 - 1572 - function run(){ 1573 - if(running)return; 1574 - 1575 - running=true; 1576 - 1577 - try{ 1578 - resetRuntime(); 1579 - applyPlaceholderBadge(); 1580 - propagateDetailAccents(); 1581 - 1582 - var headers= 1583 - applyOverviewPalette(); 1584 - 1585 - makeThreeLineAreaLabels(); 1586 - makeFilledRedOrangeCTAsBorderless(); 1587 - 1588 - if( 1589 - window.innerWidth> 1590 - MOBILE_MAX 1591 - ){ 1592 - alignOverviewCards( 1593 - headers 1594 - ); 1595 - 1596 - equaliseDetailGrids(); 1597 - } 1598 - }finally{ 1599 - running=false; 1600 - } 1601 - } 1602 - 1603 - function onResize(){ 1604 - if(resizeTimer){ 1605 - clearTimeout( 1606 - resizeTimer 1607 - ); 1608 - } 1609 - 1610 - resizeTimer= 1611 - setTimeout( 1612 - function(){ 1613 - resizeTimer=0; 1614 - run(); 1615 - }, 1616 - RESIZE_DEBOUNCE 1617 - ); 1618 - } 1619 - 1620 - async function waitForReady(){ 1621 - if( 1622 - document.readyState!=="complete" 1623 - ){ 1624 - await new Promise(function(resolve){ 1625 - window.addEventListener( 1626 - "load", 1627 - resolve, 1628 - {once:true} 1629 - ); 1630 - }); 1631 - } 1632 - 1633 - if( 1634 - document.fonts&& 1635 - document.fonts.ready 1636 - ){ 1637 - try{ 1638 - await document.fonts.ready; 1639 - }catch(error){} 1640 - } 1641 - 1642 - var images= 1643 - Array.from( 1644 - root.querySelectorAll("img") 1645 - ); 1646 - 1647 - await Promise.all( 1648 - images.map(function(img){ 1649 - if(img.complete){ 1650 - return Promise.resolve(); 1651 - } 1652 - 1653 - return new Promise(function(resolve){ 1654 - var done=function(){ 1655 - resolve(); 1656 - }; 1657 - 1658 - img.addEventListener( 1659 - "load", 1660 - done, 1661 - {once:true} 1662 - ); 1663 - 1664 - img.addEventListener( 1665 - "error", 1666 - done, 1667 - {once:true} 1668 - ); 1669 - }); 1670 - }) 1671 - ); 1672 - 1673 - run(); 1674 - } 1675 - 1676 - window.addEventListener( 1677 - "resize", 1678 - onResize, 1679 - {passive:true} 1680 - ); 1681 - 1682 - waitForReady(); 1683 -})(); 1684 -</script> 1685 - 1686 -<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END --> 1687 -{{/html}} 1688 -
- XWiki.XWikiRights[0]
-
- users
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.XWikiGuest - levels
-
... ... @@ -1,1 +1,0 @@ 1 -view - allow
-
... ... @@ -1,1 +1,0 @@ 1 -Allow
- XWiki.XWikiRights[1]
-
- groups
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.XWikiAllGroup - levels
-
... ... @@ -1,1 +1,0 @@ 1 -view - allow
-
... ... @@ -1,1 +1,0 @@ 1 -Allow
- XWiki.XWikiRights[2]
-
- groups
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.OE-0000211 - levels
-
... ... @@ -1,1 +1,0 @@ 1 -view,comment,edit,script - allow
-
... ... @@ -1,1 +1,0 @@ 1 -Allow
- XWiki.XWikiRights[3]
-
- users
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.p0010210 - levels
-
... ... @@ -1,1 +1,0 @@ 1 -view,comment,edit,script - allow
-
... ... @@ -1,1 +1,0 @@ 1 -Allow