Example #1
0
 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;
 }
Example #2
0
 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&amp;article_id=' . $this->article_id . '&amp;mode=edit&amp;slice_id=' . $RE_CONTS[$I_ID] . '&amp;clang=' . $this->clang . '&amp;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, '&amp;function=edit') . '" class="rex-tx3">' . $I18N->msg('edit') . ' <span>' . $RE_MODUL_NAME[$I_ID] . '</span></a>';
                }
                $listElements[] = '<a href="' . sprintf($sliceUrl, '&amp;function=delete&amp;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, '&amp;upd=' . time() . '&amp;function=moveup') . '" title="' . $moveUp . '" class="rex-slice-move-up"><span>' . $RE_MODUL_NAME[$I_ID] . '</span></a>';
                    $listElements[] = '<a href="' . sprintf($sliceUrl, '&amp;upd=' . time() . '&amp;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;
    }
Example #4
0
 /**
  * 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);
 }
Example #5
0
 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;
 }
Example #6
0
 /**
  * {@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;
 }