471 lines
17 KiB
HTML
471 lines
17 KiB
HTML
<!-- Created by Lxy at 2017/11/25 17:36. -->
|
||
#define columned(e)
|
||
#if(e == column??"") layui-this #end
|
||
#end
|
||
|
||
#define keywords(str)
|
||
#if(str)
|
||
#(str)、redkale社区
|
||
#else
|
||
架构设计、问题解答、经验分享、redkale社区、#(str)
|
||
#end
|
||
#end
|
||
|
||
|
||
#define description(str)
|
||
#if(str)
|
||
#(str)、redkale社区
|
||
#else
|
||
架构设计、问题解答、经验分享、redkale社区、#(str)
|
||
#end
|
||
#end
|
||
|
||
#define layout()
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>#if(title)#(title) - #end Redbbs社区</title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||
<meta http-equiv="Cache-Control" content="max-age=7200" />
|
||
<meta name="keywords" content="#@keywords(bean.title??'')">
|
||
<meta name="description" content="#@description(bean.title??'')">
|
||
<link rel="stylesheet" href="/res/layui/css/layui.css">
|
||
<link rel="stylesheet" href="/res/css/global.css">
|
||
<!--background-color: #4a184c;-->
|
||
<style>
|
||
.layui-bg-black,.layui-btn,.layui-laypage .layui-laypage-curr .layui-laypage-em{background-image: linear-gradient(350deg, #330335, #AB5D7C);}
|
||
.laypage-main{border:1px solid #a25677!important;}
|
||
.laypage-main *{border-right:#a25677;border-bottom:#a25677;}
|
||
.layui-nav *{font-size:16px}
|
||
.layui-nav-tree .layui-nav-child dd.layui-this, .layui-nav-tree .layui-nav-child dd.layui-this a, .layui-nav-tree .layui-this, .layui-nav-tree .layui-this>a, .layui-nav-tree .layui-this>a:hover
|
||
{background-color:#4a184c;}
|
||
</style>
|
||
#@css?()
|
||
</head>
|
||
<body>
|
||
|
||
<div class="fly-header layui-bg-black">
|
||
<div class="layui-container">
|
||
<a class="fly-logo" href="/" style="font-size: 30px;color: #fff;">
|
||
Redbbs
|
||
<!--<img src="/res/images/logo.png" alt="优乐园社区">-->
|
||
</a>
|
||
<ul class="layui-nav fly-nav layui-hide-xs">
|
||
<li class="layui-nav-item layui-this">
|
||
<a href="/">社区</a>
|
||
</li>
|
||
<li class="layui-nav-item">
|
||
<a href="/project">项目</a>
|
||
</li>
|
||
<li class="layui-nav-item">
|
||
<a href="http://redkale.org/" target="_blank">Redkale框架</a>
|
||
</li>
|
||
<!--<li class="layui-nav-item">
|
||
<a href="http://redkale.org/articles.html" target="_blank">技术文章</a>
|
||
</li>-->
|
||
</ul>
|
||
|
||
<ul class="layui-nav fly-nav-user">
|
||
#if(mine)<!-- 登入后的状态 -->
|
||
<li class="layui-nav-item">
|
||
<a class="fly-nav-avatar" href="javascript:;">
|
||
<cite class="layui-hide-xs">#(mine.nickname)</cite>
|
||
<!--
|
||
<i class="iconfont icon-renzheng layui-hide-xs" title="认证信息:layui 作者"></i>
|
||
<i class="layui-badge fly-badge-vip layui-hide-xs">VIP3</i>
|
||
-->
|
||
<img src="#(mine.avatar)">
|
||
</a>
|
||
<dl class="layui-nav-child">
|
||
<dd><a href="/user/set"><i class="layui-icon"></i>基本设置</a></dd>
|
||
<!--
|
||
<dd><a href="/user/message"><i class="iconfont icon-tongzhi" style="top: 4px;"></i>我的消息</a></dd>
|
||
-->
|
||
<dd><a href="/user"><i class="layui-icon" style="margin-left: 2px; font-size: 22px;"></i>我的主页</a></dd>
|
||
<hr style="margin: 5px 0;">
|
||
<dd><a href="javascript:;" class="logout" style="text-align: center;">退出</a></dd>
|
||
</dl>
|
||
</li>
|
||
#else<!-- 未登入的状态 -->
|
||
<li class="layui-nav-item">
|
||
<a class="iconfont icon-touxiang layui-hide-xs" href="/user/login"></a>
|
||
</li>
|
||
<li class="layui-nav-item">
|
||
<a href="/user/login.html">登入</a>
|
||
</li>
|
||
<li class="layui-nav-item">
|
||
<a href="/user/reg.html">注册</a>
|
||
</li>
|
||
<!--<li class="layui-nav-item layui-hide-xs">
|
||
<a href="/app/qq/" onclick="layer.msg('正在通过QQ登入', {icon:16, shade: 0.1, time:0})" title="QQ登入" class="iconfont icon-qq"></a>
|
||
</li>
|
||
<li class="layui-nav-item layui-hide-xs">
|
||
<a href="/app/weibo/" onclick="layer.msg('正在通过微博登入', {icon:16, shade: 0.1, time:0})" title="微博登入" class="iconfont icon-weibo"></a>
|
||
</li>-->
|
||
#end
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<!--main-->
|
||
#@main?()
|
||
|
||
<div class="fly-footer">
|
||
<p>
|
||
<a href="http://1216.top" target="_blank">Redbbs 2017 © http://1216.top</a>
|
||
<a href='https://gitee.com/tc608/redbbs' target="_blank"><img src='https://gitee.com/tc608/redbbs/badge/star.svg?theme=white' alt='star'/></a>
|
||
</p>
|
||
#define x()
|
||
<p>
|
||
<a href="http://fly.layui.com/jie/3147/" target="_blank">付费计划</a>
|
||
<a href="http://fly.layui.com/jie/8157/" target="_blank">获取Fly社区模版</a>
|
||
<a href="http://fly.layui.com/jie/2461/" target="_blank">微信公众号</a>
|
||
</p>
|
||
#end
|
||
</div>
|
||
<script src="/res/layui/layui.js"></script>
|
||
#@js?()
|
||
|
||
<!--layim-->
|
||
<script>
|
||
|
||
if(!/^http(s*):\/\//.test(location.href)){
|
||
alert('请部署到localhost上查看该演示');
|
||
}
|
||
|
||
layui.use('layim', function(layim){
|
||
var $ = layui.jquery;//
|
||
var target = 'ws://127.0.0.1/os/ws/chat?token=#(token)';
|
||
|
||
var ws;
|
||
if ('WebSocket' in window) {
|
||
ws = new WebSocket(target);
|
||
} else if ('MozWebSocket' in window) {
|
||
ws = new MozWebSocket(target);
|
||
} else {
|
||
alert('WebSocket is not supported by this browser.');
|
||
return;
|
||
}
|
||
|
||
ws.onopen = function () {
|
||
console.log('Info: WebSocket connection opened.');
|
||
};
|
||
|
||
//接收信息
|
||
ws.onmessage = function (event) {
|
||
console.log(event);
|
||
var data = eval("("+event.data+")");
|
||
layim.getMessage(data);
|
||
//flashTitle();
|
||
};
|
||
ws.onclose = function (event) {
|
||
console.log('Info: WebSocket connection closed, Code: ' + event.code + (event.reason == "" ? "" : ", Reason: " + event.reason));
|
||
};
|
||
|
||
//监听发送消息
|
||
layim.on('sendMessage', function(data){
|
||
//发送消息倒Socket服务
|
||
var msg = {
|
||
text:{
|
||
msg:{
|
||
touserid:data.to.id
|
||
,content:data.mine.content
|
||
}
|
||
}
|
||
};
|
||
ws.send(JSON.stringify(msg));
|
||
});
|
||
|
||
//---------------------完美分割线--------------------
|
||
|
||
//基础配置
|
||
layim.config({
|
||
|
||
//初始化接口
|
||
init: {
|
||
url: '/imx/friends?token=#(token)'
|
||
,data: {}
|
||
}
|
||
/*init: {
|
||
url: '/tmp/json/getList.json'
|
||
,data: {}
|
||
}*/
|
||
|
||
//或采用以下方式初始化接口
|
||
/*
|
||
,init: {
|
||
mine: {
|
||
"username": "LayIM体验者" //我的昵称
|
||
,"id": "100000123" //我的ID
|
||
,"status": "online" //在线状态 online:在线、hide:隐身
|
||
,"remark": "在深邃的编码世界,做一枚轻盈的纸飞机" //我的签名
|
||
,"avatar": "a.jpg" //我的头像
|
||
}
|
||
,friend: []
|
||
,group: []
|
||
}
|
||
*/
|
||
|
||
|
||
//查看群员接口
|
||
,members: {
|
||
url: '/tmp/json/getMembers.json'
|
||
,data: {}
|
||
}
|
||
|
||
//上传图片接口
|
||
/*,uploadImage: {
|
||
url: 'http://localhost/os/chat/upload/'//'/upload/image' //(返回的数据格式见下文)
|
||
,type: '' //默认post
|
||
}*/
|
||
|
||
//上传文件接口
|
||
/*,uploadFile: {
|
||
url: '/os/chat/upload' //(返回的数据格式见下文)
|
||
,type: '' //默认post
|
||
}*/
|
||
|
||
,isAudio: true //开启聊天工具栏音频
|
||
,isVideo: true //开启聊天工具栏视频
|
||
|
||
//扩展工具栏
|
||
,tool: [{
|
||
alias: 'code'
|
||
,title: '代码'
|
||
,icon: ''
|
||
}]
|
||
|
||
//,brief: true //是否简约模式(若开启则不显示主面板)
|
||
|
||
//,title: 'WebIM' //自定义主面板最小化时的标题
|
||
//,right: '100px' //主面板相对浏览器右侧距离
|
||
//,minRight: '90px' //聊天面板最小化时相对浏览器右侧距离
|
||
,initSkin: '5.jpg' //1-5 设置初始背景
|
||
//,skin: ['aaa.jpg'] //新增皮肤
|
||
//,isfriend: false //是否开启好友
|
||
,isgroup: false //是否开启群组
|
||
,min: true //是否始终最小化主面板,默认false
|
||
,notice: true //是否开启桌面消息提醒,默认false
|
||
//,voice: false //声音提醒,默认开启,声音文件为:default.mp3
|
||
|
||
//,msgbox: layui.cache.dir + 'css/modules/layim/html/msgbox.html' //消息盒子页面地址,若不开启,剔除该项即可
|
||
//,find: layui.cache.dir + 'css/modules/layim/html/find.html' //发现页面地址,若不开启,剔除该项即可
|
||
//,chatLog: layui.cache.dir + 'css/modules/layim/html/chatlog.html' //聊天记录页面地址,若不开启,剔除该项即可
|
||
,copyright:true
|
||
});
|
||
|
||
/*
|
||
layim.chat({
|
||
name: '在线客服-小苍'
|
||
,type: 'kefu'
|
||
,avatar: 'http://tva3.sinaimg.cn/crop.0.0.180.180.180/7f5f6861jw1e8qgp5bmzyj2050050aa8.jpg'
|
||
,id: -1
|
||
});
|
||
layim.chat({
|
||
name: '在线客服-心心'
|
||
,type: 'kefu'
|
||
,avatar: 'http://tva1.sinaimg.cn/crop.219.144.555.555.180/0068iARejw8esk724mra6j30rs0rstap.jpg'
|
||
,id: -2
|
||
});
|
||
layim.setChatMin();*/
|
||
|
||
//监听在线状态的切换事件
|
||
layim.on('online', function(data){
|
||
//console.log(data);
|
||
});
|
||
|
||
//监听签名修改
|
||
layim.on('sign', function(value){
|
||
$.post("/os/user/update",{
|
||
bean:JSON.stringify({sign:value})
|
||
,columns:JSON.stringify(['sign'])
|
||
},function (res) {
|
||
if(res.retcode == 0){
|
||
layer.msg("操作成功");
|
||
}
|
||
});
|
||
});
|
||
|
||
//监听自定义工具栏点击,以添加代码为例
|
||
layim.on('tool(code)', function(insert){
|
||
layer.prompt({
|
||
title: '插入代码'
|
||
,formType: 2
|
||
,shade: 0
|
||
}, function(text, index){
|
||
layer.close(index);
|
||
insert('[pre class=layui-code]' + text + '[/pre]'); //将内容插入到编辑器
|
||
});
|
||
});
|
||
|
||
//监听layim建立就绪
|
||
layim.on('ready', function(res){
|
||
|
||
//console.log(res.mine);
|
||
|
||
//layim.msgbox(5); //模拟消息盒子有新消息,实际使用时,一般是动态获得
|
||
|
||
//添加好友(如果检测到该socket)
|
||
layim.addList({
|
||
type: 'group'
|
||
,avatar: "http://tva3.sinaimg.cn/crop.64.106.361.361.50/7181dbb3jw8evfbtem8edj20ci0dpq3a.jpg"
|
||
,groupname: 'Angular开发'
|
||
,id: "12333333"
|
||
,members: 0
|
||
});
|
||
/*layim.addList({
|
||
type: 'friend'
|
||
,avatar: "http://tp2.sinaimg.cn/2386568184/180/40050524279/0"
|
||
,username: '冲田杏梨'
|
||
,groupid: 2
|
||
,id: "1233333312121212"
|
||
,remark: "本人冲田杏梨将结束AV女优的工作"
|
||
});*/
|
||
|
||
if (false)
|
||
setTimeout(function(){
|
||
//接受消息(如果检测到该socket)
|
||
layim.getMessage({
|
||
username: "Hi"
|
||
,avatar: "http://qzapp.qlogo.cn/qzapp/100280987/56ADC83E78CEC046F8DF2C5D0DD63CDE/100"
|
||
,id: "10000111"
|
||
,type: "friend"
|
||
,content: "临时:"+ new Date().getTime()
|
||
});
|
||
|
||
/*layim.getMessage({
|
||
username: "贤心"
|
||
,avatar: "http://tp1.sinaimg.cn/1571889140/180/40030060651/1"
|
||
,id: "100001"
|
||
,type: "friend"
|
||
,content: "嗨,你好!欢迎体验LayIM。演示标记:"+ new Date().getTime()
|
||
});*/
|
||
|
||
}, 3000);
|
||
});
|
||
|
||
//监听发送消息
|
||
layim.on('sendMessage', function(data){
|
||
//var To = data.to;
|
||
|
||
/*if(To.type === 'friend'){
|
||
layim.setChatStatus('<span style="color:#FF5722;">对方正在输入。。。</span>');
|
||
}*/
|
||
|
||
//演示自动回复
|
||
if (false)
|
||
setTimeout(function(){
|
||
var obj = {};
|
||
if(To.type === 'group'){
|
||
obj = {
|
||
username: '模拟群员'+(Math.random()*100|0)
|
||
,avatar: layui.cache.dir + 'images/face/'+ (Math.random()*72|0) + '.gif'
|
||
,id: To.id
|
||
,type: To.type
|
||
,content: autoReplay[Math.random()*9|0]
|
||
}
|
||
} else {
|
||
obj = {
|
||
username: To.name
|
||
,avatar: To.avatar
|
||
,id: To.id
|
||
,type: To.type
|
||
,content: autoReplay[Math.random()*9|0]
|
||
}
|
||
layim.setChatStatus('<span style="color:#FF5722;">在线</span>');
|
||
}
|
||
layim.getMessage(obj);
|
||
}, 1000);
|
||
});
|
||
|
||
//监听查看群员
|
||
layim.on('members', function(data){
|
||
//console.log(data);
|
||
});
|
||
|
||
//监听聊天窗口的切换
|
||
layim.on('chatChange', function(res){
|
||
var type = res.data.type;
|
||
console.log(res.data.id)
|
||
if(type === 'friend'){
|
||
//模拟标注好友状态
|
||
//layim.setChatStatus('<span style="color:#FF5722;">在线</span>');
|
||
} else if(type === 'group'){
|
||
//模拟系统消息
|
||
layim.getMessage({
|
||
system: true
|
||
,id: res.data.id
|
||
,type: "group"
|
||
,content: '模拟群员'+(Math.random()*100|0) + '加入群聊'
|
||
});
|
||
}
|
||
});
|
||
|
||
|
||
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|
||
#end
|
||
|
||
#define flyColumn()
|
||
<div class="fly-panel fly-column">
|
||
<div class="layui-container">
|
||
<ul class="layui-clear">
|
||
<li class="layui-hide-xs #@columned('')"><a href="/column/">全部</a></li>
|
||
<li class="#@columned('qz')"><a href="/column/qz">求助</a></li>
|
||
<li class="#@columned('fx')"><a href="/column/fx">分享<!--<span class="layui-badge-dot"></span>--></a></li>
|
||
<!--
|
||
<li class="#@columned('jy')"><a href="/column/jy">建议</a></li>
|
||
<li class="#@columned('gg')"><a href="/column/gg">公告</a></li>
|
||
-->
|
||
<li class="#@columned('dt')"><a href="/column/dt">动态</a></li>
|
||
<li class="layui-hide-xs layui-hide-sm layui-show-md-inline-block"><span class="fly-mid"></span></li>
|
||
|
||
<!-- 用户登入后显示 -->
|
||
<li class="layui-hide-xs layui-hide-sm layui-show-md-inline-block"><a href="/user?#index">我的投稿</a></li>
|
||
<li class="layui-hide-xs layui-hide-sm layui-show-md-inline-block"><a href="/user?#collection">我收藏的贴</a></li>
|
||
</ul>
|
||
|
||
<div class="fly-column-right layui-hide-xs">
|
||
<span class="fly-search"><i class="layui-icon"></i></span>
|
||
<a href="/jie/add" class="layui-btn">文章投稿</a>
|
||
</div>
|
||
<div class="layui-hide-sm layui-show-xs-block" style="margin-top: -10px; padding-bottom: 10px; text-align: center;">
|
||
<a href="/jie/add" class="layui-btn">文章投稿</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
#end
|
||
|
||
#define user_side(e)
|
||
<ul class="layui-nav layui-nav-tree layui-inline" lay-filter="user">
|
||
<li class="layui-nav-item #if(e == '') layui-this #end">
|
||
<a href="/user/#(mine.userid)">
|
||
<i class="layui-icon"></i>
|
||
我的主页
|
||
</a>
|
||
</li>
|
||
<li class="layui-nav-item #if(e == 'index') layui-this #end">
|
||
<a href="/user/">
|
||
<i class="layui-icon"></i>
|
||
用户中心
|
||
</a>
|
||
</li>
|
||
<li class="layui-nav-item #if(e == 'set') layui-this #end">
|
||
<a href="/user/set">
|
||
<i class="layui-icon"></i>
|
||
基本设置
|
||
</a>
|
||
</li>
|
||
<!--<li class="layui-nav-item #if(e == 'message') layui-this #end">
|
||
<a href="message.html">
|
||
<i class="layui-icon"></i>
|
||
我的消息
|
||
</a>
|
||
</li>-->
|
||
</ul>
|
||
#end |