Passed
Push — master ( 6c2061...b6dc4c )
by Will
05:08
created

src/Admin/OrdersAdmin.php (6 issues)

1
<?php
2
3
namespace SilverShop\Admin;
4
5
use SilverShop\Forms\GridField\OrderGridFieldDetailForm_ItemRequest;
6
use SilverShop\Model\Order;
7
use SilverShop\Model\OrderStatusLog;
8
use SilverStripe\Admin\ModelAdmin;
9
use SilverStripe\Forms\GridField\GridFieldAddNewButton;
10
use SilverStripe\Forms\GridField\GridFieldDetailForm;
11
use SilverStripe\Forms\GridField\GridFieldSortableHeader;
12
use SilverStripe\ORM\DataObject;
13
14
/**
15
 * Order administration interface, based on ModelAdmin
16
 *
17
 * @package SilverShop\Admin
18
 */
19
class OrdersAdmin extends ModelAdmin
20
{
21
	private static $url_segment = 'orders';
0 ignored issues
show
The private property $url_segment is not used, and could be removed.
Loading history...
22
23
	private static $menu_title = 'Orders';
0 ignored issues
show
The private property $menu_title is not used, and could be removed.
Loading history...
24
25
	private static $menu_priority = 1;
0 ignored issues
show
The private property $menu_priority is not used, and could be removed.
Loading history...
26
27
	private static $menu_icon_class = 'silvershop-icon-cart';
0 ignored issues
show
The private property $menu_icon_class is not used, and could be removed.
Loading history...
28
29
	private static $managed_models = [
0 ignored issues
show
The private property $managed_models is not used, and could be removed.
Loading history...
30
		Order::class,
31
		OrderStatusLog::class
32
	];
33
34
	private static $model_importers = array();
0 ignored issues
show
The private property $model_importers is not used, and could be removed.
Loading history...
35
36
	/**
37
	 * Restrict list to non-hidden statuses
38
	 */
39
	public function getList()
40
	{
41
		if ($this->modelClass == Order::class) {
42
			$list = DataObject::singleton($this->modelClass)->get()
43
				->exclude('Status', Order::config()->hidden_status); //exclude hidden statuses;
44
45
			$this->extend('updateList', $list);
46
			return $list;
47
		} else {
48
			return parent::getList();
49
		}
50
	}
51
52
	/**
53
	 * Replace gridfield detail form to include print functionality
54
	 */
55
	function getEditForm($id = null, $fields = null)
56
	{
57
		$form = parent::getEditForm($id, $fields);
58
		if ($this->modelClass == $this->sanitiseClassName(Order::class)) {
59
			/** @var GridFieldConfig $config */
60
			$config = $form->Fields()->fieldByName($this->modelClass)->getConfig();
61
			$config->getComponentByType(GridFieldSortableHeader::class)->setFieldSorting(
62
				[
63
					'StatusI18N' => 'Status'
64
				]
65
			);
66
			$config
67
				->getComponentByType(GridFieldDetailForm::class)
68
				->setItemRequestClass(OrderGridFieldDetailForm_ItemRequest::class); //see below
69
		}
70
		if ($this->modelClass == $this->sanitiseClassName(OrderStatusLog::class)) {
71
			/** @var GridFieldConfig $config */
72
			$config = $form->Fields()->fieldByName($this->modelClass)->getConfig();
73
			// Remove add new button
74
			$config->removeComponentsByType($config->getComponentByType(GridFieldAddNewButton::class));
75
		}
76
77
		return $form;
78
	}
79
}
80