(Gelöst) Backend um Option in der Seitenerstellung erweitern

Das Board für alle Fragen und Diskussionen, die keinen direkten Bezug zu CMS made simple haben
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am
Location: Berlin

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by nicmare »

hier kommt ihr zum XContent Modul.
(ich komme leider noch nicht zum testen)
NaN

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by NaN »

Ups!
Hatte doch glatt vergessen, den Link nochmal zu posten ;D
NaN

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by NaN »

So BETA 2 ist draußen.
Und mit BETA 2 verschwinden die einzelnen Dateien Content2.inc.php und function.content2.php und werden gänzlich durch das Modul XContent ersetzt.
So lässt sichs für mich leichter pflegen und für den User leichter installieren.
NaN

Inhalt eines iFrames via Javascript generieren

Post by NaN »

Mal eine Frage an die etwas Erfahreneren Leute hier ;)

Ich stehe seit kurzem vor einem Problem bei dem ich irgendwie nicht wirklich weiterkomme.
Ich bin gerade dabei, XContent so zu erweitern, dass man Inhaltsblöcke "on the fly" beim Bearbeiten einer Seite hinzufügen kann, ohne das Template ändern zu müssen. Die Inhaltsblöcke werden dann in einer Tabelle in der Datenbank gespeichert.

Im Template kann man dann anstelle jeden Inhaltsblock von Hand setzen zu müssen einfach einen Bereich definieren (z.B. {content block="left" type="area"}). Beim Bearbeiten einer Seite kann man dann für jeden Block festlegen in wechem dieser Bereiche er angezeigt werden soll.
Im Moment ist es so, dass die Reihenfolge der Blöcke nicht geändert werden kann. D.h. sie werden im Frontend der Reihe nach so angezeigt, wie sie im Backend erstellt wurden. Ich möchte jetzt eine Sortierfunktion einbauen mit der man die Blöcke im Backend hin und her schieben und die Reihenfolge selbst festlegen kann. Dazu benutze ich jQuery Sortable. Das funktioniert auch wunderbar. Nur leider gibt es bei den Inhaltsblöcken, die einen WYSIWYG Editor beinhalten ein Problem. Genaugenommen liegt das Problem beim iFrame des Editors.

Da das iFrame beim Umsortieren des Inhaltsblocks komplett "geklont" wird, d.h. als neues HTML Element in das bereits bestehende DOM eingefügt wird, kommt es beim Firefox und beim Safari dazu, dass der Inhalt des iFrames versucht wird, neu zu laden. Das ist ein browserspezifisches Problem, wofür es schon seit einer halben Ewigkeit leider keine Lösung gibt. (IE hab ich hier nicht zur Hand, aber da soll es wohl keine Probleme geben)
Das Problem ist allerdings, dass das iFrame des Editors kein wirkliches src Attribut hat bzw. steht dort als Addresse "javascript". D.h. dort kann nichts wirklich geladen werden.

Um es kurz zu machen: Der Editor funktioniert für den neu sortierten Block nicht mehr. Der Inhalt ist weg und auch sonst kann man mit dem Editor nichts mehr anfangen, da alle Funktionen auf ein Element innerhalb des Iframes zugreifen wollen welches - aufgrund des fehlerhaften Neuladens des iFrame Inhalts - nicht mehr existiert.

Meine Idee besteht nun darin, den kompletten Inhalt des iFrames (inklusive und aller verlinkten Scripte und Stylesheets - also das komplette "Objekt" oder "Dokument"  - oder wie auch immer man das nennen mag - im iFrame) vor dem Sortiervorgang auszulesen und danach wieder einzufügen. Und genau das will leider nicht so ganz funktionieren. Wobei ich noch nicht weiß, ob der Tiny damit dann wieder funktioniert. Es ist nur eine Idee.

Meine Suche im Netz bringt mich immer wieder nur zu solchen Spielereien wo Leute versuchen den Inhalt eines iFrames "auszuspionieren".
Ich möchte es aber genau umgekehrt machen. Ich möchte etwas in das iFrame hinein bringen. Und zwar ein komplettes Dokument mit allem drum und dran. Nur irgendwie scheint das nicht so zu funktionieren, wie ich mir das vorstelle.
Geht das überhaupt?
Hat hier jemand mit solchen Dingen Erfahrung?

Einfaches HTML in ein iFrame hineinzubringen ist kein Problem. Nur landet das alles im des iFrames. Der bleibt leer.
Bei einem kompletten Objekt endet es immer damit, dass ich im iFrame dann [objekt Objekt] stehen habe.
Oder ich bekomme eine Fehlermeldung in der Konsole, dass das so nicht geht.

Ich bin mir aber ziemlich sicher, dass das irgendwie gehen muss, denn schließlich generiert der Editor den Inhalt des iFrames ja auch nur via Javascript.

Ein anderer Ansatz wäre, das API des Editors zu nutzen und einfach zu sagen, dass er den Inhalt des versteckten Textareas neu rendern soll. Also die Javascript Funktion, die stellvertretend für das src Attribut des iFrames steht. Nur weiß ich erstens nicht welche das ist und zweitens würde ich damit XContent von einem ganz bestimmten Editor abhängig machen.
Und genau das möchte ich gerne vermeiden.

Schonmal danke fürs lesen ;)
NaN

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by NaN »

Ich gebs auf.
Ich kriegs nicht hin das iFrame neu mit Inhalt zu füllen... d.h. ich bekomme es schon hin, allerdings schaffe ich es nicht, den Inhalt erst nachdem der Browser den Inhalt des iFrames neu geladen hat, einzufügen.

Selbst wenn ich via AJAX die komplette Seite neu lade und nur den Inhaltsblock mit dem neu geladenen austausche, weiß der Editor immer noch nicht, dass er jetzt tätig werden, das Textarea ausblenden und stattdessen ein iframe mit WYSIWYG Editor generieren soll. Ich muss es dem Editor also selber direkt irgendwie mitteilen.
Wäre aber ohnehin blödsinnig, da daurch alle Änderungen in diesem Inhaltsblock wieder rückgängig gemacht werden.

Jetzt bleiben mir also drei Möglichkeiten:

1. Ich lasse die Sortierfunktion weg (das wäre zwar doof, aber das einfachste)
2. Ich finde einen anderen Weg die Inhaltsblöcke zu sortieren (z.B. via PHP und Neuladen der Seite - Algoritmen sind allerdings nicht meine Stärke. Außerdem finde ich Neuladen auch doof.)
3. Ich finde einen Weg, dem TinyMCE zu sagen, dass er den Inhalt für den jeweiligen Block neu rendern soll und mache XContent vom TinyMCE abhängig. (Das wäre zwar ebenfalls doof, aber auch irgendwie kein besonders großes Übel. Wieviele WYSIWYG Editoren gibt es schon für ein CMS?)

Falls sich jemand mit dem API des TinyMCEs auskennt, bitte melden.



EDIT:

Okay, ich hab's jetzt erstmal so hinbekommen, dass der Editor für den Inhaltsblock beim Sortieren deaktiviert und danach einfach wieder aktiviert wird. Funzt aber nur beim Tiny.
Last edited by NaN on Wed Apr 21, 2010 8:38 pm, edited 1 time in total.
NaN

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by NaN »

Ich muss wahrscheinlich den Modulnamen ändern, da XContent bereits eingetragenes Wahrenzeichen eines anderen CMS ist.
Ich möchte vermeiden, Leute zu verwirren, da keinerlei Zusammenhang zwischen meinem Modul und dem anderen CMS besteht, und vor allem will ich nicht, dass sich ein Microsoft Partner bei mir mit einer Unterlassungsklage meldet.

Falls jemand eine Idee hat, wie man das Modul nennen könnte, wäre ich für dankbar für jeden Vorschlag ;)
(Content2 fällt schonmal weg, da das bereits der Name der Klasse des Inhaltstypen ist. Und wenn ich den ändere, gibts keine Abwärtskompatibiliät mehr. ContentX ist irgendwie auch schon an diverse Agenturen vergeben  :-\ ...)
cyberman

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by cyberman »

Wie wäre es mit AdContent?

(=Advanced Content, advanced im Sinne von erweitert, fortgeschritten, zukunftsweisend ;))
nhaack

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by nhaack »

Ich finde, AdContent hat irgendwas von Werbung... als "Ad" im Sinne von Advertisement (die Assoziation hatte ich zumindest).

Den Ansatz mit Advanced finde ich gut.

Hatte diesen Beitrag immer irgendwie unter "Neue Beiträge gesehen" aber nicht gelesen und siehe da, hier gibt's ja mittlerweile anscheinend 'ne fette Toolbox. Im Grunde ja recht Simple in der Benutzung, aber was man da alles mit den Templates und für die Redakteure machen kann. Eine solche Funktionalität macht CMSMS wirklich unter vielen Gesichtspunkten einfacher! Werde ich mir gleich mal genauer angucken.

Werden die Blöcke dann eigentlich als normale Contentblöcke gespeichert? Denn dann könnte man direkt mit content dump drauf zugreifen (vielleicht steht die Antwort ja weiter oben... :D)

Coole Sache! Danke.
NaN

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by NaN »

Na dann werde ich es wohl einfach AdvancedContent nennen ;)
Die Idee hatte ich ganz am Anfang schonmal.
War mir aber zu lang.
Naja, muss ja nicht immer alles irgendwie abgekürzt werden.

Die Umbenennung des Moduls bringt allerdings ein Problem mit sich: es wird kein Upgrade geben.
Es mus als komplett neues Modul installiert werden. (Da Modulname, Modulklasse, Dateiname und Verzeichnisname zusammenhängen)
Und danach kann das andere deinstalliert und gelöscht werden.
nhaack wrote:
Werden die Blöcke dann eigentlich als normale Contentblöcke gespeichert?
Yepp. So ist der Plan.
Jedes Feld ist wie ein ganz normaler Inhaltsblock.
jack4ya
Power Poster
Power Poster
Posts: 294
Joined: Thu Oct 19, 2006 10:07 am

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by jack4ya »

NaN wrote:

Code: Select all


{content block="topic" label="Thema" type="dropdown" items=",Thema 1,Thema 2,Thema 3" assign="topic"}
{if $topic != ''}
	{if $topic == 'Thema 1'}
		{cms_module module="Modul A"}
	{esleif $topic == 'Thema 2'}
		{cms_module module="Modul B"}
	{elseif $topic == 'Thema 3'}
		{cms_module module="Modul C"}
	{/if}
{/if}

note to myself ^^
Foaly*
Translator
Translator
Posts: 150
Joined: Sun Mar 29, 2009 3:32 pm
Location: London

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by Foaly* »

jack4ya wrote: note to myself ^^
Are you serious?
jack4ya
Power Poster
Power Poster
Posts: 294
Joined: Thu Oct 19, 2006 10:07 am

Re: (Gelöst) Backend um Option in der Seitenerstellung erweitern

Post by jack4ya »

Foaly* wrote:
jack4ya wrote: note to myself ^^
Are you serious?
Kinda... I want to connect it with the SuperSizer plugin...
Plus the remark makes it simpler to find back this topic  :D
Locked

Return to “Stammtisch”