添加图音视频标签

This commit is contained in:
taoser 2021-06-07 17:53:24 +08:00
parent f5d01b7eac
commit a0dcfaa736
16 changed files with 199 additions and 86 deletions

@ -7,8 +7,8 @@
* 后台http://adm.aieok.com * 后台http://adm.aieok.com
* 账号test * 账号test
* 密码test123 * 密码test123
* 版本TaoLer 1.7.7 * 版本TaoLer 1.7.8
* 日期2021.5.27 * 日期2021.6.1
#### 项目地址 #### 项目地址

@ -96,7 +96,7 @@ class Article extends Model
{ {
$artTop = Cache::get('arttop'); $artTop = Cache::get('arttop');
if (!$artTop) { if (!$artTop) {
$artTop = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,pv,jie,upzip,has_img')->where(['is_top' => 1, 'status' => 1, 'delete_time' => 0])->with([ $artTop = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,pv,jie,upzip,has_img,has_video,has_audio')->where(['is_top' => 1, 'status' => 1, 'delete_time' => 0])->with([
'cate' => function ($query) { 'cate' => function ($query) {
$query->where('delete_time', 0)->field('id,catename,ename'); $query->where('delete_time', 0)->field('id,catename,ename');
}, },
@ -121,7 +121,7 @@ class Article extends Model
{ {
$artList = Cache::get('artlist'); $artList = Cache::get('artlist');
if(!$artList){ if(!$artList){
$artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_hot,pv,jie,upzip,has_img') $artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_hot,pv,jie,upzip,has_img,has_video,has_audio')
->with([ ->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename,ename'); $query->where('delete_time',0)->field('id,catename,ename');
@ -209,7 +209,7 @@ class Article extends Model
switch ($type) { switch ($type) {
//查询文章,15个分1页 //查询文章,15个分1页
case 'jie': case 'jie':
$artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,is_hot,pv,jie,upzip,has_img')->with([ $artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,is_hot,pv,jie,upzip,has_img,has_video,has_audio')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename,ename'); $query->where('delete_time',0)->field('id,catename,ename');
}, },
@ -225,7 +225,7 @@ class Article extends Model
break; break;
case 'hot': case 'hot':
$artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,is_hot,pv,jie,upzip,has_img')->with([ $artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,is_hot,pv,jie,upzip,has_img,has_video,has_audio')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename,ename'); $query->where('delete_time',0)->field('id,catename,ename');
}, },
@ -241,7 +241,7 @@ class Article extends Model
break; break;
case 'top': case 'top':
$artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,is_hot,pv,jie,upzip,has_img')->with([ $artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,is_hot,pv,jie,upzip,has_img,has_video,has_audio')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename,ename'); $query->where('delete_time',0)->field('id,catename,ename');
}, },
@ -257,7 +257,7 @@ class Article extends Model
break; break;
default: default:
$artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,is_hot,pv,jie,upzip,has_img')->with([ $artList = $this::field('id,title,title_color,cate_id,user_id,create_time,is_top,is_hot,pv,jie,upzip,has_img,has_video,has_audio')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename,ename'); $query->where('delete_time',0)->field('id,catename,ename');
}, },

@ -126,6 +126,7 @@ class Article extends BaseController
if(empty($data['content'])){ if(empty($data['content'])){
return json(['code'=>0, 'msg'=>'评论不能为空!']); return json(['code'=>0, 'msg'=>'评论不能为空!']);
} }
//用户留言存入数据库 //用户留言存入数据库
if (Comment::create($data)) { if (Comment::create($data)) {
//站内信 //站内信
@ -165,11 +166,11 @@ class Article extends BaseController
if (true !== $result) { if (true !== $result) {
return Msgres::error($validate->getError()); return Msgres::error($validate->getError());
} }
//判断是否插入图片
$isHasImg = strpos($data['content'],'img['); //获取内容图片音视频标识
if(is_int($isHasImg)){ $iva= $this->hasIva($data['content']);
$data['has_img'] = 1; $data = array_merge($data,$iva);
};
$article = new ArticleModel(); $article = new ArticleModel();
$result = $article->add($data); $result = $article->add($data);
if ($result == 1) { if ($result == 1) {
@ -207,11 +208,10 @@ class Article extends BaseController
if(true !== $res){ if(true !== $res){
return Msgres::error($validate->getError()); return Msgres::error($validate->getError());
} else { } else {
//判断是否插入图片 //获取内容图片音视频标识
$isHasImg = strpos($data['content'],'img['); $iva= $this->hasIva($data['content']);
if(is_int($isHasImg)){ $data = array_merge($data,$iva);
$data['has_img'] = 1;
};
$result = $article->edit($data); $result = $article->edit($data);
if($result == 1) { if($result == 1) {
//删除原有缓存显示编辑后内容 //删除原有缓存显示编辑后内容
@ -251,7 +251,7 @@ class Article extends BaseController
return $res; return $res;
} }
//文本编辑器图片上传 //文本编辑器上传图片
public function textImgUpload() public function textImgUpload()
{ {
$file = request()->file('file'); $file = request()->file('file');
@ -302,12 +302,12 @@ class Article extends BaseController
return json($res); return json($res);
} }
//上传附件 //上传视频
public function upVideo() public function upVideo()
{ {
$file = request()->file('file'); $file = request()->file('file');
try { try {
validate(['file'=>'fileSize:10240000|fileExt:mp4,jpg,png,jpeg']) validate(['file'=>'fileSize:102400000|fileExt:mp4,mp3'])
->check(['file'=>$file]); ->check(['file'=>$file]);
$savename = \think\facade\Filesystem::disk('public')->putFile('video',$file); $savename = \think\facade\Filesystem::disk('public')->putFile('video',$file);
} catch (ValidateException $e) { } catch (ValidateException $e) {
@ -393,4 +393,20 @@ class Article extends BaseController
return json($res); return json($res);
} }
//内容中是否有图片视频音频插入
public function hasIva($content)
{
//判断是否插入图片
$isHasImg = strpos($content,'img[');
$data['has_img'] = is_int($isHasImg) ? 1 : 0;
//判断是否插入视频
$isHasVideo = strpos($content,'video(');
$data['has_video'] = is_int($isHasVideo) ? 1 : 0;
//判断是否插入音频
$isHasAudio = strpos($content,'audio[');
$data['has_audio'] = is_int($isHasAudio) ? 1 : 0;
return $data;
}
} }

@ -24,7 +24,7 @@ class Login extends BaseController
protected function initialize() protected function initialize()
{ {
parent::initialize(); parent::initialize();
View::assign(['jspage'=>'user']); View::assign(['jspage'=>'']);
} }
//用户登陆 //用户登陆

@ -52,15 +52,15 @@ return [
'post now' => '立即发布', 'post now' => '立即发布',
'my collection' => '我的收藏', 'my collection' => '我的收藏',
'collection' => '收藏', 'collection' => '收藏',
'cancel collection' => '取消收藏', 'cancel collection' => '收藏-',
'all' => '综合', 'all' => '综合',
'finished' => '已结', 'finished' => '已结',
'end' => '已结', 'end' => '已结',
'no finished' => '未结', 'no finished' => '未结',
'hot' => '精', 'hot' => '精',
'top' => '顶', 'top' => '顶',
'cancel hoting' => '取加精', 'cancel hoting' => '-',
'cancel topping' => '取置顶', 'cancel topping' => '-',
'go sign' => '去签到', 'go sign' => '去签到',
'more post' => '更多帖子', 'more post' => '更多帖子',
'friendly link' => '友情链接', 'friendly link' => '友情链接',

@ -59,6 +59,8 @@ CREATE TABLE `tao_article` (
`is_hot` enum('0','1') NOT NULL DEFAULT '0' COMMENT '推荐1否0', `is_hot` enum('0','1') NOT NULL DEFAULT '0' COMMENT '推荐1否0',
`is_reply` enum('1','0') NOT NULL DEFAULT '1' COMMENT '0禁评1可评', `is_reply` enum('1','0') NOT NULL DEFAULT '1' COMMENT '0禁评1可评',
`has_img` enum('1','0') NOT NULL DEFAULT '0' COMMENT '1有图0无图', `has_img` enum('1','0') NOT NULL DEFAULT '0' COMMENT '1有图0无图',
`has_video` enum('1','0') NOT NULL DEFAULT '0' COMMENT '1有视频0无',
`has_audio` enum('1','0') NOT NULL DEFAULT '0' COMMENT '1有音频0无',
`pv` int(11) NOT NULL DEFAULT '0' COMMENT '浏览量', `pv` int(11) NOT NULL DEFAULT '0' COMMENT '浏览量',
`jie` enum('1','0') NOT NULL DEFAULT '0' COMMENT '0未结1已结', `jie` enum('1','0') NOT NULL DEFAULT '0' COMMENT '0未结1已结',
`upzip` varchar(70) DEFAULT NULL COMMENT '文章附件', `upzip` varchar(70) DEFAULT NULL COMMENT '文章附件',
@ -79,7 +81,6 @@ CREATE TABLE `tao_article` (
-- ---------------------------- -- ----------------------------
-- Records of tao_article -- Records of tao_article
-- ---------------------------- -- ----------------------------
INSERT INTO `tao_article` VALUES ('1', 'Fly Template 社区模版', '[quote]\r\n 你们认为layui官方Fly Template 社区模版怎么样?\r\n[/quote]\r\n你喜欢吗\r\n很多人都说比较喜欢我个人认为不错的这个板子非常喜欢我看到有一些人做了开发可惜的是都没有很好的维护有的漏洞比较多不完善很美好的一个板子但没有长久 的更新,非常的可惜。\r\n如果用别人的不好用那我就做一个出来吧。喜欢的人多关注适当时候放出来大家一起用。\r\n关于详情页的内容解析\r\n该模板自带一个特定语法的编辑器当你把内容存储到数据库后在页面读取后浏览会发现诸如“表情、代码、图片”等无法解析这是因为需要对该内容进行一次转义通常来说这是在服务端完成的但鉴于简单化你还可以直接在前端去解析在模板的detail.html中我们已经把相关的代码写好了你只需打开注释即可在代码的最下面。当然如果觉得编辑器无法满足你的需求你也可以把该编辑器换成别的HTML编辑器或MarkDown编辑器。', '1', '1', '1', '0', '0', '1', '0', '0', '0', null, '0', null, '0', null, null, null, '1546698225', '1577772362', '0');
-- ---------------------------- -- ----------------------------
-- Table structure for tao_auth_group -- Table structure for tao_auth_group

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

(image error) Size: 35 KiB

@ -16,7 +16,7 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
,imgcom = layui.imgcom ,imgcom = layui.imgcom
,device = layui.device() ,device = layui.device()
,DISABLED = 'layui-btn-disabled'; ,DISABLED = 'layui-btn-disabled';
var uid = layui.cache.user.uid;
//阻止IE7以下访问 //阻止IE7以下访问
if(device.ie && device.ie < 8){ if(device.ie && device.ie < 8){
layer.alert('如果您非得使用 IE 浏览器访问Fly社区那么请使用 IE8+'); layer.alert('如果您非得使用 IE 浏览器访问Fly社区那么请使用 IE8+');
@ -96,12 +96,12 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
var html = ['<div class="layui-unselect fly-edit">' var html = ['<div class="layui-unselect fly-edit">'
,'<span type="face" title="表情"><i class="iconfont icon-yxj-expression" style="top: 1px;"></i></span>' ,'<span type="face" title="表情"><i class="iconfont icon-yxj-expression" style="top: 1px;"></i></span>'
,'<span type="picture" title="图片img[src]"><i class="iconfont icon-tupian"></i></span>' ,'<span type="picture" title="图片img[src]"><i class="iconfont icon-tupian"></i></span>'
,'<span type="video" title="视频"><i class="layui-icon layui-icon-video"></i></span>'
,'<span type="audio" title="音频"><i class="layui-icon layui-icon-headset"></i></span>'
,'<span type="href" title="超链接格式a(href)[text]"><i class="iconfont icon-lianjie"></i></span>' ,'<span type="href" title="超链接格式a(href)[text]"><i class="iconfont icon-lianjie"></i></span>'
,'<span type="quote" title="引用"><i class="iconfont icon-yinyong" style="top: 1px;"></i></span>' ,'<span type="quote" title="引用"><i class="iconfont icon-yinyong" style="top: 1px;"></i></span>'
,'<span type="code" title="插入代码" class="layui-hide-xs"><i class="iconfont icon-emwdaima" style="top: 1px;"></i></span>' ,'<span type="code" title="插入代码" class="layui-hide-xs"><i class="iconfont icon-emwdaima" style="top: 1px;"></i></span>'
,'<span type="hr" title="水平线">hr</span>' ,'<span type="hr" title="水平线">hr</span>'
,'<span type="video" title="视频"><i class="layui-icon layui-icon-video"></i></span>'
,'<span type="audio" title="音频"><i class="layui-icon layui-icon-headset"></i></span>'
,'<span type="preview" title="预览"><i class="iconfont icon-yulan1"></i></span>' ,'<span type="preview" title="预览"><i class="iconfont icon-yulan1"></i></span>'
,'</div>'].join(''); ,'</div>'].join('');
@ -134,13 +134,21 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
}); });
} }
,picture: function(editor){ //插入图片 ,picture: function(editor){ //插入图片
//判断登陆
if(uid == -1){
layer.msg('请登录再发图', {icon: 6}, function(){
location.href = login;
})
return false;
}
layer.open({ layer.open({
type: 1 type: 1
,id: 'fly-jie-upload' ,id: 'fly-jie-upload'
,title: '插入图片' ,title: '插入图片'
,area: 'auto' ,area: 'auto'
,shade: false ,shade: false
,area: '465px' //,area: '465px'
,fixed: false ,fixed: false
,offset: [ ,offset: [
editor.offset().top - $(window).scrollTop() + 'px' editor.offset().top - $(window).scrollTop() + 'px'
@ -151,7 +159,7 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
,'<li class="layui-form-item">' ,'<li class="layui-form-item">'
,'<label class="layui-form-label">URL</label>' ,'<label class="layui-form-label">URL</label>'
,'<div class="layui-input-inline">' ,'<div class="layui-input-inline">'
,'<input required name="image" placeholder="支持直接粘贴远程图片地址" value="" class="layui-input">' ,'<input required name="image" placeholder="支持粘贴远程图片地址" value="" class="layui-input">'
,'</div>' ,'</div>'
,'<button type="button" class="layui-btn layui-btn-primary" id="uploadImg"><i class="layui-icon">&#xe67c;</i>上传图片</button>' ,'<button type="button" class="layui-btn layui-btn-primary" id="uploadImg"><i class="layui-icon">&#xe67c;</i>上传图片</button>'
,'</li>' ,'</li>'
@ -257,49 +265,90 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
editor.trigger('keyup'); editor.trigger('keyup');
} }
,video: function(editor){ //插入视频 ,video: function(editor){ //插入视频
//判断登陆
if(uid == -1){
layer.msg('请登录再发视频', {icon: 6}, function(){
location.href = login;
})
return false;
}
layer.open({ layer.open({
type: 1 type: 1
,id: 'fly-jie-video-upload' ,id: 'fly-jie-video-upload'
,title: '插入视频' ,title: '插入视频'
,area: 'auto'
,shade: false ,shade: false
,area: '465px' //,area: '465px'
,fixed: false
,offset: [
editor.offset().top - $(window).scrollTop() + 'px'
,editor.offset().left + 'px'
]
,skin: 'layui-layer-border' ,skin: 'layui-layer-border'
,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">' ,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">'
,'<li class="layui-form-item">' ,'<li class="layui-form-item">'
,'<label class="layui-form-label">封面</label>' ,'<label class="layui-form-label">封面</label>'
,'<div class="layui-input-inline">' ,'<div class="layui-input-inline">'
,'<input type="text" required name="cover" placeholder="支持直接粘贴远程图片地址" value="" class="layui-input">' ,'<input type="text" required name="cover" placeholder="支持粘贴远程图片地址" value="" class="layui-input">'
,'</div>' ,'</div>'
,'<input required type="file" name="file" lay-type="image" class="layui-upload-file" value="">' ,'<button type="button" lay-type="image" class="layui-btn" id="video-img"><i class="layui-icon">&#xe67c;</i>上传封图</button>'
,'</li>' ,'</li>'
,'<li class="layui-form-item">' ,'<li class="layui-form-item">'
,'<label class="layui-form-label">URL</label>' ,'<label class="layui-form-label">URL</label>'
,'<div class="layui-input-inline">' ,'<div class="layui-input-inline">'
,'<input type="text" required name="video" placeholder="支持直接粘贴远程视频地址" value="" class="layui-input">' ,'<input type="text" required name="video" placeholder="支持粘贴远程视频地址" value="" class="layui-input">'
,'</div>' ,'</div>'
,'<input required type="file" name="file" lay-type="video" class="layui-upload-file" value="上传文件">' ,'<button type="button" lay-type="video" class="layui-btn" id="layedit-video"><i class="layui-icon layui-icon-video"></i>上传视频</button>'
,'</li>' ,'</li>'
,'<li class="layui-form-item" style="text-align: center;">' ,'<li class="layui-form-item" style="text-align: center;">'
,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>' ,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>'
,'</li>' ,'</li>'
,'</ul>'].join('') ,'</ul>'].join('')
,success: function(layero, index){ ,success: function(layero, index){
var loding, video = layero.find('input[name="video"]'), cover = layero.find('input[name="cover"]'); var video = layero.find('input[name="video"]'), cover = layero.find('input[name="cover"]');
//上传视频
upload.render({ upload.render({
url: '/article/upVideo/' url: videoUrl
,before: function(input){ loding = layer.msg('文件上传中,请稍等哦', { icon: 16 ,shade:0.3,time:0 }); } ,accept: 'video'
,elem: '#fly-jie-video-upload .layui-upload-file' ,acceptMime: 'video/mp4'
,success: function(res,input){ ,exts: 'mp4'
layer.close(loding); ,elem: '#layedit-video'
if(res.status == 0){ ,before: function(obj){ //obj参数包含的信息跟 choose回调完全一致可参见上文。
if($(input).attr('lay-type') == 'image'){ layer.load(2); //上传loading
cover.val(res.data);
}else{
video.val(res.data);
} }
,done: function(res){
if(res.status == 0){
video.val(res.url);
} else { } else {
layer.msg(res.msg, {icon: 5}); layer.msg(res.msg, {icon: 5});
} }
layer.closeAll('loading');
}
});
//上传图片
upload.render({
elem: '#video-img'
,accept: 'images'
,acceptMime: 'image/*'
,exts: 'jpg|png|gif|bmp|jpeg'
,url: textImgUpload
,auto: false
//,bindAction: '#img-button' //指向一个按钮触发上传
//,field: 'image'
,size: 10240
,choose: function (obj) { //选择文件后的回调
imgcom.uploads(obj);
}
,done: function(res){
if(res.status == 0){
cover.val(res.url);
} else {
layer.msg(res.msg, {icon: 5});
}
}
,error: function(){
layer.msg('系统错误,请联系管理员');
} }
}); });
form.on('submit(uploadImages)', function(data){ form.on('submit(uploadImages)', function(data){
@ -312,12 +361,25 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
}); });
} }
,audio: function(editor){ //插入音频 ,audio: function(editor){ //插入音频
//判断登陆
if(uid == -1){
layer.msg('请登录再发布', {icon: 6}, function(){
location.href = login;
})
return false;
}
layer.open({ layer.open({
type: 1 type: 1
,id: 'fly-jie-audio-upload' ,id: 'fly-jie-audio-upload'
,title: '插入音频' ,title: '插入音频'
,area: 'auto'
,shade: false ,shade: false
,area: '465px' //,area: '465px'
,fixed: false
,offset: [
editor.offset().top - $(window).scrollTop() + 'px'
,editor.offset().left + 'px'
]
,skin: 'layui-layer-border' ,skin: 'layui-layer-border'
,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">' ,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">'
,'<li class="layui-form-item">' ,'<li class="layui-form-item">'
@ -325,30 +387,38 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
,'<div class="layui-input-inline">' ,'<div class="layui-input-inline">'
,'<input required name="audio" placeholder="支持直接粘贴远程音频地址" value="" class="layui-input">' ,'<input required name="audio" placeholder="支持直接粘贴远程音频地址" value="" class="layui-input">'
,'</div>' ,'</div>'
,'<input required type="file" name="file" lay-type="audio" class="layui-upload-file" value="">' ,'<button required type="button" name="file" lay-type="audio" class="layui-btn upload-audio"><i class="layui-icon layui-icon-headset"></i>上传音频</button>'
,'</li>' ,'</li>'
,'<li class="layui-form-item" style="text-align: center;">' ,'<li class="layui-form-item" style="text-align: center;">'
,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>' ,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>'
,'</li>' ,'</li>'
,'</ul>'].join('') ,'</ul>'].join('')
,success: function(layero, index){ ,success: function(layero, index){
var loding,image = layero.find('input[name="audio"]'); var loding,audio = layero.find('input[name="audio"]');
upload.render({ upload.render({
url: '/Ajax/ThreadUpload/',elem: '#fly-jie-audio-upload .layui-upload-file' url: videoUrl
,before: function(input){ loding = layer.msg('文件上传中,请稍等哦', { icon: 16 ,shade:0.3,time:0 }); } ,elem: '#fly-jie-audio-upload .upload-audio'
,success: function(res){ ,accept: 'audio'
layer.close(loding); ,acceptMime: 'audio/mp3'
if(res.status == 1){ ,exts: 'mp3'
image.val(res.data); ,before: function(obj){
//loding = layer.msg('文件上传中,请稍等哦', { icon: 16 ,shade:0.3,time:0 });
layer.load(2); //上传loading
}
,done: function(res){
if(res.status == 0){
audio.val(res.url);
} else { } else {
layer.msg(res.msg, {icon: 5}); layer.msg(res.msg, {icon: 5});
} }
layer.closeAll('loading');
} }
}); });
form.on('submit(uploadImages)', function(data){ form.on('submit(uploadImages)', function(data){
var field = data.field; var field = data.field;
if(!field.audio) return image.focus(); if(!field.audio) return audio.focus();
layui.focusInsert(editor[0], 'audio['+ field.audio + '] '); layui.focusInsert(editor[0], 'audio['+ field.audio + '] ');
layer.close(index); layer.close(index);
}); });
@ -503,7 +573,7 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
.replace(/video\(.*?\)\[([^\s]+?)\]/g, function(str){ .replace(/video\(.*?\)\[([^\s]+?)\]/g, function(str){
var cover = (str.match(/video\(([\s\S]+?)\)\[/)||[])[1]; var cover = (str.match(/video\(([\s\S]+?)\)\[/)||[])[1];
var video = (str.match(/\)\[([^\s]+?)\]/)||[])[1]; var video = (str.match(/\)\[([^\s]+?)\]/)||[])[1];
cover = cover ? cover : '/Public/Topic/images/video_cover.jpg'; cover = cover ? cover : '/static/res/images/video_cover.jpg';
return '<video poster="'+ cover + '" controls crossorigin><source src="'+ video + '" type="video/mp4"></video>'; return '<video poster="'+ cover + '" controls crossorigin><source src="'+ video + '" type="video/mp4"></video>';
}) })
//转义音频 //转义音频
@ -677,9 +747,7 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'imgcom'],
} }
$('body').on('click', '#LAY_signin', function(){ $('body').on('click', '#LAY_signin', function(){
//登录判断 //登录判断
var uid = layui.cache.user.uid;
if(uid == -1){ if(uid == -1){
console.log(uid);
layer.msg('请登录再签到', {icon: 6}, function(){ layer.msg('请登录再签到', {icon: 6}, function(){
location.href = login; location.href = login;
}) })

@ -29,16 +29,18 @@
<a href="{:url('user/home',['id'=>$art.user.id])}" link> <a href="{:url('user/home',['id'=>$art.user.id])}" link>
<span class="layui-badge layui-bg-green " title="哪个小区">{:getAsing($art.user.area_id) ?: '无'}</span> <span class="layui-badge layui-bg-green " title="哪个小区">{:getAsing($art.user.area_id) ?: '无'}</span>
<cite>{$art.user.nickname ?: $art.user.name}</cite> <cite>{$art.user.nickname ?: $art.user.name}</cite>
<i>{$art.create_time|date='Y-m-d'}</i>
<!-- <!--
<i class="iconfont icon-renzheng" title="认证信息XXX"></i> <i class="iconfont icon-renzheng" title="认证信息XXX"></i>
-->
{if($art.user.vip > 0)} {if($art.user.vip > 0)}
<i class="layui-badge fly-badge-vip">vip{$art.user.vip}</i> <i class="layui-badge fly-badge-vip">vip{$art.user.vip}</i>
{/if} {/if}
-->
</a> </a>
<span> <span>
{$art.create_time|date='Y-m-d'}
{$art.has_img ?= ' <i class="layui-icon layui-icon-picture" style=" color: #5FB878;"></i>'} {$art.has_img ?= ' <i class="layui-icon layui-icon-picture" style=" color: #5FB878;"></i>'}
{$art.has_video ?= ' <i class="layui-icon layui-icon-play" style="color: #FF5722;"></i>'}
{$art.has_audio ?= ' <i class="layui-icon layui-icon-speaker" style="color: #000000;"></i>'}
{$art.upzip ?= ' <i class="layui-icon layui-icon-file-b" style="color: #009688;" title="附件"></i>'} {$art.upzip ?= ' <i class="layui-icon layui-icon-file-b" style="color: #009688;" title="附件"></i>'}
</span> </span>
<span class="layui-hide-xs" title="浏览"><i class="iconfont" title="浏览">&#xe60b;</i> {$art.pv}</span> <span class="layui-hide-xs" title="浏览"><i class="iconfont" title="浏览">&#xe60b;</i> {$art.pv}</span>

@ -67,10 +67,10 @@
<i class="layui-badge fly-badge-vip">vip{$article.user.vip}</i> <i class="layui-badge fly-badge-vip">vip{$article.user.vip}</i>
{/if} {/if}
</a> </a>
<span>{$article.create_time|date='Y-m-d H:d'}</span>
</div> </div>
<div class="detail-hits" id="LAY_jieAdmin" data-id="{$article['id']}"> <div class="detail-hits" id="LAY_jieAdmin" data-id="{$article['id']}">
<!--span style="padding-right: 10px; color: #FF7200">悬赏60飞吻</span--> <!--span style="padding-right: 10px; color: #FF7200">悬赏60飞吻</span-->
<span class="post-time" data="{$article.create_time}" style="padding-top: 5px;"></span>
{if(session('user_name')==$article.user.name || ($user.auth ?? ''))} {if(session('user_name')==$article.user.name || ($user.auth ?? ''))}
<span class="layui-btn layui-btn-xs jie-admin" type="edit"><a href="{:url('article/edit',['id'=>$article.id])}">{:lang('edit')}</a></span> <span class="layui-btn layui-btn-xs jie-admin" type="edit"><a href="{:url('article/edit',['id'=>$article.id])}">{:lang('edit')}</a></span>
{/if} {/if}
@ -116,7 +116,7 @@
</div> </div>
<div class="detail-hits"> <div class="detail-hits">
<span>{$vo.create_time}</span> <span class="post-time" data="{$vo.create_time}"></span>
</div> </div>
{if $vo.cai == 1} {if $vo.cai == 1}
<i class="iconfont icon-caina" title="最佳答案"></i> <i class="iconfont icon-caina" title="最佳答案"></i>
@ -209,7 +209,6 @@
{volist name="ad_comm" id="vo"} {volist name="ad_comm" id="vo"}
<a href="{$vo.slid_href}" target="_blank"><img src="{$vo.slid_img}" style="max-width: 100%;"></a> <a href="{$vo.slid_href}" target="_blank"><img src="{$vo.slid_img}" style="max-width: 100%;"></a>
{/volist} {/volist}
<p style="position: relative; color: #666;">QQ扫码加入TaoLer官群</p>
</div> </div>
</div> </div>
@ -221,7 +220,6 @@
var collectionFind = "{:url('Collection/find')}", var collectionFind = "{:url('Collection/find')}",
articleJieset = "{:url('Article/jieset')}", articleJieset = "{:url('Article/jieset')}",
articleDelete = "{:url('Article/delete')}", articleDelete = "{:url('Article/delete')}",
collection = "{:url('Collection/')}",
commentJiedaZan = "{:url('Comment/jiedaZan')}", commentJiedaZan = "{:url('Comment/jiedaZan')}",
commentJiedaCai = "{:url('Comment/jiedaCai')}", commentJiedaCai = "{:url('Comment/jiedaCai')}",
commentGetDa = "{:url('Comment/getDa')}", commentGetDa = "{:url('Comment/getDa')}",
@ -229,12 +227,28 @@ var collectionFind = "{:url('Collection/find')}",
commentJiedaDelete = "{:url('Comment/jiedaDelete')}", commentJiedaDelete = "{:url('Comment/jiedaDelete')}",
langCollection = "{:lang('collection')}", langCollection = "{:lang('collection')}",
langCancelCollection = "{:lang('cancel collection')}"; langCancelCollection = "{:lang('cancel collection')}";
var collection = "{:url('collection/')}";
layui.use(['fly', 'face','colorpicker','plyr'], function(){ layui.use(['fly', 'face','colorpicker','plyr'], function(){
var $ = layui.$ var $ = layui.$
,fly = layui.fly ,fly = layui.fly
,colorpicker = layui.colorpicker ,colorpicker = layui.colorpicker
,plyr = layui.plyr; ,plyr = layui.plyr;
var laytpl = layui.laytpl;
//tpl模板给发布时间赋值
$('div.detail-hits').children('span.post-time').each(function(){
var othis = $(this), html = othis.html();
var string = laytpl('{{ d.time }}').render({
//time: html
time: othis.attr('data')
});
var posttime = layui.util.timeAgo(string, 1);
othis.text(posttime);
//console.log(othis.attr('data'));
})
//预定义颜色项 //预定义颜色项
colorpicker.render({ colorpicker.render({

@ -10,13 +10,13 @@
<script src="/static/layui/jquery.min.js" charset="utf-8"></script> <script src="/static/layui/jquery.min.js" charset="utf-8"></script>
<script src="/static/layui/layui.js" charset="utf-8"></script> <script src="/static/layui/layui.js" charset="utf-8"></script>
<script> <script>
var messageNums = "{:url('index/Message/nums')}", var messageNums = "{:url('message/nums')}",
messageRead = "{:url('index/Message/read')}", messageRead = "{:url('Message/read')}",
userMessage = "{:url('index/User/message')}", userMessage = "{:url('User/message')}",
login = "{:url('Login/index')}", login = "{:url('Login/index')}",
articleAdd = "{:url('Article/add')}", articleAdd = "{:url('Article/add')}",
websearch = "{:url('index/index/search')}", textImgUpload = "{:url('article/textImgUpload')}",
textImgUpload = "{:url('index/article/textImgUpload')}", videoUrl = "{:url('article/upVideo')}",
searchUrl = "{:url('index/search')}", searchUrl = "{:url('index/search')}",
langUrl = "{:url('index/language')}", langUrl = "{:url('index/language')}",
replyNum = "{:lang('replies')}"; replyNum = "{:lang('replies')}";

@ -10,16 +10,18 @@
<a href="{:url('user/home',['id'=>$art.user.id])}" link> <a href="{:url('user/home',['id'=>$art.user.id])}" link>
<i class="layui-badge layui-bg-green" title="来自哪简称">{:getAsing($art.user.area_id) ?: '无'}</i> <i class="layui-badge layui-bg-green" title="来自哪简称">{:getAsing($art.user.area_id) ?: '无'}</i>
<cite>{$art.user.nickname ?: $art.user.name}</cite> <cite>{$art.user.nickname ?: $art.user.name}</cite>
<i>{$art.create_time|date='Y-m-d'}</i>
<!-- <!--
<i class="iconfont icon-renzheng" title="认证信息XXX"></i> <i class="iconfont icon-renzheng" title="认证信息XXX"></i>
-->
{if($art.user.vip > 0)} {if($art.user.vip > 0)}
<i class="layui-badge fly-badge-vip">vip{$art.user.vip}</i> <i class="layui-badge fly-badge-vip">vip{$art.user.vip}</i>
{/if} {/if}
-->
</a> </a>
<span> <span>
{$art.create_time|date='Y-m-d'}
{$art.has_img ?= ' <i class="layui-icon layui-icon-picture" style="color: #5FB878;"></i>'} {$art.has_img ?= ' <i class="layui-icon layui-icon-picture" style="color: #5FB878;"></i>'}
{$art.has_video ?= ' <i class="layui-icon layui-icon-play" style="color: #FF5722;"></i>'}
{$art.has_audio ?= ' <i class="layui-icon layui-icon-speaker" style="color: #000000;"></i>'}
{$art.upzip ?= ' <i class="layui-icon layui-icon-file-b" style="color: #009688;" title="附件"></i>'} {$art.upzip ?= ' <i class="layui-icon layui-icon-file-b" style="color: #009688;" title="附件"></i>'}
</span> </span>
<span class="layui-hide-xs" title="浏览"><i class="iconfont" title="浏览">&#xe60b;</i> {$art.pv}</span> <span class="layui-hide-xs" title="浏览"><i class="iconfont" title="浏览">&#xe60b;</i> {$art.pv}</span>

@ -10,14 +10,18 @@
<a href="{:url('user/home',['id'=>$top.user_id])}" link> <a href="{:url('user/home',['id'=>$top.user_id])}" link>
<i class="layui-badge layui-bg-green" title="来自哪简称">{:getAsing($top.user.area_id) ?: '无'}</i> <i class="layui-badge layui-bg-green" title="来自哪简称">{:getAsing($top.user.area_id) ?: '无'}</i>
<cite>{$top.user.nickname ?: $top.user.name}</cite> <cite>{$top.user.nickname ?: $top.user.name}</cite>
<!--i class="iconfont icon-renzheng" title="认证信息XXX"></i--> <i>{$top.create_time|date='Y-m-d'}</i>
<!--
<i class="iconfont icon-renzheng" title="认证信息XXX"></i>
{if($top.user.vip > 0)} {if($top.user.vip > 0)}
<i class="layui-badge fly-badge-vip">vip{$top.user.vip}</i> <i class="layui-badge fly-badge-vip">vip{$top.user.vip}</i>
{/if} {/if}
-->
</a> </a>
<span> <span>
{$top.create_time|date='Y-m-d'} {$top.has_img ?= ' <i class="layui-icon layui-icon-picture" style="color: #5FB878;"></i>'}
{$top.has_img ?= ' <i class="layui-icon layui-icon-picture" style=" color: #5FB878;"></i>'} {$top.has_video ?= ' <i class="layui-icon layui-icon-play" style="color: #FF5722;"></i>'}
{$top.has_audio ?= ' <i class="layui-icon layui-icon-speaker" style="color: #000000;"></i>'}
{$top.upzip ?= ' <i class="layui-icon layui-icon-file-b" style="color: #009688;" title="附件"></i>'} {$top.upzip ?= ' <i class="layui-icon layui-icon-file-b" style="color: #009688;" title="附件"></i>'}
</span> </span>
<span class=" layui-hide-xs" title="浏览"> <i class="iconfont" title="浏览">&#xe60b;</i> {$top.pv} </span> <span class=" layui-hide-xs" title="浏览"> <i class="iconfont" title="浏览">&#xe60b;</i> {$top.pv} </span>

@ -1,6 +1,8 @@
{extend name="public/base" /} {extend name="public/base" /}
{block name="title"}{$u.nickname ?: $u.name}的主页-{$sysInfo.webname}{/block} {block name="title"}{$u.nickname ?: $u.name}的主页-{$sysInfo.webname}{/block}
{block name="description"}{$u.sign}{/block} {block name="description"}{$u.sign}{/block}
{block name="link"}<link rel="stylesheet" href="/static/res/css/plyr.css" charset="utf-8">{/block}
{block name="column"}{/block} {block name="column"}{/block}
{block name="content"} {block name="content"}
<div class="fly-home fly-panel" style="background-image: url();"> <div class="fly-home fly-panel" style="background-image: url();">
@ -77,15 +79,19 @@
{block name="script"} {block name="script"}
<script> <script>
layui.use('face', function(){ layui.use(['fly','face','plyr'], function(){
var $ = layui.$; var $ = layui.$;
var fly = layui.fly;
var face = layui.face
,plyr = layui.plyr;
//如果你是采用模版自带的编辑器,你需要开启以下语句来解析。 //如果你是采用模版自带的编辑器,你需要开启以下语句来解析。
$('.detail-body').each(function(){ $('.detail-body').each(function(){
var othis = $(this), html = othis.html(); var othis = $(this), html = othis.html();
othis.html(fly.content(html)); othis.html(fly.content(html));
}); });
//加载播放器
plyr.setup();
}); });
</script> </script>
{/block} {/block}