Änderungen von Dokument Prepare
Zuletzt geändert von Veronika Kocher am Freitag, 18 Sep. 2026 16:47
Von Version 1.4
bearbeitet von Veronika Kocher
am Mittwoch, 02 Sep. 2026 9:43
am Mittwoch, 02 Sep. 2026 9:43
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version 1.7
bearbeitet von Veronika Kocher
am Donnerstag, 03 Sep. 2026 9:34
am Donnerstag, 03 Sep. 2026 9:34
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -473,9 +473,9 @@ 473 473 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #38b76a;border-radius:9px;"><strong style="color:#3f6b4b;">Checklisten & Vorlagen</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px 0;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;line-height:1.2;">IN VORBEREITUNG</span><div style="margin-top:5px;color:#625d56;">Wiederverwendbare Hilfsmittel zum Planen, Dokumentieren und Überprüfen deiner Projektstruktur.</div></div> 474 474 </div> 475 475 476 - <aside style="margin:0 0 14px 0;padding:16px 18px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#e5f5f9;border-radius:8px;"> 477 - <strong style="color:#2d5661;">Brauchst du Unterstützung?</strong>478 - <div style="margin-top:5px;color:#365e68;line-height:1.5;"> Nichtsicher, welche Anforderungen,Servicesoder nächstenSchrittefürdeinProjektgelten?Wende dichfür projektspezifischeUnterstützunganSupportKunst undForschung.</div>476 + <aside style="margin:0 0 14px 0;padding:16px 18px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#e5f5f9;border-radius:8px;"><!-- ARSN_PHASE_ROUTING_V1 --> 477 + <strong style="color:#2d5661;">Brauchst du Hilfe beim richtigen Weg?</strong> 478 + <div style="margin-top:5px;color:#365e68;line-height:1.5;"><strong>Starte bei Support Kunst und Forschung</strong> für Projektentwicklung, Förderung, Anträge und die Koordination geförderter Kunst-/Forschungsprojekte. Für Rechte, Daten, IT, Finanzen, Personal, Räume oder andere Fachfragen folge der auf der Themenseite genannten zuständigen Service-Stelle.</div> 479 479 </aside> 480 480 481 481 <div class="arsn-tip"><strong>Tipp · Eine hilfreiche Faustregel:</strong> Plane früh, dokumentiere Entscheidungen und überprüfe sie, wenn sich das Projekt verändert. Eine einfache Projektstruktur, die tatsächlich genutzt wird, ist meist wirksamer als ein komplexer Plan, der nie aktualisiert wird.</div> ... ... @@ -482,3 +482,699 @@ 482 482 483 483 </div> 484 484 {{/html}} 485 + 486 +{{html clean="false"}} 487 +<!-- SN_HORIZONTAL_BOX_HARMONIZER_START --> 488 +<style data-sn-horizontal-box-harmonizer="4"> 489 +[data-sn-equal-height-managed], 490 +[data-sn-first-section-aligned]{ 491 + box-sizing:border-box; 492 +} 493 +</style> 494 +<script data-sn-horizontal-box-harmonizer="4"> 495 +(function(){ 496 + "use strict"; 497 + 498 + var MOBILE_MAX=767; 499 + var ROW_TOLERANCE=6; 500 + var MIN_W=150; 501 + var MIN_H=36; 502 + var MAX_PARENT_CHILDREN=16; 503 + var SEARCH_DEPTH=5; 504 + 505 + var root= 506 + document.getElementById("xwikicontent")|| 507 + document.querySelector(".xwiki-rendering-content")|| 508 + document.querySelector("main")|| 509 + document.body; 510 + 511 + if(!root)return; 512 + 513 + var heightManaged=new Set(); 514 + var sectionManaged=new Set(); 515 + var originalMinHeight=new WeakMap(); 516 + var originalMarginTop=new WeakMap(); 517 + var raf=0; 518 + 519 + function num(v){ 520 + var n=parseFloat(v); 521 + return Number.isFinite(n)?n:0; 522 + } 523 + 524 + function visible(el,minW,minH){ 525 + if(!el||el.nodeType!==1)return false; 526 + 527 + var s=getComputedStyle(el); 528 + 529 + if( 530 + s.display==="none"|| 531 + s.visibility==="hidden"|| 532 + Number(s.opacity)===0 533 + ){ 534 + return false; 535 + } 536 + 537 + var r=el.getBoundingClientRect(); 538 + 539 + return ( 540 + r.width>=(minW||1)&& 541 + r.height>=(minH||1) 542 + ); 543 + } 544 + 545 + function excluded(el){ 546 + return ( 547 + !el.matches|| 548 + el.matches( 549 + "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]" 550 + ) 551 + ); 552 + } 553 + 554 + function namedLikeBox(el){ 555 + var c= 556 + typeof el.className==="string" 557 + ? el.className 558 + : ""; 559 + 560 + return /(^|[s_-])(box|card|tile|panel|role|check|service|source|call|area|detail|resource|topic|warn|info)([s_-]|$)/i.test(c); 561 + } 562 + 563 + function boxLike(el){ 564 + if(!visible(el,MIN_W,MIN_H)||excluded(el))return false; 565 + 566 + var s=getComputedStyle(el); 567 + var r=el.getBoundingClientRect(); 568 + 569 + var border= 570 + num(s.borderTopWidth)+ 571 + num(s.borderRightWidth)+ 572 + num(s.borderBottomWidth)+ 573 + num(s.borderLeftWidth); 574 + 575 + var radius=Math.max( 576 + num(s.borderTopLeftRadius), 577 + num(s.borderTopRightRadius), 578 + num(s.borderBottomLeftRadius), 579 + num(s.borderBottomRightRadius) 580 + ); 581 + 582 + var bg= 583 + s.backgroundColor&& 584 + s.backgroundColor!=="rgba(0, 0, 0, 0)"&& 585 + s.backgroundColor!=="transparent"; 586 + 587 + var shadow= 588 + s.boxShadow&& 589 + s.boxShadow!=="none"; 590 + 591 + return ( 592 + namedLikeBox(el)|| 593 + border>=1|| 594 + (bg&&radius>=3)|| 595 + (shadow&&r.width>=180) 596 + ); 597 + } 598 + 599 + function saveOriginal(el,map,property){ 600 + if(map.has(el))return; 601 + 602 + map.set(el,{ 603 + value:el.style.getPropertyValue(property), 604 + priority:el.style.getPropertyPriority(property) 605 + }); 606 + } 607 + 608 + function restoreOriginal(el,map,property){ 609 + var original=map.get(el); 610 + 611 + if(original&&original.value){ 612 + el.style.setProperty( 613 + property, 614 + original.value, 615 + original.priority||"" 616 + ); 617 + }else{ 618 + el.style.removeProperty(property); 619 + } 620 + } 621 + 622 + function reset(){ 623 + heightManaged.forEach(function(el){ 624 + restoreOriginal( 625 + el, 626 + originalMinHeight, 627 + "min-height" 628 + ); 629 + 630 + el.removeAttribute( 631 + "data-sn-equal-height-managed" 632 + ); 633 + }); 634 + 635 + sectionManaged.forEach(function(el){ 636 + restoreOriginal( 637 + el, 638 + originalMarginTop, 639 + "margin-top" 640 + ); 641 + 642 + el.removeAttribute( 643 + "data-sn-first-section-aligned" 644 + ); 645 + }); 646 + 647 + heightManaged.clear(); 648 + sectionManaged.clear(); 649 + } 650 + 651 + function pickTarget(child){ 652 + if(!visible(child,MIN_W,MIN_H))return null; 653 + 654 + if(boxLike(child)){ 655 + return child; 656 + } 657 + 658 + var cr=child.getBoundingClientRect(); 659 + var q=[]; 660 + 661 + Array.from(child.children||[]).forEach(function(el){ 662 + q.push({el:el,depth:1}); 663 + }); 664 + 665 + var best=null; 666 + var bestScore=-Infinity; 667 + 668 + while(q.length){ 669 + var item=q.shift(); 670 + var el=item.el; 671 + 672 + if(!visible(el,MIN_W,MIN_H))continue; 673 + 674 + var r=el.getBoundingClientRect(); 675 + 676 + if( 677 + r.width>=cr.width*.68&& 678 + boxLike(el) 679 + ){ 680 + var widthFit= 681 + 1-Math.min( 682 + 1, 683 + Math.abs(cr.width-r.width)/ 684 + Math.max(1,cr.width) 685 + ); 686 + 687 + var topFit= 688 + 1-Math.min( 689 + 1, 690 + Math.abs(cr.top-r.top)/100 691 + ); 692 + 693 + var score= 694 + widthFit*6+ 695 + topFit*3+ 696 + Math.min(r.height,900)/450+ 697 + Math.min(r.width*r.height,900000)/900000; 698 + 699 + if(score>bestScore){ 700 + best=el; 701 + bestScore=score; 702 + } 703 + } 704 + 705 + if(item.depth<SEARCH_DEPTH){ 706 + Array.from(el.children||[]).forEach(function(next){ 707 + q.push({ 708 + el:next, 709 + depth:item.depth+1 710 + }); 711 + }); 712 + } 713 + } 714 + 715 + return best; 716 + } 717 + 718 + function groupsByVisualRow(entries){ 719 + var groups=[]; 720 + 721 + entries 722 + .slice() 723 + .sort(function(a,b){ 724 + return ( 725 + a.rect.top-b.rect.top|| 726 + a.rect.left-b.rect.left 727 + ); 728 + }) 729 + .forEach(function(entry){ 730 + var group=null; 731 + 732 + for(var i=0;i<groups.length;i++){ 733 + if( 734 + Math.abs( 735 + groups[i].top- 736 + entry.rect.top 737 + )<=ROW_TOLERANCE 738 + ){ 739 + group=groups[i]; 740 + break; 741 + } 742 + } 743 + 744 + if(!group){ 745 + group={ 746 + top:entry.rect.top, 747 + entries:[] 748 + }; 749 + groups.push(group); 750 + } 751 + 752 + group.entries.push(entry); 753 + }); 754 + 755 + return groups; 756 + } 757 + 758 + function validHorizontalGroup(group){ 759 + if(group.entries.length<2)return false; 760 + 761 + var lefts= 762 + group.entries 763 + .map(function(e){return e.rect.left;}) 764 + .sort(function(a,b){return a-b;}); 765 + 766 + if( 767 + lefts[lefts.length-1]- 768 + lefts[0]< 769 + 80 770 + ){ 771 + return false; 772 + } 773 + 774 + var widths= 775 + group.entries 776 + .map(function(e){return e.rect.width;}) 777 + .filter(function(w){return w>0;}); 778 + 779 + if(widths.length<2)return false; 780 + 781 + var minWidth=Math.min.apply(Math,widths); 782 + var maxWidth=Math.max.apply(Math,widths); 783 + 784 + return ( 785 + maxWidth/ 786 + Math.max(1,minWidth)<= 787 + 1.9 788 + ); 789 + } 790 + 791 + function normalizeText(text){ 792 + return String(text||"") 793 + .replace(/s+/g," ") 794 + .trim() 795 + .toUpperCase(); 796 + } 797 + 798 + function exactKnownFirstSection(el){ 799 + var text=normalizeText(el.textContent); 800 + 801 + return ( 802 + text==="HIER STARTEN"|| 803 + text==="ORGANISIEREN & DOKUMENTIEREN"|| 804 + text==="ENTSCHEIDEN"|| 805 + text==="START HERE"|| 806 + text==="GET STARTED"|| 807 + text==="ORGANISE & DOCUMENT"|| 808 + text==="ORGANIZE & DOCUMENT"|| 809 + text==="DECIDE" 810 + ); 811 + } 812 + 813 + function visuallyFirstSectionBar(card){ 814 + var cardRect=card.getBoundingClientRect(); 815 + var candidates=[]; 816 + 817 + Array.from( 818 + card.querySelectorAll( 819 + "div,p,span,strong,h3,h4,h5,h6" 820 + ) 821 + ).forEach(function(el){ 822 + if(!visible(el,20,6))return; 823 + if(excluded(el))return; 824 + 825 + var r=el.getBoundingClientRect(); 826 + var relativeTop=r.top-cardRect.top; 827 + 828 + if( 829 + relativeTop<45|| 830 + relativeTop>cardRect.height*.72 831 + ){ 832 + return; 833 + } 834 + 835 + var widthRatio= 836 + r.width/ 837 + Math.max(1,cardRect.width); 838 + 839 + if( 840 + widthRatio<.55|| 841 + widthRatio>1.05|| 842 + r.height>54 843 + ){ 844 + return; 845 + } 846 + 847 + var text=normalizeText(el.textContent); 848 + 849 + if( 850 + text.length<2|| 851 + text.length>90 852 + ){ 853 + return; 854 + } 855 + 856 + var style=getComputedStyle(el); 857 + 858 + var bg= 859 + style.backgroundColor&& 860 + style.backgroundColor!=="rgba(0, 0, 0, 0)"&& 861 + style.backgroundColor!=="transparent"; 862 + 863 + var border= 864 + num(style.borderTopWidth)+ 865 + num(style.borderRightWidth)+ 866 + num(style.borderBottomWidth)+ 867 + num(style.borderLeftWidth); 868 + 869 + var mostlyUpper= 870 + text.length>=3&& 871 + text===text.toUpperCase(); 872 + 873 + var exact=exactKnownFirstSection(el); 874 + 875 + var score= 876 + (exact?20:0)+ 877 + (bg?6:0)+ 878 + (border>=1?2:0)+ 879 + (mostlyUpper?4:0)+ 880 + (num(style.fontWeight)>=600?1:0); 881 + 882 + if(score>=7){ 883 + candidates.push({ 884 + el:el, 885 + relativeTop:relativeTop, 886 + width:r.width, 887 + score:score 888 + }); 889 + } 890 + }); 891 + 892 + if(!candidates.length)return null; 893 + 894 + candidates.sort(function(a,b){ 895 + if(a.score!==b.score)return b.score-a.score; 896 + if(Math.abs(a.relativeTop-b.relativeTop)>3){ 897 + return a.relativeTop-b.relativeTop; 898 + } 899 + return b.width-a.width; 900 + }); 901 + 902 + // For exact known labels always prefer the earliest exact match. 903 + var exacts=candidates.filter(function(c){ 904 + return exactKnownFirstSection(c.el); 905 + }); 906 + 907 + if(exacts.length){ 908 + exacts.sort(function(a,b){ 909 + return a.relativeTop-b.relativeTop||b.width-a.width; 910 + }); 911 + return exacts[0].el; 912 + } 913 + 914 + // Generic fallback: earliest high-confidence bar. 915 + candidates.sort(function(a,b){ 916 + return a.relativeTop-b.relativeTop||b.score-a.score||b.width-a.width; 917 + }); 918 + 919 + return candidates[0].el; 920 + } 921 + 922 + function alignFirstSections(cards){ 923 + var rows= 924 + cards.map(function(card){ 925 + var bar= 926 + visuallyFirstSectionBar(card); 927 + 928 + if(!bar)return null; 929 + 930 + var cardRect= 931 + card.getBoundingClientRect(); 932 + 933 + var barRect= 934 + bar.getBoundingClientRect(); 935 + 936 + return { 937 + card:card, 938 + bar:bar, 939 + relativeTop: 940 + barRect.top-cardRect.top, 941 + label: 942 + normalizeText(bar.textContent) 943 + }; 944 + }); 945 + 946 + // Conservative: only align when every card in the horizontal row 947 + // has a reliable first section bar. 948 + if( 949 + rows.some(function(row){ 950 + return !row; 951 + }) 952 + ){ 953 + return null; 954 + } 955 + 956 + var targetTop= 957 + Math.max.apply( 958 + Math, 959 + rows.map(function(row){ 960 + return row.relativeTop; 961 + }) 962 + ); 963 + 964 + rows.forEach(function(row){ 965 + var delta= 966 + targetTop- 967 + row.relativeTop; 968 + 969 + if(delta<=1)return; 970 + 971 + saveOriginal( 972 + row.bar, 973 + originalMarginTop, 974 + "margin-top" 975 + ); 976 + 977 + var currentMargin= 978 + num( 979 + getComputedStyle( 980 + row.bar 981 + ).marginTop 982 + ); 983 + 984 + row.bar.style.setProperty( 985 + "margin-top", 986 + ( 987 + currentMargin+ 988 + delta 989 + )+"px" 990 + ); 991 + 992 + row.bar.setAttribute( 993 + "data-sn-first-section-aligned", 994 + "4" 995 + ); 996 + 997 + sectionManaged.add(row.bar); 998 + }); 999 + 1000 + return { 1001 + labels: 1002 + rows.map(function(row){ 1003 + return row.label; 1004 + }), 1005 + targetRelativeTop: 1006 + Math.round(targetTop) 1007 + }; 1008 + } 1009 + 1010 + function applyGroup(group){ 1011 + if(!validHorizontalGroup(group)){ 1012 + return null; 1013 + } 1014 + 1015 + var cards=[]; 1016 + var seen=new Set(); 1017 + 1018 + group.entries.forEach(function(entry){ 1019 + if(!seen.has(entry.target)){ 1020 + seen.add(entry.target); 1021 + cards.push(entry.target); 1022 + } 1023 + }); 1024 + 1025 + if(cards.length<2)return null; 1026 + 1027 + var firstSection= 1028 + alignFirstSections(cards); 1029 + 1030 + // The section alignment can change natural card heights. 1031 + // Measure only afterwards. 1032 + var maxHeight=0; 1033 + 1034 + cards.forEach(function(card){ 1035 + maxHeight=Math.max( 1036 + maxHeight, 1037 + card.getBoundingClientRect().height 1038 + ); 1039 + }); 1040 + 1041 + maxHeight=Math.ceil(maxHeight); 1042 + 1043 + if(maxHeight<MIN_H)return null; 1044 + 1045 + cards.forEach(function(card){ 1046 + saveOriginal( 1047 + card, 1048 + originalMinHeight, 1049 + "min-height" 1050 + ); 1051 + 1052 + card.style.setProperty( 1053 + "min-height", 1054 + maxHeight+"px" 1055 + ); 1056 + 1057 + card.setAttribute( 1058 + "data-sn-equal-height-managed", 1059 + "4" 1060 + ); 1061 + 1062 + heightManaged.add(card); 1063 + }); 1064 + 1065 + return { 1066 + cards:cards.length, 1067 + height:maxHeight, 1068 + firstSection:firstSection 1069 + }; 1070 + } 1071 + 1072 + function run(){ 1073 + reset(); 1074 + 1075 + if( 1076 + window.innerWidth<=MOBILE_MAX 1077 + ){ 1078 + return; 1079 + } 1080 + 1081 + var parents= 1082 + Array.from( 1083 + root.querySelectorAll("*") 1084 + ).filter(function(parent){ 1085 + return ( 1086 + visible(parent,MIN_W,MIN_H)&& 1087 + parent.children&& 1088 + parent.children.length>=2&& 1089 + parent.children.length<=MAX_PARENT_CHILDREN 1090 + ); 1091 + }); 1092 + 1093 + var touched=new Set(); 1094 + 1095 + parents.forEach(function(parent){ 1096 + var entries=[]; 1097 + 1098 + Array.from(parent.children).forEach(function(child){ 1099 + if(!visible(child,MIN_W,MIN_H))return; 1100 + 1101 + var target=pickTarget(child); 1102 + if(!target)return; 1103 + 1104 + entries.push({ 1105 + target:target, 1106 + rect:target.getBoundingClientRect() 1107 + }); 1108 + }); 1109 + 1110 + if(entries.length<2)return; 1111 + 1112 + groupsByVisualRow(entries).forEach(function(group){ 1113 + if(!validHorizontalGroup(group))return; 1114 + 1115 + var signature= 1116 + group.entries.map(function(entry){ 1117 + return entry.target; 1118 + }); 1119 + 1120 + if( 1121 + !signature.some(function(el){ 1122 + return !touched.has(el); 1123 + }) 1124 + ){ 1125 + return; 1126 + } 1127 + 1128 + var applied= 1129 + applyGroup(group); 1130 + 1131 + if(applied){ 1132 + signature.forEach(function(el){ 1133 + touched.add(el); 1134 + }); 1135 + } 1136 + }); 1137 + }); 1138 + } 1139 + 1140 + function schedule(){ 1141 + if(raf)cancelAnimationFrame(raf); 1142 + 1143 + raf=requestAnimationFrame(function(){ 1144 + raf=requestAnimationFrame(function(){ 1145 + raf=0; 1146 + run(); 1147 + }); 1148 + }); 1149 + } 1150 + 1151 + addEventListener("resize",schedule,{passive:true}); 1152 + addEventListener("load",schedule,{once:true}); 1153 + 1154 + root.addEventListener( 1155 + "click", 1156 + function(){ 1157 + setTimeout(schedule,0); 1158 + }, 1159 + true 1160 + ); 1161 + 1162 + Array.from(root.querySelectorAll("img")).forEach(function(img){ 1163 + if(!img.complete){ 1164 + img.addEventListener("load",schedule,{once:true}); 1165 + } 1166 + }); 1167 + 1168 + if(document.fonts&&document.fonts.ready){ 1169 + document.fonts.ready.then(schedule); 1170 + } 1171 + 1172 + schedule(); 1173 + setTimeout(schedule,200); 1174 + setTimeout(schedule,650); 1175 + setTimeout(schedule,1400); 1176 +})(); 1177 +</script> 1178 +<!-- SN_HORIZONTAL_BOX_HARMONIZER_END --> 1179 +{{/html}} 1180 +