Beat: Fragen zu meinem CMS (Sammelthread)

Hallo Allerseits.

Ich möchte diesen Sammlthread zu Fragen zu meinem CMS eröffnen, denn mittlerweile hat sich einiges angesammelt.

Dieser aktuelle Post enthält nur die Grundsatzinfo. Meine erste Frage will ich daran anhängen.

Was ist dieses CMS?
Das CMS möchte ich an Kunden in meinem Webdesign-Angebot ausliefern zusammen mit dem Produkt das ich ausliefere. Es ist mir wichtig festzustellen, dass ich das Produkt, das ich ausliefere mit dem gleichen CMS organisiere.
Im CMS ist mir Zugänglichkeit wichtig, ebenso wie Übersicht und Klarheit der Funktionalität. Hilfetexte sollen überall vorhanden sein. Einstellungen in Optionen können diese aber auch deaktivieren. Für alles gibt es eine GUI. Ltztlich sind händische Konfigurationen auf minimale Angaben vor der Installation reduziert worden.

Das CMS wird mit Perl betrieben, und erwartet einen mod_rewirte kompatiblen Server.

Damit zu den Fragen in den nächsten Postings.

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
  1. Hallo Allerseits.

    Erste Frage:

    Mein CMS berechnet derzeit alle Seiten neu. Das soll sich jetzt natürlich ändern.
    Das Ziel ist, dass ich statische Seiten erzeuge für selektierte Seiten.
    Soweit kein Problem.
    Nun aber kommt die Konzeptfrage:

    ARCHIVIERUNG
    Ich möchte, dass statische Seiten archiviert werden können.
    Mein entwurf sieht vor:
    Ein Formular mit

    • Matrix zum Selektieren der zu bearbeitenden Seiten
    • Eine Seltion mit einer Funktionsauswahl:
        - Statische Seite erzeugen
        - statische Seiten Archivieren
        - Statische Seiten löschen.

    Die Archivierung sammelt bestehende statische Seiten (die selektiert sind) und erzeugt ein Zip-File. Es handelt sich also nicht um ein öffentliches Archiv, sondern um ein Versionen-Backup.

    Meine Ahnung aber sagt mir, dass dies ein ziemliches Durcheinander geben kann.
    -- Alles ins gleiche Archiv zu schmeissen zestört ältere Archive.
    -- Für jeden tag ein neues Archiv erzeugen reisst zusammenhängendes eventuell auseinander.

    Was ist der Beste Weg der eine goldene Mitte ist zwischen Einfachheit und Differenzierung, welchen ich anwenden könnte um eine Archivierung von statischen Seiten zu erhalten?

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    1. Hi,

      -- Alles ins gleiche Archiv zu schmeissen zestört ältere Archive.
      -- Für jeden tag ein neues Archiv erzeugen reisst zusammenhängendes eventuell auseinander.

      Ein Konzept, welches sich zur Gruppierung zusammengehoeriger Dateien recht gut bewaehrt hat und auch recht grosser Beliebtheit erfreut, heisst "Verzeichnis".

      MfG ChrisB

      --
      „This is the author's opinion, not necessarily that of Starbucks.“
      1. -- Alles ins gleiche Archiv zu schmeissen zestört ältere Archive.
        -- Für jeden tag ein neues Archiv erzeugen reisst zusammenhängendes eventuell auseinander.

        Ein Konzept, welches sich zur Gruppierung zusammengehoeriger Dateien recht gut bewaehrt hat und auch recht grosser Beliebtheit erfreut, heisst "Verzeichnis".

        Ja schon klar.
        In dem Falle brauche ich wohl die Mehrzahlform des Wortes.
        Es würde nicht reichen einen Ordner Archiv_2009-01-03 zu erstellen, das die Möglichkeit besteht, dass nur eine Auswahl von Seiten archiviert wird. zu einem etwas späteren Zeitpunkt eine andere Selektion.

        Was ich bräuchte wäre dann auch ein Ordner, der die jeweils jüngsten archivierten Versionen einer Seite enthält. Dieser ordner soll möglichst alle Seiten  enthalten, die jemals archiviert wurden, aber eben nicht in Dukplikaten.

        Die Anwendung der Archive ist nicht festgelegt. Eine Verwendung besteht als Rollback Version, falls man eine gerade bearbeitete Seite zu früh als statische Seite berechnet hat. Andere Möglichkeiten: Einreichungsexemplare in der National-Bibliothek...

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        1. Hi,

          Was ich bräuchte wäre dann auch ein Ordner, der die jeweils jüngsten archivierten Versionen einer Seite enthält. Dieser ordner soll möglichst alle Seiten  enthalten, die jemals archiviert wurden, aber eben nicht in Dukplikaten.

          Na dann koenntest du erst mal in diesem Ordner nachschauen, ob es eine aeltere Archiv-Version von Seite X gibt. Wenn ja, wird diese verschoben - zum Beispiel in einen Ordner, der nach dem Erstellungsdatum dieser Datei benannt ist (und wenn nicht vorhanden, angelegt wird). Und dann kommt die neue Archiv-Version wieder in den allgemeinen Ordner.

          Wobei noch zu ueberlegen waere, ob das mit dem Datum als Verzeichnisname das cleverste ist.

          Wenn Seite X wieder durch eine vorherige Archiv-Version ersetzt werden soll - muss ich dann als Nutzer noch wissen, wann diese erstellt wurde?
          Sollen dann aufwendig alle Archiv-Verzeichnisse durchsucht werden?

          Oder vielleicht doch lieber alle nicht-aktuellen Archivversionen von Seite X in einem Verzeichnis ablegen, dass nach Seite X benannt ist?

          MfG ChrisB

          --
          „This is the author's opinion, not necessarily that of Starbucks.“
          1. Hellihello

            Na dann koenntest du erst mal in diesem Ordner nachschauen, ob es eine aeltere Archiv-Version von Seite X gibt. Wenn ja, wird diese verschoben - zum Beispiel in einen Ordner, der nach dem Erstellungsdatum dieser Datei benannt ist (und wenn nicht vorhanden, angelegt wird). Und dann kommt die neue Archiv-Version wieder in den allgemeinen Ordner.

            Und Dateititel-timestamp und alles in einem Ordner? Ist hier Sortiererei auf Dateiebene echt clever? Und dann noch verschieben von Dateien in andere Ordner? Statt alle in einen Ordner zu pfeffern und die "Kategorisierung" anderswo vorzunehmen.

            Dank und Gruß,

            frankx

            --
            tryin to multitain  - Globus = Planet != Welt
            1. Na dann koenntest du erst mal in diesem Ordner nachschauen, ob es eine aeltere Archiv-Version von Seite X gibt. Wenn ja, wird diese verschoben - zum Beispiel in einen Ordner, der nach dem Erstellungsdatum dieser Datei benannt ist (und wenn nicht vorhanden, angelegt wird). Und dann kommt die neue Archiv-Version wieder in den allgemeinen Ordner.

              Und Dateititel-timestamp und alles in einem Ordner? Ist hier Sortiererei auf Dateiebene echt clever? Und dann noch verschieben von Dateien in andere Ordner? Statt alle in einen Ordner zu pfeffern und die "Kategorisierung" anderswo vorzunehmen.

              Zur Aufklärung:
              Mir geht es nicht um Archivierung 'Aller Daten'.
              Der User hat seine eigene Userdaten, deren pflege in seiner eigenen Verantwortung stehen. Diese taste ich schlicht nicht an. Die Versionierung von Textschnippseln, welche die Templateengine verarbeitet, ist Sache des Users.

              Mein CMS soll folgenden Ablauf aber ermöglichen:

              • Während das Web aus einer statischen Seite bedient wird, editiere die neue aktuelle version im Admin-Modus.
                Wenn sie gefällt: publiziere sie als statische Seite und archiviere die bestehende statische Version.
                Damit dieser Schritt wieder Rückgängig gemacht werden kann, brauche ich das Archiv.
                Was ich Archivieren will ist das Ergebnis der Templateengine, sprich die fertigen HTML Ausgaben. keinesfalls einzelne Ressourcen.

              Die Seiten (sprich url Parts) sind erzwungenermassen Unikate. Im Falle der Archvierung genügt ein Timestamp, damit der Name allein eindeutiger Identifikator bleibt.

              Letztlich muss mein CMS von Menschen einfach zu bedienen sein. Ich darf da nicht zu viel Komplexität hinein bauen.

              mfg Beat;

              --
              ><o(((°>           ><o(((°>
                 <°)))o><                     ><o(((°>o
              1. Moimoin.

                Soweit ich dich verstanden habe, wäre Deine Anforderung schlicht mit der Verwendung von Subversion umsetzbar. Ich habe noch nie versucht, die Repositories selbst auszulesen, aber z.B. TRAC tut es...

                Grüße

                1. Es ist noch gar nicht konzeptionell so klar, welchen Weg ich wirklich beschreite.

                  Ich habe gestern einen Versuch mit statischen Seiten erzeugen unternommen, und habe heute realisiert, dass dies mich an eine Scheide führt:

                  • Statische Seiten erfordern keinerlei Statusabhängigen Content
                  • Ich cache Satusabhängige Seitenversionen.

                  Ich weiss noch nicht, welche Auswirkungen das auf die Archivierung haben wird.

                  Na ja... Mit Grund nannte ich das einen Sammelthread.

                  mfg Beat;

                  --
                  ><o(((°>           ><o(((°>
                     <°)))o><                     ><o(((°>o
          2. Wobei noch zu ueberlegen waere, ob das mit dem Datum als Verzeichnisname das cleverste ist.

            Für den ordner 'aktuellste Archivversionen' kann er sicher entfallen.

            Wenn Seite X wieder durch eine vorherige Archiv-Version ersetzt werden soll - muss ich dann als Nutzer noch wissen, wann diese erstellt wurde?

            Nicht wirklich. Ich möchte dem User eigentlich nur zwei Datumsangaben vor Augen führen:
            Das Erstellungs-Datum der aktuellen statischen Seite,
            Das Erstellungsseite der neuesten archivierten Version.

            Sollen dann aufwendig alle Archiv-Verzeichnisse durchsucht werden?

            Gott behüte. Für ältere Archive würde ich am liebsten einfach Dateinamen sortieren. Das geht beim Anhängen vom Datum an den Namen.

            Oder vielleicht doch lieber alle nicht-aktuellen Archivversionen von Seite X in einem Verzeichnis ablegen, dass nach Seite X benannt ist?

            Ja die Redundanz kann ich mir eigentlich sparen, da ein Datum dann im Filenamen angehängt wird.
            Es sind alle Seiten in Ihrem Namen Unikate (wird bei der generierung von seiten erzwungen), so dass ich im Grunde alle Seiten in einem einzigen Ordner 'ältere Archivversionen' behalten könnte.

            Diese älteren Versionen möchte ich dem User erhalten, weil diese ja auch früheste Textschnippsel enthalten. Diese auszusortieren, soll dann aber seine Sorge sein. ich will es ihm einfach grundsätzlich nicht verunmöglichen.

            Mir fällt noch ein:
            Wenn nun die Archivierung ausgeführt wird, was soll geschehen, wenn neuere archivierte und ältere archivierte Version inhaltlich identisch sind (das ist möglich). Mein Empfinden sagt mir, dass die neuere Version entfällt und keine Änderung geschieht.

            PS: endlich den Betreff geändert...

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
        2. Hellihello

          ohne Dir zu nahe treten zu wollen, bekomme ich den Eindruck, dass Du dabei bist, das Rad neu zu erfinden ...; Stichwort "Versionierung" vermutlich. Und auch "Archivierung". Da gibt es sicherlich ein Haufen Konzepte, aus denen einige sich als besonders tauglich hervortun. U.u. geht es ja auch um "Indizierung" und "Filterung", so dass der konkrete Ort der Ablage eigentlich weniger interessant ist, sondern interessanter der Ort ist, an dem alle Ablagen und ihre Ablageorte gelistet und für Filterung etc. vorbereitet sind. Schon allein die Idee, dass es Doppler im Archiv geben könnte, zeugt aus meiner Sicht von einem falschen Ansatz und ggf. mangelnder Recherche (ich entwickele mich ja langsam zum Google-Hasser und zum Frag-ich-mal-im-Forum-Freund, aber bei komplexeren Geschichten kommt man wohl nicht drum rum. Vielleicht kommt es nicht von ungefähr, dass die Jungs vom Zend-Framework zwar in Zukunft ein eigenes CMS nicht ausschließen, sich fürs erste aber anderes vorgenommen haben (;-)).

          Dank und Gruß,

          frankx

          --
          tryin to multitain  - Globus = Planet != Welt
  2. Thema Statische Seiten.

    Das CMS bedient sowohl vorzüglich statischen Content wie auch dynamische Seiten wie Formmailer, Gästebbuch und Newspage.
    Nun sind bei mir Cookie Sessions in Betrieb, und die Frage drängt sich mir auf, wann und wie cache ich Seiten als Statische Seiten, um via .htaccess umzuleiten.

    Gestern machte ich einen ersten versuch, der mir schon mal die problematik des Unterfangens vor Augen führt.
    -- Definiert der Admin einige Seiten als statisch
       - dann wird beim nächsten Reqquest eine statische Seite erzeugt
         und das .htaccessfile beschrieben
       - ist der Request im Zustand als Admin getätigt:
         hat die statische Seite einen Logout Button.

    Mit anderen Worten, mr kommen so blöde Dinge in die Quere, dass Gäste ein Loginformular sehen soll, angemeldete user aber den Logout Button.

    Wie kann ich das umgehen.
    a) Ich erzeuge zweierlei Arten statischen Content (oder 4 8 16 32...).
       Und lasse mod_rewrite am Cookie sniffen, welche Version gefragt ist.
    b) Ich erzeuge nur eine statische version
       und leite nur Gäste auf statische Seiten
       Cookiesniffer erforderlich.
    c) Ich hänge an jede URL für eingeloggte User einen banalen Query,
       um eine Umleitung zu verhindern, Verzicht auf Cookiesniffer.
       In dem Falle gibt es nur Gästeversionen von statischen Seiten.
    d) Ich erzwinge ein anderes Contentmanagement,
       indem ich das Cachen von allen Seiten deaktiviere,
       welche Statusabhängige Information enthalten.

    Am Cookiesniffer missfällt mir, dass das CMS auf unbekannten Apache Versionen laufen soll. Ich habe da schon unliebsame Erfahrung gemacht mit regulären Ausdrücken.

    Die Version mit dem Query-Zusatz erscheint mir als ein verlässlicherer Indikator.

    Ich habe noch andere Ideen, welche das Cachen von Seiten als statische Seiten extrem komplizieren können.
    Auf der Traktandenliste steht etwa, dass man auch als Gast Layouts und Themes ändern soll. Themes bedeuten CSS Files. Dies allein wäre noch mit <link rel=alternate> bzw JS Einsatz machbar. Aber der Wechsel eines Layouts tangiert dann die HTML Grundlage. Ich bin mir aber nicht sicher, ob ich wirklich mehrere Layouts zu Demozwecken anbieten will.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o