public function getCMSFields() { $fields = parent::getCMSFields(); // Remove MCListSegment GridField Tab And Manually Manage $fields->removeByName("MCListSegments"); // Manually Manage Creation of MCListSegments Based on Selected MCLists if (empty($this->owner->ID)) { $lists = new DataList("MCList"); if ($lists->count() > 1) { $fields->addFieldToTab('Root.Main', new LiteralField('_AffectedMCListsTitle', '<h2>Affected MailChimp Lists</h2>')); $map = $lists->map("ID", "Name"); $listIDs = new CheckboxSetField('_AffectedMCListIDs', 'Which MailChimp List(s) Does This Event Relate To', $map); $listIDs->setDefaultItems(array_keys($map->toArray())); } else { if ($lists->count() == 1) { $listIDs = new HiddenField('_AffectedMCListIDs', 'Which MailChimp List(s) Does This Event Relate To', $lists->first()->ID); } else { $listIDs = new HiddenField('_AffectedMCListIDs', 'Which MailChimp List(s) Does This Event Relate To', 0); } } $fields->addFieldToTab('Root.Main', $listIDs); } // Configure Attendees Gridfield $gf = $fields->fieldByName('Root.Attendees.Attendees'); if (is_object($gf) && $gf->exists()) { $gf->setList($this->getMyManyManyComponents('Attendees')); $config = $gf->getConfig(); $config->removeComponentsByType('GridfieldAddNewButton'); } return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); // Validate The Fact That an Actual E-mail Has Been Used $fields->replaceField("Email", new EmailField("Email", "Email")); $fields->removeByName('DoubleOptIn'); $fields->removeByName('MCMemberID'); $fields->removeByName('MCListID'); $fields->removeByName('MemberID'); if (empty($this->ID)) { $fields->removeByName('Subscribed'); } if (empty($this->UnsubscribeReason)) { $fields->removeByName('UnsubscribeReason'); } $lists = new DataList("MCList"); $lists->sort("\"MCList\".\"Name\" ASC"); $map = $lists->map("ID", "Name"); $mcListID = new DropdownField('MCListID', 'MailChimp List', $map); // Calculate What Parent Object We Are Adding This Subscription record Under (A Specific MCList or A Member) $params = Director::get_current_page()->getURLParams(); $FormParentObject = end($params); // If Already Set Don't Allow It To Be Modified if (!empty($this->MCListID)) { $mcListID = $mcListID->performReadonlyTransformation(); } // If Already Set And Read Only Or If Unset But Adding Subscription Record Under Member Object Show The MCListID Filed if (!empty($this->MCListID) || $FormParentObject == "Members") { $fields->addFieldToTab('Root.Main', $mcListID); } $MCMemberID = new TextField('MCMemberID', 'MailChimp Member ID'); $MCMemberID = $MCMemberID->performReadonlyTransformation(); $MCEmailID = new TextField('MCEmailID', 'MailChimp Email ID'); $MCEmailID = $MCEmailID->performReadonlyTransformation(); $fields->addFieldToTab('Root.Main', $MCMemberID, 'FirstName'); $fields->addFieldToTab('Root.Main', $MCEmailID, 'FirstName'); return $fields; }
private function getListboxOptions($o) { $list = new DataList($o); return array('' => '') + $list->map()->toArray(); }
/** * Excluded products that can not be purchased * We all make a record of all the products that are in the current list * For efficiency sake, we do both these things at the same time. * IMPORTANT: Adjusts allProducts and returns it... * @todo: cache data per user .... * @return DataList */ protected function removeExcludedProductsAndSaveIncludedProducts() { if (is_array($this->canBePurchasedArray) && is_array($this->canNOTbePurchasedArray)) { //already done! } else { $this->canNOTbePurchasedArray = array(); $this->canBePurchasedArray = array(); if ($this->config()->get("actively_check_for_can_purchase")) { foreach ($this->allProducts as $buyable) { if (!$buyable->canPurchase()) { $this->canNOTbePurchasedArray[$buyable->ID] = $buyable->ID; } else { $this->canBePurchasedArray[$buyable->ID] = $buyable->ID; } } } else { if ($this->rawCount > 0) { $this->canBePurchasedArray = $this->allProducts->map("ID", "ID")->toArray(); } else { $this->canBePurchasedArray = array(); } } if (count($this->canNOTbePurchasedArray)) { $this->allProducts = $this->allProducts->Exclude(array("ID" => $this->canNOTbePurchasedArray)); } } return $this->allProducts; }