![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hallo. Ich hab vor einem Jahr oder so schonmal eine ähnliche Anfrage gestellt und wieder fallen gelassen. Jetzt ist es konkret. Ich brauche einen WYSIWYG-Editor für mein CMS. Mein Plan ist, den WYMeditor anzupassen. Neben der eigentlichen Umsetzung ist da auch noch ein wenig Konzeptionsarbeit gefragt. Ich könnte mir vorstellen, dass als Auftrag abzugeben. Allerdings sind meine Mittel im Moment sehr begrenzt und von daher wäre es vielleicht eine Idee, ein kleines Team von Leuten zusammenzustellen, die Ahnung von jQuery oder JS im Allgemeinen haben und an dem CMS mitarbeiten wollen und denen Spaß und eine geringe Entschädigung genug Lohn sind, da mitzuwirken. Hier mal mein die Anforderungen für meinen „Traum-Editor“: - Möglichkeit, Komponenten einzubinden. Das wären dann z.B. ein Adressblock oder eine Termine-Tabelle oder ein Mitarbeiter-Kurzprofil oder ähnliches, im Editor einfügbar als DIV (ähnlich einem einzeiligen Absatz), der z.B. Icon und Komponentenname enthält und „aufklappbar“ ist, damit dann das eigentliche Formular (vielleicht AJAX) entfaltet. - Diese Komponenten müssen verschiebbar sein, löschbar, eventuell braucht es noch den Zugriff auf zuvor gelöschte Komponenten. - Bilder können höchstens proportional skaliert werden und dann auch nur innerhalb von definierbaren Maximalwerten. Sie können entweder quasi als eigenständiger Ansatz rechts-, linksbündig oder zentriert oder mit Textumfluß rechts- oder linksbündig erscheinen. Hier sollte konfigurierbar sein, was möglich ist und was nicht. Bilder frei im Text platzierbar zu machen ist quatsch – höchstens die Zeilenhöhe wird nicht überschritten. - Komponenten, die nicht über die ganze Breite gehen, sondern auch wie Bilder, ev. sogar „hinter“ Bildern (z.B. anklickbare slideshow) eingebunden werden können wäre fein. - Die Popups müssten als DIVs erscheinen, die auch beim scrollen zentriert bleiben, den Hintergrund „deaktivieren“ und mit irgendwelchen Formularen gefüllt werden können (Media Browser, …). - Der Bug beim Skalieren von Bildern im Firefox muss natürlich raus. Jo, das ist eine ganze Menge. Wichtig sind vor allem die Komponentengeschichte. Die DIV-Popups sind sicher keine große Sache. Die Skalierbarkeit der Bilder und der Bug scheinen mir da schon irgendwie aufwändiger zu sein. Hab schonmal rumgesucht im Quellcode, schnall aber nicht recht, wo das programmiert ist. Ist das ein Browser-Feature, dass der editor nur benutzt? In dem Fall müsste man das wohl nachprogrammieren, wenn die Browser nicht mehr als das hergeben. Komponenten mit Textumfluß sind auch erstmal nicht so wichtig. Fühlt sich jemand von euch angesprochen? Ich würde mich über Rückmeldung freuen. Vielleicht mit einem Angebot für die Umsetzung oder dem Angebot, daran mitzuarbeiten oder Ideen, Kritik und Rückfragen. Basti |
| | |
| | Nach oben #2 | ||
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 118
| Zitat:
Zitat:
Patrick | ||
| | |
| | Nach oben #3 | |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hallo Patrick. Zitat:
Am Besten wäre es, wenn man einen Komponenten-Baum abbilden könnte, denn genau das ist ja in der Regel die Struktur einer Seite. Als Beispiel eine Mitarbeiter-Seite eines Unternehmens. Da wäre dann vom Seitentyp her vorgegeben: - Überschrift - Text - 0-n mal die Komponente „Mitarbeiterblock“; diese besteht aus: -- Überschrift (z.B. „Freie Mitarbeiter“ oder „Abteilung XY“) -- Beschreibungstext -- 0-n mal Komponente „Kurzprofil“: --- Bild (150*200) --- Text (ohne weitere Komponenten, ohne Links, nur ein Absatz) Die Schwierigkeit ist halt, diesen Baum abzubilden. Die Komponenten müssten eigentlich eine feste Breite haben. Eine Alternative zum Einbetten von DIVs in einen Editor wäre, mehrere Editor-Instanzen „übereinander“ zu setzen, mit diesen DIVs zwischendrinnen und z.B. einer gemeinsamen Menüleiste (bzw. Werkzeugleiste). Schwierig hier dann nur, die DIVS quasi Absatzweise hoch- und runterschieben zu können. Ich werde mich mal an einen Prototypen (ohne „echten“ Editor) machen. Basti | |
| | |
| | Nach oben #4 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hier also besagter Prototyp ohne Editierfunktion: http://dev.bastian-fenske.de/cms-editor/editor_01.php Basti |
| | |
| | Nach oben #5 | |
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 118
| Zitat:
| |
| | |
| | Nach oben #6 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hast mich richtig verstanden. Meine Idee war ursprünglich, das alles in einen Editor zu packen, aber ich vermute so geht es einfacher. Wenn es dann auch nur einige wenige Auszeichnungen gibt, würde eine Wiki- (oder phpbb-)Syntax ja auch reichen. Weitere Fragen (zu den dort genanten) wären: - Wie kann ich die Daten speichern bzw. senden? - Wie lässt sich z.B. ein Absatz in eine Überschrift umwandeln und umgekehrt? (Buttons in der Werkzeugleiste? Pull-Down-Menü?) - Wie werden neue Komponenten erstellt (Ajax?) Größtes Problem wird sein, umzusetzen, dass gewisse Komponenten nur an gewisse Stellen geschoben werden dürfen. Definierbar muss z.B. sein: - In dieser Komponente ist eine optionale Überschrift möglich, gefolgt von einem optionalen Text und einer Liste von 0-n Komponenten vom Typ „Termin“. - In dieser Komponente hier sind beliebig viele Komponenten „Image“ erlaubt, jedoch nur linksbündig mit maximal 300 Pixeln breite. Basti |
| | |
| | Nach oben #7 | ||
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 118
| Nun mittels dem DOM ist es natürlich nicht sonderlich schwer durch einen HTML-Tree zu wandern und die Elemente die du haben willst zu zählen. Ich stelle mir vor (so etwas ähnliches hab ich schonmal gemacht) das du einfach durch deine Liste (oder Div-Container) iterierst und ein Array mit ID -> Inhalt erstellst, so kannst du den Tree speichern und auch einzelne ID's senden. Zitat:
Kommt darauf an was du brauchst. Musst du den Tree sofort mit Inhalt befüllen kommt natürlich AJAX ins Spiel. Willst du nur eine neue Komponente erstellen wird natürlich nur auf das DOM zurückgegriffen. Zitat:
Patrick | ||
| | |
| | Nach oben #8 | |||
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hallo Patrick. Zitat:
Ich denke, es macht Sinn zu unterscheiden zwischen Komponenten, die quasi nur als Container fungieren, quasi nichts anderes sind als einer Definition, welche Komponente sie wie enthalten darf, kann, muss. Dann gibt es grundlegende Bausteine, die in allen möglichen Komponenten verwendet werden, wie z.B. Bild, Absatz etc. und dann eben dann „wirkliche“ Komponenten. Mal sehen… Zitat:
- Ist der Komponenten-Typ hier (im Ziel-Container sozusagen) prinzipell erlaubt? - Ist er an der Stelle erlaubt? - Gibt es Optionen, die die Komponente einschränken? - Wenn ja, übergib die Optionen an eine Test-Methode der Komponente, die was damit anzufangen weiß. Basti | |||
| | |
| | Nach oben #9 | |||
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 118
|
Hi Basti. Zitat:
Zitat:
Zitat:
Patrick | |||
| | |
| | Nach oben #10 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hallo Patrick. Danke für dein Mitdenken. Ich würde gerne den kompletten Baum einer Seite an den Browser schicken, dort dann aufbereiten, so dass dort schon alle Infos zusammen sind, welche Komponenten wo wie erlaubt sind etc. Dazu wäre es wahrscheinlich geschickt, die Daten komplett in XML abzubilden und die Komponenten-Oberflächen als nachladbare Templates verfügbar zu machen und das eben clientseitig zu montieren. Vielleicht könnte man das sogar so vereinheitlichen, dass die Komponenten selbst gar keinen eigenen JavaScript-Part benötigen, sondern sich der „Editor“ ein Feld mit Werten dann einfach wieder aus der Komponente rauszieht. Argh, das ist wie ein Blindflug hier in für mich völligem Neuland sowas anzugehen. In PHP hab dann immer gleich ein paar Optionen parat mitsamt Vor- und Nachteilen, aber hier muss ich mich halb blind vortasten. Basti |
| | |
| | Nach oben #11 |
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 118
|
Hallo Basti. Wie sieht's aus? Bist du bezüglich Konzept schon weiter gekommen? Wenn du JavaScript-Technisch Hilfe benötigst stehe ich dir gerne zur Seite, kann auch per Messenger (ICQ) sein bzw. würde ich am Projekt mitarbeiten. Ansonsten stehe ich dir gerne weiterhin in diesem Thread mit meinen, hoffentlich, Denkanstößen zur Verfügung. Patrick |
| | |
| | Nach oben #12 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hi Patrick. Vielen Dank. Ja, es geht voran, aber langsam. Bin einfach noch nicht so flüssig in JavaScript und jQuery und andere Aufträge und Anfragen brauchen auch Aufmerksamkeit. Vielleicht kann ich später noch eine neue Version hochladen… Sitze auch gerade an einer Oberfläche/Konzept für die Website meines Partners hier im Büro und komm so langsam in die Materie rein: http://dev.bastian-fenske.de/kuehnundmutig/ Macht in jedem Fall total Spaß. Basti |
| | |
| | Nach oben #13 |
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 118
|
Hi Basti, ich hab mal schnell über den Code von dem angehängten Link überflogen. Auf die Schnelle ist mir z.B aufgefallen das du die Mehrdimensionalen-Arrays in JSON notieren solltest, so ein JSON-String sieht für deine Zwecke dann ca. so aus: Code: test = {'Projekt1': [{'num_rows':3,'color':'#3465a4'}], 'Projekt2':[{'num_rows': 3,'color':'#FF9900'}] }
So ein paar Kleinigkeiten auf der Schnelle. Patrick |
| | |
| | Nach oben #14 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hi. Danke für die Tipps. Hab jetzt nochmal einen Snapshot hochgeladen. Schwere Baustelle… Ich hab jetzt zwischen die Blöcke (erstmal statisch) Felder gelegt, über die man neue Komponenten einbauen können soll. Die sollten dann die Info enthalten (bzw. diesen die Info zugeordnet werden), welche Komponenten da erlaubt sind und ebenso sollen dann beim Rumschieben bestehender Komponenten diese dort abgesetzt werden können (wenn erlaubt). http://dev.bastian-fenske.de/cms-editor/editor_04.php Basti |
| | |
| | Nach oben #15 |
| Jonas Registriert seit: 03.06.2006
Beiträge: 240
|
Wenn ich etwas editieren will, wir an den Anfang immer einiges an HTML geschrieben, welches, wenn ich das nicht entferne im Text bleibt.
__________________ Applikations-Programmierung: BlitzMax, BlitzPlus Webentwicklung: PHP, (X)HTML, CSS, JavaScript, MySQL |
| | |
| | Nach oben #17 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Nochmal von Vorne: Jeder Seitentyp besteht (u.A.) aus einer Definition. In XML ausgedrückt könnte die so aussehen: Code: <?xml version="1.0" encoding="UTF-8"?> <pagetype_definition id="mitarbeiter_seite"> <section id="mitarbeiter_seite__ueberschrift"> <component type="text.heading1" /> </section> <section id="mitarbeiter_seite__freie_inhalte"> <disallow_component type="profile"/> </section> <section id="mitarbeiter_seite__profile"> <allow_section type="abteilung"/> </section> </pagetype_definition> Eine Sektion ist sowas, wie ein Container der entweder feste Inhalte (Komponenten oder Sektionen) gesetzt werden oder in den frei Komponenten gepackt werden können, einschränkbar durch Angaben von entweder disallow_component („Alle Komponenten außer“-) oder allow_component („Nur diese Komponenten“-). Außerdem kann mit allow_section noch angegeben werden, dass bestimmte (Unter-)Sektionen erlaubt sind. Sektionen enthalten also entweder: 1. Platz für 0-n beliebige Komponenten, oder 2. Platz für 0-n Komponenten, die nicht von einem oder mehreren bestimmten Typen sind, oder 3. Platz für 0-n Komponenten oder Sektionen von einem bestimmten Typ oder aus einer Liste von erlaubten Typen, oder 4. Eine oder mehrere Komponenten und/oder Sektionen in einer festgelegten und unveränderlichen Reihenfolge. Diese Definition wird dann durch bereits bestehende Komponenten der zu bearbeitenden Seite „gefüllt“, muss aber als solches für den Editor erhalten bleiben. Eine „Untersektion“ könnte so aussehen: Code: <?xml version="1.0" encoding="UTF-8"?> <section_definition id="abteilung"> <section id="abteilung__ueberschrift"> <component type="text.heading2" /> </section> <section id="abteilung__kurzer_text"> <component type="text.paragraph" /> </section> <section id="abteilung__profile""> <allow_component type="profil"/> </section> </section_definition> Komponenten können selbst wiederum Komponenten enthalten (Das Mitarbeiter-Profil enthält z.B. eine Bild-Komponente, sowie vielleicht eine Absatz-Komponente für eine kurze Beschreibung). Der Unterschied zwischen Komponenten und Sektionen besteht darin, dass Sektionen lediglich Definitionen von je einer Menge von Komponenten darstellen und keine eigene Funktionalität besitzen, im Editor auch nicht „aufklappbar“ komprimiert werden, sondern höchstens durch einen dünnen Rahmen oder so dargestellt werden sollen. Jo, wie kommt das nun alles zusammen, in die Datenbank, in den Editor, in das System von Seiten-Versionierung, -Indizierung, Benutzerrechten… Fühlt sich an, wie ein zu großes Stück Speck im Mund… Basti Geändert von Basti (13.02.2008 um 12:02 Uhr). |
| | |
| | Nach oben #18 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Hi. Ich hab das PHP-seitig jetzt mal grob umgesetzt: PHP-Code: PHP-Code: |