public function getCMSFields()
 {
     $summit_id = isset($_REQUEST['SummitID']) ? $_REQUEST['SummitID'] : Summit::ActiveSummitID();
     Requirements::javascript('summit/javascript/SummitPushNotification.js');
     $f = new FieldList($rootTab = new TabSet("Root", $tabMain = new Tab('Main')));
     $f->addFieldToTab('Root.Main', $txt = new TextareaField('Message', 'Message'));
     $txt->setAttribute('required', 'true');
     $f->addFieldToTab('Root.Main', $ddl_channel = new DropdownField('Channel', 'Channel', singleton('SummitPushNotification')->dbObject('Channel')->enumValues()));
     $f->addFieldToTab('Root.Main', $ddl_events = new DropdownField('EventID', 'Event', SummitEvent::get()->filter(['Published' => 1, 'SummitID' => $summit_id])->sort('Title', 'ASC')->Map('ID', 'FormattedTitle')));
     $f->addFieldToTab('Root.Main', $ddl_groups = new DropdownField('GroupID', 'Group', Group::get()->sort('Title', 'ASC')->Map('ID', 'Title')));
     $f->addFieldToTab('Root.Main', new HiddenField('SummitID', 'SummitID'));
     $ddl_channel->setEmptyString('--SELECT A CHANNEL--');
     $ddl_channel->setAttribute('required', 'true');
     $ddl_events->setEmptyString('--SELECT AN EVENT--');
     $ddl_events->addExtraClass('hidden');
     $ddl_groups->setEmptyString('--SELECT A GROUP--');
     $ddl_groups->addExtraClass('hidden');
     $config = GridFieldConfig_RelationEditor::create(50);
     $config->removeComponentsByType('GridFieldAddExistingAutocompleter');
     $config->removeComponentsByType('GridFieldAddNewButton');
     $config->addComponent($auto_completer = new CustomGridFieldAddExistingAutocompleter('buttons-before-right'));
     $auto_completer->setResultsFormat('$Title ($Email)');
     $recipients = new GridField('Recipients', 'Member Recipients', $this->Recipients(), $config);
     $f->addFieldToTab('Root.Main', $recipients);
     return $f;
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $survey_id = isset($_REQUEST['survey_template_id']) ? intval($_REQUEST['survey_template_id']) : $this->TargetSurveyID;
     $current_template = SurveyTemplate::get()->byID($survey_id);
     $templates = SurveyTemplate::get()->exclude('ID', $survey_id);
     $allowed_templates = array();
     foreach ($templates as $template) {
         if ($template->ClassName !== $current_template->ClassName) {
             continue;
         }
         $text = $template->Title;
         if ($template instanceof EntitySurveyTemplate) {
             $text = $template->Parent()->Title . ' - ' . $text;
         }
         $allowed_templates[$template->ID] = $text;
     }
     $fields->addFieldToTab('Root.Main', $ddl_template = new DropdownField('OriginSurveyID', 'Origin Survey', $allowed_templates));
     $ddl_template->setEmptyString('-- select a survey template --');
     $fields->addFieldToTab('Root.Main', $ddl_fields = new DropdownField('OriginFieldID', 'Origin Field'));
     if (intval($this->OriginFieldID) > 0) {
         $ddl_fields->setAttribute('data-value', $this->OriginFieldID);
     }
     return $fields;
 }
 /**
  * Returns a drop-down field configured from an api.listPackages call.
  *
  * NB commented code is for if they (checkfront) get events and items returning at same
  * time for packages via API at the moment can be one or the other depedning on the package
  * 'parent' or 'group' type.
  *
  * @param CheckfrontAPIPackagesResponse $apiResponse
  * @param SS_HTTPRequest $request
  * @param string $name
  *
  * @return DropdownField
  */
 protected function makePackageSelectorField(CheckfrontAPIPackagesResponse $apiResponse, SS_HTTPRequest $request, $name = self::PackageIDFieldName)
 {
     $options = $this->getAvailablePackagesMap($apiResponse);
     $field = new DropdownField($name, $this->getFieldLabel($name), $options, $request->postVar($name));
     //  $field->addExtraClass(self::PackageSelector);
     $field->setAttribute('placeholder', $this->getFieldLabel($name, 'FieldEmptyString'));
     $field->setEmptyString($this->getFieldLabel($name, 'FieldEmptyString'));
     return $field;
 }
 /**
  * {@inheritdoc}
  */
 public function getColumnContent($gridField, $record, $columnName)
 {
     if ($columnName === 'MergeAction' && $record->{$this->childMethod}()->Count() > 0) {
         $dropdown = new DropdownField('Target', 'Target', $this->records->exclude('ID', $record->ID)->map());
         $dropdown->setAttribute('id', 'Target_' . $record->ID);
         $prefix = strtolower($this->parentMethod . '-' . $this->childMethod);
         $action = GridFieldFormAction::create($gridField, 'MergeAction' . $record->ID, 'Move', 'merge', array('record' => $record->ID, 'target' => $prefix . '-target-record-' . $record->ID));
         $action->setExtraAttributes(array('data-target' => $prefix . '-target-record-' . $record->ID));
         return $dropdown->Field() . $action->Field() . '<a title="Move posts to" class="MergeActionReveal">move posts to</a>';
     }
     return null;
 }
 public function getHTMLFragments($grid)
 {
     $classes = $this->getClasses($grid);
     if (!count($classes)) {
         return array();
     }
     GridFieldExtensions::include_requirements();
     $field = new DropdownField(sprintf('%s[ClassName]', __CLASS__), '', $classes, $this->defaultClass);
     $field->setAttribute('id', uniqid());
     if (Config::inst()->get('GridFieldAddNewMultiClass', 'showEmptyString')) {
         $field->setEmptyString(_t('GridFieldExtensions.SELECTTYPETOCREATE', '(Select type to create)'));
     }
     $field->addExtraClass('no-change-track');
     $data = new ArrayData(array('Title' => $this->getTitle(), 'Link' => Controller::join_links($grid->Link(), 'add-multi-class', '{class}'), 'ClassField' => $field));
     return array($this->getFragment() => $data->renderWith('GridFieldAddNewMultiClass'));
 }
 /**
  * Get the form used to create a new provider
  *
  * @return Form
  */
 public function AddForm()
 {
     $classes = ClassInfo::subclassesFor(self::$tree_class);
     array_shift($classes);
     foreach ($classes as $key => $class) {
         if (!singleton($class)->canCreate()) {
             unset($classes[$key]);
         }
         $classes[$key] = FormField::name_to_label($class);
     }
     $fields = new FieldList(new HiddenField("ParentID"), new HiddenField("Locale", 'Locale', i18n::get_locale()), $type = new DropdownField("ProviderType", "", $classes));
     $type->setAttribute('style', 'width:150px');
     $actions = new FieldList(FormAction::create("addprovider", _t('ExternalContent.CREATE', "Create"))->addExtraClass('ss-ui-action-constructive')->setAttribute('data-icon', 'accept')->setUseButtonTag(true));
     $form = new Form($this, "AddForm", $fields, $actions);
     $form->addExtraClass('cms-edit-form ' . $this->BaseCSSClasses());
     $this->extend('updateEditForm', $form);
     return $form;
 }
 /**
  * Create form fields to represent all of the properties on the {@link Omnipay\Common\CreditCard} object.
  * The form fields are split up into relevent sections to help with adding/removing fields as needed.
  *
  * @return FieldList
  */
 protected function getCreditCardFields()
 {
     $fields = new FieldList();
     $tabindex = 1;
     // Create personal detail fields
     $firstNameTextField = new TextField('FirstName', _t('OmnipayableForm.FIRSTNAME', 'First name'));
     $firstNameTextField->setAttribute('tabindex', $tabindex++);
     $lastNameTextField = new TextField('LastName', _t('OmnipayableForm.LASTNAME', 'Last name'));
     $lastNameTextField->setAttribute('tabindex', $tabindex++);
     $companyTextField = new TextField('Company', _t('OmnipayableForm.COMPANY', 'Company'));
     $companyTextField->setAttribute('tabindex', $tabindex++);
     $emailEmailField = new EmailField('Email', _t('OmnipayableForm.EMAIL', 'Email'));
     $emailEmailField->setAttribute('tabindex', $tabindex++);
     // Create personal details group
     $personalFieldGroup = new FieldGroup();
     $personalFieldGroup->setName('PersonalDetails');
     $personalFieldGroup->setTitle(_t('OmnipayableForm.PERSONALDETAILS', 'Personal Detials'));
     // Add basic fields to personal details group
     $personalFieldGroup->push($firstNameTextField);
     $personalFieldGroup->push($lastNameTextField);
     $personalFieldGroup->push($companyTextField);
     $personalFieldGroup->push($emailEmailField);
     // Add personal details group to fields
     $fields->push($personalFieldGroup);
     // Create credit card detail fields
     $numberCreditCardField = new CreditCardField('Number', _t('OmnipayableForm.NUMBER', 'Card number'));
     $numberCreditCardField->setAttribute('tabindex', $tabindex++);
     $cvvTextField = new TextField('Cvv', _t('OmnipayableForm.CVV', 'Security number'));
     $cvvTextField->setAttribute('tabindex', $tabindex += 3);
     $expiryMonthDropdownField = new DropdownField('ExpiryMonth', _t('OmnipayableForm.EXPIRYMONTH', 'Expiry month'), $this->getMonths());
     $expiryMonthDropdownField->setAttribute('tabindex', $tabindex++);
     $expiryMonthDropdownField->setHasEmptyDefault(true);
     $expiryYearDropdownField = new DropdownField('ExpiryYear', _t('OmnipayableForm.EXPIRYYEAR', 'Expiry year'), $this->getYears(20));
     $expiryYearDropdownField->setAttribute('tabindex', $tabindex++);
     $expiryYearDropdownField->setHasEmptyDefault(true);
     $startMonthDropdownField = new DropdownField('StartMonth', _t('OmnipayableForm.STARTMONTH', 'Start month'), $this->getMonths());
     $startMonthDropdownField->setAttribute('tabindex', $tabindex++);
     $startMonthDropdownField->setHasEmptyDefault(true);
     $startYearDropdownField = new DropdownField('StartYear', _t('OmnipayableForm.STARTYEAR', 'Start year'), $this->getYears(-20));
     $startYearDropdownField->setAttribute('tabindex', $tabindex++);
     $startYearDropdownField->setHasEmptyDefault(true);
     $issueNumberTextField = new TextField('IssueNumber', _t('OmnipayableForm.ISSUENUMBER', 'Issue number'));
     $issueNumberTextField->setAttribute('tabindex', $tabindex++);
     $typeDropdownField = new DropdownField('Type', _t('OmnipayableForm.TYPE', 'Card type'), $this->getCreditCardTypes());
     $typeDropdownField->setAttribute('tabindex', $tabindex++);
     $typeDropdownField->setHasEmptyDefault(true);
     $expiryDateFieldGroup = new FieldGroup();
     $expiryDateFieldGroup->push($expiryMonthDropdownField);
     $expiryDateFieldGroup->push($expiryYearDropdownField);
     $startDateFieldGroup = new FieldGroup();
     $startDateFieldGroup->push($startMonthDropdownField);
     $startDateFieldGroup->push($startYearDropdownField);
     // Create credit card details group
     $creditCardFieldGroup = new FieldGroup();
     $creditCardFieldGroup->setName('CardDetails');
     $creditCardFieldGroup->setTitle(_t('OmnipayableForm.CREDITCARDDETAILS', 'Card Detials'));
     // Add credit card fields to credit card details group
     $creditCardFieldGroup->push($numberCreditCardField);
     $creditCardFieldGroup->push($cvvTextField);
     $creditCardFieldGroup->push($expiryDateFieldGroup);
     $creditCardFieldGroup->push($startDateFieldGroup);
     $creditCardFieldGroup->push($issueNumberTextField);
     $creditCardFieldGroup->push($typeDropdownField);
     // Add credit card details group to fields
     $fields->push($creditCardFieldGroup);
     // Create billing address fields
     $billingAddress1TextField = new TextField('BillingAddress1', _t('OmnipayableForm.BILLINGADDRESS1', 'Address 1'));
     $billingAddress1TextField->setAttribute('tabindex', $tabindex++);
     $billingAddress2TextField = new TextField('BillingAddress2', _t('OmnipayableForm.BILLINGADDRESS2', 'Address 2'));
     $billingAddress2TextField->setAttribute('tabindex', $tabindex++);
     $billingCity = new TextField('BillingCity', _t('OmnipayableForm.BILLINGCITY', 'City'));
     $billingCity->setAttribute('tabindex', $tabindex++);
     $billingPostcode = new TextField('BillingPostcode', _t('OmnipayableForm.BILLINGPOSTCODE', 'Postcode'));
     $billingPostcode->setAttribute('tabindex', $tabindex++);
     $billingState = new TextField('BillingState', _t('OmnipayableForm.BILLINGSTATE', 'State'));
     $billingState->setAttribute('tabindex', $tabindex++);
     $billingCountry = new CountryDropdownField('BillingCountry', _t('OmnipayableForm.BILLINGCOUNTRY', 'Country'));
     $billingCountry->setAttribute('tabindex', $tabindex++);
     $billingPhone = new PhoneNumberField('BillingPhone', _t('OmnipayableForm.BILLINGPHONE', 'Phone'));
     $billingPhone->setAttribute('tabindex', $tabindex++);
     // Create billing details group
     $billingFieldGroup = new FieldGroup();
     $billingFieldGroup->setName('BillingAddress');
     $billingFieldGroup->setTitle(_t('OmnipayableForm.BILLING', 'Billing Address'));
     // Add billiing fields to billing group
     $billingFieldGroup->push($billingAddress1TextField);
     $billingFieldGroup->push($billingAddress2TextField);
     $billingFieldGroup->push($billingCity);
     $billingFieldGroup->push($billingPostcode);
     $billingFieldGroup->push($billingState);
     $billingFieldGroup->push($billingCountry);
     $billingFieldGroup->push($billingPhone);
     // Add billing details group to fields
     $fields->push($billingFieldGroup);
     // Create shipping address fields
     $shippingAddress1TextField = new TextField('ShippingAddress1', _t('OmnipayableForm.SHIPPINGADDRESS1', 'Address 1'));
     $shippingAddress1TextField->setAttribute('tabindex', $tabindex++);
     $shippingAddress2TextField = new TextField('ShippingAddress2', _t('OmnipayableForm.SHIPPINGADDRESS2', 'Address 2'));
     $shippingAddress2TextField->setAttribute('tabindex', $tabindex++);
     $shippingCity = new TextField('ShippingCity', _t('OmnipayableForm.SHIPPINGCITY', 'City'));
     $shippingCity->setAttribute('tabindex', $tabindex++);
     $shippingPostcode = new TextField('ShippingPostcode', _t('OmnipayableForm.SHIPPINGPOSTCODE', 'Postcode'));
     $shippingPostcode->setAttribute('tabindex', $tabindex++);
     $shippingState = new TextField('ShippingState', _t('OmnipayableForm.SHIPPINGSTATE', 'State'));
     $shippingState->setAttribute('tabindex', $tabindex++);
     $shippingCountry = new CountryDropdownField('ShippingCountry', _t('OmnipayableForm.SHIPPINGCOUNTRY', 'Country'));
     $shippingCountry->setAttribute('tabindex', $tabindex++);
     $shippingPhone = new PhoneNumberField('ShippingPhone', _t('OmnipayableForm.SHIPPINGPHONE', 'Phone'));
     $shippingPhone->setAttribute('tabindex', $tabindex++);
     // Create shipping details group
     $shippingFieldGroup = new FieldGroup();
     $shippingFieldGroup->setName('ShippingAddress');
     $shippingFieldGroup->setTitle(_t('OmnipayableForm.SHIPPING', 'Shipping Address'));
     // Add billiing fields to shipping group
     $shippingFieldGroup->push($shippingAddress1TextField);
     $shippingFieldGroup->push($shippingAddress2TextField);
     $shippingFieldGroup->push($shippingCity);
     $shippingFieldGroup->push($shippingPostcode);
     $shippingFieldGroup->push($shippingState);
     $shippingFieldGroup->push($shippingCountry);
     $shippingFieldGroup->push($shippingPhone);
     // Add shipping details group to fields
     $fields->push($shippingFieldGroup);
     return $fields;
 }
 public function ArchiveUnitDropdown()
 {
     $months = array();
     $months['1'] = _t('filterablearchive.JANUARY', 'Januari');
     $months['2'] = _t('filterablearchive.FEBRUARY', 'Februari');
     $months['3'] = _t('filterablearchive.MARCH', 'Maart');
     $months['4'] = _t('filterablearchive.APRIL', 'April');
     $months['5'] = _t('filterablearchive.MAY', 'Mei');
     $months['6'] = _t('filterablearchive.JUNE', 'Juni');
     $months['7'] = _t('filterablearchive.JULY', 'Juli');
     $months['8'] = _t('filterablearchive.AUGUST', 'Augustus');
     $months['9'] = _t('filterablearchive.SEPTEMBER', 'September');
     $months['10'] = _t('filterablearchive.OCTOBER', 'Oktober');
     $months['11'] = _t('filterablearchive.NOVEMBER', 'November');
     $months['12'] = _t('filterablearchive.DECEMBER', 'December');
     // build array with available archive 'units'
     $items = $this->owner->getItems();
     //$dateField = $this->owner->getFilterableArchiveConfigValue('managed_object_date_field');
     $dateField = Config::inst()->get($this->owner->className, 'managed_object_date_field');
     $itemArr = array();
     foreach ($items as $item) {
         if (!$item->{$dateField}) {
             continue;
         }
         $dateObj = DBField::create_field('Date', strtotime($item->{$dateField}));
         // add month if not yet in array;
         if ($this->owner->ArchiveUnit == 'day') {
             $arrkey = $dateObj->Format('Y/m/d/');
             $arrval = $dateObj->Format('d ') . $months[$dateObj->Format('n')] . $dateObj->Format(' Y');
         } elseif ($this->owner->ArchiveUnit == 'month') {
             $arrkey = $dateObj->Format('Y/m/');
             $arrval = $months[$dateObj->Format('n')] . $dateObj->Format(' Y');
         } else {
             $arrkey = $dateObj->Format('Y/');
             $arrval = $dateObj->Format('Y');
         }
         if (!array_key_exists($arrkey, $itemArr)) {
             $itemArr[$arrkey] = $arrval;
         }
     }
     $DrDown = new DropdownField('archiveunits', '', $itemArr);
     $DrDown->setEmptyString(_t('filterablearchive.FILTER', 'Filter items'));
     $DrDown->addExtraClass("dropdown form-control");
     // specific to the 'archive' action defined by FilterableArchiveHolder_ControllerExtension (if available)
     $ctrl = Controller::curr();
     $activeUnit = "";
     if ($ctrl::has_extension("FilterableArchiveHolder_ControllerExtension")) {
         if ($cYear = $ctrl->getArchiveYear()) {
             $activeUnit .= "{$cYear}/";
         }
         if ($cMonth = $ctrl->getArchiveMonth()) {
             $activeUnit .= str_pad("{$cMonth}/", 3, "0", STR_PAD_LEFT);
         }
         if ($cDay = $ctrl->getArchiveDay()) {
             $activeUnit .= str_pad("{$cDay}/", 3, "0", STR_PAD_LEFT);
         }
     }
     $DrDown->setValue($activeUnit);
     // again, tie this to the 'archive' action;
     $DrDown->setAttribute('onchange', "location = '{$this->owner->AbsoluteLink()}date/'+this.value;");
     return $DrDown;
 }