xiunobbs-4.0.4 V2融合 正式版
nenge 22天前

EMM 发现很多插件各种动不动覆盖~

所以融合搁置吧! 基于群|卝||主的V2修改版

如果有任何BUG请及时反馈,

本机环境PHP7.0.0 ~ PHP8.4.1,

install.sql  低于mysql8的版本

install8.sqll 高于等于mysql8

git clone https://cnb.cool/nenge/xiunobbs-4.0.4.git
git pull
//往后此为最新版 欢迎提交修改

下载地址 https://cnb.cool/nenge/xiunobbs-4.0.4/-/releases

 

环境

  • 尽管PHP7.0.0 - PHP8.4.1均可运行,但是推荐PHP7.2+
  • MySQL情况未知,我的版本的8.0.25,但是群里很多是5.6 5.7老版本,如有报错可以反馈.

cnb图床?

首先在cnb.cool创建仓库,浏览器F12,应用>Cookies 复制'CNBSESSION','csrfkey'

插件限定类

例如插件 xn_abc,对应类文件地址为 plugin/xn_abc/class/xn_abc.php 此方法可以替代原来的全局增加model文件问题,该类文件仍旧可以使用 // hook 让其他插件注入
使用方法
一般来说PHP根本不在乎你塞了多少函数,对性能影响微乎其微,所以不要有焦虑.国外的那些标准反而不推荐all in one(所有文件在一起xiunophp.min.php)

 
//plugin/xn_abc/class/xn_abc.php 
class xn_abc{
	public function __construct(){
		echo 'OK';
	}
	public static function app()
	{
		if (!isset(self::$_app)):
			self::$_app = new self;
		endif;
		return self::$_app;
	}
	public static function user()
	{
		return MyDB::t('user')->selectFirst(['uid'=>1]);
	}
}
//插件的任意操作位置,相对来说按需加载
xn_abc::app(); // output OK
xn_abc::user();//输出array(用户数据)

新的查询方式 MyDB::t('表名')

使用此方法的插件将不再向下兼容,操作有一定可扩展性

 
$db->table['user'] = new class extends \lib\table{
	//替代此user表的查询方式
}('bbs_user','uid','xiuno4');
var_export(MyDB::t('user')->selectAll());

内置servicerWoker

  • 缓存含有CDN,特定CDN网站的远程资源
  • 缓存本地含有vendor目录的资源,因此修改文件可以采用重命名新名字,或者增加后缀方式
     
    import * as CKEDITOR from '../vendor/ckeditor5/ckeditor5.js?v20250422';
    import * as CKEDITOR from '../vendor/ckeditor5/ckeditor5-v20250422.js';
    

默认编辑器

具体查找 view/htm/post.htm
可通过$conf['editor_js'] 进行设置,只能两个值,'ckeditor','tinymce' 其他值被认为不启用.个人认为CKeditor相对tinymce更好!

 
<?=in_array($conf['editor_js'] ??'ckeditor',['ckeditor','tinymce'])?'import(new URL("'.$conf['view_url'].'js/module/editor-'.($conf['editor_js'] ??'ckeditor').'.js",location)).then(Module=>{new Module.default(jform[0]);$(".attachlist_parent>a").prop("hidden",true);$(".attachlist_parent>fieldset").prop("hidden",true);});':''?>

ckeditor可以去(https://ckeditor.com/ckeditor-5/builder/)定制功能!参考main.js中toolbar,plugins替换`editor-ckeditor.js`中对应参数 的即可!

  • 编辑器接口
     
    	const {default:MyEditor} = await import(new URL("view/js/module/editor-ckeditor.js",location));//import在非ESM中是要绝对地址,所以套个new URL即可!
    	const editor = new MyEditor(jform[0]);//对一个表单对象初始化 jfrom = $('#form)
    	editor.save();//保存到jform>[name="message"]中并返回HTML
    	editor.insert(html);//插入HTML
    	jform.triggerHandler('save');//保存HTML到 jform>[name="message"]中
    	jform.triggerHandler('insert',HTML);//插入HTML(没试过)
    	jform[0].toEvent('insert',HTML);//插入HTML
    	jform[0].dispatchEvent(new CustomEvent('insert',HTML));//插入HTML 100%可用标准事件
    	jform[0].dispatchEvent(new CustomEvent('save',''));//保存HTML到 jform>[name="message"]中
    	jform[0].editor //editor
    	//可选参数
    	editor.pid = 1;//设置当前编辑的帖子PID值,会影响获取附件列表.如果设置你当前编辑的帖子,会在附件列表看到贴内附件
    

上传新接口

attach/upload 只接受image/zip/rar/7z等文件

 
const input = document.createElement('input');
input.type = 'file';
input.accept = 'image/*';
input.multiple = false;
input.addEventListener('change', async function () {
	const data = new FormData;
	data.set('file',this.files[0]);//文件blob FILE
	$.ajax({
		url: '?attach.htm',
		data,
		processData: false, //不能省略
        contentType:false,//不能省略
		dataType: 'json',
		type: 'POST',
		beforeSend(xhr) {
			xhr.setRequestHeader('ajax-fetch', '1');
			xhr.setRequestHeader('content-action', 'attach/upload');
		}
	});
});
input.click();
input.remove();

attach/list 查询接口,可选参数pid

 
//查看列表
const data = new FormData; //可选
data.set('pid','编辑帖子ID');
$.ajax({
	url: '?attach.htm',
	data,
	dataType: 'json',
	processData: false, //不能省略
	contentType:false,//不能省略
	type: 'POST',
	beforeSend(xhr) {
		xhr.setRequestHeader('ajax-fetch', '1');
		xhr.setRequestHeader('content-action', 'attach/list');
	},
	success(result) {
		//{'_1'=>$attach,'33'=>$attach} 带_就是临时附件
	}
});

attach/delete 删除接口, 必须参数aid

 
//查看列表
const data = new FormData; //可选
data.set('aid','附件aid');
$.ajax({
	url: '?attach.htm',
	data,
	dataType: 'json',
	processData: false, //不能省略
	contentType:false,//不能省略
	type: 'POST',
	beforeSend(xhr) {
		xhr.setRequestHeader('ajax-fetch', '1');
		xhr.setRequestHeader('content-action', 'attach/delete');
	},
	success(result) {
		//{code:0,message} 
	}
});
最后于 8天前 被nenge编辑 ,原因:
最新回复 (26)
全部楼主
  • oliolo 版主
    22天前 2
    0
    php的版本升级,功能类插件怕会出问题。
  • geruixi
    22天前 3
    0
    上传问题有修复吗,原版上传20M以上的文件会失败,改ng/php都不行
  • juse
    22天前 4
    1
    不管怎么说,技术贴必须要支持~!!!!
  • nenge 楼主
    21天前 5
    1
    geruixi 上传问题有修复吗,原版上传20M以上的文件会失败,改ng/php都不行
    这个没改其他,
    主要修改原来的简单的路由判断为更强大的判断
    数据库操作改善(预处理)

    稍后增加一个上传接口把,方便使用tinymce等插件上传
  • Tillreetree 版主
    21天前 6
    0
    nenge 这个没改其他, 主要修改原来的简单的路由判断为更强大的判断 数据库操作改善(预处理) 稍后增加一个上传接口把,方便使用tinymce等插件上传
    最好钦定一个编辑器,不然还得是类似五代十国的感觉
  • didiaog
    21天前 7
    0
    php7+可以安装使用吗
  • 流口水的鱼
    21天前 8
    0
    这个必须顶
  • nenge 楼主
    21天前 9
    0

    TinyMce编辑器统一方案,如果你有喜欢的编辑器不妨推荐一下,目前准备增加CKEditor免费版

     

    插件hook点 不能出现任何PHP语句,要纯JS

    // hook tinymce_class.htm // hook tinymce_options.htm // hook tinymce_init.htm // hook tinymce_setup.htm // hook tinymce_end_setup.htm // hook tinymce_attach_modal.htm


    ckeditor

    最后于 13天前 被nenge编辑 ,原因:
  • nenge 楼主
    21天前 10
    0
    didiaog php7+可以安装使用吗
    7.x用建议用原版即可,
  • 木头人
    20天前 11
    0
    沙发我没有,板凳我没有,板也没有,只好站在后面排队支持! 
  • xx123456
    20天前 12
    0
    感谢楼主ing!!!
  • geruixi
    18天前 13
    0
    线上模式无法用,管理员发帖都发不了,提示没权限,实际上有权限的、线上模式语言包都读取不了。
  • nenge 楼主
    18天前 14
    0
    geruixi 线上模式无法用,管理员发帖都发不了,提示没权限,实际上有权限的、线上模式语言包都读取不了。
    清空缓存看看,我猜大概率是用户组信息没加载,导致权限异常。说一下你的服务器环境。
  • nenge 楼主
    18天前 15
    0
    geruixi 线上模式无法用,管理员发帖都发不了,提示没权限,实际上有权限的、线上模式语言包都读取不了。
    看一下logo里的db error有哪些错误
  • geruixi
    18天前 16
    0
    nenge 清空缓存看看,我猜大概率是用户组信息没加载,导致权限异常。说一下你的服务器环境。
    PHP8.2
  • nenge 楼主
    17天前 17
    0
    geruixi PHP8.2
    关闭DEBUG会使用 xiunophp.min.php 这个聚合文件,可能是导致异常原因,稍后更新删掉,避免加载错误
  • geruixi
    17天前 18
    1
    安装后,登陆提示密码错误。注册时提示加密后长度有问题
  • nenge 楼主
    17天前 19
    0
    geruixi 安装后,登陆提示密码错误。注册时提示加密后长度有问题
    下载最新版覆盖重试,之前覆盖不彻底(new_cache发生错误),导致存在安装时,管理员帐号没有正确写入
  • geruixi
    17天前 20
    0
    1.安装是没有插入默认版块,导致后台新建不了版块
    2.安装时新建帐号还是有问题,密码混乱字段是明文密码,导致管理帐号无法登陆,提示密码错误
    3.无法上传文件。
    4.发帖页加载编辑器有点慢。
    5.插件后台识别插件封面的路径有问题,安装插件后设置按钮没显示。

返回
nenge
一级用户组
9
主题数
24
帖子数
扫码访问