Пример #1
0
 function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->insertBefore(new LiteralField('Title', "<h2>Order #{$this->ID} - " . $this->dbObject('Created')->Nice() . " - " . $this->Member()->getName() . "</h2>"), 'Root');
     $fieldsAndTabsToBeRemoved = self::get_shipping_fields();
     $fieldsAndTabsToBeRemoved[] = 'Printed';
     $fieldsAndTabsToBeRemoved[] = 'MemberID';
     $fieldsAndTabsToBeRemoved[] = 'Attributes';
     $fieldsAndTabsToBeRemoved[] = 'SessionID';
     foreach ($fieldsAndTabsToBeRemoved as $field) {
         $fields->removeByName($field);
     }
     $htmlSummary = $this->renderWith("Order");
     $printlabel = !$this->Printed ? "Print Invoice" : "Print Invoice Again";
     //TODO: i18n
     $fields->addFieldsToTab('Root.Main', array(new LiteralField("PrintInvoice", '<p class="print"><a href="OrderReport_Popup/index/' . $this->ID . '?print=1" onclick="javascript: window.open(this.href, \'print_order\', \'toolbar=0,scrollbars=1,location=1,statusbar=0,menubar=0,resizable=1,width=800,height=600,left = 50,top = 50\'); return false;">' . $printlabel . '</a></p>')));
     $fields->addFieldToTab('Root.Main', new LiteralField('MainDetails', $htmlSummary));
     //TODO: re-introduce this when order status logs have some meaningful purpose
     $fields->removeByName('OrderStatusLogs');
     $orderItemsTable = new TableListField("OrderItems", "OrderItem", OrderItem::$summary_fields, "\"OrderID\" = " . $this->ID, "\"Created\" ASC", null);
     $orderItemsTable->setPermissions(array("view"));
     $orderItemsTable->setPageSize(10000);
     $orderItemsTable->addSummary("Total", array("Total" => array("sum", "Currency->Nice")));
     $fields->addFieldToTab('Root.Items', $orderItemsTable);
     $modifierTable = new TableListField("OrderModifiers", "OrderModifier", OrderModifier::$summary_fields, "\"OrderID\" = " . $this->ID . "", "\"Type\", \"Amount\" ASC, \"Created\" ASC", null);
     $modifierTable->setPermissions(array("view"));
     $modifierTable->setPageSize(10000);
     $fields->addFieldToTab('Root.Extras', $modifierTable);
     if ($m = $this->Member()) {
         $lastv = new TextField("MemberLastLogin", "Last login", $m->dbObject('LastVisited')->Nice());
         $fields->addFieldToTab('Root.Customer', $lastv->performReadonlyTransformation());
         //TODO: this should be scaffolded instead, or come from something like $member->getCMSFields();
         $fields->addFieldToTab('Root.Customer', new LiteralField("MemberSummary", $m->renderWith("Order_Member")));
     }
     $this->extend('updateCMSFields', $fields);
     return $fields;
 }