public function __construct($name, $title = null, $value = null, $form = null)
 {
     // Create a callable function that returns an array of options for the DependentDropdownField.
     // When the value of the field it depends on changes, this function is called passing the
     // updated value as the first parameter ($val)
     $getanchors = function ($page_id) {
         // Copied from HtmlEditorField_Toolbar::getanchors()
         if (($page = Page::get()->byID($page_id)) && !empty($page)) {
             //			if (!$page->canView()) { /* ERROR? */ }
             // Similar to the regex found in HtmlEditorField.js / getAnchors method.
             if (preg_match_all("/\\s(name|id)=\"([^\"]+?)\"|\\s(name|id)='([^']+?)'/im", $page->Content, $matches)) {
                 //					var_dump(array_filter(array_merge($matches[2], $matches[4])));
                 $anchors = array_filter(array_merge($matches[2], $matches[4]));
                 return array_combine($anchors, $anchors);
             }
         }
     };
     // naming with underscores to prevent values from actually being saved somewhere
     $this->fieldCustomURL = new TextField("{$name}[CustomURL]", '', '', 300, $form);
     $this->fieldShortcode = new TextField("{$name}[Shortcode]", '', '', 300, $form);
     $this->fieldPageID = new TreeDropdownField("{$name}[PageID]", '', 'SiteTree', 'ID', 'MenuTitle');
     $this->fieldPageID->setForm($form);
     //		$this->fieldPageAnchor = new DropdownField("{$name}[PageAnchor]", 'Anchor:',array(), '', $form);
     // The DependentDropdownField, setting the source as the callable function
     // and setting the field it depends on to the appropriate field
     $this->fieldPageAnchor = DependentDropdownField::create("{$name}[PageAnchor]", 'Text-anchor:', $getanchors, $form)->setEmptyString('Page anchor: (none)')->setDepends($this->fieldPageID);
     $this->fieldFileID = new TreeDropdownField("{$name}[FileID]", '', 'File', 'ID', 'Name');
     $this->fieldFileID->addExtraClass('filetree');
     $this->fieldFileID->setForm($form);
     $this->fieldTitle = new TextField("{$name}[Title]", 'Title: ', '', 300, $form);
     $this->fieldLinkmode = new DropdownField("{$name}[Linkmode]", 'Type: ', array('Page' => 'Page', 'URL' => 'URL', 'File' => 'File', 'Email' => 'Email', 'Shortcode' => 'Shortcode'), '', $form);
     $this->fieldLinkmode->addExtraClass('LinkModePicker');
     parent::__construct($name, $title, $value, $form);
 }
Exemplo n.º 2
0
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $monthArray = array();
     for ($i = 1; $i <= 12; $i++) {
         $monthArray[$i] = date('F', mktime(0, 0, 0, $i));
     }
     $yearArray = array();
     $currentYear = date('Y');
     for ($i = 0; $i <= 10; $i++) {
         $yearArray[$currentYear + $i] = $currentYear + $i;
     }
     // callback function
     $memberDataSource = function ($keyword) {
         return Member::get()->where("FirstName like '%{$keyword}%' OR Surname like '%{$keyword}%'")->map('ID', 'Name')->toArray();
     };
     if ($this->ID) {
         // Format and hide the credit card number
         $creditCardMask = $this->maskCreditCardNumber();
         $fields->addFieldToTab('Root.Main', new ReadonlyField('CreditCardMask', 'Credit Card Number', $creditCardMask), 'CreditCardNumber');
         $fields->replaceField('CreditCardNumber', new HiddenField('CreditCardNumber', $this->CreditCardNumber));
         $fields->replaceField('CreditCardCVV', new PasswordField('CreditCardCVV', 'Credit Card CVV', $this->CreditCardCVV));
         $fields->replaceField('Country', new CountryDropdownField('Country'));
         $fields->replaceField('MemberID', new HiddenField('MemberID'));
         $fields->replaceField('ISCCID', new HiddenField('ISCCID'));
         $fields->replaceField('ExpiryMonth', new DropdownField('ExpiryMonth', 'Expiry Month', $monthArray, $this->ExpiryMonth));
         $fields->replaceField('ExpiryYear', new DropdownField('ExpiryYear', 'Expiry Year', $yearArray, $this->ExpiryYear));
     } else {
         $fields->addFieldToTab("Root.Main", new TextField('Keyword', 'Enter a keyword to search a member'), 'MemberID');
         $keyword = $fields->dataFieldByName('Keyword');
         $memberId = DependentDropdownField::create('MemberID', 'Member', $memberDataSource)->setDepends($keyword)->setEmptyString('(Select a member)');
         $fields->replaceField('MemberID', $memberId);
         $fields->removeByName('ISCCID');
         $fields->replaceField('CreditCardCVV', new PasswordField('CreditCardCVV', 'Credit Card CVV'));
         $fields->replaceField('ExpiryMonth', new DropdownField('ExpiryMonth', 'Expiry Month', $monthArray));
         $fields->replaceField('ExpiryYear', new DropdownField('ExpiryYear', 'Expiry Year', $yearArray));
         $fields->replaceField('Country', new CountryDropdownField('Country'));
     }
     return $fields;
 }
Exemplo n.º 3
0
 public function getCMSFields()
 {
     // callback function
     $dataSource = function ($memberId) {
         $member = Member::get()->byID($memberId);
         // Get the Page controller
         $Page_Ctrl = new Page_Controller();
         $subscription = $Page_Ctrl->getCurrentSubscription($memberId);
         if ($subscription) {
             switch ($subscription->ProductID) {
                 case 1:
                     $productArray = array(4);
                     break;
                 case 2:
                     $productArray = array(5);
                     break;
                 case 3:
                     $productArray = array(6);
                     break;
             }
         } else {
             $productArray = array(1, 2, 3, 7);
         }
         return Product::get()->filter(array('ID' => $productArray))->map('ID', 'Name')->toArray();
     };
     // callback function
     $memberDataSource = function ($keyword) {
         return Member::get()->where("FirstName like '%{$keyword}%' OR Surname like '%{$keyword}%'")->map('ID', 'Name')->toArray();
     };
     $fields = parent::getCMSFields();
     if ($this->ID) {
         $fields->replaceField('SubscriptionID', new ReadonlyField('SubscriptionID'));
         $fields->replaceField('StartDate', new ReadonlyField('StartDate'));
         $fields->replaceField('ExpireDate', new ReadonlyField('ExpireDate'));
         $fields->replaceField('Status', new ReadonlyField('Status'));
         $fields->replaceField('IsTrial', new ReadonlyField('IsTrial'));
         $fields->replaceField('SubscriptionCount', new ReadonlyField('SubscriptionCount'));
         $fields->replaceField('MemberID', new ReadonlyField('MemberID'));
         if (!$this->Status) {
             $fields->replaceField('ProductID', new ReadonlyField('ProductID'));
             $fields->replaceField('ReasonCancelled', new ReadonlyField('ReasonCancelled'));
         }
         $fields->replaceField('OrderID', new ReadonlyField('OrderID'));
     }
     if ($this->ID && $this->Status) {
         $products = $fields->dataFieldByName('ProductID');
         $products->setDisabledItems(array(4, 5, 6, 7, 10));
         $fields->replaceField('MemberID', new HiddenField('MemberID', $this->MemberID));
         $reasons = array("I didn't use the product as much as I anticipated" => "I didn't use the product as much as I anticipated", "The cost was too high" => "The cost was too high", "I had technical problems generating heatmaps" => "I had technical problems generating heatmaps", "I have changed jobs/careers" => "I have changed jobs/careers", "I had problems with customer service" => "I had problems with customer service", "I didn't find the heatmaps helpful" => "I didn't find the heatmaps helpful", "Other (you may contact us support@attentionwizard.com with additional feedback)" => "Other (you may contact us support@attentionwizard.com with additional feedback)");
         $fields->replaceField('ReasonCancelled', new CheckboxSetField('ReasonCancelled', 'Reason Cancelled', $reasons));
     }
     if (!$this->ID) {
         $fields->addFieldToTab("Root.Main", new TextField('Keyword', 'Enter a keyword to search a member'), 'MemberID');
         $keyword = $fields->dataFieldByName('Keyword');
         $memberId = DependentDropdownField::create('MemberID', 'Member', $memberDataSource)->setDepends($keyword)->setEmptyString('(Select a member)');
         $fields->replaceField('MemberID', $memberId);
         $members = $fields->dataFieldByName('MemberID');
         $products = DependentDropdownField::create('ProductID', 'Product', $dataSource)->setDepends($members)->setEmptyString('(Select a product)');
         $fields->replaceField('ProductID', $products);
         $fields->removeByName('Status');
         $fields->removeByName('SubscriptionID');
         $fields->removeByName('StartDate');
         $fields->removeByName('ExpireDate');
         $fields->removeByName('IsTrial');
         $fields->removeByName('SubscriptionCount');
         $fields->removeByName('ReasonCancelled');
         $fields->removeByName('OrderID');
         $fields->addFieldToTab("Root.Main", new TextField('Quantity', 'Quantity(Required if Prepaid)'));
     }
     return $fields;
 }