public function testValidation() { $field = GroupedDropdownField::create('Test', 'Testing', array("1" => "One", "Group One" => array("2" => "Two", "3" => "Three"), "Group Two" => array("4" => "Four"))); $this->assertEquals(array("1", "2", "3", "4"), $field->getValidValues()); $validator = new RequiredFields(); $field->setValue("1"); $this->assertTrue($field->validate($validator)); //test grouped values $field->setValue("3"); $this->assertTrue($field->validate($validator)); //non-existent value should make the field invalid $field->setValue("Over 9000"); $this->assertFalse($field->validate($validator)); //empty string shouldn't validate $field->setValue(''); $this->assertFalse($field->validate($validator)); //empty field should validate after being set $field->setEmptyString('Empty String'); $field->setValue(''); $this->assertTrue($field->validate($validator)); //disabled items shouldn't validate $field->setDisabledItems(array('1')); $field->setValue('1'); $this->assertEquals(array("2", "3", "4"), $field->getValidValues()); $this->assertEquals(array("1"), $field->getDisabledItems()); $this->assertFalse($field->validate($validator)); }
public function __construct($name, $title = null, $value = "") { // naming with underscores to prevent values from actually being saved somewhere $this->fieldType = new OptionsetField("{$name}[Type]", _t('HtmlEditorField.LINKTO', 'Link to'), array('Internal' => _t('HtmlEditorField.LINKINTERNAL', 'Page on the site'), 'External' => _t('HtmlEditorField.LINKEXTERNAL', 'Another website'), 'Email' => _t('HtmlEditorField.LINKEMAIL', 'Email address'), 'File' => _t('HtmlEditorField.LINKFILE', 'Download a file')), 'Internal'); $this->fieldLink = new CompositeField($this->internalField = WTTreeDropdownField::create("{$name}[Internal]", _t('HtmlEditorField.Internal', 'Internal'), 'SiteTree', 'ID', 'Title', true), $this->externalField = TextField::create("{$name}[External]", _t('HtmlEditorField.URL', 'URL'), 'http://'), $this->emailField = EmailField::create("{$name}[Email]", _t('HtmlEditorField.EMAIL', 'Email address')), $this->fileField = WTTreeDropdownField::create("{$name}[File]", _t('HtmlEditorField.FILE', 'File'), 'File', 'ID', 'Title', true), $this->extraField = TextField::create("{$name}[Extra]", 'Extra(optional)')->setDescription('Appended to url. Use to add sub-urls/actions or query string to the url, e.g. ?param=value'), $this->anchorField = TextField::create("{$name}[Anchor]", 'Anchor (optional)'), $this->targetBlankField = CheckboxField::create("{$name}[TargetBlank]", _t('HtmlEditorField.LINKOPENNEWWIN', 'Open link in a new window?'))); if ($linkableDataObjects = WTLink::get_data_object_types()) { if (!($objects = self::$linkable_data_objects)) { $objects = array(); foreach ($linkableDataObjects as $className) { $classObjects = array(); //set the format for DO value -> ClassName-ID foreach (DataList::create($className) as $object) { $classObjects[$className . '-' . $object->ID] = $object->Title; } if (!empty($classObjects)) { $objects[singleton($className)->i18n_singular_name()] = $classObjects; } } } if (count($objects)) { $this->fieldType->setSource(array_merge($this->fieldType->getSource(), array('DataObject' => _t('WTLinkField.LINKDATAOBJECT', 'Data Object')))); $this->fieldLink->insertBefore("{$name}[Extra]", $this->dataObjectField = GroupedDropdownField::create("{$name}[DataObject]", _t('WTLinkField.LINKDATAOBJECT', 'Link to a Data Object'), $objects)); } self::$linkable_data_objects = $objects; } $this->extraField->addExtraClass('no-hide'); $this->anchorField->addExtraClass('no-hide'); $this->targetBlankField->addExtraClass('no-hide'); parent::__construct($name, $title, $value); }
public function getCMSFields() { $originalFields = parent::getCMSFields(); $fields = new FieldList(); $fields->push(new TabSet('Root', new Tab('Main'))); $fields->addFieldsToTab('Root.Main', array(TextField::create('Name', '项目名称'), GroupedDropdownField::create('project_class', '项目类别', self::$class_types)->setEmptyString('请选择'), DateField::create('start_date', '开始日期')->setConfig('showcalendar', true), DateField::create('finish_date', '结束日期')->setConfig('showcalendar', true), DropdownField::create('tech_resource', '项目技术来源', $this->dbObject('tech_resource')->enumValues())->setEmptyString('请选择'), DropdownField::create('industry_type', '项目计划类别', $this->dbObject('industry_type')->enumValues())->setEmptyString('请选择'))); if ($this->ID) { $cooperatorsField = $originalFields->dataFieldByName('Cooperators')->setTitle('合作单位'); $cooperatorsField->getConfig()->removeComponentsByType('GridFieldDeleteAction'); $teamMembersField = $originalFields->dataFieldByName('TeamMembers')->setTitle('项目组成员'); $teamMembersField->getConfig()->removeComponentsByType('GridFieldDeleteAction'); $scheduleField = $originalFields->dataFieldByName('Schedules')->setTitle('计划进度'); $scheduleField->getConfig()->removeComponentsByType('GridFieldDeleteAction'); $cooperatorsField->getConfig()->removeComponentsByType('GridFieldAddExistingAutocompleter'); $teamMembersField->getConfig()->removeComponentsByType('GridFieldAddExistingAutocompleter'); $scheduleField->getConfig()->removeComponentsByType('GridFieldAddExistingAutocompleter'); $mainFields = array(); if ($this->industry_type === '重点科技计划项目') { $mainFields[] = UploadField::create('FeasibilityReport', '可行性报告')->setDescription('龙游县重点科技项目可行性报告及经费概算编写提纲 一、项目可行性报告 (一)立项的背景和意义。 (二)国内外研究现状和发展趋势。 (三)项目主要研究开发内容、技术关键及主要创新点。 (四)项目预期目标(主要技术经济指标、社会效益、技术应用和产业化前景以及获取自主知识产权的情况)。 (五)项目实施方案、技术路线、组织方式与课题分解。 (六)计划进度安排。 (七)现有工作基础和条件。 二、经费概算 凡申请财政分期补助、事先立项事后补助的项目,均应当编制科研项目经费概算。 经费概算包括两部分:一是经费概算列表,二是经费概算说明。经费概算列表的表式见该提纲附表“县级科技计划项目经费概算表”。 经费概算说明包括: 对承担单位和相关部门承诺提供的支撑条件进行说明; 对各科目支出的主要用途、与项目研究的相关性、概算方法、概算依据进行分析说明;对其他来源经费进行说明。 项目可行性报告及经费概算编写应当回避项目申报单位和项目负责人、成员相关的信息,否则作无效申报处置。'); $mainFields[] = LiteralField::create('FeasibilityDoc', '<a href="">点击下载可行性报告表格</a>'); } $mainFields[] = CompositeField::create(LiteralField::create('OverviewInfo', '<h2>项目概览</h2>'), LiteralField::create('Budget', '<h3>项目经费预算(万元)</h3>'), TextField::create('total_expenditure', '总计'), LiteralField::create('Including', '其中包括'), TextField::create('zichou', '自筹'), TextField::create('yinhangdaikuan', '银行贷款'), TextField::create('caizhengshenqing', '向县财政申请'), TextField::create('other_expenditure', '其他'), LiteralField::create('ExpenseBudget', '<h3>项目经费开支预算(万元)</h3>'), TextField::create('shebeifei', '设备费'), TextField::create('cailiaofei', '材料费'), TextField::create('shiyanhuayanjiagongfei', '试验化验加工费'), TextField::create('ranliaodonglifei', '燃料动力费'), TextField::create('chailvfei', '差旅费'), TextField::create('renyuanlaowufei', '人员劳务费'), TextField::create('hezuojiaoliufei', '合作、协作研究与交流费'), TextField::create('zhishichanquanshiwufei', '出版/文献/信息传播知识产权事务费'), TextField::create('huiyifei', '会议费'), TextField::create('guanlifei', '管理费'), TextField::create('zhuanjiazixunfei', '专家咨询费'), TextField::create('other_spending', '其他开支'), LiteralField::create('Expectation', '<h3>预计经济效益</h3>'), TextField::create('nianzengchanzhi', '年增产值(万元)'), TextField::create('nianzenglirun', '年增利润(万元)'), TextField::create('nianzengshuijin', '年增税金(万元)'), TextField::create('nianchuanghui', '年创汇(万美元)'), TextField::create('nianjiehui', '年节汇(万美元)'), LiteralField::create('OtherAchievement', '<h3>预计其他成果</h3>'), TextField::create('lunwenshu', '论文数'), TextField::create('zhuanli', '专利'), TextField::create('famingzhuanli', '其中发明专利'), TextareaField::create('beizhu', '备注')); $fields->addFieldsToTab('Root.Main', $mainFields); $fields->addFieldsToTab('Root.Units', array(LiteralField::create('PrimaryUnit', '<h3>第一申请单位</h3>'), TextField::create('danweimingcheng', '单位名称'), TextField::create('danweijiancheng', '单位简称'), TextField::create('farendaibiao', '法人代表'), TextField::create('suozaididaima', '所在地代码'), TextField::create('danweileixing', '单位类型'), TextField::create('xiangxidizhi', '详细地址'), TextField::create('youzhengbianma', '邮政编码'), TextField::create('danweiemail', '单位EMAIL'), TextField::create('lianxiren', '联系人'), TextField::create('lianxidianhua', '联系电话'), TextField::create('chuanzhen', '传真'), TextField::create('kaihuyinhang', '开户银行'), TextField::create('yinhangzhanghao', '银行帐号'), TextField::create('zhuguanbumen', '主管部门'), LiteralField::create('CooperatorsHead', '<h3>其他合作单位</h3>'), TextField::create('hezuodanweizongshu', '合作单位总数 △:(包含第一申请单位)'), TextField::create('chengdandanweishu', '承担单位数'), TextField::create('canjiadanweishu', '参加单位数'), $cooperatorsField->setTitle('合作单位'))); $fields->addFieldsToTab('Root.TeamMembers', array(LiteralField::create('Leader', '<h3>项目负责人</h3>'), TextField::create('fuzeren_name', '姓名'), TextField::create('fuzeren_shenfenzheng', '身份证号码'), TextField::create('fuzeren_phone', '联系电话'), TextField::create('fuzeren_email', 'EMAIL'), TextField::create('fuzeren_xueli', '学历'), TextField::create('fuzeren_xuewei', '学位'), TextField::create('fuzeren_zhiwu', '专业技术职务'), TextField::create('fuzeren_zhuanye', '专业'), TextField::create('fuzeren_fengong', '在本项目中的分工'), TextField::create('fuzeren_danwei', '工作单位'), LiteralField::create('TeamMembersHeader', '<h3>项目组成员</h3>'), $teamMembersField)); $fields->addFieldsToTab('Root.Basis', array(LiteralField::create('Basis', '四、本项目的立题依据:包括目的、意义、国内外概况和发展趋势,现有工作基础和条件(包括研究工作基础、装备条件和技术力量及项目负责人技术工作简历)'), TextareaField::create('litiyiju', '')->setRows(30))); $fields->addFieldsToTab('Root.Expectation', array(LiteralField::create('Expectation', '五、研究、开发内容和预期成果:具体研究、开发内容和重点解决的技术关键问题,要达到的主要技术、经济指标及经济社会环境效益,拟采取的研究方法和技术路线或工艺流程(可用框图表示)'), TextareaField::create('neirongheyuqichengguo', '')->setRows(30), UploadField::create('Diagram', '框图'))); $fields->addFieldToTab('Root.Schedules', $scheduleField); $fields->addFieldsToTab('Root.Resource', array(TextareaField::create('shichangziyuan', '七、市场资源')->setRows(8))); $fields->addFieldsToTab('Root.Budget', array(TextareaField::create('shenqingjingfei', '八、项目申请经费:(计算根据及理由)')->setRows(8))); $fields->findOrMakeTab('Root.Main')->setTitle('一、基本情况'); $fields->findOrMakeTab('Root.Units')->setTitle('二、承担单位'); $fields->findOrMakeTab('Root.TeamMembers')->setTitle('三、项目组成员'); $fields->findOrMakeTab('Root.Basis')->setTitle('四、立题依据'); $fields->findOrMakeTab('Root.Expectation')->setTitle('五、内容成果'); $fields->findOrMakeTab('Root.Schedules')->setTitle('六、计划进度'); $fields->findOrMakeTab('Root.Resource')->setTitle('七、市场资源'); $fields->findOrMakeTab('Root.Budget')->setTitle('八、申请经费'); } //For testing if (Permission::check('ADMIN')) { $fields->addFieldToTab('Root.Test', DropdownField::create('Status', 'Status', self::singleton()->dbObject('Status')->enumValues())); $fields->addFieldToTab('Root.Test', DropdownField::create('MemberID', 'Member', Member::get()->map('ID', 'Title'))->setEmptyString('')); } return $fields; }
function MyForm() { $form = Form::create($this, "MyForm", new FieldList(TextField::create("FirstName")->setTitle('First name')->setAttribute("placeholder", "Min. 3 znaky")->setAttribute("data-validation-required-message", "nezabudnite vpísať vaše meno")->setAttribute("required", true), TextField::create("Surname")->setTitle('Last name')->setMaxLength(50)->setAttribute("required", true), EmailField::create("Email")->setTitle("Email address")->setAttribute("required", true)->setAttribute("data-validation-email-message", "nezabudnite napísať existujúci majl")->setAttribute('type', 'email'), DropdownField::create("Cisla")->setTitle("Čísla")->setSource(array("jedna", "dva", "tri"))->addExtraClass("expand")->setEmptyString("musíš vybrať jedno numero"), CheckboxField::create("Donkey")->setTitle("Si donkey?"), CheckboxField::create("Donkey2")->setTitle("Si veľmi dlhý a vráskavý donkey s malými ušami?"), ReadonlyField::create("ReadOnly")->setTitle("Toto nezmeníte.... readonly")->setValue("nemeniteľné"), TextareaField::create("Text")->setTitle("Poznámka"), DateField::create("Dátum")->setConfig("showcalendar", true)->setConfig("jQueryUI.firstDay", 1)->setConfig("jQueryUI.dayNamesMin", array("Ne", "Po", "Ut", "St", "Št", "Pi", "So"))->setLocale('sk_SK'), DatetimeField::create('DátumČas', 'Dátum a čas')->setConfig('datavalueformat', 'yyyy-MM-dd HH:mm')->setConfig('showcalendar', 1), GroupedDropdownField::create("grouped")->setTitle("Zoskupený dropdown")->setSource(array("numbers" => array("1", "2", "3"), "letters" => array("a", "b", "c"))), OptionsetField::create("options")->setTitle("Čísla 2")->setSource(array("jedna", "dva", "tri")), HeaderField::create("header", "Toto je nadpis")->setTitle("overwritten nadpissss"), LiteralField::create("dataless", "html here")->setTitle("dataless")->setContent("<p>Or overwritten here</p><ul><li>item 1</li><li>item 2</li></ul>"), FileField::create("Nahraj")), new FieldList(FormAction::create("doMyForm")->setTitle("Odoslať")->addExtraClass("button radius"), ResetFormAction::create("resetMyForm", "Reset")->addExtraClass("button secondary small radius")), new RequiredFields("Email", "FirstName", "Text"))->setAttribute("novalidate", "novalidate")->addExtraClass("custom horizontal"); return $form; }
private function Fields() { return FieldList::create(TextField::create('Title'), TextField::create('Subtitle'), CheckboxField::create("IsTrue"), CheckboxSetField::create('CheckboxSet', 'Options', array('Opt1' => 'Opt1', 'Opt2' => 'Opt2', 'Opt3' => 'Opt3', 'Opt4' => 'Opt4', 'Opt5' => 'Opt5')), DropdownField::create('DDP', 'Choose an item', array('ITEM1' => 'Item 1', 'ITEM2' => 'Item 2', 'ITEM3' => 'Item 3', 'ITEM4' => 'Item 4', 'ITEM5' => 'Item 5'))->setEmptyString('(Select one)'), GroupedDropdownField::create('DDP2', 'Choose an item', array('Group1' => array('ITEM1' => 'Item 1', 'ITEM2' => 'Item 2', 'ITEM3' => 'Item 3', 'ITEM4' => 'Item 4', 'ITEM5' => 'Item 5'), 'Group2' => array('ITEM6' => 'Item 6', 'ITEM7' => 'Item 7', 'ITEM8' => 'Item 8', 'ITEM9' => 'Item 9', 'ITEM0' => 'Item 0')))->setEmptyString('(Select one)'), ListboxField::create('lbf', 'Choose items', array('ITEM1' => 'Item 1', 'ITEM2' => 'Item 2', 'ITEM3' => 'Item 3', 'ITEM4' => 'Item 4', 'ITEM5' => 'Item 5'), 'ITEM3'), LookupField::create('lf', 'Look up field', array('ITEM1' => 'Item 1', 'ITEM2' => 'Item 2', 'ITEM3' => 'Item 3', 'ITEM4' => 'Item 4', 'ITEM5' => 'Item 5'), 'ITEM3')->setEmptyString('(Select one)'), NullableField::create(TextField::create("nf", "Field 1", "abc")), NullableField::create(CheckBoxField::create("nf2", "Field 1", "abc")), NumericField::create("nf3", "NumericField", 10), NumericField_Readonly::create('NFR1', 'NumericField_Readonly'), OptionsetField::create($name = "op", $title = "OptionsetField", $source = array("1" => "Option 1", "2" => "Option 2", "3" => "Option 3", "4" => "Option 4", "5" => "Option 5"), $value = "3"), ReadonlyField::create('rf1', 'read only field', 'value'), TextareaField::create($name = "description", $title = "Description", $value = "This is the default description"), DateField::create('datefield', 'Date Field')->setConfig('showcalendar', true), TimeField::create('timeField', 'Time Field', '12am')); }