-
Notifications
You must be signed in to change notification settings - Fork 821
/
TreeSelectorField.php
executable file
·81 lines (65 loc) · 2.03 KB
/
TreeSelectorField.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
/**
* @deprecated Use {@link TreeDropdownField} or {@link TreeMultiselectField}
* @package forms
* @subpackage fields-relational
*/
class TreeSelectorField extends FormField {
protected $sourceObject;
function __construct($name, $title, $sourceObject = "Group") {
$this->sourceObject = $sourceObject;
parent::__construct($name, $title);
}
function Field() {
Requirements::add_i18n_javascript(SAPPHIRE_DIR . '/javascript/lang');
Requirements::javascript(SAPPHIRE_DIR . "/javascript/TreeSelectorField.js");
$fieldName = $this->name;
if($this->form) {
$record = $this->form->getRecord();
if($record && $record->hasMethod($fieldName)) $items = $record->$fieldName();
}
if($items) {
foreach($items as $item) {
$titleArray[] =$item->Title;
$idArray[] = $item->ID;
}
if($titleArray) {
$itemList = implode(", ", $titleArray);
$value = implode(",", $idArray);
}
}
$id = $this->id();
return <<<HTML
<div class="TreeSelectorField">
<input type="hidden" name="$this->name" value="$value" />
<input type="button" class="edit" value="edit" />
<span class="items">$itemList</span>
</div>
HTML;
}
/**
* Save the results into the form
*/
function saveInto(DataObject $record) {
$fieldName = $this->name;
$saveDest = $record->$fieldName();
if($this->value) {
$items = split(" *, *", trim($this->value));
}
$saveDest->setByIDList($items);
}
/**
* Return the site tree
*/
function gettree() {
echo "<div class=\"actions\">
<input type=\"button\" name=\"save\" value=\""._t('TreeSelectorField.SAVE', 'save')."\" />
<input type=\"button\" name=\"cancel\" value=\""._t('TreeSelectorField.CANCEL', 'cancel')."\" />
</div>";
$obj = singleton($this->sourceObject);
$obj->markPartialTree(10);
$eval = '"<li id=\"selector-' . $this->name . '-$child->ID\" class=\"$child->class closed" . ($child->isExpanded() ? "" : " unexpanded") . "\"><a>" . $child->Title . "</a>"';
echo $obj->getChildrenAsUL("class=\"tree\"", $eval, null, true);
}
}
?>