Affenformular/Klassendefinition
Zur Navigation springen
Zur Suche springen
PHP-Code
class AffenForm
{
public function __construct()
{
global $wgParser;
$wgParser->setHook(AFFEN_NAME, array(&$this, AFFEN_HOOK));
}
public function hookAffen($input, $argv, $parser)
{
global $IP, $wgServer, $wgScriptPath, $wgUploadPath, $wgHooks, $wgParser, $wgHtml5, $wgScript, $wgOut;
$sent = !empty($_POST); # check form status first call/alread sent
$reset = ($sent and $_POST["tuwas"] == 1);; # if sent: do or reset
$neu = ($sent and $_POST["tuwas"] == 2);
$myparm = $wgParser->recursiveTagParse( '28.2.2024' ); # first input field is date
foreach ( $argv as $arg => $val )
{
$$arg = $val; # die Variablen erhalten den Namen der Parameter
}
$feld1 = $feld2 = $feld3 = '';
if (!empty($argv['default']))
$myparm = $argv['default']; # enter default Text as default="..."
if ($sent)
{
if ($reset)
{
$feld1 = $feld2 = $feld3 = '';
}
else
{
#if (!empty($_POST['feld1']))
$feld1 = $this->check_input($this->clear_input($_POST['feld1']), 'd');
if (!empty($_POST['feld2']))
$feld2 = $this->clear_input($_POST['feld2']);
if (!empty($_POST['feld3']))
$feld3 = $this->clear_input($_POST['feld3']);
}
}
$button_style = 'border-radius: 1em; background-image: linear-gradient(90deg, #8f8,#cfc); padding: 0.5em 1.5em;'
. ' box-shadow: inset -2px -2px 5px #080; color: #080; font-weight: bold; font-size: 110%' ;
$div_beg = '<div style="margin-bottom: 0"><div style="width: 15em; display: inline-block; padding-right: 0.5em; text-align: right">';
$formid = str_shuffle('abcdefghijklmnopqrst'); # zufällige Sequenz erzeugen um eindeutige IDs zu erhalten falls mehrere Formulare auf einer Seite verwendet werden
# die Wahrscheinlichkeit mit 20 Zeichen die gleiche Sequenz zu erzeugen liegt bei 1:2.432.902.008.176.640.000
# wenn man 77.1 Milliarden Jahren jede Sekunde eine Sequenz durchprobiert, erhält man eine Sequenz doppelt
$myForm = "<form id='$formid' method='post'>";
$myForm .= '<input type="hidden" name="action" value="view" >' ;
$myForm .= '<input type="hidden" name="' . AFFEN_IDENTIFIER . '" value="send" >';
$myForm .= $div_beg . 'Feld1:</div><input name="feld1" size="10" maxlength="10" placeholder="1.1.2019" value="' . $feld1 . '"></div><br>';
$myForm .= $div_beg . 'Feld2:</div><input type="text" name="feld2" placeholder="inhalt2" size="40" value="' . $feld2 . '"></div><br>';
$myForm .= $div_beg . 'Feld3:</div><input type="text" name="feld3" placeholder="inhalt3" size="40" value="' . $feld3 . '"></div><br>';
$myForm .= $div_beg . '<button style="' . $button_style . '" type="submit" name="tuwas" value="0" formmethod="post">Aktion durchführen</button></div>';
$myForm .= '<div style="display: inline-block; padding-right: 0.5em;"><button style="' . $button_style . '" type="submit" name="tuwas" value="1" formtarget="_blank" formmethod="post">Aktion in neuem Fenster durchführen</button></div>';
$myForm .= '<button style="' . $button_style . '" type="submit" name="tuwas" value="2" formmethod="post">Eingabe zurücksetzen</button></div>';
$myForm .= '</form>';
if ($sent and !$reset)
{
if (empty($feld1))
{
return $myForm . '<div style="font-weight: bold; color: #00f">Feld 1 fehlt, bitte eingeben</div>';
}
$content = array("feld1"=>$feld1, "feld2"=> $feld2, "feld3"=>$feld3, "input"=>$input );
$seite = $this->DoSomething($content);
if ($neu)
$myForm = $seite . '<p>******************<p>' . $this->render_wikitext($seite);
else
$myForm .= $seite;
}
return $myForm;
}