Skip to content

Commit

Permalink
Add defineMetaFieldsHtml event
Browse files Browse the repository at this point in the history
  • Loading branch information
bencroker committed Aug 1, 2024
1 parent fbc79d0 commit 97fefc1
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 106 deletions.
4 changes: 2 additions & 2 deletions src/Blitz.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@
use putyourlightson\blitz\drivers\generators\BaseCacheGenerator;
use putyourlightson\blitz\drivers\purgers\BaseCachePurger;
use putyourlightson\blitz\drivers\storage\BaseCacheStorage;
use putyourlightson\blitz\helpers\ElementSidebarHelper;
use putyourlightson\blitz\helpers\IntegrationHelper;
use putyourlightson\blitz\helpers\RefreshCacheHelper;
use putyourlightson\blitz\helpers\SidebarPanelHelper;
use putyourlightson\blitz\models\RefreshDataModel;
use putyourlightson\blitz\models\SettingsModel;
use putyourlightson\blitz\services\CacheRequestService;
Expand Down Expand Up @@ -563,7 +563,7 @@ private function registerSidebarPanels(): void
function(DefineHtmlEvent $event) {
/** @var Element $element */
$element = $event->sender;
$event->html .= SidebarPanelHelper::getHtml($element);
$event->html .= ElementSidebarHelper::getSidebarHtml($element);
}
);
}
Expand Down
1 change: 0 additions & 1 deletion src/controllers/CacheController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
use craft\web\Controller;
use craft\web\View;
use putyourlightson\blitz\Blitz;
use putyourlightson\blitz\helpers\SidebarPanelHelper;
use putyourlightson\blitz\models\SiteUriModel;
use yii\web\ForbiddenHttpException;
use yii\web\Response;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,28 @@
use craft\base\Event;
use craft\events\DefineHtmlEvent;
use craft\helpers\Db;
use craft\helpers\Html;
use craft\helpers\UrlHelper;
use putyourlightson\blitz\Blitz;
use putyourlightson\blitz\models\SiteUriModel;
use putyourlightson\blitz\records\CacheRecord;

class SidebarPanelHelper
class ElementSidebarHelper
{
/**
* @event DefineHtmlEvent
*/
public const EVENT_DEFINE_HTML = 'defineHtml';
public const EVENT_DEFINE_SIDEBAR_HTML = 'defineSidebarHtml';

/**
* Returns the HTML for the sidebar panel.
* @event DefineHtmlEvent
*/
public const EVENT_DEFINE_META_FIELDS_HTML = 'defineMetaFieldsHtml';

/**
* Returns the HTML for the sidebar.
*/
public static function getHtml(Element $element): string
public static function getSidebarHtml(Element $element): string
{
$uri = $element->uri;
if ($uri === null) {
Expand All @@ -34,31 +40,47 @@ public static function getHtml(Element $element): string

$siteUri = new SiteUriModel([
'siteId' => $element->siteId,
'uri' => $uri,
'uri' => $element->uri,
]);

$html = Html::beginTag('fieldset', ['class' => 'blitz-element-sidebar']) .
Html::tag('legend', 'Blitz', ['class' => 'h6']) .
Html::tag('div', self::metaFieldsHtml($siteUri), ['class' => 'meta']) .
Html::endTag('fieldset');

$event = new DefineHtmlEvent([
'html' => $html,
]);
Event::trigger(self::class, self::EVENT_DEFINE_SIDEBAR_HTML, $event);

return $event->html;
}

private static function metaFieldsHtml(SiteUriModel $siteUri): string
{
$cachedValue = Blitz::$plugin->cacheStorage->get($siteUri);

/** @var CacheRecord|null $cacheRecord */
$cacheRecord = CacheRecord::find()
->where($siteUri->toArray())
->one();

$html = Craft::$app->getView()->renderTemplate('blitz/_sidebar-panel', [
$html = Craft::$app->getView()->renderTemplate('blitz/_element-sidebar', [
'cached' => !empty($cachedValue),
'expired' => $cacheRecord && $cacheRecord->expiryDate && $cacheRecord->expiryDate <= Db::prepareDateForDb('now'),
'dateCached' => $cacheRecord->dateCached ?? null,
'expiryDate' => $cacheRecord->expiryDate ?? null,
'refreshActionUrl' => UrlHelper::actionUrl('blitz/cache/refresh-page', [
'siteId' => $element->siteId,
'uri' => $uri,
'siteId' => $siteUri->siteId,
'uri' => $siteUri->uri,
'sidebarPanel' => 1,
]),
]);

$event = new DefineHtmlEvent([
'html' => $html,
]);
Event::trigger(static::class, self::EVENT_DEFINE_HTML, $event);
Event::trigger(self::class, self::EVENT_DEFINE_META_FIELDS_HTML, $event);

return $event->html;
}
Expand Down
87 changes: 87 additions & 0 deletions src/templates/_element-sidebar.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{% import '_includes/forms' as forms %}

<div class="data">
<div class="heading">
{{ 'Status'|t('blitz') }}
</div>
<div class="value cacheStatus" style="justify-content: space-between">
{% if cached %}
{{ expired ? 'Expired'|t('blitz') : 'Cached'|t('blitz') }}
{% if currentUser.can('blitz:refresh-page') %}
{{ tag('button', {
text: 'Refresh'|t('blitz'),
class: 'refresh btn small',
data: {
action: refreshActionUrl,
},
}) }}
{% endif %}
{% else %}
{{ 'Uncached'|t('blitz') }}
{% endif %}
</div>
</div>
{% if cached %}
{% if dateCached %}
<div class="data date">
<div class="heading">
{{ 'Cached at'|t('blitz') }}
</div>
<div class="value">
{{ dateCached|datetime('short') }}
</div>
</div>
{% endif %}
{% if expiryDate %}
<div class="data date">
<div class="heading">
{{ expired ? 'Expired at'|t('blitz') : 'Expires at'|t('blitz') }}
</div>
<div class="value">
{{ expiryDate|datetime('short') }}
</div>
</div>
{% endif %}
{% endif %}

{% css %}
.blitz-element-sidebar .meta .data:first-of-type {
padding-top: 8px;
}
.blitz-element-sidebar .meta .data:last-of-type {
padding-bottom: 8px;
}
.blitz-element-sidebar .meta .data {
min-height: 0;
}
{% endcss %}

{% js %}
$('.blitz-element-sidebar .refresh').click(function(event) {
event.preventDefault();

if ($(this).hasClass('disabled')) {
return;
}

$(this).addClass('disabled');

Craft.sendActionRequest('POST', $(this).data('action'))
.then((response) => {
Craft.cp.displaySuccess(response.data.message);
$('.blitz-element-sidebar .cacheStatus').html(Craft.t('blitz', 'Refreshed'));
$('.blitz-element-sidebar .date').remove();
})
.catch(({response}) => {
if (response.data.message) {
Craft.cp.displayError(response.data.message);
}
else {
Craft.cp.displayError();
}
})
.finally(() => {
$(this).removeClass('disabled');
});
});
{% endjs %}
94 changes: 0 additions & 94 deletions src/templates/_sidebar-panel.twig

This file was deleted.

0 comments on commit 97fefc1

Please sign in to comment.