/** * @mcms_message ru.molinos.cms.admin.form.backup */ public function getAdminFormXML(Context $ctx) { $form = new Form(array('action' => '?q=backup.rpc', 'title' => t('Архивирование сайта'))); $form->addControl(new EnumRadioControl(array('value' => 'action', 'label' => t('Выберите операцию'), 'options' => array('backup' => t('Скачать архив сайта')), 'required' => true))); $form->addControl(new SubmitControl(array('text' => t('Продолжить')))); return $form->getXML(Control::data(array())); }
/** * Возвращает форму авторизации. * * @param Context $ctx * @return string * @mcms_message ru.molinos.cms.auth.form */ public static function getXML(Context $ctx) { if (!($providers = $ctx->registry->poll('ru.molinos.cms.auth.enum'))) { return null; } $form = self::getForm($providers)->getXML(Control::data()); return $form; }
/** * Настройка правила (форма). */ public static function on_get_edit(Context $ctx) { if (!($name = $ctx->get('name'))) { throw new BadRequestException(t('Не указано имя трансформации (параметр name).')); } if (!($data = $ctx->config->getArray(self::confroot . '/' . $name))) { throw new PageNotFoundException(); } $data['name'] = $name; $form = self::get_schema()->sort()->getForm(array('title' => t('Настройка трансформации «%name»', array('%name' => $name))))->getXML(Control::data($data)); return html::em('content', array('name' => 'form'), $form); }
public static function rpc_post_configure(Context $ctx) { $conf = array(); if (!($moduleName = $ctx->get('module'))) { throw new RuntimeException(t('Не указано имя настраиваемого модуля.')); } $conf = Control::data(); foreach (modman::settings_get($ctx, $moduleName) as $k => $v) { $v->set($ctx->post($k, $v->default), $conf); } $ctx->config->set('modules/' . $moduleName, $conf->dump())->save(); Logger::log($moduleName . ': configuration updated.'); }
public static function on_get_edit(Context $ctx) { $list = Widget::loadWidgets($ctx); if (!array_key_exists($name = $ctx->get('name'), $list)) { throw new PageNotFoundException(); } if (empty($list[$name]['classname'])) { throw new RuntimeException(t('Не указан тип виджета %name.', array('%name' => $name))); } if (!class_exists($list[$name]['classname'])) { throw new RuntimeException(t('Используемый виджетом «%name» класс (%class) отсутствует.', array('%name' => $name, '%class' => $list[$name]['classname']))); } $info = $list[$name]; $info['name'] = $name; $info['pages'] = self::get_pages_for($ctx, $name); $form = self::get_form($ctx, $info['classname'], $name); $html = $form->getXML(Control::data($info)); return html::wrap('content', $html, array('name' => 'edit')); }
protected static function aui_upgrade(Context $ctx) { $schema = new Schema(array('modules' => array('type' => 'ModManControl', 'columns' => array('check', 'name', 'version', 'available'), 'disable_required' => false), 'submit' => array('type' => 'SubmitControl', 'text' => t('Обновить отмеченные')))); $form = $schema->getForm(array('title' => t('Обновление модулей'), 'action' => '?q=modman.rpc&action=upgrade&destination=' . urlencode($ctx->get('destination', 'CURRENT')))); return $form->getHTML(Control::data(array('modules' => modman::getUpdatedModules()))); }
private static function getFormData($key, array $data) { list($data['host'], $data['path']) = explode('/', $key, 2); return Control::data($data); }
/** * Возвращает форму для создания документа. */ public static function on_get_create_form(Context $ctx) { if (!($type = $ctx->get('type'))) { throw new BadRequestException(t('Не указан тип документа (GET-параметр type).')); } $node = Node::create(array('class' => $type, 'parent_id' => $ctx->get('parent')))->knock(ACL::CREATE); $form = $node->formGet(); // destination берётся из $_SERVER, и при работе через XML API содержит не то, // что может быть нужно, поэтому корректируем руками. $action = new url($form->action); $action->setarg('destination', $ctx->get('destination')); $form->action = $action->string(); $form->addClass('create'); $form->addClass('create-' . $type); return new Response($form->getXML(Control::data()), 'text/xml'); }
public static function settings(Context $ctx, $query, array $pathinfo) { // Проверяем права, если неверно указан обработчик. if ('AdminPage::serve' != $pathinfo['call']) { if (empty($pathinfo['perms'])) { $pathinfo['perms'] = 'debug'; } AdminPage::checkperm($ctx, $pathinfo); } $name = substr(strrchr($query, '/'), 1); $schema = self::settings_get($ctx, $name); $form = $schema->getForm(); $data = $ctx->config->get('modules/' . $name, array()); $title = $pathinfo['title']; if (empty($form->title)) { $form->title = $title; } $form->action = '?q=modman.rpc&action=configure&module=' . urlencode($name) . '&destination=admin/system/settings'; $form->addControl(new SubmitControl(array('text' => t('Сохранить')))); $result = html::em('content', array('name' => 'form', 'title' => $name, 'mode' => 'config'), $form->getXML(Control::data($data))); $page = new AdminPage($result); return $page->getResponse($ctx); }
/** * Формирование HTML кода формы. * * @param string $id идентификатор формы (напр., "my-form"). * * @param array $data Данные для формы. Если не указаны, вызывается метод * formGetData($id). * * @return Control описание формы или NULL, если формы с таким id нет. */ protected function formRender($id, $data = null) { if (null === ($form = $this->formGet($id))) { return null; } if (null === $data) { $data = $this->formGetData($id); } if (is_array($data)) { $data = Control::data($data); } $form->id = $id; if (!$form instanceof Form) { throw new InvalidArgumentException(t("Значение, полученное от метода formGet(%id) виджета %class не является формой.", array('%id' => $id, '%class' => get_class($this)))); } if (null === $form->findControl('destination')) { $form->addControl(new HiddenControl(array('value' => 'destination'))); } $html = $form->getXML($data); if (!empty($html) and null !== $id) { $html = html::em('div', array('id' => $id . '-wrapper', 'class' => $form->wrapper_class), $html); } return $html; }
/** * Валидирует форму, возвращает данные. */ public function getFormData(Context $ctx, &$data = null) { if (null === $data) { $data = Control::data(array()); } foreach ($this as $name => $field) { $value = $ctx->post($name); $field->set($value, $data, $ctx->post); } return $data; }
/** * Возвращает форму добавления поля. */ public static function on_get_add_field(Context $ctx) { $schema = self::getFieldSchema($class = $ctx->get('class')); $types = Control::getKnownTypes(); $form = $schema->getForm(array('title' => t('Новое поле: %type', array('%type' => mb_strtolower($types[$class]))))); $form->addControl(new SubmitControl(array('text' => t('Добавить')))); return html::em('content', array('name' => 'edit'), $form->getXML(Control::data())); }