-
Notifications
You must be signed in to change notification settings - Fork 0
/
InputfieldPageListSelectBabel.php
81 lines (63 loc) · 2.47 KB
/
InputfieldPageListSelectBabel.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
/**
* A Custom Page List selector. For use with Babel only
*
*/
class InputfieldPageListSelectBabel extends InputfieldPageListSelect {
public function __construct() {
parent::__construct();
$this->init();
}
public function render() {
static $process = null;
if(is_null($process)) $process = $this->wire('modules')->get('ProcessPageList'); // prerequisite module
if(!strlen($this->parent_id)) {
return "<p class='error'>" . $this->_('Unable to render this field due to missing parent page in field settings.') . "</p>";
}
$openIds = $this->attr('open-ids') ? ", openPageIDs: '". $this->attr('open-ids') ."'.split('|')," : "";
$settings = "{ " .
"mode: 'select', " .
"rootPageID: {$this->parent_id}, " .
"selectShowPath: " . ($this->showPath ? "true" : "false") . ", " .
"selectAllowUnselect: " . ($this->required ? "false" : "true") . ", " .
"selectStartLabel: \"{$this->startLabel}\", " .
"selectShowPageHeader: true, " .
"selectSelectLabel: \"{$this->selectLabel}\", " .
"selectUnselectLabel: \"{$this->unselectLabel}\", " .
"moreLabel: \"{$this->moreLabel}\", " .
"selectCancelLabel: \"{$this->cancelLabel}\" " .
$openIds .
"}";
$out =
"\n<input type='text' " . $this->getAttributesString() . " />" .
"\n<script>$(document).ready(function() { " .
"config.ProcessBabelTranslate.translateSelectSettings = {$settings}; " .
"var t = $('#{$this->id}'); " .
"t.ProcessPageList(config.ProcessBabelTranslate.translateSelectSettings).hide()" .
"});</script>";
$id = $this->attr('value');
if (!$id) return $out;
$value = $this->pages->get("$id");
if ($value instanceof NullPage) return $out;
$actions = array();
$actions['edit'] = array(
'label' => __('Edit'),
'href' => $this->config->urls->admin . "page/edit/?id=$value",
'class' => 'PageListActionEdit'
);
$actions['view'] = array(
'label' => __('view'),
'href' => $value->url,
'class' => 'PageListActionView'
);
$actions['unlink'] = array(
'label' => __('Unlink'),
'href' => '#',
'class' => 'PageListActionUnlink'
);
$out .= "<ul class='PageListActions actions PageListActionsBabel'>";
foreach ($actions as $key => $action) $out .= '<li class="'. $action['class'] .'"><a href="'. $action["href"] .'">'. $action["label"] .'</a></li>';
$out .= "</ul>";
return $out;
}
}