Widget Storm Tutorial

Seit 2008 — Ein anderer Weg im Web

v4.0 Seit 2008 Open Source Widgets

Was ist ein Widget?

Ein Widget besteht aus drei Schichten — PHP, CSS und JavaScript — die zusammen eine unabhängige, wiederverwendbare Webkomponente bilden.

Bei Widget-Storm ist alles ein Widget. Ein Button? Widget. Eine Navigationsleiste? Widget. Diese ganze Seite? Zusammengesetzt aus Widgets. Jedes Widget hat drei Dateien:

PHP
<section id="basic<?= $wgguid;?>" class="widgetstormlayer">
    <header><?= $wgparams->headercontent;?></header>
    <article><?= $wgparams->articlecontent;?></article>
    <footer><?= $wgparams->footercontent;?></footer>
</section>
PHP — Die serverseitige Struktur des Widgets
CSS
section#basic/*<?= $wgguid;?>*/{
    /*<?php
    if(isset($wgparams->layercss)) echo $wgparams->layercss;
    ?>*/
}
CSS — Dynamisches Design mit PHP-Bridge
JS
jQuery('body').on('click', '.widgetstormlayer', function(){
    // Widget-Logik: AJAX-Laden, Animationen, Events
    // Delegierte Handler fangen alle Instanzen auf
});
JavaScript — Client-seitige Interaktion

Das Besondere: Die CSS-Datei kann PHP enthalten! Die /*<?php ?>*/ Bridge erlaubt es, CSS dynamisch zu generieren — pro Widget-Instanz eigene Styles. Das folgende Widget demonstriert das live. Klicken Sie darauf:

Das Basis-Widget
Klicken Sie auf dieses Widget — es zeigt seine drei Schichten (PHP, CSS, JS), lädt sich selbst rekursiv nach, und demonstriert das Prinzip der unendlichen Komposition.
Klicken Sie auf das Widget um mehr zu erfahren.

Drei Ebenen tief, dann Unendlichkeit. Jede Ebene ist ein vollständiges Widget — mit eigenem PHP, CSS und JavaScript — live nachgeladen über wgclient.php.

Wie funktioniert das System?

Der Weg vom Entwickler zur User-Website — und zurück.

📝
Developer
PHP + CSS + JS
📤
wghandler
Upload & Encrypt
🗄
Server
DB + CodeVault
🌐
User-Website
Rendered Widget
🔗
wgclient
CSS | JS | PHP
Render
evaleval() führt hier den Widget-Code aus, der von authentifizierten Autoren in der Datenbank hinterlegt wurde. Kein User-Input erreicht eval() — es ist die Engine hinter der PHP-in-CSS Bridge und der dynamischen Widget-Komposition. + compose

Der Entwickler erstellt drei Dateien (PHP, CSS, JS) und lädt sie über den wghandler verschlüsselt auf den Server. Der Server speichert sie in der Datenbank. Nutzer binden Widgets über ihren wgclient ein — eine personalisierte PHP-Datei, die als Brücke zwischen ihrer Website und dem Widget-Storm System dient. Beim ersten Abruf wird der Widget-Code im CodeVault (wgbuilds/) lokal gespeichert — danach werden Widgets direkt vom Dateisystem geladen, ohne Netzwerk-Roundtrip. Das macht die Auslieferung extrem schnell und unabhängig vom zentralen Server.

Als Nutzer binden Sie Widgets über drei einfache Links ein:

CSS laden
<link rel="stylesheet" href="wgclient.php?wgname=basic&wgmode=css&wgparams=...">
JavaScript laden
<script src="wgclient.php?wgname=basic&wgmode=js&wgparams=..."></script>
PHP einbinden
<?php include "wgclient.php"; $wg->get("basic", "WidgetStormSystem", $params, "php"); ?>

Das System lädt jede Schicht separat: CSS für das Design, JS für die Interaktion, PHP für die Struktur.

Als Entwickler erstellen Sie drei Dateien und laden sie hoch:

Drei-Dateien-Pattern
mein_widget.php — Serverseitige Logik & HTML
mein_widget.css — Design (mit PHP-Bridge)
mein_widget.js — Client-Interaktion

Der wghandler verschlüsselt die Dateien (AES-256-CBC oder RIJNDAEL-256) und lädt sie auf den Server. Die ##wgstart##name::author::params##wgend## Marker ermöglichen Verschachtelung: Widgets laden Widgets.

Rendering-Kontrolle: Sie entscheiden, ob Widgets lokal aus dem CodeVault gerendert werden (Standard — schnellste Option) oder live vom Server abgerufen werden sollen. Im Batch-Modus können Sie alle Widgets aus Ihrem lokalen wgbuilds/-Verzeichnis synchronisieren — dabei werden nur Ihre eigenen Widgets verarbeitet.

Für Nutzer: Widgets einbinden

In fünf Schritten von der Registrierung zum fertigen Widget auf Ihrer Website.

1
Registrieren
Öffnen Sie die Widget-Storm Station und erstellen Sie ein Konto. Sie erhalten einen persönlichen Schlüssel.
2
Anmelden
Loggen Sie sich in der Station ein. Dort finden Sie Ihren Dashboard-Bereich mit allen Tools.
3
wgclient herunterladen
Laden Sie Ihren persönlichen wgclient.php herunter. Diese Datei ist Ihre Brücke zum Widget-Storm System — sie enthält Ihren verschlüsselten Schlüssel.
4
Einbinden
Platzieren Sie wgclient.php und wghandler.php auf Ihrem Webserver. Dann binden Sie Widgets über CSS-Link, Script-Tag und PHP-Include ein.
5
Fertig!
Ihre Website rendert jetzt Widget-Storm Widgets. Updates werden automatisch ausgeliefert — Sie müssen nichts aktualisieren.
HTML
<!-- CSS laden (im <head>) -->
<link rel="stylesheet"
    href="wgclient.php?wgname=basic&wgauthor=WidgetStormSystem&wgmode=css&wgparams=..."
    type="text/css">

<!-- JavaScript laden (vor </body>) -->
<script src="wgclient.php?wgname=basic&wgauthor=WidgetStormSystem&wgmode=js&wgparams=..."></script>

<!-- PHP rendern (im <body>) -->
<?php include "wgclient.php";
$wg->get("basic", "WidgetStormSystem", $params, "php"); ?>
Beispiel: Widget auf Ihrer Website einbinden
Zur Station →

Für Entwickler: Widgets erstellen

Von der Idee zum fertigen Widget in vier Schritten.

1
Drei Dateien erstellen
Erstellen Sie mein_widget.php, mein_widget.css und mein_widget.js. Verwenden Sie $wgparams für Parameter und $wgguid für UID-Scoping.
2
wghandler konfigurieren
Der wghandler verschlüsselt Ihre Dateien und lädt sie auf den Server. Neue Nutzer verwenden AES-256-CBC; bestehende Nutzer können nahtlos auf ihrem bisherigen Verfahren (RIJNDAEL-256) weiterarbeiten.
3
Hochladen
Starten Sie den Upload-Prozess. Der wghandler sendet jede Schicht einzeln an den Server. Sie legen Verfügbarkeit (open, authenticated oder payment) fest. Uploads sind an Ihr Autoren-Konto gebunden — Widgets anderer Autoren sind vor Überschreibung geschützt. Alternativ können Sie im Batch-Modus alle Widgets aus Ihrem lokalen wgbuilds/-Verzeichnis auf einmal synchronisieren.
4
Live!
Ihr Widget ist sofort verfügbar. Alle berechtigten Nutzer können es über ihren wgclient einbinden. Beim ersten Abruf wird es automatisch im CodeVault des Nutzers gespeichert — danach wird es lokal geladen, ohne Netzwerk-Roundtrip. Bei Änderungen einfach erneut hochladen.
mein_widget.php
<?php if(isset($widgetparams->uid)) $wgguid = $widgetparams->uid; else $wgguid = ""; if(isset($wgparams)){ $text = isset($wgparams->text) ? $wgparams->text : "Hallo Welt"; ?> <div id="mein_widget<?= $wgguid;?>" class="mein-widget"> <p><?= $text;?></p> </div> <?php } ?>
mein_widget.css — mit PHP-Bridge
/*<?php if(isset($wgparams->uid)) $wgguid = $wgparams->uid; else $wgguid = ""; ?>*/ div#mein_widget/*<?= $wgguid;?>*/{ background: rgba(170,210,210,0.08); border: 1px solid rgba(170,210,210,0.2); padding: 1em; border-radius: 0.4em; }

Die /*<?php ?>*/ Syntax ist die PHP-in-CSS Bridge. Sie erlaubt PHP-Code in CSS-Dateien, der beim Rendern ausgeführt wird.

mein_widget.js
/*<?php if(isset($wgparams->uid)) $wgguid = $wgparams->uid; else $wgguid = ""; ?>*/ jQuery(document).ready(function(){ jQuery("#mein_widget/*<?= $wgguid;?>*/").on("click", function(){ jQuery(this).toggleClass("active"); }); });

Widgets können andere Widgets laden — über Marker:

Verschachtelungs-Syntax
##wgstart##widget_name::author::params##wgend##

Der Server löst diese Marker rekursiv auf: CSS und JS der verschachtelten Widgets werden angehängt, PHP wird inline ausgeführt. So entstehen komplexe Kompositionen aus einfachen Bausteinen.

UID-Scoping mit ##wgself##
##wgself## wird ersetzt durch: widgetname + md5(guid)

Nutzen Sie ##wgself## in CSS/JS-Selektoren
um Instanzen voneinander zu isolieren.
PHP-in-CSS Bridge ##wgstart## Nesting UID-Scoping JSON Params

Ausprobieren

Bearbeiten Sie die Parameter und sehen Sie das Ergebnis in Echtzeit.

Der folgende Live-Editor demonstriert das Kernprinzip: Ändern Sie Text und CSS, und das Widget rendert sich in Echtzeit neu — über den gleichen wgclient.php-Endpunkt, den auch externe Websites nutzen.

Parameter bearbeiten
Live-Vorschau
Widget wird geladen…

Das ist das Widget-Storm-Prinzip: Jede Schicht wird separat geladen. Der Live-Editor postet Parameter an /wgclient.php und erhält gerenderten HTML und CSS zurück. Serverseitiges Rendering ist möglich — aber im Normalfall legt Ihr wgclient die Widget-Dateien lokal auf Ihrem Webspace ab, sodass alles direkt von dort geladen wird. Schneller, unabhängiger.

Features & Möglichkeiten

Was das Widget-Storm System auszeichnet.

📦
Drei-Schichten-Architektur
PHP, CSS und JavaScript — jedes Widget ist eine vollständige Komponente mit serverseitiger Logik, Design und Interaktion.
🌐
PHP-in-CSS Bridge
CSS-Dateien können PHP enthalten: /*<?php ?>*/ wird beim Rendern aktiviert. Dynamische Styles pro Instanz.
🔄
Widget-Verschachtelung
Widgets laden Widgets über ##wgstart##...##wgend## Marker. Rekursiv, unbegrenzt, automatisch.
Automatische Updates
Widget-Code wird vom Server geladen. Wenn der Entwickler aktualisiert, erhalten alle Nutzer sofort die neue Version.
🔒
Verschlüsselte Übertragung
Alle Daten werden auf Anwendungsebene verschlüsselt — wahlweise mit RIJNDAEL-256 (Legacy, seit 2008) oder AES-256-CBC (Modern). Jeder Nutzer hat einen persönlichen Schlüssel.
💾
CodeVault — Lokale Geschwindigkeit
Der CodeVault speichert Widget-Code als lokale Dateien auf Ihrem Server. Das bedeutet: Ladezeiten im Mikrosekundenbereich statt Netzwerk-Roundtrips — und volle Funktion, selbst wenn der Widget-Storm-Server einmal nicht erreichbar ist.
🎯
UID-Scoping
Jede Widget-Instanz erhält eine eindeutige ID. CSS-Selektoren und JavaScript-Handler sind isoliert — keine Kollisionen.
🔑
Verfügbarkeitsstufen
Entwickler steuern beim Upload, wer ihr Widget nutzen darf: open (alle registrierten Nutzer), authenticated (nur mit expliziter Berechtigung) oder payment (kostenpflichtig). Widgets anderer Autoren können nie überschrieben werden.

Jede dieser Feature-Cards ist ein wg_card Widget — zusammengesetzt in einem Grid, wiederverwendbar auf jeder Seite.

❮?php ?❯ PHP — Serverseitige Struktur
{ css } CSS — Dynamisches Design (PHP-Bridge)
js( ) JavaScript — Interaktion

Offene Widgets

Alle Tutorial-Widgets sind öffentlich verfügbar. Nutzen Sie sie auf Ihrer eigenen Website.

Alles auf dieser Seite? Das sind Widgets. Jedes einzelne Element — Buttons, Cards, Code-Anzeigen, Tabs, Steps, Diagramme — ist ein eigenständiges Widget, das Sie auf Ihrer Website nutzen können.

wg_badge
Status-Labels und Tags
wg_button
Universelle Buttons mit Varianten
wg_card
Feature-Cards mit Glass-Morphism
wg_section
Sektions-Container mit Anchor
wg_codeview
Code-Anzeige mit Copy-Funktion
wg_step
Timeline-Steps mit Animation
wg_tabpanel
Tab-Umschaltung
wg_diagram
Animierte Architektur-Diagramme
wg_liveeditor
Live-Widget-Playground
HTML
<!-- CSS -->
<link rel="stylesheet"
    href="wgclient.php?wgname=wg_badge&wgauthor=WidgetStormSystem&wgmode=css&wgparams=..."
    type="text/css">

<!-- PHP -->
<?php include "wgclient.php";
$wg->get("wg_badge", "WidgetStormSystem", '{"text":"Neu","variant":"success"}', "php"); ?>
Beispiel: wg_badge auf Ihrer Website einbinden

Enterprise-Richtlinien

Widgets können mehr als UI-Elemente — unser wg_demo_todo demonstriert eingebaute Persistenz, AES-256-Verschlüsselung und Authentifizierung. Komplett ohne Backend, kostenlos und open.
Alle Widgets ansehen → Zur Station