-
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
class pluginDisqus extends Plugin
|
||||
{
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->dbFields = array(
|
||||
'shortname' => '',
|
||||
'enablePages' => true,
|
||||
'enableStatic' => true,
|
||||
'enableSticky' => true
|
||||
);
|
||||
}
|
||||
|
||||
public function form()
|
||||
{
|
||||
global $L;
|
||||
|
||||
$html = '<div class="alert alert-primary" role="alert">';
|
||||
$html .= $this->description();
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<label>' . $L->get('disqus-shortname') . '</label>';
|
||||
$html .= '<input name="shortname" id="jsshortname" type="text" dir="auto" value="' . $this->getValue('shortname') . '">';
|
||||
$html .= '<span class="tip">' . $L->get('Get the shortname from the Disqus general settings') . '</span>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<label>' . $L->get('enable-disqus-on-pages') . '</label>';
|
||||
$html .= '<select name="enablePages">';
|
||||
$html .= '<option value="true" ' . ($this->getValue('enablePages') === true ? 'selected' : '') . '>' . $L->get('enabled') . '</option>';
|
||||
$html .= '<option value="false" ' . ($this->getValue('enablePages') === false ? 'selected' : '') . '>' . $L->get('disabled') . '</option>';
|
||||
$html .= '</select>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<label>' . $L->get('enable-disqus-on-static-pages') . '</label>';
|
||||
$html .= '<select name="enableStatic">';
|
||||
$html .= '<option value="true" ' . ($this->getValue('enableStatic') === true ? 'selected' : '') . '>' . $L->get('enabled') . '</option>';
|
||||
$html .= '<option value="false" ' . ($this->getValue('enableStatic') === false ? 'selected' : '') . '>' . $L->get('disabled') . '</option>';
|
||||
$html .= '</select>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<label>' . $L->get('enable-disqus-on-sticky-pages') . '</label>';
|
||||
$html .= '<select name="enableSticky">';
|
||||
$html .= '<option value="true" ' . ($this->getValue('enableSticky') === true ? 'selected' : '') . '>' . $L->get('enabled') . '</option>';
|
||||
$html .= '<option value="false" ' . ($this->getValue('enableSticky') === false ? 'selected' : '') . '>' . $L->get('disabled') . '</option>';
|
||||
$html .= '</select>';
|
||||
$html .= '</div>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
public function pageEnd()
|
||||
{
|
||||
global $url;
|
||||
global $WHERE_AM_I;
|
||||
|
||||
// Do not show disqus on page not found
|
||||
if ($url->notFound()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($WHERE_AM_I === 'page') {
|
||||
global $page;
|
||||
if ($page->published() && $this->getValue('enablePages')) {
|
||||
return $this->javascript();
|
||||
}
|
||||
if ($page->isStatic() && $this->getValue('enableStatic')) {
|
||||
return $this->javascript();
|
||||
}
|
||||
if ($page->sticky() && $this->getValue('enableSticky')) {
|
||||
return $this->javascript();
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private function javascript()
|
||||
{
|
||||
global $page;
|
||||
$pageURL = $page->permalink();
|
||||
$pageID = $page->uuid();
|
||||
$shortname = $this->getValue('shortname');
|
||||
|
||||
$code = <<<EOF
|
||||
<!-- Disqus plugin -->
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
|
||||
var disqus_config = function () {
|
||||
this.page.url = '$pageURL';
|
||||
this.page.identifier = '$pageID';
|
||||
};
|
||||
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
s.src = 'https://$shortname.disqus.com/embed.js';
|
||||
s.setAttribute('data-timestamp', +new Date());
|
||||
(d.head || d.body).appendChild(s);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
<!-- /Disqus plugin -->
|
||||
EOF;
|
||||
return $code;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user