Seite 1 von 1
"cRegistry::isBackendEditMode" aber für Javascript
Verfasst: Sa 6. Jun 2015, 12:31
von frogli
Hi
Ich habe mir ein Module mit viel Javascript erstellt und jetzt habe ich das Problem, dass gewisse Elemente die Editierfähigkeiten von zB CMS_IMGEDITOR oder CMS_TEXT einschränken bis unbrauchbar machen.
Die Störelemente habe ich ausfindig gemacht und ich könnte Workaround machen aber eleganter wäre es wenn es eine Javascript-Lösung geben täte.
Daher wollte ich wissen ob es soetwas wie ein
cRegistry::isBackendEtitMode() halt in
Javascript gibt? Dann könnte ich die Störelement mit einen IF-Statement "unschädlich" machen.
Da ich befürchte, dass es soetwas nciht gibt würde ich gerne wissen, wie ihr das Problem löst oder lösen würdet, und ob es dafür schon ein Best-Practice gibt. Es wäre auch wünschenswert so ein boolische Variable in Contenido zur Verfügung zu stellen, da dies schon mein drittes Modul ist, wo das Problem auftaucht.
Eine andere interesantere Lösung wäre wenn ich á la Smarty mit php auf die JS-Datei des Moduls zugreifen könnte. Dann hätte man auch eine saubere Trennung zwischen php und js.
symphonische Grüße aus Wien
frogli
Re: "cRegistry::isBackendEditMode" aber für Javascript
Verfasst: Sa 6. Jun 2015, 13:34
von rethus
frogli hat geschrieben:Hi
Daher wollte ich wissen ob es soetwas wie ein
cRegistry::isBackendEtitMode() halt in
Javascript gibt? Dann könnte ich die Störelement mit einen IF-Statement "unschädlich" machen.
Joahhhh---Neee, bist schon fast selbst drauf gekommen, hast es nur nicht zuende gedacht (nicht böse gemeint

).
Da PHP vor JS ausgeführt wird, kannst du auch ganz einfach damit arbeiten. Kapsel einfach dein JS entsprechend...
Einfaches, fiktives Beispiel:
Code: Alles auswählen
if(cRegistry::isBackendEtitMode()){
echo '$('bimbom').doSomething(function(){});';
}else{
echo '$('bimbom').doOtherGreatStuff(function(){});';
}
Hier kannst du entweder nur JS-Anweisungen innerhalb eines sowieso genutzten <script>-Tags beeinflussen, oder einfach dein JS komplett auslagern, und nur via <script>-Tag laden, wenn ! BackendEditMode.
Viel Erfolg!
Re: "cRegistry::isBackendEditMode" aber für Javascript
Verfasst: Sa 6. Jun 2015, 16:31
von frogli
rethus hat geschrieben:
Joahhhh---Neee, bist schon fast selbst drauf gekommen, hast es nur nicht zuende gedacht (nicht böse gemeint

).
Da PHP vor JS ausgeführt wird, kannst du auch ganz einfach damit arbeiten. Kapsel einfach dein JS entsprechend...
Einfaches, fiktives Beispiel:
Code: Alles auswählen
if(cRegistry::isBackendEditMode()){
echo '$('bimbom').doSomething(function(){});';
}else{
echo '$('bimbom').doOtherGreatStuff(function(){});';
}
Nicht nur habe ich zuende gedacht, sondern diese Methode
ist mein Workaround. Aber ich habe auch ja gefragt.
Mir wäre aber lieber eine CMS-Lösung anwenden zu können als eine Lösung zu
programmieren.
frogli
Re: "cRegistry::isBackendEditMode" aber für Javascript
Verfasst: Sa 6. Jun 2015, 18:19
von homtata
Falls dir das was hilft:
Ich habe im ALR-Modul JS-Code ausgelagert, aus diversen Gründen aber in den Modulordner /php und in eine Datei mit der Endung .php. Dort steht (eingeklammert in den <script>-Befehl) das normale JS.
Im Modul kannst du das wie folgt aufrufen:
und damit auch wiederum abhängig vom Backendmode includen oder auch nicht.
Die php-Datei ist dann wie o.g. von folgender Struktur:
Code: Alles auswählen
<script type="text/javascript">
$(document).ready(function() {
--- code ----
}
</script>
Re: "cRegistry::isBackendEditMode" aber für Javascript
Verfasst: Sa 6. Jun 2015, 18:49
von Oldperl
Servus,
ja es geht per JS, einfach mal in die Doku schauen.
https://docs.contenido.org/display/COND ... +structure
RTFM
Nur im Backend sollte das JS-Objekt "Con" zur Verfügung stehen. Somit kann man durch Abfrage dieses Objektes auf den Front- bzw. Backend-Status schließen.
Gruß aus Franken
Ortwin
Re: "cRegistry::isBackendEditMode" aber für Javascript
Verfasst: So 7. Jun 2015, 10:44
von frogli
Wieder einmal danke für deine Hilfe. Oldperl.
Und für alle anderen die wissen wollen wie ich es jetzt gelöst habe. Und natürlich bin ich für Verbesserungsvorschläge offen.
Code: Alles auswählen
if(typeof Con !== 'undefined') {
BACKEND CODE
} else {
FRONTEND CODE
}
frogli
Re: "cRegistry::isBackendEditMode" aber für Javascript
Verfasst: Mo 8. Jun 2015, 09:27
von Oldperl
frogli hat geschrieben:Wieder einmal danke für deine Hilfe. Oldperl.
Immer gerne, und danke für den entsprechenden Code-Schnipsel!
Gruß aus Franken
Ortwin
Re: "cRegistry::isBackendEditMode" aber für Javascript
Verfasst: Mo 8. Jun 2015, 15:28
von rethus
Bim bom, da hab ich wieder was gelernt.
Ich hab es immer in der PHP-Variante gemacht.
Re: "cRegistry::isBackendEditMode" aber für Javascript
Verfasst: Sa 7. Jan 2017, 20:36
von frogli
Leider funktioniert mein js-script nicht in der Version 4.9.12 mehr.
Wurde die Variable Con mit einer anderen ersetzt?