1 <?php
2 3 4 5 6 7
8 class extends ComplexTableField_Popup {
9
10 public static $allowed_actions = array(
11 'filter', 'record', 'httpSubmission', 'handleAction', 'handleField'
12 );
13
14 function __construct($controller, $name, $fields, $validator, $readonly, $dataObject) {
15 $this->dataObject = $dataObject;
16
17 Requirements::clear();
18
19 $actions = new FieldSet();
20 if(!$readonly) {
21 $actions->push(
22 $saveAction = new FormAction("saveComplexTableField", "Save")
23 );
24 $saveAction->addExtraClass('save');
25 }
26
27 $fields->push(new HiddenField("ComplexTableField_Path", Director::absoluteBaseURL()));
28
29 parent::__construct($controller, $name, $fields, $validator, $readonly, $dataObject);
30 }
31
32 33 34 35 36
37 public function handleAction($request) {
38 $action = str_replace("-","_",$request->param('Action'));
39 if(!$this->action) $this->action = 'index';
40
41 if($this->checkAccessAction($action)) {
42 if($this->hasMethod($action)) {
43 $result = $this->$action($request);
44
45
46 if(is_array($result)) {
47 return $this->getViewer($action)->process($this->customise($result));
48
49
50 } else {
51 return $result;
52 }
53
54
55 } else {
56 return $this->getViewer($action)->process($this);
57 }
58 } else {
59 return $this->httpError(403, "Action '$action' isn't allowed on class $this->class");
60 }
61 }
62
63 64 65 66 67 68
69 function filter($request) {
70
71 $context = $this->dataObject->getDefaultSearchContext();
72 $value = $request->getVar('q');
73 $results = $context->getResults(array("Name"=>$value));
74 header("Content-Type: text/plain");
75 foreach($results as $result) {
76 echo $result->Name . "\n";
77 }
78 }
79
80 81 82
83 function record($request) {
84 $type = $request->getVar('type');
85 $value = $request->getVar('value');
86 if ($type && $value) {
87 $record = DataObject::get_one($this->dataObject->class, "\"$type\" = '$value'");
88 header("Content-Type: text/plain");
89 echo json_encode(array("record"=>$record->toMap()));
90 }
91 }
92
93 }
94 ?>
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the
Silverstripe Forums to ask development related questions.
-