Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restrukturierung der Docs #319

Merged
merged 1 commit into from
Apr 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
264 changes: 16 additions & 248 deletions README.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,34 @@

![Screenshot](https://github.com/FriendsOfREDAXO/mform/blob/assets/screen_mform7.png?raw=true)

MForm ist ein REDAXO Addon, welches das Erstellen von Modul-Eingabeformularen erheblich erleichtert. Dabei nutzt MForm Templates welche es dem Administrator ermöglichen den Modul-Style seinen Vorstellungen anzupassen. MForm stellt alle gängigen Modul-Input-Formular-Elemente und zusätzlice Widgets bereit welche sich einfach einbinden lassen. MForm eweitert auch **YForm** und **rex_form** um zusätzliche Widgets, z.B. ein Custom-Link-Feld und Image-List für Galerien.
MForm ist ein REDAXO Addon, welches das Erstellen von Modul-Eingabeformularen erheblich erleichtert. Dabei nutzt MForm Templates welche es dem Administrator ermöglichen den Modul-Style seinen Vorstellungen anzupassen. MForm stellt alle gängigen Modul-Input-Formular-Elemente und zusätzlice Widgets bereit welche sich einfach einbinden lassen. MForm eweitert auch **YForm** und **rex_form** um zusätzliche Widgets, z.B. ein Custom-Link-Feld und Image-List für Galerien.

Die beiliegende **Demo-Sammlung** erlaubt das sofortige Ausprobieren von Modul-Codes. Module können direkt installiert und getestet werden. Die Codes sind alle kommentiert.
Die beiliegende **Demo-Sammlung** erlaubt das sofortige Ausprobieren von Modul-Codes. Module können direkt installiert und getestet werden. Die Codes sind alle kommentiert.

## Features

- Erstellen von Moduleingaben per PHP
- Ausgabe der Formulare anpassbar über Fragmente
- Custom Widgets für Verlinkung (auch Yform) und Bilder
- Factory die es ermöglicht Formularteile leicht auszulagern
- Factory die es ermöglicht Formularteile leicht auszulagern
- REDAXO JSON Value Nutzung
- Mehrspaltige Formulare
- Inline-Formular-Elemente
- Modul-Beispiele zur direkten Installation
- HMTL5-Formular-Elemente
- HMTL5-Formular-Elemente
- SQL-Felder
- Collapse, Tabs
- Accordions Wrapper Elemente Via Checkbox
- Collapse, Tabs
- Accordions Wrapper Elemente Via Checkbox
- Radio oder Select steuerbare Collapse Elemente
- Durchgehende MBlock Kompatibilität
- Datalists
- Datalists

**Hinweise**

* Der MForm Formular-Builder ist ausschließlich dafür geeignet REDAXO Modul-Input-Formulare zu generieren!
* Aktuell ist das Imagelist-Widget nicht mblock-kompatibel
- Der MForm Formular-Builder ist ausschließlich dafür geeignet REDAXO Modul-Input-Formulare zu generieren!
- Aktuell ist das Imagelist-Widget nicht mblock-kompatibel


## Installation:
## Installation

MForm kann direkt über den Redaxo-Installer Installiert werden. [MForm Redaxo Addon Page](http://www.redaxo.org/de/download/addons/?addon_id=967&searchtxt=mform&cat_id=-1)

Expand All @@ -43,7 +42,6 @@ MForm kann direkt über den Redaxo-Installer Installiert werden. [MForm Redaxo A

MForm muss im Modul-Input eines REDAXO Moduls als PHP Code notiert werden.


### Instanziierung

```php
Expand Down Expand Up @@ -80,8 +78,8 @@ $MForm = MForm::factory()
->setLabel('Text Field')
->setAttributes(['style' => 'width:200px', 'class' => 'test-field']);
```
Der `REX_VALUE-Key` muss jeder Formular-Input-Methode als Pflichtfeld übergeben werden. Informative Elemente benötigen keine ID.

Der `REX_VALUE-Key` muss jeder Formular-Input-Methode als Pflichtfeld übergeben werden. Informative Elemente benötigen keine ID.

##### Full JSON Value Support

Expand Down Expand Up @@ -109,240 +107,10 @@ echo MForm::factory()
->show();
```

### Element-Methoden

MForm stellt folgende Element-Methoden bereit:

* Strukturelle Wrapper-Elemente
* `addFieldsetArea`
* `addCollapseElement`
* `addAccordionElement`
* `addTabElement`
* `addColumnElement`
* `addInlineElement`
* Text-Input- und Hidden-Elemente
* `addTextField`
* `addHiddenField`
* `addTextAreaField`
* `addTextReadOnlyField`
* `addTextAreaReadOnlyField`
* Select-Elemente
* `addSelectField`
* `addMultiSelectField`
* Checkbox- und Radio-Elemente
* `addCheckboxField`
* `addRadioField`
* Informelle-Elemente
* `addHtml`
* `addHeadline`
* `addDescription`
* `addAlert`
* `addAlertDanger`, `addAlertError`
* `addAlertInfo`
* `addAlertSuccess`
* `addAlertWarning`
* System-Button-Elemente
* `addLinkField`
* `addLinklistField`
* `addMediaField`
* `addMedialistField`
* Custom-Elemente
* `addCustomLinkField`
* `addImagelistField`
* `addInputField`
* Spezielle `setter`-Methoden
* `setAttribute`
* `setAttributes`
* `setCategory`
* `setCollapseInfo`
* `setDefaultValue`
* `setDisableOption`
* `setDisableOptions`
* `setFormItemColClass`
* `setFull`
* `setLabel`
* `setLabelColClass`
* `setMultiple`
* `setOption`
* `setOptions`
* `setParameter`
* `setParameters`
* `setPlaceholder`
* `setSize`
* `setSqlOptions`
* `setTabIcon`
* `setToggleOptions`
* `setTooltipInfo`

## Ausgabe

MForm nutzt die von REDAXO bereitgestellten REDAXO Variablen. Entweder als klassische oder als JSON-Values.
Informationen hierzu in der [REDAXO Doku](https://www.redaxo.org/doku/main/redaxo-variablen).

## Custom-Link Element

Das Custom MForm Custom-Link-Element ermöglicht es durch den Einsatz eines Feldes mehrere Link-Typen definieren zu können.
Das Cusotm-Link-Element steht in MForm, YForm und auch als REX_VAR zur Verfügung.

Die Link Typen des Custom-Link-Elements:

* `data-extern`
* `data-intern`
* `data-media`
* `data-mailto`
* `data-tel`
* `ylink`

Jeder dieser Typen kann aktiviert oder deaktiviert werden. Per default sind folgende Typen aktiv:

* `data-extern`
* `data-intern`
* `data-media`


### Verwendung mit MBlock

Das Custom-Link-Element darf keinen String (wie bei anderen Elementen) in der ID enthalten:

`$MBlock->addCustomLinkField("$id.0.1",array('label'=>'Link'));`


### Beispiel-Code:

#### MForm

```php
$mform = new MForm();
$ylink = [['name' => 'Countries', 'table'=>'rex_ycountries', 'column' => 'de_de']];
$mform->addCustomLinkField(1, ['label' => 'custom', 'data-intern'=>'disable', 'data-extern'=>'enable', 'ylink' => $ylink]);
echo $mform->show();
```

### Als REX_VAR

```html
REX_CUSTOM_LINK[id=5 widget=1 external=1 intern=0 mailto=0 phone=1 media=1 ylink="Countries::rex_ycountries::de_de,CountriesEN::rex_ycountries::en_gb"]
```

#### Auslesen der YLinks per Outputfilter

#### YForm links

Um die generierten Urls wie `rex_news://1` zu ersetzen, muss das folgende Skript in die `boot.php` des `project` AddOns eingefügt werden.
Der Code für die Urls muss modifiziert werden.

```php
rex_extension::register('OUTPUT_FILTER', function(\rex_extension_point $ep) {
return preg_replace_callback(
'@((rex_news|rex_person))://(\d+)(?:-(\d+))?/?@i',
function ($matches) {
// table = $matches[1]
// id = $matches[3]
$url = '';
switch ($matches[1]) {
case 'news':
// Example, if the Urls are generated via Url-AddOn
$id = $matches[3];
if ($id) {
return rex_getUrl('', '', ['news' => $id]);
}
break;
case 'person':
// ein anderes Beispiel
$url = '/index.php?person='.$matches[3];
break;
}
return $url;
},
$ep->getSubject()
);
}, rex_extension::NORMAL);

```


#### Auslesen der Ylinks manuell:

```php
$link = explode("://", $img['link']);

if (count($link) > 1) {
// its a table link
// url AddOn
$url = rex_getUrl('', '', [$link[0] => $link[1]]); // key muss im url addon übereinstimmen
} else {
$extUrl = parse_url($link[0]);

if (isset($extUrl['scheme']) && ($extUrl['scheme'] == 'http' || $extUrl['scheme'] == 'https')) {
// its an external link
$url = $link[0];
} else {
// internal id
$url = rex_getUrl($link[0]);
}
}
```

#### Custom Link auslesen

MForm liefert eine Methode zum Auslesen und Auswerten der Custom-Links.
`MForm\Utils\MFormOutputHelper::prepareCustomLink(array $item, $externBlank = true)`

Die Methode nimmt ein Array für den Link an und gibt ein Array mit verarbeiteten Links zurück.

```php
$link = '10';
$linkdata = MForm\Utils\MFormOutputHelper::prepareCustomLink(['link' => $link], true);
```

Ergebnis:

```
^ array:5 [▼
"link" => "10"
"customlink_text" => "Artikelname"
"customlink_url" => "/artikelname"
"customlink_target" => ""
"customlink_class" => " intern"
]
```

Benötigt man nur den Link oder möchte man mehr Erkennungsmöglichkeiten realisieren, kann man folgendes Beispiel verwenden.

Die nachfolgende Funktion dient dazu den von MForm / Mblock generierten CustomLink auszulesen und korrekt zu verlinken. Die Funktion kann in der Ausgabe eines Moduls genutzt werden oder ggf. im Theme- oder Projektaddon verwendet werden. Sie kann auch allgemein dazu verwendet werden, einen unbekannten Link zu identifizieren

Die Funktion kann in der functions.php vom theme-AddOn oder in der boot.php vom project-AddOn hinterlegt werden:

```php
// CustomLink-Funktion REX5 / mform / mblock

if (!function_exists('getcustomLink')) {
function getcustomLink($url) {

// Wurde ein Wert für $url übergeben?
if ($url) {

// Prüfe ob es sich um eine URL handelt, dann weiter
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
}

// Ist es eine Mediendatei?
if (file_exists(rex_path::media($url)) === true) {
$url = rex_url::media($url);
}
else {
// Ist es keine Mediendatei oder URL, dann als REDAXO-Artikel-ID behandeln
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE and is_numeric($url)) {
$url = rex_getUrl($url);
}
}

return $url;
}
}
}
```
## Ausgabe

MForm nutzt die von REDAXO bereitgestellten REDAXO Variablen. Entweder als klassische oder als JSON-Values.
Informationen hierzu in der [REDAXO Doku](https://www.redaxo.org/doku/main/redaxo-variablen).

## Lizenz

Expand All @@ -356,8 +124,8 @@ siehe [CHANGELOG.md](https://github.com/FriendsOfREDAXO/mform/blob/master/CHANGE

**Friends Of REDAXO**

* http://www.redaxo.org
* https://github.com/FriendsOfREDAXO
- <http://www.redaxo.org>
- <https://github.com/FriendsOfREDAXO>

**Projekt-Lead**

Expand Down
Loading