mirror of
https://gitee.com/ulthon/ulthon_information.git
synced 2026-03-03 16:24:28 +08:00
390 lines
15 KiB
HTML
390 lines
15 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>{$post.title}-{:get_system_config('site_name')}</title>
|
||
<meta name="keywords" content="{:get_system_config('site_keywords')}">
|
||
<meta name="description" content="{$post.desc|default=$post.title}" />
|
||
{include file='common/_require'/}
|
||
<link rel="stylesheet" href="/static/lib/heti/heti.min.css">
|
||
<link rel="stylesheet" href="/static/lib/prismjs/prism.css">
|
||
<link rel="stylesheet" href="/static/lib/viewer-1.1.0/viewer.min.css">
|
||
<script src="/static/lib/prismjs/prism.js"></script>
|
||
<script src="/static/lib/clipboard/clipboard.js"></script>
|
||
<script src="/static/lib/heti/heti-addon.min.js"></script>
|
||
<script src="/static/lib/viewer-1.1.0/viewer.min.js"></script>
|
||
<script src="/static/lib/jquery-viewer-1.0.1/jquery-viewer.min.js"></script>
|
||
|
||
<style>
|
||
.share {
|
||
cursor: pointer;
|
||
}
|
||
|
||
.share i {
|
||
font-size: 15px;
|
||
}
|
||
|
||
.share-tips-options div:hover {
|
||
opacity: 0.8;
|
||
}
|
||
|
||
.share-tips-options div {
|
||
|
||
height: 22px;
|
||
line-height: 22px;
|
||
|
||
white-space: nowrap;
|
||
text-align: center;
|
||
font-size: 12px;
|
||
border: none;
|
||
border-radius: 2px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.post-container {
|
||
margin-top: 15px;
|
||
}
|
||
|
||
.post-item {
|
||
display: flex;
|
||
justify-content: flex-start;
|
||
align-items: flex-start;
|
||
}
|
||
|
||
.post-item .left img {
|
||
width: 60px;
|
||
}
|
||
|
||
.post-item .right {
|
||
margin-left: 15px;
|
||
}
|
||
|
||
.post-item .content {
|
||
margin-top: 5px;
|
||
}
|
||
|
||
.ul-content img {
|
||
cursor: pointer;
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<body>
|
||
<div class="layui-container main-container">
|
||
<div class="layui-row layui-col-space12">
|
||
{include file='common/_left'/}
|
||
<div class="layui-col-md7">
|
||
<div class="main-container">
|
||
<div class="content-container">
|
||
<h1 class="title" id="title">
|
||
{$post.title}
|
||
</h1>
|
||
<div class="info">
|
||
<span>{$post->publish_time_text}</span>
|
||
<span>{:get_system_config('default_author')}</span>
|
||
<span class="share"><i class="layui-icon layui-icon-share"></i></span>
|
||
|
||
</div>
|
||
<div class="desc">
|
||
{$post.desc_html|raw}
|
||
</div>
|
||
{if !empty($post.jump_to_url) && $post.jump_to_url_status != 0}
|
||
<div class="jump-container">
|
||
<a href="{$post.jump_to_url}" class="layui-btn jump-btn" target="_blank">{$post.jump_to_btn_title|default='立即跳转'}</a>
|
||
</div>
|
||
{if $post.jump_to_url_status == 2 }
|
||
<script>
|
||
window.layuiInitSuccess.push(function () {
|
||
var isJumped = false;
|
||
var countDownNum = 5;
|
||
var closeJump = false;
|
||
var jumpUrl = '{$post.jump_to_url}'
|
||
window.layerJump = layer.confirm('即将自动打开新页面(倒计时<span class="jump-count-dowm">5</span>秒)', {
|
||
btn: ['立即跳转', '取消'],
|
||
offset: ['20%']
|
||
}
|
||
, function (index, layero) {
|
||
//按钮【按钮一】的回调
|
||
window.open(jumpUrl)
|
||
isJumped = true
|
||
layer.close(index)
|
||
}, function (index) {
|
||
//按钮【按钮二】的回调
|
||
closeJump = true
|
||
})
|
||
|
||
window.timerJump = setInterval(() => {
|
||
countDownNum--
|
||
$('.jump-count-dowm').text(countDownNum)
|
||
if (countDownNum <= 0) {
|
||
clearInterval(window.timerJump)
|
||
layer.close(window.layerJump)
|
||
if (!closeJump && !isJumped) {
|
||
window.open(jumpUrl)
|
||
}
|
||
}
|
||
}, 1000);
|
||
})
|
||
</script>
|
||
{/if}
|
||
{/if}
|
||
<div class="">
|
||
<article class="ul-content entry heti heti--classic">
|
||
{$post->start_content|raw}
|
||
{$post->content_html_show|raw}
|
||
{$post->end_content|raw}
|
||
|
||
{:\\app\\common\\tools\\PostBlock::copyright($post)}
|
||
</article>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="post-container">
|
||
|
||
<fieldset class="layui-elem-field layui-field-title">
|
||
<legend>最近浏览</legend>
|
||
<div class="layui-field-box">
|
||
<div class="ul-avatar-sidebar-list">
|
||
{volist name='list_last_visit' id='vo'}
|
||
<div class="ul-avatar-sidebar-list-item" style="width: 25%;">
|
||
<div class="ul-avatar-sidebar-list-item-img" style="background-image: url({$vo.avatar_src});"></div>
|
||
<div class="ul-avatar-sidebar-list-item-info">
|
||
<div class="ul-avatar-sidebar-list-item-title">{$vo.nickname_title}</div>
|
||
<div class="ul-avatar-sidebar-list-item-intro">
|
||
{$vo.create_time_title}
|
||
{$vo.client_name}
|
||
{$vo.client_os_name}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{/volist}
|
||
</div>
|
||
<div style="text-align: right;">
|
||
<a href="{:url('Index/visit',['post_id'=>$post.id])}">更多记录,还有谁在看?</a>
|
||
</div>
|
||
<div class="layui-word-aux">累计浏览次数:{$post->hits_title}</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div class="post-container">
|
||
|
||
<fieldset class="layui-elem-field layui-field-title">
|
||
<legend>评论</legend>
|
||
<div class="layui-field-box">
|
||
<div class="post-list">
|
||
{volist name='$post.comments' id='comment'}
|
||
<div class="post-item" id="comment-{$comment.id}" data-id="{$comment.id}">
|
||
<div class="left">
|
||
<img src="{$comment.user.avatar}" alt="">
|
||
</div>
|
||
<div class="right">
|
||
<div>{$comment.user.nickname|default=$comment.user.account}</div>
|
||
<div class="content">{$comment.content}</div>
|
||
{if !empty($user_info) && $user_info.uid == $comment.user_uid }
|
||
<div>
|
||
<div class="layui-btn layui-btn-xs delete" style="cursor: pointer;">删除</div>
|
||
</div>
|
||
{/if}
|
||
</div>
|
||
</div>
|
||
{/volist}
|
||
</div>
|
||
<div class="post-main">
|
||
<form action="" class="layui-form">
|
||
<input type="hidden" name="post_id" value="{$post.id}">
|
||
<div class="layui-form-item layui-form-text">
|
||
<textarea name="content" placeholder="请输入内容" class="layui-textarea" autocomplete="off"></textarea>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<button class="layui-btn" type="submit" lay-filter="postComment" lay-submit>发表评论</button>
|
||
{empty name='Request.session.user_uid'}
|
||
<a class="layui-word-aux" href="{$login_url|default=''}">点击登录</a>
|
||
{else /}
|
||
<a href="{:get_system_config('user_hub_host')}" target="_blank" class="layui-word-aux">{$user_info.nickname|default=$user_info.account}</a>
|
||
<a href="{:url('index/Logout',['back_url'=>$post.read_url])}" class="layui-word-aux">退出</a>
|
||
{/empty}
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
{include file='common/_right'/}
|
||
</div>
|
||
</div>
|
||
<div class="share-tips-options" style="display: none;">
|
||
<div class="text" data-clipboard-text="{$post.share_text}">分享文案</div>
|
||
</div>
|
||
<div class="layui-hide-md" id="is-md-show">
|
||
|
||
</div>
|
||
<script>
|
||
const heti = new Heti('.heti');
|
||
heti.autoSpacing(); // 自动进行中西文混排美化和标点挤压
|
||
</script>
|
||
<script type="html" id="title-group">
|
||
<div class="ul-nav-tree-2-group">
|
||
<a class="ul-nav-tree-2-group-title"></a>
|
||
<div class="ul-nav-tree-2-group-main">
|
||
|
||
</div>
|
||
</div>
|
||
</script>
|
||
<script type="html" id="title-item">
|
||
<a href="" class="ul-nav-tree-2-item">
|
||
<div class="ul-nav-tree-2-item-title"></div>
|
||
</a>
|
||
</script>
|
||
<script>
|
||
|
||
layui.use(['form'], function () {
|
||
var form = layui.form
|
||
|
||
form.on('submit(postComment)', function (data) {
|
||
$.post('{:url("PostComment/save")->suffix(false)}',
|
||
data.field
|
||
, function (result) {
|
||
if (result.code == 0) {
|
||
layer.msg('发表评论成功')
|
||
setTimeout(() => {
|
||
location.reload()
|
||
}, 1200);
|
||
} else {
|
||
layer.msg(result.msg)
|
||
}
|
||
})
|
||
|
||
return false;
|
||
})
|
||
|
||
})
|
||
|
||
$('.post-item .delete').click(function () {
|
||
var item = this;
|
||
|
||
var parent = $(item).closest('.post-item')
|
||
|
||
layer.confirm('确定要删除吗?', function () {
|
||
$.post('{:url("PostComment/delete")->suffix(false)}', {
|
||
id: $(parent).data('id')
|
||
}, function (result) {
|
||
if (result.code == 0) {
|
||
layer.msg('删除成功');
|
||
setTimeout(() => {
|
||
location.reload()
|
||
}, 1200);
|
||
} else {
|
||
layer.msg(result.msg)
|
||
}
|
||
})
|
||
})
|
||
})
|
||
|
||
$('.share').click(function () {
|
||
var html = $('.share-tips-options').prop("outerHTML")
|
||
|
||
window.layerTips = layer.tips(html, this, {
|
||
tips: 2,
|
||
time: 0,
|
||
skin: 'share-tips',
|
||
success: function (layero) {
|
||
console.log(layero);
|
||
$(layero.css('top', $(layero).offset()['top'] - 15))
|
||
$(layero).find('.share-tips-options').show()
|
||
|
||
}
|
||
})
|
||
})
|
||
$(document).click(function (e) {
|
||
if ($(e.target).closest('.share').length == 0 && $(e.target).closest('.share-tips').length == 0) {
|
||
layer.close(window.layerTips)
|
||
}
|
||
})
|
||
var clipboard = new ClipboardJS('.share-tips .share-tips-options .text')
|
||
clipboard.on('success', function (e) {
|
||
layer.msg('复制成功')
|
||
});
|
||
|
||
$('.ul-content').viewer({});;
|
||
|
||
</script>
|
||
|
||
<!-- 处理左侧子导航 -->
|
||
<script>
|
||
$('.ul-group-title').text('{$post.title}').attr('href', '#title')
|
||
|
||
var listPostSubTitle = [];
|
||
$('.ul-content').find('h1,h2,h3').each(function (index, elem) {
|
||
var id = 'sub-title-' + index
|
||
var text = $(elem).text();
|
||
var type = 'title';
|
||
|
||
$(elem).attr('id', id)
|
||
|
||
if (elem.nodeName == 'H3') {
|
||
type = 'item'
|
||
}
|
||
|
||
listPostSubTitle.push({
|
||
id: id,
|
||
text: text,
|
||
type: type
|
||
});
|
||
})
|
||
|
||
|
||
listPostSubTitle.forEach(item => {
|
||
if (item.type == 'title') {
|
||
var titleGroupElem = $($('#title-group').html())
|
||
titleGroupElem.appendTo('#post-titles .ul-nav-tree-2')
|
||
titleGroupElem.find('.ul-nav-tree-2-group-title').text(item.text).attr('href', '#' + item.id)
|
||
} else if (item.type == 'item') {
|
||
var titleItemElem = $($('#title-item').html())
|
||
titleItemElem.appendTo($('#post-titles').find('.ul-nav-tree-2-group').last().find('.ul-nav-tree-2-group-main'))
|
||
titleItemElem.find('.ul-nav-tree-2-item-title').text(item.text)
|
||
titleItemElem.attr('href', '#' + item.id)
|
||
}
|
||
});
|
||
|
||
</script>
|
||
|
||
|
||
<script>
|
||
|
||
var titleTopRange = $('.nav-left-list').outerHeight() + $('.logo').outerHeight() + 30
|
||
|
||
$(window).scroll(function () {
|
||
|
||
if ($('#is-md-show').is(':visible')) {
|
||
// 当屏幕不是md时,不要固定标题导航
|
||
return;
|
||
}
|
||
|
||
var st = $(window).scrollTop();
|
||
|
||
if (st > titleTopRange) {
|
||
$('#post-titles').css('position', 'fixed');
|
||
$('#post-titles').css('top', '10px');
|
||
$('#post-titles').css('width', $('.nav-left-list').outerWidth() + 'px');
|
||
} else {
|
||
$('#post-titles').css('position', 'unset');
|
||
}
|
||
});
|
||
</script>
|
||
|
||
<script>
|
||
$.get('{:url("parseVisit",["visit_id"=>$model_visit->id])}')
|
||
</script>
|
||
|
||
</body>
|
||
|
||
</html> |