use namespace
This commit is contained in:
parent
322fe47d55
commit
e96f5a1039
@ -10,8 +10,32 @@
|
|||||||
* @copyright Jean-Christian Denis
|
* @copyright Jean-Christian Denis
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
if (!defined('DC_CONTEXT_ADMIN')) {
|
declare(strict_types=1);
|
||||||
return null;
|
|
||||||
|
namespace Dotclear\Plugin\postInfoWidget;
|
||||||
|
|
||||||
|
use dcCore;
|
||||||
|
use dcNsProcess;
|
||||||
|
|
||||||
|
class Backend extends dcNsProcess
|
||||||
|
{
|
||||||
|
public static function init(): bool
|
||||||
|
{
|
||||||
|
static::$init = defined('DC_CONTEXT_ADMIN');
|
||||||
|
|
||||||
|
return static::$init;
|
||||||
}
|
}
|
||||||
|
|
||||||
require __DIR__ . '/_widgets.php';
|
public static function process(): bool
|
||||||
|
{
|
||||||
|
if (!static::$init) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
dcCore::app()->addBehaviors([
|
||||||
|
'initWidgets' => [Widgets::class, 'initWidgets'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -10,8 +10,32 @@
|
|||||||
* @copyright Jean-Christian Denis
|
* @copyright Jean-Christian Denis
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
if (!defined('DC_RC_PATH')) {
|
declare(strict_types=1);
|
||||||
return null;
|
|
||||||
|
namespace Dotclear\Plugin\postInfoWidget;
|
||||||
|
|
||||||
|
use dcCore;
|
||||||
|
use dcNsProcess;
|
||||||
|
|
||||||
|
class Frontend extends dcNsProcess
|
||||||
|
{
|
||||||
|
public static function init(): bool
|
||||||
|
{
|
||||||
|
static::$init = true;
|
||||||
|
|
||||||
|
return static::$init;
|
||||||
}
|
}
|
||||||
|
|
||||||
require __DIR__ . '/_widgets.php';
|
public static function process(): bool
|
||||||
|
{
|
||||||
|
if (!static::$init) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
dcCore::app()->addBehaviors([
|
||||||
|
'initWidgets' => [Widgets::class, 'initWidgets'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
122
src/Widgets.php
122
src/Widgets.php
@ -10,24 +10,27 @@
|
|||||||
* @copyright Jean-Christian Denis
|
* @copyright Jean-Christian Denis
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
if (!defined('DC_RC_PATH')) {
|
declare(strict_types=1);
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
dcCore::app()->addBehavior(
|
namespace Dotclear\Plugin\postInfoWidget;
|
||||||
'initWidgets',
|
|
||||||
['postInfoWidget', 'adminWidget']
|
|
||||||
);
|
|
||||||
|
|
||||||
class postInfoWidget
|
use dcCore;
|
||||||
|
use dcRecord;
|
||||||
|
use Dotclear\Plugin\widgets\WidgetsStack;
|
||||||
|
use Dotclear\Plugin\widgets\WidgetsElement;
|
||||||
|
use dt;
|
||||||
|
use html;
|
||||||
|
use l10n;
|
||||||
|
|
||||||
|
class Widgets
|
||||||
{
|
{
|
||||||
public static function adminWidget($w)
|
public static function initWidgets(WidgetsStack $w): void
|
||||||
{
|
{
|
||||||
$w
|
$w
|
||||||
->create(
|
->create(
|
||||||
'postinfowidget',
|
'postinfowidget',
|
||||||
__('PostInfoWidget: entry information list'),
|
__('PostInfoWidget: entry information list'),
|
||||||
['postInfoWidget', 'publicWidget'],
|
[self::class, 'publicWidget'],
|
||||||
null,
|
null,
|
||||||
__('Show Entry informations on a widget')
|
__('Show Entry informations on a widget')
|
||||||
)
|
)
|
||||||
@ -174,64 +177,64 @@ class postInfoWidget
|
|||||||
->addOffline();
|
->addOffline();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function publicWidget($w)
|
public static function publicWidget(WidgetsElement $w): string
|
||||||
{
|
{
|
||||||
if ($w->offline) {
|
if ($w->offline) {
|
||||||
return null;
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dcCore::app()->url->type != 'post'
|
if (dcCore::app()->url->type != 'post'
|
||||||
|| !dcCore::app()->ctx->posts->post_id) {
|
|| !dcCore::app()->ctx->posts->f('post_id')) {
|
||||||
return null;
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$link = '<a href="%s">%s</a>';
|
$link = '<a href="%s">%s</a>';
|
||||||
$content = '';
|
$content = '';
|
||||||
|
|
||||||
if ($w->dt_str != '') {
|
if ($w->dt_str != '') {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'date',
|
'date',
|
||||||
dt::str(
|
dt::str(
|
||||||
$w->dt_str,
|
$w->dt_str,
|
||||||
strtotime(dcCore::app()->ctx->posts->post_dt),
|
(int) strtotime(dcCore::app()->ctx->posts->f('post_dt')),
|
||||||
dcCore::app()->blog->settings->system->blog_timezone
|
dcCore::app()->blog->settings->get('system')->get('blog_timezone')
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($w->creadt_str != '') {
|
if ($w->creadt_str != '') {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'create',
|
'create',
|
||||||
dt::str(
|
dt::str(
|
||||||
$w->creadt_str,
|
$w->creadt_str,
|
||||||
strtotime(dcCore::app()->ctx->posts->post_creadt),
|
(int) strtotime(dcCore::app()->ctx->posts->post_creadt),
|
||||||
dcCore::app()->blog->settings->system->blog_timezone
|
dcCore::app()->blog->settings->get('system')->get('blog_timezone')
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($w->upddt_str != '') {
|
if ($w->upddt_str != '') {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'update',
|
'update',
|
||||||
dt::str(
|
dt::str(
|
||||||
$w->upddt_str,
|
$w->upddt_str,
|
||||||
strtotime(dcCore::app()->ctx->posts->post_upddt),
|
(int) strtotime(dcCore::app()->ctx->posts->f('post_upddt')),
|
||||||
dcCore::app()->blog->settings->system->blog_timezone
|
dcCore::app()->blog->settings->get('system')->get('blog_timezone')
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($w->lang_str != '') {
|
if ($w->lang_str != '') {
|
||||||
$ln = l10n::getISOcodes();
|
$ln = l10n::getISOcodes();
|
||||||
$lang_code = dcCore::app()->ctx->posts->post_lang ?
|
$lang_code = dcCore::app()->ctx->posts->f('post_lang') ?
|
||||||
dcCore::app()->ctx->posts->post_lang :
|
dcCore::app()->ctx->posts->f('post_lang') :
|
||||||
dcCore::app()->blog->settings->system->lang;
|
dcCore::app()->blog->settings->get('system')->get('lang');
|
||||||
$lang_name = $ln[$lang_code] ?? $lang_code;
|
$lang_name = $ln[$lang_code] ?? $lang_code;
|
||||||
$lang_flag = file_exists(
|
$lang_flag = file_exists(
|
||||||
dirname(__FILE__) .
|
dirname(__DIR__) .
|
||||||
'/img/flags/' .
|
'/img/flags/' .
|
||||||
$lang_code . '.png'
|
$lang_code . '.png'
|
||||||
) ?
|
) ?
|
||||||
@ -240,7 +243,7 @@ class postInfoWidget
|
|||||||
$lang_code . '.png" alt="' . $lang_name . '" />' :
|
$lang_code . '.png" alt="' . $lang_name . '" />' :
|
||||||
'';
|
'';
|
||||||
|
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'lang',
|
'lang',
|
||||||
str_replace(
|
str_replace(
|
||||||
@ -252,7 +255,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($w->author_str != '') {
|
if ($w->author_str != '') {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'author',
|
'author',
|
||||||
str_replace(
|
str_replace(
|
||||||
@ -263,8 +266,8 @@ class postInfoWidget
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($w->category_str != '' && dcCore::app()->ctx->posts->cat_id) {
|
if ($w->category_str != '' && dcCore::app()->ctx->posts->f('cat_id')) {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'category',
|
'category',
|
||||||
str_replace(
|
str_replace(
|
||||||
@ -272,7 +275,7 @@ class postInfoWidget
|
|||||||
sprintf(
|
sprintf(
|
||||||
$link,
|
$link,
|
||||||
dcCore::app()->ctx->posts->getCategoryURL(),
|
dcCore::app()->ctx->posts->getCategoryURL(),
|
||||||
html::escapeHTML(dcCore::app()->ctx->posts->cat_title)
|
html::escapeHTML(dcCore::app()->ctx->posts->f('cat_title'))
|
||||||
),
|
),
|
||||||
html::escapeHTML($w->category_str)
|
html::escapeHTML($w->category_str)
|
||||||
)
|
)
|
||||||
@ -282,20 +285,20 @@ class postInfoWidget
|
|||||||
if ($w->tag_str != '' && dcCore::app()->plugins->moduleExists('tags')) {
|
if ($w->tag_str != '' && dcCore::app()->plugins->moduleExists('tags')) {
|
||||||
$meta = dcCore::app()->meta->getMetadata([
|
$meta = dcCore::app()->meta->getMetadata([
|
||||||
'meta_type' => 'tag',
|
'meta_type' => 'tag',
|
||||||
'post_id' => dcCore::app()->ctx->posts->post_id,
|
'post_id' => dcCore::app()->ctx->posts->f('post_id'),
|
||||||
]);
|
]);
|
||||||
$metas = [];
|
$metas = [];
|
||||||
while ($meta->fetch()) {
|
while ($meta->fetch()) {
|
||||||
$metas[$meta->meta_id] = sprintf(
|
$metas[$meta->f('meta_id')] = sprintf(
|
||||||
$link,
|
$link,
|
||||||
dcCore::app()->blog->url .
|
dcCore::app()->blog->url .
|
||||||
dcCore::app()->url->getBase('tag') . '/' .
|
dcCore::app()->url->getBase('tag') . '/' .
|
||||||
rawurlencode($meta->meta_id),
|
rawurlencode($meta->f('meta_id')),
|
||||||
$meta->meta_id
|
$meta->f('meta_id')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (!empty($metas)) {
|
if (!empty($metas)) {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'tag',
|
'tag',
|
||||||
str_replace(
|
str_replace(
|
||||||
@ -336,7 +339,7 @@ class postInfoWidget
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'attachment',
|
'attachment',
|
||||||
str_replace(
|
str_replace(
|
||||||
@ -348,7 +351,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($w->comment_str != '' && dcCore::app()->ctx->posts->commentsActive()) {
|
if ($w->comment_str != '' && dcCore::app()->ctx->posts->commentsActive()) {
|
||||||
$nb = dcCore::app()->ctx->posts->nb_comment;
|
$nb = (int) dcCore::app()->ctx->posts->f('nb_comment');
|
||||||
if ($nb == 0) {
|
if ($nb == 0) {
|
||||||
$comment_numeric = 0;
|
$comment_numeric = 0;
|
||||||
$comment_textual = __('no comment');
|
$comment_textual = __('no comment');
|
||||||
@ -376,7 +379,7 @@ class postInfoWidget
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'comment',
|
'comment',
|
||||||
str_replace(
|
str_replace(
|
||||||
@ -388,7 +391,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($w->trackback_str != '' && dcCore::app()->ctx->posts->trackbacksActive()) {
|
if ($w->trackback_str != '' && dcCore::app()->ctx->posts->trackbacksActive()) {
|
||||||
$nb = dcCore::app()->ctx->posts->nb_trackback;
|
$nb = (int) dcCore::app()->ctx->posts->f('nb_trackback');
|
||||||
if ($nb == 0) {
|
if ($nb == 0) {
|
||||||
$trackback_numeric = 0;
|
$trackback_numeric = 0;
|
||||||
$trackback_textual = __('no trackback');
|
$trackback_textual = __('no trackback');
|
||||||
@ -416,7 +419,7 @@ class postInfoWidget
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'trackback',
|
'trackback',
|
||||||
str_replace(
|
str_replace(
|
||||||
@ -428,7 +431,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($w->permalink_str) {
|
if ($w->permalink_str) {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'permalink',
|
'permalink',
|
||||||
str_replace(
|
str_replace(
|
||||||
@ -447,7 +450,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($w->feed && dcCore::app()->ctx->posts->commentsActive()) {
|
if ($w->feed && dcCore::app()->ctx->posts->commentsActive()) {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'feed',
|
'feed',
|
||||||
sprintf(
|
sprintf(
|
||||||
@ -455,15 +458,14 @@ class postInfoWidget
|
|||||||
dcCore::app()->blog->url .
|
dcCore::app()->blog->url .
|
||||||
dcCore::app()->url->getBase('feed') .
|
dcCore::app()->url->getBase('feed') .
|
||||||
'/atom/comments/' .
|
'/atom/comments/' .
|
||||||
dcCore::app()->ctx->posts->post_id,
|
dcCore::app()->ctx->posts->f('post_id'),
|
||||||
__("This post's comments feed"),
|
__("This post's comments feed")
|
||||||
html::escapeHTML($w->tag_str)
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($w->navprevpost) {
|
if ($w->navprevpost) {
|
||||||
$npp = postInfoWidget::nav(
|
$npp = self::nav(
|
||||||
dcCore::app()->ctx->posts,
|
dcCore::app()->ctx->posts,
|
||||||
-1,
|
-1,
|
||||||
false,
|
false,
|
||||||
@ -471,7 +473,7 @@ class postInfoWidget
|
|||||||
$w->navprevpost
|
$w->navprevpost
|
||||||
);
|
);
|
||||||
if ($npp) {
|
if ($npp) {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'previous',
|
'previous',
|
||||||
$npp
|
$npp
|
||||||
@ -479,7 +481,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($w->navnextpost) {
|
if ($w->navnextpost) {
|
||||||
$nnp = postInfoWidget::nav(
|
$nnp = self::nav(
|
||||||
dcCore::app()->ctx->posts,
|
dcCore::app()->ctx->posts,
|
||||||
1,
|
1,
|
||||||
false,
|
false,
|
||||||
@ -487,7 +489,7 @@ class postInfoWidget
|
|||||||
$w->navnextpost
|
$w->navnextpost
|
||||||
);
|
);
|
||||||
if ($nnp) {
|
if ($nnp) {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'next',
|
'next',
|
||||||
$nnp
|
$nnp
|
||||||
@ -496,7 +498,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($w->navprevcat) {
|
if ($w->navprevcat) {
|
||||||
$npc = postInfoWidget::nav(
|
$npc = self::nav(
|
||||||
dcCore::app()->ctx->posts,
|
dcCore::app()->ctx->posts,
|
||||||
-1,
|
-1,
|
||||||
true,
|
true,
|
||||||
@ -504,7 +506,7 @@ class postInfoWidget
|
|||||||
$w->navprevcat
|
$w->navprevcat
|
||||||
);
|
);
|
||||||
if ($npc) {
|
if ($npc) {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'previous',
|
'previous',
|
||||||
$npc
|
$npc
|
||||||
@ -513,7 +515,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($w->navnextcat) {
|
if ($w->navnextcat) {
|
||||||
$nnc = postInfoWidget::nav(
|
$nnc = self::nav(
|
||||||
dcCore::app()->ctx->posts,
|
dcCore::app()->ctx->posts,
|
||||||
1,
|
1,
|
||||||
true,
|
true,
|
||||||
@ -521,7 +523,7 @@ class postInfoWidget
|
|||||||
$w->navnextcat
|
$w->navnextcat
|
||||||
);
|
);
|
||||||
if ($nnc) {
|
if ($nnc) {
|
||||||
$content .= postInfoWidget::li(
|
$content .= self::li(
|
||||||
$w,
|
$w,
|
||||||
'next',
|
'next',
|
||||||
$nnc
|
$nnc
|
||||||
@ -533,7 +535,7 @@ class postInfoWidget
|
|||||||
$content .= dcCore::app()->callBehavior('postInfoWidgetPublic', $w);
|
$content .= dcCore::app()->callBehavior('postInfoWidgetPublic', $w);
|
||||||
|
|
||||||
if (empty($content)) {
|
if (empty($content)) {
|
||||||
return null;
|
return '';
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
$rmv = '';
|
$rmv = '';
|
||||||
@ -562,7 +564,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
//*/
|
//*/
|
||||||
return $w->renderDiv(
|
return $w->renderDiv(
|
||||||
$w->content_only,
|
(bool) $w->content_only,
|
||||||
'postinfowidget ' . $w->class,
|
'postinfowidget ' . $w->class,
|
||||||
'',
|
'',
|
||||||
($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '') .
|
($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '') .
|
||||||
@ -570,7 +572,7 @@ class postInfoWidget
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function li($w, $i, $c)
|
public static function li(WidgetsElement $w, string $i, string $c): string
|
||||||
{
|
{
|
||||||
$s = ' style="padding-left:%spx;background: transparent url(\'' .
|
$s = ' style="padding-left:%spx;background: transparent url(\'' .
|
||||||
dcCore::app()->blog->getQmarkURL() .
|
dcCore::app()->blog->getQmarkURL() .
|
||||||
@ -587,7 +589,7 @@ class postInfoWidget
|
|||||||
return sprintf($l, $i, $s, $c);
|
return sprintf($l, $i, $s, $c);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function nav($p, $d, $r, $t, $c)
|
public static function nav(dcRecord $p, int $d, bool $r, string $t, string $c): string
|
||||||
{
|
{
|
||||||
$rs = dcCore::app()->blog->getNextPost($p, $d, $r);
|
$rs = dcCore::app()->blog->getNextPost($p, $d, $r);
|
||||||
if (is_null($rs)) {
|
if (is_null($rs)) {
|
||||||
@ -595,7 +597,7 @@ class postInfoWidget
|
|||||||
}
|
}
|
||||||
$l = '<a href="%s" title="%s">%s</a>';
|
$l = '<a href="%s" title="%s">%s</a>';
|
||||||
$u = $rs->getURL();
|
$u = $rs->getURL();
|
||||||
$e = html::escapeHTML($rs->post_title);
|
$e = html::escapeHTML($rs->f('post_title'));
|
||||||
|
|
||||||
return str_replace(
|
return str_replace(
|
||||||
['%T', '%F'],
|
['%T', '%F'],
|
||||||
|
Loading…
Reference in New Issue
Block a user