Archivo Explosivo month: Februar - 2015
Constructr CMS V1.04.4

ConstructrCMS – Pinky und der Brain

Wie überall, gibt es in ConstructrCMS auch eine Pinky und der Brain Situation… Der Inhalt des Array’s $_CONSTRUCTR_CONF stellt Brain dar. Dieses Array wird durch das Beschreiben der Konfigurationsdatei unter ./Config/constructr.conf.php während der Installation mit entsprechenden Werten gefüllt. Eine Übersicht der eingetragenen Werte erhält man im ConstructrCMS-Backend über die Ansicht Dashboard -> System(administration). Die Werte können dort nicht direkt bearbeitet werden – hierfür muss ein Editor auf FTP-Ebene benutzt werden. Dabei sollte vorsichtig und vor allem mit Verstand gehandelt werden.

Die gesammelten Einträge der Beispiel Constructr-CMS-Konfiguration:


 'localhost', 
'_CONSTRUCTR_DATABASE_NAME' => 'XXXXXXXXXX', 
'_CONSTRUCTR_DATABASE_USER' => 'XXXXXXXXXX', 
'_CONSTRUCTR_DATABASE_PASSWORD' => 'XXXXXXXXXX', 
'_BASE_URL' => 'http://XXXXXXXXXX', 
'_SESSION_CYPHER_METHOD' => MCRYPT_MODE_CBC, 
'_SALT' => 'XXXXXXXXXX', 
'_SECRET' => 'XXXXXXXXXX', 
'_CONSTRUCTR_COOKIE_LIFETIME' => '24 Hour', 
'_LOGGING' => true, 
'_TITLE' => 'CONSTRUCTR CMS', 
'_CONSTRUCTR_CONTACT_MAIL' => 'XXXXXXXXXX@gmail.com', 
'_TEMPLATES_DIR' => './Website-Template', 
'_CONSTRUCTR_BACKEND' => './Constructr', 
'_CONSTRUCTR_LOGFILES_PATH' => './Logfiles', 
'_CONSTRUCTR_LOG_ENABLED' => true, 
'_CONSTRUCTR_MODE' => 'production', 
'_CONSTRUCTR_DEBUG_MODE' => false, 
'_CONSTRUCTR_SESSION_NAME' => 'constructr', 
'_MEDIA_BASE_TITLE' => 'Media base title', 
'_MEDIA_BASE_COPYRIGHT' => 'Media Base copyright', 
'_MEDIA_BASE_DESCRIPTION' => 'Media base description', 
'_MEDIA_BASE_KEYWORDS' => 'Media base keywords', 
'_RESET_LOGIN_PASSWORD' => false, 
'_MAX_LOGIN_ATTEMPTS' => 5, 
'_LOGIN_BLOCKED_FOR' => 600, 
'_CREATE_STATIC' => true, 
'_STATIC_FILETYPE' => '.html', 
'_STATIC_DIR' => './Static', 
'_CREATE_STATIC_DOMAIN' => 'http://XXXXXXXXXX', 
'_CREATE_DYNAMIC_DOMAIN' => 'http://XXXXXXXXXX', 
'_MAGIC_GENERATION_KEY' => 'XXXXXXXXXX', 
'_TRANSFER_STATIC' => true, 
'_FTP_REMOTE_HOST' => 'XXXXXXXXXX.org', 
'_FTP_REMOTE_PORT' => 21, 
'_FTP_REMOTE_DIR' => '', 
'_FTP_REMOTE_MODE' => FTP_BINARY, 
'_FTP_REMOTE_USERNAME' => 'XXXXXXXXXX', 
'_FTP_REMOTE_PASSWORD' => 'XXXXXXXXXX', 
'_ENABLE_CONTENT_HISTORY' => false, 
'_CONSTRUCTR_WEBSITE_CACHE' => false, 
'_CONSTRUCTR_WEBSITE_CACHE_DIR' => './Website-Cache/'
);

Die ersten vier Zeilen gehören den Datenbank-Parametern Datenbank-Host, Datenbank-Name und Benutzer und Passwort:

  • _CONSTRUCTR_DATABASE_HOST
  • _CONSTRUCTR_DATABASE_NAME
  • _CONSTRUCTR_DATABASE_USER
  • _CONSTRUCTR_DATABASE_PASSWORD

Die Reihenfolge ist übrigens egal – falls die Datei mal von Hand bearbeitet werden möchte – wichtig ist nur die richtige Schreibweise in einem PHP-Array mit Key/Value-Paaren und das die Werte überhaupt vorkommen. Vor der manuellen Bearbeitung also lieber eine Sicherung per FTP herunterladen und gut sichern.

Nach der Datenbank, folgt der wichtigste Eintrag:

  • _BASE_URL

Ohne die Basis-URL der Installation läuft nix, nada, njente… weder im Backend, noch im Frontend (das gilt nicht für statisch übertragene Seiten). Dieser Wert, wird während der Installation vom ConstructrCMS-Webinstaller automatisch bestimmt und übernommen. Interessant wird dieser Wert nach eine Anpassung in der Domainstruktur auf dem Webserver – zum Beispiel nach einem Wechsel der Domain, oder einem Domainumzug. Dieser Wert sollte immer die aktuelle Webadresse wiederspiegeln, unter der die dynamisch erzeugten Internetseiten von ConstructrCMS zu erreichen sind.

Nach der Base-URL folgen ein paar Werte die für das System interessant sind:

  • _SESSION_CYPHER_METHOD
  • _SALT
  • _SECRET
  • _CONSTRUCTR_COOKIE_LIFETIME
  • _LOGGING

_SESSION_CYPHER_METHOD – Die entsprechende Verschlüsselung, die für Session-Cookies benutzt wird. _SALT entspricht dem Wert, mit dem die Benutzer-Passwörter in der Datenbank und in ConstructrCMS verschlüsselt werden. _SECRET ist das Salz in der Suppe für verschlüsselte Session-Cookies innerhalb des Frameworks auf dem ConstructrCMS basiert. ACHTUNG: Nach der manuellen Änderung der Werte für _SALT oder _SECRET, müssen die Passwörter für alle Benutzer zurückgesetzt und neu vergeben werden – (Eintrag: _RESET_LOGIN_PASSWORD). _LOGGING – Log, oder kein Log von Fehlern im Backend von ConstructrCMS?

  • _TITLE

_TITLE, entspricht dem Wert für das entsprechende HTML-Attribut im Backend von ConstructrCMS – ich sage nur White-Labeling für Kunden.

  • _CONSTRUCTR_CONTACT_MAIL

An die hinterlegte eMail-Adresse beim Wert _CONSTRUCTR_CONTACT_MAIL werden eMails vom ConstructrCMS-Postmaster gesendet – die eingebaute Formularverarbeitung für Kontakt-Formulare auf den Internetseiten die mit ConstructrCMS erstellt wurden.

  • _TEMPLATES_DIR
  • _CONSTRUCTR_BACKEND
  • _CONSTRUCTR_LOGFILES_PATH
  • _STATIC_DIR
  • _CONSTRUCTR_WEBSITE_CACHE_DIR

Es folgen Einträge für das Template-Verzeichnis, das Backend von ConstructrCMS, das Verzeichnis in dem Logfiles gespeichert werden, das Verzeichnis, in welches der Output der statischen Seitengenerierung geschrieben werden soll und das Verzeichnis für den Cache der Internetseiten beim Output von dynamischen Internetseiten.

  • _CONSTRUCTR_LOG_ENABLED

Mit diesem Eintrag wird jede Aktion im Backend entweder in den entsprechenden Logfiles aufgezeichnet, oder auch nicht (true/false).

  • _CONSTRUCTR_MODE

Es gibt zwei verschiedene Modes für den Betrieb von ConstructrCMS: ‚development‘ und ‚production‘. Development eignet sich für die Produktion und Erstellung der Internetseiten – Production sollte auf jeden Fall eingestellt werden, wenn die Seiten Live geschaltet werden. Dadurch werden Fehlermeldungen von PHP, ConstructrCMS und dem PHP-Framework so weit es geht stumm geschaltet.

  • _CONSTRUCTR_DEBUG_MODE

Hilfreich für die Entwicklung der Templates und Formularfunktionen in ConstructrCMS – durch den Debug-Modus werden einem auch im Frontend weitere hilfreiche Informationen angezeigt.

  • _CONSTRUCTR_SESSION_NAME

Dies ist der Name der Session im Backend des ConsctructrCMS.

  • _MEDIA_BASE_TITLE
  • _MEDIA_BASE_COPYRIGHT
  • _MEDIA_BASE_DESCRIPTION
  • _MEDIA_BASE_KEYWORDS

Die_MEDIA_* Einträge sind interessant für das Einbinden von hochgeladenen Bildern in die Internetseiten. Dies sind Informationen die als generelle Einstellung hinterlegt werden kann – für jedes einzelne hochgeladene Bild im Backend, kann man diese Informationen in der Detailansicht bearbeiten und für jedes Medium spezifisch einstellen. Diese Werte werden im Frontend in -Tag’s in den entsprechenden data-Attributen ausgegeben.

  • _RESET_LOGIN_PASSWORD

Mit diesem Wert kann der Login-Mechanismus ausgeschaltet werden. Stattdessen wird beim Aufruf der Login-Seite für jeden im Backend angelegten Benutzer ein neue Passwort generiert und per eMail an das entsprechende eMail-Account aus dem Benutzerkonto gesendet.

  • _MAX_LOGIN_ATTEMPTS
  • _LOGIN_BLOCKED_FOR

Dies sind die Einstellungen für den eigentlichen Login-Vorgang in ConstructrCMS. Wie viele fehlerhafte Login-Versuche darf ein Benutzer haben (_MAX_LOGIN_ATTEMPTS), bevor das Benutzer-Konto für die Zeit von X-Sekunden gesperrt wird (_LOGIN_BLOCKED_FOR)?

  • _CREATE_STATIC
  • _STATIC_FILETYPE
  • _CREATE_STATIC_DOMAIN
  • _TRANSFER_STATIC
  • _CREATE_DYNAMIC_DOMAIN
  • _MAGIC_GENERATION_KEY

Es folgen Einträge für die Produktion von statischen Internetseiten durch ConstructrCMS. Über den Eintrag _CREATE_STATIC_DOMAIN kann die Domain hinterlegt werden, für welche die statischen Seiten produziert werden. Entsprechend über _CREATE_DYNAMIC_DOMAIN der Wert für die dynamischen Internetseiten.

_CREATE_STATIC steuert, ob überhaupt die Möglichkeit für die Produktion von statischen Internetseiten durch ConstructrCMS geboten werden soll. Mit dem Wert für _STATIC_FILETYPE kann ein gewünschter Dateityp erzwungen werden – zum Beispiel .php, .html, … Der _MAGIC_GENERATION_KEY wird für das Auslesen der Seitenstruktur im Frontend für die Produktion der statischen Internetseiten benötigt. Der Wert von _TRANSFER_STATIC regelt die Möglichkeit, ob die statischen Internetseiten auch direkt per FTP auf die entsprechende Domain übertragen werden sollen. Dafür werden die folgenden Einträge benötigt:

  • _FTP_REMOTE_HOST
  • _FTP_REMOTE_PORT
  • _FTP_REMOTE_DIR
  • _FTP_REMOTE_MODE
  • _FTP_REMOTE_USERNAME
  • _FTP_REMOTE_PASSWORD

Die Daten für den FTP-Transfer der statischen Internetseiten.

  • _ENABLE_CONTENT_HISTORY
  • _CONSTRUCTR_WEBSITE_CACHE

_ENABLE_CONTENT_HISTORY bietet die Möglichkeit aus Seiten gelöschte Inhalte in einen speziellen Mülleimer der entsprechenden Seite zu verschieben, anstatt diese direkt vollständig zu löschen. Inhalte können aus diesen Mülleimern auch wiederhergestellt werden.

_CONSTRUCTR_WEBSITE_CACHE regelt das Bereithalten von statischen Cache-Dateien für die Internetseiten bei eingestelltem dynamischen Internetseiten über ConstructrCMS.

Das war es auch schon – das Gehirn von ConstructrCMS.

ConstructrCMS Webinstaller

ConstructrCMS Installation

Durch den mitgelieferten webbasierenden Installer sollte eine Installation von Constructr CMS keine große Hürde darstellen. Es gibt zwei einfache Möglichkeiten für die Installation: via FTP, oder mit Hilfe von Composer. Dieser Beitrag wird die übliche Installation via FTP erläutern.

Gehe zuerst auf die GitHub-Seite von Constructr CMS – dort gibt es den Download als ZIP-Paket. Dieses ZIP-Paket einfach lokal speichern – entpacken und dann mit der FTP-Software des Vertrauens (CyberDuck für Mac, FileZilla für Windows, …) auf den Webspeicherplatz übertragen. Grundsätzlich gilt: Man sollte den kompletten entpackten Ordner „Constructr-master“ übertragen, weil die meisten Betriebssysteme versteckte Dateien ausblenden (z.B. .htaccess) – diese würden sonst auf dem Webserver fehlen und die Ausführung von ConstructrCMS unmöglich machen. Selbstverständlich darf das Verzeichnis vor der Übertragen umbenannt werden.

Ist das gesamte Paket von ConstructrCMS per FTP auf den Webserver übertragen, kann der Webinstaller aufgerufen werden. Der Webinstaller ist in dem Verzeichnis http://domain.tld/Installationsverzeichnis-von-Constructr-CMS/CONSTRUCTR-CMS-SETUP/index.php erreichbar. Vor der Installation muss noch eine MySQL-Datenbank via Hoster, oder entsprechenden Tools angelegt werden.

Wie man es von der Installation von anderen Content Management Systemen gewohnt ist, werden dort ein paar Informationen abgefragt, die für die Installation benötigt werden.

  • Datenbank-Host: Wie lautet die Server-Adresse auf der der Datenbank-Server erreichbar ist? Meistens reicht dort schon ein „localhost“.
  • Datenbank-Name: Wie lautet der Name der Datenbank, in der ConstructrCMS installiert werden soll?
  • Datenbank-Benutzer und Datenbank-Passwort: Die Benutzerdaten für den Datenbank-Server.
  • Basis-URL: Dies ist die Webadresse, unter der das CMS nach der Installation mit dem Browser erreichbar sein wird. Standardmäßig wird dieser Wert automatisch durch den Webinstaller ermittelt und ausgefüllt.
  • Administrator-Benutzername: Wie soll der Benutzer lauten, der sich in das Constructr-CMS-Backend einloggen darf?
  • Administrator-Passwort: Wie soll das Passwort für den Zugriff auf das Backend lauten?
  • Administrator-eMail: An welche eMail-Adresse sollen die Informationen für das Login gesendet werden (2-Faktor-Authentifizierung – an diese eMail-Adresse werden die Sicherheits-Codes gesendet)?

Wenn alle Informationen zusammengetragen sind, genügt ein Klick mit der Maus auf den Button „Constructr-CMS installieren“. Durch den Klick wird die Datenbank mit allen nötigen Tabellen und Benutzerdaten gefüllt. Die Konfigurations-Datei von ConstructrCMS wird geschrieben – die Installation wird also durchgeführt.

Sollte es Probleme geben – zum Beispiel wegen einem Buchstabendreher in den Datenbank-Daten, werden entsprechende Hinweise ausgegeben. Ist die Installation ohne Fehler durchgelaufen, wird einem dies angezeigt:

  • 1) Konfigurationsdatei wurde geschrieben…
  • 2) Datenbank wurde eingerichtet – Sie können sich nun anmelden: Constructr CMS Login

Über den Link in der zweiten Meldung gelangt man zum Backend-Login für das gerade installierte CMS und kann loslegen… nach der Eingabe der gerade gewählten Benutzerdaten und einem Klick auf den Login-Button gelangt man zu Abfrage des Sicherheits-Codes – dieser wurde an die gewählte eMail-Adresse gesendet. Nach Eingabe des Sicherheits-Codes, kann es nun aber wirklich losgehen.

Das Verzeichnis CONSTRUCTR-CMS-SETUP sollte nach erfolgreicher Installation per FTP aus der Verzeichnisstruktur entfernt werden – zumindest sollten dem Verzeichnis per CHMOD alle Rechte entzogen werden.

Cat's - Master of the Internet

Beautiful free stock photos

Katzenbilder mit einer Creative Commons Lizenz – in absolut tauglicher Druckauflösung – gibt es bei StockSnap.io

Katzenbild von Hannu-Pekka Peuranen.

Permalink
19. Februar 2015
Allgemeinphaziz
Constructr CMS V1.04.4

Constructr Version 1.04.4 ist da

ConstructrCMS (http://constructr-cms.org) based on Slim-PHP5-Framework, Twitter Bootstrap, MySQL/PDO, jQuery/Javascript and Passion!

That’s it for now (Version 1.04.4 / 2015-02-17):

  • Page-Management
  • Create, edit, re-order/order, delete Pages
  • Page specific CSS- and JS-Content
  • Automatic sitemap.xml generation
  • Content-Management
  • Create, edit, re-order/order, delete, recover Content-Elements
  • Content-Element History
  • Template-Management
  • EASY PHP-Templates
  • Create, edit, delete a Template-File
  • Asset-Management (Uploads)
  • Upload, edit, delete, recover Uploads
  • Media information (Title, Copyright, Description, Keywords)
  • 2 Factor Authentication-Login (2FA)
  • User Management
  • Create, edit, delete, active/de-activate User-Accounts
  • User Rights-Management
  • User Password resetting via CONSTRUCTR_CONF-Option for all User-Accounts
  • Generate a dynamic Website
  • Generating Domain specific static Websites
  • Included FTP-Transfer of your Website to your Domain
  • Full-Stack backend Searchengine
  • Constructr-Postmaster for Contact-Form-Handling on your Website
  • File based Website-Caching
  • Easy Plugin-System (beta feature)

Download via GitHub

Constructr CMS V. 1.04.3

Constructr CMS
ConstructrCMS (http://constructr-cms.org) based on Slim-PHP5-Framework, Twitter Bootstrap, MySQL/PDO, jQuery/Javascript and Passion!

That’s it for now (Version 1.04.3 / 2015-02-11):

– C.R.U.D. Pages
– Page specific CSS- and JS-Content
– Automatic sitemap.xml generation
– C.R.U.D. Content-Elements
– Content Trashcan and Recovery
– C.R.U.D. Uploads
– Media information (Title, Copyright, Description, Keywords)
– Media Trashcan and Recovery
– 2 Factor Authentication-Login (2FA)
– User Management
– User Rights-Management
– User Password resetting via CONSTRUCTR_CONF-Option for all User-Accounts
– Generating dynamic Websites
– Generating Domain specific static Websites
– FTP-Transfer of static Sites to Frontend-Domain
– Backend Searchengine
– Constructr-Postmaster for Contact-Form-Handling in Frontend
– File based Website-Caching
– Easy Plugin-System (beta feature)
CHANGELOG

– 2015-02-11
– New Feature: Page specific CSS/JS-Content
– Bugfixes
– CleanUp
– Assets Updates

http://spiel.phaziz.com/

Javascript Spiel „Zahlenpaare suchen“

Repository: https://github.com/phaziz/MathingNumbersGame
Demo: http://spiel.phaziz.com

Ich wünsche viel Vergnügen beim Spiel!

Permalink
8. Februar 2015
CSSGitHubHTML5JavascriptProgrammierung
Birdman oder (Die unverhoffte Macht der Ahnungslosigkeit)

Birdman

Birdman ist ein sehr empfehlenswerter Film und das Lichtburg Kino in Oberhausen ein sehr empfehlenswertes Kino.

Birdman auf Wikipedia.

Permalink
7. Februar 2015
Ausflugstipps
Parkleuchten-Gruga-Essen

Parkleuchten im Grugapark Essen 2015

Es ist wieder soweit, von Freitag dem 6.2.15 bis Sonntag 15.3.2015 erstrahlt der Grugapark wieder in bunten Lichtern und kunstvollen Installationen – Jedes Jahr wieder sehr zu empfehlen!

PHP PDO

PDO in Slim

Schreibt doch keiner mehr pures MySQL mit den entsprechenden PHP-Funktionen… Deshalb eine Anbindung im PHP PDO Style in Slim:

In der index.php im Root-Level wird PDO eingebunden und instanziert:



    $HOSTNAME = "DATENBANK_HOST";
    $DATABASE = "DATENBANK";
    $USERNAME = "BENUTZERNAME";
    $PASSWORD = "PASSWORD";

    try
    {
        $DBCON = new PDO("mysql:host=" . $HOSTNAME . ";dbname=" . $DATABASE,$USERNAME,$PASSWORD,
            array
            (
                PDO::ATTR_PERSISTENT => true
            )
        );

        $DBCON -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    }
    catch (PDOException $e)
    {
        die();
    }

Danach kann PDO in den gewünschten Routen benutzt werden:


    ...
    try {
        $ORDERS = $DBCON -> prepare('SELECT * FROM ...;');
        $ORDERS -> execute();
    } catch (PDOException $e) {
        echo $e -> getMessage();
        die();
    }
Idiorm & Paris

Slim Framework und Datenbanken

Wie wahrscheinlich bei jedem andern Framework, gibt es auch bei Slim mehrere Möglichkeiten eine Datenbankanbindung herzustellen.

Natives SQL, Anbindung per PDO, oder eine Anbindung durch ein ORM der Wahl. Wenn es um ORMs geht, kann ich nur eine Empfehlung für die Kombination Idiorm & Paris von Jamie Matthews aussprechen. Wobei Idiorm die Rolle des objekt-relationalen-Mapping’s und Query-Builder’s übernimmt und Paris das „Active Record“-Pattern implementiert. Beide sehr klein und äußerst flink ;-)

Um dieses dynamische Duo mit Slim zu verbinden, müssen die entsprechenden Dateien von Paris & Idiorm heruntergeladen werden und in der Verzeichnisstruktur des Projekts abgelegt werden. In der Index-Datei des Projekts können diese Klassen dann inkludiert und konfiguriert werden:


    ...
    require 'Helper/idiorm.php';
    require 'Helper/paris.php';
    ...

    ORM::configure('mysql:host=MEIN_DATENBANK_HOST;dbname=MEINE_DATENBANK');
    ORM::configure('username','BENUTZERNAME');
    ORM::configure('password','PASSSWORT');
    ORM::configure('logging','false');

    // Primärschlüssel der eingebundenen Tabellen definieren
    ORM::configure('id_column_overrides', array
        (
            'logs' => 'lg_id',
            'tabelle2' => 'primary_id2',
            ...
        )
    );
    ...

Wenn dies ohne Fehlermeldungen im Browser abgeschlossen ist, kann man das Duo in den gewünschten Routen verwenden und seine Abfragen damit gestalten:


    ...
    $LOG = Model::factory('Logs')->create();
    if($LOG instanceof Logs){
        $LOG -> log_timestamp = date('Y-m-d H:i:s');
        $LOG -> log_user_id = $_USERID;
        $LOG -> log_username = $_USERNAME;
        $LOG -> log_txt = 'Logging...';
        $LOG->save();
    }
    ...

Paris und Idiorm auf GitHub.

1 2