Comments (11)
【controller\admin.php】
67行附近
//跳转到首页
header('location:/');
改为
header('location:'.dirname($_SERVER['PHP_SELF']));
107行附近
exit("<h3>认证失败,请<a href = 'index.php?c=login'>重新登录</a>!</h3>");
改为
exit("<h3>认证失败,请<a href = './index.php?c=login'>重新登录</a>!</h3>");
from onenav.
【controller\login.php】
15行附近
header('location:index.php?c=admin');
改为
$phpSelf = dirname($_SERVER['PHP_SELF']);
$phpSelf = ($phpSelf == "/" || $phpSelf == "\\") ? "" : $phpSelf;
header('location:'.$phpSelf.'/index.php?c=admin');
from onenav.
【admin\header.php】
<div class="layui-logo"><a href="/index.php?c=admin" style="color:#009688;"><h2>OneNav后台管理</h1></a></div>
改为
<div class="layui-logo"><a href="./index.php?c=admin" style="color:#009688;"><h2>OneNav后台管理</h1></a></div>
<!-- 头部区域(可配合layui已有的水平导航) -->
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item"><a href="/"><i class="layui-icon layui-icon-home"></i> 前台首页</a></li>
<li class="layui-nav-item"><a href="/index.php?c=admin&page=category_list"><i class="layui-icon layui-icon-list"></i> 分类列表</a></li>
<li class="layui-nav-item"><a href="/index.php?c=admin&page=add_category"><i class="layui-icon layui-icon-add-circle-fine"></i> 添加分类</a></li>
<li class="layui-nav-item"><a href="/index.php?c=admin&page=link_list"><i class="layui-icon layui-icon-link"></i> 我的链接</a></li>
<li class="layui-nav-item"><a href="/index.php?c=admin&page=add_link"><i class="layui-icon layui-icon-add-circle-fine"></i> 添加链接</a></li>
改为
<li class="layui-nav-item"><a href="./"><i class="layui-icon layui-icon-home"></i> 前台首页</a></li>
<li class="layui-nav-item"><a href="./index.php?c=admin&page=category_list"><i class="layui-icon layui-icon-list"></i> 分类列表</a></li>
<li class="layui-nav-item"><a href="./index.php?c=admin&page=add_category"><i class="layui-icon layui-icon-add-circle-fine"></i> 添加分类</a></li>
<li class="layui-nav-item"><a href="./index.php?c=admin&page=link_list"><i class="layui-icon layui-icon-link"></i> 我的链接</a></li>
<li class="layui-nav-item"><a href="./index.php?c=admin&page=add_link"><i class="layui-icon layui-icon-add-circle-fine"></i> 添加链接</a></li>
<dd><a href="/index.php?c=admin&page=logout">退出</a></dd>
改为
<dd><a href="./index.php?c=admin&page=logout">退出</a></dd>
from onenav.
【admin\left.php】
<dd><a href="/index.php?c=admin&page=category_list">分类列表</a></dd>
<dd><a href="/index.php?c=admin&page=add_category">添加分类</a></dd>
改为
<dd><a href="./index.php?c=admin&page=category_list">分类列表</a></dd>
<dd><a href="./index.php?c=admin&page=add_category">添加分类</a></dd>
<dd><a href="/index.php?c=admin&page=link_list">我的链接</a></dd>
<dd><a href="/index.php?c=admin&page=add_link">添加链接</a></dd>
改为
<dd><a href="./index.php?c=admin&page=link_list">我的链接</a></dd>
<dd><a href="./index.php?c=admin&page=add_link">添加链接</a></dd>
from onenav.
【templates\admin\static\embed.js】
所有的url index.php?。。。。的index前面都加上./
embed.js文件内的改动比较分散,我就贴出修改后的代码了
layui.use(['element','table','layer','form'], function(){
var element = layui.element;
var table = layui.table;
var form = layui.form;
layer = layui.layer;
//第一个实例
table.render({
elem: '#category_list'
,height: 500
,url: './index.php?c=api&method=category_list' //数据接口
,page: true //开启分页
,cols: [[ //表头
{field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
,{field: 'name', title: '分类名称', width:160}
,{field: 'add_time', title: '添加时间', width:160, sort: true,templet:function(d){
var add_time = timestampToTime(d.add_time);
return add_time;
}}
,{field: 'up_time', title: '修改时间', width:160,templet:function(d){
if(d.up_time != ''){
var up_time = timestampToTime(d.up_time);
return up_time;
}
else{
return '';
}
}}
,{field: 'weight', title: '权重', width: 100}
,{field: 'property', title: '是否私有', width: 120, sort: true,templet: function(d){
if(d.property == 1) {
return '<button type="button" class="layui-btn layui-btn-xs">是</button>';
}
else {
return '<button type="button" class="layui-btn layui-btn-xs layui-btn-danger">否</button>';
}
}}
,{field: 'description', title: '描述'}
,{fixed: 'right', title:'操作', toolbar: '#nav_operate', width:150}
]]
});
//监听行工具事件
table.on('tool(mycategory)', function(obj){
var data = obj.data;
//console.log(obj);
//console.log(obj)
if(obj.event === 'del'){
layer.confirm('确认删除?',{icon: 3, title:'温馨提示!'}, function(index){
$.post('./index.php?c=api&method=del_category',{'id':obj.data.id},function(data,status){
if(data.code == 0){
obj.del();
}
else{
layer.msg(data.err_msg);
}
});
layer.close(index);
});
} else if(obj.event === 'edit'){
window.location.href = './index.php?c=admin&page=edit_category&id=' + obj.data.id;
}
});
//渲染链接列表
table.render({
elem: '#link_list'
,height: 520
,url: './index.php?c=api&method=link_list' //数据接口
,page: true //开启分页
,toolbar: '#linktool'
,cols: [[ //表头
{type:'checkbox'} //开启复选框
,{field: 'id', title: 'ID', width:80, sort: true}
// ,{field: 'fid', title: '分类ID',sort:true, width:90}
,{field: 'category_name', title: '所属分类',sort:true,width:120}
,{field: 'url', title: 'URL',width:140,templet:function(d){
var url = '<a target = "_blank" href = "' + d.url + '" title = "' + d.url + '">' + d.url + '</a>';
return url;
}}
,{field: 'title', title: '链接标题', width:140}
,{field: 'add_time', title: '添加时间', width:148, sort: true,templet:function(d){
var add_time = timestampToTime(d.add_time);
return add_time;
}}
,{field: 'up_time', title: '修改时间', width:148,sort:true,templet:function(d){
if(d.up_time == null){
return '';
}
else{
var up_time = timestampToTime(d.up_time);
return up_time;
}
}}
,{field: 'weight', title: '权重', width: 75,sort:true}
,{field: 'property', title: '私有', width: 80, sort: true,templet: function(d){
if(d.property == 1) {
return '<button type="button" class="layui-btn layui-btn-xs">是</button>';
}
else {
return '<button type="button" class="layui-btn layui-btn-xs layui-btn-danger">否</button>';
}
}}
,{field: 'click', title: '点击数',width:90,sort:true}
,{fixed: 'right', title:'操作', toolbar: '#link_operate'}
]]
});
//头链接工具栏事件
table.on('toolbar(mylink)', function(obj){
var checkStatus = table.checkStatus(obj.config.id);
switch(obj.event){
case 'getCheckData':
var data = checkStatus.data;
if( data.length == 0 ) {
layer.msg('未选中任何数据!');
}
//遍历删除数据
else{
layer.confirm('确认删除?',{icon: 3, title:'温馨提示!'}, function(index){
for (let i = 0; i < data.length; i++) {
$.post('./index.php?c=api&method=del_link',{'id':data[i].id},function(data,status){
if(data.code == 0){
console.log(obj);
obj.del();
}
else{
layer.msg(data.err_msg);
}
});
}
layer.close(index);
});
}
//console.log(data[0].id);
break;
case 'getCheckLength':
var data = checkStatus.data;
layer.msg('选中了:'+ data.length + ' 个');
break;
case 'isAll':
layer.msg(checkStatus.isAll ? '全选': '未全选');
break;
//自定义头工具栏右侧图标 - 提示
case 'LAYTABLE_TIPS':
layer.alert('这是工具栏右侧自定义的一个图标按钮');
break;
};
});
//监听链接工具
table.on('tool(mylink)', function(obj){
var data = obj.data;
//console.log(obj);
//console.log(obj)
if(obj.event === 'del'){
layer.confirm('确认删除?',{icon: 3, title:'温馨提示!'}, function(index){
$.post('./index.php?c=api&method=del_link',{'id':obj.data.id},function(data,status){
if(data.code == 0){
obj.del();
}
else{
layer.msg(data.err_msg);
}
});
layer.close(index);
});
} else if(obj.event === 'edit'){
window.location.href = './index.php?c=admin&page=edit_link&id=' + obj.data.id;
}
});
//登录
//添加链接
form.on('submit(login)', function(data){
$.post('./index.php?c=login&check=login',data.field,function(data,status){
//如果添加成功
if(data.code == 0) {
window.location.href = './index.php?c=admin';
}
else{
layer.msg(data.err_msg, {icon: 5});
}
});
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
//添加分类目录
form.on('submit(add_category)', function(data){
$.post('./index.php?c=api&method=add_category',data.field,function(data,status){
//如果添加成功
if(data.code == 0) {
layer.msg('已添加!', {icon: 1});
}
else{
layer.msg(data.err_msg, {icon: 5});
}
});
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
//修改分类目录
form.on('submit(edit_category)', function(data){
$.post('./index.php?c=api&method=edit_category',data.field,function(data,status){
//如果添加成功
if(data.code == 0) {
layer.msg('已修改!', {icon: 1});
}
else{
layer.msg(data.err_msg, {icon: 5});
}
});
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
//添加链接
form.on('submit(add_link)', function(data){
$.post('./index.php?c=api&method=add_link',data.field,function(data,status){
//如果添加成功
if(data.code == 0) {
layer.msg('已添加!', {icon: 1});
}
else{
layer.msg(data.err_msg, {icon: 5});
}
});
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
//识别链接信息
form.on('submit(get_link_info)', function(data){
$.post('./index.php?c=api&method=get_link_info',data.field.url,function(data,status){
//如果添加成功
if(data.code == 0) {
console.log(data);
}
else{
layer.msg(data.err_msg, {icon: 5});
}
});
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
//更新链接
form.on('submit(edit_link)', function(data){
$.post('./index.php?c=api&method=edit_link',data.field,function(data,status){
//如果添加成功
if(data.code == 0) {
layer.msg('已更新!', {icon: 1});
}
else{
layer.msg(data.err_msg, {icon: 5});
}
});
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
//识别链接信息
form.on('submit(get_link_info)', function(data){
//是用ajax异步加载
$.post('./index.php?c=api&method=get_link_info',data.field.url,function(data,status){
//如果添加成功
if(data.code == 0) {
console.log(data);
}
else{
layer.msg(data.err_msg, {icon: 5});
}
});
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
});
function get_link_info() {
var url = $("#url").val();
var index = layer.load(1);
$.post('./index.php?c=api&method=get_link_info',{url:url},function(data,status){
//如果添加成功
if(data.code == 0) {
if(data.data.title != null) {
$("#title").val(data.data.title);
}
if(data.data.description != null) {
$("#description").val(data.data.description);
}
layer.close(index);
}
else{
layer.msg(data.err_msg, {icon: 5});
layer.close(index);
}
});
}
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
Y = date.getFullYear() + '-' ;
M = (date.getMonth()+1 < 10 ? '0' +(date.getMonth()+1) : date.getMonth()+1) + '-' ;
D = date.getDate() + ' ' ;
h = date.getHours() + ':' ;
m = date.getMinutes();
s = date.getSeconds();
return Y+M+D+h+m;
}
function del_category(id){
layer.confirm('确认删除这张图片?', {icon: 3, title:'温馨提示!'}, function(index){
$.post("/set/del_img",{imgid:imgid,path:path,thumbnail_path:thumbnail_path},function(data,status){
var re = JSON.parse(data);
if(re.code == 200) {
$("#img"+id).remove();
console.log("#img"+id);
}
else{
layer.msg(data);
}
});
layer.close(index);
});
}
from onenav.
【templates\default\index.php】
第45行附近
<a href="/index.php?c=login" title = "登录OneNav" target="_blank" class="mdui-btn mdui-btn-icon"><i class="mdui-icon material-icons">account_circle</i></a>
改为
<a href="./index.php?c=login" title = "登录OneNav" target="_blank" class="mdui-btn mdui-btn-icon"><i class="mdui-icon material-icons">account_circle</i></a>
from onenav.
【templates\default\static\embed.js】
改动和templates\admin\static\embed.js类似,也比较分散,下面附上改动后的代码
function gotop(){
$("html,body").animate({scrollTop: '0px'}, 600);
}
$(".search").blur(function(data,status){
var keywords = $(".search").val();
if( keywords == ''){
$(".cat-title").removeClass("mdui-hidden");
}
});
var h = holmes({
input: '.search',
find: '.link-space',
placeholder: '<h3>未搜索到匹配结果!</h3>',
mark: false,
hiddenAttr: true,
// 找到了就添加visible类,没找到添加mdui-hidden
class: {
visible: 'visible',
hidden: 'mdui-hidden'
},
onHidden(el) {
// console.log('hidden', el);
},
onFound(el) {
// console.log('found', el);
$(".cat-title").addClass("mdui-hidden");
},
onInput(el) {
$(".cat-title").addClass("mdui-hidden");
},
onVisible(el) {
$(".cat-title").removeClass("mdui-hidden");
},
onEmpty(el) {
$(".cat-title").removeClass("mdui-hidden");
}
});
//鼠标移动到链接修改为原始URL
//js获取协议和域名部分
function get_domain(){
//获取协议
var protocol = window.location.protocol;
protocol = protocol + '//';
//获取端口号
var port = window.location.port;
if( (port == 80) || (port == 443) ){
port = '';
}
var hostname = window.location.hostname;
domain = protocol + port + hostname;
return domain;
}
//弹窗
function msg(text){
// alert('dfd');
$html = '<div class = "msg">' + text + '</div>';
$("body").append($html);
$(".msg").fadeIn();
$(".msg").fadeOut(3000);
// $(".msg").remove();
}
function admin_menu() {
// 加载管理员右键菜单
//初始化菜单
$.contextMenu({
selector: '.link-space',
callback: function(key, options) {
link_id = $(this).attr('id');
link_id = link_id.replace('id_','');
},
items: {
"open":{name: "打开",icon:"fa-external-link",callback:function(key,opt){
var link_id = $(this).attr('id');
link_id = link_id.replace('id_','');
var tempwindow=window.open('_blank');
tempwindow.location='./index.php?c=click&id='+link_id;
}},
"edit": {name: "编辑", icon: "edit",callback:function(key,opt){
var link_id = $(this).attr('id');
link_id = link_id.replace('id_','');
var tempwindow=window.open('_blank');
tempwindow.location='./index.php?c=admin&page=edit_link&id='+link_id;
}},
"delete": {name: "删除", icon: "delete",callback:function(){
var link_id = $(this).attr('id');
link_id = link_id.replace('id_','');
mdui.confirm('确认删除?',
function(){
$.post("./index.php?c=api&method=del_link",{id:link_id},function(data,status){
//如果删除成功,则移除元素
if(data.code == 0) {
$("#id_" + link_id).remove();
}
else{
//删除失败
mdui.alert(data.err_msg);
}
});
},
function(){
//点击取消按钮,不做操作
return true;
}
);
}},
"sep1": "---------",
"qrcode": {name: "二维码", icon:"fa-qrcode",callback:function(data,status){
var link_title = $(this).attr('link-title');
//link_title = link_title.substr(0,8);
// link_title = link_title + '...';
var link_id = $(this).attr('id');
link_id = link_id.replace('id_','');
var domain = get_domain();
var url = domain + '/click/' + link_id;
mdui.dialog({
'title':link_title,
'cssClass':'show_qrcode',
'content':'<img src = "https://qr.png.pub/v1/?text=' + url + '" />'
});
}},
"copy":{name:"复制链接",icon:"copy",callback:function(){
link_url = $(this).attr('link-url');
// 复制按钮
var copy = new clipBoard($(".context-menu-icon-copy"), {
beforeCopy: function() {
},
copy: function() {
return link_url;
},
afterCopy: function() {
//msg('链接已复制!');
mdui.alert('链接已复制!');
}
});
// 复制按钮END
}}
}
});
// 加载右键菜单END
}
function user_menu() {
// 加载游客右键菜单
//初始化菜单
$.contextMenu({
selector: '.link-space',
callback: function(key, options) {
link_id = $(this).attr('id');
link_id = link_id.replace('id_','');
},
items: {
"open":{name: "打开",icon:"fa-external-link",callback:function(key,opt){
var link_id = $(this).attr('id');
link_id = link_id.replace('id_','');
var tempwindow=window.open('_blank');
tempwindow.location='./index.php?c=click&id='+link_id;
}},
"sep1": "---------",
"qrcode": {name: "二维码", icon:"fa-qrcode",callback:function(data,status){
var link_title = $(this).attr('link-title');
// link_title = link_title.substr(0,8);
// link_title = link_title + '...';
var link_id = $(this).attr('id');
link_id = link_id.replace('id_','');
var domain = get_domain();
var url = domain + '/click/' + link_id;
mdui.dialog({
'title':link_title,
'cssClass':'show_qrcode',
'content':'<img src = "https://qr.png.pub/v1/?text=' + url + '" />'
});
}},
"copy":{name:"复制链接",icon:"copy",callback:function(){
link_url = $(this).attr('link-url');
// 复制按钮
var copy = new clipBoard($(".context-menu-icon-copy"), {
beforeCopy: function() {
},
copy: function() {
return link_url;
},
afterCopy: function() {
//msg('链接已复制!');
mdui.alert('链接已复制!');
}
});
// 复制按钮END
}}
}
});
// 加载游客右键菜单END
};
from onenav.
from onenav.
附上修改后的整个项目
from onenav.
已经解决,谢谢大佬
from onenav.
添加的书签点击后还是会跳到根目录,比如http://index/index.php?c=click&id=1,实际上应该为http://index/子目录/index.php?c=click&id=1
望大佬再帮忙看看
from onenav.
Related Issues (20)
- Safari浏览器使用搜索会卡住
- 建议增加页面内容归档功能 HOT 3
- 已经安装最新版本,chrome插件仍然提示版本过低,测试通过,但是无法保存 HOT 9
- 请教一下,如何在replit上部署这个onenav呢 HOT 1
- 拖拽排序和多用户登录自定义首页希望尽快实现
- 浏览器扩展程序的建议 HOT 1
- 自动获取的图标都无法正常显示 HOT 1
- 你好,是否可以增加一个设置链接的图标大小功能 HOT 1
- 为什么这么卡? HOT 9
- 希望可以增加修改链接标题颜色的功能
- 请教:服务器A docker部署后访问正常(http),服务器B ningx域名反向代理过来访问(https),网页格式乱了 HOT 5
- 希望作者能适配vercel部署或者netlify的部署方式
- [bug]数据库无写入权限时报错异常 HOT 1
- I can not "Initialize OneNav username/password" HOT 1
- a security risk
- 安全漏洞-任意文件删除(Deletion of any document) HOT 1
- 安全漏洞远程代码执行(security breach remote code execution) HOT 2
- 副标题不填时,网站名字拼接很奇怪 HOT 1
- 上传图标功能不好使 HOT 1
- 希望拓展插件能支持火狐浏览器 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from onenav.