skip to content

Topics

Frontend-Edit bei Topics (ab 0.6)

(Diese Anleitung bezieht sich auf Topics 0.6)

Sobald man in Websitebaker angemeldet (und berechtigt) ist, erscheinen im Frontend kleine „edit“-Links bei den Topics; sowohl in der Übersicht als auch bei jedem Topic selbst.
 

Gleich vorab, was NICHT funktioniert: Direkt ins Template schreiben. Sowas würde nur funktionieren, wenn Template und Editor genau aufeinander abgestimmt sind, und das geht wieder nur, wenn der Editor einfach gehalten ist. Mit der Vielfalt von Möglichkeiten, die WB + Editor + Template + Module bietet, ist das nahezu unmöglich.

Backend im Overlay

Stattdessen wird ein Teil des Backends in einen iFrame gesteckt; mit Schatten und (wenn gewünscht) standesgemäßem Erscheinen. Was fehlt: Der Header und Footer des Backends, und natürlich die ganzen Buttons dazu. Es werden rein die Formulare der Modul-Dateien dargestellt. Das Design kann individuell angepasst werden.

Dazu nötige Anpassungen:

Zunächst braucht es jQuery mitsamt einem geeigneten Plugin dazu, zb die Fancy-Box. Die nötigen Angaben (neuere Fancy-Box):

$("a.tp_editlink").fancybox({
'hideOnContentClick': false,
'transitionIn':'elastic',
 'zoomSpeedIn':300,
 'transitionOut':'elastic',
 'zoomSpeedOut':300,
 'overlayShow': true,
 'hideOnOverlayClick':false,
 'overlayOpacity': 0.8,
 'type': 'iframe', 
 'width': 880,
 'height': 1200     });
       
Die Werte können natürlich angepasst werden. Die Fancy-Box ändert mit jeder Version ihr Verhalten, ich verwende hier ein ältere, woanders eine neuere, da sind andere Einstellungen nötig.

 

Da sich jetzt alles in einem iFrame befindet, bewirkt jedes target=“_top“ oder top.location, dass die Seite den iFrame verlässt und jetzt statt der darunter liegenden Seite steht. Um das zu verhindern ist - je nach Version - eine harmlose kleine Änderung im Admin-Template nötig:
Templates/argos_theme/templates/success.htt
setTimeout("window.location.href = …  //window statt top
und
<a  target="_top" href="{REDIRECT}"

Allgemeine Hinweise / Sicherheitsfragen

iFrames sind anfällig für XXS – also Cross Site Scripting. Das sollte hier kein Problem sein, solange sich keine fremden iFrames auf der Seite befinden. Solche werden häufig von Countern oder Bannerdiensten (Google Adsense!) erzeugt. Bei Google muss man sich weniger Sorgen machen, gefährlich können kleinere Dienste wie Wetteranzeigen usw sein.

Wer bedenken hat, lässt einfach die Fancybox weg, dann wird die Seite in einem neuen Fenster geöffnet, ohne iFrame.

Ob der edit-link zum Frontend-Edit führt, oder ob er ganz normal das Backend öffnet, wird in der Datei module_settings.php unter
$fredit_default = 1; //1:frontend, 0: backend;
Eingestellt.

Der Parameter: fredit=1

Welche Darstellung verwendet wird, hängt von diesem Parameter ab, der permanent durchgereicht wird. Natürlich lässt sich ein Parameter leicht ändern - hier geht es auch nicht um Sicherheitsfragen: Für Frontend-Edit gelten die selben Regeln wie im Backend. Klartext: Wer ins Backend darf, kann auch ins Backend - so oder so. Natürlich wäre es möglich, statt dem durchgereichten Parameter auf einen Wert in der Session zuzugreifen. Mal sehen.

Feinheiten:

Nach dem Schließen des Overlays ist natürlich noch keine Änderung im Frontend sichtbar; dazu muss die Seite erst neu geladen werden. Ein Automatismus über Javascript wäre möglich.
Über Frontend-Edit sind die Optionen nicht erreichbar. Das würde einfach den Rahmen sprengen.
 

Back

Kommentar

Name:

E-Mail (required, not public):

Webseite:

Kommentar :

Up
K