130 lines
3.4 KiB
PHP
130 lines
3.4 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Plugin Name: BlockParser
|
|
* Type: Block
|
|
* Version: 1.0
|
|
* Plugin URI: https://www.flatpress.org
|
|
* Author: FlatPress
|
|
* Author URI: https://www.flatpress.org
|
|
* Description: Allows you to use simple non-plugin custom blocks. Part of the standard distribution.
|
|
*/
|
|
|
|
// define('BLOCKS_DIR', CONTENT_DIR . 'blocks/');
|
|
|
|
// as a default blocks_dir == static_dir
|
|
// so you can edit blocks using the static editor!!
|
|
define('BLOCKS_DIR', STATIC_DIR);
|
|
|
|
function plugin_blockparser_parse($blockid) {
|
|
if ($f_contents = io_load_file(BLOCKS_DIR . $blockid . EXT)) {
|
|
$contents = utils_kexplode($f_contents);
|
|
return array_change_key_case($contents, CASE_LOWER);
|
|
}
|
|
// else:
|
|
return false;
|
|
}
|
|
|
|
// register_widget('blockparser', 'BlockParser', 'plugin_blockparser_widget', 1);
|
|
function plugin_blockparser_widget($blockid) {
|
|
if ($contents = plugin_blockparser_parse($blockid)) {
|
|
$contents ['subject'] = apply_filters('the_title', $contents ['subject']);
|
|
$contents ['content'] = apply_filters('the_content', $contents ['content']);
|
|
$contents ['id'] = "widget-bp-$blockid";
|
|
return $contents;
|
|
}
|
|
|
|
return array(
|
|
'subject' => 'BlockParser::Error',
|
|
'content' => "<ul><li>Error parsing block $blockid; file may not exist</li></ul>"
|
|
);
|
|
}
|
|
|
|
function plugin_blockparser_init() {
|
|
|
|
// for instance:
|
|
// $fp_config['plugins']['blockparser']['pages'] = array('menu');
|
|
// (these will) be registered from the panel
|
|
|
|
// in this case functions are just a convenient way
|
|
// to create new instances of the plugin_blockparser_widget() function...
|
|
|
|
// this would suggest to use an object, though :B
|
|
// anyway the result is the same...
|
|
$pgs = plugin_getoptions('blockparser', 'pages');
|
|
if (is_array($pgs)) {
|
|
foreach ($pgs as $page) {
|
|
register_widget('blockparser:' . $page, // widget id
|
|
'BlockParser: ' . $page, // widget name
|
|
function () use ($page) {
|
|
return plugin_blockparser_widget($page);
|
|
} // lambda func
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
add_action('init', 'plugin_blockparser_init');
|
|
|
|
if (class_exists('AdminPanelAction')) {
|
|
|
|
class admin_widgets_blockparser extends AdminPanelAction {
|
|
|
|
var $langres = 'plugin:blockparser';
|
|
|
|
var $commands = array(
|
|
'enable',
|
|
'disable'
|
|
);
|
|
|
|
function doenable($id) {
|
|
$success = -1;
|
|
$enabled = & $this->bp_enabled;
|
|
if (static_exists($id)) {
|
|
if (!$enabled) {
|
|
$enabled = array();
|
|
}
|
|
if (!in_array($id, $enabled)) {
|
|
$enabled [] = $id;
|
|
sort($enabled);
|
|
plugin_addoption('blockparser', 'pages', $enabled);
|
|
plugin_saveoptions();
|
|
$success = 1;
|
|
}
|
|
}
|
|
$this->smarty->assign('success', $success);
|
|
return PANEL_REDIRECT_CURRENT;
|
|
}
|
|
|
|
function dodisable($id) {
|
|
$success = -2;
|
|
$enabled = & $this->bp_enabled;
|
|
if ($enabled && is_numeric($v = array_search($id, $enabled))) {
|
|
unset($enabled [$v]);
|
|
@sort($enabled);
|
|
@plugin_addoption('blockparser', 'pages', $enabled);
|
|
plugin_saveoptions();
|
|
$success = 2;
|
|
}
|
|
$this->smarty->assign('success', $success);
|
|
return PANEL_REDIRECT_CURRENT;
|
|
}
|
|
|
|
function setup() {
|
|
$this->smarty->assign('admin_resource', "plugin:blockparser/admin.plugin.blockparser");
|
|
$this->smarty->assign('enabledlist', $this->bp_enabled = plugin_getoptions('blockparser', 'pages'));
|
|
}
|
|
|
|
function main() {
|
|
global $fp_config;
|
|
// $this->smarty->assign_by_ref('enabledpages', plugin_getoptions('blockparser'));
|
|
$this->smarty->assign('statics', $assign = static_getlist());
|
|
}
|
|
|
|
}
|
|
|
|
admin_addpanelaction('widgets', 'blockparser', true);
|
|
}
|
|
|
|
?>
|