Skip to content

Instantly share code, notes, and snippets.

@jdlx
Created July 3, 2012 10:53
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jdlx/3039059 to your computer and use it in GitHub Desktop.
Save jdlx/3039059 to your computer and use it in GitHub Desktop.
Verbesserte Action zum Erweitern von REX_VALUES (von Redaxo Forums-user "Frezl")
<?php
// wirkt bei "Block speichern" und "Block übernehmen", bevor in die DB gespeichert wird.
// rexname serialisieren und in REX_VALUE[20] schreiben:
$REX_ACTION['VALUE'][20] = urlencode (serialize (rex_request ("rexname", "array")));
?>
<?php
// wirkt bei nach "Block übernehmen", bevor das Slice wieder angezeigt wird.
$REX_ACTION['VALUE'][20] = $rexname;
?>
<?php
$rexname = unserialize (urldecode ("REX_VALUE[20]"));
?>
<label for="input_aepfel">Äpfel:</label><input type="text" name="rexname[aepfel]" value="<?php echo $rexname['aepfel']; ?>" id="input_aepfel" /><br />
<label for="input_birnen">Birnen:</label><input type="text" name="rexname[birnen]" value="<?php echo $rexname['birnen']; ?>" id="input_birnen"/><br />
<input type="checkbox" name="rexname[leben]" value="<?php echo $row['type_id']; ?>" id="checkbox_leben" <?php if (isset ($rexname["leben"])) { echo "checked=\"checked\""; } ?>/>
<label for="checkbox_leben">Das Leben ist schön!</label>
<?php
$rexname = unserialize (urldecode ("REX_VALUE[20]"));
?>
Äpfel: <?php echo $rexname['aepfel']; ?><br />
Birnen: <?php echo $rexname['birnen']; ?><br />
<?php
if (isset ($rexname['leben'])) {
echo "Das Leben ist schön!";
}
?>
@tgoellner
Copy link

Bei mir gab's immer mal ein paar Probleme.

Zum einen werden Anführungszeichen innerhalb von TinyMCE-Blöcken (bspw. im IMG-Tag) mit Escape-Zeichen gespeichert, das habe ich behoben, indem die action_PRESAVE_Add-Edit.php bei mir so aussieht:

<?php
$tmp = array();
foreach(rex_request('rexname', 'array',array()) as $k=>$v)
    $tmp[$k] = stripslashes($v);

$REX_ACTION['VALUE'][20] = urlencode(serialize($tmp));
unset($tmp,$k,$v);
?>

Zum anderen verschwanden die Werte, wenn man lediglich BLOCK ÜBERNEHMEN statt BLOCK SPEICHERN geklickt hat - hab's nun so gelöst, dass die action_PREVIEW_Add-Edit.php nun so aussieht:

<?php
if(empty($REX_ACTION['VALUE'][20]))
{
    if(empty($rexname))
    {
        $vs = rex_sql::factory();
        $vs->setQuery("SELECT `value20` FROM `".$REX['TABLE_PREFIX']."article_slice` WHERE `id`=".$REX_ACTION['SLICE_ID']);

        if ($vs->getRows()>0)
        {
            $vsr= $vs->getRow();
            $REX_ACTION['VALUE'][20] = $vsr['value20'];
        }
    }
    else
    {
        $REX_ACTION['VALUE'][20] = $rexname;
    }
}
?>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment