-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathAmNavPlugin.php
More file actions
103 lines (94 loc) · 2.58 KB
/
Copy pathAmNavPlugin.php
File metadata and controls
103 lines (94 loc) · 2.58 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
/**
* Navigation for Craft.
*
* @package Am Nav
* @author Hubert Prein
*/
namespace Craft;
class AmNavPlugin extends BasePlugin
{
public function getName()
{
$settings = $this->getSettings();
if ($settings->pluginName) {
return $settings->pluginName;
}
return Craft::t('a&m nav');
}
public function getVersion()
{
return '1.1.2';
}
public function getDeveloper()
{
return 'a&m impact';
}
public function getDeveloperUrl()
{
return 'http://www.am-impact.nl';
}
public function getSettingsHtml()
{
return craft()->templates->render('amnav/settings', array(
'settings' => $this->getSettings()
));
}
/**
* Plugin has control panel section.
*
* @return boolean
*/
public function hasCpSection()
{
return true;
}
/**
* Plugin has Control Panel routes.
*
* @return array
*/
public function registerCpRoutes()
{
return array(
'amnav' => array('action' => 'amNav/navIndex'),
'amnav/new' => array('action' => 'amNav/editMenu'),
'amnav/edit/(?P<menuId>\d+)' => array('action' => 'amNav/editMenu'),
'amnav/build/(?P<menuId>\d+)' => array('action' => 'amNav/buildMenu')
);
}
/**
* Load a&m nav.
*/
public function init()
{
// Update pages in a navigation if an Entry was saved
craft()->on('entries.beforeSaveEntry', function(Event $event) {
if (! $event->params['isNewEntry']) {
craft()->amNav_page->updatePagesForEntry($event->params['entry'], true);
}
});
// Update pages again, since the URI update is only available after the Entry has been saved
craft()->on('entries.saveEntry', function(Event $event) {
if (! $event->params['isNewEntry']) {
craft()->amNav_page->updatePagesForEntry($event->params['entry']);
}
});
// Delete pages from a navigation if an Entry was deleted
craft()->on('entries.deleteEntry', function(Event $event) {
craft()->amNav_page->deletePagesForEntry($event->params['entry']);
});
}
/**
* Plugin settings.
*
* @return array
*/
protected function defineSettings()
{
return array(
'pluginName' => array(AttributeType::String),
'canDoActions' => array(AttributeType::Bool, 'default' => false)
);
}
}