示例#1
0
 /**
  * @param array $properties
  * @return HTMLText
  */
 public function Field($properties = array())
 {
     if ($this->includeDefaultJS) {
         Requirements::javascriptTemplate(FRAMEWORK_DIR . '/javascript/InlineFormAction.js', array('ID' => $this->id()));
     }
     return DBField::create_field('HTMLText', FormField::create('input', array('name' => sprintf('action_%s', $this->getName()), 'value' => $this->title, 'id' => $this->ID(), 'class' => sprintf('action%s', $this->extraClass))));
 }
示例#2
0
 public function testErrors()
 {
     $form = Form::create()->add(Primitive::ternary('flag')->setFalseValue('0')->setTrueValue('1'))->add(Primitive::integer('old')->required())->addRule('someRule', Expression::between(FormField::create('old'), '18', '35'));
     //empty import
     $form->import(array())->checkRules();
     //checking
     $expectingErrors = array('old' => Form::MISSING, 'someRule' => Form::WRONG);
     $this->assertEquals($expectingErrors, $form->getErrors());
     $this->assertEquals(Form::MISSING, $form->getError('old'));
     $this->assertEquals(Form::WRONG, $form->getError('someRule'));
     $this->assertTrue($form->hasError('old'));
     $this->assertFalse($form->hasError('flag'));
     //drop errors
     $form->dropAllErrors();
     $this->assertEquals(array(), $form->getErrors());
     //import wrong data
     $form->clean()->importMore(array('flag' => '3', 'old' => '17'))->checkRules();
     //checking
     $expectingErrors = array('flag' => Form::WRONG, 'someRule' => Form::WRONG);
     $this->assertEquals($expectingErrors, $form->getErrors());
     $this->assertTrue($form->hasError('someRule'));
     //marking good and custom check errors
     $form->markGood('someRule')->markCustom('flag', 3);
     $this->assertEquals(array('flag' => 3), $form->getErrors());
     $this->assertFalse($form->hasError('someRule'));
     $this->assertNull($form->getError('someRule'));
     $this->assertEquals(3, $form->getError('flag'));
     //import right data
     $form->dropAllErrors()->clean()->importMore(array('flag' => '1', 'old' => '35'));
     //checking
     $this->assertEquals(array(), $form->getErrors());
 }
 /**
  * Used for storing the quantity update link for ajax use.
  */
 public function AJAXLinkHiddenField()
 {
     if ($quantitylink = $this->item->setquantityLink()) {
         $attributes = array('type' => 'hidden', 'class' => 'ajaxQuantityField_qtylink', 'name' => $this->MainID() . '_Quantity_SetQuantityLink', 'value' => $quantitylink);
         $formfield = FormField::create('hack');
         return $formfield->createTag('input', $attributes);
     }
 }
示例#4
0
 /**
  * @return FieldList
  */
 public function getCMSFields()
 {
     //include JS to handling showing and hiding of bottom "action" tabs
     Requirements::javascript(DMS_DIR . '/javascript/DMSDocumentCMSFields.js');
     Requirements::css(DMS_DIR . '/css/DMSDocumentCMSFields.css');
     $fields = new FieldList();
     //don't use the automatic scaffolding, it is slow and unnecessary here
     $extraTasks = '';
     //additional text to inject into the list of tasks at the bottom of a DMSDocument CMSfield
     $extraFields = FormField::create('Empty');
     //get list of shortcode page relations
     $relationFinder = new ShortCodeRelationFinder();
     $relationList = $relationFinder->getList($this->ID);
     $fieldsTop = $this->getFieldsForFile($relationList->count());
     $fields->add($fieldsTop);
     $fields->add(new TextField('Title', 'Title'));
     $fields->add(new TextareaField('Description', 'Description'));
     $fields->add(new UploadField('CustomIcon', 'Icon'));
     //create upload field to replace document
     $uploadField = new DMSUploadField('ReplaceFile', 'Replace file');
     $uploadField->setConfig('allowedMaxFileNumber', 1);
     $uploadField->setConfig('downloadTemplateName', 'ss-dmsuploadfield-downloadtemplate');
     $uploadField->setRecord($this);
     $gridFieldConfig = GridFieldConfig::create()->addComponents(new GridFieldToolbarHeader(), new GridFieldSortableHeader(), new GridFieldDataColumns(), new GridFieldPaginator(30), new GridFieldDetailForm());
     $gridFieldConfig->getComponentByType('GridFieldDataColumns')->setDisplayFields(array('Title' => 'Title', 'ClassName' => 'Page Type', 'ID' => 'Page ID'))->setFieldFormatting(array('Title' => sprintf('<a class=\\"cms-panel-link\\" href=\\"%s/$ID\\">$Title</a>', singleton('CMSPageEditController')->Link('show'))));
     $pagesGrid = GridField::create('Pages', _t('DMSDocument.RelatedPages', 'Related Pages'), $this->Pages(), $gridFieldConfig);
     $referencesGrid = GridField::create('References', _t('DMSDocument.RelatedReferences', 'Related References'), $relationList, $gridFieldConfig);
     if (DMSDocument_versions::$enable_versions) {
         $versionsGridFieldConfig = GridFieldConfig::create()->addComponents(new GridFieldToolbarHeader(), new GridFieldSortableHeader(), new GridFieldDataColumns(), new GridFieldPaginator(30));
         $versionsGridFieldConfig->getComponentByType('GridFieldDataColumns')->setDisplayFields(Config::inst()->get('DMSDocument_versions', 'display_fields'))->setFieldCasting(array('LastChanged' => "Datetime->Ago"))->setFieldFormatting(array('FilenameWithoutID' => '<a target=\'_blank\' class=\'file-url\' href=\'$Link\'>$FilenameWithoutID</a>'));
         $versionsGrid = GridField::create('Versions', _t('DMSDocument.Versions', 'Versions'), $this->getVersions(), $versionsGridFieldConfig);
         $extraTasks .= '<li class="ss-ui-button" data-panel="find-versions">Versions</li>';
         //$extraFields = $versionsGrid->addExtraClass('find-versions');
     }
     $fields->add(new LiteralField('BottomTaskSelection', '<div id="Actions" class="field actions"><label class="left">Actions</label><ul>' . '<li class="ss-ui-button" data-panel="embargo">Embargo</li>' . '<li class="ss-ui-button" data-panel="expiry">Expiry</li>' . '<li class="ss-ui-button" data-panel="replace">Replace</li>' . '<li class="ss-ui-button" data-panel="find-usage">Usage</li>' . '<li class="ss-ui-button" data-panel="find-references">References</li>' . $extraTasks . '</ul></div>'));
     $embargoValue = 'None';
     if ($this->EmbargoedIndefinitely) {
         $embargoValue = 'Indefinitely';
     } elseif ($this->EmbargoedUntilPublished) {
         $embargoValue = 'Published';
     } elseif (!empty($this->EmbargoedUntilDate)) {
         $embargoValue = 'Date';
     }
     $embargo = new OptionsetField('Embargo', 'Embargo', array('None' => 'None', 'Published' => 'Hide document until page is published', 'Indefinitely' => 'Hide document indefinitely', 'Date' => 'Hide until set date'), $embargoValue);
     $embargoDatetime = DatetimeField::create('EmbargoedUntilDate', '');
     $embargoDatetime->getDateField()->setConfig('showcalendar', true)->setConfig('dateformat', 'dd-MM-yyyy')->setConfig('datavalueformat', 'dd-MM-yyyy');
     $expiryValue = 'None';
     if (!empty($this->ExpireAtDate)) {
         $expiryValue = 'Date';
     }
     $expiry = new OptionsetField('Expiry', 'Expiry', array('None' => 'None', 'Date' => 'Set document to expire on'), $expiryValue);
     $expiryDatetime = DatetimeField::create('ExpireAtDate', '');
     $expiryDatetime->getDateField()->setConfig('showcalendar', true)->setConfig('dateformat', 'dd-MM-yyyy')->setConfig('datavalueformat', 'dd-MM-yyyy');
     // This adds all the actions details into a group.
     // Embargo, History, etc to go in here
     // These are toggled on and off via the Actions Buttons above
     // exit('hit');
     $actionsPanel = FieldGroup::create(FieldGroup::create($embargo, $embargoDatetime)->addExtraClass('embargo'), FieldGroup::create($expiry, $expiryDatetime)->addExtraClass('expiry'), FieldGroup::create($uploadField)->addExtraClass('replace'), FieldGroup::create($pagesGrid)->addExtraClass('find-usage'), FieldGroup::create($referencesGrid)->addExtraClass('find-references'), FieldGroup::create($versionsGrid)->addExtraClass('find-versions'));
     $actionsPanel->setName("ActionsPanel");
     $actionsPanel->addExtraClass("ActionsPanel");
     $fields->push($actionsPanel);
     // $fields->add(FieldGroup::create(
     // 		FieldGroup::create(
     // 			$embargo,
     // 			$embargoDatetime
     // 		)->addExtraClass('embargo'),
     // 		FieldGroup::create(
     // 			$expiry,
     // 			$expiryDatetime
     // 		)->addExtraClass('expiry'),
     // 		$uploadField->addExtraClass('replace'),
     // 		$pagesGrid->addExtraClass('find-usage'),
     // 		$referencesGrid->addExtraClass('find-references'),
     // 		$extraFields
     // )->setName("ActionsPanel")->addExtraClass('dmsupload ss-uploadfield'));
     $this->extend('updateCMSFields', $fields);
     return $fields;
 }