Layout wechseln

Design auswählen, um Beispiel-Content anzuzeigen:

hauskreis install myhobby profile sesam

Dokumentation

Inhalt

AltersprüfungBeispiel-InhalteBenutzer abmeldenBenutzer anmeldenBenutzereinstellungenBenutzer registrierenBoxenButtonsDatei löschenDebuggingDropdownFormulareFunktionen einbindenGlobale SeitenparameterGlobale Systemvariable.htaccess/ PermalinkLayout erstellenLayout festlegenLayouts ausgebenLadehinweisPopupQR-Code-GeneratorRadioListSchriftartenSelectorSpracheSQL INSERTSQL UPDATEStatistikÜberschriftUpdate-ModusVerlinken & weiterleitenVerzeichnis löschenZeichenkette validierenZeilen mit ButtonsZufallswert/ hash

Altersprüfung

Die Einstellung ageCheck hat den Wert false, um die Prüfung zu deaktivieren.
Um die Prüfung zu aktivieren muss eine Zahl zugewiesen werden:

$system['settings']['ageCheck'] = 55;

Zwei Textvariablen definieren den Textinhalt:

text('ageCheck_text');
text('ageCheck_confirm');

Beispiel-Inhalte

Der Befehl lipsum() generiert einen Lorem-Ipsum-Text.
Der Parameter definiert die Anzahl auszugebender Absätze. Wird kein Parameter festgelegt, wird ein Absatz ausgegeben.
Alle Absätze werden mit p-Tags generiert.

echo lipsum();
echo lipsum(3);

Dieser Code erzeugt folgende Ausgabe:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id tempor magna. Maecenas pellentesque porttitor nulla. Phasellus mollis odio et est malesuada, sit amet porta odio dignissim. Aenean posuere, metus non fermentum egestas, libero ex sollicitudin lectus, id pretium erat mi hendrerit turpis. Ut tempor quam vehicula mauris iaculis, ut lacinia tortor varius. Phasellus nunc elit, interdum vel justo vitae, ultricies placerat neque. Pellentesque eu metus vitae leo tincidunt tempor elementum tempor arcu. Fusce rutrum mi dui.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id tempor magna. Maecenas pellentesque porttitor nulla. Phasellus mollis odio et est malesuada, sit amet porta odio dignissim. Aenean posuere, metus non fermentum egestas, libero ex sollicitudin lectus, id pretium erat mi hendrerit turpis. Ut tempor quam vehicula mauris iaculis, ut lacinia tortor varius. Phasellus nunc elit, interdum vel justo vitae, ultricies placerat neque. Pellentesque eu metus vitae leo tincidunt tempor elementum tempor arcu. Fusce rutrum mi dui.

Sed sit amet nisl laoreet, cursus neque vel, tempus felis. Curabitur a turpis accumsan, mollis sapien et, ullamcorper libero. Morbi ullamcorper vitae neque eget posuere. Nunc eget diam fermentum, dignissim sapien nec, maximus purus. In turpis nisi, hendrerit nec velit quis, pretium laoreet massa. Etiam efficitur lectus quis nisi pharetra, vitae accumsan massa porttitor. Duis ac scelerisque nibh, eget commodo odio. Pellentesque ex sem, malesuada sit amet ipsum vel, mollis venenatis mi. Curabitur consectetur justo vitae egestas faucibus. Mauris ut porttitor sapien, a ornare mauris. Sed eget lacus et diam imperdiet elementum nec sit amet nulla. Quisque et placerat eros, vel vestibulum urna.

Donec volutpat luctus ligula, a rutrum libero porta vitae. Nulla placerat erat sit amet mauris mollis efficitur. Pellentesque sed dignissim massa, ut auctor ex. Nunc vel purus eget augue ultrices lobortis. Fusce leo elit, euismod non turpis eu, porttitor cursus nisi. Cras consequat nisl quis ex elementum rhoncus. Aliquam eleifend vel elit quis egestas. Donec diam libero, sagittis sed dolor id, porttitor elementum metus. Aliquam interdum nunc at tortor fringilla consequat. Donec egestas et risus ut eleifend. Mauris iaculis, purus nec aliquet imperdiet, mi velit auctor risus, vel mollis nibh dui consequat augue. Etiam fermentum molestie nisl, vitae fermentum orci cursus a. Phasellus consectetur, neque vulputate eleifend sagittis, tortor neque venenatis dui, id pretium nisi purus ut sem.

Benutzer abmelden

An die bestehende URL kann logout=1 angehängt werden:

<p>
	<a class="button" href="index.php?p=<?php echo $system['page']; ?>&logout=1">Logout</a>
</p>

Dieser Code erzeugt folgende Ausgabe:

Logout

Benutzer anmelden

Folgenden Code kopieren, um den Login und das Formular einzubinden.
Dieser Code ist für die php- und Ajax-Methode.

<?php
	
	if(isset($_POST['loginUser'])) {
				
		$message = loginUser($_POST['username'], $_POST['password']);
	
		$usernameValue = $_POST['username'];
		
	} else {
		$usernameValue = false;
	}
	
?>

<form id="loginForm" method="post" action="<?php echo $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>">
	
	<?php
		
		if(isset($message)) {
			?>
			<p><?php echo $system['text'][$message]['de']; ?></p>
			<?php
		}
		
	?>
	
	<p>
		<label>
			Benutzername:<br>
			<input type="text" class="username" name="username" value="<?php echo $usernameValue; ?>">
		</label>
	</p>
	
	<p>
		<label>
			Passwort:<br>
			<input type="password" class="password" name="password">
		</label>
	</p>
	
	<p>
		
		<input type="hidden" name="loginUser" value="1">
		
		<input type="submit" style="display: none;">
		
		<a class="button" href="javascript:document.getElementById('loginForm').submit();">Login (Standard)</a>
		
		<a class="button" href="javascript:loginUser('loginForm');">Login (Ajax)</a>
		
	</p>
	
</form>

Dieser Code erzeugt folgende Ausgabe:

Login (Standard) Login (Ajax)

Wird die Anmeldung mit Ajax durchgeführt, müssen die Funktionen

function loginUserOk(data) {}

und

function loginUserError(error) {}

angelegt werden, die die jeweilige Rückmeldung des Ajax-Requests enthalten.

In diesen Funktionen wird festgelegt, was bei abgeschlossener oder fehlerhafter Registrierung geschehen soll.

Login prüfen

Folgender Code prüft, ob ein Benutzer angemeldet ist:

<?php
	
	if($system['user']) {
		echo 'Benutzer ist angemeldet.';
	} else {
		echo 'Kein Benutzer angemeldet.';
	}
	
?>

Dieser Code erzeugt folgende Ausgabe:

Kein Benutzer angemeldet.

Benutzereinstellungen

Daten, die für einen bestimmten Benutzer gelten, werden in der Tabelle userSettings gespeichert.
Mit der Systemvariable werden die Einstellungen abgerufen:

$age = $system['user']['settings']['age'];

Um Einstellungen zu speichern, wird die Funktion setUserSetting(); verwendet.
Ist die eingegebene Einstellung bereits vorhanden, wird sie überschrieben.
Als Wert kann false, ein Array oder ein String übergeben werden. Strings können base64-kodiert sein. Die Ausgabe über die Systemvariable ist immer unkodiert, da die Umwandlung automatisch stattfindet.

setUserSetting('label'); // Einstellung leeren

setUserSetting('label', 'value');

setUserSetting('label', array(
	'test1'	=> 'test 2'
));

Mit deleteUserSetting(); wird eine Einstellung gelöscht.

deleteUserSetting('label');

Benutzer registrieren

Mit der Einstellung usernameIsEmail wird bestimmt, ob ein Benutzer eine E-Mail-Adresse eingeben muss.
Wenn aktiviert, ist der Benutzername gleich die E-Mail-Adresse.

Folgenden Code kopieren, um Formular und Registrierung umzusetzen.
Dieser Code ist für die php- und Ajax-Methode.

<?php
	
	if(isset($_POST['registerUser'])) {
		
		# Benutzer registrieren
		
		$system['debug'][] = 'Parameter registerUser gesetzt.';
		
		if(isset($_POST['email'])) {
			
			# Registrierung mit zusätzlichem E-Mail-Feld
			
			$system['debug'][] = 'Benutzerregistrierung mit E-Mail-Feld ausführen.';
			
			$message = registerUser(
				$_POST['username'],
				$_POST['email'],
				$_POST['password_a'],
				$_POST['password_b']
			);
			
		} else {
			
			# Registrierung ohne zusätzliches E-Mail-Feld
			
			$system['debug'][] = 'Benutzerregistrierung ohne E-Mail-Feld ausführen.';
			
			$message = registerUser(
				$_POST['username'],
				'noEmail',
				$_POST['password_a'],
				$_POST['password_b']
			);
			
		}
		
		$system['debug'][] = 'Ausgabe von registerUser(): '.$message;
		
		$usernameValue = $_POST['username'];
		
		if(isset($_POST['email'])) {
			$emailValue = $_POST['email'];
		} else {
			$emailValue = false;
		}
		
	} else {
		$usernameValue = false;
		$emailValue = false;
	}
	
?>

<form
	id="registerUserForm"
	method="post"
	action="<?php echo $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>">
	
	<?php
		
		if(isset($message)) {
			?>
			<p><?php echo $system['text'][$message]['de']; ?></p>
			<?php
		}
		
	?>
	
	<p>
		<label>
			Benutzername eingeben:<br>
			<input type="text" name="username" class="username" value="<?php echo $usernameValue; ?>">
		</label>
	</p>
	
	<p>
		<!-- Diesen Input entfernen, wenn E-Mail-Adresse gleich Benutzername ist -->
		<label>
			E-Mailadresse eingeben:<br>
			<input type="email" name="email" class="email" value="<?php echo $emailValue; ?>">
		</label>
	</p>
	
	<p>
		<label>
			Passwort eingeben:<br>
			<input type="password" name="password_a" class="password_a">
		</label>
	</p>
	
	<p>
		<label>
			Passwort wiederholen:<br>
			<input type="password" name="password_b" class="password_b">
		</label>
	</p>
	
	<p>
		
		<input type="hidden" name="registerUser" value="1">
		<input type="submit" style="display: none;">
		
		<a class="button" href="javascript:document.getElementById('registerUserForm').submit();">Registrieren (php)</a>
		
		<a class="button" href="javascript:registerUser('registerUserForm');">Registrieren (Ajax)</a>
		
	</p>
	
</form>

Dieser Code erzeugt folgende Ausgabe:

Registrieren (php) Registrieren (Ajax)

Wird die Registrierung mit Ajax durchgeführt, müssen die JavaScript-Funktionen

function registerUserOk(data) {}

und

function registerUserError(error) {}

angelegt werden, die die jeweilige Rückmeldung des Ajax-Requests enthalten.

In diesen Funktionen wird festgelegt, was bei abgeschlossener oder fehlerhafter Registrierung geschehen soll.

Die E-Mail, die bei einer Registrierung für die Aktivierung versendet wird, befindet sich in der Datei
system/12_userManagement/registerUser/confirmationEmailContentTemplate.php.
Um den Inhalt zu verändern, muss er in der Datei
confirmationEmailContentUser.php
im selben Verzeichnis eingefügt werden.

Benutzer aktivieren

Die Einstellung emailConfirmation aktiviert die Benutzeraktivierung per E-Mail.

Die Einstellung emailConfirmationPage legt fest, welche Seite im Aktivierungslink der E-Mail aufgerufen wird.

Nachdem die Aktivierungsseite angelegt wurde, folgenden Code einfügen:

<?php
	
	if(isset($_GET['c'])) {
		
		$userConfirmation = confirmUser($_GET['c']);
		
		if($userConfirmation) {
			
			# Benutzer wurde aktiviert
			echo $system['text'][$userConfirmation]['de'];
			
		} else {
			
			# Benutzer wurde nicht aktiviert
			echo $system['text']['noUserConfirmation']['de'];
			
		}
		
		$system['debug'][] = 'Ausgabe von confirmUser(): '.$userConfirmation;
		
	}
	
?>

Dieser Code erzeugt folgende Ausgabe:

Boxen

Quellcode:

<div class="box">
	
	<h2>Box Standard</h2>
	
	<?php echo lipsum(); ?>
	
</div>


<div class="box boxHeader">
	
	<h2>Box Header</h2>
	
	<?php echo lipsum(); ?>
	
</div>

<div class="box boxHeader">
	
	<h2 class="headerIcon"><i class="bi bi-speedometer icon"></i>Box Header mit Icon</h2>
	
	<?php echo lipsum(); ?>
	
</div>

Dieser Code erzeugt folgende Ausgabe:

Box Standard

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id tempor magna. Maecenas pellentesque porttitor nulla. Phasellus mollis odio et est malesuada, sit amet porta odio dignissim. Aenean posuere, metus non fermentum egestas, libero ex sollicitudin lectus, id pretium erat mi hendrerit turpis. Ut tempor quam vehicula mauris iaculis, ut lacinia tortor varius. Phasellus nunc elit, interdum vel justo vitae, ultricies placerat neque. Pellentesque eu metus vitae leo tincidunt tempor elementum tempor arcu. Fusce rutrum mi dui.

Box Header

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id tempor magna. Maecenas pellentesque porttitor nulla. Phasellus mollis odio et est malesuada, sit amet porta odio dignissim. Aenean posuere, metus non fermentum egestas, libero ex sollicitudin lectus, id pretium erat mi hendrerit turpis. Ut tempor quam vehicula mauris iaculis, ut lacinia tortor varius. Phasellus nunc elit, interdum vel justo vitae, ultricies placerat neque. Pellentesque eu metus vitae leo tincidunt tempor elementum tempor arcu. Fusce rutrum mi dui.

Box Header mit Icon

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id tempor magna. Maecenas pellentesque porttitor nulla. Phasellus mollis odio et est malesuada, sit amet porta odio dignissim. Aenean posuere, metus non fermentum egestas, libero ex sollicitudin lectus, id pretium erat mi hendrerit turpis. Ut tempor quam vehicula mauris iaculis, ut lacinia tortor varius. Phasellus nunc elit, interdum vel justo vitae, ultricies placerat neque. Pellentesque eu metus vitae leo tincidunt tempor elementum tempor arcu. Fusce rutrum mi dui.

Buttons

Quellcode:

<p>
	
	<a class="button" href="#">Standard</a>
	
	<a class="button buttonActive" href="#">Grün</a>
	
	<a class="button buttonDelete" href="#">Rot</a>
	
	<!-- Wichtig: Klasse iconButton ! -->
	<a class="button iconButton" href="#">
		
		<i class="bi bi-umbrella-fill"></i>
		
		mit Icon
		
	</a>
	
	<a class="button circleButton" href="#">
		
		<i class="bi bi-umbrella-fill"></i>
		
	</a>
	
	<a class="button wideButton" href="#">Feste Länge</a>
	
</p>

<p>
	
	<div class="button buttonRow">
		
		<a href="#">
			
			<i class="bi bi-plus-circle-fill"></i>
			
		</a>
		
		<a class="text" href="#">
			
			Text
			
		</a>
		
		<a href="#">
			
			<i class="bi bi-dash-circle-fill"></i>
			
		</a>
		
		<div class="clear"></div>
		
	</div>
	
	
	<div class="buttonRow_b">
		
		<a class="button circleButton" href="#"><i class="bi bi-input-cursor-text"></i></a>
		
		<a class="button" href="#">Text</a>
		
		<a class="button circleButton" href="#"><i class="bi bi-star"></i></a>
						
		<div class="clear"></div>
	</div>
	
	<a class="button variableHeightButton" href="#">Variable<br>Höhe</a>
	
</p>

	
<a class="button bigButton" href="#">
	
	Großer Button
	
	<div class="borderBadges">
		
		<span class="button badge">Badge 1</span>
		
		<span class="button badge"><i class="bi bi-people-fill"></i>Badge 2</span>
		
		<span class="button badge circleBadge">3</span>
		
		<div class="clear"></div>
		
	</div>
	
</a>

<a class="button bigButton" href="#">
	
	Großer Button
	
	<span class="innerBadge center-y">Badge 4</span>
	
</a>

<a class="button bigButton bigButtonSvg" href="#">
	
	<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="bi bi-journal-text" viewBox="0 0 16 16">
		<path d="M5 10.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"></path>
		<path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"></path>
		<path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"></path>
	</svg>
	
	Button mit SVG
	
</a>

<a class="button bigButton bigButtonIcon" href="#">
	
	<i class="bi bi-door-closed"></i>
	
	Button mit Icon
	
</a>

Dieser Code erzeugt folgende Ausgabe:

Standard Grün Rot mit Icon Feste Länge

Variable
Höhe

Großer Button
Badge 1 Badge 2 3
Großer Button Badge 4 Button mit SVG Button mit Icon

Datei löschen

Die Funktion deleteFile() löscht eine Datei, wenn sie existiert.

deleteFile('content/file.txt');

Debugging

Die Einstellung debug aktiviert den Debug-Modus.
Protokollierte Ereignisse werden nach dem Seitenaufruf und nur bei angemeldetem Admin-Benutzer in die Datei debug.txt gespeichert.

Folgende Funktion gibt protokollierte Ereignisse direkt aus. Gespeichert wird jedoch immer das gesamte Protokoll nach Abschluss der Seite.
true gibt an, dass das Protokoll ausgegeben werden soll.

debug(true);

Dropdown

Folgenden Code kopieren, um ein Dropdown-Menü zu generieren.

<?php
		
	echo getDropdown(array(
		'dropdownClass'		=> 'dropdownClass1',
		'inputClass'		=> 'inputClass1',
		'inputName'			=> 'inputName1',
		'direction'			=> 'down', // up/down
		'options'			=> array(
			array(
				'name'		=> 'name_1',
				'value'		=> 'Value 1',
				'action'	=> 'alert(\'action test\');'
			),
			array(
				'name'		=> 'name_2',
				'value'		=> 'Value 2',
				'selected'	=> true
			)
		)
	));
	
?>

Dieser Code erzeugt folgende Ausgabe:

Formulare

Funktionen einbinden

Funktionen werden als Datei in folgendem Verzeichnis erstellt:

system/11_functions/

Globale Seitenparameter

Globale Systemvariable

$system

.htaccess/ Permalink

Folgenden Code im Stammverzeichnis in die Datei .htaccess speichern, um Permalinks zu ermöglichen:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?p=$1 [QSA,L]

Layout erstellen

  1. Im Verzeichnis "layout" eine neue CSS-Datei angelegt werden. Der Dateiname entspricht dem Layout-Namen.
  2. Optional die Datei "layoutName_header.php" anlegen.
  3. Optional die Datei "layoutName_footer.php" anlegen.

Layout festlegen

Folgender Code definiert das zu verwendende Layout.
Sofern folgende Dateien im Verzeichnis /layout vorhanden sind, werden sie eingebunden:

setLayout('layoutName', array(
	'x' => 'y'
));

Im zweiten Parameter können Daten als Array an das Layout übergeben werden.
Abgerufen werden diese Daten über die Systemvariable:

echo $system['layoutParameters']['x']; // Ausgabe: y

Layouts ausgeben

$layouts = getLayouts($output);

$output = false
Liefert einen Array mit den Layouts:

Array
(
    [0] => hauskreis
    [1] => install
    [2] => myhobby
    [3] => profile
    [4] => sesam
)

$output = 'buttons'
Generiert HTML-Buttons, um das entsprechende Layout zu aktivieren:
hauskreis install myhobby profile sesam

Ladehinweis

Bei einem Seitenaufruf über Ajax wird der Ladehinweis nach 0,5 Sekunden automatisch eingeblendet.

Der Hinweis kann manuell mit folgendem Code aktiviert oder deaktiviert werden.

loading(true);		// Ladehinweis einblenden
loading(false);		// Ladehinweis ausblenden

Test:
einblenden ausblenden

Der HTML-Code befindet sich in der Datei "system/81_loadingHtmlTemplate.php".
Dieser Code kann überschrieben werden, wenn sich in "system/82_loadingHtmlUser.php" ein Inhalt befindet.

Popup

Folgenden Code kopieren, um ein Popup zu generieren.

<?php
	
	echo popup(array(
		'id'		=> 'popup1', // Zufällige Zahl, wenn nicht definiert
		'class'		=> 'class1',
		'title'		=> 'Popup-Titel 1',
		'content'	=> lipsum(),
		'scroll'	=> false
	));
	
	echo popup(array(
		'id'		=> 'popup2', // Zufällige Zahl, wenn nicht definiert
		'class'		=> 'class2',
		'title'		=> 'Popup-Titel 2',
		'content'	=> '<p>'.lipsum(20).'</p>',
		'scroll'	=> true
	));
	
?>

Dieser Code erzeugt den HTML-Code eines Popups (siehe Konsole).
Popup öffnen:

Standard mit Scrollbar

QR-Code-Generator

Folgenden Code kopieren, um einen QR-Code zu generieren.

<img
	src="qr.php?content=<?php echo base64_encode('https://myhobby.ch'); ?>&base64=1&quality=L&size=20&border=1"
	style="max-width: 200px"
>

<img
	src="qr.php?content=https://myhobby.ch&base64=0&quality=L&size=5&border=0"
	style="max-width: 200px"
>

Dieser Code erzeugt folgende Ausgabe:

RadioList

Folgenden Code kopieren, um eine Auswahlliste zu generieren.

<?php

	echo getRadioList(array(
		'radioListClass'	=> 'listClass2',
		'inputClass'		=> 'inputClass2',
		'inputName'			=> 'inputName2',
		'inputValue'		=> 'inputValue',
		'actionFunction'	=> 'myFunction', // optional
		'selected'			=> 2,
		'options'			=> array(
			array(
				'value'	=> '1',
				'label'	=> 'Value 1'
			),
			array(
				'value'	=> '2',
				'label'	=> 'Value 2'
			)
		)
	));
	
?>

Dieser Code erzeugt folgende Ausgabe:

Optional kann die Funktion mh_radioListSet_b() erstellt werden, um bei Betätigung einer Option eine Aktion auszulösen:

mh_radioListSet_b(element, listId, optionId, value) {
}

Optional kann mit dem Parameter 'actionFunction' eine benutzerdefinierte Funktion bei Betätigung einer Option aufgerufen werden:

myFunction(element, listId, optionId, value) {
}

Schriftarten

Schriften ohne Serifen

Lato

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Raleway

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Exo2

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

DIN

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Saira

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

SairaCondensed

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Oswald

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Schriften mit Serifen

Vidaloka

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

YesevaOne

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

monospace-Schriften

ShareTechMono

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

ShareTech

Dieselbe Schriftart ohne monospace:

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Doto

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Weitere Schriften

Contrail One

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

OleoScript

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Caveat

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

GochiHand

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Orange juice 2.0

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Loved by the King

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

LuckiestGuy

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

CabinSketch

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Cookie

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

PermanentMarker

1234567890 -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas commodo lacus id enim sodales, nec egestas lorem pellentesque. Quisque hendrerit posuere volutpat. Integer enim nibh, mattis at venenatis porttitor, blandit non urna. Aenean pellentesque, lorem at gravida finibus, odio nibh pellentesque metus, non condimentum est ex ac arcu.

Selector

Folgenden Code kopieren, um einen Selector zu generieren.

<?php
	
	echo getSelector(array(
		'selectorClass'		=> 'selectorClass3',
		'mode'				=> 'int',			// int, day, month
		'inputClass'		=> 'inputClass3',
		'inputName'			=> 'inputName3',
		'inputValue'		=> 5,				// day-mode = 1-7, month-mode = 1-31
		'preValue'			=> 'a',
		'value'				=> 5,				// day-mode = 1-7, month-mode = 1-31
		'postValue'			=> 'b',
		'minValue'			=> 3,				// day-mode = 1-7, month-mode = 1-31
		'maxValue'			=> 7,				// day-mode = 1-7, month-mode = 1-31
		'actionUp'			=> 'actionUp();',
		'actionDown'		=> 'actionDown();'
	));


	echo getSelector(array(
		'mode' => 'day'
	));

	echo getSelector(array(
		'mode' => 'month'
	));
	
?>

Dieser Code erzeugt folgende Ausgabe:

a5b
Montag
Januar

Sprache

Die Einstellung language legt die Standardsprache fest, wenn innerhalb des Projekts keine andere Sprache definiert wird.

Das Sprach-Kürzel entspricht dem Schlüssel im Text-Array. Systemtexte befinden sich in der Datei
system/4_textTemplate.php
Um weitere Texte hinzuzufügen oder vorhandene zu überschreiben, müssen diese in der Datei
system/5_textUser.php
eingefügt werden.

Folgende Funktion ermittelt, welche Sprache derzeit aktiv ist:

echo getLanguage();

Dieser Code erzeugt folgende Ausgabe:

de

Text ausgeben:

echo text('databaseConnectionError'); // Aktuell gewählte Sprache
echo text('databaseConnectionError', 'en'); // Einmalig definierte Sprache für den ausgewählten Text

Dieser Code erzeugt folgende Ausgabe:

Keine Verbindung zur Datenbank.
Database-Connection failed.

Sprache ändern

Die Sprache wird mittels GET- oder POST-Parameter t=de geändert und wird in einem Cookie gespeichert. Die gewählte Sprache ist sofort projektweit aktiv.

Alternativ kann die Sprache innerhalb des Projekts mit setLanguage() geändert werden.
Die Änderung ist erst ab Ausführung der Funktion aktiv und betrifft daher nur den Inhalt der Seite ($system['content']).
Die neue Sprache wird in einem Cookie gespeichert und ist ab dem folgenden Seitenaufruf projektweit gültig.

setLanguage('de');

SQL INSERT

Funktion für das Speichern in der Datenbank.
Bei erfolgreichem Query wird die Insert-ID zurückgegeben.
Bei Fehlern wird false zurückgegeben. Die Fehlermeldung wird in der Debug-Datei gespeichert.

Werte ohne Inhalt werden als NULL gespeichert.

sqlInsert(array(
	'connection'	=> $databaseConnection, // kann wegfallen
	'tableName'		=> 'myTable',
	'values'		=> array(
		'column1'	=> 'value1',
		'column2'	=> 'value2',
		'column3'	=> 'value3'
	)
));

SQL UPDATE

Funktion für das Überschreiben in der Datenbank.
Bei erfolgreichem Query wird true zurückgegeben.
Bei Fehlern wird false zurückgegeben. Die Fehlermeldung wird in der Debug-Datei gespeichert.

Werte ohne Inhalt werden als NULL gespeichert.

sqlUpdate(array(
	'connection'	=> $databaseConnection, // kann wegfallen
	'tableName'		=> 'myTable',
	'values'		=> array(
			'column1'	=> 'value1',
			'column2'	=> 'value2',
			'column3'	=> 'value3'
		),
	'where'			=> array(
		array(
			'columnName'	=> 'id',
			'operator'		=> '=',
			'value'			=> 22,
			'logOperator'	=> 'AND' // kann wegfallen
		),
		array(
			'columnName'	=> 'userId',
			'operator'		=> '=',
			'value'			=> 11
		)
	)
));

Statistik

Die Statistik ist standardmäßig aktiviert und wird mit folgender Benutzereinstellung deaktiviert.
Seitenaufrufe werden mit der Aktivierung in die Statistik gespeichert.

$system['settings']['enableStatistics'] = false;

Ein Klick auf einen Link (a-Tag) wird automatisch registriert, sofern dieser eine ID hat.
Die ID wird ebenfalls in die Statistik aufgenommen.
Ein Klick kann auch mittels JavaScript-Funktion in die Statistik aufgenommen werden:

stats_writeClick(actionValue);

Wird der GET-Parameter ic gesetzt, wird dieser identification code in der Statistik erfasst. Dadurch kann ein Link gezielt geteilt werden und in der Statistik ist ersichtlich, wenn dieser konkrete Link geöffnet wurde.
Dieser Parameter erlaubt nur Zahlen (int)!

Um die Statistik auszugeben, wird die Funktion stats_getAll() ausgeführt.

echo stats_getAll();

Überschrift

Quellcode:

<h1>
	
	Überschrift h1
	
	<div class="buttons">
		
		<a class="button circleButton" href="#">
			
			<i class="bi bi-info-lg"></i>
			
		</a>
	
		<a class="button circleButton" href="#">
			
			<i class="bi bi-info-lg"></i>
			
		</a>
	
	</div>
	
</h1>

<h1 class="headerIcon"><i class="bi bi-door-closed-fill"></i>Überschrift h1 mit icon</h1>



<h2>Überschrift h2</h2>

<?php echo lipsum(2); ?>



<h3>Überschrift h3</h3>

<?php echo lipsum(); ?>

Dieser Code erzeugt folgende Ausgabe:

Überschrift h1

Überschrift h1 mit icon

Überschrift h2

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id tempor magna. Maecenas pellentesque porttitor nulla. Phasellus mollis odio et est malesuada, sit amet porta odio dignissim. Aenean posuere, metus non fermentum egestas, libero ex sollicitudin lectus, id pretium erat mi hendrerit turpis. Ut tempor quam vehicula mauris iaculis, ut lacinia tortor varius. Phasellus nunc elit, interdum vel justo vitae, ultricies placerat neque. Pellentesque eu metus vitae leo tincidunt tempor elementum tempor arcu. Fusce rutrum mi dui.

Sed sit amet nisl laoreet, cursus neque vel, tempus felis. Curabitur a turpis accumsan, mollis sapien et, ullamcorper libero. Morbi ullamcorper vitae neque eget posuere. Nunc eget diam fermentum, dignissim sapien nec, maximus purus. In turpis nisi, hendrerit nec velit quis, pretium laoreet massa. Etiam efficitur lectus quis nisi pharetra, vitae accumsan massa porttitor. Duis ac scelerisque nibh, eget commodo odio. Pellentesque ex sem, malesuada sit amet ipsum vel, mollis venenatis mi. Curabitur consectetur justo vitae egestas faucibus. Mauris ut porttitor sapien, a ornare mauris. Sed eget lacus et diam imperdiet elementum nec sit amet nulla. Quisque et placerat eros, vel vestibulum urna.

Überschrift h3

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id tempor magna. Maecenas pellentesque porttitor nulla. Phasellus mollis odio et est malesuada, sit amet porta odio dignissim. Aenean posuere, metus non fermentum egestas, libero ex sollicitudin lectus, id pretium erat mi hendrerit turpis. Ut tempor quam vehicula mauris iaculis, ut lacinia tortor varius. Phasellus nunc elit, interdum vel justo vitae, ultricies placerat neque. Pellentesque eu metus vitae leo tincidunt tempor elementum tempor arcu. Fusce rutrum mi dui.

Update-Modus

Folgende Einstellung aktiviert den Update-Modus.
Die Seite "update" wird angezeigt, außer ein angemeldeter Benutzer ist als admin markiert.

$system['settings']['update'] = true;

Verlinken & weiterleiten

Link erstellen, mit dem auf eine Seite innerhalb des Projekts verlinkt wird:

<a class="button" href="index.php?p=docs">Standard</a>
	
<a class="button" href="https://lang.myhobby.ch/docs">Permalink</a>

<a class="button" href="javascript:goTo('docs');">Ajax</a>

Weiterleiten

Automatisches Weiterleiten mit php:

goToPage('docs');

Automatisches Weiterleiten mit JavaScript:

goTo('docs');

Verzeichnis löschen

Die Funktion deleteDirectory() löscht ein Verzeichnis rekursiv.

deleteDirectory('content/directory');

Wird kein Parameter definiert, wird das Verzeichnis gelöscht, in dem das Script ausgeführt wird.

Zeichenkette validieren

Die Funktion validateString() prüft, ob eine Zeichenkette nur aus Buchstaben und/ oder Zahlen besteht.

Im ersten Parameter wird die zu prüfende Zeichenkette übergeben.
Im zweiten Parameter können Sonderzeichen definiert werden, die erlaubt sind. Wird der zweite Parameter nicht gesetzt, ist nur das Sonderzeichen "-" erlaubt.

if(validateString('Lorem Ipsum 123')) {
	echo 'true';
} else {
	echo 'false';
}

if(validateString('Lorem Ipsum %&/ 123')) {
	echo 'true';
} else {
	echo 'false';
}

if(validateString('Lorem Ipsum %&/ 123', '%&/')) {
	echo 'true';
} else {
	echo 'false';
}

Dieser Code erzeugt folgende Ausgabe:

true
false
true

Zeilen mit Buttons

Quellcode:

<div class="row">
	
	Text
	
	<a class="button" href="#">Button</a>
	
</div>

<div class="box">
	
	<div class="row">
		
		Text
		
		<a class="button" href="#">Button</a>
		
	</div>
	
	<div class="row">
		
		Text
		
		<a class="button circleButton" href="#">
			<i class="bi bi-boxes"></i>
		</a>
		
	</div>
	
</div>

Dieser Code erzeugt folgende Ausgabe:

Text Button
Text Button
Text

Zufallswert/ hash

Die Funktion randomHash() generiert eine zufällige Zeichenkette.
Ohne Parameter wird ein String mit einer Länge von 20 Zeichen generiert. Er beinhaltet Zahlen, Buchstaben und die Sonderzeichen "-" und "_".

Der erste Parameter definiert die Länge des Strings.
Der zweite Parameter definiert, welche Zeichen zusätzlich eingebunden werden. Zahlen und Buchstaben sind immer vorhanden.

echo randomHash();
echo randomHash(10, '#.%-_');

Dieser Code erzeugt folgende Ausgabe:

wi6tFo6vobrKcSRBcC-e
aGE3TseJyA