Globale Injektion von Custom JavaScript?

Wir wollen mit “Custom icons and actions” ein Button hinterlegen,
der ein kleines Auswahl-Menü anzeigt.

Die Idee ist statt einem https:// link
ein inline javascript code zu hinterlegen so etwa:

Aber da es wenig Freude macht in einem einzeiligen Inputfield javascript zu pflegen,
frage ich mich ob es irgendwie möglich ist global eine javascript Datei zu injizieren ?

Geht das irgendwie mithilfe von “overshadowing” in ~/share/check_mk/web/htdocs/

Schau mal unter ~/local/share/check_mk/web/plugins ob du dort (möglicherweise im Ordner icons) deine Schnipsel wiederfindest.

Es geht mir nicht um Icons.
Es geht um die Links die man selbst hinterlegt.

Statt einem http(s) Link habe ich z.B. so ein inline javascript hinterlegt:

javascript:(function loadDoc() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if ( this.readyState == 4 && this.status == 200 ) { alert(this.responseText); } }; xhttp.open("GET", "/app/showdetails?host=$HOSTNAME$&service=$SERVICEDESC_URL_ENCODED$", true); xhttp.send(); })();

Das holt sich plain text per Ajax XMLHttpRequest von einem Document Management System /app/showdetails ab, übergibt hostnamen und servicename als url parameter. Dann zeigt es die Daten per javascript alert() an.

Das ist hackisch hilft uns aber.

Aber das javascript alert() popup kann nur plaintext anzeigen
und keine html Formatierung oder klickbare Link.

Daher möchte ich das alert() durch ein javascript popup fensterchen ersetzten. So wie die Popups von den Hamburger Menüs im Checkmk.

Dazu muss ich aber javascript in die html Seiten einschleusen.
Möglicherweise ist aber auch schon vom Checkmk jquery Zeugs geladen und ich könnte dies nutzen ?

Ich benutze nun so ein “inline” javascipt, welches sich per ajax einen
html snipsel besorgt und das .popup_menu div updated

javascript:(function loadDoc() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if ( this.readyState == 4 && this.status == 200 ) {  document.querySelector(".popup_menu").innerHTML=this.responseText;  document.querySelector(".popup_menu").style.whiteSpace="nowrap";  }   };   xhttp.open("GET", "/app/docs?host=$HOSTNAME$&service=$SERVICEDESC_URL_ENCODED$&user=$USER_ID$", true);  xhttp.send();  })();

Dies ist ein animated gif welches die Benuzung zeigt, Vidos darf ich hier nicht hochladen:

output

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed. Contact an admin if you think this should be re-opened.