Issues (88)

src/admin/ContactAdmin.php (6 issues)

1
<?php
2
3
namespace SilverCommerce\ContactAdmin\Admin;
4
5
use SilverStripe\Dev\CsvBulkLoader;
6
use Colymba\BulkManager\BulkManager;
7
use SilverCommerce\ContactAdmin\Model\Contact;
8
use SilverCommerce\ContactAdmin\Model\ContactTag;
9
use SilverCommerce\ContactAdmin\Model\ContactList;
10
use SilverCommerce\ContactAdmin\BulkActions\AddTagsHandler;
11
use SilverCommerce\ContactAdmin\BulkActions\AddToListHandler;
12
use ilateral\SilverStripe\ModelAdminPlus\ModelAdminPlus;
13
use SilverCommerce\CatalogueAdmin\Forms\GridField\ContactDetailForm_ItemRequest;
14
use SilverCommerce\ContactAdmin\Import\ContactCSVBulkLoader;
15
use SilverStripe\Forms\GridField\GridFieldDetailForm;
16
17
/**
18
 * Management interface for contacts
19
 *
20
 * @author  ilateral
21
 * @package Contacts
22
 */
23
class ContactAdmin extends ModelAdminPlus
24
{
25
    private static $menu_priority = 0;
0 ignored issues
show
The private property $menu_priority is not used, and could be removed.
Loading history...
26
27
    private static $managed_models = [
0 ignored issues
show
The private property $managed_models is not used, and could be removed.
Loading history...
28
        Contact::class,
29
        ContactTag::class,
30
        ContactList::class
31
    ];
32
33
    private static $url_segment = 'contacts';
0 ignored issues
show
The private property $url_segment is not used, and could be removed.
Loading history...
34
35
    private static $menu_title = 'Contacts';
0 ignored issues
show
The private property $menu_title is not used, and could be removed.
Loading history...
36
37
    private static $model_importers = [
0 ignored issues
show
The private property $model_importers is not used, and could be removed.
Loading history...
38
        Contact::class => ContactCSVBulkLoader::class,
39
        ContactTag::class => CSVBulkLoader::class,
40
        ContactList::class => CSVBulkLoader::class
41
    ];
42
43
    private static $allowed_actions = [
44
        "SearchForm"
45
    ];
46
47
    public $showImportForm = [
48
        Contact::class,
49
        ContactTag::class,
50
        ContactList::class
51
    ];
52
53
    /**
54
     * @var string
55
     */
56
    private static $menu_icon_class = 'font-icon-torso';
0 ignored issues
show
The private property $menu_icon_class is not used, and could be removed.
Loading history...
57
58
    /**
59
     * Listen for customised export fields on the currently managed object
60
     *
61
     * @return array
62
     */
63
    public function getExportFields()
64
    {
65
        $model = singleton($this->modelClass);
66
        if ($model->hasMethod('getExportFields')) {
67
            return $model->getExportFields();
68
        }
69
70
        return parent::getExportFields();
71
    }
72
73
    public function getEditForm($id = null, $fields = null)
74
    {
75
        $form = parent::getEditForm($id, $fields);
76
        $class = $this->sanitiseClassName($this->modelClass);
77
        $gridField = $form->Fields()->fieldByName($class);
78
        /** @var \SilverStripe\Forms\GridField\GridFieldConfig */
79
        $config = $gridField->getConfig();
80
81
        // Add bulk editing to gridfield
82
        $manager = $config->getComponentByType(BulkManager::class);
83
84
        if ($this->modelClass == Contact::class) {
85
            $manager->addBulkAction(AddTagsHandler::class);
86
            $manager->addBulkAction(AddToListHandler::class);
87
88
            $config
89
                ->getComponentByType(GridFieldDetailForm::class)
90
                ->setItemRequestClass(ContactDetailForm_ItemRequest::class);
91
        }
92
93
        $this->extend("updateEditForm", $form);
94
95
        return $form;
96
    }
97
98
    public function getList()
99
    {
100
        // Get contacts via Search Context results
101
        if ($this->modelClass == Contact::class) {
102
            /** @var Contact */
103
            $context = singleton(Contact::class)->getDefaultSearchContext();
104
            return $context->getResults([]);
105
        }
106
107
        $list = parent::getList();
108
109
        $this->extend('updateContactAdminList', $list);
110
111
        return $list;
112
    }
113
}
114