Exemplo n.º 1
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;
 }