/** * Gibt eine Url zu einem Artikel zurück. * * @param int|null $id * @param int|null $clang SprachId des Artikels * @param array $params Array von Parametern * @param string $separator * * @return string * * @package redaxo\structure */ function rex_getUrl($id = null, $clang = null, array $params = [], $separator = '&') { $id = (int) $id; $clang = (int) $clang; // ----- get id if ($id == 0) { $id = rex::getProperty('article_id'); } // ----- get clang // Wenn eine rexExtension vorhanden ist, immer die clang mitgeben! // Die rexExtension muss selbst entscheiden was sie damit macht if (!rex_clang::exists($clang) && (rex_clang::count() > 1 || rex_extension::isRegistered('URL_REWRITE'))) { $clang = rex_clang::getCurrentId(); } // ----- EXTENSION POINT $url = rex_extension::registerPoint(new rex_extension_point('URL_REWRITE', '', ['id' => $id, 'clang' => $clang, 'params' => $params, 'separator' => $separator])); if ($url == '') { if (rex_clang::count() > 1) { $clang = $separator . 'clang=' . $clang; } else { $clang = ''; } $params = rex_string::buildQuery($params, $separator); $params = $params ? $separator . $params : ''; $url = rex_url::frontendController() . '?article_id=' . $id . $clang . $params; } return $url; }
/** * Gibt eine Url zu einem Artikel zurück. * * @param string $_id * @param int|string $_clang SprachId des Artikels * @param array|string $_params Array von Parametern * @param bool $escape Flag whether the argument separator "&" should be escaped (&) * * @return string * * @package redaxo\structure */ function rex_getUrl($_id = '', $_clang = '', $_params = '', $escape = true) { $id = (int) $_id; $clang = (int) $_clang; // ----- get id if ($id == 0) { $id = rex::getProperty('article_id'); } // ----- get clang // Wenn eine rexExtension vorhanden ist, immer die clang mitgeben! // Die rexExtension muss selbst entscheiden was sie damit macht if ($_clang === '' && (rex_clang::count() > 1 || rex_extension::isRegistered('URL_REWRITE'))) { $clang = rex_clang::getCurrentId(); } // ----- get params $param_string = rex_param_string($_params, $escape ? '&' : '&'); $name = 'NoName'; if ($id != 0) { $ooa = rex_article::get($id, $clang); if ($ooa) { $name = rex_parse_article_name($ooa->getName()); } } // ----- EXTENSION POINT $url = rex_extension::registerPoint(new rex_extension_point('URL_REWRITE', '', ['id' => $id, 'name' => $name, 'clang' => $clang, 'params' => $param_string, 'escape' => $escape])); if ($url == '') { $_clang = ''; if (rex_clang::count() > 1) { $_clang .= ($escape ? '&' : '&') . 'clang=' . $clang; } $url = rex_url::frontendController() . '?article_id=' . $id . $_clang . $param_string; } return $url; }
public static function showForm() { $article_id = rex_request('article_id', 'int'); $clang = rex_get('clang'); $ctype = rex_get('ctype'); $_SESSION[__CLASS__]['active'] = 1; // Alle OBs schließen while (@ob_end_clean()) { } header("Location: " . rex_url::backendController() . '?article_id=' . $article_id . '&clang=' . $clang . '&page=content/edit&ctype=' . $ctype); exit; }
/** * Handles the given Exception. * * @param Throwable|Exception $exception The Exception to handle * @param bool $showTrace */ public static function handleException($exception, $showTrace = true) { rex_logger::logException($exception); while (ob_get_level()) { ob_end_clean(); } $status = rex_response::HTTP_INTERNAL_ERROR; if ($exception instanceof rex_http_exception && $exception->getHttpCode()) { $status = $exception->getHttpCode(); } rex_response::setStatus($status); if (rex::isSetup() || rex::isDebugMode() || ($user = rex_backend_login::createUser()) && $user->isAdmin()) { // TODO add a beautiful error page with usefull debugging info $buf = ''; $buf .= '<pre>'; $buf .= '"' . get_class($exception) . '" thrown in ' . $exception->getFile() . ' on line ' . $exception->getLine() . "\n"; if ($exception->getMessage()) { $buf .= '<b>' . ($exception instanceof ErrorException ? self::getErrorType($exception->getSeverity()) . ': ' : '') . $exception->getMessage() . "</b>\n"; } $cause = $exception->getPrevious(); while ($cause) { $buf .= "\n"; $buf .= 'caused by ' . get_class($cause) . ' in ' . $cause->getFile() . ' on line ' . $cause->getLine() . "\n"; if ($cause->getMessage()) { $buf .= '<b>' . ($cause instanceof ErrorException ? self::getErrorType($cause->getSeverity()) . ': ' : '') . $cause->getMessage() . "</b>\n"; } $cause = $cause->getPrevious(); } if ($showTrace) { $buf .= "\n"; $buf .= $exception->getTraceAsString(); } if (!rex::isSetup() && rex::isBackend() && !rex::isSafeMode()) { $buf .= "\n\n"; $buf .= '<a href="' . rex_url::backendPage('packages', ['safemode' => 1]) . '">activate safe mode</a>'; } $buf .= '</pre>'; } else { // TODO small error page, without debug infos $buf = 'Oooops, an internal error occured!'; } rex_response::sendContent($buf); exit; }
public function execute() { if (!rex::getUser()->isAdmin()) { throw new rex_api_exception('You do not have the permission!'); } $addonkey = rex_request('addonkey', 'string'); $upload = rex_request('upload', [['upload_file', 'bool'], ['oldversion', 'string'], ['redaxo', 'array[string]'], ['description', 'string'], ['status', 'int'], ['replace_assets', 'bool'], ['ignore_tests', 'bool']]); $file = []; $archive = null; $file['version'] = $upload['upload_file'] ? rex_addon::get($addonkey)->getVersion() : $upload['oldversion']; $file['redaxo_versions'] = $upload['redaxo']; $file['description'] = $upload['description']; $file['status'] = $upload['status']; try { if ($upload['upload_file']) { $archive = rex_path::addonCache('install', md5($addonkey . time()) . '.zip'); $exclude = []; if ($upload['replace_assets']) { $exclude[] = 'assets'; } if ($upload['ignore_tests']) { $exclude[] = 'tests'; } rex_install_archive::copyDirToArchive(rex_path::addon($addonkey), $archive, null, $exclude); if ($upload['replace_assets']) { rex_install_archive::copyDirToArchive(rex_url::addonAssets($addonkey), $archive, $addonkey . '/assets'); } $file['checksum'] = md5_file($archive); } rex_install_webservice::post(rex_install_packages::getPath('?package=' . $addonkey . '&file_id=' . rex_request('file', 'int', 0)), ['file' => $file], $archive); } catch (rex_functional_exception $e) { throw new rex_api_exception($e->getMessage()); } if ($archive) { rex_file::delete($archive); } unset($_REQUEST['addonkey']); unset($_REQUEST['file']); rex_install_packages::deleteCache(); return new rex_api_result(true, rex_i18n::msg('install_info_addon_uploaded', $addonkey)); }
public function execute() { if (!rex::getUser()->isAdmin()) { throw new rex_api_exception('You do not have the permission!'); } $this->addonkey = rex_request('addonkey', 'string'); $function = static::GET_PACKAGES_FUNCTION; $packages = rex_install_packages::$function(); $this->fileId = rex_request('file', 'int'); if (!isset($packages[$this->addonkey]['files'][$this->fileId])) { return null; } $this->file = $packages[$this->addonkey]['files'][$this->fileId]; $this->checkPreConditions(); try { $archivefile = rex_install_webservice::getArchive($this->file['path']); } catch (rex_functional_exception $e) { throw new rex_api_exception($e->getMessage()); } $message = ''; $this->archive = $archivefile; if ($this->file['checksum'] != md5_file($archivefile)) { $message = rex_i18n::msg('install_warning_zip_wrong_checksum'); } elseif (!$this->isCorrectFormat($archivefile)) { $message = rex_i18n::msg('install_warning_zip_wrong_format'); } elseif (is_string($msg = $this->doAction())) { $message = $msg; } rex_file::delete($archivefile); if ($message) { $message = rex_i18n::msg('install_warning_addon_not_' . static::VERB, $this->addonkey) . '<br />' . $message; $success = false; } else { $message = rex_i18n::msg('install_info_addon_' . static::VERB, $this->addonkey) . (static::SHOW_LINK ? ' <a href="' . rex_url::backendPage('packages') . '">' . rex_i18n::msg('install_to_addon_page') . '</a>' : ''); $success = true; unset($_REQUEST['addonkey']); } return new rex_api_result($success, $message); }
<th class="rex-table-width-5">' . rex_i18n::msg('backup_filesize') . '</th> <th class="rex-table-width-5">' . rex_i18n::msg('backup_createdate') . '</th> <th class="rex-table-action" colspan="3">' . rex_i18n::msg('backup_function') . '</th> </tr> </thead> <tbody>'; $dir = rex_backup::getDir(); $folder = rex_backup::getBackupFiles('.tar.gz'); foreach ($folder as $file) { $filepath = $dir . '/' . $file; $filec = date('d.m.Y H:i', filemtime($filepath)); $filesize = rex_file::formattedSize($filepath); $content .= '<tr> <td class="rex-table-icon"><i class="rex-icon rex-icon-file-archive"></i></td> <td data-title="' . rex_i18n::msg('backup_filename') . '">' . $file . '</td> <td data-title="' . rex_i18n::msg('backup_filesize') . '">' . $filesize . '</td> <td data-title="' . rex_i18n::msg('backup_createdate') . '">' . $filec . '</td> <td class="rex-table-action"><a href="' . rex_url::currentBackendPage(['function' => 'fileimport', 'impname' => $file]) . '" title="' . rex_i18n::msg('backup_import_file') . '" data-confirm="' . rex_i18n::msg('backup_proceed_file_import') . '"><i class="rex-icon rex-icon-import"></i> ' . rex_i18n::msg('backup_to_import') . '</a></td> <td class="rex-table-action"><a href="' . rex_url::currentBackendPage(['function' => 'download', 'impname' => $file]) . '" title="' . rex_i18n::msg('backup_download_file') . '"><i class="rex-icon rex-icon-download"></i> ' . rex_i18n::msg('backup_download') . '</a></td> <td class="rex-table-action"><a href="' . rex_url::currentBackendPage(['function' => 'delete', 'impname' => $file]) . '" title="' . rex_i18n::msg('backup_delete_file') . '" data-confirm="' . rex_i18n::msg('backup_delete') . ' ?"><i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('backup_delete') . '</a></td> </tr>'; } $content .= ' </tbody> </table> '; $fragment = new rex_fragment(); $fragment->setVar('title', rex_i18n::msg('backup_export_file_caption'), false); $fragment->setVar('content', $content, false); $content = $fragment->parse('core/page/section.php'); echo $content;
if ($cronjob instanceof rex_cronjob) { $cronjobs[$class] = $cronjob; $select->addOption($cronjob->getTypeName(), $class); } } if ($func == 'add') { $select->setSelected('rex_cronjob_phpcode'); } $activeType = $field->getValue(); if ($func != 'add' && !in_array($activeType, $types)) { if (!$activeType && !$field->getValue()) { $warning = rex_i18n::rawMsg('cronjob_not_found'); } else { $warning = rex_i18n::rawMsg('cronjob_type_not_found', $field->getValue(), $activeType); } rex_response::sendRedirect(rex_url::currentBackendPage([rex_request('list', 'string') . '_warning' => $warning], false)); } $form->addFieldset($this->i18n('type_parameters')); $fieldContainer = $form->addContainerField('parameters'); $fieldContainer->setAttribute('style', 'display: none'); $fieldContainer->setMultiple(false); $fieldContainer->setActive($activeType); $env_js = ''; $visible = []; foreach ($cronjobs as $group => $cronjob) { $disabled = []; $envs = (array) $cronjob->getEnvironments(); if (!in_array('frontend', $envs)) { $disabled[] = 0; } if (!in_array('backend', $envs)) {
<th class="rex-table-icon"></th> <th>' . rex_i18n::msg('cronjob_log_date') . '</th> <th>' . rex_i18n::msg('cronjob_name') . '</th> <th>' . rex_i18n::msg('cronjob_log_message') . '</th> </tr> </thead> <tbody>'; if ($file = new rex_log_file($this->getDataPath('cronjob.log'))) { foreach (new LimitIterator($file, 0, 30) as $entry) { /* @var rex_log_entry $entry */ $data = $entry->getData(); $class = trim($data[0]) == 'ERROR' ? 'rex-state-error' : 'rex-state-success'; if ($data[1] == '--') { $icon = '<i class="rex-icon rex-icon-cronjob" title="' . rex_i18n::msg('cronjob_not_editable') . '"></i>'; } else { $icon = '<a href="' . rex_url::backendPage('cronjob', ['list' => 'cronjobs', 'func' => 'edit', 'oid' => $data[1]]) . '" title="' . rex_i18n::msg('cronjob_edit') . '"><i class="rex-icon rex-icon-cronjob"></i></a>'; } $content .= ' <tr class="' . $class . '"> <td class="rex-table-icon">' . $icon . '</td> <td data-title="' . rex_i18n::msg('cronjob_log_date') . '">' . $entry->getTimestamp('%d.%m.%Y %H:%M:%S') . '</td> <td data-title="' . rex_i18n::msg('cronjob_name') . '">' . htmlspecialchars($data[2]) . '</td> <td data-title="' . rex_i18n::msg('cronjob_log_message') . '">' . $data[3] . '</td> </tr>'; } } $content .= ' </tbody> </table>'; $fragment = new rex_fragment(); $fragment->setVar('content', $content, false);
/** * Bindet ggf extensions ein. * * @param rex_extension_point $ep */ function rex_metainfo_extensions_handler(rex_extension_point $ep) { $page = $ep->getSubject(); $mainpage = rex_be_controller::getCurrentPagePart(1); $mypage = 'metainfo'; // additional javascripts if ($mainpage == 'metainfo' || $page == 'content/metainfo' || $page == 'structure') { rex_view::addJsFile(rex_url::addonAssets($mypage, 'metainfo.js')); } // include extensions $curDir = __DIR__ . '/..'; if ($page == 'structure') { require_once $curDir . '/lib/handler/category_handler.php'; } elseif ($mainpage == 'mediapool') { require_once $curDir . '/lib/handler/media_handler.php'; } elseif ($mainpage == 'content') { require_once $curDir . '/extensions/extension_content_sidebar.php'; } elseif ($page == 'backup') { require_once $curDir . '/extensions/extension_cleanup.php'; } }
// Variable definiert und vorbelegt wenn nicht existent $KAToutARR = []; // Variable definiert und vorbelegt wenn nicht existent $navigation = []; $object_id = $article_id > 0 ? $article_id : $category_id; $object = rex_article::get($object_id, $clang); if ($object) { $tree = $object->getParentTree(); if (!$object->isStartarticle()) { $tree[] = $object; } foreach ($tree as $parent) { $id = $parent->getId(); if (rex::getUser()->getComplexPerm('structure')->hasCategoryPerm($id)) { $n = []; $n['title'] = str_replace(' ', ' ', htmlspecialchars($parent->getName())); if ($parent->isStartarticle()) { $n['href'] = rex_url::backendPage('structure', ['category_id' => $id, 'clang' => $clang]); } $navigation[] = $n; } } } $title = '<a href="' . rex_url::backendPage('structure', ['category_id' => 0, 'clang' => $clang]) . '"><i class="rex-icon rex-icon-sitestartarticle"></i> ' . rex_i18n::msg('homepage') . '</a>'; $fragment = new rex_fragment(); $fragment->setVar('id', 'rex-js-structure-breadcrumb', false); $fragment->setVar('title', $title, false); $fragment->setVar('items', $navigation, false); echo $fragment->parse('core/navigations/breadcrumb.php'); unset($fragment); unset($navigation);
foreach (rex_system_setting::getAll() as $setting) { $field = $setting->getField(); if (!$field instanceof rex_form_element) { throw new rex_exception(get_class($setting) . '::getField() must return a rex_form_element!'); } $field->setAttribute('name', 'settings[' . $setting->getKey() . ']'); $elements .= $field->get(); } $content[] = $elements; $fragment = new rex_fragment(); $fragment->setVar('content', $content, false); $content = $fragment->parse('core/page/grid.php'); $formElements = []; $n = []; $n['field'] = '<button class="btn btn-save rex-form-aligned" type="submit" name="sendit"' . rex::getAccesskey(rex_i18n::msg('system_update'), 'save') . '>' . rex_i18n::msg('system_update') . '</button>'; $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $buttons = $fragment->parse('core/form/submit.php'); $fragment = new rex_fragment(); $fragment->setVar('class', 'edit', false); $fragment->setVar('title', rex_i18n::msg('system_settings')); $fragment->setVar('body', $content, false); $fragment->setVar('buttons', $buttons, false); $content = $fragment->parse('core/page/section.php'); $content = ' <form id="rex-form-system-setup" action="' . rex_url::currentBackendPage() . '" method="post"> <input type="hidden" name="func" value="updateinfos" /> ' . $content . ' </form>'; echo $content;
} $gc = rex_sql::factory(); $gc->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'media_category WHERE id=?', [$rex_file_category]); if ($gc->getRows() != 1) { $rex_file_category = 0; $rex_file_category_name = rex_i18n::msg('pool_kats_no'); } else { $rex_file_category_name = $gc->getValue('name'); } rex_set_session('media[rex_file_category]', $rex_file_category); // -------------- PERMS $PERMALL = rex::getUser()->getComplexPerm('media')->hasCategoryPerm(0); // -------------- Header $subline = rex_be_controller::getPageObject('mediapool')->getSubpages(); foreach ($subline as $sp) { $sp->setHref(rex_url::backendPage($sp->getFullKey(), $arg_url, false)); } echo rex_view::title(rex_i18n::msg('pool_media'), $subline); // -------------- Messages if ($success != '') { echo rex_view::info($success); $success = ''; } if ($error != '') { echo rex_view::error($error); $error = ''; } // -------------- Javascripts ?> <script type="text/javascript"> <!--
* @package redaxo\yrewrite * * @var rex_addon $this */ $func = rex_request('func', 'string'); if ($func != '') { if ($func == 'htaccess') { rex_yrewrite::copyHtaccess(); echo rex_view::success($this->i18n('htaccess_hasbeenset')); } } $content = ' <h3>' . $this->i18n('htaccess_set') . '</h3> <p>' . rex_i18n::rawMsg('yrewrite_htaccess_info') . '</p> <p><a class="btn btn-primary" href="' . rex_url::currentBackendPage(['func' => 'htaccess']) . '">' . $this->i18n('yrewrite_htaccess_set') . '</a></p> <h3>' . $this->i18n('info_headline') . '</h3> <p>' . rex_i18n::rawMsg('yrewrite_info_text') . '</p> <h3>' . $this->i18n('info_seo') . '</h3> <p>' . rex_i18n::rawMsg('yrewrite_info_seo_text') . ' <br /><br />' . highlight_string('<?php $seo = new rex_yrewrite_seo(); echo $seo->getTitleTag(); echo $seo->getDescriptionTag(); echo $seo->getRobotsTag(); echo $seo->getHreflangTags(); ?>', true) . '
/** * Returns a clang switch. * * @param rex_context $context * * @return string */ public static function clangSwitchAsDropdown(rex_context $context) { if (rex_clang::count() == 1) { return ''; } $button_label = ''; $items = []; foreach (rex_clang::getAll() as $id => $clang) { if (rex::getUser()->getComplexPerm('clang')->hasPerm($id)) { $item = []; $item['title'] = rex_i18n::translate($clang->getName()); $item['href'] = $context->getUrl(['clang' => $id]); if ($id == $context->getParam('clang')) { $item['active'] = true; $button_label = rex_i18n::translate($clang->getName()); } $items[] = $item; } } $fragment = new rex_fragment(); $fragment->setVar('class', 'rex-language'); $fragment->setVar('button_prefix', rex_i18n::msg('language')); $fragment->setVar('button_label', $button_label); $fragment->setVar('header', rex_i18n::msg('clang_select')); $fragment->setVar('items', $items, false); if (rex::getUser()->isAdmin()) { $fragment->setVar('footer', '<a href="' . rex_url::backendPage('system/lang') . '"><i class="fa fa-flag"></i> ' . rex_i18n::msg('languages_edit') . '</a>', false); } return $fragment->parse('core/dropdowns/dropdown.php'); }
public static function show_form_info($media) { $file_id = rex_request('file_id', 'int'); echo ' <style> .helper-tool, .helper-tool * { box-sizing:border-box; } .helper-tool { padding:12px; border:1px solid #fcfcfc; } .helper-tool input { position:relative; width:100%; } /* !HELPER TOOL TARGETING SYSTEM */ .focuspoint img { transition: all 500ms ease-in-out; -webkit-transition: all 500ms ease-in-out; -moz-transition: all 500ms ease-in-out; } /* !HELPER TOOL TARGETING SYSTEM */ .helper-tool-target { position: relative; display: inline-block; overflow: hidden; margin-bottom:1em; } .helper-tool-target img { position: relative; display: block; max-width: 100%; height:auto; } .helper-tool-target img.target-overlay, .helper-tool-target img.reticle { position: absolute; top: 0; left: 0; } .helper-tool-target img.target-overlay { top: 0 !important; left: 0 !important; cursor:pointer; opacity: 0.0; } .helper-tool-target img.reticle { width: 102px; height: 102px; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); top: 50%; left: 50%; transition: all 500ms ease-in-out; -webkit-transition: all 500ms ease-in-out; -moz-transition: all 500ms ease-in-out; } </style> '; $vars = rex_sql::factory()->getArray('select * from rex_media where id=' . $file_id); $saved_css_data = explode(",", $vars[0]['med_focuspoint_css'], 2); $css_x = ''; $css_y = ''; if (count($saved_css_data) == 2) { $css_x = $saved_css_data[0]; $css_y = $saved_css_data[1]; } echo ' <style> .helper-tool-target img.target-overlay, .helper-tool-target img.reticle { top: ' . $css_y . '; left: ' . $css_x . '; } </style> '; $filename = $vars[0]['filename']; $dateiart = substr($filename, -3); if ($dateiart == 'jpg' or $dateiart == 'png' or $dateiart == 'gif') { $html = '<div class="rex-mediapool-detail-image col-sm-4"><div id="fwidth" class="helper-tool-target"><img class="helper-tool-img" src="index.php?rex_media_type=rex_mediapool_maximized&rex_media_file=' . rex_url::media($filename) . '" ><img class="reticle" src="./../assets/addons/focuspoint/focuspoint-target.png"><img class="target-overlay" src="index.php?rex_media_type=rex_mediapool_maximized&rex_media_file=' . rex_url::media($filename) . '" ></div></div>'; echo "\n <script>\n \$(document).on('ready pjax:success',function(){\n \$('.panel-body .col-sm-4').replaceWith('{$html}');\n\n \$('img').click(function(e){\n\n var imageW = \$(this).width();\n var imageH = \$(this).height();\n\n //Calculate FocusPoint coordinates\n var offsetX = e.pageX - \$(this).offset().left;\n var offsetY = e.pageY - \$(this).offset().top;\n var focusX = (offsetX/imageW - .5)*2;\n var focusY = (offsetY/imageH - .5)*-2;\n\n //Calculate CSS Percentages\n var percentageX = (offsetX/imageW)*100;\n var percentageY = (offsetY/imageH)*100;\n var backgroundPositionCSS = percentageX.toFixed(0) + '%, ' + percentageY.toFixed(0) + '%';\n\n \$('#Focuspoint_Data' ).val(focusX.toFixed(2) + ',' + focusY.toFixed(2));\n \$('#Focuspoint_CSS' ).val(backgroundPositionCSS);\n\n \$('.reticle').css({\n 'top':percentageY+'%',\n 'left':percentageX+'%'\n });\n\n\n // window.alert('FocusX:' + focusX.toFixed(2) + ', FocusY:' + focusY.toFixed(2) + ' (For CSS version: ' + backgroundPositionCSS + ')');\n\n });\n\n });\n\n </script>\n "; } }
/** * {@inheritdoc} */ public function getAssetsUrl($file = '') { return rex_url::addonAssets($this->getName(), $file); }
break; case 'nachteaser': $bildpos = 'unter dem Teasertext'; break; } $outback .= ' <div class="form-group"> <label class="col-sm-3 control-label">Position</label> <div class="col-sm-9">' . $bildpos . '</div> </div>' . PHP_EOL; $outback .= ' <div class="form-group"> <label class="col-sm-3 control-label">Bild</label> <div class="col-sm-9"> ' . $filename . '<br/> <img src="' . rex_url::frontendController() . '?rex_media_type=rex_mediabutton_preview&rex_media_file=' . $filename . '" /> </div> </div>' . PHP_EOL; if ($value['alt']) { $outback .= ' <div class="form-group"> <label class="col-sm-3 control-label">Alternativtext</label> <div class="col-sm-9">' . $value['alt'] . '</div> </div>' . PHP_EOL; } else { $outback .= ' <div class="form-group "> <label class="col-sm-3 control-label"></label> <div class="col-sm-9 warning"> ACHTUNG:<br/>Es wurde kein Alt-Text für das Bild angegeben. </div>
/** * @param array $params * * @return string */ public function toImage(array $params = []) { if (!$this->isImage()) { return ''; } $filename = rex_url::media($this->getFileName()); $title = $this->getTitle(); if (!isset($params['alt'])) { if ($title != '') { $params['alt'] = htmlspecialchars($title); } } if (!isset($params['title'])) { if ($title != '') { $params['title'] = htmlspecialchars($title); } } rex_extension::registerPoint(new rex_extension_point('MEDIA_TOIMAGE', '', ['filename' => &$filename, 'params' => &$params])); $additional = ''; foreach ($params as $name => $value) { $additional .= ' ' . $name . '="' . $value . '"'; } return sprintf('<img src="%s"%s />', $filename, $additional); }
/** * Ausgabe des Medienpool Formulars. */ function rex_mediapool_Mediaform($form_title, $button_title, $rex_file_category, $file_chooser, $close_form) { global $ftitle, $warning, $info; $s = ''; $cats_sel = new rex_media_category_select(); $cats_sel->setStyle('class="form-control"'); $cats_sel->setSize(1); $cats_sel->setName('rex_file_category'); $cats_sel->setId('rex-mediapool-category'); $cats_sel->addOption(rex_i18n::msg('pool_kats_no'), '0'); $cats_sel->setAttribute('onchange', 'this.form.submit()'); $cats_sel->setSelected($rex_file_category); if (isset($warning)) { if (is_array($warning)) { if (count($warning) > 0) { $s .= rex_view::error(implode('<br />', $warning)); } } elseif ($warning != '') { $s .= rex_view::error($warning); } $warning = ''; } if (isset($info)) { if (is_array($info)) { if (count($info) > 0) { $s .= rex_view::success(implode('<br />', $info)); } } elseif ($info != '') { $s .= rex_view::success($info); } $info = ''; } if (!isset($ftitle)) { $ftitle = ''; } $arg_fields = ''; foreach (rex_request('args', 'array') as $arg_name => $arg_value) { $arg_fields .= '<input type="hidden" name="args[' . $arg_name . ']" value="' . $arg_value . '" />' . "\n"; } $opener_input_field = rex_request('opener_input_field', 'string'); if ($opener_input_field != '') { $arg_fields .= '<input type="hidden" name="opener_input_field" value="' . htmlspecialchars($opener_input_field) . '" />' . "\n"; } $add_submit = ''; if ($close_form && $opener_input_field != '') { $add_submit = '<button class="btn btn-save" type="submit" name="saveandexit" value="' . rex_i18n::msg('pool_file_upload_get') . '"' . rex::getAccesskey(rex_i18n::msg('pool_file_upload_get'), 'save') . '>' . rex_i18n::msg('pool_file_upload_get') . '</button>'; } $panel = ''; $formElements = []; $e = []; $e['label'] = '<label for="rex-mediapool-title">' . rex_i18n::msg('pool_file_title') . '</label>'; $e['field'] = '<input class="form-control" type="text" id="rex-mediapool-title" name="ftitle" value="' . htmlspecialchars($ftitle) . '" />'; $formElements[] = $e; $e = []; $e['label'] = '<label for="rex-mediapool-category">' . rex_i18n::msg('pool_file_category') . '</label>'; $e['field'] = $cats_sel->get(); $formElements[] = $e; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $panel .= $fragment->parse('core/form/form.php'); $panel .= rex_extension::registerPoint(new rex_extension_point('MEDIA_FORM_ADD', '')); if ($file_chooser) { $e = []; $e['label'] = '<label for="rex-mediapool-choose-file">' . rex_i18n::msg('pool_file_file') . '</label>'; $e['field'] = '<input id="rex-mediapool-choose-file" type="file" name="file_new" />'; $e['note'] = '<h3>' . rex_i18n::msg('phpini_settings') . '</h3> <dl class="dl-horizontal"> ' . (rex_ini_get('file_uploads') == 0 ? '<dt><span class="text-warning">' . rex_i18n::msg('pool_upload') . '</span></dt><dd><span class="text-warning">' . rex_i18n::msg('pool_upload_disabled') . '</span></dd>' : '') . ' <dt>' . rex_i18n::msg('pool_max_uploadsize') . ':</dt><dd>' . rex_formatter::bytes(rex_ini_get('upload_max_filesize')) . '</dd> <dt>' . rex_i18n::msg('pool_max_uploadtime') . ':</dt><dd>' . rex_ini_get('max_input_time') . 's</dd> </dl>'; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $panel .= $fragment->parse('core/form/form.php'); } $formElements = []; $e = []; $e['field'] = '<button class="btn btn-save" type="submit" name="save" value="' . $button_title . '"' . rex::getAccesskey($button_title, 'save') . '>' . $button_title . '</button>'; $formElements[] = $e; $e = []; $e['field'] = $add_submit; $formElements[] = $e; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $buttons = $fragment->parse('core/form/submit.php'); $fragment = new rex_fragment(); $fragment->setVar('title', $form_title, false); $fragment->setVar('body', $panel, false); $fragment->setVar('buttons', $buttons, false); $content = $fragment->parse('core/page/section.php'); $s .= ' <form action="' . rex_url::currentBackendPage() . '" method="post" enctype="multipart/form-data"> <fieldset> <input type="hidden" name="media_method" value="add_file" /> ' . $arg_fields . ' ' . $content . ' </fieldset> '; if ($close_form) { $s .= '</form>' . "\n"; } return $s; }
/** * Initializes the class. * * @param string $htdocs Htdocs path * @param string $backend Backend folder name */ public static function init($htdocs, $backend) { self::$base = $htdocs; self::$backend = substr($htdocs, -3) === '../' ? '' : $htdocs . $backend . '/'; }
?> } function insertImage(src,alt) { window.opener.insertImage("<?php echo rex_url::media(); ?> " + src, alt); self.close(); } function insertLink(src) { window.opener.insertFileLink("<?php echo rex_url::media(); ?> " + src); self.close(); } function openPage(src) { window.opener.location.href = src; self.close(); } //--> </script> <?php // -------------- Include Page
} foreach ([1 => 'ADD', 2 => 'EDIT', 4 => 'DELETE'] as $var => $value) { if (($sql->getValue('postsavemode') & $var) == $var) { $postsavemode[] = $value; } } $content .= ' <tr> <td class="rex-table-icon"><a href="' . rex_url::currentBackendPage(['action_id' => $sql->getValue('id'), 'function' => 'edit']) . '" title="' . htmlspecialchars($sql->getValue('name')) . '"><i class="rex-icon rex-icon-action"></i></a></td> <td class="rex-table-id" data-title="' . rex_i18n::msg('id') . '">' . $sql->getValue('id') . '</td> <td data-title="' . rex_i18n::msg('action_name') . '"><a href="' . rex_url::currentBackendPage(['action_id' => $sql->getValue('id'), 'function' => 'edit']) . '">' . htmlspecialchars($sql->getValue('name')) . '</a></td> <td data-title="' . rex_i18n::msg('action_header_preview') . '">' . implode('/', $previewmode) . '</td> <td data-title="' . rex_i18n::msg('action_header_presave') . '">' . implode('/', $presavemode) . '</td> <td data-title="' . rex_i18n::msg('action_header_postsave') . '">' . implode('/', $postsavemode) . '</td> <td class="rex-table-action"><a href="' . rex_url::currentBackendPage(['action_id' => $sql->getValue('id'), 'function' => 'edit']) . '"><i class="rex-icon rex-icon-edit"></i> ' . rex_i18n::msg('change') . '</a></td> <td class="rex-table-action"><a href="' . rex_url::currentBackendPage(['action_id' => $sql->getValue('id'), 'function' => 'delete']) . '" data-confirm="' . rex_i18n::msg('action_delete') . ' ?"><i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('delete') . '</a></td> </tr> '; $sql->next(); } $content .= '</tbody>' . "\n"; } $content .= ' </table>'; if ($rows < 1) { $content .= rex_view::info(rex_i18n::msg('actions_not_found')); } echo $message; $fragment = new rex_fragment(); $fragment->setVar('title', rex_i18n::msg('action_caption'), false); $fragment->setVar('content', $content, false);
/** * Extension to check whether the given media is still in use. * * @param rex_extension_point $ep * * @throws rex_exception * * @return string */ public static function isMediaInUse(rex_extension_point $ep) { $params = $ep->getParams(); $warning = $ep->getSubject(); $sql = rex_sql::factory(); $sql->setQuery('SELECT `name`, `type_id` FROM `' . rex::getTablePrefix() . 'metainfo_field` WHERE `type_id` IN(6,7)'); $rows = $sql->getRows(); if ($rows == 0) { return $warning; } $where = ['articles' => [], 'media' => []]; $filename = addslashes($params['filename']); for ($i = 0; $i < $rows; ++$i) { $name = $sql->getValue('name'); if (rex_metainfo_meta_prefix($name) == self::PREFIX) { $key = 'media'; } else { $key = 'articles'; } switch ($sql->getValue('type_id')) { case '6': $where[$key][] = $name . '="' . $filename . '"'; break; case '7': $where[$key][] = 'FIND_IN_SET("' . $filename . '", ' . $name . ')'; break; default: throw new rex_exception('Unexpected fieldtype "' . $sql->getValue('type_id') . '"!'); } $sql->next(); } $articles = ''; $categories = ''; if (!empty($where['articles'])) { $sql->setQuery('SELECT id, clang_id, parent_id, name, catname, startarticle FROM ' . rex::getTablePrefix() . 'article WHERE ' . implode(' OR ', $where['articles'])); if ($sql->getRows() > 0) { foreach ($sql->getArray() as $art_arr) { $aid = $art_arr['id']; $clang = $art_arr['clang_id']; $parent_id = $art_arr['parent_id']; if ($art_arr['startarticle']) { $categories .= '<li><a href="javascript:openPage(\'' . rex_url::backendPage('structure', ['edit_id' => $aid, 'function' => 'edit_cat', 'category_id' => $parent_id, 'clang' => $clang]) . '\')">' . $art_arr['catname'] . '</a></li>'; } else { $articles .= '<li><a href="javascript:openPage(\'' . rex_url::backendPage('content', ['article_id' => $aid, 'mode' => 'meta', 'clang' => $clang]) . '\')">' . $art_arr['name'] . '</a></li>'; } } if ($articles != '') { $warning[] = rex_i18n::msg('minfo_media_in_use_art') . '<br /><ul>' . $articles . '</ul>'; } if ($categories != '') { $warning[] = rex_i18n::msg('minfo_media_in_use_cat') . '<br /><ul>' . $categories . '</ul>'; } } } $media = ''; if (!empty($where['media'])) { $sql->setQuery('SELECT id, filename, category_id FROM ' . rex::getTablePrefix() . 'media WHERE ' . implode(' OR ', $where['media'])); if ($sql->getRows() > 0) { foreach ($sql->getArray() as $med_arr) { $id = $med_arr['id']; $filename = $med_arr['filename']; $cat_id = $med_arr['category_id']; $media .= '<li><a href="' . rex_url::backendPage('mediapool/detail', ['file_id' => $id, 'rex_file_category' => $cat_id]) . '">' . $filename . '</a></li>'; } if ($media != '') { $warning[] = rex_i18n::msg('minfo_media_in_use_med') . '<br /><ul>' . $media . '</ul>'; } } } return $warning; }
/** * @return string */ public function get() { $this->init(); $this->setApplyUrl($this->getUrl(['func' => ''], false)); if (($controlElement = $this->getControlElement()) !== null) { if ($controlElement->saved()) { $this->processPostValues(); // speichern und umleiten // Nachricht in der Liste anzeigen if (($result = $this->validate()) === true && ($result = $this->save()) === true) { $this->redirect(rex_i18n::msg('form_saved')); } elseif (is_int($result) && isset($this->errorMessages[$result])) { $this->setWarning($this->errorMessages[$result]); } elseif (is_string($result) && $result != '') { $this->setWarning($result); } else { $this->setWarning(rex_i18n::msg('form_save_error')); } } elseif ($controlElement->applied()) { $this->processPostValues(); // speichern und wiederanzeigen // Nachricht im Formular anzeigen if (($result = $this->validate()) === true && ($result = $this->save()) === true) { $this->setMessage(rex_i18n::msg('form_applied')); } elseif (is_int($result) && isset($this->errorMessages[$result])) { $this->setWarning($this->errorMessages[$result]); } elseif (is_string($result) && $result != '') { $this->setWarning($result); } else { $this->setWarning(rex_i18n::msg('form_save_error')); } } elseif ($controlElement->deleted()) { // speichern und wiederanzeigen // Nachricht in der Liste anzeigen if (($result = $this->delete()) === true) { $this->redirect(rex_i18n::msg('form_deleted')); } elseif (is_string($result) && $result != '') { $this->setWarning($result); } else { $this->setWarning(rex_i18n::msg('form_delete_error')); } } elseif ($controlElement->resetted()) { // verwerfen und wiederanzeigen // Nachricht im Formular anzeigen $this->setMessage(rex_i18n::msg('form_resetted')); } elseif ($controlElement->aborted()) { // verwerfen und umleiten // Nachricht in der Liste anzeigen $this->redirect(rex_i18n::msg('form_resetted')); } } $actionParams = []; if ('get' == strtolower($this->method)) { // Parameter dem Formular hinzufügen foreach ($this->getParams() as $name => $value) { $this->addHiddenField($name, $value, ['internal::useArraySyntax' => 'none']); } } else { $actionParams = $this->getParams(); } $s = "\n"; $warning = $this->getWarning(); $message = $this->getMessage(); if ($warning != '') { $s .= ' ' . rex_view::warning($warning) . "\n"; } elseif ($message != '') { $s .= ' ' . rex_view::info($message) . "\n"; } $i = 0; $addHeaders = true; $fieldsets = $this->getFieldsetElements(); $last = count($fieldsets); $s .= '<form id="' . $this->divId . '" action="' . rex_url::backendController($actionParams) . '" method="' . $this->method . '">' . "\n"; foreach ($fieldsets as $fieldsetName => $fieldsetElements) { $s .= '<fieldset>' . "\n"; if ($fieldsetName != '') { $s .= '<legend>' . htmlspecialchars($fieldsetName) . '</legend>' . "\n"; } // Die HeaderElemente nur im 1. Fieldset ganz am Anfang einfügen if ($i == 0 && $addHeaders) { foreach ($this->getHeaderElements() as $element) { // Callback $element->setValue($this->preView($fieldsetName, $element->getFieldName(), $element->getValue())); // HeaderElemente immer ohne <p> $s .= $element->formatElement(); } $addHeaders = false; } foreach ($fieldsetElements as $element) { // Callback $element->setValue($this->preView($fieldsetName, $element->getFieldName(), $element->getValue())); $s .= $element->get(); } // Die FooterElemente nur innerhalb des letzten Fieldsets if ($i + 1 == $last) { foreach ($this->getFooterElements() as $element) { // Callback $element->setValue($this->preView($fieldsetName, $element->getFieldName(), $element->getValue())); $s .= $element->get(); } } $s .= '</fieldset>' . "\n"; ++$i; } $s .= '</form>' . "\n"; return $s; }
<nav class="rex-nav-top navbar navbar-default"> <div class="container-fluid"> <div class="navbar-header"> <?php if (rex_be_controller::getCurrentPageObject()->isPopup()) { ?> <span class="navbar-brand"><img class="rex-js-svg rex-redaxo-logo" src="<?php echo rex_url::coreAssets('redaxo-logo.svg'); ?> " /></span> <?php } else { ?> <a class="navbar-brand" href="<?php echo rex_url::backendController(); ?> "><img class="rex-js-svg rex-redaxo-logo" src="<?php echo rex_url::coreAssets('redaxo-logo.svg'); ?> " /></a> <?php } ?> </div> <?php echo $this->meta_navigation; ?> </div> </nav>
<?php $plugin = rex_plugin::get('out5', 'wartungsarbeiten'); $content = ''; if (rex_post('config-submit', 'boolean')) { $plugin->setConfig(rex_post('config', [['url', 'string']])); $content .= rex_view::info('Änderung gespeichert'); } $content .= ' <div class="rex-form"> <form action="' . rex_url::currentBackendPage() . '" method="post"> <fieldset>'; $formElements = []; $n = []; $n['label'] = '<label for="rex-out5-wartungsarbeiten-url">URL</label>'; $n['field'] = '<input class="form-control" type="text" id="rex-out5-wartungsarbeiten-url" name="config[url]" value="' . $plugin->getConfig('url') . '"/>'; $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/form.php'); $content .= ' </fieldset> <fieldset class="rex-form-action">'; $formElements = []; $n = []; $n['field'] = '<div class="btn-toolbar"><button id="rex-out5-wartungsarbeiten-save" type="submit" name="config-submit" class="btn btn-save rex-form-aligned" value="1">Einstellungen speichern</button></div>'; $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/submit.php');
$file_title .= ' [' . $file_id . ']'; // ----- opener $opener_link = ''; if ($opener_input_field == 'TINYIMG') { if (rex_media::isImageType(rex_file::extension($file_name))) { $opener_link .= '<a class="btn btn-select" href="javascript:insertImage(\'$file_name\',\'' . $files->getValue('title') . '\')">' . rex_i18n::msg('pool_image_get') . '</a>'; } } elseif ($opener_input_field == 'TINY') { $opener_link .= '<a class="btn btn-select" href="javascript:insertLink(\'' . $file_name . '\');"">' . rex_i18n::msg('pool_link_get') . '</a>'; } elseif ($opener_input_field != '') { $opener_link = '<a class="btn btn-xs btn-select" href="javascript:selectMedia(\'' . $file_name . '\', \'' . addslashes(htmlspecialchars($files->getValue('title'))) . '\');">' . rex_i18n::msg('pool_file_get') . '</a>'; if (substr($opener_input_field, 0, 14) == 'REX_MEDIALIST_') { $opener_link = '<a class="btn btn-xs btn-select" href="javascript:selectMedialist(\'' . $file_name . '\');">' . rex_i18n::msg('pool_file_get') . '</a>'; } } $ilink = rex_url::currentBackendPage(array_merge(['file_id' => $file_id, 'rex_file_category' => $rex_file_category], $arg_url)); $add_td = '<td></td>'; if ($PERMALL) { $add_td = '<td><input type="checkbox" name="selectedmedia[]" value="' . $file_name . '" /></td>'; } $panel .= '<tr> ' . $add_td . ' <td data-title="' . rex_i18n::msg('pool_file_thumbnail') . '"><a href="' . $ilink . '">' . $thumbnail . '</a></td> <td data-title="' . rex_i18n::msg('pool_file_info') . '"> <h3><a href="' . $ilink . '">' . htmlspecialchars($file_title) . '</a></h3> ' . $desc . ' <p>' . htmlspecialchars($file_name) . ' <span class="rex-filesize">' . $file_size . '</span></p> </td> <td data-title="' . rex_i18n::msg('pool_last_update') . '"><p class="rex-date">' . $file_stamp . '</p><p class="rex-author">' . htmlspecialchars($file_updateuser) . '</p></td> <td class="rex-table-action"><a href="' . $ilink . '">' . rex_i18n::msg('edit') . '</a></td> <td class="rex-table-action">';
$content .= $fragment->parse('core/form/checkbox.php'); $content .= '</fieldset>'; $formElements = []; $n = []; $n['field'] = '<button class="btn btn-primary" type="submit"><i class="rex-icon rex-icon-sign-in"></i> ' . rex_i18n::msg('login') . ' </button>'; $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $buttons = $fragment->parse('core/form/submit.php'); $fragment = new rex_fragment(); $fragment->setVar('title', rex_i18n::msg('login_welcome'), false); $fragment->setVar('body', $content, false); $fragment->setVar('buttons', $buttons, false); $content = $fragment->parse('core/page/section.php'); $content = ' <form id="rex-form-login" action="' . rex_url::backendController() . '" method="post"> ' . $content . ' </form> <script type="text/javascript"> <!-- jQuery(function($) { $("#rex-form-login") .submit(function(){ var pwInp = $("#rex-id-login-password"); if(pwInp.val() != "") { $("#rex-form-login").append(\'<input type="hidden" name="\'+pwInp.attr("name")+\'" value="\'+Sha1.hash(pwInp.val())+\'" />\'); pwInp.removeAttr("name"); } }); $("#javascript").val("1");
} foreach (encode_items($qryArray) as $line) { if (empty($firstLineKeys)) { $firstLineKeys = array_keys($line); fputcsv($file, $firstLineKeys); $firstLineKeys = array_flip($firstLineKeys); } fputcsv($file, array_merge($firstLineKeys, $line)); } fclose($file); exit; // -----/CSV EXPORT } } $content = '<div id="aufgaben">'; $content .= '<form action="' . rex_url::currentBackendPage() . '" data-pjax="false" method="post">'; $content .= '<fieldset>'; $content .= '<dl class="rex-form-group form-group"> <dt>Dateityp wählen</dt> <dd> <dl class="rex-form-group form-group"> <dd> <div class="radio"> <input id="export-csv" type="radio" value="csv" name="type" checked/> <label for="export-csv">' . $this->i18n('aufgaben_exim_dateityp_csv') . '</label> </div> </dd> </dl> <dl class="rex-form-group form-group"> <dd> <div class="radio">