• 头像
    C
    版主组
    2024-10-21 00:09
    【警告】XiunoBBS 严禁升级 TinyMCE 7 否则面临法律风险
    CF 🆗

    有两贴发到定制插件去了,首页不显示

  • 头像
    C
    版主组
    2024-10-20 22:14
    Xiuno·TinyMCE(2024.10.20)

    时隔一年再次更新,可能是最后一个版本了。

    TinyMCE6.7.3C与官方版本有差异,解决了修改宽高后嵌入媒体地址转换失效的问题。

    不升级TinyMCE6.8+,是因为TinyMCE6.8之后不再兼容一些老式浏览器,包括360极速浏览器。

    不升级TinyMCE7,是因为授权协议变为了GPL协议,与Xiuno的MIT协议不兼容,存在法律风险。

  • 头像
    C
    版主组
    2024-10-20 22:08
    Xiuno·Tiny 插件升级 TinyMCE 6.7.3-C 媒体修复版

    呃,发重了,麻烦站长删一下?

    顺便不建议首页缓存设置这么长,取消置顶和发帖后很久都不显示变更,还以为没发出去。

  • 头像
    C
    版主组
    2024-10-20 22:06
    【警告】XiunoBBS 严禁升级 TinyMCE 7 否则面临法律风险

    置顶插件贴已经提醒了,这贴就不置顶了吧。

  • 头像
    C
    版主组
    2024-10-20 02:05
    Xiuno·TinyMCE(2024.10.20)
    a15174 大佬,爱奇艺和芒果可以实现吗

    不能,没开放外链接口

  • 头像
    C
    版主组
    2023-06-13 22:15
  • 头像
    C
    版主组
    2023-04-29 10:58
    求助 如何让编辑器可以一个按钮一键出设置好的html标签
    heyzero 他的意思我明白了,就是那个tinymce添加一个功能,点击弹出一个输入框,然后在输入框里输入的内容带[ttlogin]前后标签。同时他安装了对应的插件。通过插件来判断内容的权限。 正好我也想问一下, ...

    官方插件的话把插件放进plugins目录然后加载就行。

    非官方插件的话不能这么设置,要有一整套流程,得看文档:

    https://www.tiny.cloud/docs/tinymce/6/

    非常多,不太建议个人DIY。

  • 头像
    C
    版主组
    2023-03-11 03:23
    修改旧版本fuck、c_tinymce插件的表名称,平滑迁移到tiny新版本编辑器插件
    2732708273 这个编辑器复制视频站的网址就可以自动匹配成播放地址的这个功能能不能独立出来呀,这个功能很强应该很多人需要 B站 https://www.bilibili.com/video/BV1TA411H7D ...

    写的几行正则表达式,不算啥功能:

    let ixigua = val.match(/^https?:\/\/(?:www|m)\.ixigua\.com\/(?:video\/)?(\d+)/i);
    if (ixigua) { val = 'https://www.ixigua.com/iframe/' + ixigua[1]; };
    let douyin = val.match(/^https?:\/\/(?:www|m)\.(?:ies)?douyin\.com\/(?:share\/)?video\/(\d+)/i);
    if (douyin) { val = 'https://www.douyin.com/light/' + douyin[1]; };
    let acfun = val.match(/^https?:\/\/www\.acfun\.cn\/v\/ac(\d+)/i);
    if (acfun) { val = 'https://www.acfun.cn/player/ac' + acfun[1]; };
    let acfun_m = val.match(/^https?:\/\/m\.acfun\.cn\/v\/\?ac=(\d+)/i);
    if (acfun_m) { val = 'https://www.acfun.cn/player/ac' + acfun_m[1]; };
    let bv = val.match(/^BV(\w+)/i);
    if (bv) { val = 'https://player.bilibili.com/player.html?bvid=BV' + bv[1]; };
    let bilibili = val.match(/^https?:\/\/(?:www|m)\.bilibili\.com\/video\/BV(\w+)/i);
    if (bilibili) { val = 'https://player.bilibili.com/player.html?bvid=BV' + bilibili[1]; };
    let bilibili_av = val.match(/^https?:\/\/(?:www|m)\.bilibili\.com\/video\/av(\w+)/i);
    if (bilibili_av) { val = 'https://player.bilibili.com/player.html?aid=' + bilibili_av[1]; };
    let youku = val.match(/^https?:\/\/(?:v|m)\.youku\.com\/(?:v_show|video)\/id_([\w\-\=]+)/i);
    if (youku) { val = 'https://player.youku.com/embed/' + youku[1]; };
    let sohu = val.match(/^https?:\/\/tv\.sohu\.com\/v\/([\w\-\=]+)\.html(?:\?vid=(\d+))?/i);
    if (sohu) {
        let bid = atob(sohu[1]).match(/^us\/\d+\/(\d+)/i);
        if (bid) { val = 'https://tv.sohu.com/s/sohuplayer/iplay.html?bid=' + bid[1]; }
        else if (sohu[2]) { val = 'https://tv.sohu.com/s/sohuplayer/iplay.html?vid=' + sohu[2]; }
    };
    let sohu_m = val.match(/^https?:\/\/m\.tv\.sohu\.com\/u\/vw\/([\d]+)/i);
    if (sohu_m) { val = 'https://tv.sohu.com/s/sohuplayer/iplay.html?bid=' + sohu_m[1]; };
    let qq = val.match(/^https?:\/\/v\.qq\.com\/x\/(?:cover|page)\/.*?(\w+)\.html/i);
    if (qq) { val = 'https://v.qq.com/txp/iframe/player.html?vid=' + qq[1]; };
    let qq_m = val.match(/^https?:\/\/m\.v\.qq\.com\/.*?vid=(\w+)/i);
    if (qq_m) { val = 'https://v.qq.com/txp/iframe/player.html?vid=' + qq_m[1]; };
    let music163_0 = val.match(/^https?:\/\/(?:y\.)?music\.163\.com\/(?:m|\#)\/playlist\?id=(\d+)/i);
    if (music163_0) { val = 'https://music.163.com/outchain/player?type=0&id=' + music163_0[1]; };
    let music163_1 = val.match(/^https?:\/\/(?:y\.)?music\.163\.com\/(?:m|\#)\/album\?id=(\d+)/i);
    if (music163_1) { val = 'https://music.163.com/outchain/player?type=1&id=' + music163_1[1]; };
    let music163_2 = val.match(/^https?:\/\/(?:y\.)?music\.163\.com\/(?:m|\#)\/song\?id=(\d+)/i);
    if (music163_2) { val = 'https://music.163.com/outchain/player?type=2&id=' + music163_2[1]; };
  • 头像
    C
    版主组
    2022-12-31 23:59
    求助 如何让编辑器可以一个按钮一键出设置好的html标签

    他这就不是html源代码,是bbcode,在xiuno前台模板转义时格式化。

    回复可见、登录可见这种,用html可实现不了,只能配合插件使用。

  • 头像
    C
    版主组
    2022-12-28 17:10
    Xiuno·TinyMCE(2024.10.20)
    cpda 图片上传w后缀显示错误,必须后台改代码

    设置里有扩展名,加进去就行了。

    如果是图片的话,是可以作为图片上传的,常用扩展名都写进数组了。

    w后缀是啥?

  • 头像
    C
    版主组
    2022-12-23 12:13
    Xiuno·TinyMCE(2024.10.20)
    tuerxuan 我想白嫖…

    WTFPL开源的

  • 头像
    C
    版主组
    2022-12-23 12:03
    Xiuno·TinyMCE(2024.10.20)
    cpda 问题挺大的

    细说

  • 头像
    C
    版主组
    2022-12-23 12:02
    Xiuno·TinyMCE(2024.10.20)
    9981 不能上传qq截图

    先配置好可上传的附件类型,以及各用户组权限,才会显示上传按钮。

    QQ截图你看看什么扩展名的,加进去

  • 头像
    C
    版主组
    2022-12-23 12:02
    Xiuno·TinyMCE(2024.10.20)
    分格 怎么上传本地的图片呢

    先配置好可上传的附件类型,以及各用户组权限,才会显示上传按钮。

  • 头像
    C
    版主组
    2022-11-25 20:33
    xiuno编辑器插件Tiny修改版,加强的自定义功能(2023.10.29)

    TinyMCE和我插件都更新了 = =

    不过还好改动不大,604帖子回复里有说明。

  • 头像
    C
    版主组
    2022-11-25 20:11
  • 头像
    C
    版主组
    2022-11-25 20:10
    Xiuno·TinyMCE(2024.10.20)
    CF 翻译文件是不是不对劲?

    更新了,

    /core 文件夹替换为TinyMCE6.3.0,直接覆盖即可。

    /hook 文件夹修复一处BUG,index_route_case_end.php:12行修改为:

    $tiny_file['type']=strtolower(substr(strrchr($_FILES['file']['name'],'.'),1));

    加了个上传文件扩展名转小写,否则文件扩展名大写时即便允许也会报错。

  • 头像
    C
    版主组
    2022-11-09 17:22
    Xiuno·TinyMCE(2024.10.20)
    CF 那你看看我这个站的,F12还有报错

    没问题了,官方的插件语言名是zh-CN,我之前用的民间版是cn,后面改了以后tiny.js里面的配置也要改。

    目前你网站有个报错是paste插件没有引入,因为那个core目录我给精简过,所以没有paste插件。

  • 头像
    C
    版主组
    2022-11-09 17:09
    Xiuno·TinyMCE(2024.10.20)
    CF 翻译文件是不是不对劲?

    翻译没错,tiny.js也得一块更新

  • 头像
    C
    版主组
    2022-11-08 11:59
    Xiuno·TinyMCE(2024.10.20)

    不想改代码文件的话,直接把底下这一大坨贴进插件配置里面:(理论上tiny.js所有配置都可以覆写)

    setup: function (editor) {
        editor.on('drop', (e) => {
            e.preventDefault();
            e.stopPropagation();
        });
        editor.on('input', () => {
            editor.save();
        });
        editor.on('change', () => {
            editor.save();
        });
        editor.on('paste', (e) => {
            if (!e.clipboardData.files || !e.clipboardData.files.length) { return; };
            e.preventDefault();
            e.stopPropagation();
            tiny_recv(e.clipboardData.files);
        });
        editor.on('keydown', (e) => {
            if (!e.ctrlKey || e.keyCode != 13) { return; };
            e.preventDefault();
            e.stopPropagation();
            document.getElementById('submit').click();
        });
        editor.on('load', () => {
            document.querySelector('input[name="doctype"]').value = 0;
            if (!document.querySelector('#tiny_info')) {
                document.querySelector('.tox-statusbar__text-container').insertAdjacentHTML('afterbegin', '<span id="tiny_info" style="display:flex;flex:1 1 auto;"><a href="javascript:;" onclick="document.querySelector(\'#tiny_list\').style.display=(document.querySelector(\'#tiny_list\').style.display==\'none\')?\'\':\'none\';"><span id="tiny_info_rest" style="color:blue;">0</span>&nbsp;/&nbsp;<span id="tiny_info_done" style="color:green;">0</span>&nbsp;/&nbsp;<span id="tiny_info_fail" style="color:red;">0</span></a>&nbsp;&nbsp;<a id="tiny_proc" href="javascript:;" style="color:darkorange;"></a></span><span style="display:flex;flex:0 0 auto;"><a href="javascript:;" onclick="tinymce.activeEditor.undoManager.undo();" style="text-decoration:none">&nbsp;&nbsp;&#x276E;&#xFE0E;&nbsp;&nbsp;</a><a href="javascript:;" onclick="tinymce.activeEditor.undoManager.redo();" style="text-decoration:none">&nbsp;&nbsp;&#x276F;&#xFE0E;&nbsp;&nbsp;</a>');
            };
            if (!document.querySelector('#tiny_list')) {
                document.querySelector('.tox-tinymce').insertAdjacentHTML('afterend', '<div id="tiny_list" style="margin-top:-1px;padding:2px 8px;border:1px solid #ccc;background:#FFF;color:rgba(34,47,62,.7);font-size:12px;max-height:112px;overflow-y:scroll;display:none;"></div>');
            }
        });
        editor.on('ExecCommand', (e) => {
            if (e.command === 'mceMedia') {
                var ibox = document.querySelector('.tox-textfield');
                ibox.focus();
                ibox.addEventListener('paste', function (e) {
                    var val = e.clipboardData.getData("text");
                    e.preventDefault();
                    e.stopPropagation();
                    var ixigua = val.match(/^https?:\/\/(?:www|m)\.ixigua\.com\/(?:video\/)?(\d+)/i);
                    if (ixigua) { val = 'https://www.ixigua.com/iframe/' + ixigua[1]; };
                    var douyin = val.match(/^https?:\/\/(?:www|m)\.(?:ies)?douyin\.com\/(?:share\/)?video\/(\d+)/i);
                    if (douyin) { val = 'https://www.douyin.com/light/' + douyin[1]; };
                    var acfun = val.match(/^https?:\/\/www\.acfun\.cn\/v\/ac(\d+)/i);
                    if (acfun) { val = 'https://www.acfun.cn/player/ac' + acfun[1]; };
                    var acfun_m = val.match(/^https?:\/\/m\.acfun\.cn\/v\/\?ac=(\d+)/i);
                    if (acfun_m) { val = 'https://www.acfun.cn/player/ac' + acfun_m[1]; };
                    var bilibili = val.match(/^https?:\/\/(?:www|m)\.bilibili\.com\/video\/BV(\w+)/i);
                    if (bilibili) { val = 'https://player.bilibili.com/player.html?bvid=BV' + bilibili[1]; };
                    var bilibili_av = val.match(/^https?:\/\/(?:www|m)\.bilibili\.com\/video\/av(\w+)/i);
                    if (bilibili_av) { val = 'https://player.bilibili.com/player.html?aid=' + bilibili_av[1]; };
                    var youku = val.match(/^https?:\/\/(?:v|m)\.youku\.com\/(?:v_show|video)\/id_([\w\-\=]+)/i);
                    if (youku) { val = 'https://player.youku.com/embed/' + youku[1]; };
                    var sohu = val.match(/^https?:\/\/tv\.sohu\.com\/v\/([\w\-\=]+)\.html(?:\?vid=(\d+))?/i);
                    if (sohu) {
                        var bid = atob(sohu[1]).match(/^us\/\d+\/(\d+)/i);
                        if (bid) { val = 'https://tv.sohu.com/s/sohuplayer/iplay.html?bid=' + bid[1]; }
                        else if (sohu[2]) { val = 'https://tv.sohu.com/s/sohuplayer/iplay.html?vid=' + sohu[2]; }
                    };
                    var sohu_m = val.match(/^https?:\/\/m\.tv\.sohu\.com\/u\/vw\/([\d]+)/i);
                    if (sohu_m) { val = 'https://tv.sohu.com/s/sohuplayer/iplay.html?bid=' + sohu_m[1]; };
                    var qq = val.match(/^https?:\/\/v\.qq\.com\/x\/(?:cover|page)\/.*?(\w+)\.html/i);
                    if (qq) { val = 'https://v.qq.com/txp/iframe/player.html?vid=' + qq[1]; };
                    var qq_m = val.match(/^https?:\/\/m\.v\.qq\.com\/.*?vid=(\w+)/i);
                    if (qq_m) { val = 'https://v.qq.com/txp/iframe/player.html?vid=' + qq_m[1]; };
                    var music163_0 = val.match(/^https?:\/\/(?:y\.)?music\.163\.com\/(?:m|\#)\/playlist\?id=(\d+)/i);
                    if (music163_0) { val = 'https://music.163.com/outchain/player?type=0&id=' + music163_0[1]; };
                    var music163_1 = val.match(/^https?:\/\/(?:y\.)?music\.163\.com\/(?:m|\#)\/album\?id=(\d+)/i);
                    if (music163_1) { val = 'https://music.163.com/outchain/player?type=1&id=' + music163_1[1]; };
                    var music163_2 = val.match(/^https?:\/\/(?:y\.)?music\.163\.com\/(?:m|\#)\/song\?id=(\d+)/i);
                    if (music163_2) { val = 'https://music.163.com/outchain/player?type=2&id=' + music163_2[1]; };
                    ibox.value = val;
                });
            };
        });
    }