Changes for page Service Navigator
Last modified by Veronika Kocher on Thursday, 03 Sep 2026 14:15
From version 22.15
edited by Veronika Kocher
on Thursday, 03 Sep 2026 10:09
on Thursday, 03 Sep 2026 10:09
Change comment:
There is no comment for this version
To version 22.10
edited by ZID Server
on Tuesday, 01 Sep 2026 10:21
on Tuesday, 01 Sep 2026 10:21
Change comment:
allow edit right for XWiki.p0010210
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. p00096701 +XWiki.server - Content
-
... ... @@ -114,9 +114,7 @@ 114 114 <div style="padding:18px 18px 14px 18px;flex:1;"> 115 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 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> 117 + <p style="color:#6a655e;margin:0 0 14px 0;">Plan, manage, publish, share and preserve artistic and research projects.</p> 120 120 121 121 <div style="font-weight:700;margin-bottom:6px;">I need to…</div> 122 122 <ul style="margin:0 0 14px 18px;padding:0;"> ... ... @@ -284,1121 +284,3 @@ 284 284 285 285 </div> 286 286 {{/html}} 287 - 288 -\n\n 289 -\n\n{{html clean="false"}} 290 -<!-- SN_HORIZONTAL_BOX_HARMONIZER_START --> 291 - 292 -<style data-sn-horizontal-box-harmonizer="7"> 293 -/* ---------- Typography: never justify headings ---------- */ 294 -#xwikicontent h1, 295 -#xwikicontent h2, 296 -#xwikicontent h3, 297 -#xwikicontent h4, 298 -#xwikicontent h5, 299 -#xwikicontent h6, 300 -#xwikicontent .box-title, 301 -#xwikicontent [role="heading"], 302 -#xwikicontent h1 a, 303 -#xwikicontent h2 a, 304 -#xwikicontent h3 a, 305 -#xwikicontent h4 a, 306 -#xwikicontent h5 a, 307 -#xwikicontent h6 a, 308 -#xwikicontent .box-title a, 309 -#xwikicontent [role="heading"] a{ 310 - text-align:left!important; 311 - text-justify:auto!important; 312 - word-spacing:normal!important; 313 -} 314 - 315 -/* ---------- Native XWiki semantic callouts ---------- */ 316 -#xwikicontent .box.infomessage, 317 -#xwikicontent .infomessage, 318 -#xwikicontent .box.warningmessage, 319 -#xwikicontent .warningmessage, 320 -#xwikicontent .box.successmessage, 321 -#xwikicontent .successmessage, 322 -#xwikicontent .box.errormessage, 323 -#xwikicontent .errormessage, 324 -#xwikicontent [data-sn-callout-harmonized="1"]{ 325 - box-sizing:border-box!important; 326 - border-radius:8px!important; 327 - border-top:1px solid rgba(0,0,0,.08)!important; 328 - border-right:1px solid rgba(0,0,0,.08)!important; 329 - border-bottom:1px solid rgba(0,0,0,.08)!important; 330 - border-left:4px solid var(--sn-callout-accent,#21b6d7)!important; 331 - padding:14px 16px!important; 332 - text-align:left!important; 333 - text-justify:auto!important; 334 - word-spacing:normal!important; 335 - box-shadow:none!important; 336 -} 337 - 338 -#xwikicontent .box.infomessage, 339 -#xwikicontent .infomessage{ 340 - --sn-callout-accent:#21b6d7; 341 - background:#eaf7fb!important; 342 -} 343 - 344 -#xwikicontent .box.warningmessage, 345 -#xwikicontent .warningmessage{ 346 - --sn-callout-accent:#f0aa00; 347 - background:#fff8e7!important; 348 -} 349 - 350 -#xwikicontent .box.successmessage, 351 -#xwikicontent .successmessage{ 352 - --sn-callout-accent:#38b76a; 353 - background:#edf9f1!important; 354 -} 355 - 356 -#xwikicontent .box.errormessage, 357 -#xwikicontent .errormessage{ 358 - --sn-callout-accent:#e94b13; 359 - background:#fff1ec!important; 360 -} 361 - 362 -#xwikicontent [data-sn-callout-harmonized="1"] > :first-child, 363 -#xwikicontent .infomessage > :first-child, 364 -#xwikicontent .warningmessage > :first-child, 365 -#xwikicontent .successmessage > :first-child, 366 -#xwikicontent .errormessage > :first-child{ 367 - margin-top:0!important; 368 -} 369 - 370 -#xwikicontent [data-sn-callout-harmonized="1"] > :last-child, 371 -#xwikicontent .infomessage > :last-child, 372 -#xwikicontent .warningmessage > :last-child, 373 -#xwikicontent .successmessage > :last-child, 374 -#xwikicontent .errormessage > :last-child{ 375 - margin-bottom:0!important; 376 -} 377 - 378 -#xwikicontent [data-sn-equal-height-managed], 379 -#xwikicontent [data-sn-first-section-aligned], 380 -#xwikicontent [data-sn-first-content-aligned]{ 381 - box-sizing:border-box; 382 -} 383 -</style> 384 - 385 -<script data-sn-horizontal-box-harmonizer="7"> 386 -(function(){ 387 - "use strict"; 388 - 389 - var MOBILE_MAX=767; 390 - var ROW_TOLERANCE=6; 391 - var MIN_W=150; 392 - var MIN_H=36; 393 - var MAX_PARENT_CHILDREN=18; 394 - var SEARCH_DEPTH=5; 395 - var RESIZE_DEBOUNCE=220; 396 - var MIN_WIDTH_CHANGE=2; 397 - 398 - var root= 399 - document.getElementById("xwikicontent")|| 400 - document.querySelector(".xwiki-rendering-content")|| 401 - document.querySelector("main")|| 402 - document.body; 403 - 404 - if(!root)return; 405 - 406 - var heightManaged=new Set(); 407 - var sectionManaged=new Set(); 408 - var contentManaged=new Set(); 409 - 410 - var originalMinHeight=new WeakMap(); 411 - var originalMarginTop=new WeakMap(); 412 - 413 - var resizeTimer=0; 414 - var lastWidth=-1; 415 - var hasApplied=false; 416 - var applying=false; 417 - 418 - function num(v){ 419 - var n=parseFloat(v); 420 - return Number.isFinite(n)?n:0; 421 - } 422 - 423 - function visible(el,minW,minH){ 424 - if(!el||el.nodeType!==1)return false; 425 - 426 - var s=getComputedStyle(el); 427 - 428 - if( 429 - s.display==="none"|| 430 - s.visibility==="hidden"|| 431 - Number(s.opacity)===0 432 - ){ 433 - return false; 434 - } 435 - 436 - var r=el.getBoundingClientRect(); 437 - 438 - return ( 439 - r.width>=(minW||1)&& 440 - r.height>=(minH||1) 441 - ); 442 - } 443 - 444 - function normalizeText(text){ 445 - return String(text||"") 446 - .replace(/\s+/g," ") 447 - .trim() 448 - .toUpperCase(); 449 - } 450 - 451 - function excluded(el){ 452 - return ( 453 - !el.matches|| 454 - el.matches( 455 - "button,input,select,textarea,option,label,img,svg,canvas,table,thead,tbody,tfoot,tr,td,th,summary,script,style,noscript,template,.btn,.chip,[role=button]" 456 - ) 457 - ); 458 - } 459 - 460 - /* ---------- Custom coloured callouts ---------- */ 461 - 462 - function nativeCallout(el){ 463 - var c= 464 - typeof el.className==="string" 465 - ? el.className.toLowerCase() 466 - : ""; 467 - 468 - return ( 469 - /(^|\s)(infomessage|warningmessage|successmessage|errormessage)(\s|$)/.test(c) 470 - ); 471 - } 472 - 473 - function customCallout(el){ 474 - if(!visible(el,220,42)||excluded(el))return false; 475 - 476 - var r=el.getBoundingClientRect(); 477 - 478 - if(r.height>520)return false; 479 - 480 - var s=getComputedStyle(el); 481 - 482 - var bg= 483 - s.backgroundColor&& 484 - s.backgroundColor!=="rgba(0, 0, 0, 0)"&& 485 - s.backgroundColor!=="transparent"&& 486 - s.backgroundColor!=="rgb(255, 255, 255)"; 487 - 488 - var left= 489 - num(s.borderLeftWidth); 490 - 491 - return ( 492 - bg&& 493 - left>=2 494 - ); 495 - } 496 - 497 - function harmoniseCustomCallouts(){ 498 - Array.from( 499 - root.querySelectorAll( 500 - "div,aside,section" 501 - ) 502 - ).forEach(function(el){ 503 - if(nativeCallout(el))return; 504 - if(!customCallout(el))return; 505 - 506 - var s=getComputedStyle(el); 507 - 508 - el.setAttribute( 509 - "data-sn-callout-harmonized", 510 - "1" 511 - ); 512 - 513 - if( 514 - s.borderLeftColor 515 - ){ 516 - el.style.setProperty( 517 - "--sn-callout-accent", 518 - s.borderLeftColor 519 - ); 520 - } 521 - }); 522 - } 523 - 524 - /* ---------- Restore only values V7 itself changed ---------- */ 525 - 526 - function saveOriginal(el,map,property){ 527 - if(map.has(el))return; 528 - 529 - map.set(el,{ 530 - value: 531 - el.style.getPropertyValue( 532 - property 533 - ), 534 - priority: 535 - el.style.getPropertyPriority( 536 - property 537 - ) 538 - }); 539 - } 540 - 541 - function restoreOriginal(el,map,property){ 542 - var original=map.get(el); 543 - 544 - if(original&&original.value){ 545 - el.style.setProperty( 546 - property, 547 - original.value, 548 - original.priority||"" 549 - ); 550 - }else{ 551 - el.style.removeProperty( 552 - property 553 - ); 554 - } 555 - } 556 - 557 - function resetRuntime(){ 558 - heightManaged.forEach(function(el){ 559 - restoreOriginal( 560 - el, 561 - originalMinHeight, 562 - "min-height" 563 - ); 564 - 565 - el.removeAttribute( 566 - "data-sn-equal-height-managed" 567 - ); 568 - }); 569 - 570 - sectionManaged.forEach(function(el){ 571 - restoreOriginal( 572 - el, 573 - originalMarginTop, 574 - "margin-top" 575 - ); 576 - 577 - el.removeAttribute( 578 - "data-sn-first-section-aligned" 579 - ); 580 - }); 581 - 582 - contentManaged.forEach(function(el){ 583 - restoreOriginal( 584 - el, 585 - originalMarginTop, 586 - "margin-top" 587 - ); 588 - 589 - el.removeAttribute( 590 - "data-sn-first-content-aligned" 591 - ); 592 - }); 593 - 594 - heightManaged.clear(); 595 - sectionManaged.clear(); 596 - contentManaged.clear(); 597 - } 598 - 599 - /* ---------- Card detection ---------- */ 600 - 601 - function namedLikeBox(el){ 602 - var c= 603 - typeof el.className==="string" 604 - ? el.className 605 - : ""; 606 - 607 - return /(^|[\s_-])(box|card|tile|panel|role|check|service|source|call|area|detail|resource|topic|warn|info)([\s_-]|$)/i.test(c); 608 - } 609 - 610 - function boxLike(el){ 611 - if( 612 - !visible(el,MIN_W,MIN_H)|| 613 - excluded(el) 614 - ){ 615 - return false; 616 - } 617 - 618 - var s=getComputedStyle(el); 619 - var r=el.getBoundingClientRect(); 620 - 621 - var border= 622 - num(s.borderTopWidth)+ 623 - num(s.borderRightWidth)+ 624 - num(s.borderBottomWidth)+ 625 - num(s.borderLeftWidth); 626 - 627 - var radius=Math.max( 628 - num(s.borderTopLeftRadius), 629 - num(s.borderTopRightRadius), 630 - num(s.borderBottomLeftRadius), 631 - num(s.borderBottomRightRadius) 632 - ); 633 - 634 - var bg= 635 - s.backgroundColor&& 636 - s.backgroundColor!=="rgba(0, 0, 0, 0)"&& 637 - s.backgroundColor!=="transparent"; 638 - 639 - var shadow= 640 - s.boxShadow&& 641 - s.boxShadow!=="none"; 642 - 643 - return ( 644 - namedLikeBox(el)|| 645 - border>=1|| 646 - (bg&&radius>=3)|| 647 - (shadow&&r.width>=180) 648 - ); 649 - } 650 - 651 - function pickTarget(child){ 652 - if(!visible(child,MIN_W,MIN_H))return null; 653 - 654 - if(boxLike(child))return child; 655 - 656 - var cr=child.getBoundingClientRect(); 657 - var q=[]; 658 - 659 - Array.from(child.children||[]).forEach(function(el){ 660 - q.push({el:el,depth:1}); 661 - }); 662 - 663 - var best=null; 664 - var bestScore=-Infinity; 665 - 666 - while(q.length){ 667 - var item=q.shift(); 668 - var el=item.el; 669 - 670 - if(!visible(el,MIN_W,MIN_H))continue; 671 - 672 - var r=el.getBoundingClientRect(); 673 - 674 - if( 675 - r.width>=cr.width*.68&& 676 - boxLike(el) 677 - ){ 678 - var widthFit= 679 - 1-Math.min( 680 - 1, 681 - Math.abs(cr.width-r.width)/ 682 - Math.max(1,cr.width) 683 - ); 684 - 685 - var topFit= 686 - 1-Math.min( 687 - 1, 688 - Math.abs(cr.top-r.top)/100 689 - ); 690 - 691 - var score= 692 - widthFit*6+ 693 - topFit*3+ 694 - Math.min(r.height,900)/450+ 695 - Math.min(r.width*r.height,900000)/900000; 696 - 697 - if(score>bestScore){ 698 - best=el; 699 - bestScore=score; 700 - } 701 - } 702 - 703 - if(item.depth<SEARCH_DEPTH){ 704 - Array.from(el.children||[]).forEach(function(next){ 705 - q.push({ 706 - el:next, 707 - depth:item.depth+1 708 - }); 709 - }); 710 - } 711 - } 712 - 713 - return best; 714 - } 715 - 716 - function groupRows(entries){ 717 - var groups=[]; 718 - 719 - entries 720 - .slice() 721 - .sort(function(a,b){ 722 - return ( 723 - a.rect.top-b.rect.top|| 724 - a.rect.left-b.rect.left 725 - ); 726 - }) 727 - .forEach(function(entry){ 728 - var group=null; 729 - 730 - for(var i=0;i<groups.length;i++){ 731 - if( 732 - Math.abs( 733 - groups[i].top- 734 - entry.rect.top 735 - )<=ROW_TOLERANCE 736 - ){ 737 - group=groups[i]; 738 - break; 739 - } 740 - } 741 - 742 - if(!group){ 743 - group={ 744 - top:entry.rect.top, 745 - entries:[] 746 - }; 747 - groups.push(group); 748 - } 749 - 750 - group.entries.push(entry); 751 - }); 752 - 753 - return groups; 754 - } 755 - 756 - function validRow(group){ 757 - if(group.entries.length<2)return false; 758 - 759 - var lefts= 760 - group.entries 761 - .map(function(e){return e.rect.left;}) 762 - .sort(function(a,b){return a-b;}); 763 - 764 - if( 765 - lefts[lefts.length-1]- 766 - lefts[0]< 767 - 80 768 - ){ 769 - return false; 770 - } 771 - 772 - var widths= 773 - group.entries 774 - .map(function(e){return e.rect.width;}) 775 - .filter(function(w){return w>0;}); 776 - 777 - if(widths.length<2)return false; 778 - 779 - var minW= 780 - Math.min.apply(Math,widths); 781 - 782 - var maxW= 783 - Math.max.apply(Math,widths); 784 - 785 - return ( 786 - maxW/ 787 - Math.max(1,minW)<= 788 - 1.9 789 - ); 790 - } 791 - 792 - /* ---------- Known ARSN first section bars ---------- */ 793 - 794 - function knownBar(el){ 795 - var text= 796 - normalizeText( 797 - el.textContent 798 - ); 799 - 800 - return ( 801 - text==="HIER STARTEN"|| 802 - text==="ORGANISIEREN & DOKUMENTIEREN"|| 803 - text==="ENTSCHEIDEN"|| 804 - text==="START HERE"|| 805 - text==="GET STARTED"|| 806 - text==="ORGANISE & DOCUMENT"|| 807 - text==="ORGANIZE & DOCUMENT"|| 808 - text==="DECIDE" 809 - ); 810 - } 811 - 812 - function findKnownBar(card){ 813 - var cardRect= 814 - card.getBoundingClientRect(); 815 - 816 - var rows= 817 - Array.from( 818 - card.querySelectorAll( 819 - "div,p,span,strong,h3,h4,h5,h6" 820 - ) 821 - ) 822 - .filter(function(el){ 823 - if(!visible(el,20,6))return false; 824 - if(!knownBar(el))return false; 825 - 826 - var r=el.getBoundingClientRect(); 827 - 828 - var rel= 829 - r.top- 830 - cardRect.top; 831 - 832 - return ( 833 - rel>=35&& 834 - rel<= 835 - cardRect.height*.75 836 - ); 837 - }) 838 - .sort(function(a,b){ 839 - return ( 840 - a.getBoundingClientRect().top- 841 - b.getBoundingClientRect().top 842 - ); 843 - }); 844 - 845 - return rows[0]||null; 846 - } 847 - 848 - function alignKnownBars(cards){ 849 - var rows= 850 - cards.map(function(card){ 851 - var bar= 852 - findKnownBar(card); 853 - 854 - if(!bar)return null; 855 - 856 - var cr= 857 - card.getBoundingClientRect(); 858 - 859 - var br= 860 - bar.getBoundingClientRect(); 861 - 862 - return { 863 - bar:bar, 864 - relativeTop: 865 - br.top- 866 - cr.top 867 - }; 868 - }); 869 - 870 - if( 871 - rows.some(function(row){ 872 - return !row; 873 - }) 874 - ){ 875 - return false; 876 - } 877 - 878 - var target= 879 - Math.max.apply( 880 - Math, 881 - rows.map(function(row){ 882 - return row.relativeTop; 883 - }) 884 - ); 885 - 886 - rows.forEach(function(row){ 887 - var delta= 888 - target- 889 - row.relativeTop; 890 - 891 - if(delta<=1)return; 892 - 893 - saveOriginal( 894 - row.bar, 895 - originalMarginTop, 896 - "margin-top" 897 - ); 898 - 899 - var current= 900 - num( 901 - getComputedStyle( 902 - row.bar 903 - ).marginTop 904 - ); 905 - 906 - row.bar.style.setProperty( 907 - "margin-top", 908 - ( 909 - current+ 910 - delta 911 - )+"px" 912 - ); 913 - 914 - row.bar.setAttribute( 915 - "data-sn-first-section-aligned", 916 - "7" 917 - ); 918 - 919 - sectionManaged.add( 920 - row.bar 921 - ); 922 - }); 923 - 924 - return true; 925 - } 926 - 927 - /* ---------- Generic first content after heading ---------- */ 928 - 929 - function heading(card){ 930 - var cr= 931 - card.getBoundingClientRect(); 932 - 933 - var rows= 934 - Array.from( 935 - card.querySelectorAll( 936 - "h1,h2,h3,h4,h5,h6,.box-title,[role=heading]" 937 - ) 938 - ) 939 - .filter(function(el){ 940 - if(!visible(el,20,8))return false; 941 - 942 - var r=el.getBoundingClientRect(); 943 - 944 - var rel= 945 - r.top- 946 - cr.top; 947 - 948 - return ( 949 - rel>=0&& 950 - rel<= 951 - Math.min( 952 - 160, 953 - cr.height*.45 954 - ) 955 - ); 956 - }) 957 - .sort(function(a,b){ 958 - return ( 959 - a.getBoundingClientRect().top- 960 - b.getBoundingClientRect().top 961 - ); 962 - }); 963 - 964 - return rows[0]||null; 965 - } 966 - 967 - function firstContent(card,h){ 968 - if(!h)return null; 969 - 970 - var cr= 971 - card.getBoundingClientRect(); 972 - 973 - var hr= 974 - h.getBoundingClientRect(); 975 - 976 - var rows= 977 - Array.from( 978 - card.querySelectorAll( 979 - "p,div,ul,ol,dl,blockquote" 980 - ) 981 - ) 982 - .filter(function(el){ 983 - if( 984 - el===h|| 985 - h.contains(el)|| 986 - el.contains(h) 987 - ){ 988 - return false; 989 - } 990 - 991 - if(!visible(el,30,8))return false; 992 - 993 - var text= 994 - String(el.textContent||"") 995 - .replace(/\s+/g," ") 996 - .trim(); 997 - 998 - if(text.length<3)return false; 999 - 1000 - var r=el.getBoundingClientRect(); 1001 - 1002 - if( 1003 - r.top< 1004 - hr.bottom-1 1005 - ){ 1006 - return false; 1007 - } 1008 - 1009 - if( 1010 - r.top-cr.top> 1011 - Math.min( 1012 - 280, 1013 - cr.height*.65 1014 - ) 1015 - ){ 1016 - return false; 1017 - } 1018 - 1019 - if( 1020 - r.height> 1021 - cr.height*.58 1022 - ){ 1023 - return false; 1024 - } 1025 - 1026 - return true; 1027 - }) 1028 - .sort(function(a,b){ 1029 - var ar= 1030 - a.getBoundingClientRect(); 1031 - 1032 - var br= 1033 - b.getBoundingClientRect(); 1034 - 1035 - return ( 1036 - ar.top-br.top|| 1037 - ar.height-br.height 1038 - ); 1039 - }); 1040 - 1041 - return rows[0]||null; 1042 - } 1043 - 1044 - function alignGeneric(cards){ 1045 - var rows= 1046 - cards.map(function(card){ 1047 - var h= 1048 - heading(card); 1049 - 1050 - var c= 1051 - firstContent( 1052 - card, 1053 - h 1054 - ); 1055 - 1056 - if(!h||!c)return null; 1057 - 1058 - var cr= 1059 - card.getBoundingClientRect(); 1060 - 1061 - var rr= 1062 - c.getBoundingClientRect(); 1063 - 1064 - return { 1065 - content:c, 1066 - relativeTop: 1067 - rr.top-cr.top 1068 - }; 1069 - }); 1070 - 1071 - if( 1072 - rows.some(function(row){ 1073 - return !row; 1074 - }) 1075 - ){ 1076 - return false; 1077 - } 1078 - 1079 - var target= 1080 - Math.max.apply( 1081 - Math, 1082 - rows.map(function(row){ 1083 - return row.relativeTop; 1084 - }) 1085 - ); 1086 - 1087 - rows.forEach(function(row){ 1088 - var delta= 1089 - target- 1090 - row.relativeTop; 1091 - 1092 - if(delta<=1)return; 1093 - 1094 - saveOriginal( 1095 - row.content, 1096 - originalMarginTop, 1097 - "margin-top" 1098 - ); 1099 - 1100 - var current= 1101 - num( 1102 - getComputedStyle( 1103 - row.content 1104 - ).marginTop 1105 - ); 1106 - 1107 - row.content.style.setProperty( 1108 - "margin-top", 1109 - ( 1110 - current+ 1111 - delta 1112 - )+"px" 1113 - ); 1114 - 1115 - row.content.setAttribute( 1116 - "data-sn-first-content-aligned", 1117 - "7" 1118 - ); 1119 - 1120 - contentManaged.add( 1121 - row.content 1122 - ); 1123 - }); 1124 - 1125 - return true; 1126 - } 1127 - 1128 - function applyRow(group){ 1129 - if(!validRow(group))return false; 1130 - 1131 - var cards=[]; 1132 - var seen=new Set(); 1133 - 1134 - group.entries.forEach(function(entry){ 1135 - if(!seen.has(entry.target)){ 1136 - seen.add(entry.target); 1137 - cards.push(entry.target); 1138 - } 1139 - }); 1140 - 1141 - if(cards.length<2)return false; 1142 - 1143 - if( 1144 - !alignKnownBars(cards) 1145 - ){ 1146 - alignGeneric(cards); 1147 - } 1148 - 1149 - var maxHeight=0; 1150 - 1151 - cards.forEach(function(card){ 1152 - maxHeight= 1153 - Math.max( 1154 - maxHeight, 1155 - card.getBoundingClientRect().height 1156 - ); 1157 - }); 1158 - 1159 - maxHeight= 1160 - Math.ceil( 1161 - maxHeight 1162 - ); 1163 - 1164 - if(maxHeight<MIN_H)return false; 1165 - 1166 - cards.forEach(function(card){ 1167 - saveOriginal( 1168 - card, 1169 - originalMinHeight, 1170 - "min-height" 1171 - ); 1172 - 1173 - card.style.setProperty( 1174 - "min-height", 1175 - maxHeight+"px" 1176 - ); 1177 - 1178 - card.setAttribute( 1179 - "data-sn-equal-height-managed", 1180 - "7" 1181 - ); 1182 - 1183 - heightManaged.add(card); 1184 - }); 1185 - 1186 - return true; 1187 - } 1188 - 1189 - function calculate(force){ 1190 - if(applying)return; 1191 - 1192 - var width= 1193 - Math.round( 1194 - window.innerWidth 1195 - ); 1196 - 1197 - var meaningful= 1198 - lastWidth<0|| 1199 - Math.abs( 1200 - width- 1201 - lastWidth 1202 - )>= 1203 - MIN_WIDTH_CHANGE; 1204 - 1205 - if( 1206 - hasApplied&& 1207 - !force&& 1208 - !meaningful 1209 - ){ 1210 - return; 1211 - } 1212 - 1213 - applying=true; 1214 - 1215 - try{ 1216 - harmoniseCustomCallouts(); 1217 - 1218 - if(width<=MOBILE_MAX){ 1219 - if(hasApplied){ 1220 - resetRuntime(); 1221 - } 1222 - 1223 - hasApplied=false; 1224 - lastWidth=width; 1225 - return; 1226 - } 1227 - 1228 - if(hasApplied){ 1229 - resetRuntime(); 1230 - } 1231 - 1232 - var parents= 1233 - Array.from( 1234 - root.querySelectorAll("*") 1235 - ) 1236 - .filter(function(parent){ 1237 - return ( 1238 - visible( 1239 - parent, 1240 - MIN_W, 1241 - MIN_H 1242 - )&& 1243 - parent.children&& 1244 - parent.children.length>=2&& 1245 - parent.children.length<= 1246 - MAX_PARENT_CHILDREN 1247 - ); 1248 - }); 1249 - 1250 - var touched= 1251 - new Set(); 1252 - 1253 - parents.forEach(function(parent){ 1254 - var entries=[]; 1255 - 1256 - Array.from( 1257 - parent.children 1258 - ).forEach(function(child){ 1259 - if( 1260 - !visible( 1261 - child, 1262 - MIN_W, 1263 - MIN_H 1264 - ) 1265 - ){ 1266 - return; 1267 - } 1268 - 1269 - var target= 1270 - pickTarget(child); 1271 - 1272 - if(!target)return; 1273 - 1274 - entries.push({ 1275 - target:target, 1276 - rect: 1277 - target.getBoundingClientRect() 1278 - }); 1279 - }); 1280 - 1281 - groupRows( 1282 - entries 1283 - ).forEach(function(group){ 1284 - if(!validRow(group))return; 1285 - 1286 - var targets= 1287 - group.entries.map(function(entry){ 1288 - return entry.target; 1289 - }); 1290 - 1291 - if( 1292 - !targets.some(function(el){ 1293 - return !touched.has(el); 1294 - }) 1295 - ){ 1296 - return; 1297 - } 1298 - 1299 - if(applyRow(group)){ 1300 - targets.forEach(function(el){ 1301 - touched.add(el); 1302 - }); 1303 - } 1304 - }); 1305 - }); 1306 - 1307 - lastWidth=width; 1308 - hasApplied=true; 1309 - }finally{ 1310 - applying=false; 1311 - } 1312 - } 1313 - 1314 - function resize(){ 1315 - if(resizeTimer){ 1316 - clearTimeout( 1317 - resizeTimer 1318 - ); 1319 - } 1320 - 1321 - resizeTimer= 1322 - setTimeout( 1323 - function(){ 1324 - resizeTimer=0; 1325 - calculate(false); 1326 - }, 1327 - RESIZE_DEBOUNCE 1328 - ); 1329 - } 1330 - 1331 - function waitImages(){ 1332 - var images= 1333 - Array.from( 1334 - root.querySelectorAll("img") 1335 - ); 1336 - 1337 - return Promise.all( 1338 - images.map(function(img){ 1339 - if(img.complete){ 1340 - return Promise.resolve(); 1341 - } 1342 - 1343 - return new Promise(function(resolve){ 1344 - var done=function(){ 1345 - resolve(); 1346 - }; 1347 - 1348 - img.addEventListener( 1349 - "load", 1350 - done, 1351 - {once:true} 1352 - ); 1353 - 1354 - img.addEventListener( 1355 - "error", 1356 - done, 1357 - {once:true} 1358 - ); 1359 - }); 1360 - }) 1361 - ); 1362 - } 1363 - 1364 - async function initial(){ 1365 - if( 1366 - document.readyState!== 1367 - "complete" 1368 - ){ 1369 - await new Promise(function(resolve){ 1370 - addEventListener( 1371 - "load", 1372 - resolve, 1373 - {once:true} 1374 - ); 1375 - }); 1376 - } 1377 - 1378 - if( 1379 - document.fonts&& 1380 - document.fonts.ready 1381 - ){ 1382 - try{ 1383 - await document.fonts.ready; 1384 - }catch(error){} 1385 - } 1386 - 1387 - await waitImages(); 1388 - 1389 - // Exactly one initial layout calculation. 1390 - calculate(true); 1391 - } 1392 - 1393 - addEventListener( 1394 - "resize", 1395 - resize, 1396 - {passive:true} 1397 - ); 1398 - 1399 - initial(); 1400 -})(); 1401 -</script> 1402 - 1403 -<!-- SN_HORIZONTAL_BOX_HARMONIZER_END --> 1404 -{{/html}}\n
- XWiki.XWikiRights[3]
-
- levels
-
... ... @@ -1,1 +1,1 @@ 1 -view,comment,edit ,script1 +view,comment,edit