Add files via upload
This commit is contained in:
parent
ed7db38abd
commit
eec60a63f2
10
z_daisy/conf.json
Normal file
10
z_daisy/conf.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "「雏菊」 - 主题",
|
||||||
|
"brief": "雏菊 - xiuno 4.0 主题",
|
||||||
|
"version": "1.0",
|
||||||
|
"bbs_version": "4.0",
|
||||||
|
"installed": 0,
|
||||||
|
"enable": 0,
|
||||||
|
"hooks_rank": [],
|
||||||
|
"dependencies": []
|
||||||
|
}
|
21
z_daisy/hook/forum_js.htm
Normal file
21
z_daisy/hook/forum_js.htm
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
/*判断可显示区域高度 用于决定显示主图的高度 这里高度比例和内容页不同*/
|
||||||
|
var getBgHeight = function(windowHeight, bannerHeight, mobileBannerHeight){
|
||||||
|
windowHeight = windowHeight || 560;
|
||||||
|
if (windowHeight > window.screen.availHeight) {
|
||||||
|
windowHeight = window.screen.availHeight;
|
||||||
|
}
|
||||||
|
bannerHeight = bannerHeight.trim();
|
||||||
|
mobileBannerHeight = mobileBannerHeight.trim();
|
||||||
|
if (window.innerHeight > window.innerWidth) {
|
||||||
|
bannerHeight = parseFloat(mobileBannerHeight);
|
||||||
|
} else {
|
||||||
|
bannerHeight = parseFloat(bannerHeight);
|
||||||
|
}
|
||||||
|
bannerHeight = Math.round(windowHeight * bannerHeight / 100);
|
||||||
|
return bannerHeight;
|
||||||
|
};
|
||||||
|
var head = $("#masthead");
|
||||||
|
var bgHeight = getBgHeight(window.innerHeight, '35', '25');
|
||||||
|
head.css('height', bgHeight + "px");
|
||||||
|
</script>
|
32
z_daisy/hook/forum_start.htm
Normal file
32
z_daisy/hook/forum_start.htm
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<!-- 直接结束掉 container 并去除上下边距 -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 部分 style 打包放进气泡的 CSS 文件, 只有列表,主题,编辑页面需要 主页不要 -->
|
||||||
|
<style>
|
||||||
|
.blog-background { background:#2C2A2A url(<?php echo $forum['icon_url'];?>); color:#CCC; }
|
||||||
|
#body { padding-bottom: 0; padding-top: 0;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- CSS3 气泡 不能放全局 否则不需要气泡的页面会被遮挡-->
|
||||||
|
<link rel="stylesheet" href="plugin/z_daisy/view/css/bubble.css">
|
||||||
|
|
||||||
|
<!-- DAISY 需要最大宽度, 所以要把 header 中限制宽度的 DIV 移到每个页面中去? -->
|
||||||
|
<header id="masthead">
|
||||||
|
<div class="blog-background"></div>
|
||||||
|
<div class="inner">
|
||||||
|
<!-- 似乎没有必要再显示名称
|
||||||
|
<h1 class="blog-title" style="" itemprop="name"><?php //echo $forum['name'];?></h1>
|
||||||
|
<h2 class="blog-description light bordered bordered-top" style="" itemprop="description">12 月 23 日 2015 年 • 已有 3952 位童鞋围观过</h2>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
<!-- CSS3 气泡 同上 放全局并先隐藏-->
|
||||||
|
<ul class="bg-bubbles">
|
||||||
|
<li></li><li></li><li></li><li></li><li></li>
|
||||||
|
<li></li><li></li><li></li><li></li><li></li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 重新开始 container 这是一种兼容的做法 thread 页的 id="body" 将失去意义-->
|
||||||
|
<div class="container">
|
58
z_daisy/hook/post_js.htm
Normal file
58
z_daisy/hook/post_js.htm
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<script>
|
||||||
|
//上传view图片到附件表
|
||||||
|
$('#addattachs').on('change', function(e) {
|
||||||
|
var files = xn.get_files_from_event(e);
|
||||||
|
if (!files) return;
|
||||||
|
// 并发下会 服务端 session 写入会有问题,由客户端控制改为串行
|
||||||
|
var jprogress = $('.attachlist_parents').find('progress');
|
||||||
|
if (!$('.attachlist_parents').find('.attachlist').length) {
|
||||||
|
$('.attachlist_parents').append('<ul class="attachlist"><ul>');
|
||||||
|
}
|
||||||
|
if(!jprogress.length) {
|
||||||
|
jprogress = $('<progress class="progress progress-success" value="0" max="100">0%</progress>').appendTo('.attachlist_parent > ul');
|
||||||
|
//jprogress = $('.attachlist_parents').append('<div class="progress"><div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">25%</div></div>');
|
||||||
|
}
|
||||||
|
$.each_sync(files, function(i, callback) {
|
||||||
|
var file = files[i];
|
||||||
|
xn.upload_file(file, xn.url('attach-create'), {
|
||||||
|
is_image: 2
|
||||||
|
}, function(code, message) {
|
||||||
|
if (code != 0) return $.alert(message);
|
||||||
|
// 把文件 append 到附件列表 替换到wivebg
|
||||||
|
var url = message.url;
|
||||||
|
var filetype = message.filetype;
|
||||||
|
var aid = message.aid;
|
||||||
|
|
||||||
|
$('.attachlist').append('<li aid="' + aid + '"><a href="' + message.url + '" target="_blank"><i class="icon filetype ' + filetype + '"></i> ' + message.orgfilename + '</a> <a href="javascript:void(0);" class="delete m-l-1"><i class="icon-remove"></i> <?php echo lang('delete');?></a></li>');
|
||||||
|
callback();
|
||||||
|
jprogress.hide();
|
||||||
|
jprogress.val(0);
|
||||||
|
jprogress.text('0%');
|
||||||
|
}, function(percent) {
|
||||||
|
/*
|
||||||
|
var jprogress = $('.attachlist_parents').find('.progress');
|
||||||
|
jprogressbar = jprogress.find('.progress-bar');
|
||||||
|
jprogressbar.css('width', percent+'%');
|
||||||
|
jprogressbar.text(percent+'%');
|
||||||
|
*/
|
||||||
|
jprogress.show();
|
||||||
|
jprogress.val(percent);
|
||||||
|
jprogress.text(percent+'%');
|
||||||
|
console.log('progress:'+ percent);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 删除附件 这里的删除hhh
|
||||||
|
$('.attachlist_parents').on('click', 'a.delete', function() {
|
||||||
|
var jlink = $(this);
|
||||||
|
var jli = jlink.parents('li');
|
||||||
|
var aid = jli.attr('aid');
|
||||||
|
if(!window.confirm(lang.confirm_delete)) return false;
|
||||||
|
$.xpost(xn.url('attach-delete-'+aid), function(code, message) {
|
||||||
|
if(code != 0) return $.alert(message);
|
||||||
|
jlink.parent().remove();
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
</script>
|
20
z_daisy/hook/post_start.htm
Normal file
20
z_daisy/hook/post_start.htm
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
//判断图片是否存在输出BG路径, 如果没有则为空
|
||||||
|
$u = db_find_one('attach', array('tid'=>$tid,'isimage'=>2));
|
||||||
|
if ($u==NULL){ $viewimg = '';}
|
||||||
|
else{ $viewimg = 'url('.$conf['upload_url'].'attach/'.$u['filename'].')'; }
|
||||||
|
?>
|
||||||
|
<!-- 部分 style 打包成文件放进气泡的 CSS, 只有列表,主题,编辑页面需要 主页不要 -->
|
||||||
|
<style>.viewimg { background:#2C2A2A <?php echo $viewimg; ?>; color:#CCC; }</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- CSS3 气泡 不能放全局 否则不需要气泡的页面会被遮挡-->
|
||||||
|
<link rel="stylesheet" href="plugin/z_daisy/view/css/bubble.css">
|
||||||
|
|
||||||
|
<!-- 主题图片的上传按钮, 只有编辑页需要 还要有删除按钮 -->
|
||||||
|
<div class="row" style="padding: 0px 0 0 0">
|
||||||
|
<div class="col-lg-10 attachlist_parents">
|
||||||
|
<p class="small text-right"><label class="addattach" id="addattachs"><i class="icon-plus-square-o icon-3x"></i><input type="file" multiple="multiple" /></label></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
21
z_daisy/hook/thread_js.htm
Normal file
21
z_daisy/hook/thread_js.htm
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
/*判断可显示区域高度 用于决定显示主图的高度*/
|
||||||
|
var getBgHeight = function(windowHeight, bannerHeight, mobileBannerHeight){
|
||||||
|
windowHeight = windowHeight || 560;
|
||||||
|
if (windowHeight > window.screen.availHeight) {
|
||||||
|
windowHeight = window.screen.availHeight;
|
||||||
|
}
|
||||||
|
bannerHeight = bannerHeight.trim();
|
||||||
|
mobileBannerHeight = mobileBannerHeight.trim();
|
||||||
|
if (window.innerHeight > window.innerWidth) {
|
||||||
|
bannerHeight = parseFloat(mobileBannerHeight);
|
||||||
|
} else {
|
||||||
|
bannerHeight = parseFloat(bannerHeight);
|
||||||
|
}
|
||||||
|
bannerHeight = Math.round(windowHeight * bannerHeight / 100);
|
||||||
|
return bannerHeight;
|
||||||
|
};
|
||||||
|
var head = $("#masthead");
|
||||||
|
var bgHeight = getBgHeight(window.innerHeight, '65', '45');
|
||||||
|
head.css('height', bgHeight + "px");
|
||||||
|
</script>
|
35
z_daisy/hook/thread_start.htm
Normal file
35
z_daisy/hook/thread_start.htm
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<!-- 直接结束掉 container 并去除上下边距 -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
//判断图片是否存在 输出BG路径, 没有则为空
|
||||||
|
$u = db_find_one('attach', array('tid'=>$tid,'isimage'=>2));
|
||||||
|
if ($u==NULL){ $viewimg = '';}
|
||||||
|
else{ $viewimg = 'url('.$conf['upload_url'].'attach/'.$u['filename'].')'; }
|
||||||
|
?>
|
||||||
|
<!-- 部分 style 打包放进气泡的 CSS 文件, 只有列表,主题,编辑页面需要 主页不要 -->
|
||||||
|
<style>
|
||||||
|
.blog-background { background:#2C2A2A <?php echo $viewimg; ?>; color:#CCC; }
|
||||||
|
#body { padding-bottom: 0; padding-top: 0;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- CSS3 气泡 不能放全局 否则不需要气泡的页面会被遮挡-->
|
||||||
|
<link rel="stylesheet" href="plugin/z_daisy/view/css/bubble.css">
|
||||||
|
|
||||||
|
<!-- DAISY 需要最大宽度, 所以要把 header 中限制宽度的 DIV 移到每个页面中去? -->
|
||||||
|
<header id="masthead">
|
||||||
|
<div class="blog-background"></div>
|
||||||
|
<div class="inner">
|
||||||
|
<h1 class="blog-title" style="" itemprop="name"><?php echo $thread['subject'];?></h1>
|
||||||
|
<h2 class="blog-description light bordered bordered-top" style="" itemprop="description">12 月 23 日 2015 年 • 已有 3952 位童鞋围观过</h2>
|
||||||
|
</div>
|
||||||
|
<!-- CSS3 气泡 同上 放全局并先隐藏-->
|
||||||
|
<ul class="bg-bubbles">
|
||||||
|
<li></li><li></li><li></li><li></li><li></li>
|
||||||
|
<li></li><li></li><li></li><li></li><li></li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 重新开始 container 这是一种兼容的做法 thread 页的 id="body" 将失去意义-->
|
||||||
|
<div class="container">
|
BIN
z_daisy/icon.png
Normal file
BIN
z_daisy/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
53
z_daisy/overwrite/view/htms/footer.inc.htm
Normal file
53
z_daisy/overwrite/view/htms/footer.inc.htm
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<?php $db = G('db');?>
|
||||||
|
<?php $starttime = G('starttime');?>
|
||||||
|
<?php $time = G('time');?>
|
||||||
|
<?php $forumlist = G('forumlist');?>
|
||||||
|
<?php $forumarr = G('forumarr');?>
|
||||||
|
<?php $fid = G('fid');?>
|
||||||
|
<?php $conf = G('conf');?>
|
||||||
|
<?php $static_version = $conf['static_version'];?>
|
||||||
|
|
||||||
|
<!--{hook footer_start.htm}-->
|
||||||
|
|
||||||
|
<?php echo xn_debug_info(); ?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--{hook footer_nav_before.htm}-->
|
||||||
|
|
||||||
|
<?php include _include(APP_PATH.'view/htm/footer_nav.inc.htm');?>
|
||||||
|
|
||||||
|
<!--{hook footer_nav_after.htm}-->
|
||||||
|
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script>window.location = '<?php echo url('browser');?>';</script>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
<?php $browser = get__browser();?>
|
||||||
|
<?php if($browser['name'] == 'ie') { ?>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/es6-shim.js<?php echo $static_version;?>"></script>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!--{hook footer_js_before.htm}-->
|
||||||
|
<script src="lang/<?php echo $conf['lang'];?>/bbs.js<?php echo $static_version;?>"></script>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/jquery-3.1.0.js<?php echo $static_version;?>"></script>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/tether.js<?php echo $static_version;?>"></script>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/bootstrap.js<?php echo $static_version;?>"></script>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/bootstrap-plugin.js<?php echo $static_version;?>"></script>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/async.js<?php echo $static_version;?>"></script>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/xiuno.js<?php echo $static_version;?>"></script>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/form.js<?php echo $static_version;?>"></script>
|
||||||
|
<script>
|
||||||
|
var debug = DEBUG = <?php echo DEBUG; ?>;
|
||||||
|
var url_rewrite_on = <?php echo $conf['url_rewrite_on'];?>;
|
||||||
|
var forumarr = <?php echo xn_json_encode($forumarr);?>;
|
||||||
|
var fid = <?php echo $fid;?>;
|
||||||
|
</script>
|
||||||
|
<script src="<?php echo $conf['view_url'];?>js/bbs.js<?php echo $static_version;?>"></script>
|
||||||
|
<!--{hook footer_js_after.htm}-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<!--{hook footer_end.htm}-->
|
||||||
|
<?php echo cron_run();?>
|
17
z_daisy/overwrite/view/htms/footer_nav.inc.htm
Normal file
17
z_daisy/overwrite/view/htms/footer_nav.inc.htm
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
<div class="text-muted" id="footer">
|
||||||
|
<div class="container" style="overflow: hidden;">
|
||||||
|
<dl class="row">
|
||||||
|
<dt>
|
||||||
|
<!--{hook footer_footer_left_start.htm}-->
|
||||||
|
Powered by <a href="http://bbs.xiuno.com/" target="_blank" class="text-muted"><b>Xiuno BBS <span><?php echo $conf['version'];?></span></b></a>
|
||||||
|
<!--{hook footer_footer_left_end.htm}-->
|
||||||
|
</dt>
|
||||||
|
<dd class="text-right">
|
||||||
|
<!--{hook footer_footer_right_start.htm}-->
|
||||||
|
Time: <b><?php echo substr(microtime(1) - $starttime, 0, 5);?></b>, SQL: <b><?php echo count($db->sqls);?></b>
|
||||||
|
<!--{hook footer_footer_right_end.htm}-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
51
z_daisy/overwrite/view/htms/header.inc.htm
Normal file
51
z_daisy/overwrite/view/htms/header.inc.htm
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?php $conf = G('conf');?>
|
||||||
|
<?php $header = G('header');?>
|
||||||
|
<?php $user = G('user');?>
|
||||||
|
<?php $uid = G('uid');?>
|
||||||
|
<?php $gid = G('gid');?>
|
||||||
|
<?php $fid = G('fid');?>
|
||||||
|
<?php $tid = G('tid');?>
|
||||||
|
<?php $pid = G('pid');?>
|
||||||
|
<?php $route = G('route');?>
|
||||||
|
<?php $forumlist_show = G('forumlist_show');?>
|
||||||
|
<?php $static_version = $conf['static_version'];?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="<?php echo $conf['lang'];?>">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<?php echo defined('BASE_HREF') ? '<base href="'.BASE_HREF.'" />' : '' ;?>
|
||||||
|
|
||||||
|
<!--{hook header_mete_before.htm}-->
|
||||||
|
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="author" content="XiunoBBS 4.0" />
|
||||||
|
<meta name="keywords" content="<?php echo $header['keywords'];?>" />
|
||||||
|
<meta name="description" content="<?php echo $header['description'];?>" />
|
||||||
|
<meta name="renderer" content="webkit">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" >
|
||||||
|
|
||||||
|
<title><?php echo $header['title'];?></title>
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="<?php echo $conf['view_url'];?>img/favicon.ico" />
|
||||||
|
<link rel="icon" sizes="32x32" href="<?php echo $conf['view_url'];?>img/favicon.ico">
|
||||||
|
<link rel="Bookmark" href="<?php echo $conf['view_url'];?>img/favicon.ico" />
|
||||||
|
<?php if(DEBUG) { ?>
|
||||||
|
<link rel="stylesheet" href="<?php echo $conf['view_url'];?>css/bootstrap.css<?php echo $static_version;?>">
|
||||||
|
<?php } else { ?>
|
||||||
|
<link rel="stylesheet" href="<?php echo $conf['view_url'];?>css/bootstrap.min.css<?php echo $static_version;?>">
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!--{hook header_link_after.htm}-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!--{hook header_body_start.htm}-->
|
||||||
|
|
||||||
|
<div id="wrapper">
|
||||||
|
|
||||||
|
<!--{hook header_wrapper_start.htm}-->
|
||||||
|
|
||||||
|
<?php include _include(APP_PATH.'view/htm/header_nav.inc.htm');?>
|
168
z_daisy/overwrite/view/htms/header_nav.inc.htm
Normal file
168
z_daisy/overwrite/view/htms/header_nav.inc.htm
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
|
||||||
|
<!--{hook header_nav_start.htm}-->
|
||||||
|
<!-- 删掉影响样式的css -->
|
||||||
|
<nav class="navbar navbar-dark bg-inverse navbar-full navbar-fixed-top" id="header">
|
||||||
|
|
||||||
|
<!-- PC 导航 -->
|
||||||
|
<div class="container collapse navbar-toggleable-md">
|
||||||
|
<div class="row">
|
||||||
|
<!-- 左侧:版块区域 -->
|
||||||
|
<div class="col-md-8">
|
||||||
|
<ul class="nav navbar-nav" id="nav_pc">
|
||||||
|
|
||||||
|
<!--{hook header_nav_pc_start.htm}-->
|
||||||
|
|
||||||
|
<!-- LOGO -->
|
||||||
|
<li class="nav-item"><img src="<?php echo $conf['view_url'];?>img/logo.png" class="logo-sm"></li>
|
||||||
|
|
||||||
|
<!--{hook header_nav_logo_after.htm}-->
|
||||||
|
|
||||||
|
<!-- 前台首页 -->
|
||||||
|
<li class="nav-item home" fid="0"><a class="nav-link" href="."><?php echo lang('index_page');?></a></li>
|
||||||
|
|
||||||
|
<!--{hook header_nav_home_link_after.htm}-->
|
||||||
|
|
||||||
|
<!-- 版块 -->
|
||||||
|
<?php foreach($forumlist_show as $_forum) { ?>
|
||||||
|
|
||||||
|
<!--{hook header_nav_forumlist_loop_start.htm}-->
|
||||||
|
<li class="nav-item" fid="<?php echo $_forum['fid'];?>">
|
||||||
|
<a class="nav-link" href="<?php echo url("forum-$_forum[fid]");?>"><?php echo $_forum['name'];?></a>
|
||||||
|
</li>
|
||||||
|
<!--{hook header_nav_forumlist_loop_end.htm}-->
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!--{hook header_nav_pc_end.htm}-->
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- 右侧:用户区域-->
|
||||||
|
<div class="col-md-4">
|
||||||
|
<ul class="nav navbar-nav pull-right">
|
||||||
|
|
||||||
|
<!--{hook header_nav_pc_user_start.htm}-->
|
||||||
|
|
||||||
|
<!-- 游客 -->
|
||||||
|
<?php if(empty($uid)) { ?>
|
||||||
|
|
||||||
|
<li class="nav-item"><a class="nav-link" href="<?php echo url('user-login');?>"><?php echo lang('login');?></a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="<?php echo url('user-create');?>"><?php echo lang('register');?></a></li>
|
||||||
|
|
||||||
|
<!-- 登陆用户 -->
|
||||||
|
<?php } else { ?>
|
||||||
|
|
||||||
|
<li class="nav-item"><a class="nav-link" href="<?php echo url('my');?>" tabindex="-1"><img class="avatar-xs" src="<?php echo $user['avatar_url'];?>"></a></li>
|
||||||
|
<li class="nav-item username m-l-xs"><a class="nav-link" href="<?php echo url('my');?>"><?php echo $user['username'];?></a></li>
|
||||||
|
<!-- 管理员 -->
|
||||||
|
<?php if($gid == 1) { ?>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="admin/"><i class="icon-home"></i> <?php echo lang('admin_page');?></a></li>
|
||||||
|
<?php } ?>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="<?php echo url('user-logout');?>"><?php echo lang('logout');?></a></li>
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!--{hook header_nav_pc_user_end.htm}-->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 手机导航 -->
|
||||||
|
|
||||||
|
<table width="100%" class="hidden-lg-up navbar-nav">
|
||||||
|
<tr>
|
||||||
|
<td width="100">
|
||||||
|
<?php if($route == 'index' || $route == 'forum') { ?>
|
||||||
|
<a class="icon-navicon navbar-toggler" role="button" data-toggle="collapse" data-target="#mobile_collapsing_bavbar"></a>
|
||||||
|
<?php } else { ?>
|
||||||
|
<div class="nav-item">
|
||||||
|
<a class="nav-link icon-chevron-left xn-back" href="javascript:history.back();" aria-label="<?php echo lang('back');?>"></a>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a class="nav-link text-center" href="<?php echo $header['mobile_link'];?>">
|
||||||
|
<?php if($header['mobile_title']) { ?>
|
||||||
|
<?php echo $header['mobile_title'];?>
|
||||||
|
<?php } else { ?>
|
||||||
|
<img src="<?php echo $conf['view_url'];?>img/logo.png" class="logo-sm center-block">
|
||||||
|
<?php } ?>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td width="100" align="right">
|
||||||
|
<?php if(empty($uid)) { ?>
|
||||||
|
<a class="nav-link m-r-xs" href="<?php echo url('user-login');?>" aria-label="<?php echo lang('login');?>"> <i class="icon-user icon-2x"></i></a>
|
||||||
|
<?php } else { ?>
|
||||||
|
|
||||||
|
<?php if($route != 'thread') { ?>
|
||||||
|
<a class="nav-link icon-edit icon" href="<?php echo url("thread-create-$fid");?>" aria-label="<?php echo lang('thread_create');?>"></a>
|
||||||
|
<?php } else { ?>
|
||||||
|
<a class="nav-link icon-reply icon" href="<?php echo url("post-create-$tid");?>" aria-label="<?php echo lang('post_create_new');?>"></a>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 手机导航:下拉菜单 mobile navigation drop menu -->
|
||||||
|
<div class="collapse" id="mobile_collapsing_bavbar" style="overflow-y: auto;">
|
||||||
|
<div class="p-a-1">
|
||||||
|
<ul class="nav navbar-nav" id="nav_mobile">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="./"><i class="icon-home"></i> <?php echo lang('index_page');?></a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!--{hook header_nav_mobile_forum_before.htm}-->
|
||||||
|
|
||||||
|
<?php foreach($forumlist_show as $_forum) { ?>
|
||||||
|
<li class="nav-item" fid="<?php echo $_forum['fid'];?>">
|
||||||
|
<a class="nav-link m-l-2" href="<?php echo url("forum-$_forum[fid]");?>"><i class="icon-circle-blank"></i> <?php echo $_forum['name'];?></a>
|
||||||
|
</li>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!--{hook header_nav_mobile_forum_after.htm}-->
|
||||||
|
|
||||||
|
<!-- 个人资料 / profile -->
|
||||||
|
<?php if($uid) { ?>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="<?php echo url('my');?>"><i class="icon-user"></i> <?php echo lang('user_profile');?></a>
|
||||||
|
</li>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!-- 后台 / background -->
|
||||||
|
<?php if($gid == 1) { ?>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="admin/"><i class="icon-home"></i> <?php echo lang('admin_page');?></a>
|
||||||
|
</li>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!--{hook header_nav_mobile_logout_before.htm}-->
|
||||||
|
|
||||||
|
<!-- 退出 / logout-->
|
||||||
|
<?php if($uid) { ?>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="<?php echo url('user-logout');?>"><i class="icon-off"></i> <?php echo lang('logout');?></a>
|
||||||
|
</li>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!--{hook header_nav_mobile_logout_after.htm}-->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!--{hook header_nav_footer.htm}-->
|
284
z_daisy/overwrite/view/htms/thread.htm
Normal file
284
z_daisy/overwrite/view/htms/thread.htm
Normal file
@ -0,0 +1,284 @@
|
|||||||
|
<?php include _include(APP_PATH.'view/htm/header.inc.htm');?>
|
||||||
|
<div id="body" class="container">
|
||||||
|
<!--{hook body_start.htm}-->
|
||||||
|
|
||||||
|
<!--{hook thread_start.htm}-->
|
||||||
|
|
||||||
|
<!-- only for screenreader -->
|
||||||
|
<a role="button" class="sr-only sr-focusable" href="<?php echo url('thread-create-'.$fid);?>"><?php echo lang('thread_create_new');?></a>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-9">
|
||||||
|
<!--{hook thread_breadcrumb_before.htm}-->
|
||||||
|
<ol class="breadcrumb m-b-sm hidden-lg-down">
|
||||||
|
<li class="breadcrumb-item"><a href="./" aria-label="<?php echo lang('index_page');?>"><i class="icon-home"></i></a></li>
|
||||||
|
<li class="breadcrumb-item"><a href="<?php echo url("forum-$fid");?>"><?php echo $forum['name'];?></a></li>
|
||||||
|
<li class="breadcrumb-item active"><a href="<?php echo url("thread-$tid");?>" title="<?php echo lang('index_page');?>返回主题第一页"><?php echo $thread['subject'];?></a></li>
|
||||||
|
<!--{hook thread_breadcrumb.htm}-->
|
||||||
|
</ol>
|
||||||
|
<!--{hook thread_breadcrumb_after.htm}-->
|
||||||
|
<div class="card card-block">
|
||||||
|
<dl class="row">
|
||||||
|
<dt class="vtop p-r-1 td-avatar">
|
||||||
|
<a href="<?php echo url("user-$thread[uid]");?>" tabindex="-1">
|
||||||
|
<img class="avatar" src="<?php echo $thread['user_avatar_url'];?>">
|
||||||
|
</a>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<!--{hook thread_subject_before.htm}-->
|
||||||
|
<h3 class="break-all">
|
||||||
|
<!--{hook thread_subject_start.htm}-->
|
||||||
|
<?php echo $thread['subject'];?>
|
||||||
|
<!--{hook thread_subject_end.htm}-->
|
||||||
|
</h3>
|
||||||
|
<!--{hook thread_subject_after.htm}-->
|
||||||
|
<dl class="row small">
|
||||||
|
<dt>
|
||||||
|
<!--{hook thread_username_before.htm}-->
|
||||||
|
<span class="username text-muted">
|
||||||
|
<a href="<?php echo url("user-$thread[uid]");?>"><?php echo $thread['username'];?></a>
|
||||||
|
</span>
|
||||||
|
<span class="date text-grey m-l-1"><?php echo $thread['create_date_fmt'];?></span>
|
||||||
|
<span class="text-grey m-l-1 hidden-md-down"><i class="icon-eye"></i> <?php echo $thread['views'];?></span>
|
||||||
|
<!--{hook thread_views_after.htm}-->
|
||||||
|
</dt>
|
||||||
|
<dd class="text-right">
|
||||||
|
<!--{hook thread_update_before.htm}-->
|
||||||
|
<?php if($allowupdate || $first['allowupdate']) { ?>
|
||||||
|
<a href="<?php echo url("post-update-$thread[firstpid]");?>" class="text-grey m-r-1 post_update"><i class="icon-edit"></i> <?php echo lang('edit');?></a>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if($allowdelete || $first['allowdelete']) { ?>
|
||||||
|
<a data-href="<?php echo url("post-delete-$thread[firstpid]");?>" href="javascript:void(0);" class="text-grey post_delete" isfirst="1"><i class="icon-remove"></i> <?php echo lang('delete');?></a>
|
||||||
|
<?php } ?>
|
||||||
|
<!--{hook thread_delete_after.htm}-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<hr />
|
||||||
|
<div class="message break-all" isfirst="1">
|
||||||
|
<?php if($page == 1) { ?>
|
||||||
|
|
||||||
|
<!--{hook thread_message_before.htm}-->
|
||||||
|
<?php echo $first['message_fmt'];?>
|
||||||
|
<!--{hook thread_message_after.htm}-->
|
||||||
|
|
||||||
|
<?php echo post_file_list_html($first['filelist']);?>
|
||||||
|
<!--{hook thread_filelist_after.htm}-->
|
||||||
|
|
||||||
|
<?php } else { ?>
|
||||||
|
|
||||||
|
<!--{hook thread_message_more_before.htm}-->
|
||||||
|
<p><a href="<?php echo url("thread-$tid");?>"><?php echo lang('view_thread_message');?></a></p>
|
||||||
|
<!--{hook thread_message_more_after.htm}-->
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--{hook thread_postlist_before.htm}-->
|
||||||
|
<div class="card post p-a-sm">
|
||||||
|
<table class="table postlist m-b-0">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2" class="p-a-0 p-b-sm">
|
||||||
|
<dl class="row">
|
||||||
|
<dt>
|
||||||
|
<b><?php echo lang('new_post');?></b> (<span class="posts"><?php echo $thread['posts'];?></span>)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<!--{hook thread_post_list_title_right.htm}-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<?php include _include(APP_PATH.'view/htm/post_list.inc.htm'); ?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php if(!empty($user)) { ?>
|
||||||
|
<tr class="post">
|
||||||
|
<td class="td-avatar">
|
||||||
|
<a href="<?php echo url("user-$thread[uid]");?>" tabindex="-1">
|
||||||
|
<img class="avatar" src="<?php echo $user['avatar_url'];?>">
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td class="p-l-0">
|
||||||
|
<form action="<?php echo url("post-create-$tid-1");?>" method="post" id="quick_reply_form">
|
||||||
|
<input type="hidden" name="doctype" value="1" />
|
||||||
|
<input type="hidden" name="return_html" value="1" />
|
||||||
|
<input type="hidden" name="quotepid" value="0" />
|
||||||
|
<dl class="row small text-muted">
|
||||||
|
<dt class="username"><?php echo $user['username'];?></dt>
|
||||||
|
<dd class="text-right text-grey"><span class="floor"><?php echo ($thread['posts'] + 1);?></span><?php echo lang('floor');?></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="message m-t-xs">
|
||||||
|
<fieldset class="form-group m-b-0">
|
||||||
|
<textarea class="form-control" placeholder="<?php echo lang('message');?>" name="message" id="message"></textarea>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
<div class="text-muted m-t-sm small">
|
||||||
|
<dl class="row">
|
||||||
|
<dt>
|
||||||
|
<!--{hook thread_quick_reply_left_start.htm}-->
|
||||||
|
<button type="submit" class="btn btn-sm btn-primary" id="submit" data-loading-text="<?php echo lang('submiting');?>..."> <?php echo lang('post_create');?> </button>
|
||||||
|
<!--{hook thread_quick_reply_left_end.htm}-->
|
||||||
|
</dt>
|
||||||
|
<dd class="text-right vtop">
|
||||||
|
<!--{hook thread_quick_reply_right_start.htm}-->
|
||||||
|
<a class="icon-mail-forward text-muted" href="<?php echo url("post-create-$tid");?>" id="advanced_reply"> <?php echo lang('advanced_reply');?></a>
|
||||||
|
<!--{hook thread_quick_reply_right_end.htm}-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php } ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!--{hook thread_postlist_after.htm}-->
|
||||||
|
|
||||||
|
<?php if($pagination) { ?>
|
||||||
|
<nav class="text-center"><ul class="pagination m-y-xs"><?php echo $pagination; ?></ul></nav>
|
||||||
|
<?php }?>
|
||||||
|
|
||||||
|
<!--{hook thread_page_after.htm}-->
|
||||||
|
|
||||||
|
<a role="button" class="btn btn-secondary btn-block xn-back m-y-1 m-x-auto" style="max-width: 50%;" href="javascript:history.back();"><?php echo lang('back');?></a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-3 hidden-md-down">
|
||||||
|
<a role="button" class="btn btn-primary btn-block btn-sm m-b-sm hidden-md-down" href="<?php echo url('thread-create-'.$fid);?>"><?php echo lang('thread_create_new');?></a>
|
||||||
|
<div class="card hidden-md-down">
|
||||||
|
<!--{hook thread_user_before.htm}-->
|
||||||
|
<a href="<?php echo url("user-$thread[uid]");?>">
|
||||||
|
<img class="avatar-lg center-block m-t-1" src="<?php echo $thread['user_avatar_url'];?>">
|
||||||
|
</a>
|
||||||
|
<h5 class="text-xs-center"><?php echo $thread['username'];?></h5>
|
||||||
|
<div class="card-group card-group-nest">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="text-xs-center text-muted small"><?php echo lang('threads');?></div>
|
||||||
|
<h5 class="text-xs-center"><?php echo $thread['user']['threads'];?></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="text-xs-center text-muted small"><?php echo lang('posts');?></div>
|
||||||
|
<h5 class="text-xs-center"><?php echo $thread['user']['posts'];?></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="text-xs-center text-muted small"><?php echo lang('create_rank');?></div>
|
||||||
|
<h5 class="text-xs-center"><?php echo $thread['user']['uid'];?></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--{hook thread_user_after.htm}-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--{hook thread_end.htm}-->
|
||||||
|
|
||||||
|
<?php include _include(APP_PATH.'view/htm/footer.inc.htm');?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var jform = $('#quick_reply_form');
|
||||||
|
var jsubmit = $('#submit');
|
||||||
|
jform.on('submit', function() {
|
||||||
|
jform.reset();
|
||||||
|
jsubmit.button('loading');
|
||||||
|
var postdata = jform.serialize();
|
||||||
|
$.xpost(jform.attr('action'), postdata, function(code, message) {
|
||||||
|
if(code == 0) {
|
||||||
|
var s = '<table>'+message+'</table>';
|
||||||
|
var jtr = $(s).find('tr');
|
||||||
|
jtr.insertBefore($('table.postlist tr').last());
|
||||||
|
jsubmit.button('reset');
|
||||||
|
$('#message').val('');
|
||||||
|
|
||||||
|
// 楼层 +1
|
||||||
|
var jfloor = jform.find('.floor');
|
||||||
|
jfloor.html(xn.intval(jfloor.html()) + 1);
|
||||||
|
|
||||||
|
// 回复数 +1
|
||||||
|
var jposts = $('.posts');
|
||||||
|
jposts.html(xn.intval(jposts.html()) + 1);
|
||||||
|
|
||||||
|
} else if(code < 0) {
|
||||||
|
$.alert(message);
|
||||||
|
jsubmit.button('reset');
|
||||||
|
} else {
|
||||||
|
jform.find('[name="'+code+'"]').alert(message).focus();
|
||||||
|
jsubmit.button('reset');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// 缩放图片,适应屏幕大小。
|
||||||
|
function resize_image() {
|
||||||
|
var jmessagelist = $('div.message');
|
||||||
|
var first_width = jmessagelist.width(); // 815 : 746; // 734 746
|
||||||
|
jmessagelist.each(function() {
|
||||||
|
var jdiv = $(this);
|
||||||
|
var maxwidth = jdiv.attr('isfirst') ? first_width : first_width - 79; // 734 746
|
||||||
|
var jmessage_width = Math.min(jdiv.width(), maxwidth);
|
||||||
|
jdiv.find('img, embed, iframe').each(function() {
|
||||||
|
var jimg = $(this);
|
||||||
|
//if(jimg.width() < 500) return;
|
||||||
|
var img_width = this.org_width;
|
||||||
|
var img_height = this.org_height;
|
||||||
|
if(!img_width) {
|
||||||
|
var img_width = jimg.width();
|
||||||
|
var img_height = jimg.height();
|
||||||
|
this.org_width = img_width;
|
||||||
|
this.org_height = img_height;
|
||||||
|
}
|
||||||
|
//var percent = xn.min(100, xn.ceil((img_width / jmessage_width) * 100));
|
||||||
|
if(img_width > jmessage_width) {
|
||||||
|
if(this.tagName == 'IMG') {
|
||||||
|
jimg.width(jmessage_width);
|
||||||
|
jimg.css('height', 'auto');
|
||||||
|
} else {
|
||||||
|
jimg.width(jmessage_width);
|
||||||
|
var height = (img_height / img_width) * jimg.width();
|
||||||
|
jimg.height(height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$(function() {
|
||||||
|
resize_image();
|
||||||
|
$(window).on('resize', resize_image);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 输入框自动伸缩
|
||||||
|
var jmessage = $('#message');
|
||||||
|
jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); });
|
||||||
|
jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); });
|
||||||
|
|
||||||
|
$('#nav_pc li[fid="<?php echo $fid;?>"]').tab('show');
|
||||||
|
$('#nav_mobile li[fid="<?php echo $fid;?>"]').tab('show');
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<?php if($thread['closed'] && ($gid == 0 || $gid > 5)) { ?>
|
||||||
|
<script>
|
||||||
|
jmessage.val('<?php echo lang('thread_has_already_closed');?>').attr('readonly', 'readonly');
|
||||||
|
</script>
|
||||||
|
<?php } ?>
|
||||||
|
<!--{hook thread_js.htm}-->
|
||||||
|
</div>
|
146
z_daisy/route/doc.htm
Normal file
146
z_daisy/route/doc.htm
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
!defined('DEBUG') AND exit('Access Denied.');
|
||||||
|
|
||||||
|
$action = param(1);
|
||||||
|
|
||||||
|
// hook thread_start.php
|
||||||
|
|
||||||
|
// 发表主题帖 | create new thread
|
||||||
|
if($action == 'create') {
|
||||||
|
|
||||||
|
// hook thread_create_get_post.php
|
||||||
|
|
||||||
|
user_login_check();
|
||||||
|
|
||||||
|
if($method == 'GET') {
|
||||||
|
|
||||||
|
// hook thread_create_get_start.php
|
||||||
|
|
||||||
|
$fid = param(2, 0);
|
||||||
|
$forum = $fid ? forum_read($fid) : array();
|
||||||
|
|
||||||
|
$forumlist_allowthread = forum_list_access_filter($forumlist, $gid, 'allowthread');
|
||||||
|
$forumarr = xn_json_encode(arrlist_key_values($forumlist_allowthread, 'fid', 'name'));
|
||||||
|
if(empty($forumlist_allowthread)) {
|
||||||
|
message(-1, lang('user_group_insufficient_privilege'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$header['title'] = lang('create_thread');
|
||||||
|
$header['mobile_title'] = $fid ? $forum['name'] : '';
|
||||||
|
$header['mobile_linke'] = url("forum-$fid");
|
||||||
|
|
||||||
|
// hook thread_create_get_end.php
|
||||||
|
|
||||||
|
include _include(APP_PATH.'view/htm/post.htm');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// hook thread_create_thread_start.php
|
||||||
|
|
||||||
|
include XIUNOPHP_PATH.'xn_html_safe.func.php';
|
||||||
|
|
||||||
|
$fid = param('fid', 0);
|
||||||
|
$forum = forum_read($fid);
|
||||||
|
empty($forum) AND message('fid', lang('forum_not_exists'));
|
||||||
|
|
||||||
|
$r = forum_access_user($fid, $gid, 'allowthread');
|
||||||
|
!$r AND message(-1, lang('user_group_insufficient_privilege'));
|
||||||
|
|
||||||
|
$subject = htmlspecialchars(param('subject', '', FALSE));
|
||||||
|
empty($subject) AND message('subject', lang('please_input_subject'));
|
||||||
|
xn_strlen($subject) > 128 AND message('subject', lang('subject_length_over_limit', array('maxlength'=>128)));
|
||||||
|
|
||||||
|
$message = param('message', '', FALSE);
|
||||||
|
empty($message) AND message('message', lang('please_input_message'));
|
||||||
|
$doctype = param('doctype', 0);
|
||||||
|
$doctype > 10 AND message(-1, lang('doc_type_not_supported'));
|
||||||
|
xn_strlen($message) > 2028000 AND message('message', lang('message_too_long'));
|
||||||
|
|
||||||
|
$thread = array (
|
||||||
|
'fid'=>$fid,
|
||||||
|
'uid'=>$uid,
|
||||||
|
'sid'=>$sid,
|
||||||
|
'subject'=>$subject,
|
||||||
|
'message'=>$message,
|
||||||
|
'time'=>$time,
|
||||||
|
'longip'=>$longip,
|
||||||
|
'doctype'=>$doctype,
|
||||||
|
);
|
||||||
|
|
||||||
|
// hook thread_create_thread_before.php
|
||||||
|
|
||||||
|
$tid = thread_create($thread, $pid);
|
||||||
|
$pid === FALSE AND message(-1, lang('create_post_failed'));
|
||||||
|
$tid === FALSE AND message(-1, lang('create_thread_failed'));
|
||||||
|
|
||||||
|
// hook thread_create_thread_end.php
|
||||||
|
message(0, lang('create_thread_sucessfully'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 帖子详情 | post detail
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// thread-{tid}-{page}-{keyword}.htm
|
||||||
|
$tid = param(1, 0);
|
||||||
|
$page = param(2, 1);
|
||||||
|
$keyword = param(3);
|
||||||
|
$pagesize = $conf['postlist_pagesize'];
|
||||||
|
//$pagesize = 10;
|
||||||
|
//$page == 1 AND $pagesize++;
|
||||||
|
|
||||||
|
// hook thread_info_start.php
|
||||||
|
|
||||||
|
$thread = thread_read($tid);
|
||||||
|
empty($thread) AND message(-1, lang('thread_not_exists'));;
|
||||||
|
|
||||||
|
$fid = $thread['fid'];
|
||||||
|
$forum = forum_read($fid);
|
||||||
|
empty($forum) AND message(3, lang('forum_not_exists'));
|
||||||
|
|
||||||
|
$postlist = post_find_by_tid($tid, $page, $pagesize);
|
||||||
|
empty($postlist) AND message(4, lang('post_not_exists'));
|
||||||
|
|
||||||
|
if($page == 1) {
|
||||||
|
empty($postlist[$thread['firstpid']]) AND message(-1, lang('data_malformation'));
|
||||||
|
$first = $postlist[$thread['firstpid']];
|
||||||
|
unset($postlist[$thread['firstpid']]);
|
||||||
|
$attachlist = $imagelist = $filelist = array();
|
||||||
|
|
||||||
|
// 如果是大站,可以用单独的点击服务,减少 db 压力
|
||||||
|
// if request is huge, separate it from mysql server
|
||||||
|
thread_inc_views($tid);
|
||||||
|
} else {
|
||||||
|
$first = post_read($thread['firstpid']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$keywordurl = '';
|
||||||
|
if($keyword) {
|
||||||
|
$thread['subject'] = post_highlight_keyword($thread['subject'], $keyword);
|
||||||
|
//$first['message'] = post_highlight_keyword($first['subject']);
|
||||||
|
$keywordurl = "-$keyword";
|
||||||
|
}
|
||||||
|
$allowpost = forum_access_user($fid, $gid, 'allowpost') ? 1 : 0;
|
||||||
|
$allowupdate = forum_access_mod($fid, $gid, 'allowupdate') ? 1 : 0;
|
||||||
|
$allowdelete = forum_access_mod($fid, $gid, 'allowdelete') ? 1 : 0;
|
||||||
|
|
||||||
|
forum_access_user($fid, $gid, 'allowread') OR message(-1, lang('user_group_insufficient_privilege'));
|
||||||
|
|
||||||
|
$pagination = pagination(url("thread-$tid-{page}$keywordurl"), $thread['posts'] + 1, $page, $pagesize);
|
||||||
|
|
||||||
|
$header['title'] = $thread['subject'].'-'.$forum['name'].'-'.$conf['sitename'];
|
||||||
|
//$header['mobile_title'] = lang('thread_detail');
|
||||||
|
$header['mobile_title'] = $forum['name'];;
|
||||||
|
$header['mobile_link'] = url("forum-$fid");
|
||||||
|
$header['keywords'] = '';
|
||||||
|
$header['description'] = $thread['subject'];
|
||||||
|
$_SESSION['fid'] = $fid;
|
||||||
|
|
||||||
|
// hook thread_info_end.php
|
||||||
|
include _include(APP_PATH.'plugin/z_doc/view/htm/doc.htm');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// hook thread_end.php
|
||||||
|
|
||||||
|
?>
|
146
z_daisy/route/doc.php
Normal file
146
z_daisy/route/doc.php
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
!defined('DEBUG') AND exit('Access Denied.');
|
||||||
|
|
||||||
|
$action = param(1);
|
||||||
|
|
||||||
|
// hook thread_start.php
|
||||||
|
|
||||||
|
// 发表主题帖 | create new thread
|
||||||
|
if($action == 'create') {
|
||||||
|
|
||||||
|
// hook thread_create_get_post.php
|
||||||
|
|
||||||
|
user_login_check();
|
||||||
|
|
||||||
|
if($method == 'GET') {
|
||||||
|
|
||||||
|
// hook thread_create_get_start.php
|
||||||
|
|
||||||
|
$fid = param(2, 0);
|
||||||
|
$forum = $fid ? forum_read($fid) : array();
|
||||||
|
|
||||||
|
$forumlist_allowthread = forum_list_access_filter($forumlist, $gid, 'allowthread');
|
||||||
|
$forumarr = xn_json_encode(arrlist_key_values($forumlist_allowthread, 'fid', 'name'));
|
||||||
|
if(empty($forumlist_allowthread)) {
|
||||||
|
message(-1, lang('user_group_insufficient_privilege'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$header['title'] = lang('create_thread');
|
||||||
|
$header['mobile_title'] = $fid ? $forum['name'] : '';
|
||||||
|
$header['mobile_linke'] = url("forum-$fid");
|
||||||
|
|
||||||
|
// hook thread_create_get_end.php
|
||||||
|
|
||||||
|
include _include(APP_PATH.'view/htm/post.htm');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// hook thread_create_thread_start.php
|
||||||
|
|
||||||
|
include XIUNOPHP_PATH.'xn_html_safe.func.php';
|
||||||
|
|
||||||
|
$fid = param('fid', 0);
|
||||||
|
$forum = forum_read($fid);
|
||||||
|
empty($forum) AND message('fid', lang('forum_not_exists'));
|
||||||
|
|
||||||
|
$r = forum_access_user($fid, $gid, 'allowthread');
|
||||||
|
!$r AND message(-1, lang('user_group_insufficient_privilege'));
|
||||||
|
|
||||||
|
$subject = htmlspecialchars(param('subject', '', FALSE));
|
||||||
|
empty($subject) AND message('subject', lang('please_input_subject'));
|
||||||
|
xn_strlen($subject) > 128 AND message('subject', lang('subject_length_over_limit', array('maxlength'=>128)));
|
||||||
|
|
||||||
|
$message = param('message', '', FALSE);
|
||||||
|
empty($message) AND message('message', lang('please_input_message'));
|
||||||
|
$doctype = param('doctype', 0);
|
||||||
|
$doctype > 10 AND message(-1, lang('doc_type_not_supported'));
|
||||||
|
xn_strlen($message) > 2028000 AND message('message', lang('message_too_long'));
|
||||||
|
|
||||||
|
$thread = array (
|
||||||
|
'fid'=>$fid,
|
||||||
|
'uid'=>$uid,
|
||||||
|
'sid'=>$sid,
|
||||||
|
'subject'=>$subject,
|
||||||
|
'message'=>$message,
|
||||||
|
'time'=>$time,
|
||||||
|
'longip'=>$longip,
|
||||||
|
'doctype'=>$doctype,
|
||||||
|
);
|
||||||
|
|
||||||
|
// hook thread_create_thread_before.php
|
||||||
|
|
||||||
|
$tid = thread_create($thread, $pid);
|
||||||
|
$pid === FALSE AND message(-1, lang('create_post_failed'));
|
||||||
|
$tid === FALSE AND message(-1, lang('create_thread_failed'));
|
||||||
|
|
||||||
|
// hook thread_create_thread_end.php
|
||||||
|
message(0, lang('create_thread_sucessfully'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 帖子详情 | post detail
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// thread-{tid}-{page}-{keyword}.htm
|
||||||
|
$tid = param(1, 0);
|
||||||
|
$page = param(2, 1);
|
||||||
|
$keyword = param(3);
|
||||||
|
$pagesize = $conf['postlist_pagesize'];
|
||||||
|
//$pagesize = 10;
|
||||||
|
//$page == 1 AND $pagesize++;
|
||||||
|
|
||||||
|
// hook thread_info_start.php
|
||||||
|
|
||||||
|
$thread = thread_read($tid);
|
||||||
|
empty($thread) AND message(-1, lang('thread_not_exists'));;
|
||||||
|
|
||||||
|
$fid = $thread['fid'];
|
||||||
|
$forum = forum_read($fid);
|
||||||
|
empty($forum) AND message(3, lang('forum_not_exists'));
|
||||||
|
|
||||||
|
$postlist = post_find_by_tid($tid, $page, $pagesize);
|
||||||
|
empty($postlist) AND message(4, lang('post_not_exists'));
|
||||||
|
|
||||||
|
if($page == 1) {
|
||||||
|
empty($postlist[$thread['firstpid']]) AND message(-1, lang('data_malformation'));
|
||||||
|
$first = $postlist[$thread['firstpid']];
|
||||||
|
unset($postlist[$thread['firstpid']]);
|
||||||
|
$attachlist = $imagelist = $filelist = array();
|
||||||
|
|
||||||
|
// 如果是大站,可以用单独的点击服务,减少 db 压力
|
||||||
|
// if request is huge, separate it from mysql server
|
||||||
|
thread_inc_views($tid);
|
||||||
|
} else {
|
||||||
|
$first = post_read($thread['firstpid']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$keywordurl = '';
|
||||||
|
if($keyword) {
|
||||||
|
$thread['subject'] = post_highlight_keyword($thread['subject'], $keyword);
|
||||||
|
//$first['message'] = post_highlight_keyword($first['subject']);
|
||||||
|
$keywordurl = "-$keyword";
|
||||||
|
}
|
||||||
|
$allowpost = forum_access_user($fid, $gid, 'allowpost') ? 1 : 0;
|
||||||
|
$allowupdate = forum_access_mod($fid, $gid, 'allowupdate') ? 1 : 0;
|
||||||
|
$allowdelete = forum_access_mod($fid, $gid, 'allowdelete') ? 1 : 0;
|
||||||
|
|
||||||
|
forum_access_user($fid, $gid, 'allowread') OR message(-1, lang('user_group_insufficient_privilege'));
|
||||||
|
|
||||||
|
$pagination = pagination(url("thread-$tid-{page}$keywordurl"), $thread['posts'] + 1, $page, $pagesize);
|
||||||
|
|
||||||
|
$header['title'] = $thread['subject'].'-'.$forum['name'].'-'.$conf['sitename'];
|
||||||
|
//$header['mobile_title'] = lang('thread_detail');
|
||||||
|
$header['mobile_title'] = $forum['name'];;
|
||||||
|
$header['mobile_link'] = url("forum-$fid");
|
||||||
|
$header['keywords'] = '';
|
||||||
|
$header['description'] = $thread['subject'];
|
||||||
|
$_SESSION['fid'] = $fid;
|
||||||
|
|
||||||
|
// hook thread_info_end.php
|
||||||
|
include _include(APP_PATH.'plugin/z_doc/view/htm/doc.htm');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// hook thread_end.php
|
||||||
|
|
||||||
|
?>
|
151
z_daisy/route/upload.php
Normal file
151
z_daisy/route/upload.php
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
<?php
|
||||||
|
!defined('DEBUG') AND exit('Access Denied.');
|
||||||
|
echo $user['uid'];
|
||||||
|
|
||||||
|
|
||||||
|
$datetime = date('Ym',time());
|
||||||
|
$targetDir = '../upload';
|
||||||
|
$uploadDir = '../../upload/attach/'.$datetime;
|
||||||
|
|
||||||
|
$cleanupTargetDir = true;
|
||||||
|
|
||||||
|
|
||||||
|
if (!file_exists($targetDir)) {
|
||||||
|
@mkdir($targetDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!file_exists($uploadDir)) {
|
||||||
|
@mkdir($uploadDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_REQUEST["name"])) {
|
||||||
|
$fileName = $_REQUEST["name"];
|
||||||
|
} elseif (!empty($_FILES)) {
|
||||||
|
$fileName = $_FILES["file"]["name"];
|
||||||
|
} else {
|
||||||
|
$fileName = uniqid("file_");
|
||||||
|
}
|
||||||
|
// xxxxx
|
||||||
|
|
||||||
|
|
||||||
|
$typea = substr($fileName, strrpos($fileName, '.') + 1);
|
||||||
|
//过滤中文名图片
|
||||||
|
|
||||||
|
|
||||||
|
echo "<br>";
|
||||||
|
echo $user['uid'];
|
||||||
|
echo "<br>";
|
||||||
|
echo xn_rand(15) ;
|
||||||
|
echo "<br>";
|
||||||
|
$n=3;
|
||||||
|
//function () {
|
||||||
|
|
||||||
|
$str = '0123456789abcdefghijklmnopqrstuvwxyz';
|
||||||
|
$len = strlen($str);
|
||||||
|
$return = '';
|
||||||
|
for($i=0; $i<$n; $i++) {
|
||||||
|
$r = xn_rand(1, $len);
|
||||||
|
$return = $str[$r - 1];
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
$fileName = $uid.'_'.xn_rand(15).".".$typea;
|
||||||
|
|
||||||
|
$fileName = iconv('UTF-8', 'GB2312', $fileName);
|
||||||
|
$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;
|
||||||
|
$uploadPath = $uploadDir . DIRECTORY_SEPARATOR . $fileName;
|
||||||
|
|
||||||
|
|
||||||
|
$imgUrl= $uploadDir."/".$fileName;
|
||||||
|
echo str_replace("../../","",$imgUrl);
|
||||||
|
|
||||||
|
$chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
|
||||||
|
$chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ($cleanupTargetDir) {
|
||||||
|
if (!is_dir($targetDir) || !$dir = opendir($targetDir)) {
|
||||||
|
die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}');
|
||||||
|
}
|
||||||
|
|
||||||
|
while (($file = readdir($dir)) !== false) {
|
||||||
|
$tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file;
|
||||||
|
|
||||||
|
if ($tmpfilePath == "{$filePath}_{$chunk}.part" || $tmpfilePath == "{$filePath}_{$chunk}.parttmp") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preg_match('/\.(part|parttmp)$/', $file) && (@filemtime($tmpfilePath) < time() - $maxFileAge)) {
|
||||||
|
@unlink($tmpfilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (!$out = @fopen("{$filePath}_{$chunk}.parttmp", "wb")) {
|
||||||
|
die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($_FILES)) {
|
||||||
|
if ($_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) {
|
||||||
|
die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$in = @fopen($_FILES["file"]["tmp_name"], "rb")) {
|
||||||
|
die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!$in = @fopen("php://input", "rb")) {
|
||||||
|
die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while ($buff = fread($in, 4096)) {
|
||||||
|
fwrite($out, $buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
@fclose($out);
|
||||||
|
@fclose($in);
|
||||||
|
|
||||||
|
rename("{$filePath}_{$chunk}.parttmp", "{$filePath}_{$chunk}.part");
|
||||||
|
|
||||||
|
$index = 0;
|
||||||
|
$done = true;
|
||||||
|
for( $index = 0; $index < $chunks; $index++ ) {
|
||||||
|
if ( !file_exists("{$filePath}_{$index}.part") ) {
|
||||||
|
$done = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( $done ) {
|
||||||
|
if (!$out = @fopen($uploadPath, "wb")) {
|
||||||
|
die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( flock($out, LOCK_EX) ) {
|
||||||
|
for( $index = 0; $index < $chunks; $index++ ) {
|
||||||
|
if (!$in = @fopen("{$filePath}_{$index}.part", "rb")) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ($buff = fread($in, 4096)) {
|
||||||
|
fwrite($out, $buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
@fclose($in);
|
||||||
|
@unlink("{$filePath}_{$index}.part");
|
||||||
|
}
|
||||||
|
|
||||||
|
flock($out, LOCK_UN);
|
||||||
|
}
|
||||||
|
@fclose($out);
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
170
z_daisy/view/css/bubble.css
Normal file
170
z_daisy/view/css/bubble.css
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
/* 这是主视图的样式, 放进气泡的 CSS 文件以减少占用 */
|
||||||
|
/*#masthead{box-shadow:0 .125rem .4375rem rgba(0,0,0,0.7);-webkit-box-shadow:0 .125rem .4375rem rgba(0,0,0,0.7)}*/
|
||||||
|
#masthead{position:relative;display:table;text-align:center;width:100%;overflow:hidden;transition:all 1s;color:#fff;background-color:#1e1e1f}
|
||||||
|
#masthead::before {content: "";position: absolute;top: 0;bottom: 0;left: 0;right: 0;background-color: rgba(0, 0, 0, 0.3);}
|
||||||
|
#masthead::after {content: '';width: 150%;height: 4.375rem;background: #EEEEF2;left: -25%;bottom: -2.875rem;border-radius: 100%;position: absolute;}
|
||||||
|
|
||||||
|
/* 标题 12px等于0.75rem*/
|
||||||
|
.blog-title {font-size: 2.625rem;line-height: 1.5;margin-bottom: .5rem;font-weight: 200;}
|
||||||
|
.light{font-weight:300 !important}
|
||||||
|
.inner{display:table-cell;vertical-align:middle;position:relative;z-index:10;width:100%}
|
||||||
|
|
||||||
|
.blog-description {font-size: .75rem;}
|
||||||
|
.blog-background.loading{opacity:0}
|
||||||
|
.blog-background{
|
||||||
|
/*background-attachment: fixed;*/
|
||||||
|
display:block;
|
||||||
|
width:100%;height:100%;
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-size:cover;
|
||||||
|
background-position:center;
|
||||||
|
position:absolute;
|
||||||
|
left:0;top:0;
|
||||||
|
-webkit-filter: brightness(0.7);
|
||||||
|
-moz-filter: brightness(0.7);
|
||||||
|
-o-filter: brightness(0.7);
|
||||||
|
filter: brightness(0.7);
|
||||||
|
-webkit-transition:1s ease all;
|
||||||
|
-moz-transition:1s ease all;
|
||||||
|
-o-transition:1s ease all;
|
||||||
|
transition:5s ease all;
|
||||||
|
opacity:1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* CSS source:https://iu.tn/archives/qi-pao-piao-fu.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
.bg-bubbles {
|
||||||
|
display:block;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul,li {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li {
|
||||||
|
position: absolute;
|
||||||
|
list-style: none;
|
||||||
|
display: block;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
background-color: rgba(255,255,255,.07);
|
||||||
|
bottom: -160px;
|
||||||
|
-webkit-animation: square 25s infinite;
|
||||||
|
animation: square 25s infinite;
|
||||||
|
-webkit-transition-timing-function: linear;
|
||||||
|
transition-timing-function: linear;
|
||||||
|
border-radius: 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(1) {
|
||||||
|
left: 10%
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(2) {
|
||||||
|
left: 20%;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
-webkit-animation-delay: 200ms;
|
||||||
|
animation-delay: 200ms;
|
||||||
|
-webkit-animation-duration: 17s;
|
||||||
|
animation-duration: 17s
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(3) {
|
||||||
|
left: 25%;
|
||||||
|
-webkit-animation-delay: 400ms;
|
||||||
|
animation-delay: 400ms
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(4) {
|
||||||
|
left: 40%;
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
-webkit-animation-duration: 30s;
|
||||||
|
animation-duration: 30s;
|
||||||
|
background-color: rgba(255, 255, 255, .1)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(5) {
|
||||||
|
left: 70%
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(6) {
|
||||||
|
left: 80%;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
-webkit-animation-delay: 5s;
|
||||||
|
animation-delay: 5s;
|
||||||
|
background-color: rgba(255, 255, 255, .15)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(7) {
|
||||||
|
left: 32%;
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
-webkit-animation-delay: 7s;
|
||||||
|
animation-delay: 7s
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(8) {
|
||||||
|
left: 55%;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
-webkit-animation-delay: 15s;
|
||||||
|
animation-delay: 15s;
|
||||||
|
-webkit-animation-duration: 40s;
|
||||||
|
animation-duration: 40s
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(9) {
|
||||||
|
left: 25%;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
-webkit-animation-delay: 2s;
|
||||||
|
animation-delay: 2s;
|
||||||
|
-webkit-animation-duration: 40s;
|
||||||
|
animation-duration: 40s;
|
||||||
|
background-color: rgba(255, 255, 255, .1)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-bubbles li:nth-child(10) {
|
||||||
|
left: 90%;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
-webkit-animation-delay: 11s;
|
||||||
|
animation-delay: 11s
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes square {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translateY(0);
|
||||||
|
transform: translateY(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translateY(-700px) rotate(600deg);
|
||||||
|
transform: translateY(-700px) rotate(600deg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes square {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translateY(0);
|
||||||
|
transform: translateY(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translateY(-700px) rotate(600deg);
|
||||||
|
transform: translateY(-700px) rotate(600deg)
|
||||||
|
}
|
||||||
|
} /* 漂浮 */
|
366
z_daisy/view/htm/doc.htm
Normal file
366
z_daisy/view/htm/doc.htm
Normal file
@ -0,0 +1,366 @@
|
|||||||
|
<?php include _include(APP_PATH.'view/htm/header.inc.htm');?>
|
||||||
|
|
||||||
|
<!--{hook thread_start.htm}-->
|
||||||
|
|
||||||
|
<!-- only for screenreader -->
|
||||||
|
<a role="button" class="sr-only sr-focusable" href="<?php echo url('thread-create-'.$fid);?>"><?php echo lang('thread_create_new');?></a>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3 hidden-md-down">
|
||||||
|
<a role="button" class="btn btn-primary btn-block btn-sm m-b-sm hidden-md-down" href="<?php echo url('thread-create-'.$fid);?>"><?php echo lang('thread_create_new');?></a>
|
||||||
|
<div class="card hidden-md-down">
|
||||||
|
<!--{hook thread_user_before.htm}-->
|
||||||
|
<a href="<?php echo url("user-$thread[uid]");?>">
|
||||||
|
<img class="avatar-lg center-block m-t-1" src="<?php echo $thread['user_avatar_url'];?>">
|
||||||
|
</a>
|
||||||
|
<h5 class="text-xs-center"><?php echo $thread['username'];?></h5>
|
||||||
|
<div class="card-group card-group-nest">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="text-xs-center text-muted small"><?php echo lang('threads');?></div>
|
||||||
|
<h5 class="text-xs-center"><?php echo $thread['user']['threads'];?></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="text-xs-center text-muted small"><?php echo lang('posts');?></div>
|
||||||
|
<h5 class="text-xs-center"><?php echo $thread['user']['posts'];?></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="text-xs-center text-muted small"><?php echo lang('create_rank');?></div>
|
||||||
|
<h5 class="text-xs-center"><?php echo $thread['user']['uid'];?></h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--{hook thread_user_after.htm}-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
table.nav_tag_list {margin-bottom: 0.2rem;}
|
||||||
|
table.nav_tag_list td {padding: 0.3rem;}
|
||||||
|
table.nav_tag_list td a{margin-right: 0.5rem;}
|
||||||
|
.nav_tag_list .active {font-weight: 800;}
|
||||||
|
</style>
|
||||||
|
开始
|
||||||
|
<table class="small nav_tag_list">
|
||||||
|
<?php if(!empty($forum['tagcatelist'])) {foreach($forum['tagcatelist'] as $i=>$tagcate) { ?>
|
||||||
|
<tr>
|
||||||
|
<td class="text-small text-muted text-nowrap" align="right" valign="top">
|
||||||
|
<?php echo $tagcate['name'];?>:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<?php
|
||||||
|
$tagidadd = '';
|
||||||
|
$tagactive = '';
|
||||||
|
/*
|
||||||
|
switch ($i) {
|
||||||
|
case 0: $tagidadd = "0_{$tagid2}_{$tagid3}_{$tagid4}";
|
||||||
|
$tagactive = 0 == $tagid1 ? ' class="active"' : '';
|
||||||
|
break;
|
||||||
|
case 1: $tagidadd = "{$tagid1}_0_{$tagid3}_{$tagid4}";
|
||||||
|
$tagactive = 0 == $tagid2 ? ' class="active"' : '';
|
||||||
|
break;
|
||||||
|
case 2: $tagidadd = "{$tagid1}_{$tagid2}_0_{$tagid4}";
|
||||||
|
$tagactive = 0 == $tagid3 ? ' class="active"' : '';
|
||||||
|
break;
|
||||||
|
case 3: $tagidadd = "{$tagid1}_{$tagid2}_{$tagid3}_0";
|
||||||
|
$tagactive = 0 == $tagid4 ? ' class="active"' : '';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
<a href="<?php echo url("forum-$fid-$page-$tagidadd");?>" <?php echo $tagactive;?>><?php echo lang('all');?></a>
|
||||||
|
<?php foreach($tagcate['taglist'] as $tag) { ?>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
switch ($i) {
|
||||||
|
case 0:
|
||||||
|
$tagidadd = "{$tag['tagid']}";
|
||||||
|
//$tagactive = $tag['tagid'] == $tagid1 ? ' class="active"' : '';
|
||||||
|
//break;
|
||||||
|
/*
|
||||||
|
case 1: $tagidadd = "{$tagid1}_{$tag['tagid']}_{$tagid3}_{$tagid4}";
|
||||||
|
$tagactive = $tag['tagid'] == $tagid2 ? ' class="active"' : '';
|
||||||
|
break;
|
||||||
|
case 2: $tagidadd = "{$tagid1}_{$tagid2}_{$tag['tagid']}_{$tagid4}";
|
||||||
|
$tagactive = $tag['tagid'] == $tagid3 ? ' class="active"' : '';
|
||||||
|
break;
|
||||||
|
case 3: $tagidadd = "{$tagid1}_{$tagid2}_{$tagid3}_{$tag['tagid']}";
|
||||||
|
$tagactive = $tag['tagid'] == $tagid4 ? ' class="active"' : '';
|
||||||
|
break;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<a href="<?php echo url("doc-$tid-$page-$tagidadd");?>" <?php echo $tagactive;?>><?php echo $tag['name'];?></a>
|
||||||
|
<?php } ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php }} ?>
|
||||||
|
</table>
|
||||||
|
结束
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-9">
|
||||||
|
|
||||||
|
<!-- 这是新增的段落 -->
|
||||||
|
<div>
|
||||||
|
<?php echo "PHP输出一段信息"; ?>
|
||||||
|
<?php echo "PHP输出user".$user['uid']; ?>
|
||||||
|
<?php echo "PHP输出user".$username; ?>
|
||||||
|
</div>
|
||||||
|
<!-- /这是新增的段落 -->
|
||||||
|
|
||||||
|
|
||||||
|
<!--{hook thread_breadcrumb_before.htm}-->
|
||||||
|
<ol class="breadcrumb m-b-sm hidden-lg-down">
|
||||||
|
<li class="breadcrumb-item"><a href="./" aria-label="<?php echo lang('index_page');?>"><i class="icon-home"></i></a></li>
|
||||||
|
<li class="breadcrumb-item"><a href="<?php echo url("forum-$fid");?>"><?php echo $forum['name'];?></a></li>
|
||||||
|
<li class="breadcrumb-item active"><a href="<?php echo url("thread-$tid");?>" title="<?php echo lang('index_page');?>返回主题第一页"><?php echo $thread['subject'];?></a></li>
|
||||||
|
<!--{hook thread_breadcrumb.htm}-->
|
||||||
|
</ol>
|
||||||
|
<!--{hook thread_breadcrumb_after.htm}-->
|
||||||
|
<div class="card card-block">
|
||||||
|
<dl class="row">
|
||||||
|
<dt class="vtop p-r-1 td-avatar">
|
||||||
|
<a href="<?php echo url("user-$thread[uid]");?>" tabindex="-1">
|
||||||
|
<img class="avatar" src="<?php echo $thread['user_avatar_url'];?>">
|
||||||
|
</a>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<!--{hook thread_subject_before.htm}-->
|
||||||
|
<h3 class="break-all">
|
||||||
|
<!--{hook thread_subject_start.htm}-->
|
||||||
|
<?php echo $thread['subject'];?>
|
||||||
|
<!--{hook thread_subject_end.htm}-->
|
||||||
|
</h3>
|
||||||
|
<!--{hook thread_subject_after.htm}-->
|
||||||
|
<dl class="row small">
|
||||||
|
<dt>
|
||||||
|
<!--{hook thread_username_before.htm}-->
|
||||||
|
<span class="username text-muted">
|
||||||
|
<a href="<?php echo url("user-$thread[uid]");?>"><?php echo $thread['username'];?></a>
|
||||||
|
</span>
|
||||||
|
<span class="date text-grey m-l-1"><?php echo $thread['create_date_fmt'];?></span>
|
||||||
|
<span class="text-grey m-l-1 hidden-md-down"><i class="icon-eye"></i> <?php echo $thread['views'];?></span>
|
||||||
|
<!--{hook thread_views_after.htm}-->
|
||||||
|
</dt>
|
||||||
|
<dd class="text-right">
|
||||||
|
<!--{hook thread_update_before.htm}-->
|
||||||
|
<?php if($allowupdate || $first['allowupdate']) { ?>
|
||||||
|
<a href="<?php echo url("post-update-$thread[firstpid]");?>" class="text-grey m-r-1 post_update"><i class="icon-edit"></i> <?php echo lang('edit');?></a>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if($allowdelete || $first['allowdelete']) { ?>
|
||||||
|
<a data-href="<?php echo url("post-delete-$thread[firstpid]");?>" href="javascript:void(0);" class="text-grey post_delete" isfirst="1"><i class="icon-remove"></i> <?php echo lang('delete');?></a>
|
||||||
|
<?php } ?>
|
||||||
|
<!--{hook thread_delete_after.htm}-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<hr />
|
||||||
|
<div class="message break-all" isfirst="1">
|
||||||
|
<?php if($page == 1) { ?>
|
||||||
|
|
||||||
|
<!--{hook thread_message_before.htm}-->
|
||||||
|
<?php echo $first['message_fmt'];?>
|
||||||
|
<!--{hook thread_message_after.htm}-->
|
||||||
|
|
||||||
|
<?php echo post_file_list_html($first['filelist']);?>
|
||||||
|
<!--{hook thread_filelist_after.htm}-->
|
||||||
|
|
||||||
|
<?php } else { ?>
|
||||||
|
|
||||||
|
<!--{hook thread_message_more_before.htm}-->
|
||||||
|
<p><a href="<?php echo url("thread-$tid");?>"><?php echo lang('view_thread_message');?></a></p>
|
||||||
|
<!--{hook thread_message_more_after.htm}-->
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--{hook thread_postlist_before.htm}-->
|
||||||
|
<div class="card post p-a-sm">
|
||||||
|
<table class="table postlist m-b-0">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2" class="p-a-0 p-b-sm">
|
||||||
|
<dl class="row">
|
||||||
|
<dt>
|
||||||
|
<b><?php echo lang('new_post');?></b> (<span class="posts"><?php echo $thread['posts'];?></span>)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<!--{hook thread_post_list_title_right.htm}-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<?php include _include(APP_PATH.'view/htm/post_list.inc.htm'); ?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php if(!empty($user)) { ?>
|
||||||
|
<tr class="post">
|
||||||
|
<td class="td-avatar">
|
||||||
|
<a href="<?php echo url("user-$thread[uid]");?>" tabindex="-1">
|
||||||
|
<img class="avatar" src="<?php echo $user['avatar_url'];?>">
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td class="p-l-0">
|
||||||
|
<form action="<?php echo url("post-create-$tid-1");?>" method="post" id="quick_reply_form">
|
||||||
|
<input type="hidden" name="doctype" value="1" />
|
||||||
|
<input type="hidden" name="return_html" value="1" />
|
||||||
|
<input type="hidden" name="quotepid" value="0" />
|
||||||
|
<dl class="row small text-muted">
|
||||||
|
<dt class="username"><?php echo $user['username'];?></dt>
|
||||||
|
<dd class="text-right text-grey"><span class="floor"><?php echo ($thread['posts'] + 1);?></span><?php echo lang('floor');?></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="message m-t-xs">
|
||||||
|
<fieldset class="form-group m-b-0">
|
||||||
|
<textarea class="form-control" placeholder="<?php echo lang('message');?>" name="message" id="message"></textarea>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
<div class="text-muted m-t-sm small">
|
||||||
|
<dl class="row">
|
||||||
|
<dt>
|
||||||
|
<!--{hook thread_quick_reply_left_start.htm}-->
|
||||||
|
<button type="submit" class="btn btn-sm btn-primary" id="submit" data-loading-text="<?php echo lang('submiting');?>..."> <?php echo lang('post_create');?> </button>
|
||||||
|
<!--{hook thread_quick_reply_left_end.htm}-->
|
||||||
|
</dt>
|
||||||
|
<dd class="text-right vtop">
|
||||||
|
<!--{hook thread_quick_reply_right_start.htm}-->
|
||||||
|
<a class="icon-mail-forward text-muted" href="<?php echo url("post-create-$tid");?>" id="advanced_reply"> <?php echo lang('advanced_reply');?></a>
|
||||||
|
<!--{hook thread_quick_reply_right_end.htm}-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php } ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!--{hook thread_postlist_after.htm}-->
|
||||||
|
|
||||||
|
<?php if($pagination) { ?>
|
||||||
|
<nav class="text-center"><ul class="pagination m-y-xs"><?php echo $pagination; ?></ul></nav>
|
||||||
|
<?php }?>
|
||||||
|
|
||||||
|
<!--{hook thread_page_after.htm}-->
|
||||||
|
|
||||||
|
<a role="button" class="btn btn-secondary btn-block xn-back m-y-1 m-x-auto" style="max-width: 50%;" href="javascript:history.back();"><?php echo lang('back');?></a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--{hook thread_end.htm}-->
|
||||||
|
|
||||||
|
<?php include _include(APP_PATH.'view/htm/footer.inc.htm');?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var jform = $('#quick_reply_form');
|
||||||
|
var jsubmit = $('#submit');
|
||||||
|
jform.on('submit', function() {
|
||||||
|
jform.reset();
|
||||||
|
jsubmit.button('loading');
|
||||||
|
var postdata = jform.serialize();
|
||||||
|
$.xpost(jform.attr('action'), postdata, function(code, message) {
|
||||||
|
if(code == 0) {
|
||||||
|
var s = '<table>'+message+'</table>';
|
||||||
|
var jtr = $(s).find('tr');
|
||||||
|
jtr.insertBefore($('table.postlist tr').last());
|
||||||
|
jsubmit.button('reset');
|
||||||
|
$('#message').val('');
|
||||||
|
|
||||||
|
// 楼层 +1
|
||||||
|
var jfloor = jform.find('.floor');
|
||||||
|
jfloor.html(xn.intval(jfloor.html()) + 1);
|
||||||
|
|
||||||
|
// 回复数 +1
|
||||||
|
var jposts = $('.posts');
|
||||||
|
jposts.html(xn.intval(jposts.html()) + 1);
|
||||||
|
|
||||||
|
} else if(code < 0) {
|
||||||
|
$.alert(message);
|
||||||
|
jsubmit.button('reset');
|
||||||
|
} else {
|
||||||
|
jform.find('[name="'+code+'"]').alert(message).focus();
|
||||||
|
jsubmit.button('reset');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// 缩放图片,适应屏幕大小。
|
||||||
|
function resize_image() {
|
||||||
|
var jmessagelist = $('div.message');
|
||||||
|
var first_width = jmessagelist.width(); // 815 : 746; // 734 746
|
||||||
|
jmessagelist.each(function() {
|
||||||
|
var jdiv = $(this);
|
||||||
|
var maxwidth = jdiv.attr('isfirst') ? first_width : first_width - 79; // 734 746
|
||||||
|
var jmessage_width = Math.min(jdiv.width(), maxwidth);
|
||||||
|
jdiv.find('img, embed, iframe').each(function() {
|
||||||
|
var jimg = $(this);
|
||||||
|
//if(jimg.width() < 500) return;
|
||||||
|
var img_width = this.org_width;
|
||||||
|
var img_height = this.org_height;
|
||||||
|
if(!img_width) {
|
||||||
|
var img_width = jimg.width();
|
||||||
|
var img_height = jimg.height();
|
||||||
|
this.org_width = img_width;
|
||||||
|
this.org_height = img_height;
|
||||||
|
}
|
||||||
|
//var percent = xn.min(100, xn.ceil((img_width / jmessage_width) * 100));
|
||||||
|
if(img_width > jmessage_width) {
|
||||||
|
if(this.tagName == 'IMG') {
|
||||||
|
jimg.width(jmessage_width);
|
||||||
|
jimg.css('height', 'auto');
|
||||||
|
} else {
|
||||||
|
jimg.width(jmessage_width);
|
||||||
|
var height = (img_height / img_width) * jimg.width();
|
||||||
|
jimg.height(height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$(function() {
|
||||||
|
resize_image();
|
||||||
|
$(window).on('resize', resize_image);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 输入框自动伸缩
|
||||||
|
var jmessage = $('#message');
|
||||||
|
jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); });
|
||||||
|
jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); });
|
||||||
|
|
||||||
|
$('#nav_pc li[fid="<?php echo $fid;?>"]').tab('show');
|
||||||
|
$('#nav_mobile li[fid="<?php echo $fid;?>"]').tab('show');
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<?php if($thread['closed'] && ($gid == 0 || $gid > 5)) { ?>
|
||||||
|
<script>
|
||||||
|
jmessage.val('<?php echo lang('thread_has_already_closed');?>').attr('readonly', 'readonly');
|
||||||
|
</script>
|
||||||
|
<?php } ?>
|
||||||
|
<!--{hook thread_js.htm}-->
|
10
z_nav/conf.json
Normal file
10
z_nav/conf.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "自动隐藏导航栏",
|
||||||
|
"brief": "这是针对有大图(横向全屏的 页面制作的显隐导航, 如果不打算放置顶部图片 可以注释掉footer_jsafter.htm的第三行",
|
||||||
|
"version": "1.0",
|
||||||
|
"bbs_version": "4.0",
|
||||||
|
"installed": 1,
|
||||||
|
"enable": 0,
|
||||||
|
"hooks_rank": [],
|
||||||
|
"dependencies": []
|
||||||
|
}
|
41
z_nav/hook/footer_js_after.htm
Normal file
41
z_nav/hook/footer_js_after.htm
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<script>
|
||||||
|
//延时150ms? 先删掉影响样式效果的 .bg-inverse
|
||||||
|
$('.navbar').removeClass('bg-inverse');
|
||||||
|
//setTimeout("$('.navbar').removeClass('bg-inverse')",150)
|
||||||
|
|
||||||
|
|
||||||
|
//依赖JQ,应该放在页面最后加载
|
||||||
|
var home = location.href,
|
||||||
|
s = $('#bgvideo')[0],
|
||||||
|
Siren = {
|
||||||
|
|
||||||
|
// 显示&隐藏导航栏
|
||||||
|
NH: function(){
|
||||||
|
var h1 = 0,
|
||||||
|
h2 = 400,
|
||||||
|
ss = $(document).scrollTop();
|
||||||
|
$(window).scroll(function(){
|
||||||
|
var s = $(document).scrollTop();
|
||||||
|
if(s== h1){
|
||||||
|
$('.navbar').removeClass('yya');
|
||||||
|
}if(s > h1){
|
||||||
|
$('.navbar').addClass('yya');
|
||||||
|
}if(s > h2){
|
||||||
|
$('.navbar').addClass('gizle');
|
||||||
|
if(s > ss){
|
||||||
|
$('.navbar').removeClass('sabit');
|
||||||
|
}else{
|
||||||
|
$('.navbar').addClass('sabit');
|
||||||
|
}
|
||||||
|
ss = s;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
|
||||||
|
Siren.NH(); // 显示&隐藏导航栏
|
||||||
|
|
||||||
|
})
|
||||||
|
</script>
|
28
z_nav/hook/header_link_after.htm
Normal file
28
z_nav/hook/header_link_after.htm
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<style>
|
||||||
|
/* 全局的动态导航条样式 可以打包到css文件 不是很重要,也可以放到页面最后加载 */
|
||||||
|
.navbar {
|
||||||
|
width: 100%;
|
||||||
|
background: none;
|
||||||
|
-webkit-transition: all .4s ease;
|
||||||
|
transition: all .4s ease;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 9999;
|
||||||
|
top: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.yya {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
background: rgba(0, 0, 0, .6);
|
||||||
|
box-shadow: 0 0 1px rgba(0,0,0,.15)
|
||||||
|
}
|
||||||
|
.gizle {
|
||||||
|
top: -100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sabit {
|
||||||
|
top: 0;
|
||||||
|
z-index: 9999;
|
||||||
|
}
|
||||||
|
</style>
|
BIN
z_nav/icon.png
Normal file
BIN
z_nav/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
10
z_postEx/conf.json
Normal file
10
z_postEx/conf.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "帖内回复",
|
||||||
|
"brief": "热点讨论,已经是大势所趋",
|
||||||
|
"version": "1.0",
|
||||||
|
"bbs_version": "4.0",
|
||||||
|
"installed": 1,
|
||||||
|
"enable": 0,
|
||||||
|
"hooks_rank": [],
|
||||||
|
"dependencies": []
|
||||||
|
}
|
159
z_postEx/hook/footer_js_after.htm
Normal file
159
z_postEx/hook/footer_js_after.htm
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
<!-- 独立的
|
||||||
|
<div class="test">这是test</div>
|
||||||
|
<p>这是p</p>
|
||||||
|
<button onclick="afterText()">在图片后面添加文本</button>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<script>
|
||||||
|
//确认上面已经引用过JQ库文件
|
||||||
|
function afterText(){
|
||||||
|
var txt1=$("<i></i>").text("love "); // 通过 jQuery 创建元素
|
||||||
|
$(".test").after(txt1); // 在 img 之后插入新元素
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 正式回复 -->
|
||||||
|
|
||||||
|
<!--script src="//www-static.diyidan.net/static/addface/js/main.js?v=f9faff63b439fec824edbde022b77397"></script-->
|
||||||
|
<script src="plugin/z_post/main.js?v=f9faff63b439fec824edbde022b77397"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 二级回复中的一段 -->
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
/*二级回复*/
|
||||||
|
function send_comment(item) {
|
||||||
|
do_l2commit(item);
|
||||||
|
/*if(getCookie('token_id') != null && getCookie('token_id')!=''){
|
||||||
|
do_l2commit(item);
|
||||||
|
}else{
|
||||||
|
onlyLogin()
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//var p_inner_value = $('div.edit_container p.p_emoji_content')
|
||||||
|
//发送Ajax请求
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_l2commit(item) {
|
||||||
|
var comment_id = $(item).closest('.reply_right').find('.comment_id_hidden').val();
|
||||||
|
var reply = getPcontentText($(item).closest('.write_reply').find('#write_container').get(0));
|
||||||
|
var ajax_url = "/main/post/l2comment";
|
||||||
|
var louzhu_id = "6293877835964134301";
|
||||||
|
$.ajax({
|
||||||
|
url: ajax_url, //登陆页面
|
||||||
|
type: "POST",
|
||||||
|
async: true,
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
"l1CommentId": comment_id,
|
||||||
|
"comment": reply,
|
||||||
|
"commentPage": parseInt('1', 10),
|
||||||
|
},
|
||||||
|
dataType: "json",
|
||||||
|
error: function() {},
|
||||||
|
success: function(data, status) { //如果调用成功
|
||||||
|
// var jsonObject = JSON.parse(data);
|
||||||
|
var code = data.code;
|
||||||
|
if (code != 200) {
|
||||||
|
if (data.message != null) {
|
||||||
|
showMessagePopup(data.message);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//TODO:后台会回传有多少二层回复的页数的
|
||||||
|
var totalCount = data.data.totalCommentCount;
|
||||||
|
var page_total_num = parseInt((totalCount - 1) / 10) + 1;
|
||||||
|
$.ajax({
|
||||||
|
url: "/main/post/l2comment",
|
||||||
|
type: "GET",
|
||||||
|
data: {
|
||||||
|
"l1CommentId": comment_id,
|
||||||
|
"page": page_total_num
|
||||||
|
},
|
||||||
|
async: true,
|
||||||
|
timeout: 3000,
|
||||||
|
dataType: "json",
|
||||||
|
error: function() {},
|
||||||
|
success: function(data, status) { //如果调用成功
|
||||||
|
// var jsonObject = JSON.parse(data);
|
||||||
|
var code = data.code;
|
||||||
|
if (code != 200) {
|
||||||
|
if (data.message != null) {
|
||||||
|
showMessagePopup(data.message)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
displayAjaxL2commentList(item, $('script[type="text/template"]').html(), data.data, page_total_num, page_total_num, ajax_url, comment_id, louzhu_id);
|
||||||
|
$(item).closest('.write_reply').remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 底部js -->
|
||||||
|
<script type="text/template">
|
||||||
|
<li class="clr" {display_str}>
|
||||||
|
<div class="user_ti f1">
|
||||||
|
<img src="{avatar}" onclick="{url_to_user}">
|
||||||
|
</div>
|
||||||
|
<div class="more_reply_right f1">
|
||||||
|
<div class="l2_comment user_name">
|
||||||
|
<span class="user_reply_name" onclick="{url_to_user}">{nickName}</span>
|
||||||
|
<span class="user_reply_level">Lv{level}</span> {louzhu_span}
|
||||||
|
<p>: {commentContent}</p>
|
||||||
|
<!--safe咋办-->
|
||||||
|
</div>
|
||||||
|
<div class="user_reply_time">
|
||||||
|
|
||||||
|
<span>{commentTime}</span>
|
||||||
|
<span class="to_reply f2" onclick="showReply(this)">回复</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</script>
|
||||||
|
<script type="text/templateCommentItem">
|
||||||
|
{anchor_str}
|
||||||
|
<li class="clr" style="margin-left:70px;position: relative">
|
||||||
|
<div class="user_ti f1">
|
||||||
|
<img src="{avatar}" onclick="{url_to_user}">
|
||||||
|
</div>
|
||||||
|
<div class="reply_right f1 " >
|
||||||
|
<input type="hidden" name="comment_id_hidden" class="comment_id_hidden" value="{commentId}" data-floor-num="{commentFloorNum}" />
|
||||||
|
<div class="user_name">
|
||||||
|
<span onclick="{url_to_user}">{nickName}</span>
|
||||||
|
<span class="user_reply_level">Lv{level}</span> {louzhu_span}
|
||||||
|
<span class="f2 ie2">{commentFloorNum}楼</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{pic_or_music_container_div}
|
||||||
|
<ul class="more_user_reply">
|
||||||
|
<div class="user_reply_time">
|
||||||
|
{commentJudge_judgerRecommendStmt_div} {commentReward_rewardAmount_div}
|
||||||
|
<span>{commentTime}</span>
|
||||||
|
<span class="to_reply f2" onclick="showReply(this)">回复</span>
|
||||||
|
<!--<span class="to_hide_reply f2" onclick="hidel2comments(this)">收起回复({commentl2TotalCount})</span>-->
|
||||||
|
</div>
|
||||||
|
{reply_li_container_div}
|
||||||
|
</ul>
|
||||||
|
{l2_comment_page_nav_div}
|
||||||
|
</div>
|
||||||
|
{commentJudge_judgeStampUrl_span} {commentReward_rewardStampUrl_span}
|
||||||
|
</li>
|
||||||
|
</script>
|
108
z_postEx/hook/post_list_inc_filelist_after.htm
Normal file
108
z_postEx/hook/post_list_inc_filelist_after.htm
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<!-- 一级回复 -->
|
||||||
|
<div class="reply_right f1 " >
|
||||||
|
<div class="user_reply_time">
|
||||||
|
<span>03-14</span>
|
||||||
|
<span class="to_reply f2" onclick="showReply(this)" style="cursor:pointer">一级回复</span>
|
||||||
|
<!--<span class="to_hide_reply f2" onclick="hidel2comments(this)">收起回复(1)</span>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
//创建回复信息 直接从表中读取本次post的ID有多少回复
|
||||||
|
$postreply = db_find('post_reply', array('pid'=>$_post['pid']), array('create_date'=>1));
|
||||||
|
if($postreply) { foreach($postreply as $_posts) {
|
||||||
|
//创建回复人的信息,每条回复都会被查询一遍似乎很消耗资源
|
||||||
|
$userz = user_read_cache($_posts['uid']);
|
||||||
|
$postz['username'] = array_value($userz, 'username');
|
||||||
|
$postz['user_avatar_url'] = array_value($userz, 'avatar_url');
|
||||||
|
$postz['user'] = $userz ? $userz : user_guest();
|
||||||
|
!isset($postz['floor']) AND $postz['floor'] = '';
|
||||||
|
?>
|
||||||
|
<!-- 剩下的就是细化UI了 -->
|
||||||
|
<br>
|
||||||
|
<a href="<?php echo url("user-$_posts[uid]");?>" tabindex="-1">
|
||||||
|
<img class="avatar" src="<?php echo $postz['user_avatar_url'];?>">
|
||||||
|
</a>
|
||||||
|
<?php echo $postz['username'];?>
|
||||||
|
<span class="user_reply_level">Lv7</span>
|
||||||
|
<?php echo $_posts['message'];?>
|
||||||
|
<!-- 二级回复 -->
|
||||||
|
<div class="reply_right f1 " >
|
||||||
|
<div class="user_reply_time">
|
||||||
|
<span>03-14</span>
|
||||||
|
<span class="to_reply f2" onclick="showReply(this)" style="cursor:pointer">二级回复按钮</span>
|
||||||
|
<!--<span class="to_hide_reply f2" onclick="hidel2comments(this)">收起回复(1)</span>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php }} ?>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 以下是全新的 POST -->
|
||||||
|
<div class="list-item reply-wrap" data-id="461068570" data-index="0">
|
||||||
|
<div class="user-face">
|
||||||
|
<a href='<?php echo url("user-$_posts[uid]");?>' target="_blank" data-usercard-mid="14589321">
|
||||||
|
<img src="<?php echo $postz['user_avatar_url'];?>" alt="">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="con ">
|
||||||
|
|
||||||
|
<div class="user">
|
||||||
|
<a data-usercard-mid="14589321" href='<?php echo url("user-$_posts[uid]");?>' target="_blank" class="name "><?php echo $postz['username'];?></a>
|
||||||
|
<a href="//www.bilibili.com/html/help.html#k_3" target="_blank"><i class="level l4"></i></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="text">这标题不是化学,是哲学<img src="//i0.hdslb.com/bfs/vip/f8219e484d5a55787c3f1722dc3112d0eba03a69.png@50w_50h.webp" alt="思索"></p>
|
||||||
|
|
||||||
|
<div class="info">
|
||||||
|
<span class="floor">#22</span>
|
||||||
|
<span class="plad">来自<a href="//app.bilibili.com/" target="_blank">安卓客户端</a></span>
|
||||||
|
<span class="time">45分钟前</span>
|
||||||
|
<span class="like "><i></i><span>2</span></span>
|
||||||
|
<span class="hate "><i></i></span>
|
||||||
|
<span class="reply btn-hover btn-highlight">回复</span>
|
||||||
|
<div class="operation">
|
||||||
|
<div class="spot"></div>
|
||||||
|
<div class="opera-list" style="display: none;">
|
||||||
|
<ul>
|
||||||
|
<li class="blacklist">加入黑名单</li>
|
||||||
|
<li class="report">举报</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="reply-box">
|
||||||
|
<div class="reply-item reply-wrap" data-id="461092529" data-index="0">
|
||||||
|
<a href="//space.bilibili.com/43646124" data-usercard-mid="43646124" target="_blank" class="reply-face">
|
||||||
|
<img src="//i0.hdslb.com/bfs/face/ba27db05e3f0808b8ee0f19c817fb6219cf9e921.jpg@52w_52h.webp" alt="">
|
||||||
|
</a>
|
||||||
|
<div class="reply-con">
|
||||||
|
<div class="user">
|
||||||
|
<a href="//space.bilibili.com/43646124" target="_blank" data-usercard-mid="43646124" class="name ">美丽科学-BOS</a>
|
||||||
|
<a href="//www.bilibili.com/html/help.html#k_3" target="_blank"><i class="level l5"></i></a>
|
||||||
|
<span class="text-con">科学的尽头是艺术更是哲学 没毛病 哈哈哈哈</span>
|
||||||
|
</div>
|
||||||
|
<div class="info">
|
||||||
|
<span class="time">7分钟前</span>
|
||||||
|
<span class="like "><i></i><span></span></span>
|
||||||
|
<span class="reply btn-hover">回复</span>
|
||||||
|
<div class="operation btn-hover btn-hide-re">
|
||||||
|
<div class="spot"></div>
|
||||||
|
<div class="opera-list" style="display: none;">
|
||||||
|
<ul>
|
||||||
|
<li class="blacklist">加入黑名单</li>
|
||||||
|
<li class="report">举报</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="paging-box"></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
46
z_postEx/install.php
Normal file
46
z_postEx/install.php
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
Xiuno BBS 4.0 插件:楼中楼 插件安装
|
||||||
|
创建posts表,用于回复楼层的时候多读取一遍楼层
|
||||||
|
幻 / 2017-09-16 05:11
|
||||||
|
*/
|
||||||
|
|
||||||
|
!defined('DEBUG') AND exit('Forbidden');
|
||||||
|
|
||||||
|
$tablepre = $db->tablepre;
|
||||||
|
|
||||||
|
$sql = "CREATE TABLE IF NOT EXISTS {$tablepre}post_reply (
|
||||||
|
pid int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
|
rid int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
uid int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
|
isfirst int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
|
create_date int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
|
userip int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
|
message text NOT NULL DEFAULT '',
|
||||||
|
PRIMARY KEY (pid),
|
||||||
|
KEY (rid)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
|
||||||
|
$r = db_exec($sql);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
目前不使用缓存
|
||||||
|
// 缓存 tagid 10000,10000,10000,10000
|
||||||
|
$sql = "ALTER TABLE {$tablepre}thread ADD COLUMN tagids char(32) NOT NULL DEFAULT ''";
|
||||||
|
$r = db_exec($sql);
|
||||||
|
|
||||||
|
// 缓存的时间,用来和 setting('tag_update_time') 对比
|
||||||
|
$sql = "ALTER TABLE {$tablepre}thread ADD COLUMN tagids_time int(11) unsigned NOT NULL DEFAULT '0'";
|
||||||
|
$r = db_exec($sql);
|
||||||
|
|
||||||
|
// tag 缓存的时间
|
||||||
|
setting_set('tag_update_time', $time);
|
||||||
|
|
||||||
|
|
||||||
|
//$r === FALSE AND message(-1, '创建表结构失败');
|
||||||
|
*/
|
||||||
|
?>
|
171
z_postEx/main.js
Normal file
171
z_postEx/main.js
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
/*表情添加*/
|
||||||
|
function showEmoji(ele){
|
||||||
|
var the_face=$(ele).closest('.face_top').next()
|
||||||
|
if(the_face.hasClass('emoji_section')){
|
||||||
|
$(ele).removeClass("to_show");
|
||||||
|
the_face.removeClass('emoji_section').find('ul').remove()
|
||||||
|
}else{
|
||||||
|
$(ele).addClass("to_show").siblings().removeClass("to_show")
|
||||||
|
the_face.find('ul').remove()
|
||||||
|
the_face.removeClass('face_section emoji_section').addClass('emoji_section').append(show_emojis())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function showFace(ele){
|
||||||
|
var the_face=$(ele).closest('.face_top').next()
|
||||||
|
if(the_face.hasClass('face_section')){
|
||||||
|
$(ele).removeClass("to_show");
|
||||||
|
the_face.removeClass('face_section').find('ul').remove()
|
||||||
|
}else{
|
||||||
|
$(ele).addClass("to_show").siblings().removeClass("to_show")
|
||||||
|
the_face.find('ul').remove()
|
||||||
|
the_face.removeClass('face_section emoji_section').addClass('face_section').append(show_faces())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function show_emojis(){
|
||||||
|
var faceList = [" (๑• . •๑) ", " ˋ( ° ▽、° ) ", " (^人^) ", " _(:3」∠)_ ", " →_→ ", " ←_← ", " (*^.^*) ", " ٩(๑`^´๑)۶ ", " ╮(╯_╰)╭ ",
|
||||||
|
" ヾ(′▽`*)ゝ ", " o(≧v≦)o~~ ", " ↖(^ω^)↗ ", " ヽ( ^∀^)ノ ", " ‵(*∩_∩*)′ ", " (/≧▽≦)/~ ", " ㄟ( ▔, ▔ )ㄏ ",
|
||||||
|
" ~( ̄▽ ̄~) ", " (~ ̄▽ ̄)~ ", " /(ㄒoㄒ)/~~ ", " (*/ω\*) ", " ≧▽≦蛤蛤蛤 ", " (°ー°〃) ", " ヾ( ̄▽ ̄) ",
|
||||||
|
" (╯°Д°)╯︵ ", " (☆ω☆) ", " \@_\@ ", " (*´艸`)、 ", " QAQ ", " (⊙o⊙) ", " (×_×)昏倒 ", " ( ˘•㉨•˘ ) ",
|
||||||
|
" ヾ(´(エ)`ノ゙ ", " ฅ( ̳• ◡ • ̳)ฅ ", " ⊙﹏⊙‖∣ ", " (。•ˇ‸ˇ•。) ", " ╭(╯^╰)╮ ", " ( •̀∀•́ ) ", " o(>﹏<)o ",
|
||||||
|
" (ˉ▽ ̄~) 切~~ ", " ⊙ω⊙ ", " =。=b ", " =3333= ", " (ง •̀_•́)ง ", " <(_ _)> ", " o( ̄ヘ ̄o#) ", " ヽ( ̄д ̄;)ノ ",
|
||||||
|
" ヽ(=^・ω・^=)丿 ", " ( ^_^ )/~~拜 ", " Orz ", " ♪(^∇^*) ", " (ฅ´ω`ฅ)留爪 ", " ( ´◔ ‸◔') ", " (*^.^*) ", " p(^_^)q ",
|
||||||
|
" ┗( T﹏T )┛ ", " (ˉ▽ˉ;) ", " Õ_Õ ", " 눈_눈 ", " o(一︿一+)o ", " (〃 ̄︶ ̄)人( ̄︶ ̄〃) "]
|
||||||
|
|
||||||
|
var reply_display_emoji ='';
|
||||||
|
var emoji_li='';
|
||||||
|
var len_emoji=faceList.length;
|
||||||
|
for (var i=0; i<len_emoji; i++) {
|
||||||
|
emoji_li += "<li onclick=\"addEmoji(this, '"+faceList[i]+"');\">"+faceList[i]+ "</li>";
|
||||||
|
}
|
||||||
|
reply_display_emoji ='<ul>'+emoji_li+'</ul>';
|
||||||
|
return reply_display_emoji
|
||||||
|
}
|
||||||
|
function addFace(item, imgUlr) {
|
||||||
|
var $write_reply=$(item).closest('.add_icons').parent();
|
||||||
|
var img_str = "<img src='"+imgUlr+"'></img>";
|
||||||
|
$write_reply.find('.in_write').append(img_str).focus()
|
||||||
|
$write_reply.find('.add_icons').removeClass('face_section').find('ul').remove()
|
||||||
|
$write_reply.find('.face_top li').removeClass()
|
||||||
|
placeCaretAtEnd($write_reply.find('.in_write').get(0));
|
||||||
|
}
|
||||||
|
function addEmoji(item, str) {
|
||||||
|
var $write_reply=$(item).closest('.add_icons').parent();
|
||||||
|
$write_reply.find('.in_write').append(str).focus()
|
||||||
|
$write_reply.find('.add_icons').removeClass('emoji_section').find('ul').remove()
|
||||||
|
$write_reply.find('.face_top li').removeClass('to_show')
|
||||||
|
placeCaretAtEnd($write_reply.find('.in_write').get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
function placeCaretAtEnd(el) {
|
||||||
|
el.focus();
|
||||||
|
if (typeof window.getSelection != "undefined"
|
||||||
|
&& typeof document.createRange != "undefined") {
|
||||||
|
var range = document.createRange();
|
||||||
|
range.selectNodeContents(el);
|
||||||
|
range.collapse(false);
|
||||||
|
var sel = window.getSelection();
|
||||||
|
sel.removeAllRanges();
|
||||||
|
sel.addRange(range);
|
||||||
|
} else if (typeof document.body.createTextRange != "undefined") {
|
||||||
|
var textRange = document.body.createTextRange();
|
||||||
|
textRange.moveToElementText(el);
|
||||||
|
textRange.collapse(false);
|
||||||
|
textRange.select();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//这是增加回复输入框的调用按钮触发
|
||||||
|
function showReply(ele){
|
||||||
|
var toReply=null
|
||||||
|
if ($(ele).closest('.more_reply_right').length>0) {
|
||||||
|
toReply="回复 @"+$(ele).closest('.more_reply_right').find('.user_reply_name').html()+":"
|
||||||
|
}else{
|
||||||
|
toReply=''
|
||||||
|
}
|
||||||
|
var replyDiv="<div class='write_reply'>"+
|
||||||
|
"<div>"+
|
||||||
|
"<div id='write_container' class='in_write' contenteditable='true'>"+toReply+"</div>"+
|
||||||
|
"</div>"+
|
||||||
|
"<div id='face_top' class='face_top'>"+
|
||||||
|
"<ul id='face_btn' class='clr'>"+
|
||||||
|
"<li onclick='showEmoji(this)'>(・ω・)颜文字</li>"+
|
||||||
|
"<li onclick='showFace(this)'><img src='/static/image/face_01.png'></li>"+
|
||||||
|
"</ul>"+
|
||||||
|
"<div class='f2'><span onclick='cancelReply(this)' style='margin-right:10px;'>取消</span><span class='ie2' onclick='send_comment(this)'>发送</span></div>"+
|
||||||
|
"</div>"+
|
||||||
|
"<div id='add_icons' class='add_icons'></div>"+
|
||||||
|
"</div>"
|
||||||
|
if ($(ele).parents().find('.write_reply').length>0) {
|
||||||
|
if ($(ele).closest('.user_reply_time').siblings('.write_reply').length>0) {
|
||||||
|
$(ele).parents().find('.write_reply').detach()
|
||||||
|
}else{
|
||||||
|
$(ele).parents().find('.write_reply').detach()
|
||||||
|
$(replyDiv).insertAfter($(ele).closest('.user_reply_time'))
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$(replyDiv).insertAfter($(ele).closest('.user_reply_time'))
|
||||||
|
|
||||||
|
placeCaretAtEnd($(ele).closest('.reply_right').find('.in_write').get(0));
|
||||||
|
}
|
||||||
|
$('[contenteditable]').each(function() {
|
||||||
|
// 干掉IE http之类地址自动加链接
|
||||||
|
try {
|
||||||
|
document.execCommand("AutoUrlDetect", false, false);
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
$(this).on('paste', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var text = null;
|
||||||
|
|
||||||
|
if(window.clipboardData && clipboardData.setData) {
|
||||||
|
// IE
|
||||||
|
text = window.clipboardData.getData('text');
|
||||||
|
} else {
|
||||||
|
text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('在这里输入文本');
|
||||||
|
}
|
||||||
|
if (document.body.createTextRange) {
|
||||||
|
if (document.selection) {
|
||||||
|
textRange = document.selection.createRange();
|
||||||
|
} else if (window.getSelection) {
|
||||||
|
sel = window.getSelection();
|
||||||
|
var range = sel.getRangeAt(0);
|
||||||
|
|
||||||
|
// 创建临时元素,使得TextRange可以移动到正确的位置
|
||||||
|
var tempEl = document.createElement("span");
|
||||||
|
tempEl.innerHTML = "&#FEFF;";
|
||||||
|
range.deleteContents();
|
||||||
|
range.insertNode(tempEl);
|
||||||
|
textRange = document.body.createTextRange();
|
||||||
|
textRange.moveToElementText(tempEl);
|
||||||
|
tempEl.parentNode.removeChild(tempEl);
|
||||||
|
}
|
||||||
|
textRange.text = text;
|
||||||
|
textRange.collapse(false);
|
||||||
|
textRange.select();
|
||||||
|
} else {
|
||||||
|
// Chrome之类浏览器
|
||||||
|
document.execCommand("insertText", false, text);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 去除Crtl+b/Ctrl+i/Ctrl+u等快捷键
|
||||||
|
$(this).on('keydown', function(e) {
|
||||||
|
// e.metaKey for mac
|
||||||
|
if (e.ctrlKey || e.metaKey) {
|
||||||
|
switch(e.keyCode){
|
||||||
|
case 66: //ctrl+B or ctrl+b
|
||||||
|
case 98:
|
||||||
|
case 73: //ctrl+I or ctrl+i
|
||||||
|
case 105:
|
||||||
|
case 85: //ctrl+U or ctrl+u
|
||||||
|
case 117: {
|
||||||
|
e.preventDefault();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function cancelReply(ele){
|
||||||
|
$(ele).closest('.write_reply').detach()
|
||||||
|
}
|
16
z_postEx/unstall.php
Normal file
16
z_postEx/unstall.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
Xiuno BBS 4.0 插件实例:TAG 插件卸载
|
||||||
|
admin/plugin-unstall-xn_tag.htm
|
||||||
|
*/
|
||||||
|
|
||||||
|
!defined('DEBUG') AND exit('Forbidden');
|
||||||
|
|
||||||
|
$tablepre = $db->tablepre;
|
||||||
|
$sql = "DROP TABLE IF EXISTS {$tablepre}post_reply;";
|
||||||
|
$r = db_exec($sql);
|
||||||
|
|
||||||
|
$r === FALSE AND message(-1, '卸载表失败');
|
||||||
|
|
||||||
|
?>
|
Loading…
Reference in New Issue
Block a user