Vom 19. bis 21. März fand der CloudFest Hackathon in Rust statt und ich hatte die Chance ein Projekt einzureichen und zu leiten:
WordPress and the IndieWeb
The IndieWeb is a community of individual personal websites, connected by simple standards, based on the principles of owning your domain, using it as your primary identity, to publish on your own site (optionally syndicate elsewhere), and own your data.
There are a variety of WordPress-plugins implementing these standards and principles, to help people to stay independent. Most of these plugins are very basic, have no or only little documentation with a poor user experience. Help the movement to mature and gain a broader audience.
Ich hatte mir im Vorfeld nicht viel Gedanken zum Hackathon gemacht, hab aber insgeheim gehofft, der Version 5.0 vom Webmention Plugin (einer nahezu kompletten Überarbeitung an der David Shanske und ich schon eine halbe Ewigkeit arbeiten) ein wesentliches Stück näher zu kommen… Das Wochenende lief dann aber doch etwas anders… auch großartig, aber anders 🙂
1. Tag
Wir waren eine wild zusammengewürfelte Truppe von 8 Leuten mit den verschiedensten Lebensläufen und ich hab mir den ersten Tag viel Mühe gegeben, das IndieWeb und Webmentions zu erklären. Die Diskussionen waren spannend und hitzig und gingen sogar so weit, dass ich zwischendurch den generellen Sinn und Zweck des Webmention Plugins verteidigen musste.

Letztendlich haben aber nicht meine Argumente die Gruppe überzeugt, sondern eine Präsentation des Plugins mit all seinen aktuellen Features. Wer diesen Erkenntnisprozess nachvollziehen möchte, kann gerne Hagen Grafs „Webmention Journey“ auf Twitter verfolgen 🙂 (Nachtrag: Hagen hat seine Journey mittlerweile auch „verbloggt“)!
Meine Fazit des ersten Tages?
Man muss nicht die Geschichte des IndieWebs verstehen und auch nicht den Webmention Standard gelesen haben um von der Funktionalität begeistert zu werden, vor allem in der Kombination mit Brid.gy (Brid.gy schlägt eine Brücke zwischen dem Webmention Standard und den proprietären APIs der bekannten Social Networks. So landen dann auch Likes auf Facebook und Kommentare auf Twitter, im eigenen Blog).
Ich werde Versuchen mich zukünftig weniger auf Geschichte und Technologie zu konzentrieren und auf Vorträgen und Hackathons mehr Fokus auf die Funktionalität zu legen.
Ich hab die Plugins in erster Linie erstmal für mich Gebaut. Frei nach dem Motto „eat your own dogfood„. Das hat für die IndieWeb Community ganz gut funktioniert, aber um eine breitere Masse anzusprechen, muss das Plugin verständlicher werden.
Für den Hackathon haben wir uns deshalb dazu entschieden, die Usability und die User Experience des Plugin zu beleuchten und (im besten Fall) zu verbessern.
Webmention-Settings
Die Einstellungen setzen relativ viel Kenntnisse über die Funktionsweise von Webmentions voraus. Ein Teil der Gruppe hat sich daran gemacht, die Seite zu überarbeiten und zu vereinfachen.


Das Resultat ist eine Art Wizard, der beim ersten Aufruf gestartet wird und den User Schritt für Schritt durch die Einstellungen führt und sie ausführlich erklärt. Der Wizard soll nur beim ersten Laden starten und die klassischen Einstellungen nicht ersetzen.
(Der Pull Request dazu: #328)
Die zweite Idee war Brid.gy tiefer in das Webmentions Plugin zu integrieren. Die aktuelle Diskussion dazu findet auf GitHub statt.
Response-Types
Im Gegensatz zu Trackbacks und Pingbacks, müssen Webementions nicht immer „nur“ ein simpler ping sein. Es ist auch möglich dezentrale Likes, Bookmarks, RSVPs oder Reposts zu verschicken.
Aktuell muss man dazu im Block-Editor auf die HTML Ansicht wechseln und dem Link eine CSS-Klasse hinzufügen:
<a class="u-like-of" href="http://example.com/">Example</a>
Code-Sprache: HTML, XML (xml)
Das ist nicht praktikabel und in keiner Weise anwenderfreundlich. Aus diesem Grund hat eine zweite Gruppe, an einem User Interface für den Response-Type gearbeitet.

Am Ende des Hackathons gab es auch einen ersten Draft, mit der man Links als Likes auszeichnen konnte. Den PR gibt es leider noch nicht, aber ich werde ihn nachreichen wenn es soweit ist.
Webmaininnat suomeksi
…ja Carolinan ansiosta Webmaininnat-laajennus on nyt saatavilla myös suomeksi! Kiitos paljon 🙂
Fazit
Es war extrem spannend mit Leuten, außerhalb der IndieWeb und (teilweise) auch außerhalb der WordPress-Community, über das IndieWeb im Allgemeinen und das Webmention Plugin im Speziellen zu sprechen.
Vielen Dank an Moritz Bappert, Stefan Euchenhofer, Marko Feldmann, Hagen Graf, Carolina Lindqvist, Jason Rouet und Jan Vogt für eure tolle Arbeit! Danke für die neue Perspektive und für euer Feedback!
Danke auch an Robert Windisch und Alain Schlesser, mit denen ich viel über das Potential von Webmentions im WordPress Core geredet habe.
Die 5.0er Version des Webmention Plugins wird großartig!
Blogpost in German by @pfefferle about explaining W3C Webmention to people. Concluding that what it can do (the why) matters more than tech (the how).https://notiz.blog/2022/04/03/cloudfest-2022-hackathon-indieweb-for-wordpress/
Accueil » Blog » WordPress » Hackathon de la CloudFest 2022 : une histoire de train, de Flammenküche et de standard du web
Share the post „Hackathon de la CloudFest 2022 : une histoire de train, de Flammenküche et de standard du web“
TwitterLinkedInFacebookPocketPartager…
window.addEventListener(„DOMContentLoaded“, function(){
if ( navigator.share ) {
let shareurl = document.location.href;
let btns = document.querySelectorAll(„.juiz_sps_link_shareapi button:not([data-bound])“);
const canon = document.querySelector(„link[rel=canonical]“);
if (canon !== null) {
shareurl = canon.href;
}
btns.forEach(function(el) {
el.closest(„.juiz_sps_link_shareapi“).removeAttribute( „style“ );
el.setAttribute( „data-bound“, „true“ );
el.addEventListener(„click“, async () => {
try {
await navigator.share({
title: „Hackathon de la CloudFest 2022 : une histoire de train, de Flammenküche et de standard du web“,
text: „Hackathon de la CloudFest 2022 : une histoire de train, de Flammenküche et de standard du web – „,
url: shareurl,
});
console.info(„Nobs: Successful share“);
} catch(err) {
console.warn(„Nobs: Error sharing“, error);
}
});
});
}
});
Ajouter aux favoris
En mars 2022, j’ai eu le plaisir de participer au Hackathon de la Cloudfest. Un super évènement qui correspond à mes objectifs professionnels du moment : sortir de ma zone de confort, améliorer mon anglais et m’investir dans la communauté WordPress.
Si vous me suivez sur les réseaux sociaux, vous devez savoir que je suis l’un des organisateurs du WordCamp Europe 2022 (j’en parlerai dans un article à venir). C’est dans ce cadre que j’ai le plaisir d’avoir rencontré Carole Ollinger, connue pour son utilisation immodérée du violet, son amour des chiens et ses nombreuses participations à la scène WordPress.
Il s’avère qu’elle est également l’organisatrice du Hackathon de la Cloudfest depuis plusieurs années. En discutant de choses et d’autres, elle m’a convaincue de participer avec les arguments suivants :
Tout est gratuit : l’hotel, la participation, la restauration est couverte par les sponsors. Seul le trajet reste à la charge des participants. Encore que pour ceux qui sont en Allemagne, le billet de train est remboursé. Ça marque des points.
Un évènement tech-agnostique : bien sûr les CMS en général et WordPress en particulier sont très bien représentés, mais certains projets sortaient de mon métier qui est la création et la maintenance de sites internet. De nombreux projets du hackathon étaient éloignés de mon travail au quotidien. C’est intéressant car les participants sont également variés.
Un évènement à la cool pendant lequel on travaille réellement. Je suis novice en termes d’hackathon, mais d’après les commentaires des autres participants : il existe trop d’hackathon durant lesquels il n’y a pas assez de travail permettant de présenter un résultat.
Et enfin, l’envie affichée par Carole de diversifier le profil des participants. Sur plusieurs sujets car qui dit hackathon, dit développeurs. Donc, mon profil l’intéressait. Le fait qu’il soit organisé en Allemagne, les germanophones sont majoritaires bien que l’évènement soit en anglais.[1]À l’avenir, il lui reste un défi de taille : modifier l’écrasante proportion de participants masculins.window.addEventListener(‚DOMContentLoaded‘, function() { jQuery(‚#footnote_plugin_tooltip_47273_2_1‘).tooltip({ tip: ‚#footnote_plugin_tooltip_text_47273_2_1‘, tipClass: ‚footnote_tooltip‘, effect: ‚fade‘, predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: ‚top center‘, relative: true, offset: [-7, 0], });});
En additionnant tout ça au fait que la Cloudfest est organisée à la frontière franco-allemande à Europa-Park, l’occasion était trop belle pour ne pas m’y rendre !
Planning condensé
18/03Trajet aller en train : Cognac > Angoulême > Strasbourg.19/03Matin : train Strasbourg > Offenburg > Ringsheim (Europa Park), puis navette jusu’à l’Hôtel Bel Rock > voiturette de golf jusqu’à l’Hôtel Colosseo. (* ^ ω ^)11h – 13h : check-in à l’hôtel + social brunch et rencontre de quelques personnes de la scène WordPress (Nemanja Cimbaljevic, Carole Olinger & Alain Schlesser, Moritz Bappert, Robert Windisch etc…)Fin de matinée jusqu’en fin de soirée : début du hackathon. Accueil, présentation des projets, choix du projet à rejoindre, formation des groupes et début des discussions pour fixer les objectifs du groupe.20/03Matin : Petit déjeuner copieux au restaurant de l’hôtel pour les uns, frühstück léger directement dans la salle du hackathon pour les autres.10h – 19h : Reprise du travail officiel jusqu’en début de soirée. Eclaircissement des objectifs, séparation en sous-groupes en fonction des profils et objectifs de chaque membre de l’équipe.19h – … : Pour faire court à partir du diner, le hackathon est devenu plus informel. Ceux qui souhaitaient continuer à travailler le pouvait, les autres pouvaient profiter de ce temps plus informel pour s’intéresser à l’avancement des autres groupes, réseauter, profiter des avantages de l’hôtel (l’année prochaine je saurai que l’on a un accès illimité à la piscine et au sauna), voire quelques verres au bar de l’hôtel (voir en faire la fermeture) etc… 21/03Matin : dernière ligne droite avant la présentation des résultats de chaque équipe.12h30 : remise des présentation et délibération du jury14h : présentation par chaque team lead du résultat de son équipe.Après-midi : libre à ceux qui le souhaite de rester tout l’après-midi pour continuer à travailler et réseauter.18h : départ pour Strasbourg des étoiles plein les yeux me concernant ! 🤩22/03Trajet retour en train : Strasbourg > Angoulême > Cognac.
Le lieu : Hôtel Colosseo à Europa Park
Merci aux sponsors pour avoir rendu le Hackathon possible !Cette année, le Hackathon de la Cloudfest était organisé à l’hôtel Colosseo. Si vous ne connaissez pas la Cloudfest, c’est un peu le grand raout de l’industrie de l’hébergement web. On peut comparer ça avec le WordCamp Europe dans notre industrie par exemple. Ça dure une semaine pendant laquelle Europa Park est totalement privatisé. Le Hackathon se déroule le weekend qui précède cette grande foire professionnelle.
Si vous habitez en France, comme moi, c’est relativement accessible. Il vous suffit de vous rendre à Strasbourg et de là, vous pouvez vous rendre à Europa Park soit en train, soit en voiture assez facilement. Je crois qu’il existe même des bus.
Petit selfie à la gare de Strasbourg !Pas de doute, on se rapproche d’Europa-Park.J’ai opté pour le train pour faire tout le trajet. J’ai donc pris un TGV d’Angoulême à Strasbourg, puis un TER de Strasbourg à Offenburg et enfin vous avez un équivalent allemand du TER (le Regionalbahn : RB ou le Regional-Express : RE) entre Offenburg et Ringsheim. Une fois arrivé à la gare de Ringsheim, une navette passe toutes les ~20 min et vous déposera à l’hôtel où vous séjournez.
Pour l’anecdote, je me suis planté d’hôtel et un employé d’Europa Park m’a proposé de me déposer au bon hôtel avec golfette ! Je devais avoir l’air vraiment perdu ! 😅
L’hôtel Colosseo était l’endroit parfait pour le hackathon, tout était très bien organisé. Nous n’avions vraiment rien à prévoir à part un ordinateur. Le reste était organisé par la super équipe de la Cloudfest. Chapeau à Carole pour la super organisation pendant les 3 jours de l’évènement !
Mauvais arrêt de bus !De plus en plus perdu avant queje ne tombe sur l’employé qui m’a fait un tour de golfette.Finalement, j’ai réussi à arriver jusqu’à l’hotel Colosseo ! 🙂Décoration aperçue dans le couloir de ma chambre d’hôtel : les fleurs de l’amitié franco-allemande avec une touche européenne. 🇫🇷🇩🇪🇪🇺Le truc le plus improbable : une vitrine à propos de la garde Suisse pontificale…Petit selfie le dimanche matin avant que tout le monde n’arrive.La salle du hackathon.L’équipe
J’ai choisi de rejoindre le projet porté par Matthias Pfefferle : WordPress and the IndieWeb (je vais y revenir plus tard). C’était une super équipe composée de 8 personnes :
Carolina Lindqvist, ingénieure cloud/kubernetes,
Hagen Graf, chef d’entreprise, consultant en stratégie web,
Jan Vogt, développeur JS/chef d’entreprise,
Matthias Pfefferle, responsable du développement WordPess chez IONOS,
Marko Feldmann, développeur WordPress et collègue de Matthias,
Moritz Bappert, développeur WordPress/chef d’entreprise,
Stefan Euchenhofer, développeur e-commerce/chef d’entreprise,
et moi-même.
C’était assez intéressant car l’équipe était assez équilibrée entre profils techniques, business, produit, chef de projet… Globalement, nous avons réussi à travailler en anglais de manière efficace malgré les différences de niveaux.
Le travail
Calendrier du premier jour.Liste des projetsLe hackathon a démarré par un tour de table des différents projets, la part belle était donnée à la communauté WordPress avec 5 des 8 projets ! 💪
Dans les autres projets proposés, celui de la communauté Joomla était très intéressant : vous pouvez en lire plus sur le site official de leur communauté.
Comme expliqué dans le paragraphe précédent, j’ai rejoint le projet de Matthias : WordPress and the Indieweb. À vrai dire, sa présence au hackathon m’a décidé à participer. Cela fait quelques années que je m’intéresse au travail du mouvement Indieweb.
Je reviendrai surement sur les projets du mouvement dans un autre article. C’est un sujet très vaste, mais pour comprendre notre travail lors du hackathon, il vous faudra au minimum connaitre les standards suivants :
Webmention – pour notifier d’autres sites internet
Micropub – l’API ouverte standardisée (avec l’aide du W3C) qui permet de créer, modifier et supprimer des messages lisibles entre votre site et des sites distants.
IndieAuth – permet d’authentifier votre site internet.
Évidemment, il existe d’autres projets liés : Microsub, Websub, les bridges (par exemple Bridgy ou Webmention.io), etc…
Revenons à nos moutons : Matthias est le développeur de plusieurs extensions WordPress. Ce sont des projets personnels développés sur son temps libre et totalement gratuits.
Son projet principal se nomme tout simplement “Webmention“, auquel il a attaché une seconde extension nommée “Semantic-Linkbacks” qui ajoute des options supplémentaires à la première extension.
En rejoignant le projet, Matthias nous a expliqué les origines des différents protocoles développés par le mouvement Indieweb en insistant sur le fait que ces protocoles sont agnostiques. Ils ont été développés comme des standards techniques.
Son travail a consisté à implémenter ces standards pour l’écosystème WordPress via ses extensions. L’idée étant de pouvoir proposer au propriétaire d’un site WordPress d’activer Webmention en quelques clics en installant l’extension.
Lors du hackathon, Matthias nous a exposé l’état actuel de son travail :
De façon générale, il nous a expliqué que l’extension est entièrement fonctionnelle d’un point de vue technique : lorsque l’on installe les extensions, cela permet d’utiliser les protocoles et de recevoir ou envoyer des notifications vers/à partir d’autres sites internet,
cependant, l’extension reste réalisée par et pour des développeurs, l’extension n’est pas très attirante et les options peuvent être complexes à appréhender pour un néophyte,
enfin, son objectif serait de faire grossir la base d’utilisateur pour pouvoir prétendre un jour proposer d’intégrer ces protocoles nativement dans WordPress core.
À partir de cet état des lieux, plusieurs projets ont été proposés :
Matthias nous a expliqué travailler sur une nouvelle branche (cf. Github : branche 5.x) de l’extension Webmention qui apportera plusieurs améliorations techniques, ainsi que la fusion de l’extension optionnelle “Semantic-Linkbacks” dans l’extension principale “Webmention” pour pouvoir se focaliser sur une seule extension et rendre l’ensemble plus simple à comprendre pour les utilisateurs finaux.
Stefan et Jan se sont intéressés à Gutenberg en développant des prototypes d’options sur le nouvel éditeur de WordPress qui rendrait l’utilisation de Webmention plus intégrée,
de notre côté, avec Carolina et Moritz, nous nous sommes intéressés aux étapes d’installation de l’extension.
Avec Carolina et Moritz, nous avons challengé Matthias sur la phase d’onboarding. Le constat que nous partagions tous est que la page d’option actuelle du plugin dans le Back-Office de WordPress ne correspond plus à ce que des plugins “grand public” proposent.
Voici les étapes de notre travail :
Lister les options actuellement disponibles dans la page des paramètres du plugin,
lister les options manquantes dans la page d’option que le plugin propose,
classer ces différentes options dans 2 catégories :
les options nécessaires pour l’ensemble des utilisateurs,
les options plus confidentielles ou demandant plus de connaissances
redécouper des étapes claires permettant une configuration fluide de l’extension une fois que celle-ci est activée par le propriétaire d’un site.
Une fois ce travail initial réalisé, nous nous sommes mis à la recherche d’exemples de plugin nous permettant de créer une page d’options plus moderne.
L’objectif recherché était de créer une page ressemblant plus à un “Install Wizard” qu’à une vieille page d’option WordPress. Nous nous sommes tournés vers plusieurs exemples dont le plus intéressant est sans nul doute Yoast.
Pour l’interface, nous nous sommes inspirés de la page native du Site Health :
/wp-admin/tools.php?page=health-check
C’était important pour moi de proposer une base de travail évolutive. En fondant le travail de la nouvelle page d’option sur une interface native de WordPress, nous évitions ainsi de complexifier le travail de maintenance futur de l’extension. L’autre raison à ce choix est lié au besoin de travailler vite pour avoir une version à proposer à la fin du hackathon. Le style pouvant être adapté dans le futur à partir de nos idées.
Page des options de l’extension avant le hackathon.Notre inspiration principale : l’interfacte de la fonctionnalité native “Site Health”.Premier onglet de la nouvelle page d’option de l’extension Webmention.Deuxième onglet de la nouvelle page d’option de l’extension Webmention.Le troisième onglet qui est vide, servira à afficher une FAQ, des liens externes, expliquer le fonctionnement de Bridgy etc…Pour organiser la nouvelle interface, Carolina et moi avons utilisé Figma pour créer rapidement des maquettes et les contenus. Nous pouvions ensuite facilement partager nos itérations à Moritz afin d’intégrer tout cela sur la nouvelle interface.
Au bout du compte, Moritz a proposé une PR sur la branche 5.x en parallèle du travail de Matthias et Marko d’un côté et de Stefan et Jan de l’autre.
Hagen quant à lui a discuté avec chaque groupe. Il a apporté son expérience, sa vision et son enthousiasme au groupe. Discutant des aspects théoriques avec chaque groupe, testant les différentes itérations, assurant notre communication sur les réseaux sociaux et montrant à d’autres participants, comme Robert Windisch, le fonctionnement en ajoutant et testant l’extension Webmention sur son propre blog.
Les résultats
Le lundi 21, Carolina et Matthias se sont chargés de créer le support de présentation listant nos différents accomplissements.
cfhack_2022_indiewebDownload
Vers le déjeuner, l’ensemble des team leads présentèrent leurs résultats devant l’ensemble des participants et le jury.
Voici la vidéo de la présentation de Matthias, filmé par Moritz :
Voici la présentation des résultats du hackathon :
En vrac
La célèbre boite à stickers de Robert Windisch !Super rencontre avec Cory Miller de Post Status !Joli troll ! 😉Simon Kraft qui présente les résultats obtenus par son groupe pour le projet “Local WordPress spam protection with AntiSpam Bee”.Aleksandar Savkovic qui présente les résultats obtenus par son groupe pour le projet “Securing WordPress with the WP-CLI”.Jérôme Vieilledent qui présente les résultats obtenus par son groupe pour le projet “Building a performance testing environment for WordPress core”.Photo des membres du Jury qui annoncent les résultats du hackathonPhoto des membres du Jury qui annoncent les résultats du hackathonQuelques liens vers des articles publiés par d’autres participants :
L’article officiel sur le site de la Cloudfest (en),
Le point de vue de Matt Biscay, un autre français, qui a participé au projet “Securing WordPress with the WP CLI” (Matt : l’année prochaine prenons un verre ensemble 🍻),
La rétrospective d’IONOS qui sponsorisait l’évènement et dont plusieurs salariés participaient (dont 2 team leads : Simon et Matthias).
L’article Post Status (en) qui résume leur participation au jury du hackathon (je suis même mentionné 🤩).
L’article de Matthias himself (de),
Les différents articles d’Hagen (décidément très prolifique pour parler du sujet) : son récap (de) / un court article (de) présentant l’intérêt de Webmention dans WordPress / un article de prospective (de) sur une utilisation possible de Webmention avec WordPress intitulé : “Un outil de feedback gratuit pour les médias sociaux avec Bridgy, Webmention et WordPress” (qui reprend et creuse une discussion que nous avons eu pendant le hackathon).
La lecture de cet article t’a plu ? Tu veux en savoir plus ? Jette un œil au repository du plugin Webmention de Matthias Pfefferle sur Github :
Dark Mode
wordpress-webmention
(this link opens in a new window)
by
pfefferle
(this link opens in a new window)
A Webmention plugin for WordPress
15 Subscribers
91 Watchers
29 Forks
Check out this repository on GitHub.com (this link opens in a new window)
Share the post „Hackathon de la CloudFest 2022 : une histoire de train, de Flammenküche et de standard du web“
TwitterLinkedInFacebookPocketPartager…
window.addEventListener(„DOMContentLoaded“, function(){
if ( navigator.share ) {
let shareurl = document.location.href;
let btns = document.querySelectorAll(„.juiz_sps_link_shareapi button:not([data-bound])“);
const canon = document.querySelector(„link[rel=canonical]“);
if (canon !== null) {
shareurl = canon.href;
}
btns.forEach(function(el) {
el.closest(„.juiz_sps_link_shareapi“).removeAttribute( „style“ );
el.setAttribute( „data-bound“, „true“ );
el.addEventListener(„click“, async () => {
try {
await navigator.share({
title: „Hackathon de la CloudFest 2022 : une histoire de train, de Flammenküche et de standard du web“,
text: „Hackathon de la CloudFest 2022 : une histoire de train, de Flammenküche et de standard du web – „,
url: shareurl,
});
console.info(„Nobs: Successful share“);
} catch(err) {
console.warn(„Nobs: Error sharing“, error);
}
});
});
}
});
Ajouter aux favoris
Notes de bas de page :[+] Notes de bas de page : ↑1 À l’avenir, il lui reste un défi de taille : modifier l’écrasante proportion de participants masculins.window.addEventListener(‚DOMContentLoaded‘, function() { function footnote_expand_reference_container_47273_2() { jQuery(‚#footnote_references_container_47273_2‘).show(); jQuery(‚#footnote_reference_container_collapse_button_47273_2‘).text(‚−‘); } function footnote_collapse_reference_container_47273_2() { jQuery(‚#footnote_references_container_47273_2‘).hide(); jQuery(‚#footnote_reference_container_collapse_button_47273_2‘).text(‚+‘); } function footnote_expand_collapse_reference_container_47273_2() { if (jQuery(‚#footnote_references_container_47273_2‘).is(‚:hidden‘)) { footnote_expand_reference_container_47273_2(); } else { footnote_collapse_reference_container_47273_2(); } } function footnote_moveToReference_47273_2(p_str_TargetID) { footnote_expand_reference_container_47273_2(); var l_obj_Target = jQuery(‚#‘ + p_str_TargetID); if (l_obj_Target.length) { jQuery( ‚html, body‘ ).delay( 0 ); jQuery(‚html, body‘).animate({ scrollTop: l_obj_Target.offset().top – window.innerHeight * 0.2 }, 380); } } function footnote_moveToAnchor_47273_2(p_str_TargetID) { footnote_expand_reference_container_47273_2(); var l_obj_Target = jQuery(‚#‘ + p_str_TargetID); if (l_obj_Target.length) { jQuery( ‚html, body‘ ).delay( 0 ); jQuery(‚html, body‘).animate({ scrollTop: l_obj_Target.offset().top – window.innerHeight * 0.2 }, 380); } }});
Reblog via Matthias Pfefferle Ich war am Wochenende auf dem CloudFest Hackathon und hatte zum zweiten Mal die Change ein Projekt zu betreuen. Die Idee…
[…] Matthias Pfefferle, Head of WordPess Development at IONOS, […]