function getForm() { if (!$this->table->isSearchable()) { return ''; } $yform = new rex_yform_manager_searchform(); $yform->setObjectparams('form_skin', 'default'); $yform->setObjectparams('form_showformafterupdate', 1); $yform->setObjectparams('real_field_names', true); $yform->setObjectparams('form_action', $this->scriptPath); $yform->setObjectparams('form_method', 'get'); foreach ($this->linkVars as $k => $v) { $yform->setHiddenField($k, $v); } // $yform->setValueField('text', array('label' => 'ID', 'name' => 'id')); foreach ($this->table->getFields() as $field) { if ($field->getTypeName() && $field->getType() == 'value' && $field->isSearchable()) { if (method_exists('rex_yform_' . $field->getTypeName(), 'getSearchField')) { call_user_func('rex_yform_' . $field->getTypeName() . '::getSearchField', array('searchForm' => $yform, 'searchObject' => $this, 'field' => $field, 'fields' => $this->table->getFields())); } } } $yform->setValueField('submit', array('yform_search_submit', rex_i18n::msg('yform_search'))); return $yform->getForm(); }
public static function getWidget($id, $name, $value, array $args = []) { $art_name = ''; $art = rex_article::get($value); $category = 0; // Falls ein Artikel vorausgewählt ist, dessen Namen anzeigen und beim öffnen der Linkmap dessen Kategorie anzeigen if ($art instanceof rex_article) { $art_name = $art->getName(); $category = $art->getCategoryId(); } $open_params = '&clang=' . rex_clang::getCurrentId(); if ($category || isset($args['category']) && ($category = (int) $args['category'])) { $open_params .= '&category_id=' . $category; } $class = ' rex-disabled'; $open_func = ''; $delete_func = ''; if (rex::getUser()->getComplexPerm('structure')->hasStructurePerm()) { $class = ''; $open_func = 'openLinkMap(\'REX_LINK_' . $id . '\', \'' . $open_params . '\');'; $delete_func = 'deleteREXLink(' . $id . ');'; } $e = []; $e['field'] = '<input class="form-control" type="text" name="REX_LINK_NAME[' . $id . ']" value="' . htmlspecialchars($art_name) . '" id="REX_LINK_' . $id . '_NAME" readonly="readonly" /><input type="hidden" name="' . $name . '" id="REX_LINK_' . $id . '" value="' . $value . '" />'; $e['functionButtons'] = ' <a href="#" class="btn btn-popup' . $class . '" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_link_open') . '"><i class="rex-icon rex-icon-open-linkmap"></i></a> <a href="#" class="btn btn-popup' . $class . '" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_link_delete') . '"><i class="rex-icon rex-icon-delete-link"></i></a>'; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $media = $fragment->parse('core/form/widget.php'); return $media; }
public static function modifySliceEditMenu(rex_extension_point $ep) { $Icons = array(); $Config = rex_config::get('slice_ui'); if (!empty($Config['general']['copy_n_cut']) && $Config['general']['copy_n_cut']) { $Icons = array(array('hidden_label' => rex_i18n::msg('slice_ui_copy'), 'url' => 'index.php?page=content/copy&article_id=' . $ep->getParam('article_id') . '&mode=edit&module_id=' . $ep->getParam('module_id') . '&slice_id=' . $ep->getParam('slice_id') . '&clang=' . $ep->getParam('clang') . '&ctype=' . $ep->getParam('ctype'), 'attributes' => array('class' => array('btn-copy'), 'title' => rex_i18n::msg('slice_ui_copy'), 'data-title-online' => rex_i18n::msg('slice_ui_slice_ui_copied')), 'icon' => 'copy'), array('hidden_label' => rex_i18n::msg('slice_ui_cut'), 'url' => 'index.php?page=content/cut&article_id=' . $ep->getParam('article_id') . '&mode=edit&module_id=' . $ep->getParam('module_id') . '&slice_id=' . $ep->getParam('slice_id') . '&clang=' . $ep->getParam('clang') . '&ctype=' . $ep->getParam('ctype'), 'attributes' => array('class' => array('btn-cut'), 'title' => rex_i18n::msg('slice_ui_cut'), 'data-title-online' => rex_i18n::msg('slice_ui_slice_ui_cutted')), 'icon' => 'cut')); if (!self::checkPermissions(array('article_id' => $ep->getParam('article_id'), 'clang' => $ep->getParam('clang'), 'ctype' => $ep->getParam('ctype'), 'module_id' => $ep->getParam('module_id')))) { unset($Icons); } // Einfügen soll möglich bleiben if ($_SESSION['slice_ui']['slice_id'] === $ep->getParam('slice_id') && $_SESSION['slice_ui']['cut'] === true) { $Icons[0]['attributes']['style'] = 'display:none'; } if (!empty($_SESSION['slice_ui']['slice_id']) && $_SESSION['slice_ui']['slice_id'] !== $ep->getParam('slice_id') || $_SESSION['slice_ui']['slice_id'] === $ep->getParam('slice_id') && $_SESSION['slice_ui']['cut'] !== true) { $Icons[0] = array('hidden_label' => rex_i18n::msg('slice_ui_paste'), 'url' => 'index.php?page=content/pasteAfter&article_id=' . $ep->getParam('article_id') . '&mode=edit&module_id=' . $ep->getParam('module_id') . '&slice_id=' . $ep->getParam('slice_id') . '&clang=' . $ep->getParam('clang') . '&ctype=' . $ep->getParam('ctype'), 'attributes' => array('class' => array('btn-paste'), 'title' => rex_i18n::msg('slice_ui_paste'), 'data-pjax' => 'true', 'data-title-online' => rex_i18n::msg('slice_ui_slice_ui_pasted')), 'icon' => 'paste'); } } $sql = rex_sql::factory(); $sql->setTable(rex::getTablePrefix() . 'article_slice'); $sql->setWhere(array('id' => $ep->getParam('slice_id'))); $sql->select(); $mode = 'visible'; if ($sql->getValue('active') == 0) { $mode = 'invisible'; } if (!empty($Config['general']['slice_status']) && $Config['general']['slice_status']) { $Icons[] = array('hidden_label' => rex_i18n::msg('slice_ui_toggle_' . $mode), 'url' => 'index.php?page=content/toggleSlice&article_id=' . $ep->getParam('article_id') . '&mode=edit&module_id=' . $ep->getParam('module_id') . '&slice_id=' . $ep->getParam('slice_id') . '&clang=' . $ep->getParam('clang') . '&ctype=' . $ep->getParam('ctype') . '&visible=' . $sql->getValue('active'), 'attributes' => array('class' => array('btn-' . $mode), 'title' => rex_i18n::msg('slice_ui_toggle_' . $mode), 'data-state' => $mode, 'data-title-online' => rex_i18n::msg('slice_ui_slice_toggled')), 'icon' => $mode); } if (!empty($Config['general']['drag_n_drop']) && $Config['general']['drag_n_drop']) { $Icons[] = array('hidden_label' => rex_i18n::msg('slice_ui_move'), 'url' => 'index.php?page=content/move&article_id=' . $ep->getParam('article_id') . '&mode=edit&module_id=' . $ep->getParam('module_id') . '&slice_id=' . $ep->getParam('slice_id') . '&clang=' . $ep->getParam('clang') . '&ctype=' . $ep->getParam('ctype'), 'attributes' => array('class' => array('btn-move-up-n-down', 'hide', !empty($Config['general']['keep_move_arrows']) && $Config['general']['keep_move_arrows'] ? 'keep_arrows' : 'remove_arrows'), 'title' => rex_i18n::msg('slice_ui_toggle_move'), 'data-prio' => '', 'data-title-online' => rex_i18n::msg('slice_ui_slice_moved')), 'icon' => 'move-up-n-down'); } return $Icons; }
public function execute() { if (!rex::getUser()->isAdmin()) { throw new rex_api_exception('user has no permission for this operation!'); } $type = rex_get('type', 'string'); switch ($type) { case 'articles': $prefix = 'art\\_%'; $defaultFields = [['translate:online_from', 'art_online_from', '1', '', '10', ''], ['translate:online_to', 'art_online_to', '2', '', '10', ''], ['translate:description', 'art_description', '3', '', '2', '']]; break; case 'media': $prefix = 'med\\_%'; $defaultFields = [['translate:pool_file_description', 'med_description', '1', '', '2', ''], ['translate:pool_file_copyright', 'med_copyright', '2', '', '1', '']]; break; default: throw new rex_api_exception(sprintf('metainfo type "%s" does not have default field.', $type)); } $existing = rex_sql::factory()->getArray('SELECT name FROM ' . rex::getTable('metainfo_field') . ' WHERE name LIKE ?', [$prefix]); $existing = array_column($existing, 'name', 'name'); foreach ($defaultFields as $field) { if (!isset($existing[$field[1]])) { $return = call_user_func_array('rex_metainfo_add_field', $field); if (is_string($return)) { throw new rex_api_exception($return); } } } return new rex_api_result(true, rex_i18n::msg('minfo_default_fields_created')); }
public static function getFieldParams() { $options = array_map(function (rex_clang $clang) { return $clang->getName(); }, rex_clang::getAll()); return ['label' => rex_i18n::msg('clangs'), 'all_label' => rex_i18n::msg('all_clangs'), 'options' => $options]; }
public function formatElement() { $name = $this->getFieldName(); $qry = 'SELECT ' . $this->labelField . ',' . $name . ' FROM ' . $this->table->getTableName() . ' WHERE 1=1'; if ($this->whereCondition != '') { $qry .= ' AND (' . $this->whereCondition . ')'; } // Im Edit Mode das Feld selbst nicht als Position einfügen if ($this->table->isEditMode()) { $qry .= ' AND (' . $name . '!=' . $this->getValue() . ')'; } $qry .= ' ORDER BY ' . $name; $sql = rex_sql::factory(); $sql->setQuery($qry); $this->select->addOption(rex_i18n::msg($this->firstOptionMsg), 1); $value = 1; foreach ($sql as $opt) { $value = $opt->getValue($name) + 1; $this->select->addOption(rex_i18n::rawMsg($this->optionMsg, $opt->getValue($this->labelField)), $value); } if (!$this->table->isEditMode()) { $this->select->setSelected($value); } return parent::formatElement(); }
public function isValid($value) { $article = rex_article::get($value); if (!$article instanceof rex_article) { return rex_i18n::msg('system_setting_' . $this->key . '_invalid'); } return true; }
protected function extractArchiveTo($dir) { if (!rex_install_archive::extract($this->archive, $dir, $this->addonkey)) { rex_dir::delete($dir); return rex_i18n::msg('install_warning_addon_zip_not_extracted'); } return true; }
static function getListValue($params) { $format = rex_i18n::msg('yform_format_date'); if (($d = DateTime::createFromFormat('Y-m-d', $params['subject'])) && $d->format('Y-m-d') == $params['subject']) { return $d->format($format); } return '[' . $params['subject'] . ']'; }
public function isValid($value) { $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'template WHERE id=' . $value . ' AND active=1'); if ($sql->getRows() != 1 && $value != 0) { return rex_i18n::msg('system_setting_default_template_id_invalid'); } return true; }
public function doAction() { $path = rex_path::addon($this->addonkey); $temppath = rex_path::addon('.new.' . $this->addonkey); if (($msg = $this->extractArchiveTo($temppath)) !== true) { return $msg; } if ($this->addon->isAvailable() && ($msg = $this->checkRequirements()) !== true) { return $msg; } // ---- include update.php if ($this->addon->isInstalled() && file_exists($temppath . rex_package::FILE_UPDATE)) { try { $this->addon->includeFile('../.new.' . $this->addonkey . '/' . rex_package::FILE_UPDATE); } catch (rex_functional_exception $e) { return $e->getMessage(); } catch (rex_sql_exception $e) { return 'SQL error: ' . $e->getMessage(); } if (($msg = $this->addon->getProperty('updatemsg', '')) != '') { return $msg; } if (!$this->addon->getProperty('update', true)) { return rex_i18n::msg('package_no_reason'); } } // ---- backup $assets = $this->addon->getAssetsPath(); if (rex_addon::get('install')->getConfig('backups')) { $archivePath = rex_path::addonData('install', $this->addonkey . '/'); rex_dir::create($archivePath); $archive = $archivePath . strtolower(preg_replace('/[^a-z0-9-_.]/i', '_', $this->addon->getVersion('0'))) . '.zip'; rex_install_archive::copyDirToArchive($path, $archive); if (is_dir($assets)) { rex_install_archive::copyDirToArchive($assets, $archive, 'assets'); } } // ---- copy plugins to new addon dir foreach ($this->addon->getRegisteredPlugins() as $plugin) { $pluginPath = $temppath . '/plugins/' . $plugin->getName(); if (!is_dir($pluginPath)) { rex_dir::copy($plugin->getPath(), $pluginPath); } elseif ($plugin->isInstalled() && is_dir($pluginPath . '/assets')) { rex_dir::copy($pluginPath . '/assets', $plugin->getAssetsPath()); } } // ---- update main addon dir rex_dir::delete($path); rename($temppath, $path); // ---- update assets $origAssets = $this->addon->getPath('assets'); if ($this->addon->isInstalled() && is_dir($origAssets)) { rex_dir::copy($origAssets, $assets); } $this->addon->setProperty('version', $this->file['version']); rex_install_packages::updatedPackage($this->addonkey, $this->fileId); }
/** * Deletes the cache. * * @package redaxo\core */ function rex_delete_cache() { // close logger, so the logfile can also be deleted rex_logger::close(); $finder = rex_finder::factory(rex_path::cache())->recursive()->childFirst()->ignoreFiles(['.htaccess', '.redaxo'], false)->ignoreSystemStuff(false); rex_dir::deleteIterator($finder); rex_clang::reset(); // ----- EXTENSION POINT return rex_extension::registerPoint(new rex_extension_point('CACHE_DELETED', rex_i18n::msg('delete_cache_message'))); }
public function setValue($value) { $value = (int) $value; $article = rex_article::get($value); if (!$article instanceof rex_article) { return rex_i18n::msg('system_setting_' . $this->key . '_invalid'); } rex_config::set('structure', $this->key, $value); return true; }
public function getParamFields() { $fields = [['label' => rex_i18n::msg('im_export_filename'), 'name' => 'filename', 'type' => 'text', 'default' => self::DEFAULT_FILENAME, 'notice' => rex_i18n::msg('im_export_filename_notice')], ['name' => 'sendmail', 'type' => 'checkbox', 'options' => [1 => rex_i18n::msg('im_export_send_mail')]]]; if (rex_addon::get('phpmailer')->isAvailable()) { $fields[] = ['label' => rex_i18n::msg('im_export_mailaddress'), 'name' => 'mailaddress', 'type' => 'text', 'visible_if' => ['sendmail' => 1]]; } else { $fields[1]['notice'] = rex_i18n::msg('im_export_send_mail_notice'); $fields[1]['attributes'] = ['disabled' => 'disabled']; } return $fields; }
public function setValue($value) { $value = (int) $value; $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'template WHERE id=' . $value . ' AND active=1'); if ($sql->getRows() != 1 && $value != 0) { return rex_i18n::msg('system_setting_default_template_id_invalid'); } rex_config::set('structure/content', 'default_template_id', $value); return true; }
public static function formatLabel(rex_structure_element $OOobject) { $label = $OOobject->getName(); if (trim($label) == '') { $label = ' '; } $label .= ' [' . $OOobject->getId() . ']'; if ($OOobject instanceof rex_article && !$OOobject->hasTemplate()) { $label .= ' [' . rex_i18n::msg('linkmap_has_no_template') . ']'; } return $label; }
function enterObject() { $options[1] = rex_i18n::msg('yform_prio_top'); $scopeWhere = $this->getScopeWhere(); if (false === $scopeWhere) { $options[''] = rex_i18n::msg('yform_prio_bottom'); } else { $this->preEditScopeWhere = $scopeWhere; $sql = rex_sql::factory(); if ($this->debug) { $sql->setDebug(); } $fields = $this->getElement('fields'); if (!is_array($fields)) { $fields = array_filter(explode(',', $fields)); } if (empty($fields)) { $fields = array('id'); } $selectFields = array(); foreach ($fields as $field) { $selectFields[] = $field; } $sql->setQuery(sprintf('SELECT id, %s, %s as prio FROM %s%s ORDER BY %2$s', implode(', ', $selectFields), $this->getElement('name'), $this->params['main_table'], $scopeWhere)); $prio = 1; while ($sql->hasNext()) { if ($sql->getValue('id') != $this->params['main_id']) { $prio = $sql->getValue('prio') + 1; $label = array(); foreach ($fields as $field) { $label[] = rex_i18n::translate($sql->getValue($field)); } $options[$prio] = rex_i18n::msg('yform_prio_after', implode(' | ', $label)); } $sql->next(); } } if (!$this->params['send'] && $this->getValue() == '') { if ($this->getElement('default') == '') { $this->setValue(isset($prio) ? $prio : ''); } else { $this->setValue($this->getElement('default')); } } if (!is_array($this->getValue())) { $this->setValue(explode(',', $this->getValue())); } $this->params['form_output'][$this->getId()] = $this->parse('value.select.tpl.php', array('options' => $options, 'multiple' => false, 'size' => 1)); $this->setValue(implode(',', $this->getValue())); $this->params['value_pool']['email'][$this->getName()] = $this->getValue(); $this->params['value_pool']['sql'][$this->getName()] = $this->getValue(); }
public function formatElement() { $name = $this->getAttribute('name') . '[]'; $value = explode('|', htmlspecialchars($this->getValue())); if (count($value) != 4) { $value = [null, 1, 'd']; } $options = ['i' => rex_i18n::msg('cronjob_interval_minutes'), 'h' => rex_i18n::msg('cronjob_interval_hour'), 'd' => rex_i18n::msg('cronjob_interval_day'), 'w' => rex_i18n::msg('cronjob_interval_week'), 'm' => rex_i18n::msg('cronjob_interval_month'), 'y' => rex_i18n::msg('cronjob_interval_year')]; $items = []; $buttonLabel = ''; foreach ($options as $optionValue => $optionTitle) { $item = []; $item['title'] = $optionTitle; $item['href'] = '#'; $item['attributes'] = 'data-value="' . $optionValue . '"'; if ($optionValue == $value[2]) { $buttonLabel = $optionTitle; } $items[] = $item; } $toolbar = ''; $fragment = new rex_fragment(); $fragment->setVar('button_label', $buttonLabel); $fragment->setVar('items', $items, false); $fragment->setVar('group', true); $fragment->setVar('right', true); $dropdown = $fragment->parse('core/dropdowns/dropdown.php'); $formElements = []; $n = []; $n['field'] = '<input class="form-control" type="text" name="' . $name . '" value="' . $value[1] . '" />'; $n['right'] = $dropdown; $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $field = '<div class="rex-js-cronjob-interval">' . $fragment->parse('core/form/input_group.php') . '<input class="rex-js-cronjob-interval-value" type="hidden" name="' . $name . '" value="' . $value[2] . '" /></div>'; $javascript = ' <script type="text/javascript"> // <![CDATA[ jQuery(function($){ $(".rex-js-cronjob-interval .dropdown-menu li a").click(function(event){ event.preventDefault(); var $title = $(this).text(); $(this).closest(".input-group-btn").find(".btn > b").html($title); var $value = $(this).closest("li").attr("data-value"); $(".rex-js-cronjob-interval-value").val($value); }); }); // ]]> </script>'; return $field . $javascript; }
/** * Formats a string by `strftime()`. * * @link http://www.php.net/manual/en/function.strftime.php * * @param string $value Value * @param string $format Possible values are format strings like in `strftime` or "date" oder "datetime", default is "date" * * @return string */ public static function strftime($value, $format = '') { if (empty($value)) { return ''; } if ($format == '' || $format == 'date') { // Default REX-Dateformat $format = rex_i18n::msg('dateformat'); } elseif ($format == 'datetime') { // Default REX-Datetimeformat $format = rex_i18n::msg('datetimeformat'); } return strftime($format, $value); }
public function __construct(array $values) { if (count($values) == 0) { throw new Exception(rex_i18n::msg('yform_table_not_found')); } $this->values = $values; $tb = rex_sql::factory(); if (self::$debug) { $tb->setDebug(); } $tb->setQuery('select * from ' . rex_yform_manager_field::table() . ' where table_name=' . $tb->escape($this->getTablename()) . ' order by prio'); $this->fields = array(); foreach ($tb->getArray() as $field) { $this->fields[] = new rex_yform_manager_field($field); } }
public function execute() { if (!rex::getUser()->isAdmin()) { throw new rex_api_exception('You do not have the permission!'); } $addonkey = rex_request('addonkey', 'string'); try { rex_install_webservice::delete(rex_install_packages::getPath('?package=' . $addonkey . '&file_id=' . rex_request('file', 'int', 0))); } catch (rex_functional_exception $e) { throw new rex_api_exception($e->getMessage()); } unset($_REQUEST['addonkey']); unset($_REQUEST['file']); rex_install_packages::deleteCache(); return new rex_api_result(true, rex_i18n::msg('install_info_addon_deleted', $addonkey)); }
/** * Löscht eine Clang. * * @param int $id Zu löschende ClangId * * @throws rex_exception */ public static function deleteCLang($id) { $startClang = rex_clang::getStartId(); if ($id == $startClang) { throw new rex_functional_exception(rex_i18n::msg('clang_error_startidcanotbedeleted', $startClang)); } if (!rex_clang::exists($id)) { throw new rex_functional_exception(rex_i18n::msg('clang_error_idcanotbedeleted', $id)); } $clang = rex_clang::get($id); $del = rex_sql::factory(); $del->setQuery('delete from ' . rex::getTablePrefix() . 'clang where id=?', [$id]); rex_sql_util::organizePriorities(rex::getTable('clang'), 'priority', '', 'priority'); rex_delete_cache(); // ----- EXTENSION POINT rex_extension::registerPoint(new rex_extension_point('CLANG_DELETED', '', ['id' => $clang->getId(), 'name' => $clang->getName(), 'clang' => $clang])); }
public function __construct($tag = '', rex_metainfo_table_expander $table = null, array $attributes = []) { parent::__construct('', $table, $attributes); $this->chkbox_element = new rex_form_checkbox_element(''); $this->chkbox_element->setAttribute('name', 'enable_restrictions'); $this->chkbox_element->setAttribute('id', 'enable-restrictions-checkbox'); $this->chkbox_element->addOption(rex_i18n::msg('minfo_field_label_no_restrictions'), ''); if ($table->getPrefix() == rex_metainfo_article_handler::PREFIX || $table->getPrefix() == rex_metainfo_category_handler::PREFIX) { $restrictionsSelect = new rex_category_select(false, false, true, false); } elseif ($table->getPrefix() == rex_metainfo_media_handler::PREFIX) { $restrictionsSelect = new rex_media_category_select(); } else { throw new rex_exception('Unexpected TablePrefix "' . $table->getPrefix() . '"!'); } $restrictionsSelect->setMultiple(true); $this->setSelect($restrictionsSelect); $this->setNotice(rex_i18n::msg('ctrl')); }
public static function getWidget($id, $name, $value, array $args = []) { $open_params = '&clang=' . rex_clang::getCurrentId(); if (isset($args['category']) && ($category = (int) $args['category'])) { $open_params .= '&category_id=' . $category; } $options = ''; $linklistarray = explode(',', $value); if (is_array($linklistarray)) { foreach ($linklistarray as $link) { if ($link != '') { if ($article = rex_article::get($link)) { $options .= '<option value="' . $link . '">' . htmlspecialchars($article->getName()) . '</option>'; } } } } $disabled = ' disabled'; $open_func = ''; $delete_func = ''; if (rex::getUser()->getComplexPerm('structure')->hasStructurePerm()) { $disabled = ''; $open_func = 'openREXLinklist(' . $id . ', \'' . $open_params . '\');'; $delete_func = 'deleteREXLinklist(' . $id . ');'; } $e = []; $e['field'] = ' <select class="form-control" name="REX_LINKLIST_SELECT[' . $id . ']" id="REX_LINKLIST_SELECT_' . $id . '" size="10"> ' . $options . ' </select> <input type="hidden" name="' . $name . '" id="REX_LINKLIST_' . $id . '" value="' . $value . '" />'; $e['moveButtons'] = ' <a href="#" class="btn btn-popup" onclick="moveREXLinklist(' . $id . ',\'top\');return false;" title="' . rex_i18n::msg('var_linklist_move_top') . '"><i class="rex-icon rex-icon-top"></i></a> <a href="#" class="btn btn-popup" onclick="moveREXLinklist(' . $id . ',\'up\');return false;" title="' . rex_i18n::msg('var_linklist_move_up') . '"><i class="rex-icon rex-icon-up"></i></a> <a href="#" class="btn btn-popup" onclick="moveREXLinklist(' . $id . ',\'down\');return false;" title="' . rex_i18n::msg('var_linklist_move_down') . '"><i class="rex-icon rex-icon-down"></i></a> <a href="#" class="btn btn-popup" onclick="moveREXLinklist(' . $id . ',\'bottom\');return false;" title="' . rex_i18n::msg('var_linklist_move_bottom') . '"><i class="rex-icon rex-icon-bottom"></i></a>'; $e['functionButtons'] = ' <a href="#" class="btn btn-popup" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_link_open') . '"' . $disabled . '><i class="rex-icon rex-icon-open-linkmap"></i></a> <a href="#" class="btn btn-popup" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_link_delete') . '"' . $disabled . '><i class="rex-icon rex-icon-delete-link"></i></a>'; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $link = $fragment->parse('core/form/widget_list.php'); return $link; }
function __construct(array $values) { $class = 'rex_yform_' . $values['type_id'] . '_' . $values['type_name']; if (count($values) == 0 || !class_exists($class)) { throw new Exception(rex_i18n::msg('yform_field_not_found')); } $object = new $class(); $definitions = $object->getDefinitions(); if (isset($definitions['values'])) { $i = 'validate' === $values['type_id'] ? 2 : 1; foreach ($definitions['values'] as $key => $value) { if (isset($values['f' . $i]) && (!isset($values[$key]) || is_null($values[$key]) || '' === $values[$key])) { $values[$key] = $values['f' . $i]; } $i++; } } $this->values = $values; }
public static function getWidget($id, $name, $value, array $args = []) { $open_params = ''; if (isset($args['category']) && ($category = (int) $args['category'])) { $open_params .= '&rex_file_category=' . $category; } foreach ($args as $aname => $avalue) { $open_params .= '&args[' . urlencode($aname) . ']=' . urlencode($avalue); } $wdgtClass = ' rex-js-widget-media'; if (isset($args['preview']) && $args['preview']) { $wdgtClass .= ' rex-js-widget-preview'; if (rex_addon::get('media_manager')->isAvailable()) { $wdgtClass .= ' rex-js-widget-preview-media-manager'; } } $disabled = ' disabled'; $open_func = ''; $add_func = ''; $delete_func = ''; $view_func = ''; if (rex::getUser()->getComplexPerm('media')->hasMediaPerm()) { $disabled = ''; $open_func = 'openREXMedia(' . $id . ',\'' . $open_params . '\');'; $add_func = 'addREXMedia(' . $id . ',\'' . $open_params . '\');'; $delete_func = 'deleteREXMedia(' . $id . ');'; $view_func = 'viewREXMedia(' . $id . ',\'' . $open_params . '\');'; } $e = []; $e['before'] = '<div class="rex-js-widget' . $wdgtClass . '">'; $e['field'] = '<input class="form-control" type="text" name="' . $name . '" value="' . $value . '" id="REX_MEDIA_' . $id . '" readonly />'; $e['functionButtons'] = ' <a href="#" class="btn btn-popup" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_media_open') . '"' . $disabled . '><i class="rex-icon rex-icon-open-mediapool"></i></a> <a href="#" class="btn btn-popup" onclick="' . $add_func . 'return false;" title="' . rex_i18n::msg('var_media_new') . '"' . $disabled . '><i class="rex-icon rex-icon-add-media"></i></a> <a href="#" class="btn btn-popup" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_media_remove') . '"' . $disabled . '><i class="rex-icon rex-icon-delete-media"></i></a> <a href="#" class="btn btn-popup" onclick="' . $view_func . 'return false;" title="' . rex_i18n::msg('var_media_view') . '"' . $disabled . '><i class="rex-icon rex-icon-view-media"></i></a>'; $e['after'] = '<div class="rex-js-media-preview"></div></div>'; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $media = $fragment->parse('core/form/widget.php'); return $media; }
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() { $article_id = rex_request('article_id', 'int'); $clang = rex_request('clang', 'int'); $slice_id = rex_request('slice_id', 'int'); $direction = rex_request('direction', 'string'); $ooArt = rex_article::get($article_id, $clang); if (!$ooArt instanceof rex_article) { throw new rex_api_exception('Unable to find article with id "' . $article_id . '" and clang "' . $clang . '"!'); } $category_id = $ooArt->getCategoryId(); /** * @var rex_user */ $user = rex::getUser(); // check permissions if (!$user->hasPerm('moveSlice[]')) { throw new rex_api_exception(rex_i18n::msg('no_rights_to_this_function')); } if (!$user->getComplexPerm('structure')->hasCategoryPerm($category_id)) { throw new rex_api_exception(rex_i18n::msg('no_rights_to_this_function')); } // modul und rechte vorhanden ? $CM = rex_sql::factory(); $CM->setQuery('select * from ' . rex::getTablePrefix() . 'article_slice left join ' . rex::getTablePrefix() . 'module on ' . rex::getTablePrefix() . 'article_slice.module_id=' . rex::getTablePrefix() . 'module.id where ' . rex::getTablePrefix() . "article_slice.id='{$slice_id}' and clang_id={$clang}"); if ($CM->getRows() != 1) { throw new rex_api_exception(rex_i18n::msg('module_not_found')); } else { $module_id = (int) $CM->getValue(rex::getTablePrefix() . 'article_slice.module_id'); // ----- RECHTE AM MODUL ? if ($user->getComplexPerm('modules')->hasPerm($module_id)) { $message = rex_content_service::moveSlice($slice_id, $clang, $direction); } else { throw new rex_api_exception(rex_i18n::msg('no_rights_to_this_function')); } } $result = new rex_api_result(true, $message); return $result; }
function rex_metainfo_content_sidebar($extionPointParams) { $params = $extionPointParams->getParams(); $article = rex_article::get($params['article_id'], $params['clang']); $articleStatusTypes = rex_article_service::statusTypes(); $panel = ''; $panel .= '<dl class="dl-horizontal">'; $panel .= '<dt>' . rex_i18n::msg('created_by') . '</dt>'; $panel .= '<dd>' . $article->getValue('createuser') . '</dd>'; $panel .= '<dt>' . rex_i18n::msg('created_on') . '</dt>'; $panel .= '<dd>' . rex_formatter::strftime($article->getValue('createdate'), 'date') . '</dd>'; $panel .= '<dt>' . rex_i18n::msg('updated_by') . '</dt>'; $panel .= '<dd>' . $article->getValue('updateuser') . '</dd>'; $panel .= '<dt>' . rex_i18n::msg('updated_on') . '</dt>'; $panel .= '<dd>' . rex_formatter::strftime($article->getValue('updatedate'), 'date') . '</dd>'; $panel .= '<dt>' . rex_i18n::msg('status') . '</dt>'; $panel .= '<dd class="' . $articleStatusTypes[$article->getValue('status')][1] . '">' . $articleStatusTypes[$article->getValue('status')][0] . '</dd>'; $panel .= '</dl>'; $fragment = new rex_fragment(); $fragment->setVar('title', rex_i18n::msg('metadata'), false); $fragment->setVar('body', $panel, false); $content = $fragment->parse('core/page/section.php'); return $content; }
function rex_yform_list_delete_format($p) { return rex_yform_list_format($p, $p['list']->getColumnLink(rex_i18n::msg('yform_delete'), '<i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('yform_delete'))); }