-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinit.php
93 lines (76 loc) · 2.6 KB
/
init.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
82
83
84
85
86
87
88
89
90
91
92
93
<?php defined('SYSPATH') or die('No direct access allowed.');
Observer::observe('template_before_render', function($request) {
if (in_array($request->controller(), array('Page', 'Widgets')))
{
Assets::js('controller.widgets', ADMIN_RESOURCES . 'js/controller/widgets.js', 'global');
}
});
Observer::observe('frontpage_found', function($page) {
$widgets = Widget_Manager::get_widgets_by_page($page->id);
Context::instance()
->register_widgets($widgets)
->init_widgets();
/**
* Запуск метода в виджетах текущей страницы
* Model_Widget_Decorator::on_page_load
*/
Observer::notify('on_page_load');
/**
* Блок служит для помещения в него виджета с произволным PHP кодом,
* который выполняется до загрузки HTML, вывод данных в этом блоке делать
* не надо
*/
Block::run('PRE');
});
Observer::observe('frontpage_after_render', function() {
/**
* Запуск метода в виджетах текущей страницы
* Model_Widget_Decorator::after_page_load
*/
Observer::notify('after_page_load');
/**
* Блок служит для помещения в него виджета с произволным PHP кодом,
* который выполняется после загрузки HTML
*/
Block::run('POST');
});
Observer::observe('view_page_edit_plugins', function($page) {
$blocks = Widget_Manager::get_blocks_by_layout($page->layout());
echo View::factory('widgets/page/edit', array(
'page' => $page,
'pages' => Model_Page_Sitemap::get(TRUE)->exclude(array($page->id))->flatten(),
'widgets' => Widget_Manager::get_widgets_by_page($page->id),
'blocks' => Arr::get($blocks, $page->layout())
));
});
Observer::observe('page_add_after_save', function($page) {
$post_data = Request::current()->post('widgets');
if (!empty($post_data['from_page_id']))
{
Widget_Manager::copy($post_data['from_page_id'], $page->id);
}
});
Observer::observe('page_edit_after_save', function($page) {
$post_data = Request::current()->post('widget');
if (!is_array($post_data))
{
return;
}
foreach ($post_data as $widget_id => $block)
{
Widget_Manager::update_location_by_page($page->id, $widget_id, $block);
}
});
Observer::observe(array(
'widget_after_delete', 'widget_set_location',
'widget_after_edit', 'widget_after_add'
), function() {
Cache::instance()->delete_tag('layout_blocks');
});
Route::set('handler', 'handler/<id>', array(
'id' => '[0-9]+',
))
->defaults(array(
'directory' => 'system',
'controller' => 'handler'
));