示例#1
0
 /**
  * @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()));
 }
示例#2
0
 /**
  * Возвращает форму авторизации.
  * 
  * @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;
 }
示例#3
0
 /**
  * Настройка правила (форма).
  */
 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);
 }
示例#4
0
 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.');
 }
示例#5
0
 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'));
 }
示例#6
0
 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())));
 }
示例#7
0
 private static function getFormData($key, array $data)
 {
     list($data['host'], $data['path']) = explode('/', $key, 2);
     return Control::data($data);
 }
示例#8
0
 /**
  * Возвращает форму для создания документа.
  */
 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');
 }
示例#9
0
 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);
 }
示例#10
0
 /**
  * Формирование 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;
 }
示例#11
0
 /**
  * Валидирует форму, возвращает данные.
  */
 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;
 }
示例#12
0
 /**
  * Возвращает форму добавления поля.
  */
 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()));
 }