/**
  * Return a TableListField for viewing the related
  * BrokenLink records through the one-to-many relation.
  *
  * @return TableListField
  */
 public function brokenLinksTable()
 {
     // Get a singleton instance of BrokenLink
     $SNG_brokenLink = singleton('BrokenLink');
     // Set up the TableListField, for viewing BrokenLink
     // records that have the current LinkCheckRun ID
     $table = new TableListField('BrokenLinks', 'BrokenLink', $SNG_brokenLink->tableOverviewFields(), "\"LinkCheckRunID\" = {$this->ID}");
     $table->setFieldFormatting(array('PageTitle' => '<a href=\\"admin/show/$PageID\\">$PageTitle</a>', 'Link' => '<a href=\\"$Link\\">$Link</a>'));
     // Set permissions (we don't want to allow adding)
     $table->setPermissions(array('export'));
     $table->setPageSize(20);
     $table->setShowPagination(true);
     return $table;
 }
Exemple #2
0
	/**
	 * Return a field, such as a {@link ComplexTableField} that is
	 * used to show and manipulate data relating to this report.
	 * 
	 * Generally, you should override {@link columns()} and {@link records()} to make your report,
	 * but if they aren't sufficiently flexible, then you can override this method.
	 *
	 * @return FormField subclass
	 */
	function getReportField() {
		$columnTitles = array();
		$fieldFormatting = array();
		$csvFieldFormatting = array();
		$fieldCasting = array();
		
		// Parse the column information
		foreach($this->columns() as $source => $info) {
			if(is_string($info)) $info = array('title' => $info);
			
			if(isset($info['formatting'])) $fieldFormatting[$source] = $info['formatting'];
			if(isset($info['csvFormatting'])) $csvFieldFormatting[$source] = $info['csvFormatting'];
			if(isset($info['casting'])) $fieldCasting[$source] = $info['casting'];
			$columnTitles[$source] = isset($info['title']) ? $info['title'] : $source;
		}
		
		// To do: implement pagination
		$query = $this->sourceQuery($_REQUEST);
			
		$tlf = new TableListField('ReportContent', $this->dataClass(), $columnTitles);
		$tlf->setCustomQuery($query);
		$tlf->setShowPagination(true);
		$tlf->setPageSize(50);
		$tlf->setPermissions(array('export', 'print'));
		
		// Hack to figure out if we are printing
		if (isset($_REQUEST['url']) && array_pop(explode('/', $_REQUEST['url'])) == 'printall') {
			$tlf->setTemplate('SSReportTableField');
		}
		
		if($fieldFormatting) $tlf->setFieldFormatting($fieldFormatting);
		if($csvFieldFormatting) $tlf->setCSVFieldFormatting($csvFieldFormatting);
		if($fieldCasting) $tlf->setFieldCasting($fieldCasting);

		return $tlf;
	}
 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;
 }