-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclass.QuickButtonsPlugin.php
More file actions
109 lines (89 loc) · 3.48 KB
/
class.QuickButtonsPlugin.php
File metadata and controls
109 lines (89 loc) · 3.48 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
104
105
106
107
108
109
<?php
/**
* Quick Buttons Plugin - Main Class
*
* @author ChesnoTech
* @version 3.2.0
*/
require_once 'config.php';
class QuickButtonsPlugin extends Plugin {
var $config_class = 'QuickButtonsConfig';
static private $bootstrapped = false;
function bootstrap() {
if (self::$bootstrapped)
return;
self::$bootstrapped = true;
self::registerTranslations();
if (!defined('STAFFINC_DIR'))
return;
Signal::connect('ajax.scp', array('QuickButtonsPlugin', 'registerAjaxRoutes'));
ob_start(array('QuickButtonsPlugin', 'injectAssets'));
}
static function registerTranslations() {
if (method_exists('Plugin', 'translate')) {
list($__, $_N) = Plugin::translate('quick-buttons');
}
}
static function bootstrapStatic() {
if (self::$bootstrapped)
return;
self::$bootstrapped = true;
self::registerTranslations();
if (!defined('STAFFINC_DIR'))
return;
Signal::connect('ajax.scp', array('QuickButtonsPlugin', 'registerAjaxRoutes'));
ob_start(array('QuickButtonsPlugin', 'injectAssets'));
}
static function registerAjaxRoutes($dispatcher) {
$dir = INCLUDE_DIR . 'plugins/quick-buttons/';
$dispatcher->append(
url('^/quick-buttons/', patterns(
$dir . 'class.QuickButtonsAjax.php:QuickButtonsAjax',
url('^widgets$', 'getWidgets'),
url_post('^execute$', 'execute'),
url_post('^undo$', 'undo'),
url_get('^dashboard$', 'dashboard'),
url_get('^dashboard-page$', 'serveDashboardPage'),
url_get('^admin-config-data$', 'getAdminConfigData'),
url_get('^workflow-builder$', 'serveWorkflowBuilder'),
url_post('^workflow-builder-save$', 'saveWorkflowBuilder'),
url_get('^assets/js$', 'serveJs'),
url_get('^assets/css$', 'serveCss'),
url_get('^assets/admin-js$', 'serveAdminJs'),
url_get('^assets/admin-css$', 'serveAdminCss')
))
);
}
static function injectAssets($buffer) {
if (!empty($_SERVER['HTTP_X_PJAX']))
return $buffer;
if (strpos($buffer, '</head>') === false
|| strpos($buffer, '</body>') === false)
return $buffer;
$base = ROOT_PATH . 'scp/ajax.php/quick-buttons/assets';
$dir = dirname(__FILE__) . '/assets/';
$v = max(
@filemtime($dir . 'quick-buttons.js'),
@filemtime($dir . 'quick-buttons.css'),
@filemtime($dir . 'quick-buttons-default.css')
) ?: time();
$css = sprintf(
'<link rel="stylesheet" type="text/css" href="%s/css?v=%s">',
$base, $v);
$js = sprintf(
'<script type="text/javascript" src="%s/js?v=%s"></script>',
$base, $v);
$adminCss = sprintf(
'<link rel="stylesheet" type="text/css" href="%s/admin-css?v=%s">',
$base, $v);
$adminJs = sprintf(
'<script type="text/javascript" src="%s/admin-js?v=%s"></script>',
$base, $v);
$buffer = str_replace('</head>', $css . "\n" . $adminCss . "\n</head>", $buffer);
$buffer = str_replace('</body>', $js . "\n" . $adminJs . "\n</body>", $buffer);
return $buffer;
}
}
// Static bootstrap
if (defined('STAFFINC_DIR'))
QuickButtonsPlugin::bootstrapStatic();