public function handleSave(array $params, rex_sql $sqlFields) { if (rex_request_method() != 'post' || !isset($params['id'])) { return $params; } $sql = rex_sql::factory(); // $sql->setDebug(); $sql->setTable(rex::getTablePrefix() . 'clang'); $sql->setWhere('id=:id', ['id' => $params['id']]); parent::fetchRequestValues($params, $sql, $sqlFields); // do the save only when metafields are defined if ($sql->hasValues()) { $sql->update(); } rex_clang_service::generateCache(); return $params; }
public function handleSave(array $params, rex_sql $sqlFields) { if (rex_request_method() != 'post') { return $params; } $article = rex_sql::factory(); // $article->setDebug(); $article->setTable(rex::getTablePrefix() . 'article'); $article->setWhere('id=:id AND clang_id=:clang', ['id' => $params['id'], 'clang' => $params['clang']]); parent::fetchRequestValues($params, $article, $sqlFields); // do the save only when metafields are defined if ($article->hasValues()) { $article->update(); } // Artikel nochmal mit den zusätzlichen Werten neu generieren rex_article_cache::generateMeta($params['id'], $params['clang']); return $params; }
function outputSlice($artDataSql, $module_id, $I_ID, $RE_CONTS, $RE_CONTS_CTYPE, $RE_MODUL_IN, $RE_MODUL_OUT, $RE_MODUL_ID, $RE_MODUL_NAME, $RE_C) { global $REX, $I18N; if ($this->mode == 'edit') { $form_url = 'index.php#addslice'; // ----- add select box einbauen if ($this->function == 'add' && $this->slice_id == $I_ID) { $slice_content = $this->addSlice($I_ID, $module_id); } else { // ----- BLOCKAUSWAHL - SELECT $this->MODULESELECT[$this->ctype]->setId('module_id' . $I_ID); $slice_content = ' <div class="rex-form rex-form-content-editmode"> <form action="' . $form_url . '" method="get" id="slice' . $RE_CONTS[$I_ID] . '"> <fieldset class="rex-form-col-1"> <legend><span>' . $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 . '" /> <div class="rex-form-wrapper"> <div class="rex-form-row"> <p class="rex-form-col-a rex-form-select"> ' . $this->MODULESELECT[$this->ctype]->get() . ' <noscript><input class="rex-form-submit" type="submit" name="btn_add" value="' . $I18N->msg('add_block') . '" /></noscript> </p> </div> </div> </fieldset> </form> </div>'; } // ----- Slicemenue $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(); if ($REX['USER']->isAdmin() || $REX['USER']->hasPerm('module[' . $RE_MODUL_ID[$I_ID] . ']')) { $templateHasModule = rex_template::hasModule($this->template_attributes, $this->ctype, $RE_MODUL_ID[$I_ID]); if ($templateHasModule) { $listElements[] = '<a href="' . sprintf($sliceUrl, '&function=edit') . '" class="rex-tx3">' . $I18N->msg('edit') . ' <span>' . $RE_MODUL_NAME[$I_ID] . '</span></a>'; } $listElements[] = '<a href="' . sprintf($sliceUrl, '&function=delete&save=1') . '" class="rex-tx2" onclick="return confirm(\'' . $I18N->msg('delete') . ' ?\')">' . $I18N->msg('delete') . ' <span>' . $RE_MODUL_NAME[$I_ID] . '</span></a>'; if ($templateHasModule && $REX['USER']->hasPerm('moveSlice[]')) { $moveUp = $I18N->msg('move_slice_up'); $moveDown = $I18N->msg('move_slice_down'); // upd stamp uebergeben, da sonst ein block nicht mehrfach hintereindander verschoben werden kann // (Links waeren sonst gleich und der Browser laesst das klicken auf den gleichen Link nicht zu) $listElements[] = '<a href="' . sprintf($sliceUrl, '&upd=' . time() . '&function=moveup') . '" title="' . $moveUp . '" class="rex-slice-move-up"><span>' . $RE_MODUL_NAME[$I_ID] . '</span></a>'; $listElements[] = '<a href="' . sprintf($sliceUrl, '&upd=' . time() . '&function=movedown') . '" title="' . $moveDown . '" class="rex-slice-move-down"><span>' . $RE_MODUL_NAME[$I_ID] . '</span></a>'; } } else { $listElements[] = '<b class="rex-tx2">' . $I18N->msg('no_editing_rights') . ' <span>' . $RE_MODUL_NAME[$I_ID] . '</span></b>'; } // ----- 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], 'perm' => $REX['USER']->isAdmin() || $REX['USER']->hasPerm('module[' . $RE_MODUL_ID[$I_ID] . ']'))); $mne = ''; if ($this->function == 'edit' && $this->slice_id == $RE_CONTS[$I_ID]) { $mne .= '<div class="rex-content-editmode-module-name rex-form-content-editmode-edit-slice">'; } else { $mne .= '<div class="rex-content-editmode-module-name">'; } $mne .= ' <h3 class="rex-hl4">' . rex_translate($RE_MODUL_NAME[$I_ID]) . '</h3> <div class="rex-navi-slice"> <ul> '; $listElementFlag = true; foreach ($listElements as $listElement) { $class = ''; if ($listElementFlag) { $class = ' class="rex-navi-first"'; if (count($listElements) == 1) { $class = ' class="rex-navi-first rex-navi-onlyone"'; } $listElementFlag = false; } $mne .= '<li' . $class . '>' . $listElement . '</li>'; } $mne .= '</ul></div></div>'; // ----- EDIT/DELETE BLOCK - Wenn Rechte vorhanden if ($REX['USER']->isAdmin() || $REX['USER']->hasPerm('module[' . $RE_MODUL_ID[$I_ID] . ']')) { $msg = ''; if ($this->function != 'add' && $this->slice_id == $RE_CONTS[$I_ID]) { if ($this->warning != '') { $msg .= rex_warning($this->warning); } if ($this->info != '') { $msg .= rex_info($this->info); } } $slice_content .= $msg . $mne; if ($this->function == 'edit' && $this->slice_id == $RE_CONTS[$I_ID]) { // **************** Aktueller Slice $REX_ACTION = array(); // nach klick auf den übernehmen button, // die POST werte übernehmen if (rex_request_method() == 'post' && 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, $artDataSql); } } // ----- PRE VIEW ACTION [EDIT] $REX_ACTION = rex_execPreViewAction($RE_MODUL_ID[$I_ID], 'edit', $REX_ACTION); // ----- / PRE VIEW ACTION // ****************** Action Werte in SQL-Objekt uebernehmen foreach ($REX['VARIABLES'] as $obj) { $obj->setACValues($artDataSql, $REX_ACTION); } $slice_content .= $this->editSlice($RE_CONTS[$I_ID], $RE_MODUL_IN[$I_ID], $RE_CONTS_CTYPE[$I_ID], $RE_MODUL_ID[$I_ID]); $slice_content = $this->replaceVars($artDataSql, $slice_content); } else { // Modulinhalt ausgeben $slice_content .= ' <!-- *** OUTPUT OF MODULE-OUTPUT - START *** --> <div class="rex-content-editmode-slice-output"> <div class="rex-content-editmode-slice-output-2"> ' . $RE_MODUL_OUT[$I_ID] . ' </div> </div> <!-- *** OUTPUT OF MODULE-OUTPUT - END *** --> '; $slice_content = $this->replaceVars($artDataSql, $slice_content); } } else { // ----- hat keine rechte an diesem modul $slice_content .= $mne; // Modulinhalt ausgeben $slice_content .= ' <!-- *** OUTPUT OF MODULE-OUTPUT - START *** --> <div class="rex-content-editmode-slice-output"> <div class="rex-content-editmode-slice-output-2"> ' . $RE_MODUL_OUT[$I_ID] . ' </div> </div> <!-- *** OUTPUT OF MODULE-OUTPUT - END *** --> '; // $slice_content .= $mne. $RE_MODUL_OUT[$I_ID]; $slice_content = $this->replaceVars($artDataSql, $slice_content); } } else { // ----- wenn mode nicht edit $slice_content = parent::outputSlice($artDataSql, $module_id, $I_ID, $RE_CONTS, $RE_CONTS_CTYPE, $RE_MODUL_IN, $RE_MODUL_OUT, $RE_MODUL_ID, $RE_MODUL_NAME, $RE_C); } return $slice_content; }
/** * Erweitert das Meta-Formular um die neuen Meta-Felder. * * @param string $prefix Feldprefix * @param array $params EP Params * * @return string */ public function renderFormAndSave($prefix, array $params) { // Beim ADD gibts noch kein activeItem $activeItem = null; if (isset($params['activeItem'])) { $activeItem = $params['activeItem']; } $filterCondition = $this->buildFilterCondition($params); $sqlFields = $this->getSqlFields($prefix, $filterCondition); $params = $this->handleSave($params, $sqlFields); // trigger callback of sql fields if (rex_request_method() == 'post') { $this->fireCallbacks($sqlFields); } return self::renderMetaFields($sqlFields, $params); }
protected function handleSave(array $params, rex_sql $sqlFields) { if (rex_request_method() != 'post' || !isset($params['id'])) { return $params; } $media = rex_sql::factory(); // $media->setDebug(); $media->setTable(rex::getTablePrefix() . 'media'); $media->setWhere('id=:mediaid', ['mediaid' => $params['id']]); parent::fetchRequestValues($params, $media, $sqlFields); // do the save only when metafields are defined if ($media->hasValues()) { $media->update(); } return $params; }
/** * {@inheritdoc} */ protected function outputSlice(rex_sql $artDataSql, $moduleIdToAdd) { if ($this->mode != 'edit') { // ----- wenn mode nicht edit $slice_content = parent::outputSlice($artDataSql, $moduleIdToAdd); } else { $sliceId = $artDataSql->getValue(rex::getTablePrefix() . 'article_slice.id'); $sliceCtype = $artDataSql->getValue(rex::getTablePrefix() . 'article_slice.ctype_id'); $moduleInput = $artDataSql->getValue(rex::getTablePrefix() . 'module.input'); $moduleOutput = $artDataSql->getValue(rex::getTablePrefix() . 'module.output'); $moduleId = $artDataSql->getValue(rex::getTablePrefix() . 'module.id'); $slice_content = ''; // ----- add select box einbauen if ($this->function == 'add' && $this->slice_id == $sliceId) { $slice_content .= $this->addSlice($sliceId, $moduleIdToAdd); } else { // ----- BLOCKAUSWAHL - SELECT $slice_content .= $this->getModuleSelect($sliceId); } $panel = ''; if ($this->function != 'add' && $this->slice_id == $sliceId) { $msg = ''; if ($this->warning != '') { $msg .= rex_view::warning($this->warning); } if ($this->info != '') { $msg .= rex_view::success($this->info); } $panel .= $msg; } // ----- EDIT/DELETE BLOCK - Wenn Rechte vorhanden if (rex::getUser()->getComplexPerm('modules')->hasPerm($moduleId)) { if ($this->function == 'edit' && $this->slice_id == $sliceId) { // **************** Aktueller Slice // ----- PRE VIEW ACTION [EDIT] $action = new rex_article_action($moduleId, 'edit', $artDataSql); if (rex_request_method() == 'post' && rex_request('function', 'string') == 'edit') { $action->setRequestValues(); } $action->exec(rex_article_action::PREVIEW); // ----- / PRE VIEW ACTION $moduleInput = $this->replaceVars($artDataSql, $moduleInput); return $this->editSlice($sliceId, $moduleInput, $sliceCtype, $moduleId, $artDataSql); } else { // Modulinhalt ausgeben $moduleOutput = $this->replaceVars($artDataSql, $moduleOutput); $panel .= $this->getWrappedModuleOutput($moduleId, $moduleOutput); } } else { // ----- hat keine rechte an diesem modul, einfach ausgeben $moduleOutput = $this->replaceVars($artDataSql, $moduleOutput); $panel .= $this->getWrappedModuleOutput($moduleId, $moduleOutput); } $fragment = new rex_fragment(); $fragment->setVar('title', $this->getSliceHeading($artDataSql), false); $fragment->setVar('options', $this->getSliceMenu($artDataSql), false); $fragment->setVar('body', $panel, false); $slice_content .= '<li class="rex-slice rex-slice-output">' . $fragment->parse('core/page/section.php') . '</li>'; } return $slice_content; }