Exemple #1
0
            </thead>
            <tbody>';
    foreach ($addon['files'] as $fileId => $file) {
        $content .= '
            <tr>
                <td class="rex-icon"><span class="rex-i-element rex-i-addon"><span class="rex-i-element-text"></span></span></td>
                <td class="rex-version">' . htmlspecialchars($file['version']) . '</td>
                <td class="rex-description">' . nl2br(htmlspecialchars($file['description'])) . '</td>
                <td class="rex-function"><a class="rex-link rex-download" href="index.php?page=install&amp;subpage=add&amp;addonkey=' . htmlspecialchars($addonkey) . '&amp;func=add&amp;file=' . htmlspecialchars($fileId) . '">' . $I18N->msg('install_download') . '</a></td>
            </tr>';
    }
    $content .= '</tbody></table></div>';
    $content .= rex_content_block('<a class="rex-back" href="index.php?page=install&amp;subpage=add">' . $I18N->msg('install_back_to_overview') . '</a>');
    echo $content;
} else {
    echo rex_content_block('<input type="text" id="rex-install-addon-search" class="rex-form-text" placeholder="Suchen…" style="width: 300px"/>');
    $content = '
    <div class="rex-addon-output">
        <h2 class="rex-hl2">' . $I18N->msg('install_addons_found', count($addons)) . '</h2>
        <table id="rex-table-install-packages-addons" class="rex-table rex-table-striped">
            <colgroup>
              <col width="40">
              <col width="153">
              <col width="*">
              <col width="153">
            </colgroup>
         <thead>
            <tr>
                <th class="rex-icon"><a class="rex-i-refresh rex-i-element" href="index.php?page=install&amp;subpage=add&amp;func=reload" title="' . $I18N->msg('install_reload') . '"><span class="rex-i-element-text">' . $I18N->msg('install_reload') . '</span></a></th>
                <th class="rex-key">' . $I18N->msg('install_key') . '</th>
                <th class="rex-shortdescription">' . $I18N->msg('install_shortdescription') . '</th>
    function getFieldPage()
    {
        global $REX, $I18N;
        // ********************************************* FIELD ADD/EDIT/LIST
        $func = rex_request('func', 'string', 'list');
        $page = rex_request('page', 'string', '');
        $subpage = rex_request('subpage', 'string', '');
        $tripage = rex_request('tripage', 'string', '');
        $type_id = rex_request('type_id', 'string');
        $type_name = rex_request('type_name', 'string');
        $field_id = rex_request('field_id', 'int');
        $show_list = true;
        $link_vars = '';
        foreach ($this->getLinkVars() as $k => $v) {
            $link_vars .= '&' . urlencode($k) . '=' . urlencode($v);
        }
        $TYPE = array('value' => $I18N->msg('xform_values'), 'validate' => $I18N->msg('xform_validates'), 'action' => $I18N->msg('xform_action'));
        // ********************************** TABELLE HOLEN
        $table = $this->table;
        $table_info = '<b>' . rex_translate($table->getName()) . ' [' . $table->getTableName() . ']</b> ';
        echo rex_content_block($table_info);
        // ********************************************* Missing Fields
        $mfields = $table->getMissingFields();
        // ksort($mfields);
        $type_real_field = rex_request('type_real_field', 'string');
        if ($type_real_field != '' && !array_key_exists($type_real_field, $mfields)) {
            $type_real_field = '';
        }
        if ($type_real_field != '') {
            ?>
            <div class="rex-addon-output"><h2 class="rex-hl2">Folgendes Feld wird verwendet: <?php 
            echo $type_real_field;
            ?>
</h2><div class="rex-addon-content"><p class="rex-tx1"><?php 
            $rfields = $this->table->getColumns();
            foreach ($rfields[$type_real_field] as $k => $v) {
                echo '<b>' . $k . ':</b> ' . $v . '<br />';
            }
            ?>
</p></div></div><?php 
        }
        // ********************************************* CHOOSE FIELD
        $types = rex_xform::getTypeArray();
        if ($func == 'choosenadd') {
            // type and choose !!
            $link = 'index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '&func=add&';
            if (!$table->hasId()) {
                ?>
                <div class="rex-addon-output" id="xform-choosenadd"><h2 class="rex-hl2"><?php 
                echo $I18N->msg('xform_id_is_missing');
                ?>
</h2><div class="rex-addon-content">
                        <p class="rex-tx1"><?php 
                echo $I18N->msg('xform_id_missing_info');
                ?>
</p>
                    </div></div>
            <?php 
            } else {
                ?>
                <div class="rex-addon-output" id="xform-choosenadd"><h2 class="rex-hl2"><?php 
                echo $I18N->msg('xform_choosenadd');
                ?>
</h2><div class="rex-addon-content">
                        <p class="rex-tx1"><?php 
                echo $I18N->msg('xform_choosenadd_description');
                ?>
</p>
                    </div></div>
                <?php 
                if ($type_real_field == '' && count($mfields) > 0) {
                    ?>
                    <div class="rex-addon-output"><h2 class="rex-hl2">Es gibt noch Felder in der Tabelle welche nicht zugewiesen sind.</h2><div class="rex-addon-content">
                            <?php 
                    $d = 0;
                    foreach ($mfields as $k => $v) {
                        $d++;
                        $l = 'index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '&func=choosenadd&type_real_field=' . $k . '&type_layout=t';
                        echo '<a href="' . $l . '">' . $k . '</a>, ';
                    }
                    ?>
</div></div>

                <?php 
                }
                ?>


                <div class="rex-addon-output xform-table_field">
                    <div class="rex-area-col-2">

                        <div class="rex-area-col-a">
                            <h3 class="rex-hl2">beliebte <?php 
                echo $TYPE['value'];
                ?>
</h3>
                            <div class="rex-area-content"><p class="rex-tx1"><?php 
                if (isset($types['value'])) {
                    ksort($types['value']);
                    foreach ($types['value'] as $k => $v) {
                        if (isset($v['famous']) && $v['famous']) {
                            echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=value&type_name=' . $k . '&type_real_field=' . $type_real_field . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>';
                        }
                    }
                }
                ?>
</p></div></div>

                        <div class="rex-area-col-b"><h3 class="rex-hl2">beliebte <?php 
                echo $TYPE['validate'];
                ?>
</h3><div class="rex-area-content"><p class="rex-tx1"><?php 
                if (isset($types['validate'])) {
                    ksort($types['validate']);
                    foreach ($types['validate'] as $k => $v) {
                        if (isset($v['famous']) && $v['famous']) {
                            echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=validate&type_name=' . $k . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>';
                        }
                    }
                }
                ?>
</p></div></div>

                    </div></div>

                <div class="rex-addon-output xform-table_field">
                    <div class="rex-area-col-2">

                        <div class="rex-area-col-a"><h3 class="rex-hl2"><?php 
                echo $TYPE['value'];
                ?>
</h3><div class="rex-area-content"><p class="rex-tx1"><?php 
                if (isset($types['value'])) {
                    ksort($types['value']);
                    foreach ($types['value'] as $k => $v) {
                        if (!isset($v['famous']) || $v['famous'] !== true) {
                            echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=value&type_name=' . $k . '&type_real_field=' . $type_real_field . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>';
                        }
                    }
                }
                ?>
</p></div></div>

                        <div class="rex-area-col-b"><h3 class="rex-hl2"><?php 
                echo $TYPE['validate'];
                ?>
</h3><div class="rex-area-content"><p class="rex-tx1"><?php 
                if (isset($types['validate'])) {
                    ksort($types['validate']);
                    foreach ($types['validate'] as $k => $v) {
                        if (!isset($v['famous']) || $v['famous'] !== true) {
                            echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=validate&type_name=' . $k . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>';
                        }
                    }
                }
                ?>
</p></div></div>

                    </div></div>

                <!--
             <div class="rex-addon-output">
             <h2 class="rex-hl2"><?php 
                echo $TYPE['action'];
                ?>
</h2>
             <div class="rex-addon-content">
             <p class="rex-tx1"><?php 
                if (isset($types['action'])) {
                    ksort($types['action']);
                    foreach ($types['action'] as $k => $v) {
                        echo '<p class="rex-button">"<a href="' . $link . 'type_id=action&type_name=' . $k . '">' . $k . '</a>" - ' . $v['description'] . '</p>';
                    }
                }
                ?>
</p>
             </div>
             </div>
             -->

            <?php 
            }
            $table_echo = '<a href="index.php?' . $link_vars . '&amp;table_name=' . $table->getTableName() . '"><b>&laquo; ' . $I18N->msg('xform_back_to_overview') . '</b></a>';
            echo rex_content_block($table_echo);
        }
        // ********************************************* FORMULAR
        if (($func == 'add' || $func == 'edit') && isset($types[$type_id][$type_name])) {
            $xform = new rex_xform();
            $xform->setDebug(false);
            foreach ($this->getLinkVars() as $k => $v) {
                $xform->setHiddenField($k, $v);
            }
            $xform->setHiddenField('func', $func);
            $xform->setHiddenField('table_name', $table->getTableName());
            $xform->setHiddenField('type_real_field', $type_real_field);
            $xform->setHiddenField('list', rex_request('list', 'string'));
            $xform->setHiddenField('sort', rex_request('sort', 'string'));
            $xform->setHiddenField('sorttype', rex_request('sorttype', 'string'));
            $xform->setHiddenField('start', rex_request('start', 'string'));
            $xform->setValueField('hidden', array('table_name', $table->getTableName()));
            $xform->setValueField('hidden', array('type_name', $type_name, 'REQUEST'));
            $xform->setValueField('hidden', array('type_id', $type_id, 'REQUEST'));
            $xform->setValueField('prio', array('prio', 'Prioritaet', array('name', 'type_id', 'type_name'), array('table_name')));
            $selectFields = array();
            $i = 1;
            foreach ($types[$type_id][$type_name]['values'] as $k => $v) {
                $field = $this->getFieldName($k, $type_id);
                $selectFields['f' . $i] = $field;
                $i++;
                switch ($v['type']) {
                    case 'name':
                        if ($func == 'edit') {
                            $xform->setValueField('showvalue', array($field, 'Name'));
                        } else {
                            if (!isset($v['value']) && $type_real_field != '') {
                                $v['value'] = $type_real_field;
                            } elseif (!isset($v['value'])) {
                                $v['value'] = '';
                            }
                            $xform->setValueField('text', array($field, 'Name', $v['value']));
                            $xform->setValidateField('notEmpty', array($field, $I18N->msg('xform_validatenamenotempty')));
                            $xform->setValidateField('preg_match', array($field, "/(([a-zA-Z])+([a-zA-Z0-9\\_])*)/", $I18N->msg('xform_validatenamepregmatch')));
                            $xform->setValidateField('customfunction', array($field, 'rex_xform_manager_checkField', array('table_name' => $table->getTableName()), $I18N->msg('xform_validatenamecheck')));
                        }
                        break;
                    case 'no_db':
                        if (!isset($v['default']) || $v['default'] != 1) {
                            $v['default'] = 0;
                        }
                        $xform->setValueField('checkbox', array($field, $I18N->msg('xform_donotsaveindb'), 'no_db', $v['default']));
                        break;
                    case 'boolean':
                        // checkbox|check_design|Bezeichnung|Value|1/0|[no_db]
                        if (!isset($v['default'])) {
                            $v['default'] = '';
                        }
                        $xform->setValueField('checkbox', array($field, $v['label'], '', $v['default']));
                        break;
                    case 'select':
                        // select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|multiple=1
                        $xform->setValueField('select', array($field, $v['label'], $v['options'], '', $v['default'], 0));
                        break;
                    case 'table':
                        // ist fest eingetragen, damit keine Dinge durcheinandergehen
                        if ($func == 'edit') {
                            $xform->setValueField('showvalue', array($field, $v['label']));
                        } else {
                            $_tables = rex_xform_manager_table::getAll();
                            $_options = array();
                            if (isset($v['empty_option']) && $v['empty_option']) {
                                $_options[0] = '–=';
                            }
                            foreach ($_tables as $_table) {
                                $_options[$_table['table_name']] = str_replace('=', '-', rex_translate($_table['name']) . ' [' . $_table['table_name'] . ']') . '=' . $_table['table_name'];
                                $_options[$_table['table_name']] = str_replace(',', '.', $_options[$_table['table_name']]);
                            }
                            if (!isset($v['default'])) {
                                $v['default'] = '';
                            }
                            $xform->setValueField('select', array($field, $v['label'], implode(',', $_options), '', $v['default'], 0));
                        }
                        break;
                    case 'textarea':
                        $xform->setValueField('textarea', array($field, $v['label']));
                        break;
                    case 'table.field':
                        // Todo:
                    // Todo:
                    case 'select_name':
                        $_fields = array();
                        foreach ($table->getValueFields() as $_k => $_v) {
                            $_fields[] = $_k;
                        }
                        $xform->setValueField('select', array($field, $v['label'], implode(',', $_fields), '', '', 0));
                        break;
                    case 'select_names':
                        $_fields = array();
                        foreach ($table->getValueFields() as $_k => $_v) {
                            $_fields[] = $_k;
                        }
                        $xform->setValueField('select', array($field, $v['label'], implode(',', $_fields), '', '', 1, 5));
                        break;
                    default:
                        // nur beim "Bezeichnungsfeld"
                        if ($field == 'label' && $type_real_field != '' && !isset($v['value'])) {
                            $v['value'] = $type_real_field;
                        } elseif (!isset($v['value'])) {
                            $v['value'] = '';
                        }
                        $xform->setValueField('text', array($field, $v['label'], $v['value']));
                }
            }
            $xform->setActionField('showtext', array('', '<p>' . $I18N->msg('xform_thankyouforentry') . '</p>'));
            $xform->setObjectparams('main_table', rex_xform_manager_field::table());
            if ($func == 'edit') {
                $xform->setObjectparams('submit_btn_label', $I18N->msg('xform_save'));
                $xform->setHiddenField('field_id', $field_id);
                $xform->setActionField('manage_db', array(rex_xform_manager_field::table(), "id={$field_id}"));
                $xform->setObjectparams('main_id', $field_id);
                $xform->setObjectparams('main_where', "id={$field_id}");
                $sql = rex_sql::factory();
                $sql->setQuery('SELECT * FROM ' . rex_xform_manager_field::table() . " WHERE id={$field_id}");
                foreach ($selectFields as $alias => $field) {
                    if ($alias != $field) {
                        if ((!$sql->hasValue($field) || null === $sql->getValue($field) || '' === $sql->getValue($field)) && $sql->hasValue($alias)) {
                            $sql->setValue($field, $sql->getValue($alias));
                        }
                        $xform->setValueField('hidden', array($alias, ''));
                    }
                }
                $xform->setObjectparams('sql_object', $sql);
                $xform->setObjectparams('getdata', true);
            } elseif ($func == 'add') {
                $xform->setObjectparams('submit_btn_label', $I18N->msg('xform_add'));
                $xform->setActionField('manage_db', array(rex_xform_manager_field::table()));
            }
            if ($type_id == 'value') {
                $xform->setValueField('checkbox', array('list_hidden', $I18N->msg('xform_hideinlist'), 1, '1'));
                $xform->setValueField('checkbox', array('search', $I18N->msg('xform_useassearchfieldalidatenamenotempty'), 1, '1'));
            } elseif ($type_id == 'validate') {
                $xform->setValueField('hidden', array('list_hidden', 1));
            }
            $form = $xform->getForm();
            if ($xform->objparams['form_show']) {
                if ($func == 'add') {
                    echo '<div class="rex-addon-output"><h3 class="rex-hl2">' . $I18N->msg('xform_addfield') . ' "' . $type_name . '"</h3><div class="rex-addon-content">';
                } else {
                    echo '<div class="rex-addon-output"><h3 class="rex-hl2">' . $I18N->msg('xform_editfield') . ' "' . $type_name . '"</h3><div class="rex-addon-content">';
                }
                echo $form;
                echo '</div></div>';
                $table_echo = '<a href="index.php?' . $link_vars . '&amp;table_name=' . $table->getTableName() . '"><b>&laquo; ' . $I18N->msg('xform_back_to_overview') . '</b></a>';
                echo rex_content_block($table_echo);
                $func = '';
            } else {
                if ($func == 'edit') {
                    $this->generateAll();
                    echo rex_info($I18N->msg('xform_thankyouforupdate'));
                } elseif ($func == 'add') {
                    $this->generateAll();
                    echo rex_info($I18N->msg('xform_thankyouforentry'));
                }
                $func = 'list';
            }
        }
        // ********************************************* LOESCHEN
        if ($func == 'delete') {
            $sf = new rex_sql();
            $sf->debugsql = self::$debug;
            $sf->setQuery('select * from ' . rex_xform_manager_field::table() . ' where table_name="' . $table->getTableName() . '" and id=' . $field_id);
            $sfa = $sf->getArray();
            if (count($sfa) == 1) {
                $query = 'delete from ' . rex_xform_manager_field::table() . ' where table_name="' . $table->getTableName() . '" and id=' . $field_id;
                $delsql = new rex_sql();
                $delsql->debugsql = self::$debug;
                $delsql->setQuery($query);
                echo rex_info($I18N->msg('xform_tablefielddeleted'));
                $this->generateAll();
            } else {
                echo rex_warning($I18N->msg('xform_tablefieldnotfound'));
            }
            $func = 'list';
        }
        // ********************************************* CREATE/UPDATE FIELDS
        if ($func == 'updatetable') {
            $this->generateAll();
            echo rex_info($I18N->msg('xform_tablesupdated'));
            $func = 'list';
        }
        if ($func == 'updatetablewithdelete') {
            $this->generateAll(array('delete_fields' => true));
            echo rex_info($I18N->msg('xform_tablesupdated'));
            $func = 'list';
        }
        if ($func == 'show_form_notation') {
            $formbuilder_fields = $table->getFields();
            $notation_php = '';
            $notation_pipe = '';
            $notation_email = '';
            $notation_php_pre = array('$xform = new rex_xform();', '$xform->setObjectparams(\'form_skin\', \'default\');', '$xform->setObjectparams(\'form_showformafterupdate\', 0);', '$xform->setObjectparams(\'real_field_names\', true);');
            $notation_php .= implode("\n", $notation_php_pre) . "\n";
            $notation_pipe_pre = array('objparams|form_skin|default', 'objparams|form_showformafterupdate|0', 'objparams|real_field_names|true');
            $notation_pipe .= implode("\n", $notation_pipe_pre) . "\n";
            foreach ($formbuilder_fields as $field) {
                $classname = rex_xform::includeClass($field['type_id'], $field['type_name']);
                $cl = new $classname();
                $definitions = $cl->getDefinitions();
                $values = array();
                $i = 1;
                foreach ($definitions['values'] as $key => $_) {
                    $key = $this->getFieldName($key, $field['type_id']);
                    if (isset($field[$key])) {
                        $values[] = $field[$key];
                    } elseif (isset($field['f' . $i])) {
                        $values[] = $field['f' . $i];
                    } else {
                        $values[] = '';
                    }
                    $i++;
                }
                if ($field['type_id'] == 'value') {
                    $notation_php .= "\n" . '$xform->setValueField(\'' . $field['type_name'] . '\', array("' . rtrim(implode('","', $values), '","') . '"));';
                    $notation_pipe .= "\n" . $field['type_name'] . '|' . rtrim(implode('|', $values), '|') . '|';
                    $notation_email .= "\n" . $field['label'] . ': ###' . $field['name'] . '###';
                } elseif ($field['type_id'] == 'validate') {
                    $notation_php .= "\n" . '$xform->setValidateField(\'' . $field['type_name'] . '\', array("' . rtrim(implode('","', $values), '","') . '"));';
                    $notation_pipe .= "\n" . $field['type_id'] . '|' . $field['type_name'] . '|' . rtrim(implode('|', $values), '|') . '|';
                } elseif ($field['type_id'] == 'action') {
                    $notation_php .= "\n" . '$xform->setActionField(\'' . $field['type_name'] . '\', array("' . rtrim(implode('","', $values), '","') . '"));';
                    $notation_pipe .= "\n" . $field['type_id'] . '|' . $field['type_name'] . '|' . rtrim(implode('|', $values), '|') . '|';
                }
            }
            $notation_php .= "\n\n" . '$xform->setActionField(\'db2email\', array(\'emailtemplate\', \'emaillabel\', \'email@domain.de\'));';
            $notation_php .= "\n" . 'echo $xform->getForm();';
            $notation_pipe .= "\n\n" . 'action|db2email|emailtemplate|emaillabel|email@domain.de';
            echo '<div class="rex-addon-output">';
            echo '<h2 class="rex-hl2">PHP</h2>';
            echo '<div class="rex-addon-content">';
            echo '<pre class="rex-code"><code>' . $notation_php . '</code></pre>';
            echo '</div></div>';
            echo '<div class="rex-addon-output">';
            echo '<h2 class="rex-hl2">Pipe</h2>';
            echo '<div class="rex-addon-content">';
            echo '<pre class="rex-code"><code>' . $notation_pipe . '</code></pre>';
            echo '</div></div>';
            echo '<div class="rex-addon-output">';
            echo '<h2 class="rex-hl2">E-Mail</h2>';
            echo '<div class="rex-addon-content">';
            echo '<pre class="rex-code"><code>' . $notation_email . '</code></pre>';
            echo '</div></div>';
            $func = 'list';
        }
        // ********************************************* LIST
        if ($func == 'list') {
            // ****** EP XFORM_MANAGER_TABLE_FIELD_FUNC
            $show_list = true;
            $show_list = rex_register_extension_point('XFORM_MANAGER_TABLE_FIELD_FUNC', $show_list, array('table' => $table, 'link_vars' => $this->getLinkVars()));
            if ($show_list) {
                function rex_xform_list_format($p, $value = '')
                {
                    if ($value != '') {
                        $p['value'] = $value;
                    }
                    switch ($p['list']->getValue('type_id')) {
                        case 'validate':
                            $style = 'color:#aaa;';
                            // background-color:#cfd9d9;
                            break;
                        case 'action':
                            $style = 'background-color:#cfd9d9;';
                            break;
                        default:
                            $style = 'background-color:#eff9f9;';
                            break;
                    }
                    return '<td style="' . $style . '">' . $p['value'] . '</td>';
                }
                function rex_xform_list_edit_format($p)
                {
                    global $REX, $I18N;
                    return rex_xform_list_format($p, $p['list']->getColumnLink($I18N->msg('xform_edit'), $I18N->msg('xform_edit')));
                }
                function rex_xform_list_delete_format($p)
                {
                    global $REX, $I18N;
                    return rex_xform_list_format($p, $p['list']->getColumnLink($I18N->msg('xform_delete'), $I18N->msg('xform_delete')));
                }
                $table_echo = '
                     <div class="rex-area-col-2">
                             <div class="rex-area-col-a">
                                     <a href="index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '&func=choosenadd"><b>+ ' . $I18N->msg('xform_addtablefield') . '</b></a>
                             </div>
                             <div class="rex-area-col-b rex-algn-rght">
                                <ul class="rex-navi-piped">
                                    <li><a href="index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '&func=show_form_notation">' . $I18N->msg('xform_manager_show_form_notation') . '</a></li><li><a href="index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '&func=updatetable">' . $I18N->msg('xform_updatetable') . '</a></li><li><a href="index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '&func=updatetablewithdelete" onclick="return confirm(\'' . $I18N->msg('xform_updatetable_with_delete_confirm') . '\')">' . $I18N->msg('xform_updatetable_with_delete') . '</a></li>
                                </ul>
                             </div>
                     </div>
                     <div class="rex-clearer"></div>
                     ';
                echo rex_content_block($table_echo);
                $sql = 'select id, prio, type_id, type_name, name from ' . rex_xform_manager_field::table() . ' where table_name="' . $table->getTableName() . '" order by prio';
                $list = rex_list::factory($sql, 30);
                // $list->debug = 1;
                $list->setColumnFormat('id', 'Id');
                foreach ($this->getLinkVars() as $k => $v) {
                    $list->addParam($k, $v);
                }
                $list->addParam('start', rex_request('start', 'int'));
                $list->addParam('table_name', $table->getTableName());
                $list->removeColumn('id');
                $list->setColumnLabel('prio', $I18N->msg('xform_manager_table_prio_short'));
                $list->setColumnLabel('type_id', $I18N->msg('xform_manager_type_id'));
                $list->setColumnLabel('type_name', $I18N->msg('xform_manager_type_name'));
                $list->setColumnLabel('name', $I18N->msg('xform_manager_name'));
                $list->setColumnLayout('prio', array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat('prio', 'custom', 'rex_xform_list_format');
                $list->setColumnLayout('type_id', array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat('type_id', 'custom', 'rex_xform_list_format');
                $list->setColumnLayout('type_name', array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat('type_name', 'custom', 'rex_xform_list_format');
                $list->setColumnLayout('name', array('<th>###VALUE###</th>', '###VALUE###'));
                // ###VALUE###
                $list->setColumnFormat('name', 'custom', 'rex_xform_list_format');
                $list->addColumn($I18N->msg('xform_edit'), $I18N->msg('xform_edit'));
                $list->setColumnParams($I18N->msg('xform_edit'), array('field_id' => '###id###', 'func' => 'edit', 'type_name' => '###type_name###', 'type_id' => '###type_id###'));
                $list->setColumnLayout($I18N->msg('xform_edit'), array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat($I18N->msg('xform_edit'), 'custom', 'rex_xform_list_edit_format');
                $list->addColumn($I18N->msg('xform_delete'), $I18N->msg('xform_delete'));
                $list->setColumnParams($I18N->msg('xform_delete'), array('field_id' => '###id###', 'func' => 'delete'));
                $list->setColumnLayout($I18N->msg('xform_delete'), array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat($I18N->msg('xform_delete'), 'custom', 'rex_xform_list_delete_format');
                $list->addLinkAttribute($I18N->msg('xform_delete'), 'onclick', 'return confirm(\' [###type_id###, ###type_name###, ###name###] ' . $I18N->msg('xform_delete') . ' ?\')');
                echo $list->get();
            }
        }
    }
Exemple #3
0
/**
 * XForm
 * @author jan.kristinus[at]redaxo[dot]org Jan Kristinus
 * @author <a href="http://www.yakamara.de">www.yakamara.de</a>
 */
rex_title('XForm', $REX['ADDON']['xform']['SUBPAGES']);
$SF = true;
$table = $REX['TABLE_PREFIX'] . 'xform_email_template';
$bezeichner = $I18N->msg('xform_email_template');
$csuchfelder = array('name', 'mail_from', 'mail_subject', 'body');
$func = rex_request('func', 'string', '');
$template_id = rex_request('template_id', 'int');
if ($func == 'add' || $func == 'edit') {
    echo rex_content_block('<a class="rex-back" href="index.php?page=' . $page . '&amp;subpage=' . $subpage . '">' . $I18N->msg('xform_back_to_overview') . '</a>');
    echo rex_content_block('<p>Durch folgende Markierungen <b>###field###</b> kann man die in den Formularen eingegebenen Felder hier im E-Mail Template verwenden. Weiterhin sind
    alle REDAXO Variablen wie $REX["SERVER"] als <b>###REX_SERVER###</b> verwendbar. Urlencoded, z.b. für Links, bekommt man diese Werte über <b>+++field+++</b></p>');
    echo '<div class="rex-addon-output">';
    $form = new rex_form($REX['TABLE_PREFIX'] . 'xform_email_template', 'Template', 'id=' . $template_id);
    if ($func == 'edit') {
        $form->addParam('template_id', $template_id);
    }
    $field =& $form->addTextField('name');
    $field->setLabel($I18N->msg('xform_email_key'));
    $field =& $form->addTextField('mail_from');
    $field->setLabel($I18N->msg('xform_email_from'));
    $field =& $form->addTextField('mail_from_name');
    $field->setLabel($I18N->msg('xform_email_from_name'));
    $field =& $form->addTextField('subject');
    $field->setLabel($I18N->msg('xform_email_subject'));
    $field =& $form->addTextareaField('body');
    $field->setLabel($I18N->msg('xform_email_body'));
    function getFieldPage()
    {
        global $REX, $I18N;
        // TODO: function rex_xform_manager_checkField
        // ********************************************* FIELD ADD/EDIT/LIST
        $func = rex_request('func', 'string', 'list');
        $page = rex_request('page', 'string', '');
        $subpage = rex_request('subpage', 'string', '');
        $tripage = rex_request('tripage', 'string', '');
        $type_id = rex_request('type_id', 'string');
        $type_name = rex_request('type_name', 'string');
        $field_id = rex_request('field_id', 'int');
        $show_list = true;
        $link_vars = '';
        foreach ($this->getLinkVars() as $k => $v) {
            $link_vars .= '&' . urlencode($k) . '=' . urlencode($v);
        }
        $TYPE = array('value' => $I18N->msg('values'), 'validate' => $I18N->msg('validates'), 'action' => $I18N->msg('action'));
        // ********************************** TABELLE HOLEN
        unset($table);
        $tables = $this->getTables();
        if (!isset($table)) {
            if (count($tables) > 0) {
                $table = current($tables);
            } else {
                echo 'Keine Tabelle gefunden';
                exit;
            }
        }
        foreach ($tables as $t) {
            if ($t['table_name'] == rex_request('table_name')) {
                $table = $t;
                break;
            }
        }
        $table_echo = '';
        //echo '<table cellpadding="5" class="rex-table" id="xform-alltables">';
        //echo '<tr><td>';
        foreach ($tables as $t) {
            if ($t['table_name'] == $table['table_name']) {
                $table_echo .= '<b>' . rex_translate($t['name']) . ' [' . $t['table_name'] . ']</b> ';
            } else {
                $table_echo .= ' <a href="index.php?' . $link_vars . '&table_name=' . $t['table_name'] . '">' . rex_translate($t['name']) . ' [' . $t['table_name'] . ']</a> ';
            }
        }
        //echo '</td></tr>';
        //echo '';
        if ($table['description'] != '') {
            //echo "<tr><td>".$table["description"].'</td></tr>';
            $table_echo .= '<p>' . $table['description'] . '</p>';
        }
        // if($rex_em_opener_info != "") { echo ' - '.$I18N->msg("openerinfo").': '.$rex_em_opener_info; }
        //echo '</table><br />';
        echo rex_content_block($table_echo);
        $table['fields'] = $this->getTableFields($table['table_name']);
        // ********************************************* Missing Fields
        $mfields = rex_xform_manager_table::getMissingFields($table['table_name']);
        // ksort($mfields);
        $type_real_field = rex_request('type_real_field', 'string');
        if ($type_real_field != '' && !array_key_exists($type_real_field, $mfields)) {
            $type_real_field = '';
        }
        if ($type_real_field != '') {
            ?>
            <div class="rex-addon-output"><h2 class="rex-hl2">Folgendes Feld wird verwendet: <?php 
            echo $type_real_field;
            ?>
</h2><div class="rex-addon-content"><p class="rex-tx1"><?php 
            $rfields = rex_xform_manager_table::getFields($table['table_name']);
            foreach ($rfields[$type_real_field] as $k => $v) {
                echo '<b>' . $k . ':</b> ' . $v . '<br />';
            }
            ?>
</p></div></div><?php 
        }
        // ********************************************* CHOOSE FIELD
        $types = rex_xform::getTypeArray();
        if ($func == 'choosenadd') {
            // type and choose !!
            $link = 'index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=add&';
            if (!rex_xform_manager_table::hasId($table['table_name'])) {
                ?>
                <div class="rex-addon-output" id="xform-choosenadd"><h2 class="rex-hl2"><?php 
                echo $I18N->msg('xform_id_is_missing');
                ?>
</h2><div class="rex-addon-content">
                        <p class="rex-tx1"><?php 
                echo $I18N->msg('xform_id_missing_info');
                ?>
</p>
                    </div></div>
            <?php 
            } else {
                ?>
                <div class="rex-addon-output" id="xform-choosenadd"><h2 class="rex-hl2"><?php 
                echo $I18N->msg('choosenadd');
                ?>
</h2><div class="rex-addon-content">
                        <p class="rex-tx1"><?php 
                echo $I18N->msg('choosenadd_description');
                ?>
</p>
                    </div></div>
                <?php 
                if ($type_real_field == '' && count($mfields) > 0) {
                    ?>
                    <div class="rex-addon-output"><h2 class="rex-hl2">Es gibt noch Felder in der Tabelle welche nicht zugewiesen sind.</h2><div class="rex-addon-content">
                            <?php 
                    $d = 0;
                    foreach ($mfields as $k => $v) {
                        $d++;
                        $l = 'index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=choosenadd&type_real_field=' . $k . '&type_layout=t';
                        echo '<a href="' . $l . '">' . $k . '</a>, ';
                    }
                    ?>
</div></div>

                <?php 
                }
                ?>


                <div class="rex-addon-output xform-table_field">
                    <div class="rex-area-col-2">

                        <div class="rex-area-col-a">
                            <h3 class="rex-hl2">beliebte <?php 
                echo $TYPE['value'];
                ?>
</h3>
                            <div class="rex-area-content"><p class="rex-tx1"><?php 
                if (isset($types['value'])) {
                    ksort($types['value']);
                    foreach ($types['value'] as $k => $v) {
                        if (isset($v['famous']) && $v['famous']) {
                            echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=value&type_name=' . $k . '&type_real_field=' . $type_real_field . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>';
                        }
                    }
                }
                ?>
</p></div></div>

                        <div class="rex-area-col-b"><h3 class="rex-hl2">beliebte <?php 
                echo $TYPE['validate'];
                ?>
</h3><div class="rex-area-content"><p class="rex-tx1"><?php 
                if (isset($types['validate'])) {
                    ksort($types['validate']);
                    foreach ($types['validate'] as $k => $v) {
                        if (isset($v['famous']) && $v['famous']) {
                            echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=validate&type_name=' . $k . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>';
                        }
                    }
                }
                ?>
</p></div></div>

                    </div></div>

                <div class="rex-addon-output xform-table_field">
                    <div class="rex-area-col-2">

                        <div class="rex-area-col-a"><h3 class="rex-hl2"><?php 
                echo $TYPE['value'];
                ?>
</h3><div class="rex-area-content"><p class="rex-tx1"><?php 
                if (isset($types['value'])) {
                    ksort($types['value']);
                    foreach ($types['value'] as $k => $v) {
                        if (!isset($v['famous']) || $v['famous'] !== true) {
                            echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=value&type_name=' . $k . '&type_real_field=' . $type_real_field . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>';
                        }
                    }
                }
                ?>
</p></div></div>

                        <div class="rex-area-col-b"><h3 class="rex-hl2"><?php 
                echo $TYPE['validate'];
                ?>
</h3><div class="rex-area-content"><p class="rex-tx1"><?php 
                if (isset($types['validate'])) {
                    ksort($types['validate']);
                    foreach ($types['validate'] as $k => $v) {
                        if (!isset($v['famous']) || $v['famous'] !== true) {
                            echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=validate&type_name=' . $k . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>';
                        }
                    }
                }
                ?>
</p></div></div>

                    </div></div>

                <!--
             <div class="rex-addon-output">
             <h2 class="rex-hl2"><?php 
                echo $TYPE['action'];
                ?>
</h2>
             <div class="rex-addon-content">
             <p class="rex-tx1"><?php 
                if (isset($types['action'])) {
                    ksort($types['action']);
                    foreach ($types['action'] as $k => $v) {
                        echo '<p class="rex-button">"<a href="' . $link . 'type_id=action&type_name=' . $k . '">' . $k . '</a>" - ' . $v['description'] . '</p>';
                    }
                }
                ?>
</p>
             </div>
             </div>
             -->

            <?php 
            }
            $table_echo = '<a href="index.php?' . $link_vars . '&amp;table_name=' . $table['table_name'] . '"><b>&laquo; ' . $I18N->msg('back_to_overview') . '</b></a>';
            echo rex_content_block($table_echo);
        }
        // ********************************************* FORMULAR
        if (($func == 'add' || $func == 'edit') && isset($types[$type_id][$type_name])) {
            $xform = new rex_xform();
            $xform->setDebug(false);
            foreach ($this->getLinkVars() as $k => $v) {
                $xform->setHiddenField($k, $v);
            }
            $xform->setHiddenField('func', $func);
            $xform->setHiddenField('table_name', $table['table_name']);
            $xform->setHiddenField('type_real_field', $type_real_field);
            $xform->setValueField('hidden', array('table_name', $table['table_name']));
            $xform->setValueField('hidden', array('type_name', $type_name, 'REQUEST'));
            $xform->setValueField('hidden', array('type_id', $type_id, 'REQUEST'));
            $xform->setValueField('text', array('prio', 'Prioritaet', rex_xform_manager_table::getMaximumPrio($table['table_name']) + 10));
            $selectFields = array();
            $i = 1;
            foreach ($types[$type_id][$type_name]['values'] as $k => $v) {
                $field = $this->getFieldName($k, $type_id);
                $selectFields['f' . $i] = $field;
                $i++;
                switch ($v['type']) {
                    case 'name':
                        if ($func == 'edit') {
                            $xform->setValueField('showvalue', array($field, 'Name'));
                        } else {
                            if (!isset($v['value']) && $type_real_field != '') {
                                $v['value'] = $type_real_field;
                            } elseif (!isset($v['value'])) {
                                $v['value'] = '';
                            }
                            $xform->setValueField('text', array($field, 'Name', $v['value']));
                            $xform->setValidateField('notEmpty', array($field, $I18N->msg('validatenamenotempty')));
                            $xform->setValidateField('preg_match', array($field, "/(([a-zA-Z])+([a-zA-Z0-9\\_])*)/", $I18N->msg('validatenamepregmatch')));
                            $xform->setValidateField('customfunction', array($field, 'rex_xform_manager_checkField', array('table_name' => $table['table_name']), $I18N->msg('validatenamecheck')));
                        }
                        break;
                    case 'no_db':
                        // ToDo: Default Wert beachten
                        $xform->setValueField('checkbox', array($field, $I18N->msg('donotsaveindb'), 'no_db', $v['default']));
                        break;
                    case 'boolean':
                        // checkbox|check_design|Bezeichnung|Value|1/0|[no_db]
                        if (!isset($v['default'])) {
                            $v['default'] = '';
                        }
                        $xform->setValueField('checkbox', array($field, $v['label'], '', $v['default']));
                        break;
                    case 'select':
                        // select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|multiple=1
                        $xform->setValueField('select', array($field, $v['label'], $v['definition'], '', $v['default'], 0));
                        break;
                    case 'table':
                        // ist fest eingetragen, damit keine Dinge durcheinandergehen
                        if ($func == 'edit') {
                            $xform->setValueField('showvalue', array($field, $v['label']));
                        } else {
                            $_tables = rex_xform_manager_table::getTables();
                            $_options = array();
                            foreach ($_tables as $_table) {
                                $_options[$_table->getTableName()] = str_replace('=', '-', $_table->getName() . ' [' . $_table->getTableName() . ']') . '=' . $_table->getTableName();
                                $_options[$_table->getTableName()] = str_replace(',', '.', $_options[$_table->getTableName()]);
                            }
                            if (!isset($v['default'])) {
                                $v['default'] = '';
                            }
                            $xform->setValueField('select', array($field, $v['label'], implode(',', $_options), '', $v['default'], 0));
                        }
                        break;
                    case 'textarea':
                        $xform->setValueField('textarea', array($field, $v['label']));
                        break;
                    case 'table.field':
                        // Todo:
                    // Todo:
                    case 'select_name':
                        $_fields = array();
                        foreach (rex_xform_manager_table::getXFormFieldsByType($table['table_name']) as $_k => $_v) {
                            $_fields[] = $_k;
                        }
                        $xform->setValueField('select', array($field, $v['label'], implode(',', $_fields), '', '', 0));
                        break;
                    case 'select_names':
                        // Todo: Mehrere Namen aus denanderen Federn ziehen und als multiselectbox anbieten
                        $_fields = array();
                        foreach (rex_xform_manager_table::getXFormFieldsByType($table['table_name']) as $_k => $_v) {
                            $_fields[] = $_k;
                        }
                        $xform->setValueField('select', array($field, $v['label'], implode(',', $_fields), '', '', 1, 5));
                        break;
                    default:
                        // nur beim "Bezeichnungsfeld"
                        if ($field == 'label' && $type_real_field != '' && !isset($v['value'])) {
                            $v['value'] = $type_real_field;
                        } elseif (!isset($v['value'])) {
                            $v['value'] = '';
                        }
                        $xform->setValueField('text', array($field, $v['label'], $v['value']));
                }
            }
            $xform->setActionField('showtext', array('', '<p>' . $I18N->msg('thankyouforentry') . '</p>'));
            $xform->setObjectparams('main_table', $REX['TABLE_PREFIX'] . 'xform_field');
            // f�r db speicherungen und unique abfragen
            if ($func == 'edit') {
                $xform->setObjectparams('submit_btn_label', $I18N->msg('save'));
                $xform->setHiddenField('field_id', $field_id);
                $xform->setActionField('manage_db', array($REX['TABLE_PREFIX'] . 'xform_field', "id={$field_id}"));
                $xform->setObjectparams('main_id', $field_id);
                $xform->setObjectparams('main_where', "id={$field_id}");
                $sql = rex_sql::factory();
                $sql->setQuery("SELECT * FROM " . $REX['TABLE_PREFIX'] . "xform_field WHERE id={$field_id}");
                foreach ($selectFields as $alias => $field) {
                    if ($alias != $field) {
                        if ((!$sql->hasValue($field) || !$sql->getValue($field)) && $sql->hasValue($alias)) {
                            $sql->setValue($field, $sql->getValue($alias));
                        }
                        $xform->setValueField('hidden', array($alias, ''));
                    }
                }
                $xform->setObjectparams('sql_object', $sql);
                $xform->setObjectparams('getdata', true);
            } elseif ($func == 'add') {
                $xform->setObjectparams('submit_btn_label', $I18N->msg('add'));
                $xform->setActionField('manage_db', array($REX['TABLE_PREFIX'] . 'xform_field'));
            }
            if ($type_id == 'value') {
                $xform->setValueField('checkbox', array('list_hidden', $I18N->msg('hideinlist'), 1, '1'));
                $xform->setValueField('checkbox', array('search', $I18N->msg('useassearchfieldalidatenamenotempty'), 1, '1'));
            } elseif ($type_id == 'validate') {
                $xform->setValueField('hidden', array('list_hidden', 1));
            }
            $form = $xform->getForm();
            if ($xform->objparams['form_show']) {
                if ($func == 'add') {
                    echo '<div class="rex-addon-output"><h3 class="rex-hl2">' . $I18N->msg('addfield') . ' "' . $type_name . '"</h3><div class="rex-addon-content">';
                } else {
                    echo '<div class="rex-addon-output"><h3 class="rex-hl2">' . $I18N->msg('editfield') . ' "' . $type_name . '"</h3><div class="rex-addon-content">';
                }
                echo $form;
                echo '</div></div>';
                $table_echo = '<a href="index.php?' . $link_vars . '&amp;table_name=' . $table['table_name'] . '"><b>&laquo; ' . $I18N->msg('back_to_overview') . '</b></a>';
                echo rex_content_block($table_echo);
                $func = '';
            } else {
                if ($func == 'edit') {
                    $this->generateAll();
                    echo rex_info($I18N->msg('thankyouforupdate'));
                } elseif ($func == 'add') {
                    $this->generateAll();
                    echo rex_info($I18N->msg('thankyouforentry'));
                }
                $func = 'list';
            }
        }
        // ********************************************* LOESCHEN
        if ($func == 'delete') {
            $sf = new rex_sql();
            // $sf->debugsql = 1;
            $sf->setQuery('select * from ' . $REX['TABLE_PREFIX'] . 'xform_field where table_name="' . $table['table_name'] . '" and id=' . $field_id);
            $sfa = $sf->getArray();
            if (count($sfa) == 1) {
                $query = 'delete from ' . $REX['TABLE_PREFIX'] . 'xform_field where table_name="' . $table['table_name'] . '" and id=' . $field_id;
                $delsql = new rex_sql();
                // $delsql->debugsql=1;
                $delsql->setQuery($query);
                echo rex_info($I18N->msg('tablefielddeleted'));
                $this->generateAll();
            } else {
                echo rex_warning($I18N->msg('tablefieldnotfound'));
            }
            $func = 'list';
        }
        // ********************************************* CREATE/UPDATE FIELDS
        if ($func == 'updatetable') {
            $this->generateAll();
            echo rex_info($I18N->msg('tablesupdated'));
            $func = 'list';
        }
        if ($func == 'updatetablewithdelete') {
            $this->generateAll(array('delete_fields' => true));
            echo rex_info($I18N->msg('tablesupdated'));
            $func = 'list';
        }
        // ********************************************* LIST
        if ($func == 'list') {
            // ****** EP XFORM_MANAGER_TABLE_FIELD_FUNC
            $show_list = true;
            $show_list = rex_register_extension_point('XFORM_MANAGER_TABLE_FIELD_FUNC', $show_list, array('table' => $t, 'link_vars' => $this->getLinkVars()));
            if ($show_list) {
                function rex_xform_list_format($p, $value = '')
                {
                    if ($value != '') {
                        $p['value'] = $value;
                    }
                    switch ($p['list']->getValue('type_id')) {
                        case 'validate':
                            $style = 'color:#aaa;';
                            // background-color:#cfd9d9;
                            break;
                        case 'action':
                            $style = 'background-color:#cfd9d9;';
                            break;
                        default:
                            $style = 'background-color:#eff9f9;';
                            break;
                    }
                    return '<td style="' . $style . '">' . $p['value'] . '</td>';
                }
                function rex_xform_list_edit_format($p)
                {
                    global $REX, $I18N;
                    return rex_xform_list_format($p, $p['list']->getColumnLink($I18N->msg('edit'), $I18N->msg('edit')));
                }
                function rex_xform_list_delete_format($p)
                {
                    global $REX, $I18N;
                    return rex_xform_list_format($p, $p['list']->getColumnLink($I18N->msg('delete'), $I18N->msg('delete')));
                }
                $table_echo = '
                     <div class="rex-area-col-2">
                             <div class="rex-area-col-a">
                                     <a href="index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=choosenadd"><b>+ ' . $I18N->msg('addtablefield') . '</b></a>
                             </div>
                             <div class="rex-area-col-b rex-algn-rght">
                                 <a href="index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=updatetable"><b>o ' . $I18N->msg('updatetable') . '</b></a>
                                 <a href="index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=updatetablewithdelete" onclick="return confirm(\'' . $I18N->msg('updatetable_with_delete_confirm') . '\')"><b>o ' . $I18N->msg('updatetable_with_delete') . '</b></a>
                             </div>
                     </div>
                     <div class="rex-clearer"></div>
                     ';
                echo rex_content_block($table_echo);
                $sql = 'select id, prio, type_id, type_name, name from ' . $REX['TABLE_PREFIX'] . 'xform_field where table_name="' . $table['table_name'] . '" order by prio';
                $list = rex_list::factory($sql, 30);
                // $list->debug = 1;
                $list->setColumnFormat('id', 'Id');
                foreach ($this->getLinkVars() as $k => $v) {
                    $list->addParam($k, $v);
                }
                $list->addParam('table_name', $table['table_name']);
                $list->removeColumn('id');
                $list->setColumnLayout('prio', array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat('prio', 'custom', 'rex_xform_list_format');
                $list->setColumnLayout('type_id', array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat('type_id', 'custom', 'rex_xform_list_format');
                $list->setColumnLayout('type_name', array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat('type_name', 'custom', 'rex_xform_list_format');
                $list->setColumnLayout('name', array('<th>###VALUE###</th>', '###VALUE###'));
                // ###VALUE###
                $list->setColumnFormat('name', 'custom', 'rex_xform_list_format');
                $list->addColumn($I18N->msg('edit'), $I18N->msg('edit'));
                $list->setColumnParams($I18N->msg('edit'), array('field_id' => '###id###', 'func' => 'edit', 'type_name' => '###type_name###', 'type_id' => '###type_id###'));
                $list->setColumnLayout($I18N->msg('edit'), array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat($I18N->msg('edit'), 'custom', 'rex_xform_list_edit_format');
                $list->addColumn($I18N->msg('delete'), $I18N->msg('delete'));
                $list->setColumnParams($I18N->msg('delete'), array('field_id' => '###id###', 'func' => 'delete'));
                $list->setColumnLayout($I18N->msg('delete'), array('<th>###VALUE###</th>', '###VALUE###'));
                $list->setColumnFormat($I18N->msg('delete'), 'custom', 'rex_xform_list_delete_format');
                $list->addLinkAttribute($I18N->msg('delete'), 'onclick', 'return confirm(\' [###type_id###, ###type_name###, ###name###] ' . $I18N->msg('delete') . ' ?\')');
                echo $list->get();
            }
        }
    }
    if ($sql->delete()) {
        $info = $I18N->msg('imanager_effect_deleted');
    } else {
        $warning = $sql->getErrro();
    }
    $func = '';
}
if ($info != '') {
    echo rex_info($info);
}
if ($warning != '') {
    echo rex_warning($warning);
}
echo '<div class="rex-addon-output-v2">';
if ($func == '' && $type_id > 0) {
    echo rex_content_block($I18N->msg('imanager_effect_list_header', htmlspecialchars($typeName)));
    $query = 'SELECT * FROM ' . $REX['TABLE_PREFIX'] . '679_type_effects WHERE type_id=' . $type_id . ' ORDER BY prior';
    $list = rex_list::factory($query);
    $list->setNoRowsMessage(htmlspecialchars($I18N->msg('imanager_effect_no_effects')));
    $list->setCaption(htmlspecialchars($I18N->msg('imanager_effect_caption', $typeName)));
    $list->addTableAttribute('summary', htmlspecialchars($I18N->msg('imanager_effect_summary', $typeName)));
    $list->addTableColumnGroup(array(40, '*', 40, 130, 130));
    $list->removeColumn('id');
    $list->removeColumn('type_id');
    $list->removeColumn('parameters');
    $list->removeColumn('updatedate');
    $list->removeColumn('updateuser');
    $list->removeColumn('createdate');
    $list->removeColumn('createuser');
    $list->setColumnLabel('effect', htmlspecialchars($I18N->msg('imanager_type_name')));
    $list->setColumnLabel('prior', htmlspecialchars($I18N->msg('imanager_type_prior')));
    $delsql->setQuery($query);
    $func = '';
    echo rex_info($I18N->msg('xform_manager_table_deleted'));
}
// ********************************************* LISTE
if ($show_list && $REX['USER']->isAdmin()) {
    // formatting func fuer status col
    function rex_xform_status_col($params)
    {
        global $I18N;
        $list = $params['list'];
        return $list->getValue('status') == 1 ? '<span style="color:green;">' . $I18N->msg('xform_tbl_active') . '</span>' : '<span style="color:red;">' . $I18N->msg('xform_tbl_inactive') . '</span>';
    }
    //<!-- |  <a href=index.php?page=".$page."&subpage=".$subpage."&func=table_import><b>".$I18N->msg("xform_manager_table_import")."</b></a> -->
    $table_echo = '<a href=index.php?page=' . $page . '&subpage=' . $subpage . '&func=add><b>+ ' . $I18N->msg('xform_manager_table_add') . '</b></a>';
    echo rex_content_block($table_echo);
    $sql = "select * from {$table} order by prio,table_name";
    $list = rex_list::factory($sql, 30);
    // $list->setColumnParams("id", array("table_id"=>"###id###","func"=>"edit"));
    $list->removeColumn('id');
    $list->removeColumn('list_amount');
    $list->removeColumn('search');
    $list->removeColumn('hidden');
    $list->removeColumn('export');
    $list->removeColumn('import');
    // $list->removeColumn("label");
    // $list->removeColumn("prio");
    $list->removeColumn('description');
    function rex_xform_tableedit_translate($params)
    {
        return rex_translate($params['subject']);
                <th class="rex-description">' . $I18N->msg('install_description') . '</th>
                <th class="rex-function">' . $I18N->msg('install_header_function') . '</th>
            </tr>
            </thead>
            <tbody>';
    foreach ($addon['files'] as $fileId => $file) {
        $content .= '
            <tr>
                <td class="rex-icon"><span class="rex-i-element rex-i-addon"><span class="rex-i-element-text"></span></span></td>
                <td class="rex-version">' . htmlspecialchars($file['version']) . '</td>
                <td class="rex-description">' . nl2br(htmlspecialchars($file['description'])) . '</td>
                <td class="rex-update"><a href="index.php?page=install&amp;addonkey=' . htmlspecialchars($addonkey) . '&amp;func=update&amp;file=' . htmlspecialchars($fileId) . '">' . $I18N->msg('install_update') . '</a></td>
            </tr>';
    }
    $content .= '</tbody></table></div>';
    $content .= rex_content_block('<a class="rex-back" href="index.php?page=install&amp;">' . $I18N->msg('install_back_to_overview') . '</a>');
} else {
    $content .= '
    <div class="rex-addon-output">
        <h2 class="rex-hl2">' . $I18N->msg('install_available_update' . (count($addons) != 1 ? 's' : ''), count($addons)) . '</h2>
        <table id="rex-install-packages-addons" class="rex-table">
            <colgroup>
              <col width="40" />
              <col width="153" />
              <col width="*" />
              <col width="153" />
              <col width="153" />
            </colgroup>
            <thead>
            <tr>
                <th class="rex-icon"><a class="rex-i-refresh rex-i-element" href="index.php?page=install&amp;subpage=&amp;func=reload" title="' . $I18N->msg('install_reload') . '"><span class="rex-i-element-text">' . $I18N->msg('install_reload') . '</span></a></th>
                    <td class="rex-version">' . htmlspecialchars($file['version']) . '</td>
                    <td class="rex-version">' . implode(', ', $file['redaxo_versions']) . '</td>
                    <td class="rex-description">' . nl2br(htmlspecialchars($file['description'])) . '</td>
                    <td class="rex-edit"><a class="rex-link rex-edit" href="' . $url . '">' . $I18N->msg('install_version_edit') . '</a></td>
                    <td class="rex-status"><span class="rex-status rex-' . $status . '">' . $I18N->msg('status_' . $status) . '</span></td>
                </tr>';
            }
        } else {
            $content .= '
                <tr class="rex-table-no-results">
                    <td colspan="6">' . $I18N->msg('install_my_packages_files_not_found', '<b>' . htmlspecialchars($addonkey) . '</b>') . '</td>
                </tr>';
        }
        $content .= '</tbody></table></div>';
        echo $content;
        echo rex_content_block('<a class="rex-back" href="index.php?page=install&amp;subpage=upload"><span class="rex-icon rex-icon-back"></span>' . $I18N->msg('install_back') . '</a>');
    }
} else {
    $content = '
    <div class="rex-addon-output">
        <h2 class="rex-hl2">' . $I18N->msg('install_my_packages') . '</h2>
        <table class="rex-table">
            <colgroup>
              <col width="40" />
              <col width="79" />
              <col width="*" />
              <col width="76" />
              <col width="77" />
            </colgroup>
         <thead>
            <tr>