1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace SilverStripe\CMS\Controllers; |
4
|
|
|
|
5
|
|
|
use SilverStripe\CMS\Model\SiteTree; |
6
|
|
|
use SilverStripe\Control\Controller; |
7
|
|
|
use SilverStripe\ORM\DataObject; |
8
|
|
|
use SilverStripe\View\ArrayData; |
9
|
|
|
use stdClass; |
10
|
|
|
|
11
|
|
|
class CMSPagesController extends CMSMain { |
12
|
|
|
|
13
|
|
|
private static $url_segment = 'pages'; |
|
|
|
|
14
|
|
|
|
15
|
|
|
private static $url_rule = '/$Action/$ID/$OtherID'; |
|
|
|
|
16
|
|
|
|
17
|
|
|
private static $url_priority = 40; |
|
|
|
|
18
|
|
|
|
19
|
|
|
private static $menu_title = 'Pages'; |
|
|
|
|
20
|
|
|
|
21
|
|
|
private static $required_permission_codes = 'CMS_ACCESS_CMSMain'; |
|
|
|
|
22
|
|
|
|
23
|
|
|
public function LinkPreview() { |
24
|
|
|
return false; |
|
|
|
|
25
|
|
|
} |
26
|
|
|
|
27
|
|
|
public function isCurrentPage(DataObject $record) { |
28
|
|
|
return false; |
29
|
|
|
} |
30
|
|
|
|
31
|
|
|
public function Breadcrumbs($unlinked = false) { |
32
|
|
|
$items = parent::Breadcrumbs($unlinked); |
33
|
|
|
|
34
|
|
|
//special case for building the breadcrumbs when calling the listchildren Pages ListView action |
35
|
|
|
if($parentID = $this->getRequest()->getVar('ParentID')) { |
36
|
|
|
$page = SiteTree::get()->byID($parentID); |
37
|
|
|
|
38
|
|
|
//build a reversed list of the parent tree |
39
|
|
|
$pages = array(); |
40
|
|
|
while($page) { |
41
|
|
|
array_unshift($pages, $page); //add to start of array so that array is in reverse order |
42
|
|
|
$page = $page->Parent; |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
//turns the title and link of the breadcrumbs into template-friendly variables |
46
|
|
|
$params = array_filter(array( |
47
|
|
|
'view' => $this->getRequest()->getVar('view'), |
48
|
|
|
'q' => $this->getRequest()->getVar('q') |
49
|
|
|
)); |
50
|
|
|
foreach($pages as $page) { |
51
|
|
|
$params['ParentID'] = $page->ID; |
52
|
|
|
$item = new stdClass(); |
53
|
|
|
$item->Title = $page->Title; |
54
|
|
|
$item->Link = Controller::join_links($this->Link(), '?' . http_build_query($params)); |
55
|
|
|
$items->push(new ArrayData($item)); |
56
|
|
|
} |
57
|
|
|
} |
58
|
|
|
|
59
|
|
|
return $items; |
60
|
|
|
|
61
|
|
|
} |
62
|
|
|
} |
63
|
|
|
|