Ejemplo n.º 1
0
 public static function form($action = NULL)
 {
     $request = Typecho_Request::getInstance();
     /** 构建表格 */
     $options = Typecho_Widget::widget('Widget_Options');
     $form = new Typecho_Widget_Helper_Form(Typecho_Common::url('/action/DomainTheme-edit', $options->index), Typecho_Widget_Helper_Form::POST_METHOD);
     /** 名称 */
     $name = new Typecho_Widget_Helper_Form_Element_Text(self::$FORM_PRE . 'name', NULL, NULL, _t('名称'));
     $form->addInput($name);
     /** 地址 */
     $url = new Typecho_Widget_Helper_Form_Element_Text(self::$FORM_PRE . 'domain', NULL, "", _t('域名'));
     $form->addInput($url);
     /** 主题 */
     self::$TEMP_THEME_NAME = isset($request->themename) ? $request->themename : 'default';
     $themes = array_map('basename', glob(__TYPECHO_ROOT_DIR__ . __TYPECHO_THEME_DIR__ . '/*'));
     $themes = array_combine($themes, $themes);
     $theme = new DomainTheme_Element_Select(self::$FORM_PRE . 'theme', $themes, self::$TEMP_THEME_NAME, _t('主题名称'), _t('模板名称'));
     $form->addInput($theme);
     /** 模板数据 **/
     $template_data = array();
     /** 链接动作 */
     $do = new Typecho_Widget_Helper_Form_Element_Hidden(self::$FORM_PRE . 'do');
     $form->addInput($do);
     /** 链接主键 */
     $id = new Typecho_Widget_Helper_Form_Element_Hidden(self::$FORM_PRE . 'id');
     $form->addInput($id);
     /** 提交按钮 */
     $submit = new Typecho_Widget_Helper_Form_Element_Submit();
     $submit->input->setAttribute('class', 'btn primary');
     $name->value(isset($request->name) ? $request->name : null);
     $url->value(isset($request->domain) ? $request->domain : null);
     if (isset($request->id) && 'insert' != $action) {
         /** 更新模式 */
         $db = Typecho_Db::get();
         $prefix = $db->getPrefix();
         $link = $db->fetchRow($db->select()->from($prefix . 'domaintheme')->where('id = ?', $request->id));
         if (!$link) {
             throw new Typecho_Widget_Exception(_t('链接不存在'), 404);
         }
         $name->value(isset($request->name) ? $request->name : $link['name']);
         $url->value(isset($request->domain) ? $request->domain : $link['domain']);
         //$user->value($link['user']);
         $template_data = json_decode($link['user'], true);
         if (!isset($request->themename)) {
             self::$TEMP_THEME_NAME = $link['theme'];
             $theme->value($link['theme']);
         }
         $do->value('update');
         $id->value($link['id']);
         $submit->value(_t('编辑'));
         $_action = 'update';
     } else {
         $do->value('insert');
         $submit->value(_t('增加'));
         $_action = 'insert';
     }
     if (empty($action)) {
         $action = $_action;
     }
     /** 给表单增加规则 */
     if ('insert' == $action || 'update' == $action) {
         $name->addRule('required', _t('必须填写名称'));
         $url->addRule('required', _t('必须填写域名地址'));
         $theme->addRule('required', _t('必须填写模板名称'));
     }
     if ('update' == $action) {
         $id->addRule('required', _t('链接主键不存在'));
     }
     /** 自定义数据 */
     //$user = new Typecho_Widget_Helper_Form_Element_Textarea('user', NULL, NULL, _t('自定义数据'), _t('该项用于用户自定义数据扩展(json格式)'));
     //$form->addInput($user);
     self::configTheme($form, $template_data);
     $form->addItem($submit);
     return $form;
 }