/
extension.driver.php
77 lines (59 loc) · 2.28 KB
/
extension.driver.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
<?php
require_once(TOOLKIT . '/class.sectionmanager.php');
class Extension_Duplicate_Entry extends Extension {
public function getSubscribedDelegates() {
return array(
array(
'page' => '/backend/',
'delegate' => 'InitaliseAdminPageHead',
'callback' => 'initaliseAdminPageHead'
)
);
}
private function serialiseSectionSchema($section) {
$current_section_fields = $section->fetchFieldsSchema();
foreach($current_section_fields as $i => $field) {
unset($current_section_fields[$i]['id']);
unset($current_section_fields[$i]['location']);
}
return md5(serialize($current_section_fields));
}
public function initaliseAdminPageHead($context) {
$page = Administration::instance()->Page;
if ($page instanceof contentPublish) {
$callback = Administration::instance()->getPageCallback();
if($callback['context']['page'] !== 'edit') return;
$sm = new SectionManager(Administration::instance());
$current_section = $sm->fetch($sm->fetchIDFromHandle($callback['context']['section_handle']));
$current_section_hash = $this->serialiseSectionSchema($current_section);
$duplicate_sections = array();
foreach($sm->fetch() as $section) {
$section_hash = $this->serialiseSectionSchema($section);
if ($section_hash == $current_section_hash && $section->get('handle')) {
$duplicate_sections[$section->get('handle')] = $section->get('name');
}
}
if (count($duplicate_sections) < 2) $duplicate_sections = NULL;
Administration::instance()->Page->addElementToHead(
new XMLElement(
'script',
"Symphony.Context.add('duplicate-entry', " . json_encode(array(
'current-section' => $callback['context']['section_handle'],
'duplicate-sections' => $duplicate_sections,
)) . ");",
array('type' => 'text/javascript')
), time()
);
$page->addScriptToHead(URL . '/extensions/duplicate_entry/assets/duplicate_entry.js', 10001);
// add particular css for SSM
Administration::instance()->Page->addElementToHead(
new XMLElement(
'style',
"body.inline.subsection #duplicate-entry { display: none; visibility: collapse }",
array('type' => 'text/css')
), time()+101
);
}
}
}
?>