Files
cmsPRO/templates_user/articles/article.php
2026-02-22 21:59:33 +01:00

229 lines
10 KiB
PHP

<? global $lang, $lang_id; ?>
<?
$text = $this -> article['language']['text'];
$text = \front\factory\Articles::generateHeadersIds( $text );
?>
<div class="article article-<?= $this->article['id']; ?>">
<?
if ($this->article['show_title'])
echo '<h3 class="article-title">' . $this->article['language']['title'] . '</h3>';
echo '<div class="wrapper">';
if ($this->article['show_date_add'])
echo '<span class="date-add">' . '<i class="fa fa-calendar-o "></i>' . date('Y-m-d', strtotime($this->article['date_add'])) . '</span> <span class="wrapper-space">/</span>';
if($this->article['views'])
echo '<span class="views"><i class="fa fa-eye"></i>'.$this->article["views"].'</span>';
echo '</div>';
if ($this->article['social_icons']) :
?>
<div class="social-icons">
<h5 class="social-icons-text">Udostępnij:</h5>
<a class="fb" href="http://www.facebook.com/sharer.php?u=<?= \S::get_domain_url($_SERVER['SERVER_NAME']); ?>/<?= $url; ?>" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;" title="facebook" target="_blank" rel="nofollow">
<img src="/images/system/logo-facebook.jpg" alt="facebook" />
</a>
<a class="pinterest" href="http://pinterest.com/pin/create/button/?url=<?= \S::get_domain_url($_SERVER['SERVER_NAME']); ?>/<?= $url; ?>" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;" title="pinterest" target="_blank" rel="nofollow">
<img src="/images/system/logo-pinterest.jpg" alt="pinterest" />
</a>
<a class="twitter" href="http://twitter.com/share?url=<?= \S::get_domain_url($_SERVER['SERVER_NAME']); ?>/<?= $url; ?>" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=450,width=600');return false;" title="twitter" target="_blank" rel="nofollow">
<img src="/images/system/logo-twitter.jpg" alt="twitter" />
</a>
<a class="linkedin" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=<?= \S::get_domain_url($_SERVER['SERVER_NAME']); ?>/<?= $url; ?>" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=500,width=850');return false;" title="linked in" target="_blank" rel="nofollow">
<img src="/images/system/logo-linkedin.jpg" alt="linkedin" />
</a>
<a class="gp" href="https://plus.google.com/share?url=<?= \S::get_domain_url($_SERVER['SERVER_NAME']); ?>/<?= $url; ?>" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;" title="google+" target="_blank" rel="nofollow">
<img src="/images/system/logo-google.jpg" alt="google+" />
</a>
</div>
<?
endif;
if ($main_img = $this->article['language']['main_image']) :
?>
<div class="main-image">
<img src="<?= $main_img; ?>" alt="<?= htmlspecialchars($this->article['language']['title']); ?>">
</div>
<?
endif;
if ( $this -> article['params']['image_source'] )
echo '<div class="image-source"><span>źródło:</span> ' . $this -> article['params']['image_source'] . '</div>';
$this->article['language']['seo_link'] ? $url = $this->article['language']['seo_link'] : $url = 'a-' . $this->article['id'] . '-' . \S::seo($this->article['language']['title']);
?>
<? if ($this->article['repeat_entry']) : ?>
<div class="entry">
<?= $this->article['language']['entry']; ?>
</div>
<? endif; ?>
<? if ( $this -> article['show_table_of_contents'] ):?>
<? if ( $this -> article['language']['table_of_contents'] ):?>
<div class="table-of-contents">
<div class="title">
<span>Spis treści</span>
</div>
<?= $this -> article['language']['table_of_contents'];?>
</div>
<? else:?>
<div class="table-of-contents">
<div class="title">
<span>Spis treści</span>
</div>
<?= \front\factory\Articles::generateTableOfContents( $text );?>
</div>
<? endif;?>
<? endif;?>
<div class="text">
<?
/* artykuł wewnątrz innego artykułu */
preg_match_all('/ARTYKUL:[0-9]*/', $this->article['language']['text'], $articles_list);
if (is_array($articles_list[0])) foreach ($articles_list[0] as $article_tmp) {
$article_tmp = explode(':', $article_tmp);
if ($article_tmp[1] != $this->article['id'])
$text = str_replace('[ARTYKUL:' . $article_tmp[1] . ']', \front\view\Articles::article_full($article_tmp[1], $lang_id), $text);
else
$text = str_replace('[ARTYKUL:' . $article_tmp[1] . ']', '', $text);
}
/* galeria w innym miejscu niż na końcu */
if (strpos($this->article['language']['text'], '[GALERIA]') !== false) {
if (is_array($this->article['images'])) :
$tpl = new \Tpl;
$tpl->article = $this->article;
$tpl->images = $this->article['images'];
$gallery = $tpl->render('articles/article-gallery');
endif;
$text = preg_replace('/(<p(.*)>\[GALERIA\]<\/p>|<div(.*)>\[GALERIA\]<\/div>)/', $gallery, $text);
}
/* załączniki w innym miejscu niż na końcu */
if (strpos($this->article['language']['text'], '[ZALACZNIKI]') !== false) {
if (is_array($this->article['files'])) :
$tpl = new \Tpl;
$tpl->article_id = $this->article['id'];
$tpl->files = $this->article['files'];
$files = $tpl->render('articles/article-files');
endif;
$text = preg_replace('/(<p(.*)>\[ZALACZNIKI\]<\/p>|<div(.*)>\[ZALACZNIKI\]<\/div>)/', $files, $text);
}
/* slider */
if (strpos($text, '[SLIDER]') !== false) {
while (strpos($text, '[SLIDER]') !== false) {
$text_tmp = explode('[SLIDER]', $text);
$before = $text_tmp[0];
for ($i = 1; $i < count($text_tmp); $i++) {
$temp = explode('[/SLIDER]', $text_tmp[$i]);
$code = $temp[0];
ob_start();
$images_tmp = explode('|', $code);
if (is_array($images_tmp) and !empty($images_tmp)) foreach ($images_tmp as $image_tmp) {
$image = explode(';', $image_tmp);
$images[] = $image;
}
$tpl = new \Tpl;
$tpl->images = $images;
$tpl->article_id = $this->article['id'];
$tpl->i = $i;
echo $tpl->render('articles/slider');
$out .= ob_get_contents();
ob_end_clean();
$out .= $temp[1];
}
$text = $before . $out;
}
}
$dom = new DomDocument('1.0', 'UTF-8');
$dom->loadHTML('<?xml version="1.0" encoding="UTF-8"?>' . "\n" . $text);
$elements = $dom->getElementsByTagName('img');
foreach ($elements as $element) {
if (strpos($element->getAttribute('class'), 'zoom') !== false) {
$element_tmp = $dom->createElement('a', '');
$element_tmp->setAttribute('href', $element->getAttribute('src'));
$element_tmp->setAttribute('rel', 'article-' . $this->article['id']);
$element_tmp->setAttribute('class', 'fancybox');
$element_tmp_2 = $element->cloneNode(false);
$element_tmp->appendChild($element_tmp_2);
$element->parentNode->replaceChild($element_tmp, $element);
}
}
echo $dom->saveHTML();
?>
</div>
<?
if (is_array($this->article['images']) and strpos($this->article['language']['text'], '[GALERIA]') === false) :
$tpl = new \Tpl;
$tpl->article = $this->article;
$tpl->images = $this->article['images'];
echo $tpl->render('articles/article-gallery');
endif;
if (is_array($this->article['files']) and strpos($this->article['language']['text'], '[ZALACZNIKI]') === false) :
$tpl = new \Tpl;
$tpl->article_id = $this->article['id'];
$tpl->files = $this->article['files'];
echo $tpl->render('articles/article-files');
endif;
?>
<?
if ( $this -> article['id_author'] ):
$author = \front\factory\Authors::get_single_author( $this -> article['id_author'] );
endif;
?>
<div class="author">
<div class="row author-row">
<div class="col-md-2 author-img">
<? if ( $author['image'] ):?><img src="<?= $author['image'];?>" alt="<?= $author['author'];?>"><? endif;?>
</div>
<div class="col-md-10 author-description">
<?= $author['languages'][ $lang_id ]['description'];?>
</div>
</div>
</div>
<?
?>
</div>
<link class="footer" href="/libraries/fancyBox/jquery.fancybox.css" rel="stylesheet" type="text/css">
<link class="footer" href="/libraries/fancyBox/helpers/jquery.fancybox-buttons.css" rel="stylesheet" type="text/css">
<script class="footer" type="text/javascript" src="/libraries/fancyBox/jquery.fancybox.js"></script>
<script class="footer" type="text/javascript" src="/libraries/fancyBox/helpers/jquery.fancybox-buttons.js"></script>
<script class="footer" type="text/javascript">
$(document).ready(function() {
$(".gallery a.image").fancybox({
closeBtn: false,
helpers: {
buttons: {}
}
});
<? if ($this->article['language']['table_of_contents']) : ?>
window.addEventListener('DOMContentLoaded', () => {
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
const id = entry.target.getAttribute('id');
if (entry.intersectionRatio > 0) {
document.querySelector('.article-<?= $this->article['id']; ?> .table-of-contents li a[href$="#' + id + '"]').parentElement.classList.add('active');
} else {
document.querySelector('.article-<?= $this->article['id']; ?> .table-of-contents li a[href$="#' + id + '"]').parentElement.classList.remove('active');
}
});
});
document.querySelectorAll('.article-<?= $this->article['id']; ?> .text div[id]').forEach((div) => {
observer.observe(div);
});
});
<? endif; ?>
});
</script>