Eigenes CMS

Mit der Abhängigkeit von populären Content-Management-Systemen wie Wordpress oder Typo3, gehen auch Nachteile mit einher, sodass die Entwicklung eines eigenen CMS seit Anfang 2018 abgeschlossen ist

CMS - Dashboard

Dashboard mit Statusanzeige

Das Dashboard meines Content-Management-Systems ist der Einstieg in das Backend und liefert erste Statusanzeigen

CMS - Userverwaltung

Benutzerverwaltung für User

Die standardmäßigen Benutzer sind die Registrierten und die Administratoren. Individuelle Benutzer-Gruppen können jederzeit implementiert werden

CMS - Buchhaltung

Verwaltung von Buchungen

Unter Buchhaltung finden Anwender ein Tool zur Verwaltung und Bilanzierung eigener Buchungen, wie z. B. der gewerblichen Ein- und Ausgaben


Code-Beispiele

Programmcode-Beispiele meiner aktuellen CMS-Entwicklung finden sie rechts den entsprechenden Technologien/Sprachen aufgeführt
CMS - Backend

SASS, PHP, MySQL

Einige Beispiele meiner CMS-Programmierung des SASS-, PHP- und MySQL-Codes

.table {
    margin-bottom: 0;

    &.accounting,
    &.consumption {
        th {
            font-weight: bold;
            font-size: .7rem;
            text-align: right;

            &.transparent {
                background: transparent;
                border: 0;
                text-align: left;
            }
        }
        th,
        td {
            background: #eaf5ff;
            color: #416d94;
            white-space: nowrap;

            &.sum_right {
                background: #fff5e8;
                font-weight: bold;
                color: #bd8031;

                &.sum {
                    font-size: .8rem;
                }
            }
            &.rotate {
                height: 60px;
                white-space: nowrap;

                > div {
                    transform: translate(0px, 20px) rotate(310deg);
                    text-align: left;
                    width: 0;
                    margin: 0 auto;
                }
            }
            .text-danger,
            .text-success {
                font-weight: bold;
            }
            .income {
                color: #00a700;
                font-weight: 500;
            }
            &.income_right {
                background: #e1ffe1;
                font-weight: bold;
                color: #00a700;

                &.sum {
                    font-size: .8rem;
                }
            }
            &.avg_right {
                background: #eaf5ff;
                color: #2f516d;
                font-weight: bold;

                &.avg {
                    font-size: .8rem;
                }
            }
            &.all_right {
                font-weight: bold;
                color: #337ab7;

                &.sum {
                    font-size: .8rem;
                }
            }
        }
        tr,
        td {
            padding: 2px 8px;
            font-size: 0.65rem;

            &.avg_right {
                td {
                    background: #d4ebff;
                    color: #2f516d;
                    font-weight: bold;
                }
            }
        }
        td,
        input {
            text-align: right;

            -left {
                text-align: left;
            }
        }
        ul {
            &.nav-pills-primary {
                background: #f9f9f9;
                border: 1px solid #f1f1f1;
            }
        }
    }
}
require_once '../import/globe.php';

$databases = new Databases();
$header = $databases->getHeader();

if(isset($_GET['id'])){
    $isUpdate = true;
    $id = $_GET['id'];
    if(isset($_POST['save'])){
        $names = $_POST['names'];
        $url = $_POST['url'];
        $content = $_POST['content'];
        $header_id = $_POST['header_id'];
        $title = $_POST['title'];
        $description = $_POST['description'];
        $database->savePage($id, $names, $url, $content, $header_id, $title, $description);
    }
    if(isset($_POST['preview'])){
        $_SESSION['preview_content'] = $_POST['content'];
        $_SESSION['preview_header_id'] = $_POST['header_id'];
    }
    $page = $database->getPage($id);
    $content = $page['content'];
    if(isset($_POST['deletet'])){
        $database->deletePage($id);
        header("Location: site-landing.php");
    }
    if(isset($_POST['restore'])){
        $database->restorePage($id);
        header("Location: site-landing.php");
    }
}
else{
    $page['header_id'] = null;
    $content = '';
    $isUpdate = false;
    if(isset($_POST['save'])){
        $names = $_POST['names'];
        $url = $_POST['url'];
        $content = $_POST['content'];
        $header_id = $_POST['header_id'];
        $title = $_POST['title'];
        $description = $_POST['description'];
        $id = $database->saveNewPage($names, $url, $content, $header_id, $title, $description);
        header("Location: site-landing.php");
    }
    if(isset($_POST['preview'])){
        $_SESSION['preview_content'] = $_POST['content'];
        $_SESSION['preview_header_id'] = $_POST['header_id'];
    }
}
require_once '../import/head.php';
include("head-administrator.php");
class Path {
    public static function getRootPath(){
        if(ENVIRONMENT === 'live') {
            return '/';
        } else {
            return '/weblokal/';
        }
    }
    public static function getStylesPath(){
        return self::getRootPath().'includes/styles/';
    }
    public static function getJscriptPath(){
        return self::getRootPath().'includes/jscript/';
    }
    public static function getIncImgPath(){
        return self::getRootPath().'includes/images/';
    }
    public static function getIncludesPath(){
        return self::getRootPath().'includes/';
    }
    public static function getAdministratorPath(){
        return self::getRootPath().'administrator/';
    }
    public static function getImagePath(){
        return self::getRootPath().'image/';
    }
    public static function getBloggerPath(){
        return self::getRootPath().'blogger/';
    }
}
public function getDbh(): PDO
    {
        return $this->dbh;
    }

    /**
     * @param PDO $dbh
     */
    public function setDbh(PDO $dbhead)
    {
        $this->dbhead = $dbhead;
    }

    public function getPagesOn()
    {
        return $this->dbhead->query('SELECT * from pageOn WHERE deleted != 1');
    }

    public function getPagesOnDelete()
    {
        return $this->dbhead->query('SELECT * from pageOn WHERE deleted = 1');
    }

    public function getPageOn($id)
    {
        $sth = $this->dbhead->prepare('SELECT * from pageOn WHERE id=:id');
        $sth->bindParam(':id', $id, PDO::PARAM_INT);
        $sth->execute();
        return $sth->fetch(PDO::FETCH_ASSOC);
    }

    public function savePageOn($id, $names, $url, $content, $header_id, $title, $description)
    {
        $sth = $this->dbhead->prepare('UPDATE pageOn
        SET names=:names, url=:url, content=:content, header_id=:header_id, title=:title, description=:description
        WHERE id=:id');
        $sth->bindParam(':id', $id, PDO::PARAM_INT);
        $sth->bindParam(':names', $names, PDO::PARAM_STR);
        $sth->bindParam(':url', $url, PDO::PARAM_STR);
        $sth->bindParam(':content', $content, PDO::PARAM_STR);
        $sth->bindParam(':header_id', $header_id, PDO::PARAM_INT);
        $sth->bindParam(':title', $title, PDO::PARAM_STR);
        $sth->bindParam(':description', $description, PDO::PARAM_STR);
        $sth->execute();
    }

    public function getPageOnByUrl($url)
    {
        $sth = $this->dbhead->prepare('SELECT * from pageOn WHERE url=:url AND deleted != 1');
        $sth->bindParam(':url', $url, PDO::PARAM_STR);
        $sth->execute();
        return $sth->fetch(PDO::FETCH_ASSOC);
    }

    public function deletePageOn($id)
    {
        $sth = $this->dbhead->prepare('UPDATE pageOn SET deleted=1 WHERE id=:id');
        $sth->bindParam(':id', $id, PDO::PARAM_INT);
        $sth->execute();
    }

    public function restorePageOn($id)
    {
        $sth = $this->dbhead->prepare('UPDATE pageOn SET deleted=0 WHERE id=:id');
        $sth->bindParam(':id', $id, PDO::PARAM_INT);
        $sth->execute();
    }

    public function saveNewPageOn($names, $url, $content, $header_id, $title, $description)
    {
        $sth = $this->dbhead->prepare('
        INSERT INTO page (names, url, content, header_id, title, description)
        VALUES (:name, :url, :content, :header_id, :title, :description)');
        $sth->bindParam(':names', $names, PDO::PARAM_STR);
        $sth->bindParam(':url', $url, PDO::PARAM_STR);
        $sth->bindParam(':content', $content, PDO::PARAM_STR);
        $sth->bindParam(':header_id', $header_id, PDO::PARAM_INT);
        $sth->bindParam(':title', $title, PDO::PARAM_STR);
        $sth->bindParam(':description', $description, PDO::PARAM_STR);
        $result = $sth->execute();
        if ($result) {
            $id = $this->dbhead->lastInsertId();
            return $id;
        }
    }

    public function getLastSitesOn()
    {
        return $this->dbh->query('
        SELECT names, url, created, id
        from pageOn
        ORDER BY created DESC
        LIMIT 1');
    }

    public function getEmptySeoPageon()
    {
        return $this->dbhead->query('
        SELECT names, title, description, id
        from pageOn
        WHERE title IS NULL or title = "" or description IS NULL or description = ""
        ');
    }

Entwicklungs-Anspruch

Standardkonformer Programmcode ist der optimiale Anspruch eines jeden Entwicklers, um professionelle Anwendungen zu entwickeln, bzw. weiterzuenmtwickeln
phone_iphone

1. Responsive Webdesign

Meine Webportale sind spätestens seit dem Google Update Anfang 2016 durchgehend für mobile Endgeräte optimiert, bzw. auf Endgeräte-Typen angepasst

crop_free

2. Objektorientierung

Meine aktuellen Entwicklungen sind objektorientiert aufgebaut, was den aktuellen Web-Standards entspricht und für nachhaltige Wartbarkeit garantiert

dashboard

3. Modularität

Um komplexe Funktionalitäten realisieren zu können, sind meine Tools modular aufgebaut, was Updates, Erweiterung oder Neuimplemenierung vereinfacht