WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 08.06.2016 18:49:16

webbird
Administrator

Module Creator - Modulbaukasten

EDIT: Diese Beiträge wurden abgetrennt von diesem Thread: http://forum.wbce.org/viewtopic.php?id=587

Apropos Baukasten, in BC kann man Module aller Art direkt über das Backend anlegen und bekommt dann den Rumpf - also alle nötigen Dateien, eine ausgefüllte info.php etc. - sauber angelegt. Das wäre die beste Methode für saubere Vorlagen und ist für den Autor zugleich eine große Erleichterung. Ich lege neue Module ausschließlich so an. Auch welche für WB(CE). smile

Edit: Screenshot


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#2 08.06.2016 19:18:42

stefanek
Developer

Re: Module Creator - Modulbaukasten

Hallo Bianka.

Sowas ist auf jeden Fall gut.
Hat der Thorn in seinen Practical Module Functions auch gehabt.
Auch einen Sprach-Editor.
Allerdings haben die damals nur Modul-Skelette erzeugt, die Practical Module Functions als Grundlage verwendet haben.

Wie sieht denn so ein Skelett/Dummy/Prototyp bei Dir aus?
Könntest Du einen "Rohling" für je PageType und AdminTool anhängen?

Gruß,
Chris


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#3 09.06.2016 09:30:52

webbird
Administrator

Re: Module Creator - Modulbaukasten

stefanek wrote:

Wie sieht denn so ein Skelett/Dummy/Prototyp bei Dir aus?
Könntest Du einen "Rohling" für je PageType und AdminTool anhängen?

Könnte ich, aber da die Rohlinge für BlackCat sind - samt dem class_secure Code - sind die wohl kaum WBCE-tauglich. Schon die Verzeichnisstruktur (wir lagern js und css in gleichnamige Unterverzeichnisse) weicht ab. Ich beschreibe statt dessen mal die Theorie:

Der Administrator füllt das Formular aus, ist ja im Screenshot zu sehen. Jeder Typ hat Pflichtdateien und eine Verzeichnisstruktur, nachzulesen in der WB(CE) Doku. Beim Erzeugen des Moduls werden also die Pflichtdateien und -Verzeichnisse erstellt, also z.B. info.php und languages-Unterverzeichnis, bei einem Admin Tool die tool.php usw. Die Dateien werden mit dem Copyright-Header sowie in unserem Fall dem secure-Code gefüllt. (Bei WBCE dann der defined('WB_PATH') Kram.) Die info.php wird komplett erzeugt, mit Modulversion 0.1 und einer automatisch generierten GUID. Die meisten anderen sind natürlich naturgegeben überwiegend leer.

Besonderheit bei uns sind headers.inc.php und footers.inc.php. Das ist so eine Art Fortentwicklung von simple_pagehead. Wenn der Admin anhakt, daß er gern jQuery verwenden will, wird das z.B. in der headers.inc.php entsprechend eingetragen. Letztlich läuft das auf einen Array-Key jquery mit dem Wert true hinaus, so daß der Modulautor das korrekte Laden des jQuery Core (und ggfs. der UI) dem BC Core überlassen kann - er braucht nicht zu wissen wie das geht. Der BC Core sorgt auch dafür, daß jQuery nur einmal geladen wird.

In BC ist das Ganze eine Core-Funktionalität, man kann es aber genauso gut auch als Admin Tool bauen. Zudem sind die Inhalte der Prototyp-Dateien bei uns im Core hartcodiert, bei einem Admin Tool würde ich eher mit Templates arbeiten, so daß fortgeschrittene Modulautoren eigene Templates erstellen können, um z.B. eigene Bibliotheken (z.B. wblib) zu integrieren. BC trägt das neue Modul auch gleich noch in die addons-Tabelle ein, so daß es theoretisch sofort nutzbar ist - nur daß es halt noch nichts sinnvolles tut.

Soweit ich mich erinnere, gab es für WB doch schon mal so einen "Hello World"-Ansatz. Ich weiß nicht, wie aktuell der ist (und ob man das überhaupt noch wiederfindet), aber das wäre ja schon mal ein Anfang.

Da ich an BC 2.0 arbeite, habe ich im Moment nicht gerade viel Zeit, aber wenn Ihr wollt, baue ich Euch das Admin Tool, wenn Ihr die Prototyp-Dateien liefert. Wenn das gewünscht ist, würde ich vorschlagen, hierfür einen neuen Thread aufzumachen.


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#4 09.06.2016 09:32:47

webbird
Administrator

Re: Module Creator - Modulbaukasten

Hier mal ein Beispiel-Page-Modul.

Edit: Das angehängte Modul ist _nicht_ in WBCE installierbar! Es ist ein Modul-"Rumpf" wie ihn BlackCat erzeugt!


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#5 09.06.2016 10:20:07

stefanek
Developer

Re: Module Creator - Modulbaukasten

Hallo Bianka,

danke.

Ich schau es mir später an und antworte.

Tante hat mich heut zum Kirschenpflücken eingeladen... da muss ich mir glatt 'nen Tag frei für nehmen.  tongue

Gruß,
Chris


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#6 09.06.2016 10:33:45

webbird
Administrator

Re: Module Creator - Modulbaukasten

Quick & Dirty und selbstverständlich ohne jede Funktion big_smile
attachment.php?item=421&download=1


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#7 09.06.2016 10:38:59

webbird
Administrator

Re: Module Creator - Modulbaukasten

@Norhei: Wäre das der passende Header? (Aus der tool.php maintenance_mode.) Gilt das nur für tool.php?

[== PHP ==]
<?php
/**
 * @category        modules
 * @package         maintainance_mode
 * @author          WBCE Project
 * @copyright       Norbert Heimsath
 * @license			WTFPL
 */

/*
Info for module(tool) builders.
Already included here :
config.php
framework/initialize.php
framework/class.wb.php
framework/class.admin.php
framework/functions.php

Admin class is initialized($admin) and header printed.

Additional vars for this tool: 
$modulePath     Path to this module directory
$languagePath   Path to language files of this module
$returnToTools  Url to return to generic tools page
$returnUrl      Url for return link after saving AND for sending the form!
$doSave         Set true if form is send
$saveSettings   Set true if there are actual settings send
$saveDefault    Set true if default button was pressed
$toolDir        Plain tool directory name like "maintainance_mode"
$toolName       The name of the tool eg "Maintainance Mode"

For language vars please take a look in the language files.
Language files no longer need manual loading.

All other vars usually abailable in Admin pages schould be available here too.
Maybe you need to import them via global.

backend.js and backend.css are automatically loaded, 
manual loading is no longer required.
*/

//no direct file access
if(count(get_included_files())==1) header("Location: ../index.php",TRUE,301);

Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#8 09.06.2016 11:04:02

webbird
Administrator

Re: Module Creator - Modulbaukasten

Jetzt auch mit Lizenzauswahl.

attachment.php?item=422&download=1


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#9 09.06.2016 11:55:22

florian
Administrator

Re: Module Creator - Modulbaukasten

Das sieht vielversprechend aus.

Nur so als Idee, bitte nicht teeren und federn:
In der backend.css (wobei ich nicht sicher bin, ob WBCE so "klug" ist, in einem Unterverzeichnis /css danach zu suchen, oder nicht diese Datei direkt  im Modulverzeichnis erwartet) könnten - ggf. optional per Checkbox - dann schon Klassen vordefiniert werden, mittels derer die Positionierung und Anzeige von Elementen im Backend einheitlich erfolgen könnte (ob dies genutzt wird, könnte ja trotzdem jeder/jedem selbst überlassen sein).

Ich denke da an ein ganz einfaches, schlankes Grid und vordefinierte Button-Klassen.
Betonung liegt dabei auf einfach, d.h. bitte nicht Bootstrap!
Also eigentlich nur eine Hand voll floatende Divs, ein Drittel Breite, zwei Drittel usw. - vgl. das Frontend-Stylesheet von miniform, mehr braucht es eigentlich nicht - und Buttonklassen für Speichern, Optionen, Abbrechen, Hinzufügen. Und Media Queries für die mobile Ansicht.

Sodass dann zukünftige Modulinterfaces in etwa (!) so aussehen _könnten_

<div class="wbce-backend-row">
<div class="wbce-backend-half"><label for="irgendwas">Irgendein Wert</label></div>
<div class="wbce-backend-half"><input type="text" class="wbce-backend-inputtext"></div>
</div>
<div class="wbce-backend-row">
<input type="submit" class="wbce-backend-save" value="[SAVE]">
...
</div>

Last edited by florian (09.06.2016 11:56:43)

Offline

#10 09.06.2016 12:34:34

webbird
Administrator

Re: Module Creator - Modulbaukasten

Hatte ich auch schon gedacht. Das wäre vielleicht was für Chio und Chris. Das Modul selbst ist ja gar nicht besonders anspruchsvoll, der Gehirnschmalz steckt dann viel mehr in den Vorlagen. cool


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#11 09.06.2016 12:35:41

webbird
Administrator

Re: Module Creator - Modulbaukasten


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#12 09.06.2016 14:21:30

webbird
Administrator

Re: Module Creator - Modulbaukasten

Hier habt Ihr was zum Spielen. Es funktionieren bisher nur die Typen 'page' und 'tool' und diese werden auch nicht als Addon registriert. Es werden nur die Verzeichnisstruktur und die Dateien angelegt.

Ihr könnt Euch im Verzeichnis ./templates/dummies/<Typ> austoben. smile

Edit: Anhang entfernt, da neue Version verfügbar.
https://github.com/WBCE/module_creator_wbce/releases


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#13 09.06.2016 14:28:45

webbird
Administrator

Re: Module Creator - Modulbaukasten

Achso, ich hab hier eine WBCE 1.2 Alpha, ich bin nicht so ganz auf dem Laufenden was grad aktuell ist und ab wann das mit dem $doSave funktioniert.


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#14 09.06.2016 16:20:56

stefanek
Developer

Re: Module Creator - Modulbaukasten

Hallo, bin grad wieder reingekommen.

Schaue mir gleich alles nacheinander an.

Danke schon mal.


florian wrote:

Ich denke da an ein ganz einfaches, schlankes Grid und vordefinierte Button-Klassen.
Betonung liegt dabei auf einfach, d.h. bitte nicht Bootstrap!
Also eigentlich nur eine Hand voll floatende Divs, ein Drittel Breite, zwei Drittel usw. - vgl. das Frontend-Stylesheet von miniform, mehr braucht es eigentlich nicht - und Buttonklassen für Speichern, Optionen, Abbrechen, Hinzufügen. Und Media Queries für die mobile Ansicht.

Verstehe Dich total, Florian.
Kriegen wir hin.

Wie zuvor schon erwähnt, es könnte mit anderen Core-Bereichen so abgestimmt sein, dass viele Module die sich dann an das Grid halten, unabhängig vom verwendeten Admin-Theme gut aussehen.

Ich nehme mich dessen gerne an.

Gruß,
Chris


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#15 09.06.2016 17:07:53

stefanek
Developer

Re: Module Creator - Modulbaukasten

florian wrote:

Sodass dann zukünftige Modulinterfaces in etwa (!) so aussehen _könnten_

<div class="wbce-backend-row">
<div class="wbce-backend-half"><label for="irgendwas">Irgendein Wert</label></div>
<div class="wbce-backend-half"><input type="text" class="wbce-backend-inputtext"></div>
</div>
<div class="wbce-backend-row">
<input type="submit" class="wbce-backend-save" value="[SAVE]">
...
</div>

Meins, aktuell aus dem PageTree rework, sieht sehr ähnlich aus.
Die KlassenNamen sind etwas anders:
settingsTable (ist eine Div, wird aber fast wie eine Tabelle angezeigt)
    settingsHeading (das ist für den Heading des Settings-Bereichs)
    settingRow (eine einzelne Reihe)
        settingName (selbsterklärend)
        settingValue (hier kommen die ganzen Inputs rein, ob radio, select, input-text etc.)
    settingRow
        settingName
        settingValue
    settingRow
        settingName
        settingValue
    buttonRow  (hier kommt die Zeile mit den Buttons unten)

Diese Struktur funktioniert auch so (beim passenden CSS), dass wenn der view-port kleine wird, die Labels (settingName) oberhalb der Inputs sind.

Das HTML sieht so aus (Auszug):

[== PHTML ==]
<form name="add_page" action="<?=PT_TOOL_URL?>" method="post" autocomplete="off">
	<div class="settingsTable">
		<div class="settingsHeading"><?=$HEADING['ADD_PAGE']?></div>
		<div class="settingRow">
			<label class="settingName" for="menu_title"><?=$TEXT['MENU_TITLE']?>:</label>
			<div class="settingValue">
				<input type="text" name="menu_title" id="menu_title">
			</div>
		</div>
		<div class="settingRow">	
			<label class="settingName" for="parent_page"><?=$TEXT['PARENT']?>:</label>
			<div class="settingValue">		
				<select name="parent" id="parent_page">
				<option value="0">[<?=$TEXT['NONE']?>]</option>
				<?php 
				foreach (parentPageList($aPages) as $p):?>
					<option value="<?=$p['page_id']?>" <?=$p['selectControl']?> style="background: <?=$p['FLAG_ROOT_ICON']?> no-repeat center left; padding-left: 20px;" title="<?=$p['page_title']?>">
						<?=$p['spaceTrail']?><?=$p['menu_title']?>
					</option>
				<?php endforeach ?>
				</select>		
			</div>
		</div>
		<!-- dann noch etwas mehr Reihen, und dann ... ->
		<div class="buttonRow">  
			<input type="submit" name="addNewPage" value="<?=$TEXT['ADD'] ?>" />
			<input type="reset" name="reset" value="<?=$TEXT['RESET'] ?>" />   
		</div>   
	</div>
</form>

Anders als in Deinem Beispiel, packe ich Label nicht noch einmal extra in einen DIV rein, da es sich erübrigt.
Der Grund warum ich hier kein "half" verwende, ist, dass die ganze <div class="settingsTable"> ein "half" bekommen kann, wenn z.B. zwei, drei Tabellen nebeneinander stehen sollen. Oder eine settingsTable und dann etwas anderes daneben.

Das würde dann etwa so aussehen:

<div class="settingsTable be-half">
    <!-- inhalt -->
</div>
<div class="be-someSelectorName be-half">
    <!-- inhalt -->
</div>

Die obigen Selector-Namen verwende ich schon recht lange.
Aber ich bin bereit sie anzupassen, wenn bessere Selector-Namen zur Verfügung stehen dafür.

Mir ist halt wichtig, dass meine Module sich dann unabhängig vom verwendeten Theme gut einfügen.
Ich finde die obigen schon recht intuitiv beim Umgang mit Settings.

Dazu habe ich noch einige extras, wie

<div class="settingDescription"><!-- hier die Description unterhalb des Settings --></div>

Die mit zu den Settings gehören.

Gruß,
Chris

P.S. Jetzt schaue ich mir die anderen Sachen an...

Last edited by stefanek (09.06.2016 17:10:33)


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#16 09.06.2016 17:10:09

stefanek
Developer

Re: Module Creator - Modulbaukasten

Ach, was mir noch einfällt.
Diese obige Struktur läßt sich wirklich gut gestalten, ob man was Anspruchsvolles, oder etwas Schlichtes a lá ArgosTheme will.

Gruß,
Chris


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#17 09.06.2016 20:29:48

stefanek
Developer

Re: Module Creator - Modulbaukasten

Hallo Bianka,
Modul Baukasten ist sehr gut.

Danke, dass Du Dir die Mühe gemacht hast, ihn für WBCE als AdminTool anzupassen.

Ich denke, wenn wir das "Grid" zusammen haben, würde ich dann ein Skelett damit machen und in dieses AdminTool mit rein tun, dann kann sich jeder sein "Hello World!" Modul/Tool damit machen. (EDIT: Ich meine dann eins, welches das Grid berücksichtigt und somit schnell zum gewünschten Layout führt, welches mit dem AdminTheme zusammen wirkt.)

Das mit dem header.inc und footer.inc verstehe ich vom Prinzip.

Da arbeitet Norbert grade aber an einer Lösung, die dies überflüßig macht: die I/Insert Class.
Die tut das auch, und noch mehr, und kann von überall ausgeführt werden.
Das ist eigentlich das, was ich mir immer gewünscht habe für das CMS.
Andere Systeme haben es schon so, oder so ähnlich, umgesetzt. Craft CMS, SilverStripe...

Ein großer Vorteil ist, dass man es auch z.B. mit Droplets verwenden kann.
Man gibt dann im Droplet an, von wo z.B. ein Script oder Style geholt werden soll. Oder ob zusätzlich META-Tags gesetzt oder überschrieben werden sollen.

Ein anderer Vorteil ist, dass man Scripte/Stylesheets nachladen kann, wenn eine Bedingung erfüllt ist.

[== pseudocode ==]

if(user_logged_in){
  // füge weiteres CSS und JS ein, Lade die UI... sonstiges...
}

Das ist z.B. dann gut, wenn man in einem Modul ein Frontend-Edit anbietet, dann lädt man das Nötige nur dann nach, wenn der User auch tatsächlich die Rechte dazu hat.

Falls Du es noch nicht getan hast, schau sie Dir mal an (die Class, eigentlich sind es zwei: I und Insert).
Ist noch nicht ganz fertig, weil wir das noch so machen wollen, dass keine Templates umgebaut werden müßen, um von dieser Neuerung Gebrauch machen zu können.
Aber das Prinzip ist schon sehr gut sichtbar.

Für etwas mehr Theorie, bei SilverStripe heißt das ganze "Requirements":
https://docs.silverstripe.org/en/3.2/de … uirements/

Gruß,
Chris

Last edited by stefanek (09.06.2016 23:17:51)


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#18 10.06.2016 07:47:12

florian
Administrator

Re: Module Creator - Modulbaukasten

Die CSS-Selektoren können gern so heißen wie vorgeschlagen, meins war ja nur so als Idee runtergeklappert. Um so besser, wenn es schon etwas Fertiges gäbe, das wir übernehmen können.
(Wobei ich unabhängig davon Gridism sehr interessant finde, das ist vielleicht auch etwas für ein weiteres Frontendtemplate.)

Offline

#19 10.06.2016 09:10:00

stefanek
Developer

Re: Module Creator - Modulbaukasten

Hallo Florian.

florian wrote:

Die CSS-Selektoren können gern so heißen wie vorgeschlagen, meins war ja nur so als Idee runtergeklappert. Um so besser, wenn es schon etwas Fertiges gäbe, das wir übernehmen können.

Super.
Ich werde es mit NorHei besprechen.

florian wrote:

(Wobei ich unabhängig davon Gridism sehr interessant finde, das ist vielleicht auch etwas für ein weiteres Frontendtemplate.)

Ja, sehr interessant und intuitiv. Der Goldene Schnitt hat mich richtig überrascht. :-)


~Chris


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#20 10.06.2016 11:23:30

webbird
Administrator

Re: Module Creator - Modulbaukasten

stefanek wrote:

Ein großer Vorteil ist, dass man es auch z.B. mit Droplets verwenden kann.
Man gibt dann im Droplet an, von wo z.B. ein Script oder Style geholt werden soll. Oder ob zusätzlich META-Tags gesetzt oder überschrieben werden sollen.

Das kann BC auch, aber darum ging es hier ja nicht. Daß WBCE da eigene Wege geht ist sowieso klar, das wird man dann bei späteren Updates des Module Creator Tools entsprechend berücksichtigen.


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#21 10.06.2016 11:27:26

webbird
Administrator

Re: Module Creator - Modulbaukasten

Ich habe mal ein Repo angelegt.

https://github.com/WBCE/module_creator_wbce

Ihr könnt dann Eure Templates dort reinladen. Ich bin nur mit der Position unterhalb des templates-Verzeichnisses und dem Namen noch nicht zufrieden, vielleicht wäre ein eigener Ordner "blueprints" oder ähnlich passender.


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#22 10.06.2016 12:52:08

stefanek
Developer

Re: Module Creator - Modulbaukasten

WebBird wrote:

Ich habe mal ein Repo angelegt.
https://github.com/WBCE/module_creator_wbce

Cool thumb_up

WebBird wrote:

Ich bin nur mit der Position unterhalb des templates-Verzeichnisses und dem Namen noch nicht zufrieden, vielleicht wäre ein eigener Ordner "blueprints" oder ähnlich passender.

Ja, 'blueprints'  hört sich gut an.


Stefanek wrote:

Ein großer Vorteil ist, dass man es auch z.B. mit Droplets verwenden kann.
Man gibt dann im Droplet an, von wo z.B. ein Script oder Style geholt werden soll. Oder ob zusätzlich META-Tags gesetzt oder überschrieben werden sollen.

WebBird wrote:

Das kann BC auch, aber darum ging es hier ja nicht. Daß WBCE da eigene Wege geht ist sowieso klar, das wird man dann bei späteren Updates des Module Creator Tools entsprechend berücksichtigen.

Ach so, kann sein, dass es auch mit den heander.inc und footer.inc auch geht.
Ich habe es mir nie in Livebetrieb angeschaut.

Gruß,
Chris


"All the knowledge I possess everyone else can acquire, but my heart is all my own."
Johann Wolfgang von Goethe

Offline

#23 10.06.2016 12:53:29

webbird
Administrator

Re: Module Creator - Modulbaukasten

Nee, wir haben das komplette Droplets Extensions im Core. cool


Ich habe eine Amazon-Wishlist. wink
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#24 10.06.2016 13:16:44

rjgamer
Developer

Re: Module Creator - Modulbaukasten

Nur so Frage am Rande, warum was neues erfinden wenn andere CSS frameworks alles schon liefern und man sogar auf die Doku verweisen kann? Verstehe jetzt den Vorteil nicht...

Online

#25 10.06.2016 13:20:16

florian
Administrator

Re: Module Creator - Modulbaukasten

Ich nehme an, Du hast ein ganz bestimmtes Framework, das mit "b" anfängt  im Hinterkopf... ganz einfach, weil das Framework für das Modulbackend so einfach wie möglich sein soll und wirklich nur das enthalten soll, was konkret benötigt wird - also eine Hand voll Klassen und nicht mehr.

Offline

Board footer

Powered by FluxBB

up