Dotclear

source: admin/plugin.php @ 2715:a87ddf7dbfb5

Revision 2715:a87ddf7dbfb5, 2.4 KB checked in by Dsls, 11 years ago (diff)

Merge with default (admin/post.php still to update with editor preferences, in twig template)

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12
13require dirname(__FILE__).'/../inc/admin/prepend.php';
14
15dcPage::check('usage,contentadmin');
16
17$has_content = false;
18$p_file = '';
19$p = !empty($_REQUEST['p']) ? $_REQUEST['p'] : null;
20$popup = $_ctx->popup = (integer) !empty($_REQUEST['popup']);
21
22if ($core->plugins->moduleExists($p)) {
23     $p_file = $core->plugins->moduleRoot($p).'/index.php';
24}
25if (file_exists($p_file)) {
26
27//* Keep this for old style plugins using dcPage
28     if ($popup) {
29          $open_f = array('dcPage','openPopup');
30          $close_f = array('dcPage','closePopup');
31     } else {
32          $open_f = array('dcPage','open');
33          $close_f = array('dcPage','close');
34     }
35     
36     $p_info = $core->plugins->getModules($p);
37     $p_name = $p;
38     $p_url = 'plugin.php?p='.$p;
39     $p_title = $p_head = $p_content = '';
40//*/
41     # Get page content
42     ob_start();
43     include $p_file;
44     $res = ob_get_contents();
45     ob_end_clean();
46
47     # Check context and display
48     if ($_ctx->hasPageTitle() && !empty($res)) {
49          $has_content = true;
50          echo $res;
51     }
52//* Keep this for old style plugins using dcPage
53     elseif (!$_ctx->hasPageTitle()) {
54         
55          if (preg_match('|<head>(.*?)</head|ms',$res,$m)) {
56               if (preg_match('|<title>(.*?)</title>|ms',$m[1],$mt)) {
57                    $p_title = $mt[1];
58               }
59               
60               if (preg_match_all('|(<script.*?>.*?</script>)|ms',$m[1],$ms)) {
61                    foreach ($ms[1] as $v) {
62                         $p_head .= $v."\n";
63                    }
64               }
65               
66               if (preg_match_all('|(<style.*?>.*?</style>)|ms',$m[1],$ms)) {
67                    foreach ($ms[1] as $v) {
68                         $p_head .= $v."\n";
69                    }
70               }
71               
72               if (preg_match_all('|(<link.*?/>)|ms',$m[1],$ms)) {
73                    foreach ($ms[1] as $v) {
74                         $p_head .= $v."\n";
75                    }
76               }
77          }
78         
79          if (preg_match('|<body.*?>(.+)</body>|ms',$res,$m)) {
80               $p_content = $m[1];
81               
82               call_user_func($open_f,$p_title,$p_head);
83               echo $p_content;
84               call_user_func($close_f);
85               
86               $has_content = true;
87          }
88     }
89//*/
90}
91# No plugin or content found
92if (!$has_content) {
93     $_ctx->setBreadcrumb(__('Plugin not found'));
94     $_ctx->addError(__('The plugin you reached does not exist or does not have an admin page.'));
95     $core->tpl->display('plugin.html.twig');
96}
97?>
Note: See TracBrowser for help on using the repository browser.

Sites map