111 lines
No EOL
2.7 KiB
PHP
111 lines
No EOL
2.7 KiB
PHP
<?php
|
|
/**
|
|
* @brief postWidgetText, a plugin for Dotclear 2
|
|
*
|
|
* @package Dotclear
|
|
* @subpackage Plugin
|
|
*
|
|
* @author Jean-Christian Denis and Contributors
|
|
*
|
|
* @copyright Jean-Christian Denis
|
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
*/
|
|
|
|
if (!defined('DC_RC_PATH')) {
|
|
|
|
return null;
|
|
}
|
|
|
|
$core->blog->settings->addNamespace('postwidgettext');
|
|
|
|
$core->addBehavior(
|
|
'initWidgets',
|
|
array('postWidgetTextWidget', 'init')
|
|
);
|
|
|
|
/**
|
|
* @ingroup DC_PLUGIN_POSTWIDGETTEXT
|
|
* @brief postWidgetText - admin and public widget methods.
|
|
* @since 2.6
|
|
*/
|
|
class postWidgetTextWidget
|
|
{
|
|
public static function init($w)
|
|
{
|
|
global $core;
|
|
|
|
$w->create(
|
|
'postwidgettext',
|
|
__('Post widget text'),
|
|
array('postWidgetTextWidget', 'display'),
|
|
null,
|
|
__('Add a widget with a text related to an entry')
|
|
);
|
|
$w->postwidgettext->setting(
|
|
'title',
|
|
__('Title:'),
|
|
__('More about this entry'),
|
|
'text'
|
|
);
|
|
$w->postwidgettext->setting(
|
|
'excerpt',
|
|
__('Use excerpt if no content'),
|
|
0,
|
|
'check'
|
|
);
|
|
$w->postwidgettext->setting(
|
|
'show',
|
|
__('Show widget even if empty'),
|
|
0,
|
|
'check'
|
|
);
|
|
$w->postwidgettext->setting(
|
|
'content_only',
|
|
__('Content only'),
|
|
0,
|
|
'check'
|
|
);
|
|
$w->postwidgettext->setting(
|
|
'class',
|
|
__('CSS class:'),
|
|
''
|
|
);
|
|
}
|
|
|
|
public static function display($w)
|
|
{
|
|
global $core, $_ctx;
|
|
|
|
if (!$core->blog->settings->postwidgettext->postwidgettext_active
|
|
|| !$_ctx->exists('posts')
|
|
|| !$_ctx->posts->post_id
|
|
) {
|
|
return null;
|
|
}
|
|
|
|
$title = (strlen($w->title) > 0) ?
|
|
'<h2>'.html::escapeHTML($w->title).'</h2>' : null;
|
|
$content = '';
|
|
|
|
$pwt = new postWidgetText($core);
|
|
$rs = $pwt->getWidgets(array('post_id'=>$_ctx->posts->post_id));
|
|
|
|
if ('' != $rs->option_title) {
|
|
$title = '<h2>'.$rs->option_title.'</h2>';
|
|
}
|
|
if ('' != $rs->option_content_xhtml) {
|
|
$content = $rs->option_content_xhtml;
|
|
}
|
|
if ('' == $content && $w->excerpt) {
|
|
$content = $_ctx->posts->post_excerpt_xhtml;
|
|
}
|
|
|
|
return '' == $content && !$w->show ?
|
|
null :
|
|
($w->content_only ? '' : '<div class="postwidgettext'.
|
|
($w->class ? ' '.html::escapeHTML($w->class) : '').'">').
|
|
$title.
|
|
$content.
|
|
($w->content_only ? '' : '</div>');
|
|
}
|
|
} |