function formatElement() { global $I18N; $name = $this->getAttribute('name') . '[]'; $value = explode('|', htmlspecialchars($this->getValue())); if (count($value) != 4) { $value = array(null, 1, 'd'); } $select = new rex_select(); $select->setAttribute('class', 'rex-form-select rex-a630-interval'); $select->setStyle('width:120px'); $select->setName($name); $select->setSize(1); $select->addOption($I18N->msg('cronjob_interval_hour'), 'h'); $select->addOption($I18N->msg('cronjob_interval_day'), 'd'); $select->addOption($I18N->msg('cronjob_interval_week'), 'w'); $select->addOption($I18N->msg('cronjob_interval_month'), 'm'); $select->addOption($I18N->msg('cronjob_interval_year'), 'y'); $select->setSelected($value[2]); return ' <input type="text" class="rex-form-text rex-a630-interval" name="' . $name . '" style="width:20px; margin-right: 5px;" value="' . $value[1] . '" /> ' . $select->get() . "\n"; }
"><?php echo $this->getLabelStyle($this->relation['label']); ?> </label> <?php $select = new rex_select(); $select->setStyle('class="form-control"'); if ($this->relation['relation_type'] == 1) { $select->setName($this->getFieldName() . '[]'); $select->setMultiple(); $select->setSize($this->relation['size']); } else { $select->setName($this->getFieldName()); } if ($this->relation['disabled']) { $select->setAttribute('disabled', 'disabled'); } $select->addOptions($options); $select->setSelected($this->getValue()); echo $select->get(); ?> </div> <?php } else { ?> <div class="<?php echo $class_group; ?> " id="<?php echo $this->getHTMLId(); ?>
$lang_a = new rex_select(); $lang_a->setStyle('class="rex-form-select"'); $lang_a->setId('clang_a'); $lang_a->setName('clang_a'); $lang_a->setSize('1'); $lang_a->setAttribute('tabindex', rex_tabindex(false)); foreach ($clang_perm as $key) { $val = rex_translate($REX['CLANG'][$key]); $lang_a->addOption($val, $key); } $lang_b = new rex_select(); $lang_b->setStyle('class="rex-form-select"'); $lang_b->setId('clang_b'); $lang_b->setName('clang_b'); $lang_b->setSize('1'); $lang_b->setAttribute('tabindex', rex_tabindex(false)); foreach ($clang_perm as $key) { $val = rex_translate($REX['CLANG'][$key]); $lang_b->addOption($val, $key); } $lang_a->setSelected(rex_request('clang_a', 'rex-clang-id', null)); $lang_b->setSelected(rex_request('clang_b', 'rex-clang-id', null)); $out .= ' <fieldset class="rex-form-col-2"> <legend>' . $I18N->msg('content_submitcopycontent') . '</legend> <div class="rex-form-wrapper"> <div class="rex-form-row"> <p class="rex-form-col-a rex-form-select"> <label for="clang_a">' . $I18N->msg('content_contentoflang') . '</label> ' . $lang_a->get() . '
</thead> <tbody> ' . $actions . ' </tbody> </table> '; $fragment = new rex_fragment(); $fragment->setVar('title', rex_i18n::msg('actions_added_caption'), false); $fragment->setVar('content', $panel, false); $content .= $fragment->parse('core/page/section.php'); } $gaa_sel = new rex_select(); $gaa_sel->setName('action_id'); $gaa_sel->setId('action_id'); $gaa_sel->setSize(1); $gaa_sel->setAttribute('class', 'form-control'); for ($i = 0; $i < $gaa->getRows(); ++$i) { $gaa_sel->addOption(rex_i18n::translate($gaa->getValue('name'), false), $gaa->getValue('id')); $gaa->next(); } $panel = ''; $panel .= '<fieldset>'; $formElements = []; $n = []; $n['label'] = '<label for="action_id">' . rex_i18n::msg('action') . '</label>'; $n['field'] = $gaa_sel->get(); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $panel .= $fragment->parse('core/form/form.php'); $panel .= '</fieldset>';
function getArticle($curctype = -1) { global $module_id, $REX_USER, $REX, $I18N; $this->ctype = $curctype; $sliceLimit = ''; if ($this->getSlice) { //$REX['GG'] = 0; $sliceLimit = " AND " . $REX['TABLE_PREFIX'] . "article_slice.id = '" . $this->getSlice . "' "; } // ----- start: article caching ob_start(); ob_implicit_flush(0); if ($REX['GG'] && !$this->viasql && !$this->getSlice) { if ($this->article_id != 0) { $this->contents = ''; $article_content_file = $REX['INCLUDE_PATH'] . '/generated/articles/' . $this->article_id . '.' . $this->clang . '.content'; if ($cont = rex_get_file_contents($article_content_file)) { $this->contents = $cont; eval($this->contents); } } } else { if ($this->article_id != 0) { // ---------- alle teile/slices eines artikels auswaehlen $sql = "SELECT " . $REX['TABLE_PREFIX'] . "module.id, " . $REX['TABLE_PREFIX'] . "module.name, " . $REX['TABLE_PREFIX'] . "module.ausgabe, " . $REX['TABLE_PREFIX'] . "module.eingabe, " . $REX['TABLE_PREFIX'] . "article_slice.*, " . $REX['TABLE_PREFIX'] . "article.re_id\r\n FROM\r\n " . $REX['TABLE_PREFIX'] . "article_slice\r\n LEFT JOIN " . $REX['TABLE_PREFIX'] . "module ON " . $REX['TABLE_PREFIX'] . "article_slice.modultyp_id=" . $REX['TABLE_PREFIX'] . "module.id\r\n LEFT JOIN " . $REX['TABLE_PREFIX'] . "article ON " . $REX['TABLE_PREFIX'] . "article_slice.article_id=" . $REX['TABLE_PREFIX'] . "article.id\r\n WHERE\r\n " . $REX['TABLE_PREFIX'] . "article_slice.article_id='" . $this->article_id . "' AND\r\n " . $REX['TABLE_PREFIX'] . "article_slice.clang='" . $this->clang . "' AND\r\n " . $REX['TABLE_PREFIX'] . "article.clang='" . $this->clang . "'\r\n " . $sliceLimit . "\r\n ORDER BY " . $REX['TABLE_PREFIX'] . "article_slice.re_article_slice_id"; $this->CONT = new rex_sql(); $this->CONT->debugsql = 0; $this->CONT->setQuery($sql); $RE_CONTS = array(); $RE_CONTS_CTYPE = array(); $RE_MODUL_OUT = array(); $RE_MODUL_IN = array(); $RE_MODUL_ID = array(); $RE_MODUL_NAME = array(); $RE_C = array(); // ---------- SLICE IDS/MODUL SETZEN - speichern der daten for ($i = 0; $i < $this->CONT->getRows(); $i++) { $RE_CONTS[$this->CONT->getValue('re_article_slice_id')] = $this->CONT->getValue($REX['TABLE_PREFIX'] . 'article_slice.id'); $RE_CONTS_CTYPE[$this->CONT->getValue('re_article_slice_id')] = $this->CONT->getValue($REX['TABLE_PREFIX'] . 'article_slice.ctype'); $RE_MODUL_IN[$this->CONT->getValue('re_article_slice_id')] = $this->CONT->getValue($REX['TABLE_PREFIX'] . 'module.eingabe'); $RE_MODUL_OUT[$this->CONT->getValue('re_article_slice_id')] = $this->CONT->getValue($REX['TABLE_PREFIX'] . 'module.ausgabe'); $RE_MODUL_ID[$this->CONT->getValue('re_article_slice_id')] = $this->CONT->getValue($REX['TABLE_PREFIX'] . 'module.id'); $RE_MODUL_NAME[$this->CONT->getValue('re_article_slice_id')] = $this->CONT->getValue($REX['TABLE_PREFIX'] . 'module.name'); $RE_C[$this->CONT->getValue('re_article_slice_id')] = $i; $this->CONT->next(); } // ---------- moduleselect: nur module nehmen auf die der user rechte hat if ($this->mode == 'edit') { $MODULE = new rex_sql(); $MODULE->setQuery('select * from ' . $REX['TABLE_PREFIX'] . 'module order by name'); $MODULESELECT = new rex_select(); $MODULESELECT->setName('module_id'); $MODULESELECT->setSize('1'); $MODULESELECT->setAttribute('onchange', 'this.form.submit();'); $MODULESELECT->addOption('---------------------------- ' . $I18N->msg('add_block'), ''); for ($i = 0; $i < $MODULE->getRows(); $i++) { if ($REX_USER->hasPerm('module[' . $MODULE->getValue('id') . ']') || $REX_USER->hasPerm('admin[]')) { $MODULESELECT->addOption(rex_translate($MODULE->getValue('name'), NULL, FALSE), $MODULE->getValue('id')); } $MODULE->next(); } } // ---------- SLICE IDS SORTIEREN UND AUSGEBEN $I_ID = 0; $PRE_ID = 0; $LCTSL_ID = 0; $this->CONT->reset(); $this->article_content = ""; for ($i = 0; $i < $this->CONT->getRows(); $i++) { // ----- ctype unterscheidung if ($this->mode != "edit" && $i == 0) { $this->article_content = "<?php if (\$this->ctype == '" . $RE_CONTS_CTYPE[$I_ID] . "' || (\$this->ctype == '-1')) { ?>"; } // ------------- EINZELNER SLICE - AUSGABE $this->CONT->counter = $RE_C[$I_ID]; $slice_content = ""; $SLICE_SHOW = TRUE; if ($this->mode == "edit") { $form_url = 'index.php'; if ($this->setanker) { $form_url .= '#addslice'; } $this->ViewSliceId = $RE_CONTS[$I_ID]; // ----- add select box einbauen if ($this->function == "add" && $this->slice_id == $I_ID) { $slice_content = $this->addSlice($I_ID, $module_id); } else { // ----- BLOCKAUSWAHL - SELECT $MODULESELECT->setId("module_id" . $I_ID); $slice_content = ' <form action="' . $form_url . '" method="get" id="slice' . $RE_CONTS[$I_ID] . '"> <fieldset> <legend class="rex-lgnd"><span class="rex-hide">' . $I18N->msg("add_block") . '</span></legend> <input type="hidden" name="article_id" value="' . $this->article_id . '" /> <input type="hidden" name="page" value="content" /> <input type="hidden" name="mode" value="' . $this->mode . '" /> <input type="hidden" name="slice_id" value="' . $I_ID . '" /> <input type="hidden" name="function" value="add" /> <input type="hidden" name="clang" value="' . $this->clang . '" /> <input type="hidden" name="ctype" value="' . $this->ctype . '" /> <p class="rex-slct"> ' . $MODULESELECT->get() . ' <noscript><input type="submit" class="rex-sbmt" name="btn_add" value="' . $I18N->msg("add_block") . '" /></noscript> </p> </fieldset> </form>'; } // ----- EDIT/DELETE BLOCK - Wenn Rechte vorhanden if ($REX_USER->hasPerm("module[" . $RE_MODUL_ID[$I_ID] . "]") || $REX_USER->hasPerm("admin[]")) { $msg = ''; if ($this->slice_id == $RE_CONTS[$I_ID] && $this->message != '') { $msg = rex_warning($this->message); } $sliceUrl = 'index.php?page=content&article_id=' . $this->article_id . '&mode=edit&slice_id=' . $RE_CONTS[$I_ID] . '&clang=' . $this->clang . '&ctype=' . $this->ctype . '%s#slice' . $RE_CONTS[$I_ID]; $listElements = array(); $listElements[] = '<a href="' . sprintf($sliceUrl, '&function=edit') . '" class="rex-clr-grn">' . $I18N->msg('edit') . ' <span class="rex-hide">' . $RE_MODUL_NAME[$I_ID] . '</span></a>'; $listElements[] = '<a href="' . sprintf($sliceUrl, '&function=delete&save=1') . '" class="rex-clr-red" onclick="return confirm(\'' . $I18N->msg('delete') . ' ?\')">' . $I18N->msg('delete') . ' <span class="rex-hide">' . $RE_MODUL_NAME[$I_ID] . '</span></a>'; if ($REX_USER->hasPerm('moveSlice[]')) { $moveUp = $I18N->msg('move_slice_up'); $moveDown = $I18N->msg('move_slice_down'); // upd stamp übergeben, da sonst ein block nicht mehrfach hintereindander verschoben werden kann // (Links wären sonst gleich und der Browser lässt das klicken auf den gleichen Link nicht zu) $listElements[] = '<a href="' . sprintf($sliceUrl, '&upd=' . time() . '&function=moveup') . '" title="' . $moveUp . '"><img src="media/file_up.gif" width="16" height="16" alt="' . $moveUp . '" /> <span class="rex-hide">' . $RE_MODUL_NAME[$I_ID] . '</span></a>'; $listElements[] = '<a href="' . sprintf($sliceUrl, '&upd=' . time() . '&function=movedown') . '" title="' . $moveDown . '"><img src="media/file_down.gif" width="16" height="16" alt="' . $moveDown . '" /> <span class="rex-hide">' . $RE_MODUL_NAME[$I_ID] . '</span></a>'; } // ----- EXTENSION POINT $listElements = rex_register_extension_point('ART_SLICE_MENU', $listElements, array('article_id' => $this->article_id, 'clang' => $this->clang, 'ctype' => $RE_CONTS_CTYPE[$I_ID], 'module_id' => $RE_MODUL_ID[$I_ID], 'slice_id' => $RE_CONTS[$I_ID])); $mne = $msg . ' <div class="rex-cnt-editmode-slc"> <p class="rex-flLeft">' . htmlspecialchars($RE_MODUL_NAME[$I_ID]) . '</p> <ul class="rex-flRight" id="rex-slc-mnu"> '; foreach ($listElements as $listElement) { $mne .= '<li>' . $listElement . '</li>'; } $mne .= '</ul></div>'; $slice_content .= $mne; if ($this->function == "edit" && $this->slice_id == $RE_CONTS[$I_ID]) { // **************** Aktueller Slice // ----- PRE VIEW ACTION [EDIT] $REX_ACTION = array(); // nach klick auf den übernehmen button, // die POST werte übernehmen if (rex_var::isEditEvent()) { foreach ($REX['VARIABLES'] as $obj) { $REX_ACTION = $obj->getACRequestValues($REX_ACTION); } } else { foreach ($REX['VARIABLES'] as $obj) { $REX_ACTION = $obj->getACDatabaseValues($REX_ACTION, $this->CONT); } } // TODO: PreviewActions gibts nur im EditMode...? if ($this->function == 'edit') { $modebit = '2'; } elseif ($this->function == 'delete') { $modebit = '4'; } else { $modebit = '1'; } // pre-action and add $ga = new rex_sql(); $ga->debugsql = 0; $ga->setQuery('SELECT preview FROM ' . $REX['TABLE_PREFIX'] . 'module_action ma,' . $REX['TABLE_PREFIX'] . 'action a WHERE preview != "" AND ma.action_id=a.id AND module_id=' . $RE_MODUL_ID[$I_ID] . ' AND ((a.previewmode & ' . $modebit . ') = ' . $modebit . ')'); for ($t = 0; $t < $ga->getRows(); $t++) { $iaction = $ga->getValue('preview'); // ****************** VARIABLEN ERSETZEN foreach ($REX['VARIABLES'] as $obj) { $iaction = $obj->getACOutput($REX_ACTION, $iaction); } eval('?>' . $iaction); // ****************** SPEICHERN FALLS NOETIG foreach ($REX['VARIABLES'] as $obj) { $obj->setACValues($this->CONT, $REX_ACTION); } $ga->next(); } // ----- / PRE VIEW ACTION $slice_content .= $this->editSlice($RE_CONTS[$I_ID], $RE_MODUL_IN[$I_ID], $RE_CONTS_CTYPE[$I_ID], $RE_MODUL_ID[$I_ID]); } else { // Modulinhalt ausgeben $slice_content .= ' <!-- *** OUTPUT OF MODULE-OUTPUT - START *** --> <div class="rex-cnt-slc-otp"><div class="rex-cnt-slc-otp2"> ' . $RE_MODUL_OUT[$I_ID] . ' </div></div> <!-- *** OUTPUT OF MODULE-OUTPUT - END *** --> '; $slice_content = $this->replaceVars($this->CONT, $slice_content); } } else { // ----- hat keine rechte an diesem modul $mne = ' <div class="rex-cnt-editmode-slc"> <p class="rex-flLeft" id="slice' . $RE_CONTS[$I_ID] . '">' . $RE_MODUL_NAME[$I_ID] . '</p> <ul class="rex-flRight"> <li>' . $I18N->msg('no_editing_rights') . ' <span class="rex-hide">' . $RE_MODUL_NAME[$I_ID] . '</span></li> </ul> </div>'; $slice_content .= $mne . $RE_MODUL_OUT[$I_ID]; $slice_content = $this->replaceVars($this->CONT, $slice_content); } } else { // ----- wenn mode nicht edit if ($this->getSlice) { while (list($k, $v) = each($RE_CONTS)) { $I_ID = $k; } } $slice_content .= $RE_MODUL_OUT[$I_ID]; $slice_content = $this->replaceVars($this->CONT, $slice_content); } // --------------- ENDE EINZELNER SLICE // --------------- EP: SLICE_SHOW $slice_content = rex_register_extension_point('SLICE_SHOW', $slice_content, array('article_id' => $this->article_id, 'clang' => $this->clang, 'ctype' => $RE_CONTS_CTYPE[$I_ID], 'module_id' => $RE_MODUL_ID[$I_ID], 'slice_id' => $RE_CONTS[$I_ID], 'function' => $this->function, 'function_slice_id' => $this->slice_id)); // ---------- slice in ausgabe speichern wenn ctype richtig if ($this->ctype == -1 or $this->ctype == $RE_CONTS_CTYPE[$I_ID]) { $this->article_content .= $slice_content; // last content type slice id $LCTSL_ID = $RE_CONTS[$I_ID]; } // ----- zwischenstand: ctype .. wenn ctype neu dann if if ($this->mode != "edit" && isset($RE_CONTS_CTYPE[$RE_CONTS[$I_ID]]) && $RE_CONTS_CTYPE[$I_ID] != $RE_CONTS_CTYPE[$RE_CONTS[$I_ID]] && $RE_CONTS_CTYPE[$RE_CONTS[$I_ID]] != "") { $this->article_content .= "<?php } if(\$this->ctype == '" . $RE_CONTS_CTYPE[$RE_CONTS[$I_ID]] . "' || \$this->ctype == '-1'){ ?>"; } // zum nachsten slice $I_ID = $RE_CONTS[$I_ID]; $PRE_ID = $I_ID; } // ----- end: ctype unterscheidung if ($this->mode != "edit" && $i > 0) { $this->article_content .= "<?php } ?>"; } // ----- add module im edit mode if ($this->mode == "edit") { $form_url = 'index.php'; if ($this->setanker) { $form_url .= '#addslice'; } if ($this->function == "add" && $this->slice_id == $LCTSL_ID) { $slice_content = $this->addSlice($LCTSL_ID, $module_id); } else { // ----- BLOCKAUSWAHL - SELECT $MODULESELECT->setId("module_id" . $LCTSL_ID); // $slice_content = $add_select_box; $slice_content = ' <form action="' . $form_url . '" method="get"> <fieldset> <legend class="rex-lgnd"><span class="rex-hide">' . $I18N->msg("add_block") . '</span></legend> <input type="hidden" name="article_id" value="' . $this->article_id . '" /> <input type="hidden" name="page" value="content" /> <input type="hidden" name="mode" value="' . $this->mode . '" /> <input type="hidden" name="slice_id" value="' . $LCTSL_ID . '" /> <input type="hidden" name="function" value="add" /> <input type="hidden" name="clang" value="' . $this->clang . '" /> <input type="hidden" name="ctype" value="' . $this->ctype . '" /> <p class="rex-slct"> ' . $MODULESELECT->get() . ' <noscript><input type="submit" class="rex-sbmt" name="btn_add" value="' . $I18N->msg("add_block") . '" /></noscript> </p> </fieldset> </form>'; } $this->article_content .= $slice_content; } // -------------------------- schreibe content if ($this->mode == "generate" || $this->viasql) { echo $this->replaceLinks($this->article_content); } else { eval("?>" . $this->article_content); } } else { echo $I18N->msg('no_article_available'); } } // ----- end: article caching $CONTENT = ob_get_contents(); ob_end_clean(); return $CONTENT; }
/** * Erstellt den nötigen HTML Code um ein Formular zu erweitern. * * @param rex_sql $sqlFields rex_sql-objekt, dass die zu verarbeitenden Felder enthält * @param array $epParams Array of all EP parameters * * @return string */ public function renderMetaFields(rex_sql $sqlFields, array $epParams) { $s = ''; // Startwert für MEDIABUTTON, MEDIALIST, LINKLIST zähler $media_id = 1; $mlist_id = 1; $link_id = 1; $llist_id = 1; $activeItem = isset($epParams['activeItem']) ? $epParams['activeItem'] : null; $sqlFields->reset(); for ($i = 0; $i < $sqlFields->getRows(); $i++, $sqlFields->next()) { // Umschliessendes Tag von Label und Formularelement $tag = 'p'; $tag_attr = ''; $name = $sqlFields->getValue('name'); $title = $sqlFields->getValue('title'); $params = $sqlFields->getValue('params'); $typeLabel = $sqlFields->getValue('label'); $attr = $sqlFields->getValue('attributes'); $dblength = $sqlFields->getValue('dblength'); $attrArray = rex_string::split($attr); if (isset($attrArray['perm'])) { if (!rex::getUser()->hasPerm($attrArray['perm'])) { continue; } unset($attrArray['perm']); } $defaultValue = $sqlFields->getValue('default'); if ($activeItem) { $itemValue = $activeItem->getValue($name); if (strpos($itemValue, '|+|') !== false) { // Alte notation mit |+| als Trenner $dbvalues = explode('|+|', $activeItem->getValue($name)); } else { // Neue Notation mit | als Trenner $dbvalues = explode('|', $activeItem->getValue($name)); } } else { $dbvalues = (array) $sqlFields->getValue('default'); } if ($title != '') { $label = rex_i18n::translate($title); } else { $label = htmlspecialchars($name); } $id = preg_replace('/[^a-zA-Z\\-0-9_]/', '_', $label); $labelIt = true; $label = '<label for="' . $id . '">' . $label . '</label>'; $field = ''; switch ($typeLabel) { case 'text': $tag_attr = ' class="form-control"'; $rexInput = rex_input::factory($typeLabel); $rexInput->addAttributes($attrArray); $rexInput->setAttribute('id', $id); $rexInput->setAttribute('name', $name); if ($dblength > 0) { $rexInput->setAttribute('maxlength', $dblength); } if ($activeItem) { $rexInput->setValue($activeItem->getValue($name)); } else { $rexInput->setValue($defaultValue); } $field = $rexInput->getHtml(); $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); break; case 'checkbox': // Beachte auch default values in multiple fields bei ADD. // Im EDIT wurde dies bereits vorher gehandelt if (!$activeItem) { $defaultValue = explode('|', $defaultValue); } $name .= '[]'; case 'radio': $formElements = []; $values = []; if (rex_sql::getQueryType($params) == 'SELECT') { $sql = rex_sql::factory(); $value_groups = $sql->getDBArray($params, [], PDO::FETCH_NUM); foreach ($value_groups as $value_group) { if (isset($value_group[1])) { $values[$value_group[1]] = $value_group[0]; } else { $values[$value_group[0]] = $value_group[0]; } } } else { $value_groups = explode('|', $params); foreach ($value_groups as $value_group) { // check ob key:value paar // und der wert beginnt nicht mit "translate:" if (strpos($value_group, ':') !== false && strpos($value_group, 'translate:') !== 0) { $temp = explode(':', $value_group, 2); $values[$temp[0]] = rex_i18n::translate($temp[1]); } else { $values[$value_group] = rex_i18n::translate($value_group); } } } $oneValue = count($values) == 1; $attrStr = ''; $classAdd = ''; $inline = false; if (false !== ($key = array_search('inline', $attrArray))) { $inline = true; unset($attrArray[$key]); } foreach ($attrArray as $key => $value) { if ($key == 'class') { $classAdd = ' ' . $value; } else { $attrStr = ' ' . $key . '="' . $value . '"'; } } if (!$activeItem) { $dbvalues = (array) $defaultValue; } foreach ($values as $key => $value) { $id = preg_replace('/[^a-zA-Z\\-0-9_]/', '_', $id . $key); // wenn man keine Werte angibt (Boolean Chkbox/Radio) // Dummy Wert annehmen, damit an/aus unterscheidung funktioniert if ($oneValue && $key == '') { $key = 'true'; } $selected = ''; if (in_array($key, $dbvalues)) { $selected = ' checked="checked"'; } $e = []; if ($oneValue) { $e['label'] = $label; } else { $e['label'] = '<label for="' . $id . '">' . htmlspecialchars($value) . '</label>'; } $e['field'] = '<input type="' . $typeLabel . '" name="' . $name . '" value="' . htmlspecialchars($key) . '" id="' . $id . '" ' . $attrStr . $selected . ' />'; $formElements[] = $e; } $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $fragment->setVar('inline', $inline); if ($typeLabel == 'radio') { $field = $fragment->parse('core/form/radio.php'); } else { if (!$oneValue) { $fragment->setVar('grouped', true); } $field = $fragment->parse('core/form/checkbox.php'); } if (!$oneValue) { $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); } break; case 'select': $tag_attr = ' class="form-control"'; $select = new rex_select(); $select->setStyle('class="form-control"'); $select->setName($name); $select->setId($id); $multiple = false; foreach ($attrArray as $attr_name => $attr_value) { if (empty($attr_name)) { continue; } $select->setAttribute($attr_name, $attr_value); if ($attr_name == 'multiple') { $multiple = true; $select->setName($name . '[]'); $select->setMultiple(); } } // Beachte auch default values in multiple fields bei ADD. // Im EDIT wurde dies bereits vorher gehandelt if ($multiple && !$activeItem) { $dbvalues = explode('|', $defaultValue); } // hier mit den "raw"-values arbeiten, da die rex_select klasse selbst escaped $select->setSelected($dbvalues); if (rex_sql::getQueryType($params) == 'SELECT') { // Werte via SQL Laden $select->addDBSqlOptions($params); } else { // Optionen mit | separiert // eine einzelne Option kann mit key:value separiert werden $values = []; $value_groups = explode('|', $params); foreach ($value_groups as $value_group) { // check ob key:value paar // und der wert beginnt nicht mit "translate:" if (strpos($value_group, ':') !== false && strpos($value_group, 'translate:') !== 0) { $temp = explode(':', $value_group, 2); $values[$temp[0]] = rex_i18n::translate($temp[1]); } else { $values[$value_group] = rex_i18n::translate($value_group); } } $select->addOptions($values); } $field .= $select->get(); $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); break; case 'date': case 'time': case 'datetime': $tag_attr = ' class="form-control-date"'; $active = $dbvalues[0] != 0; if ($dbvalues[0] == '') { $dbvalues[0] = time(); } $inputValue = []; $inputValue['year'] = date('Y', $dbvalues[0]); $inputValue['month'] = date('n', $dbvalues[0]); $inputValue['day'] = date('j', $dbvalues[0]); $inputValue['hour'] = date('G', $dbvalues[0]); $inputValue['minute'] = date('i', $dbvalues[0]); $rexInput = rex_input::factory($typeLabel); $rexInput->addAttributes($attrArray); $rexInput->setAttribute('id', $id); $rexInput->setAttribute('name', $name); $rexInput->setValue($inputValue); $field = $rexInput->getHtml(); $checked = $active ? ' checked="checked"' : ''; $field .= '<input class="rex-metainfo-checkbox" type="checkbox" name="' . $name . '[active]" value="1"' . $checked . ' />'; $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); break; case 'textarea': $tag_attr = ' class="form-control"'; $rexInput = rex_input::factory($typeLabel); $rexInput->addAttributes($attrArray); $rexInput->setAttribute('id', $id); $rexInput->setAttribute('name', $name); if ($activeItem) { $rexInput->setValue($activeItem->getValue($name)); } else { $rexInput->setValue($defaultValue); } $field = $rexInput->getHtml(); $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); break; case 'legend': $tag = ''; $tag_attr = ''; $labelIt = false; // tabindex entfernen, macht bei einer legend wenig sinn $attr = preg_replace('@tabindex="[^"]*"@', '', $attr); $field = '</fieldset><fieldset><legend id="' . $id . '"' . $attr . '>' . $label . '</legend>'; break; case 'REX_MEDIA_WIDGET': $tag = 'div'; $tag_attr = ' class="rex-form-widget"'; $paramArray = rex_string::split($params); $rexInput = rex_input::factory('mediabutton'); $rexInput->addAttributes($attrArray); $rexInput->setButtonId($media_id); $rexInput->setAttribute('name', $name); $rexInput->setValue($dbvalues[0]); if (isset($paramArray['category'])) { $rexInput->setCategoryId($paramArray['category']); } if (isset($paramArray['types'])) { $rexInput->setTypes($paramArray['types']); } if (isset($paramArray['preview'])) { $rexInput->setPreview($paramArray['preview']); } $id = $rexInput->getAttribute('id'); $field = $rexInput->getHtml(); $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); ++$media_id; break; case 'REX_MEDIALIST_WIDGET': $tag = 'div'; $tag_attr = ' class="rex-form-widget"'; $paramArray = rex_string::split($params); $name .= '[]'; $rexInput = rex_input::factory('medialistbutton'); $rexInput->addAttributes($attrArray); $rexInput->setButtonId($mlist_id); $rexInput->setAttribute('name', $name); $rexInput->setValue($dbvalues[0]); if (isset($paramArray['category'])) { $rexInput->setCategoryId($paramArray['category']); } if (isset($paramArray['types'])) { $rexInput->setTypes($paramArray['types']); } if (isset($paramArray['preview'])) { $rexInput->setPreview($paramArray['preview']); } $id = $rexInput->getAttribute('id'); $field = $rexInput->getHtml(); $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); ++$mlist_id; break; case 'REX_LINK_WIDGET': $tag = 'div'; $tag_attr = ' class="rex-form-widget"'; $paramArray = rex_string::split($params); $category = ''; if (isset($paramArray['category'])) { $category = $paramArray['category']; } elseif ($activeItem) { $category = $activeItem->getValue('category_id'); } $rexInput = rex_input::factory('linkbutton'); $rexInput->addAttributes($attrArray); $rexInput->setButtonId($link_id); $rexInput->setCategoryId($category); $rexInput->setAttribute('name', $name); $rexInput->setValue($dbvalues[0]); $id = $rexInput->getAttribute('id'); $field = $rexInput->getHtml(); $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); ++$link_id; break; case 'REX_LINKLIST_WIDGET': $tag = 'div'; $tag_attr = ' class="rex-form-widget"'; $paramArray = rex_string::split($params); $category = ''; if (isset($paramArray['category'])) { $category = $paramArray['category']; } elseif ($activeItem) { $category = $activeItem->getValue('category_id'); } $name .= '[]'; $rexInput = rex_input::factory('linklistbutton'); $rexInput->addAttributes($attrArray); $rexInput->setButtonId($llist_id); $rexInput->setCategoryId($category); $rexInput->setAttribute('name', $name); $rexInput->setValue(implode(',', $dbvalues)); $id = $rexInput->getAttribute('id'); $field = $rexInput->getHtml(); $e = []; $e['label'] = $label; $e['field'] = $field; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $field = $fragment->parse('core/form/form.php'); ++$llist_id; break; default: // ----- EXTENSION POINT list($field, $tag, $tag_attr, $id, $label, $labelIt) = rex_extension::registerPoint(new rex_extension_point('METAINFO_CUSTOM_FIELD', [$field, $tag, $tag_attr, $id, $label, $labelIt, 'values' => $dbvalues, 'rawvalues' => $dbvalues, 'type' => $typeLabel, 'sql' => $sqlFields])); } $s .= $this->renderFormItem($field, $tag, $tag_attr, $id, $label, $labelIt, $typeLabel); } return $s; }
$ctypes = isset($attributes['ctype']) ? $attributes['ctype'] : []; $modules = isset($attributes['modules']) ? $attributes['modules'] : []; $categories = isset($attributes['categories']) ? $attributes['categories'] : []; if (!is_array($modules)) { $modules = []; } if (!is_array($categories)) { $categories = []; } // modules[ctype_id][module_id]; // modules[ctype_id]['all']; // Module ... $modul_select = new rex_select(); $modul_select->setMultiple(true); $modul_select->setSize(10); $modul_select->setAttribute('class', 'form-control'); $m_sql = rex_sql::factory(); foreach ($m_sql->getArray('SELECT id, name FROM ' . rex::getTablePrefix() . 'module ORDER BY name') as $m) { $modul_select->addOption(rex_i18n::translate($m['name']), $m['id']); } // Kategorien $cat_select = new rex_category_select(false, false, false, false); $cat_select->setMultiple(true); $cat_select->setSize(10); $cat_select->setName('categories[]'); $cat_select->setId('rex-id-categories-select'); $cat_select->setAttribute('class', 'form-control'); if (count($categories) > 0) { foreach ($categories as $c => $cc) { // typsicherer vergleich, weil (0 != "all") => false if ($c !== 'all') {
$fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $radios = $fragment->parse('core/form/radio.php'); $formElements = []; $n = []; $n['label'] = rex_i18n::msg('backup_export_select'); $n['field'] = $radios; $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/form.php'); $tableSelect = new rex_select(); $tableSelect->setMultiple(); $tableSelect->setId('rex-form-exporttables'); $tableSelect->setName('EXPTABLES[]'); $tableSelect->setAttribute('class', 'form-control'); $tables = rex_sql::showTables(); foreach ($tables as $table) { $tableSelect->addOption($table, $table); if ($table != rex::getTable('user') && 0 === strpos($table, rex::getTablePrefix()) && 0 !== strpos($table, rex::getTablePrefix() . rex::getTempPrefix())) { $tableSelect->setSelected($table); } } $formElements = []; $n = []; $n['header'] = '<div id="rex-js-exporttype-sql-div">'; $n['label'] = '<label for="rex-form-exporttables">' . rex_i18n::msg('backup_export_select_tables') . '</label>'; $n['field'] = $tableSelect->get(); $n['footer'] = '</div>'; $formElements[] = $n; // Vorhandene Exporte auslesen
function rex_version_header($params) { global $REX, $I18N; $return = ""; $rex_version_article = $REX['LOGIN']->getSessionVar("rex_version_article"); if (!is_array($rex_version_article)) { $rex_version_article = array(); } $working_version_empty = TRUE; $gw = rex_sql::factory(); $gw->setQuery('select * from ' . $REX['TABLE_PREFIX'] . 'article_slice where article_id=' . $params['article_id'] . ' and clang=' . $params['clang'] . ' and revision=1 LIMIT 1'); if ($gw->getRows() > 0) { $working_version_empty = FALSE; } $revisions = array(); $revisions[0] = $I18N->msg("version_liveversion"); $revisions[1] = $I18N->msg("version_workingversion"); $version_id = rex_request("rex_set_version", "int", "-1"); if ($version_id === 0) { $rex_version_article[$params['article_id']] = 0; } elseif ($version_id == 1) { $rex_version_article[$params['article_id']] = 1; } elseif (!isset($rex_version_article[$params['article_id']])) { $rex_version_article[$params['article_id']] = 1; } $func = rex_request("rex_version_func", "string"); switch ($func) { case "copy_work_to_live": if ($working_version_empty) { $return .= rex_warning($I18N->msg("version_warning_working_version_to_live")); } else { if (!$REX['USER']->hasPerm('version[only_working_version]')) { require $REX['INCLUDE_PATH'] . '/addons/version/functions/function_rex_copyrevisioncontent.inc.php'; // rex_copyRevisionContent($article_id,$clang,$from_revision_id, $to_revision_id, $gc->getValue("id"),$delete_to_revision); rex_copyRevisionContent($params['article_id'], $params['clang'], 1, 0, 0, TRUE); $return .= rex_info($I18N->msg("version_info_working_version_to_live")); } } break; case "copy_live_to_work": require $REX['INCLUDE_PATH'] . '/addons/version/functions/function_rex_copyrevisioncontent.inc.php'; // rex_copyRevisionContent($article_id,$clang,$from_revision_id, $to_revision_id, $gc->getValue("id"),$delete_to_revision); rex_copyRevisionContent($params['article_id'], $params['clang'], 0, 1, 0, TRUE); $return .= rex_info($I18N->msg("version_info_live_version_to_working")); break; } if ($REX['USER']->hasPerm('version[only_working_version]')) { $rex_version_article[$params['article_id']] = 1; unset($revisions[0]); } $REX['LOGIN']->setSessionVar("rex_version_article", $rex_version_article); $link = 'index.php?page=' . $params['page'] . '&article_id=' . $params['article_id'] . '&clang=' . $params['clang']; $return .= ' <div id="rex-version-header" class="rex-toolbar rex-toolbar-has-form rex-version-revision-' . $rex_version_article[$params['article_id']] . '"> <div class="rex-toolbar-content rex-version-header"> <form action="index.php" method="post"> <fieldset> <input type="hidden" name="page" value="' . $params['page'] . '" /> <input type="hidden" name="mode" value="' . $params['mode'] . '" /> <input type="hidden" name="article_id" value="' . $params['article_id'] . '" /> <input type="hidden" name="clang" value="' . $params['clang'] . '" /> <input type="hidden" name="ctype" value="' . $params['ctype'] . '" /> '; $s = new rex_select(); foreach ($revisions as $k => $r) { $s->addOption($r, $k); } $s->setSelected($rex_version_article[$params['article_id']]); $s->setName('rex_set_version'); $s->setId('rex-select-version-id'); $s->setSize('1'); $s->setAttribute('onchange', 'this.form.submit();'); if ($REX['USER']->hasPerm('version[only_working_version]')) { $s->setDisabled(); } $return .= '<ul class="rex-display-inline">'; $return .= '<li class="rex-navi-first"><label for="rex-select-version-id">' . $I18N->msg('version') . ':</label> ' . $s->get() . '</li>'; if ($REX['USER']->hasPerm('version[only_working_version]')) { if ($rex_version_article[$params['article_id']] > 0) { $return .= '<li><a href="' . $link . '&rex_version_func=copy_live_to_work">' . $I18N->msg('version_copy_from_liveversion') . '</a></li>'; $return .= '<li><a href="/' . rex_getUrl($params['article_id'], $params['clang'], array("rex_version" => 1)) . '" target="_blank">' . $I18N->msg("version_preview") . '</a></li>'; } } else { if ($rex_version_article[$params['article_id']] > 0) { if (!$working_version_empty) { $return .= '<li><a href="' . $link . '&rex_version_func=copy_work_to_live">' . $I18N->msg('version_working_to_live') . '</a></li>'; } $return .= '<li><a href="../' . rex_getUrl($params['article_id'], $params['clang'], array("rex_version" => 1)) . '" target="_blank">' . $I18N->msg("version_preview") . '</a></li>'; } else { $return .= '<li><a href="' . $link . '&rex_version_func=copy_live_to_work" onclick="return confirm(\'' . $I18N->msg('version_confirm_copy_live_to_workingversion') . '\');">' . $I18N->msg('version_copy_live_to_workingversion') . '</a></li>'; } } $return .= '</ul>'; $return .= ' <noscript> <input type="submit" /> </noscript> </fieldset> </form> </div> <div class="rex-clearer"></div> <style type="text/css"> /* <![CDATA[ */ #rex-version-header label { font-weight: bold; } #rex-version-header li { margin-right: 15px; } div.rex-version-revision-0 { background-color:#bbddaa; } div.rex-version-revision-1 { background-color:#EFECD1; } /* ]]> */ </style> </div> '; $params['slice_revision'] = $rex_version_article[$params['article_id']]; return $return; }
?> " name="lang_settings[<?php echo $clangId; ?> ][special_chars_rewrite]" class="rex-form-text pipes" id="lang_settings_<?php echo $clangId; ?> _special_chars_rewrite"> </p> </div> <?php $inherit_from_clang_select = new rex_select(); $inherit_from_clang_select->setSize(1); $inherit_from_clang_select->setName('lang_settings[' . $clangId . '][inherit_from_clang]'); $inherit_from_clang_select->setAttribute('id', 'lang_settings_' . $clangId . '_inherit_from_clang'); foreach ($REX['CLANG'] as $clangIdTemp => $clangName) { if (count($REX['CLANG']) == 1 || $clangIdTemp != $clangId) { $inherit_from_clang_select->addOption($clangName, $clangIdTemp); } } $inherit_from_clang_select->setSelected($inheritFromClang); ?> <div class="rex-form-row" id="lang_settings_<?php echo $clangId; ?> _inherit_from_clang_row"> <p class="rex-form-col-a rex-form-select"> <label for="lang_settings_<?php echo $clangId;
/** * Erstellt den nötigen HTML Code um ein Formular zu erweitern * * @param $sqlFields rex_sql-objekt, dass die zu verarbeitenden Felder enthält * @param $activeItem objekt, dass mit getValue() die Werte des akuellen Eintrags zurückgibt * @param $formatCallback callback, dem die infos als Array übergeben werden und den formatierten HTML Text zurückgibt */ function rex_a62_metaFields($sqlFields, $activeItem, $formatCallback, $epParams) { global $I18N; $s = ''; // Startwert für MEDIABUTTON, MEDIALIST, LINKLIST $media_id = 1; $mlist_id = 1; $link_id = 1; $sqlFields->reset(); for ($i = 0; $i < $sqlFields->getRows(); $i++) { // Umschliessendes Tag von Label und Formularelement $tag = 'p'; $tag_attr = ''; $name = $sqlFields->getValue('name'); $title = $sqlFields->getValue('title'); $params = $sqlFields->getValue('params'); $typeLabel = $sqlFields->getValue('label'); $attr = $sqlFields->getValue('attributes'); $dbvalues = array(''); if ($activeItem) { $dbvalues = explode('|+|', $activeItem->getValue($name)); } if ($title != '') { $label = rex_translate($title); } else { $label = htmlspecialchars($name); } $id = preg_replace('/[^a-zA-Z\\-0-9_]/', '_', $label); $attr .= rex_tabindex(); $labelIt = true; $field = ''; switch ($typeLabel) { case 'text': $field = '<input type="' . $sqlFields->getValue('label') . '" name="' . $name . '" value="' . $dbvalues[0] . '" id="' . $id . '" ' . $attr . ' />'; break; case 'checkbox': $name .= '[]'; case 'radio': $values = array(); if (rex_sql::getQueryType($params) == 'SELECT') { $sql = new rex_sql(); $value_groups = $sql->getDBArray($params, MYSQL_NUM); foreach ($value_groups as $value_group) { if (isset($value_group[1])) { $values[$value_group[1]] = $value_group[0]; } else { $values[$value_group[0]] = $value_group[0]; } } } else { $value_groups = explode('|', $params); foreach ($value_groups as $value_group) { if (strpos($value_group, ':') !== false) { $temp = explode(':', $value_group); $values[$temp[0]] = $temp[1]; } else { $values[$value_group] = $value_group; } } } // if($epParams['extension_point'] != 'CAT_META_FORM_EDIT') // $field .= '<span>'. $label .'</span>'; $class = $typeLabel == 'radio' ? 'rex-rdo' : 'rex-chckbx'; $oneValue = count($values) == 1; if (!$oneValue) { $tag = ''; $labelIt = false; $tag = 'div'; $tag_attr = ' class="rex-chckbxs rex-ptag"'; $field .= '<p>' . $label . '</p>'; } foreach ($values as $key => $value) { $id = preg_replace('/[^a-zA-Z\\-0-9_]/', '_', $id . $key); // wenn man keine Werte angibt (Boolean Chkbox/Radio) // Dummy Wert annehmen, damit an/aus unterscheidung funktioniert if ($oneValue && $key == '') { $key = 'true'; } $selected = ''; if (in_array($key, $dbvalues)) { $selected = ' checked="checked"'; } if ($oneValue) { $tag_attr = ' class="' . $class . '"'; $field .= '<input type="' . $typeLabel . '" name="' . $name . '" value="' . $key . '" id="' . $id . '" ' . $attr . $selected . ' />' . "\n"; } else { $field .= '<p class="' . $class . '">' . "\n"; $field .= '<label for="' . $id . '"><span>' . htmlspecialchars($value) . '</span></label>'; $field .= '<input type="' . $typeLabel . '" name="' . $name . '" value="' . $key . '" id="' . $id . '" ' . $attr . $selected . ' />' . "\n"; $field .= '</p>' . "\n"; } } break; case 'select': $select = new rex_select(); $select->setName($name); $select->setId($id); $select->setSelected($dbvalues); foreach (explode(' ', $attr) as $pair) { if (strpos($pair, '=') === false) { continue; } $temp = explode('=', $pair); $select->setAttribute($temp[0], str_replace(array('"', "'"), '', $temp[1])); if ($temp[0] == 'multiple') { $select->setName($name . '[]'); } } if (rex_sql::getQueryType($params) == 'SELECT') { $select->addDBSqlOptions($params); } else { $values = array(); $value_groups = explode('|', $params); foreach ($value_groups as $value_group) { if (strpos($value_group, ':') !== false) { $temp = explode(':', $value_group); $values[$temp[0]] = $temp[1]; } else { $values[$value_group] = $value_group; } } $select->addOptions($values); } $field .= $select->get(); break; case 'datetime': case 'date': if ($dbvalues[0] == '') { $dbvalues[0] = time(); } $style = 'class="rex-fdate"'; $yearStyle = 'class="rex-fdatey"'; $yearSelect = new rex_select(); $yearSelect->addOptions(range(2005, date('Y') + 2), true); $yearSelect->setName($name . '[year]'); $yearSelect->setSize(1); $yearSelect->setId($id); $yearSelect->setStyle($yearStyle); $yearSelect->setSelected(date('Y', $dbvalues[0])); $monthSelect = new rex_select(); $monthSelect->addOptions(range(1, 12), true); $monthSelect->setName($name . '[month]'); $monthSelect->setSize(1); $monthSelect->setStyle($style); $monthSelect->setSelected(date('m', $dbvalues[0])); $daySelect = new rex_select(); $daySelect->addOptions(range(1, 31), true); $daySelect->setName($name . '[day]'); $daySelect->setSize(1); $daySelect->setStyle($style); $daySelect->setSelected(date('j', $dbvalues[0])); if ($typeLabel == 'datetime') { $hourSelect = new rex_select(); $hourSelect->addOptions(range(1, 23), true); $hourSelect->setName($name . '[hour]'); $hourSelect->setSize(1); $hourSelect->setStyle($style); $hourSelect->setSelected(date('G', $dbvalues[0])); $minuteSelect = new rex_select(); $minuteSelect->addOptions(range(0, 59), true); $minuteSelect->setName($name . '[minute]'); $minuteSelect->setSize(1); $minuteSelect->setStyle($style); $minuteSelect->setSelected(date('i', $dbvalues[0])); $field = $daySelect->get() . $monthSelect->get() . $yearSelect->get() . '-' . $hourSelect->get() . $minuteSelect->get(); } else { $field = $daySelect->get() . $monthSelect->get() . $yearSelect->get(); } break; case 'textarea': $field = '<textarea name="' . $name . '" id="' . $id . '" ' . $attr . ' cols="50" rows="6">' . $dbvalues[0] . '</textarea>'; break; case 'REX_MEDIA_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-ptag"'; $field = rex_var_media::getMediaButton($media_id); $field = str_replace('REX_MEDIA[' . $media_id . ']', $dbvalues[0], $field); $field = str_replace('MEDIA[' . $media_id . ']', $name, $field); $id = 'REX_MEDIA_' . $media_id; $media_id++; break; case 'REX_MEDIALIST_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-ptag"'; $name .= '[]'; $field = rex_var_media::getMediaListButton($mlist_id, implode(',', $dbvalues)); $field = str_replace('MEDIALIST[' . $mlist_id . ']', $name, $field); $id = 'REX_MEDIALIST_' . $mlist_id; $mlist_id++; break; case 'REX_LINK_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-ptag"'; $category = ''; if ($activeItem) { $category = $activeItem->getValue('category_id'); } $field = rex_var_link::getLinkButton($link_id, $dbvalues[0], $category); $field = str_replace('LINK[' . $link_id . ']', $name, $field); $id = 'LINK_' . $link_id; $link_id++; break; } $s .= rex_call_func($formatCallback, array($field, $tag, $tag_attr, $id, $label, $labelIt), false); $sqlFields->next(); } return $s; }
} } else { for ($i = 1; $i <= count($values); $i++) { echo '<li id="' . $i . '"><a data-toggle="tab" id="tab' . $i . '" href="#bereich' . $i . '"><i>B' . $i . '</i><span>Bereich ' . $i . '</span></a></li>' . PHP_EOL; } } echo ' <li class="locked pull-right"><a data-toggle="tab" id="tabanleitung" href="#anleitung"><i class="rex-icon rex-icon-info"></i><span>Anleitung</span></a></li> <li class="locked pull-right"><a data-toggle="tab" id="tabweiteres" href="#weiteres"><i class="rex-icon rex-icon-metafuncs"></i><span>Weitere Einstellungen</span></a></li> </ul> </div>' . PHP_EOL; echo '<div class="tab-content">' . PHP_EOL; for ($i = 1; $i <= count($values); $i++) { $ueberschrift_art = new rex_select(); $ueberschrift_art->setName('REX_INPUT_VALUE[' . $i . '][ueberschrift_art]'); $ueberschrift_art->setAttribute('class', 'ueberschriften'); $ueberschrift_art->setSelected(isset($values[$i]['ueberschrift_art']) ? $values[$i]['ueberschrift_art'] : ''); $ueberschrift_art->setSize(1); $ueberschrift_art->addOptions(array('h1' => 'Überschrift 1 (H1) - Nur einmal pro Seite verwenden', 'h2' => 'Überschrift 2 (H2)', 'h3' => 'Überschrift 3 (H3)', 'h4' => 'Überschrift 4 (H4)', 'faq' => 'FAQ Überschrift (Inhalt: Fließtext)')); $bildinformationen = new rex_select(); $bildinformationen->setName('REX_INPUT_VALUE[' . $i . '][bildinformationen]'); $bildinformationen->setSelected(isset($values[$i]['bildinformationen']) ? $values[$i]['bildinformationen'] : ''); $bildinformationen->setSize(1); $bildinformationen->addOptions(array('nein' => 'nein', 'ja' => 'ja')); $bildposition = new rex_select(); $bildposition->setName('REX_INPUT_VALUE[' . $i . '][bildposition]'); $bildposition->setSelected(isset($values[$i]['bildposition']) ? $values[$i]['bildposition'] : ''); $bildposition->setSize(1); $bildposition->addOptions(array('oben' => 'über dem Text', 'unten' => 'unter dem Text', 'nachueberschrift' => 'unter der Überschrift', 'nachteaser' => 'unter dem Teasertext')); $bildanpassen = new rex_select(); $bildanpassen->setName('REX_INPUT_VALUE[' . $i . '][bildanpassen]');
$func = rex_request('func', 'string'); // save settings if ($func == 'update') { $thisPlugin = 'rex_globals'; $settings = (array) rex_post('settings', 'array', array()); rex_backend_utilities::replaceSettings($thisPlugin, $settings); rex_backend_utilities::updateSettingsFile($thisPlugin); } // templates $sql = rex_sql::factory(); $sql->setQuery('select id, name from ' . $REX['TABLE_PREFIX'] . 'template order by name'); $templates = $sql->getArray(); $selectTemplates = new rex_select(); $selectTemplates->setName('settings[include_template_id]'); $selectTemplates->setAttribute('id', 'include_template_id'); $selectTemplates->setSize(1); $selectTemplates->addOption('<' . $I18N->msg('rex_globals_none') . '>', '0'); foreach ($templates as $template) { $selectTemplates->addOption($template['name'], $template['id']); } $selectTemplates->setSelected($REX['ADDON']['rex_globals']['settings']['include_template_id']); ?> <div class="rex-addon-output"> <div class="rex-form"> <h2 class="rex-hl2"><?php echo $I18N->msg('be_utilities_settings'); ?> </h2>
* * @package redaxo4 * @version svn:$Id$ */ $year_sel = new rex_select(); $year_sel->setSize(1); $year_sel->setName('log[year]'); $year_sel->setId('log_year'); $year_sel->setAttribute('class', 'rex-form-select'); $year_sel->setAttribute('onchange', 'this.form.submit();'); $year_sel->setStyle('width: 100px'); $month_sel = new rex_select(); $month_sel->setSize(1); $month_sel->setName('log[month]'); $month_sel->setId('log_month'); $month_sel->setAttribute('class', 'rex-form-select'); $month_sel->setAttribute('onchange', 'this.form.submit();'); $month_sel->setStyle('width: 100px'); $log = rex_request('log', 'array', array()); if (!isset($log['year']) || !$log['year']) { $log['year'] = date('Y'); } if (!isset($log['month']) || !$log['month']) { $log['month'] = date('m'); } $array = rex_cronjob_log::getYearMonthArray(); if (empty($array)) { echo ' <div class="rex-toolbar"> <div class="rex-toolbar-content"> <strong>' . $I18N->msg('cronjob_no_log_files') . '</strong>
$sel_encoding->addOption($enc, $enc); } $sel_priority = new rex_select(); $sel_priority->setid('phpmailer-priority'); $sel_priority->setName('settings[priority]'); $sel_priority->setSize(1); $sel_priority->setAttribute('class', 'form-control'); $sel_priority->setSelected($this->getConfig('priority')); foreach ([0 => $this->i18n('disabled'), 1 => $this->i18n('high'), 3 => $this->i18n('normal'), 5 => $this->i18n('low')] as $no => $name) { $sel_priority->addOption($name, $no); } $sel_debug = new rex_select(); $sel_debug->setid('phpmailer-smtp_debug'); $sel_debug->setName('settings[smtp_debug]'); $sel_debug->setSize(1); $sel_debug->setAttribute('class', 'form-control'); $sel_debug->setSelected($this->getConfig('smtp_debug')); foreach ([0 => $this->i18n('smtp_debug_0'), 1 => $this->i18n('smtp_debug_1'), 2 => $this->i18n('smtp_debug_2'), 3 => $this->i18n('smtp_debug_3'), 4 => $this->i18n('smtp_debug_4')] as $no => $name) { $sel_debug->addOption($name, $no); } if ($message != '') { echo rex_view::success($message); } $content = ''; $content .= '<fieldset><legend>' . $this->i18n('email_options') . '</legend>'; $formElements = []; $n = []; $n['label'] = '<label for="phpmailer-fromname">' . $this->i18n('sender_name') . '</label>'; $n['field'] = '<input class="form-control" id="phpmailer-fromname" type="text" name="settings[fromname]" value="' . $this->getConfig('fromname') . '" />'; $formElements[] = $n; $n = [];
$thumbsresize = true; if (!OOAddon::isAvailable('image_resize')) { $thumbsresize = false; } // *************************************** KATEGORIEN CHECK UND AUSWAHL // ***** kategorie auswahl $db = new rex_sql(); $file_cat = $db->getArray('SELECT * FROM ' . $REX['TABLE_PREFIX'] . 'file_category ORDER BY name ASC'); // ***** select bauen $sel_media = new rex_select(); $sel_media->setId("rex_file_category"); $sel_media->setName("rex_file_category"); $sel_media->setSize(1); $sel_media->setStyle('class="rex-form-select"'); $sel_media->setSelected($rex_file_category); $sel_media->setAttribute('onchange', 'this.form.submit();'); $sel_media->addOption($I18N->msg('pool_kats_no'), "0"); $mediacat_ids = array(); if ($rootCats = OOMediaCategory::getRootCategories()) { foreach ($rootCats as $rootCat) { rex_mediapool_addMediacatOptions($sel_media, $rootCat, $mediacat_ids); } } // ----- EXTENSION POINT echo rex_register_extension_point('PAGE_MEDIAPOOL_HEADER', '', array('subpage' => $subpage, 'category_id' => $rex_file_category)); // ***** formular $cat_out = '<div class="rex-form" id="rex-form-mediapool-selectcategory"> <form action="index.php" method="post"> <fieldset class="rex-form-col-1"> <legend>' . $I18N->msg('pool_select_cat') . '</legend>
$sel_be_sprache->addOption('default', ''); $saveLocale = rex_i18n::getLocale(); $langs = []; foreach (rex_i18n::getLocales() as $locale) { rex_i18n::setLocale($locale, false); // Locale nicht neu setzen $sel_be_sprache->addOption(rex_i18n::msg('lang'), $locale); } rex_i18n::setLocale($saveLocale, false); $userperm_be_sprache = rex_request('userperm_be_sprache', 'string'); // ----- welche startseite $sel_startpage = new rex_select(); $sel_startpage->setSize(1); $sel_startpage->setName('userperm_startpage'); $sel_startpage->setId('rex-user-perm-startpage'); $sel_startpage->setAttribute('class', 'form-control'); $sel_startpage->addOption('default', ''); $startpages = []; foreach (rex_be_controller::getPages() as $page => $pageObj) { /* @var $pageObj rex_be_page */ if ($pageObj->hasNavigation() && !$pageObj->isHidden()) { $startpages[$page] = $pageObj->getTitle(); } } asort($startpages); $sel_startpage->addOptions($startpages); $userperm_startpage = rex_request('userperm_startpage', 'string'); // --------------------------------- Title // --------------------------------- FUNCTIONS $FUNC_UPDATE = ''; $FUNC_APPLY = '';
case 1: case 2: case 3: case 4: $dbchecked[$createdb] = ' checked="checked"'; break; default: $dbchecked[0] = ' checked="checked"'; } // Vorhandene Exporte auslesen $sel_export = new rex_select(); $sel_export->setName('import_name'); $sel_export->setId('rex-form-import-name'); $sel_export->setSize(1); $sel_export->setStyle('class="form-control rex-js-import-name"'); $sel_export->setAttribute('onclick', 'checkInput(\'createdb_3\')'); $export_dir = rex_backup::getDir(); $exports_found = false; if (is_dir($export_dir)) { if ($handle = opendir($export_dir)) { $export_archives = []; $export_sqls = []; while (($file = readdir($handle)) !== false) { if ($file == '.' || $file == '..') { continue; } $isSql = substr($file, strlen($file) - 4) == '.sql'; $isArchive = substr($file, strlen($file) - 7) == '.tar.gz'; if ($isSql) { // cut .sql $export_sqls[] = substr($file, 0, -4);
$addons = rex_install_packages::getMyPackages(); } catch (rex_functional_exception $e) { echo rex_view::error($e->getMessage()); $addonkey = ''; } if ($addonkey && isset($addons[$addonkey])) { $addon = $addons[$addonkey]; $file_id = rex_request('file', 'string'); if ($file_id) { $new = $file_id == 'new'; $file = $new ? ['version' => '', 'description' => '', 'status' => 1, 'redaxo_versions' => ['5.0.x']] : $addon['files'][$file_id]; $newVersion = rex_addon::get($addonkey)->getVersion(); $redaxo_select = new rex_select(); $redaxo_select->setName('upload[redaxo][]'); $redaxo_select->setId('rex-install-packages-upload-redaxo'); $redaxo_select->setAttribute('class', 'form-control'); $redaxo_select->setSize(4); $redaxo_select->setMultiple(true); $redaxo_select->addOption('5.0.x', '5.0.x'); $redaxo_select->setSelected($file['redaxo_versions']); $uploadCheckboxDisabled = ''; $hiddenField = ''; if ($new || !rex_addon::exists($addonkey)) { $uploadCheckboxDisabled = ' disabled="disabled"'; $hiddenField = '<input type="hidden" name="upload[upload_file]" value="' . (int) $new . '" />'; } $panel = '<fieldset>'; $formElements = []; $n = []; $n['label'] = '<label for="rex-js-install-packages-upload-version">' . $this->i18n('version') . '</label>'; $n['field'] = '<p class="form-control-static" id="rex-js-install-packages-upload-version">' . ($new ? $newVersion : $file['version']) . '</p>
/** * Erstellt den nötigen HTML Code um ein Formular zu erweitern * * @param $sqlFields rex_sql-objekt, dass die zu verarbeitenden Felder enthält * @param $activeItem objekt, dass mit getValue() die Werte des akuellen Eintrags zurückgibt * @param $formatCallback callback, dem die infos als Array übergeben werden und den formatierten HTML Text zurückgibt */ function rex_a62_metaFields($sqlFields, $activeItem, $formatCallback, $epParams) { global $I18N, $REX; $s = ''; // Startwert für MEDIABUTTON, MEDIALIST, LINKLIST zähler $media_id = 1; $mlist_id = 1; $link_id = 1; $llist_id = 1; $sqlFields->reset(); for ($i = 0; $i < $sqlFields->getRows(); $i++, $sqlFields->next()) { // Umschliessendes Tag von Label und Formularelement $tag = 'p'; $tag_attr = ''; $name = $sqlFields->getValue('name'); $title = $sqlFields->getValue('title'); $params = $sqlFields->getValue('params'); $typeLabel = $sqlFields->getValue('label'); $attr = $sqlFields->getValue('attributes'); $dblength = $sqlFields->getValue('dblength'); $restrictions = $sqlFields->getValue('restrictions'); $attr .= rex_tabindex(); $attrArray = rex_split_string($attr); if (isset($attrArray['perm'])) { if (!$REX['USER']->hasPerm($attrArray['perm'])) { continue; } unset($attrArray['perm']); } $defaultValue = $sqlFields->getValue('default'); if ($activeItem) { $itemValue = $activeItem->getValue($name); if (strpos($itemValue, '|+|') !== false) { // Alte notation mit |+| als Trenner $dbvalues = explode('|+|', $activeItem->getValue($name)); } else { // Neue Notation mit | als Trenner $dbvalues = explode('|', $activeItem->getValue($name)); } } else { $dbvalues = (array) $sqlFields->getValue('default'); } if ($title != '') { $label = rex_translate($title); } else { $label = htmlspecialchars($name); } $id = preg_replace('/[^a-zA-Z\\-0-9_]/', '_', $label); $labelIt = true; $field = ''; switch ($typeLabel) { case 'text': $tag_attr = ' class="rex-form-text"'; $rexInput = rex_input::factory($typeLabel); $rexInput->addAttributes($attrArray); $rexInput->setAttribute('id', $id); $rexInput->setAttribute('name', $name); if ($dblength > 0) { $rexInput->setAttribute('maxlength', $dblength); } if ($activeItem) { $rexInput->setValue($activeItem->getValue($name)); } else { $rexInput->setValue($defaultValue); } $field = $rexInput->getHtml(); break; case 'checkbox': // Beachte auch default values in multiple fields bei ADD. // Im EDIT wurde dies bereits vorher gehandelt if (!$activeItem) { $defaultValue = explode('|', $defaultValue); } $name .= '[]'; case 'radio': $values = array(); if (rex_sql::getQueryType($params) == 'SELECT') { $sql = rex_sql::factory(); $value_groups = $sql->getDBArray($params, MYSQL_NUM); foreach ($value_groups as $value_group) { if (isset($value_group[1])) { $values[$value_group[1]] = $value_group[0]; } else { $values[$value_group[0]] = $value_group[0]; } } } else { $value_groups = explode('|', $params); foreach ($value_groups as $value_group) { // check ob key:value paar // und der wert beginnt nicht mit "translate:" if (strpos($value_group, ':') !== false && strpos($value_group, 'translate:') !== 0) { $temp = explode(':', $value_group, 2); $values[$temp[0]] = rex_translate($temp[1]); } else { $values[$value_group] = rex_translate($value_group); } } } $class_s = $typeLabel; $class_p = $typeLabel == 'radio' ? 'radios' : 'checkboxes'; $oneValue = count($values) == 1; if (!$oneValue) { $labelIt = false; $tag = 'div'; $tag_attr = ' class="rex-form-col-a rex-form-' . $class_p . '"'; $field .= '<p class="rex-form-label">' . $label . '</p><div class="rex-form-' . $class_p . '-wrapper">'; } $attrStr = ''; $classAdd = ''; foreach ($attrArray as $key => $value) { if ($key == 'class') { $classAdd = ' ' . $value; } else { $attrStr = ' ' . $key . '="' . $value . '"'; } } if (!$activeItem) { $dbvalues = (array) $defaultValue; } foreach ($values as $key => $value) { $id = preg_replace('/[^a-zA-Z\\-0-9_]/', '_', $id . $key); // wenn man keine Werte angibt (Boolean Chkbox/Radio) // Dummy Wert annehmen, damit an/aus unterscheidung funktioniert if ($oneValue && $key == '') { $key = 'true'; } $selected = ''; if (in_array($key, $dbvalues)) { $selected = ' checked="checked"'; } if ($oneValue) { $tag_attr = ' class="rex-form-col-a rex-form-' . $class_s . $classAdd . '"'; $field .= '<input class="rex-form-' . $class_s . '" type="' . $typeLabel . '" name="' . $name . '" value="' . htmlspecialchars($key) . '" id="' . $id . '" ' . $attrStr . $selected . ' />' . "\n"; } else { $field .= '<p class="rex-form-' . $class_s . ' rex-form-label-right' . $classAdd . '">' . "\n"; $field .= '<input class="rex-form-' . $class_s . '" type="' . $typeLabel . '" name="' . $name . '" value="' . htmlspecialchars($key) . '" id="' . $id . '" ' . $attrStr . $selected . ' />' . "\n"; $field .= '<label for="' . $id . '">' . htmlspecialchars($value) . '</label>'; $field .= '</p>' . "\n"; } } if (!$oneValue) { $field .= '</div>'; } break; case 'select': $tag_attr = ' class="rex-form-select"'; $select = new rex_select(); $select->setStyle('class="rex-form-select"'); $select->setName($name); $select->setId($id); $multiple = false; foreach ($attrArray as $attr_name => $attr_value) { if (empty($attr_name)) { continue; } $select->setAttribute($attr_name, $attr_value); if ($attr_name == 'multiple') { $multiple = true; $select->setName($name . '[]'); } } // Beachte auch default values in multiple fields bei ADD. // Im EDIT wurde dies bereits vorher gehandelt if ($multiple && !$activeItem) { $dbvalues = explode('|', $defaultValue); } // hier mit den "raw"-values arbeiten, da die rex_select klasse selbst escaped $select->setSelected($dbvalues); if (!$multiple) { $select->setSize(1); } if (rex_sql::getQueryType($params) == 'SELECT') { // Werte via SQL Laden $select->addDBSqlOptions($params); } else { // Optionen mit | separiert // eine einzelne Option kann mit key:value separiert werden $values = array(); $value_groups = explode('|', $params); foreach ($value_groups as $value_group) { // check ob key:value paar // und der wert beginnt nicht mit "translate:" if (strpos($value_group, ':') !== false && strpos($value_group, 'translate:') !== 0) { $temp = explode(':', $value_group, 2); $values[$temp[0]] = rex_translate($temp[1]); } else { $values[$value_group] = rex_translate($value_group); } } $select->addOptions($values); } $field .= $select->get(); break; case 'date': case 'time': case 'datetime': $tag_attr = ' class="rex-form-select-date"'; $active = $dbvalues[0] != 0; if ($dbvalues[0] == '') { $dbvalues[0] = time(); } $inputValue = array(); $inputValue['year'] = date('Y', $dbvalues[0]); $inputValue['month'] = date('m', $dbvalues[0]); $inputValue['day'] = date('j', $dbvalues[0]); $inputValue['hour'] = date('G', $dbvalues[0]); $inputValue['minute'] = date('i', $dbvalues[0]); $rexInput = rex_input::factory($typeLabel); $rexInput->addAttributes($attrArray); $rexInput->setAttribute('id', $id); $rexInput->setAttribute('name', $name); $rexInput->setValue($inputValue); $field = $rexInput->getHtml(); $checked = $active ? ' checked="checked"' : ''; $field .= '<input class="rex-form-select-checkbox rex-metainfo-checkbox" type="checkbox" name="' . $name . '[active]" value="1"' . $checked . ' />'; break; case 'textarea': $tag_attr = ' class="rex-form-textarea"'; $rexInput = rex_input::factory($typeLabel); $rexInput->addAttributes($attrArray); $rexInput->setAttribute('id', $id); $rexInput->setAttribute('name', $name); if ($activeItem) { $rexInput->setValue($activeItem->getValue($name)); } else { $rexInput->setValue($defaultValue); } $field = $rexInput->getHtml(); break; case 'legend': $tag = ''; $tag_attr = ''; $labelIt = false; // tabindex entfernen, macht bei einer legend wenig sinn $attr = preg_replace('@tabindex="[^"]*"@', '', $attr); $field = '</div></fieldset><fieldset class="rex-form-col-1"><legend id="' . $id . '"' . $attr . '>' . $label . '</legend><div class="rex-form-wrapper">'; break; case 'REX_MEDIA_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-form-widget"'; $paramArray = rex_split_string($params); $rexInput = rex_input::factory('mediabutton'); $rexInput->addAttributes($attrArray); $rexInput->setButtonId($media_id); $rexInput->setAttribute('name', $name); $rexInput->setValue($dbvalues[0]); if (isset($paramArray['category'])) { $rexInput->setCategoryId($paramArray['category']); } if (isset($paramArray['types'])) { $rexInput->setTypes($paramArray['types']); } if (isset($paramArray['preview'])) { $rexInput->setPreview($paramArray['preview']); } $id = $rexInput->getAttribute('id'); $field = $rexInput->getHtml(); $media_id++; break; case 'REX_MEDIALIST_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-form-widget"'; $paramArray = rex_split_string($params); $name .= '[]'; $rexInput = rex_input::factory('medialistbutton'); $rexInput->addAttributes($attrArray); $rexInput->setButtonId($mlist_id); $rexInput->setAttribute('name', $name); $rexInput->setValue($dbvalues[0]); if (isset($paramArray['category'])) { $rexInput->setCategoryId($paramArray['category']); } if (isset($paramArray['types'])) { $rexInput->setTypes($paramArray['types']); } if (isset($paramArray['preview'])) { $rexInput->setPreview($paramArray['preview']); } $id = $rexInput->getAttribute('id'); $field = $rexInput->getHtml(); $mlist_id++; break; case 'REX_LINK_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-form-widget"'; $paramArray = rex_split_string($params); $category = ''; if (isset($paramArray['category'])) { $category = $paramArray['category']; } elseif ($activeItem) { $category = $activeItem->getValue('category_id'); } $rexInput = rex_input::factory('linkbutton'); $rexInput->addAttributes($attrArray); $rexInput->setButtonId($link_id); $rexInput->setCategoryId($category); $rexInput->setAttribute('name', $name); $rexInput->setValue($dbvalues[0]); $id = $rexInput->getAttribute('id'); $field = $rexInput->getHtml(); $link_id++; break; case 'REX_LINKLIST_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-form-widget"'; $paramArray = rex_split_string($params); $category = ''; if (isset($paramArray['category'])) { $category = $paramArray['category']; } elseif ($activeItem) { $category = $activeItem->getValue('category_id'); } $name .= '[]'; $rexInput = rex_input::factory('linklistbutton'); $rexInput->addAttributes($attrArray); $rexInput->setButtonId($llist_id); $rexInput->setCategoryId($category); $rexInput->setAttribute('name', $name); $rexInput->setValue(implode(',', $dbvalues)); $id = $rexInput->getAttribute('id'); $field = $rexInput->getHtml(); $llist_id++; break; default: // ----- EXTENSION POINT list($field, $tag, $tag_attr, $id, $label, $labelIt) = rex_register_extension_point('A62_CUSTOM_FIELD', array($field, $tag, $tag_attr, $id, $label, $labelIt, 'values' => $dbvalues, 'rawvalues' => $dbvalues, 'type' => $typeLabel, 'sql' => $sqlFields)); } $s .= rex_call_func($formatCallback, array($field, $tag, $tag_attr, $id, $label, $labelIt, $typeLabel), false); } return $s; }
function enterObject(&$email_elements, &$sql_elements, &$warning, &$form_output, $send = 0) { $day = date("d"); $month = date("m"); $year = date("Y"); $hour = date("H"); $min = date("i"); $sec = 0; if (!is_array($this->getValue()) && strlen($this->getValue()) == 19) { if ($a = explode(" ", $this->getValue())) { if ($d = explode("-", $a[0])) { $year = (int) $d[0]; $month = (int) $d[1]; $day = (int) $d[2]; } if (isset($a[1])) { if ($d = explode(":", $a[1])) { $hour = (int) $d[0]; $min = (int) $d[1]; $sec = (int) $d[2]; } } } } $formname = 'FORM[' . $this->params["form_name"] . '][el_' . $this->id . ']'; $twarning = ""; if (!checkdate($month, $day, $year) && $send == 1) { $twarning = 'border:1px solid #f99; background-color:#f9f3f3;'; $warning[] = "Datum ist falsch"; } $isodatum = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $month, $day, $hour, $min, 0); $email_elements[$this->getName()] = $isodatum; $sql_elements[$this->getName()] = $isodatum; $out = ""; $out .= ' <p class="form_select_datetime" id="' . $this->getHTMLId() . '"> <label class="select" for="el_' . $this->getId() . '" >' . $this->elements[2] . '</label>'; $dsel = new rex_select(); $dsel->setName($formname . '[day]'); $dsel->setStyle($twarning); $dsel->setAttribute('class', 'formdate-day'); $dsel->setId('el_' . $this->id . ''); $dsel->setSize(1); // $dsel->addOption("TT","0"); for ($i = 1; $i < 32; $i++) { $dsel->addOption($i, $i); } $dsel->setSelected($day); $out .= '<div class="day"><span>Tag:</span>' . $dsel->get() . '</div>'; $msel = new rex_select(); $msel->setName($formname . '[month]'); $msel->setStyle($twarning); $msel->setAttribute('class', 'formdate-month'); $msel->setId('el_' . $this->id . '_month'); $msel->setSize(1); // $msel->addOption("MM","0"); for ($i = 1; $i < 13; $i++) { $msel->addOption($i, $i); } $msel->setSelected($month); $out .= '<div class="month"><span>Monat:</span>' . $msel->get() . '</div>'; $y = explode(",", $this->elements[3]); $year_start = (int) @$y[0]; $year_end = (int) @$y[1]; if ($year_start == 0) { $year_start = date("Y") - 5; } if ($year_end == 0) { $year_start = date("Y") + 5; } if ($year_end < $year_start) { $year_end = $year_start; } $ysel = new rex_select(); $ysel->setName($formname . '[year]'); $ysel->setStyle($twarning); $ysel->setAttribute('class', 'formdate-year'); $ysel->setId('el_' . $this->id . '_year'); $ysel->setSize(1); // $ysel->addOption("YYYY","0"); for ($i = $year_start; $i <= $year_end; $i++) { $ysel->addOption($i, $i); } $ysel->setSelected($year); $out .= '<div class="year"><span>Jahr:</span>' . $ysel->get() . '</div>'; $hsel = new rex_select(); $hsel->setName($formname . '[hour]'); $hsel->setStyle($twarning); $hsel->setAttribute('class', 'formdate-hour'); $hsel->setId('el_' . $this->id . '_hour'); $hsel->setSize(1); // $hsel->addOption("HH","00"); for ($i = 0; $i < 24; $i++) { $hsel->addOption(str_pad($i, 2, '0', STR_PAD_LEFT), str_pad($i, 2, '0', STR_PAD_LEFT)); } $hsel->setSelected($hour); $out .= '<div class="hour"><span>Stunde:</span>' . $hsel->get() . 'h</div>'; $msel = new rex_select(); $msel->setName($formname . '[min]'); $msel->setStyle($twarning); $msel->setAttribute('class', 'formdate-minute'); $msel->setId('el_' . $this->id . '_min'); $msel->setSize(1); // $msel->addOption("MM","0"); $mmm = array(); if (isset($this->elements[4]) && $this->elements[4] != "") { $mmm = explode(",", trim($this->elements[4])); } if (count($mmm) > 0) { foreach ($mmm as $m) { $msel->addOption($m, $m); } } else { for ($i = 0; $i < 61; $i++) { $msel->addOption(str_pad($i, 2, '0', STR_PAD_LEFT), str_pad($i, 2, '0', STR_PAD_LEFT)); } } $msel->setSelected($min); $out .= '<div class="minute"><span>Minute:</span>' . $msel->get() . 'm</div>'; $out .= '</p>'; $form_output[] = $out; }
</div> <?php if (OOAddon::isActivated('multinewsletter')) { ?> <div class="rex-form-row rex-form-element-v1"> <p class="rex-form-text"> <label for="multinewsletter_group"><?php echo $I18N_KURSE->msg('multinewsletter_gruppe'); ?> </label> <?php require_once $REX['INCLUDE_PATH'] . '/addons/multinewsletter/classes/class.multinewsletter_group.inc.php'; $groups = new rex_select(); $groups->setSize(1); $groups->setAttribute('class', 'myrex_select'); $groups->addOption($I18N_KURSE->msg('multinewsletter_nicht_anmelden'), '0'); $newsletter_groups = MultinewsletterGroupList::getAll($REX['TABLE_PREFIX']); foreach ($newsletter_groups as $group) { $groups->addOption($group->name, $group->group_id); } $groups->setSelected($REX['ADDON']['d2u_kurse']['settings']['multinewsletter_group']); $groups->setAttribute('id', 'multinewsletter_group'); $groups->setName('settings[multinewsletter_group]'); print $groups->get(); ?> </p> </div> <?php } ?>
$sel_smtpsecure->addOption($name, $type); } $sel_encoding = new rex_select(); $sel_encoding->setId('phpmailer-encoding'); $sel_encoding->setName('settings[encoding]'); $sel_encoding->setSize(1); $sel_encoding->setAttribute('class', 'form-control'); $sel_encoding->setSelected($this->getConfig('encoding')); foreach (['7bit', '8bit', 'binary', 'base64', 'quoted-printable'] as $enc) { $sel_encoding->addOption($enc, $enc); } $sel_priority = new rex_select(); $sel_priority->setid('phpmailer-priority'); $sel_priority->setName('settings[priority]'); $sel_priority->setSize(1); $sel_priority->setAttribute('class', 'form-control'); $sel_priority->setSelected($this->getConfig('priority')); foreach ([1 => $this->i18n('high'), 3 => $this->i18n('normal'), 5 => $this->i18n('low')] as $no => $name) { $sel_priority->addOption($name, $no); } if ($message != '') { echo rex_view::success($message); } $content = ''; $content .= '<fieldset><legend>' . $this->i18n('email_options') . '</legend>'; $formElements = []; $n = []; $n['label'] = '<label for="phpmailer-fromname">' . $this->i18n('sender_name') . '</label>'; $n['field'] = '<input class="form-control" id="phpmailer-fromname" type="text" name="settings[fromname]" value="' . $this->getConfig('fromname') . '" />'; $formElements[] = $n; $n = [];
<div class="rex-form"> <form action="index.php" method="get" class="rex-fl-lft" style="margin-left:5px"> <fieldset> <input type="hidden" name="page" value="<?php print rex_request('page'); ?> " /> <input type="hidden" name="subpage" value="<?php print rex_request('subpage'); ?> " /> <label for="filter">Filter:</label> <?php $select = new rex_select(); $select->setName('filter'); $select->setAttribute('onchange', 'this.form.submit();'); $select->setSize(1); $select->setMultiple(false); $select->setStyle("width:250px;"); $select->addOption("Alle anzeigen", 999); $select->addOption("nur News, die den Status \"online\" haben", 101); $select->addOption("nur News, die den Status \"auf Startseite\" haben", 102); $qry = 'SELECT id, name from ' . TBL_NEWS_CATS; $sql = new rex_sql(); $data = $sql->getArray($qry); if (is_array($data) && sizeof($data) > 0) { foreach ($data as $row) { $select->addOption("nur aus " . $row['name'], $row['id']); } } if (sizeof($REX['CLANG']) > 1) {
function enterObject(&$email_elements, &$sql_elements, &$warning, &$form_output, $send = 0) { $hour = date("H"); $min = date("i"); $sec = 0; if (!is_array($this->getValue()) && strlen($this->getValue()) == 8) { if ($d = explode(":", $this->getValue())) { $hour = (int) $d[0]; $min = (int) $d[1]; $sec = (int) $d[2]; } } $formname = 'FORM[' . $this->params["form_name"] . '][el_' . $this->id . ']'; $isotime = sprintf("%02d:%02d:%02d", $hour, $min, $sec); $email_elements[$this->getName()] = $isotime; $sql_elements[$this->getName()] = $isotime; $out = ""; $out .= ' <p class="form_select_time" id="' . $this->getHTMLId() . '"> <label class="select" for="el_' . $this->getId() . '" >' . $this->elements[2] . '</label>'; $hsel = new rex_select(); $hsel->setName($formname . '[hour]'); $hsel->setAttribute('class', 'formdate-hour'); $hsel->setId('el_' . $this->id . '_hour'); $hsel->setSize(1); // $hsel->addOption("HH","00"); $von_h = 0; $bis_h = 24; if (isset($this->elements[4]) && trim($this->elements[4]) != "") { if ($a = explode(",", $this->elements[4])) { $von_h = (int) $a[0]; $bis_h = (int) $a[1]; } } if ($von_h < 0 || $von_h > 23) { $von_h = 0; } if ($bis_h < 1 || $bis_h > 23) { $bis_h = 23; } for ($i = 0; $i < 24; $i++) { $hsel->addOption(str_pad($i, 2, '0', STR_PAD_LEFT), str_pad($i, 2, '0', STR_PAD_LEFT)); } $hsel->setSelected($hour); $out .= '<div class="hour"><span>Stunde:</span>' . $hsel->get() . 'h</div>'; $msel = new rex_select(); $msel->setName($formname . '[min]'); $msel->setAttribute('class', 'formdate-minute'); $msel->setId('el_' . $this->id . '_min'); $msel->setSize(1); // $msel->addOption("MM","0"); $mmm = array(); if (isset($this->elements[4]) && trim($this->elements[4]) != "") { $mmm = explode(",", trim($this->elements[4])); } if (count($mmm) > 0) { foreach ($mmm as $m) { $msel->addOption($m, $m); } } else { for ($i = 0; $i < 61; $i++) { $msel->addOption(str_pad($i, 2, '0', STR_PAD_LEFT), str_pad($i, 2, '0', STR_PAD_LEFT)); } } $msel->setSelected($min); $out .= '<div class="minute"><span>Minute:</span>' . $msel->get() . 'm</div>'; $out .= '</p>'; $form_output[] = $out; }
/** * Erstellt den nötigen HTML Code um ein Formular zu erweitern * * @param $sqlFields rex_sql-objekt, dass die zu verarbeitenden Felder enthält * @param $activeItem objekt, dass mit getValue() die Werte des akuellen Eintrags zurückgibt * @param $formatCallback callback, dem die infos als Array übergeben werden und den formatierten HTML Text zurückgibt */ function rex_a62_metaFields($sqlFields, $activeItem, $formatCallback, $epParams) { global $I18N; $s = ''; // Startwert für MEDIABUTTON, MEDIALIST, LINKLIST zähler $media_id = 1; $mlist_id = 1; $link_id = 1; $llist_id = 1; $sqlFields->reset(); for ($i = 0; $i < $sqlFields->getRows(); $i++) { // Umschliessendes Tag von Label und Formularelement $tag = 'p'; $tag_attr = ''; $name = $sqlFields->getValue('name'); $title = $sqlFields->getValue('title'); $params = $sqlFields->getValue('params'); $typeLabel = $sqlFields->getValue('label'); $attr = $sqlFields->getValue('attributes'); $dblength = $sqlFields->getValue('dblength'); $dbvalues = array(htmlspecialchars($sqlFields->getValue('default'))); $dbvalues_esc = $dbvalues; if ($activeItem) { $itemValue = $activeItem->getValue($name); if (strpos($itemValue, '|+|') !== false) { // Alte notation mit |+| als Trenner $dbvalues = explode('|+|', $activeItem->getValue($name)); } else { // Neue Notation mit | als Trenner $dbvalues = explode('|', $activeItem->getValue($name)); } $dbvalues_esc = array_map('htmlspecialchars', $dbvalues); } if ($title != '') { $label = htmlspecialchars(rex_translate($title)); } else { $label = htmlspecialchars($name); } $id = preg_replace('/[^a-zA-Z\\-0-9_]/', '_', $label); $attr .= rex_tabindex(); $labelIt = true; $field = ''; switch ($typeLabel) { case 'text': $field = '<input type="' . $typeLabel . '" name="' . $name . '" value="' . $dbvalues_esc[0] . '" id="' . $id . ' "maxlength="' . $dblength . '" ' . $attr . ' />'; break; case 'checkbox': $name .= '[]'; case 'radio': $values = array(); if (rex_sql::getQueryType($params) == 'SELECT') { $sql = new rex_sql(); $value_groups = $sql->getDBArray($params, MYSQL_NUM); foreach ($value_groups as $value_group) { if (isset($value_group[1])) { $values[$value_group[1]] = $value_group[0]; } else { $values[$value_group[0]] = $value_group[0]; } } } else { $value_groups = explode('|', $params); foreach ($value_groups as $value_group) { if (strpos($value_group, ':') !== false) { $temp = explode(':', $value_group); $values[$temp[0]] = $temp[1]; } else { $values[$value_group] = $value_group; } } } $class = $typeLabel == 'radio' ? 'rex-rdo' : 'rex-chckbx'; $oneValue = count($values) == 1; if (!$oneValue) { $tag = ''; $labelIt = false; $tag = 'div'; $tag_attr = ' class="rex-chckbxs rex-ptag"'; $field .= '<p>' . $label . '</p>'; } foreach ($values as $key => $value) { $id = preg_replace('/[^a-zA-Z\\-0-9_]/', '_', $id . $key); $key = htmlspecialchars($key); // wenn man keine Werte angibt (Boolean Chkbox/Radio) // Dummy Wert annehmen, damit an/aus unterscheidung funktioniert if ($oneValue && $key == '') { $key = 'true'; } $selected = ''; if (in_array($key, $dbvalues_esc)) { $selected = ' checked="checked"'; } if ($oneValue) { $tag_attr = ' class="' . $class . '"'; $field .= '<input type="' . $typeLabel . '" name="' . $name . '" value="' . $key . '" id="' . $id . '" ' . $attr . $selected . ' />' . "\n"; } else { $field .= '<p class="' . $class . '">' . "\n"; $field .= '<label for="' . $id . '"><span>' . htmlspecialchars($value) . '</span></label>'; $field .= '<input type="' . $typeLabel . '" name="' . $name . '" value="' . $key . '" id="' . $id . '" ' . $attr . $selected . ' />' . "\n"; $field .= '</p>' . "\n"; } } break; case 'select': $select = new rex_select(); $select->setName($name); $select->setId($id); // hier mit den "raw"-values arbeiten, da die rex_select klasse selbst escaped $select->setSelected($dbvalues); foreach (rex_split_string($attr) as $attr_name => $attr_value) { if (empty($attr_name)) { continue; } $select->setAttribute($attr_name, $attr_value); if ($attr_name == 'multiple') { $select->setName($name . '[]'); } } if (rex_sql::getQueryType($params) == 'SELECT') { // Werte via SQL Laden $select->addDBSqlOptions($params); } else { // Optionen mit | separiert // eine einzelne Option kann mit key:value separiert werden $values = array(); $value_groups = explode('|', $params); foreach ($value_groups as $value_group) { if (strpos($value_group, ':') !== false) { $temp = explode(':', $value_group); $values[$temp[0]] = $temp[1]; } else { $values[$value_group] = $value_group; } } $select->addOptions($values); } $field .= $select->get(); break; case 'datetime': case 'date': if ($dbvalues_esc[0] == '') { $dbvalues_esc[0] = time(); } $style = 'class="rex-fdate"'; $yearStyle = 'class="rex-fdatey"'; $yearSelect = new rex_select(); $yearSelect->addOptions(range(2005, date('Y') + 10), true); $yearSelect->setName($name . '[year]'); $yearSelect->setSize(1); $yearSelect->setId($id); $yearSelect->setStyle($yearStyle); $yearSelect->setSelected(date('Y', $dbvalues_esc[0])); $monthSelect = new rex_select(); $monthSelect->addOptions(range(1, 12), true); $monthSelect->setName($name . '[month]'); $monthSelect->setSize(1); $monthSelect->setStyle($style); $monthSelect->setSelected(date('m', $dbvalues_esc[0])); $daySelect = new rex_select(); $daySelect->addOptions(range(1, 31), true); $daySelect->setName($name . '[day]'); $daySelect->setSize(1); $daySelect->setStyle($style); $daySelect->setSelected(date('j', $dbvalues_esc[0])); if ($typeLabel == 'datetime') { $hourSelect = new rex_select(); $hourSelect->addOptions(range(1, 23), true); $hourSelect->setName($name . '[hour]'); $hourSelect->setSize(1); $hourSelect->setStyle($style); $hourSelect->setSelected(date('G', $dbvalues_esc[0])); $minuteSelect = new rex_select(); $minuteSelect->addOptions(range(0, 59), true); $minuteSelect->setName($name . '[minute]'); $minuteSelect->setSize(1); $minuteSelect->setStyle($style); $minuteSelect->setSelected(date('i', $dbvalues_esc[0])); $field = $daySelect->get() . $monthSelect->get() . $yearSelect->get() . '-' . $hourSelect->get() . $minuteSelect->get(); } else { $field = $daySelect->get() . $monthSelect->get() . $yearSelect->get(); } break; case 'textarea': $field = '<textarea name="' . $name . '" id="' . $id . '" cols="50" rows="6" ' . $attr . '>' . $dbvalues_esc[0] . '</textarea>'; break; case 'REX_MEDIA_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-ptag"'; $field = rex_var_media::getMediaButton($media_id); $field = str_replace('REX_MEDIA[' . $media_id . ']', $dbvalues_esc[0], $field); $field = str_replace('MEDIA[' . $media_id . ']', $name, $field); $id = 'REX_MEDIA_' . $media_id; $media_id++; break; case 'REX_MEDIALIST_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-ptag"'; $name .= '[]'; $field = rex_var_media::getMediaListButton($mlist_id, implode(',', $dbvalues_esc)); $field = str_replace('MEDIALIST[' . $mlist_id . ']', $name, $field); $id = 'REX_MEDIALIST_' . $mlist_id; $mlist_id++; break; case 'REX_LINK_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-ptag"'; $category = ''; if ($activeItem) { $category = $activeItem->getValue('category_id'); } $field = rex_var_link::getLinkButton($link_id, $dbvalues_esc[0], $category); $field = str_replace('LINK[' . $link_id . ']', $name, $field); $id = 'LINK_' . $link_id; $link_id++; break; case 'REX_LINKLIST_BUTTON': $tag = 'div'; $tag_attr = ' class="rex-ptag"'; $category = ''; if ($activeItem) { $category = $activeItem->getValue('category_id'); } $name .= '[]'; $field = rex_var_link::getLinklistButton($llist_id, implode(',', $dbvalues), $category); $field = str_replace('LINKLIST[' . $llist_id . ']', $name, $field); $id = 'REX_LINKLIST_' . $llist_id; $llist_id++; break; default: // ----- EXTENSION POINT list($field, $tag, $tag_attr, $id, $label, $labelIt) = rex_register_extension_point('A62_CUSTOM_FIELD', array($field, $tag, $tag_attr, $id, $label, $labelIt, 'type' => $typeLabel, 'sql' => $sqlFields)); } $s .= rex_call_func($formatCallback, array($field, $tag, $tag_attr, $id, $label, $labelIt), false); $sqlFields->next(); } return $s; }
if ($user->hasPerm('copyContent[]') && $user->getComplexPerm('clang')->count() > 1) { $clang_perm = $user->getComplexPerm('clang')->getClangs(); $lang_a = new rex_select(); $lang_a->setId('clang_a'); $lang_a->setName('clang_a'); $lang_a->setSize('1'); $lang_a->setAttribute('class', 'form-control'); foreach ($clang_perm as $key) { $val = rex_i18n::translate(rex_clang::get($key)->getName()); $lang_a->addOption($val, $key); } $lang_b = new rex_select(); $lang_b->setId('clang_b'); $lang_b->setName('clang_b'); $lang_b->setSize('1'); $lang_b->setAttribute('class', 'form-control'); foreach ($clang_perm as $key) { $val = rex_i18n::translate(rex_clang::get($key)->getName()); $lang_b->addOption($val, $key); } $lang_a->setSelected(rex_request('clang_a', 'int', null)); $lang_b->setSelected(rex_request('clang_b', 'int', null)); $panel = '<fieldset>'; $grid = []; $formElements = []; $n = []; $n['label'] = '<label for="clang_a">' . rex_i18n::msg('content_contentoflang') . '</label>'; $n['field'] = $lang_a->get(); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('group', true);
break; case 3: $dbchecked3 = ' checked="checked"'; break; case 4: $dbchecked4 = ' checked="checked"'; break; default: $dbchecked0 = ' checked="checked"'; } // Vorhandene Exporte auslesen $sel_export = new rex_select(); $sel_export->setName('import_name'); $sel_export->setId('import_name'); $sel_export->setStyle('class="rex-slct"'); $sel_export->setAttribute('onchange', 'checkInput(\'dbanlegen_3\')'); $export_dir = $export_addon_dir . '/files'; $exports_found = false; if (is_dir($export_dir)) { if ($handle = opendir($export_dir)) { $export_archives = array(); $export_sqls = array(); while (($file = readdir($handle)) !== false) { if ($file == '.' || $file == '..') { continue; } $isSql = substr($file, strlen($file) - 4) == '.sql'; $isArchive = substr($file, strlen($file) - 7) == '.tar.gz'; if ($isSql) { $export_sqls[] = substr($file, 0, -4); $exports_found = true;
$addons = rex_install_packages::getMyPackages(); } catch (rex_install_functional_exception $e) { echo rex_warning($e->getMessage()); $addonkey = ''; } if ($addonkey && isset($addons[$addonkey])) { $addon = $addons[$addonkey]; $file_id = rex_request('file', 'string'); if ($file_id) { $new = $file_id == 'new'; $file = $new ? array('version' => '', 'description' => '', 'status' => 1, 'redaxo_versions' => array($REX['VERSION'] . '.' . $REX['SUBVERSION'] . '.x')) : $addon['files'][$file_id]; $newVersion = OOAddon::getVersion($addonkey); $redaxo_select = new rex_select(); $redaxo_select->setName('upload[redaxo][]'); $redaxo_select->setId('install-packages-upload-redaxo'); $redaxo_select->setAttribute('class', 'rex-form-select'); $redaxo_select->setSize(4); $redaxo_select->setMultiple(true); $redaxo_select->addOption('5.0.x', '5.0.x'); $redaxo_select->addOption('4.6.x', '4.6.x'); $redaxo_select->addOption('4.5.x', '4.5.x'); $redaxo_select->addOption('4.4.x', '4.4.x'); $redaxo_select->addOption('4.3.x', '4.3.x'); $redaxo_select->setSelected($file['redaxo_versions']); $uploadCheckboxDisabled = ''; $hiddenField = ''; if ($new || !OOAddon::isAvailable($addonkey)) { $uploadCheckboxDisabled = ' disabled="disabled"'; $hiddenField = '<input type="hidden" name="upload[upload_file]" value="' . (int) $new . '" />'; } $content = '