Page 6 of 6

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

Posted: Fri Apr 09, 2010 2:17 pm
by nicmare
hier kommt ihr zum XContent Modul.
(ich komme leider noch nicht zum testen)

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

Posted: Fri Apr 09, 2010 6:51 pm
by NaN
Ups!
Hatte doch glatt vergessen, den Link nochmal zu posten ;D

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

Posted: Mon Apr 12, 2010 11:44 am
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.

Inhalt eines iFrames via Javascript generieren

Posted: Wed Apr 21, 2010 12:29 pm
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 ;)

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

Posted: Wed Apr 21, 2010 5:11 pm
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.

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

Posted: Fri Apr 23, 2010 4:07 pm
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  :-\ ...)

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

Posted: Fri Apr 23, 2010 7:31 pm
by cyberman
Wie wäre es mit AdContent?

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

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

Posted: Fri Apr 23, 2010 10:29 pm
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.

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

Posted: Sat Apr 24, 2010 12:41 am
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.

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

Posted: Wed Jun 30, 2010 10:44 am
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 ^^

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

Posted: Wed Jun 30, 2010 6:32 pm
by Foaly*
jack4ya wrote: note to myself ^^
Are you serious?

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

Posted: Thu Jul 15, 2010 7:57 pm
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