@lingxiteam/lcdp-ueditor-react 1.0.0-alpha.9 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/LcdpUeditor.d.ts +1 -0
- package/es/LcdpUeditor.d.ts.map +1 -0
- package/es/LcdpUeditor.js +72 -61
- package/es/const.d.ts.map +1 -0
- package/es/const.js +4 -4
- package/es/defaultConfig.json +76 -76
- package/es/index.d.ts.map +1 -0
- package/es/tools/UeditorResourceLoader.d.ts.map +1 -0
- package/es/tools/UeditorResourceLoader.js +11 -16
- package/es/tools/filterHtmlNode.d.ts +5 -0
- package/es/tools/filterHtmlNode.d.ts.map +1 -0
- package/es/tools/filterHtmlNode.js +41 -0
- package/es/tools/loadScript.d.ts.map +1 -0
- package/es/tools/loadScript.js +5 -7
- package/es/type.d.ts +6 -0
- package/es/type.d.ts.map +1 -0
- package/lib/LcdpUeditor.d.ts +1 -0
- package/lib/LcdpUeditor.js +24 -8
- package/lib/defaultConfig.json +76 -76
- package/lib/tools/filterHtmlNode.d.ts +5 -0
- package/lib/tools/filterHtmlNode.js +61 -0
- package/lib/type.d.ts +6 -0
- package/package.json +35 -34
- package/ueditor-resource/dialogs/anchor/anchor.html +62 -62
- package/ueditor-resource/dialogs/attachment/attachment.css +716 -716
- package/ueditor-resource/dialogs/attachment/attachment.html +61 -61
- package/ueditor-resource/dialogs/attachment/attachment.js +803 -803
- package/ueditor-resource/dialogs/audio/audio.css +879 -879
- package/ueditor-resource/dialogs/audio/audio.html +93 -93
- package/ueditor-resource/dialogs/audio/audio.js +815 -815
- package/ueditor-resource/dialogs/background/background.css +193 -193
- package/ueditor-resource/dialogs/background/background.html +59 -59
- package/ueditor-resource/dialogs/background/background.js +370 -370
- package/ueditor-resource/dialogs/contentimport/contentimport.html +176 -176
- package/ueditor-resource/dialogs/contentimport/contentimport.js +91 -91
- package/ueditor-resource/dialogs/emotion/emotion.css +129 -129
- package/ueditor-resource/dialogs/emotion/emotion.html +70 -70
- package/ueditor-resource/dialogs/emotion/emotion.js +186 -186
- package/ueditor-resource/dialogs/formula/formula.html +98 -98
- package/ueditor-resource/dialogs/formula/formula.js +147 -147
- package/ueditor-resource/dialogs/help/help.css +37 -37
- package/ueditor-resource/dialogs/help/help.html +82 -82
- package/ueditor-resource/dialogs/help/help.js +57 -57
- package/ueditor-resource/dialogs/image/image.css +768 -768
- package/ueditor-resource/dialogs/image/image.html +144 -144
- package/ueditor-resource/dialogs/image/image.js +1060 -1060
- package/ueditor-resource/dialogs/insertframe/insertframe.html +135 -135
- package/ueditor-resource/dialogs/internal.js +81 -81
- package/ueditor-resource/dialogs/link/link.html +148 -148
- package/ueditor-resource/dialogs/preview/preview.html +45 -45
- package/ueditor-resource/dialogs/scrawl/scrawl.css +324 -324
- package/ueditor-resource/dialogs/scrawl/scrawl.html +95 -95
- package/ueditor-resource/dialogs/scrawl/scrawl.js +682 -682
- package/ueditor-resource/dialogs/searchreplace/searchreplace.html +144 -144
- package/ueditor-resource/dialogs/searchreplace/searchreplace.js +174 -174
- package/ueditor-resource/dialogs/spechars/spechars.html +42 -42
- package/ueditor-resource/dialogs/spechars/spechars.js +86 -86
- package/ueditor-resource/dialogs/table/edittable.css +85 -85
- package/ueditor-resource/dialogs/table/edittable.html +69 -69
- package/ueditor-resource/dialogs/table/edittable.js +241 -241
- package/ueditor-resource/dialogs/table/edittd.html +62 -62
- package/ueditor-resource/dialogs/table/edittip.html +33 -33
- package/ueditor-resource/dialogs/template/config.js +42 -42
- package/ueditor-resource/dialogs/template/template.css +99 -99
- package/ueditor-resource/dialogs/template/template.html +26 -26
- package/ueditor-resource/dialogs/template/template.js +53 -53
- package/ueditor-resource/dialogs/video/video.css +909 -909
- package/ueditor-resource/dialogs/video/video.html +114 -114
- package/ueditor-resource/dialogs/video/video.js +867 -867
- package/ueditor-resource/dialogs/wordimage/wordimage.html +221 -221
- package/ueditor-resource/dialogs/wordimage/wordimage.js +93 -93
- package/ueditor-resource/lang/en/en.js +686 -686
- package/ueditor-resource/lang/zh-cn/zh-cn.js +748 -748
- package/ueditor-resource/lang/zh-tw/zh-tw.js +748 -748
- package/ueditor-resource/plugins/demo/demo.js +3 -3
- package/ueditor-resource/themes/default/css/ueditor.css +2149 -2148
- package/ueditor-resource/themes/default/dialog.css +17 -17
- package/ueditor-resource/themes/default/dialogbase.css +132 -132
- package/ueditor-resource/themes/default/exts/ai.svg +12 -12
- package/ueditor-resource/themes/default/exts/apk.svg +12 -12
- package/ueditor-resource/themes/default/exts/chm.svg +12 -12
- package/ueditor-resource/themes/default/exts/css.svg +12 -12
- package/ueditor-resource/themes/default/exts/doc.svg +22 -22
- package/ueditor-resource/themes/default/exts/docx.svg +22 -22
- package/ueditor-resource/themes/default/exts/dwg.svg +16 -16
- package/ueditor-resource/themes/default/exts/folder.svg +3 -3
- package/ueditor-resource/themes/default/exts/gif.svg +14 -14
- package/ueditor-resource/themes/default/exts/html.svg +12 -12
- package/ueditor-resource/themes/default/exts/jpeg.svg +14 -14
- package/ueditor-resource/themes/default/exts/jpg.svg +14 -14
- package/ueditor-resource/themes/default/exts/log.svg +12 -12
- package/ueditor-resource/themes/default/exts/mp3.svg +14 -14
- package/ueditor-resource/themes/default/exts/mp4.svg +12 -12
- package/ueditor-resource/themes/default/exts/pdf.svg +14 -14
- package/ueditor-resource/themes/default/exts/png.svg +14 -14
- package/ueditor-resource/themes/default/exts/ppt.svg +24 -24
- package/ueditor-resource/themes/default/exts/pptx.svg +24 -24
- package/ueditor-resource/themes/default/exts/psd.svg +12 -12
- package/ueditor-resource/themes/default/exts/rar.svg +12 -12
- package/ueditor-resource/themes/default/exts/svg.svg +12 -12
- package/ueditor-resource/themes/default/exts/torrent.svg +14 -14
- package/ueditor-resource/themes/default/exts/txt.svg +14 -14
- package/ueditor-resource/themes/default/exts/unknown.svg +12 -12
- package/ueditor-resource/themes/default/exts/xls.svg +25 -25
- package/ueditor-resource/themes/default/exts/xlsx.svg +25 -25
- package/ueditor-resource/themes/default/exts/zip.svg +12 -12
- package/ueditor-resource/themes/iframe.css +63 -63
- package/ueditor-resource/third-party/SyntaxHighlighter/shCore.js +3655 -3655
- package/ueditor-resource/third-party/clipboard/clipboard.js +752 -752
- package/ueditor-resource/third-party/codemirror/codemirror.css +106 -106
- package/ueditor-resource/third-party/codemirror/codemirror.js +3581 -3581
- package/ueditor-resource/third-party/jquery-3.5.1.js +1 -1
- package/ueditor-resource/third-party/jquery-3.5.1_1.js +4314 -4314
- package/ueditor-resource/third-party/webuploader/webuploader.css +88 -88
- package/ueditor-resource/third-party/webuploader/webuploader.js +3 -3
- package/ueditor-resource/third-party/zeroclipboard/ZeroClipboard.js +1255 -1255
- package/ueditor-resource/{lcdp-ueditor.all.js → ueditor.all.js} +5270 -5269
- package/ueditor-resource/ueditor.config.js +655 -655
- package/ueditor-resource/{lcdp-ueditor.parse.js → ueditor.parse.js} +13 -13
- package/ueditor-resource/index.html +0 -146
| @@ -1,221 +1,221 @@ | |
| 1 | 
            -
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
         | 
| 2 | 
            -
                "http://www.w3.org/TR/html4/loose.dtd">
         | 
| 3 | 
            -
            <html>
         | 
| 4 | 
            -
            <head>
         | 
| 5 | 
            -
                <title></title>
         | 
| 6 | 
            -
                <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
         | 
| 7 | 
            -
                <script type="text/javascript" src="../internal.js? | 
| 8 | 
            -
                <style type="text/css">
         | 
| 9 | 
            -
                    .wrapper {
         | 
| 10 | 
            -
                        width: 600px;
         | 
| 11 | 
            -
                        padding: 10px;
         | 
| 12 | 
            -
                        height: 352px;
         | 
| 13 | 
            -
                        overflow: hidden;
         | 
| 14 | 
            -
                        position: relative;
         | 
| 15 | 
            -
                        border-bottom: 1px solid #d7d7d7
         | 
| 16 | 
            -
                    }
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                    .wrapper .image-info {
         | 
| 19 | 
            -
                        display: flex;
         | 
| 20 | 
            -
                        align-items: center;
         | 
| 21 | 
            -
                    }
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    .wrapper .image-info .input {
         | 
| 24 | 
            -
                        flex-grow: 1;
         | 
| 25 | 
            -
                        display: flex;
         | 
| 26 | 
            -
                    }
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                    .wrapper .image-info .input input {
         | 
| 29 | 
            -
                        display: block;
         | 
| 30 | 
            -
                        border: 1px solid #CCC;
         | 
| 31 | 
            -
                        height: 23px;
         | 
| 32 | 
            -
                        border-radius: 3px;
         | 
| 33 | 
            -
                        flex-grow: 1;
         | 
| 34 | 
            -
                        outline: none;
         | 
| 35 | 
            -
                    }
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                    .wrapper .image-info .copy {
         | 
| 38 | 
            -
                        width: 60px;
         | 
| 39 | 
            -
                        cursor: pointer;
         | 
| 40 | 
            -
                        margin: 0 5px;
         | 
| 41 | 
            -
                    }
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                    .wrapper .image-info .copy div {
         | 
| 44 | 
            -
                        height: 30px;
         | 
| 45 | 
            -
                        font-size: 12px;
         | 
| 46 | 
            -
                        line-height: 28px;
         | 
| 47 | 
            -
                        cursor: pointer;
         | 
| 48 | 
            -
                        border-radius: 4px;
         | 
| 49 | 
            -
                        text-align: center;
         | 
| 50 | 
            -
                        background-color: #F8F8F8;
         | 
| 51 | 
            -
                        border: 1px solid #EEE;
         | 
| 52 | 
            -
                    }
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                    .wrapper .image-info .action {
         | 
| 55 | 
            -
                        width: 100px;
         | 
| 56 | 
            -
                        cursor: pointer;
         | 
| 57 | 
            -
                    }
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                    .wrapper .image-info .action .save-from-local {
         | 
| 60 | 
            -
                        position: relative;
         | 
| 61 | 
            -
                        height: 30px;
         | 
| 62 | 
            -
                        font-size: 12px;
         | 
| 63 | 
            -
                        line-height: 28px;
         | 
| 64 | 
            -
                        cursor: pointer;
         | 
| 65 | 
            -
                        border-radius: 4px;
         | 
| 66 | 
            -
                        text-align: center;
         | 
| 67 | 
            -
                        background-color: #F8F8F8;
         | 
| 68 | 
            -
                        border: 1px solid #EEE;
         | 
| 69 | 
            -
                    }
         | 
| 70 | 
            -
             | 
| 71 | 
            -
                    .wrapper .image-info .action .save-from-local input {
         | 
| 72 | 
            -
                        position: absolute;
         | 
| 73 | 
            -
                        left: 0;
         | 
| 74 | 
            -
                        top: 0;
         | 
| 75 | 
            -
                        opacity: 0;
         | 
| 76 | 
            -
                        cursor: pointer;
         | 
| 77 | 
            -
                    }
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                    .wrapper .image-manual {
         | 
| 80 | 
            -
                        background: #EEE;
         | 
| 81 | 
            -
                        padding: 10px;
         | 
| 82 | 
            -
                        border-radius: 5px;
         | 
| 83 | 
            -
                        margin-top: 10px;
         | 
| 84 | 
            -
                        line-height: 2;
         | 
| 85 | 
            -
                    }
         | 
| 86 | 
            -
             | 
| 87 | 
            -
                    .wrapper .image-manual .title {
         | 
| 88 | 
            -
                        font-weight: bold;
         | 
| 89 | 
            -
                        font-size: 120%;
         | 
| 90 | 
            -
                    }
         | 
| 91 | 
            -
             | 
| 92 | 
            -
                    .wrapper .image-manual .body {
         | 
| 93 | 
            -
                    }
         | 
| 94 | 
            -
                </style>
         | 
| 95 | 
            -
            </head>
         | 
| 96 | 
            -
            <body>
         | 
| 97 | 
            -
            <div class="wrapper">
         | 
| 98 | 
            -
                <div class="image-info">
         | 
| 99 | 
            -
                    <div class="input">
         | 
| 100 | 
            -
                        <input type="text" id="fileUrl"/>
         | 
| 101 | 
            -
                    </div>
         | 
| 102 | 
            -
                    <div class="copy">
         | 
| 103 | 
            -
                        <div id="copyButton">复制路径</div>
         | 
| 104 | 
            -
                    </div>
         | 
| 105 | 
            -
                    <div class="action">
         | 
| 106 | 
            -
                        <div class="save-from-local">
         | 
| 107 | 
            -
                            <div>本地选择保存</div>
         | 
| 108 | 
            -
                            <input type="file" id="saveFile" multiple=true/>
         | 
| 109 | 
            -
                        </div>
         | 
| 110 | 
            -
                    </div>
         | 
| 111 | 
            -
                </div>
         | 
| 112 | 
            -
                <div class="image-tip"></div>
         | 
| 113 | 
            -
                <div class="image-manual">
         | 
| 114 | 
            -
                    <div class="title">
         | 
| 115 | 
            -
                        Windows使用教程
         | 
| 116 | 
            -
                    </div>
         | 
| 117 | 
            -
                    <div class="body">
         | 
| 118 | 
            -
                        <p>1、点击复制地址按钮</p>
         | 
| 119 | 
            -
                        <p>2、点击本地选择文件,粘贴剪切板的路径到文件选择路径</p>
         | 
| 120 | 
            -
                        <p>3、点击确定</p>
         | 
| 121 | 
            -
                    </div>
         | 
| 122 | 
            -
                    <div class="title">
         | 
| 123 | 
            -
                        Mac使用教程
         | 
| 124 | 
            -
                    </div>
         | 
| 125 | 
            -
                    <div class="body">
         | 
| 126 | 
            -
                        <p>1、点击复制地址按钮</p>
         | 
| 127 | 
            -
                        <p>2、点击本地选择文件,按快捷 Command+Shift+G ,粘贴剪切板的路径到文件选择路径</p>
         | 
| 128 | 
            -
                        <p>3、点击确定</p>
         | 
| 129 | 
            -
                    </div>
         | 
| 130 | 
            -
                </div>
         | 
| 131 | 
            -
            </div>
         | 
| 132 | 
            -
            <script src="../../third-party/jquery-3.5.1.js? | 
| 133 | 
            -
            <script src="../../third-party/webuploader/webuploader.js? | 
| 134 | 
            -
            <script type="text/javascript" src="../../third-party/clipboard/clipboard.js? | 
| 135 | 
            -
            <script type="text/javascript" src="wordimage.js? | 
| 136 | 
            -
            <script type="text/javascript">
         | 
| 137 | 
            -
                editor.setOpt({
         | 
| 138 | 
            -
                    wordImageFieldName: "upfile",
         | 
| 139 | 
            -
                    compressSide: 0,
         | 
| 140 | 
            -
                    maxImageSideLength: 900
         | 
| 141 | 
            -
                });
         | 
| 142 | 
            -
                //全局变量
         | 
| 143 | 
            -
                var imageUrls = [],          //用于保存从服务器返回的图片信息数组
         | 
| 144 | 
            -
                    selectedImageCount = 0,  //当前已选择的但未上传的图片数量
         | 
| 145 | 
            -
                    optImageUrl = editor.getActionUrl(editor.getOpt('imageActionName')),
         | 
| 146 | 
            -
                    optImageFieldName = editor.getOpt('imageFieldName'),
         | 
| 147 | 
            -
                    optImageCompressBorder = editor.getOpt('imageCompressEnable') ? editor.getOpt('imageCompressBorder') : null,
         | 
| 148 | 
            -
                    maxSize = editor.getOpt('imageMaxSize') / 1024 / 1024,
         | 
| 149 | 
            -
                    extension = editor.getOpt('imageAllowFiles').join(';').replace(/\./g, '*.');
         | 
| 150 | 
            -
             | 
| 151 | 
            -
                /* 添加额外的GET参数 */
         | 
| 152 | 
            -
                var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '',
         | 
| 153 | 
            -
                    urlWidthParams = optImageUrl + (optImageUrl.indexOf('?') == -1 ? '?' : '&') + params;
         | 
| 154 | 
            -
             | 
| 155 | 
            -
                var uploader,
         | 
| 156 | 
            -
                    actionUrl = editor.getActionUrl(editor.getOpt('imageActionName')),
         | 
| 157 | 
            -
                    acceptExtensions = (editor.getOpt('imageAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, ''),
         | 
| 158 | 
            -
                    imageMaxSize = editor.getOpt('imageMaxSize'),
         | 
| 159 | 
            -
                    imageCompressBorder = editor.getOpt('imageCompressBorder');
         | 
| 160 | 
            -
                uploader = WebUploader.create({
         | 
| 161 | 
            -
                    accept: {
         | 
| 162 | 
            -
                        title: 'Images',
         | 
| 163 | 
            -
                        extensions: acceptExtensions,
         | 
| 164 | 
            -
                        mimeTypes: 'image/*'
         | 
| 165 | 
            -
                    },
         | 
| 166 | 
            -
                    swf: '../../third-party/webuploader/Uploader.swf',
         | 
| 167 | 
            -
                    server: actionUrl,
         | 
| 168 | 
            -
                    fileVal: editor.getOpt('imageFieldName'),
         | 
| 169 | 
            -
                    duplicate: true,
         | 
| 170 | 
            -
                    fileSingleSizeLimit: imageMaxSize,    // 默认 2 M
         | 
| 171 | 
            -
                    threads: 1,
         | 
| 172 | 
            -
                    compress: editor.getOpt('imageCompressEnable') ? {
         | 
| 173 | 
            -
                        width: imageCompressBorder,
         | 
| 174 | 
            -
                        height: imageCompressBorder,
         | 
| 175 | 
            -
                        // 图片质量,只有type为`image/jpeg`的时候才有效。
         | 
| 176 | 
            -
                        quality: 90,
         | 
| 177 | 
            -
                        // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
         | 
| 178 | 
            -
                        allowMagnify: false,
         | 
| 179 | 
            -
                        // 是否允许裁剪。
         | 
| 180 | 
            -
                        crop: false,
         | 
| 181 | 
            -
                        // 是否保留头部meta信息。
         | 
| 182 | 
            -
                        preserveHeaders: true
         | 
| 183 | 
            -
                    } : false
         | 
| 184 | 
            -
                });
         | 
| 185 | 
            -
                uploader.on('uploadSuccess', function (file, res) {
         | 
| 186 | 
            -
                    if ('state' in res) {
         | 
| 187 | 
            -
                        if (res.state === 'SUCCESS') {
         | 
| 188 | 
            -
                            if (res.url) {
         | 
| 189 | 
            -
                                imageUrls.push({
         | 
| 190 | 
            -
                                    name: file.name,
         | 
| 191 | 
            -
                                    url: res.url,
         | 
| 192 | 
            -
                                    title: '',
         | 
| 193 | 
            -
                                });
         | 
| 194 | 
            -
                                $('.image-tip').html('<span style="color:#139213;">图片' + imageUrls.length + '(' + file.name + ')' + '转存成功</span>');
         | 
| 195 | 
            -
                            } else {
         | 
| 196 | 
            -
                                $('.image-tip').html('上传失败:' + JSON.stringify(res))
         | 
| 197 | 
            -
                            }
         | 
| 198 | 
            -
                            // 触发上传附件事件
         | 
| 199 | 
            -
                            editor.fireEvent("uploadsuccess", {
         | 
| 200 | 
            -
                                res: res,
         | 
| 201 | 
            -
                                type: 'image'
         | 
| 202 | 
            -
                            });
         | 
| 203 | 
            -
                        } else {
         | 
| 204 | 
            -
                            $('.image-tip').html('上传失败:' + JSON.stringify(res))
         | 
| 205 | 
            -
                        }
         | 
| 206 | 
            -
                    } else {
         | 
| 207 | 
            -
                        $('.image-tip').html('上传失败:' + JSON.stringify(res))
         | 
| 208 | 
            -
                    }
         | 
| 209 | 
            -
                });
         | 
| 210 | 
            -
                uploader.on('uploadFinished', function () {
         | 
| 211 | 
            -
                    $('.image-tip').html('<span style="color:#139213;">转存成功,请提交确认</span>');
         | 
| 212 | 
            -
                });
         | 
| 213 | 
            -
                utils.domReady(function () {
         | 
| 214 | 
            -
                    var options = {};
         | 
| 215 | 
            -
                    var callbacks = {};
         | 
| 216 | 
            -
                    wordImage.init(options, callbacks);
         | 
| 217 | 
            -
                });
         | 
| 218 | 
            -
            </script>
         | 
| 219 | 
            -
             | 
| 220 | 
            -
            </body>
         | 
| 221 | 
            -
            </html>
         | 
| 1 | 
            +
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
         | 
| 2 | 
            +
                "http://www.w3.org/TR/html4/loose.dtd">
         | 
| 3 | 
            +
            <html>
         | 
| 4 | 
            +
            <head>
         | 
| 5 | 
            +
                <title></title>
         | 
| 6 | 
            +
                <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
         | 
| 7 | 
            +
                <script type="text/javascript" src="../internal.js?aea0c61c"></script>
         | 
| 8 | 
            +
                <style type="text/css">
         | 
| 9 | 
            +
                    .wrapper {
         | 
| 10 | 
            +
                        width: 600px;
         | 
| 11 | 
            +
                        padding: 10px;
         | 
| 12 | 
            +
                        height: 352px;
         | 
| 13 | 
            +
                        overflow: hidden;
         | 
| 14 | 
            +
                        position: relative;
         | 
| 15 | 
            +
                        border-bottom: 1px solid #d7d7d7
         | 
| 16 | 
            +
                    }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    .wrapper .image-info {
         | 
| 19 | 
            +
                        display: flex;
         | 
| 20 | 
            +
                        align-items: center;
         | 
| 21 | 
            +
                    }
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    .wrapper .image-info .input {
         | 
| 24 | 
            +
                        flex-grow: 1;
         | 
| 25 | 
            +
                        display: flex;
         | 
| 26 | 
            +
                    }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    .wrapper .image-info .input input {
         | 
| 29 | 
            +
                        display: block;
         | 
| 30 | 
            +
                        border: 1px solid #CCC;
         | 
| 31 | 
            +
                        height: 23px;
         | 
| 32 | 
            +
                        border-radius: 3px;
         | 
| 33 | 
            +
                        flex-grow: 1;
         | 
| 34 | 
            +
                        outline: none;
         | 
| 35 | 
            +
                    }
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    .wrapper .image-info .copy {
         | 
| 38 | 
            +
                        width: 60px;
         | 
| 39 | 
            +
                        cursor: pointer;
         | 
| 40 | 
            +
                        margin: 0 5px;
         | 
| 41 | 
            +
                    }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    .wrapper .image-info .copy div {
         | 
| 44 | 
            +
                        height: 30px;
         | 
| 45 | 
            +
                        font-size: 12px;
         | 
| 46 | 
            +
                        line-height: 28px;
         | 
| 47 | 
            +
                        cursor: pointer;
         | 
| 48 | 
            +
                        border-radius: 4px;
         | 
| 49 | 
            +
                        text-align: center;
         | 
| 50 | 
            +
                        background-color: #F8F8F8;
         | 
| 51 | 
            +
                        border: 1px solid #EEE;
         | 
| 52 | 
            +
                    }
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    .wrapper .image-info .action {
         | 
| 55 | 
            +
                        width: 100px;
         | 
| 56 | 
            +
                        cursor: pointer;
         | 
| 57 | 
            +
                    }
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                    .wrapper .image-info .action .save-from-local {
         | 
| 60 | 
            +
                        position: relative;
         | 
| 61 | 
            +
                        height: 30px;
         | 
| 62 | 
            +
                        font-size: 12px;
         | 
| 63 | 
            +
                        line-height: 28px;
         | 
| 64 | 
            +
                        cursor: pointer;
         | 
| 65 | 
            +
                        border-radius: 4px;
         | 
| 66 | 
            +
                        text-align: center;
         | 
| 67 | 
            +
                        background-color: #F8F8F8;
         | 
| 68 | 
            +
                        border: 1px solid #EEE;
         | 
| 69 | 
            +
                    }
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                    .wrapper .image-info .action .save-from-local input {
         | 
| 72 | 
            +
                        position: absolute;
         | 
| 73 | 
            +
                        left: 0;
         | 
| 74 | 
            +
                        top: 0;
         | 
| 75 | 
            +
                        opacity: 0;
         | 
| 76 | 
            +
                        cursor: pointer;
         | 
| 77 | 
            +
                    }
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                    .wrapper .image-manual {
         | 
| 80 | 
            +
                        background: #EEE;
         | 
| 81 | 
            +
                        padding: 10px;
         | 
| 82 | 
            +
                        border-radius: 5px;
         | 
| 83 | 
            +
                        margin-top: 10px;
         | 
| 84 | 
            +
                        line-height: 2;
         | 
| 85 | 
            +
                    }
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                    .wrapper .image-manual .title {
         | 
| 88 | 
            +
                        font-weight: bold;
         | 
| 89 | 
            +
                        font-size: 120%;
         | 
| 90 | 
            +
                    }
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                    .wrapper .image-manual .body {
         | 
| 93 | 
            +
                    }
         | 
| 94 | 
            +
                </style>
         | 
| 95 | 
            +
            </head>
         | 
| 96 | 
            +
            <body>
         | 
| 97 | 
            +
            <div class="wrapper">
         | 
| 98 | 
            +
                <div class="image-info">
         | 
| 99 | 
            +
                    <div class="input">
         | 
| 100 | 
            +
                        <input type="text" id="fileUrl"/>
         | 
| 101 | 
            +
                    </div>
         | 
| 102 | 
            +
                    <div class="copy">
         | 
| 103 | 
            +
                        <div id="copyButton">复制路径</div>
         | 
| 104 | 
            +
                    </div>
         | 
| 105 | 
            +
                    <div class="action">
         | 
| 106 | 
            +
                        <div class="save-from-local">
         | 
| 107 | 
            +
                            <div>本地选择保存</div>
         | 
| 108 | 
            +
                            <input type="file" id="saveFile" multiple=true/>
         | 
| 109 | 
            +
                        </div>
         | 
| 110 | 
            +
                    </div>
         | 
| 111 | 
            +
                </div>
         | 
| 112 | 
            +
                <div class="image-tip"></div>
         | 
| 113 | 
            +
                <div class="image-manual">
         | 
| 114 | 
            +
                    <div class="title">
         | 
| 115 | 
            +
                        Windows使用教程
         | 
| 116 | 
            +
                    </div>
         | 
| 117 | 
            +
                    <div class="body">
         | 
| 118 | 
            +
                        <p>1、点击复制地址按钮</p>
         | 
| 119 | 
            +
                        <p>2、点击本地选择文件,粘贴剪切板的路径到文件选择路径</p>
         | 
| 120 | 
            +
                        <p>3、点击确定</p>
         | 
| 121 | 
            +
                    </div>
         | 
| 122 | 
            +
                    <div class="title">
         | 
| 123 | 
            +
                        Mac使用教程
         | 
| 124 | 
            +
                    </div>
         | 
| 125 | 
            +
                    <div class="body">
         | 
| 126 | 
            +
                        <p>1、点击复制地址按钮</p>
         | 
| 127 | 
            +
                        <p>2、点击本地选择文件,按快捷 Command+Shift+G ,粘贴剪切板的路径到文件选择路径</p>
         | 
| 128 | 
            +
                        <p>3、点击确定</p>
         | 
| 129 | 
            +
                    </div>
         | 
| 130 | 
            +
                </div>
         | 
| 131 | 
            +
            </div>
         | 
| 132 | 
            +
            <script src="../../third-party/jquery-3.5.1.js?064a9f9e"></script>
         | 
| 133 | 
            +
            <script src="../../third-party/webuploader/webuploader.js?6da2823d"></script>
         | 
| 134 | 
            +
            <script type="text/javascript" src="../../third-party/clipboard/clipboard.js?555edf0a"></script>
         | 
| 135 | 
            +
            <script type="text/javascript" src="wordimage.js?f4efe813"></script>
         | 
| 136 | 
            +
            <script type="text/javascript">
         | 
| 137 | 
            +
                editor.setOpt({
         | 
| 138 | 
            +
                    wordImageFieldName: "upfile",
         | 
| 139 | 
            +
                    compressSide: 0,
         | 
| 140 | 
            +
                    maxImageSideLength: 900
         | 
| 141 | 
            +
                });
         | 
| 142 | 
            +
                //全局变量
         | 
| 143 | 
            +
                var imageUrls = [],          //用于保存从服务器返回的图片信息数组
         | 
| 144 | 
            +
                    selectedImageCount = 0,  //当前已选择的但未上传的图片数量
         | 
| 145 | 
            +
                    optImageUrl = editor.getActionUrl(editor.getOpt('imageActionName')),
         | 
| 146 | 
            +
                    optImageFieldName = editor.getOpt('imageFieldName'),
         | 
| 147 | 
            +
                    optImageCompressBorder = editor.getOpt('imageCompressEnable') ? editor.getOpt('imageCompressBorder') : null,
         | 
| 148 | 
            +
                    maxSize = editor.getOpt('imageMaxSize') / 1024 / 1024,
         | 
| 149 | 
            +
                    extension = editor.getOpt('imageAllowFiles').join(';').replace(/\./g, '*.');
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                /* 添加额外的GET参数 */
         | 
| 152 | 
            +
                var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '',
         | 
| 153 | 
            +
                    urlWidthParams = optImageUrl + (optImageUrl.indexOf('?') == -1 ? '?' : '&') + params;
         | 
| 154 | 
            +
             | 
| 155 | 
            +
                var uploader,
         | 
| 156 | 
            +
                    actionUrl = editor.getActionUrl(editor.getOpt('imageActionName')),
         | 
| 157 | 
            +
                    acceptExtensions = (editor.getOpt('imageAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, ''),
         | 
| 158 | 
            +
                    imageMaxSize = editor.getOpt('imageMaxSize'),
         | 
| 159 | 
            +
                    imageCompressBorder = editor.getOpt('imageCompressBorder');
         | 
| 160 | 
            +
                uploader = WebUploader.create({
         | 
| 161 | 
            +
                    accept: {
         | 
| 162 | 
            +
                        title: 'Images',
         | 
| 163 | 
            +
                        extensions: acceptExtensions,
         | 
| 164 | 
            +
                        mimeTypes: 'image/*'
         | 
| 165 | 
            +
                    },
         | 
| 166 | 
            +
                    swf: '../../third-party/webuploader/Uploader.swf',
         | 
| 167 | 
            +
                    server: actionUrl,
         | 
| 168 | 
            +
                    fileVal: editor.getOpt('imageFieldName'),
         | 
| 169 | 
            +
                    duplicate: true,
         | 
| 170 | 
            +
                    fileSingleSizeLimit: imageMaxSize,    // 默认 2 M
         | 
| 171 | 
            +
                    threads: 1,
         | 
| 172 | 
            +
                    compress: editor.getOpt('imageCompressEnable') ? {
         | 
| 173 | 
            +
                        width: imageCompressBorder,
         | 
| 174 | 
            +
                        height: imageCompressBorder,
         | 
| 175 | 
            +
                        // 图片质量,只有type为`image/jpeg`的时候才有效。
         | 
| 176 | 
            +
                        quality: 90,
         | 
| 177 | 
            +
                        // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
         | 
| 178 | 
            +
                        allowMagnify: false,
         | 
| 179 | 
            +
                        // 是否允许裁剪。
         | 
| 180 | 
            +
                        crop: false,
         | 
| 181 | 
            +
                        // 是否保留头部meta信息。
         | 
| 182 | 
            +
                        preserveHeaders: true
         | 
| 183 | 
            +
                    } : false
         | 
| 184 | 
            +
                });
         | 
| 185 | 
            +
                uploader.on('uploadSuccess', function (file, res) {
         | 
| 186 | 
            +
                    if ('state' in res) {
         | 
| 187 | 
            +
                        if (res.state === 'SUCCESS') {
         | 
| 188 | 
            +
                            if (res.url) {
         | 
| 189 | 
            +
                                imageUrls.push({
         | 
| 190 | 
            +
                                    name: file.name,
         | 
| 191 | 
            +
                                    url: res.url,
         | 
| 192 | 
            +
                                    title: '',
         | 
| 193 | 
            +
                                });
         | 
| 194 | 
            +
                                $('.image-tip').html('<span style="color:#139213;">图片' + imageUrls.length + '(' + file.name + ')' + '转存成功</span>');
         | 
| 195 | 
            +
                            } else {
         | 
| 196 | 
            +
                                $('.image-tip').html('上传失败:' + JSON.stringify(res))
         | 
| 197 | 
            +
                            }
         | 
| 198 | 
            +
                            // 触发上传附件事件
         | 
| 199 | 
            +
                            editor.fireEvent("uploadsuccess", {
         | 
| 200 | 
            +
                                res: res,
         | 
| 201 | 
            +
                                type: 'image'
         | 
| 202 | 
            +
                            });
         | 
| 203 | 
            +
                        } else {
         | 
| 204 | 
            +
                            $('.image-tip').html('上传失败:' + JSON.stringify(res))
         | 
| 205 | 
            +
                        }
         | 
| 206 | 
            +
                    } else {
         | 
| 207 | 
            +
                        $('.image-tip').html('上传失败:' + JSON.stringify(res))
         | 
| 208 | 
            +
                    }
         | 
| 209 | 
            +
                });
         | 
| 210 | 
            +
                uploader.on('uploadFinished', function () {
         | 
| 211 | 
            +
                    $('.image-tip').html('<span style="color:#139213;">转存成功,请提交确认</span>');
         | 
| 212 | 
            +
                });
         | 
| 213 | 
            +
                utils.domReady(function () {
         | 
| 214 | 
            +
                    var options = {};
         | 
| 215 | 
            +
                    var callbacks = {};
         | 
| 216 | 
            +
                    wordImage.init(options, callbacks);
         | 
| 217 | 
            +
                });
         | 
| 218 | 
            +
            </script>
         | 
| 219 | 
            +
             | 
| 220 | 
            +
            </body>
         | 
| 221 | 
            +
            </html>
         | 
| @@ -1,93 +1,93 @@ | |
| 1 | 
            -
            /**
         | 
| 2 | 
            -
             * Created by JetBrains PhpStorm.
         | 
| 3 | 
            -
             * User: taoqili
         | 
| 4 | 
            -
             * Date: 12-1-30
         | 
| 5 | 
            -
             * Time: 下午12:50
         | 
| 6 | 
            -
             * To change this template use File | Settings | File Templates.
         | 
| 7 | 
            -
             */
         | 
| 8 | 
            -
            var wordImage = {};
         | 
| 9 | 
            -
            var g = $G, flashObj, flashContainer;
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            wordImage.init = function (opt, callbacks) {
         | 
| 12 | 
            -
                showLocalPath("fileUrl");
         | 
| 13 | 
            -
                createCopyButton("copyButton", "fileUrl");
         | 
| 14 | 
            -
                addUploadButtonListener();
         | 
| 15 | 
            -
                addOkListener();
         | 
| 16 | 
            -
            };
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            function addUploadButtonListener() {
         | 
| 19 | 
            -
                g('saveFile').addEventListener('change', function () {
         | 
| 20 | 
            -
                    $('.image-tip').html('正在转存,请稍后...');
         | 
| 21 | 
            -
                    uploader.addFile(this.files);
         | 
| 22 | 
            -
                    uploader.upload();
         | 
| 23 | 
            -
                });
         | 
| 24 | 
            -
            }
         | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
            function addOkListener() {
         | 
| 28 | 
            -
                dialog.onok = function () {
         | 
| 29 | 
            -
                    //console.log('imageUrls',imageUrls);
         | 
| 30 | 
            -
                    if (!imageUrls.length) return;
         | 
| 31 | 
            -
                    var urlPrefix = editor.getOpt('imageUrlPrefix'),
         | 
| 32 | 
            -
                        images = domUtils.getElementsByTagName(editor.document, "img");
         | 
| 33 | 
            -
                    editor.fireEvent('saveScene');
         | 
| 34 | 
            -
                    // console.log('images',images,imageUrls);
         | 
| 35 | 
            -
                    for (var i = 0, img; img = images[i++];) {
         | 
| 36 | 
            -
                        var src = img.getAttribute("data-word-image");
         | 
| 37 | 
            -
                        if (!src) continue;
         | 
| 38 | 
            -
                        for (var j = 0, url; url = imageUrls[j++];) {
         | 
| 39 | 
            -
                            // console.log('url',src, url);
         | 
| 40 | 
            -
                            if (src.indexOf(url.name.replace(" ", "")) != -1) {
         | 
| 41 | 
            -
                                img.src = urlPrefix + url.url;
         | 
| 42 | 
            -
                                img.setAttribute("_src", urlPrefix + url.url);  //同时修改"_src"属性
         | 
| 43 | 
            -
                                img.setAttribute("title", url.title);
         | 
| 44 | 
            -
                                domUtils.removeAttributes(img, ["data-word-image", "style", "width", "height"]);
         | 
| 45 | 
            -
                                editor.fireEvent("selectionchange");
         | 
| 46 | 
            -
                                break;
         | 
| 47 | 
            -
                            }
         | 
| 48 | 
            -
                        }
         | 
| 49 | 
            -
                    }
         | 
| 50 | 
            -
                    editor.fireEvent('saveScene');
         | 
| 51 | 
            -
                    // hideFlash();
         | 
| 52 | 
            -
                };
         | 
| 53 | 
            -
                dialog.oncancel = function () {
         | 
| 54 | 
            -
                    //hideFlash();
         | 
| 55 | 
            -
                };
         | 
| 56 | 
            -
            }
         | 
| 57 | 
            -
             | 
| 58 | 
            -
            function showLocalPath(id) {
         | 
| 59 | 
            -
                //单张编辑
         | 
| 60 | 
            -
                var img = editor.selection.getRange().getClosedNode();
         | 
| 61 | 
            -
                var images = editor.execCommand('wordimage');
         | 
| 62 | 
            -
                if (images.length == 1 || img && img.tagName == 'IMG') {
         | 
| 63 | 
            -
                    g(id).value = images[0];
         | 
| 64 | 
            -
                    return;
         | 
| 65 | 
            -
                }
         | 
| 66 | 
            -
                var path = images[0];
         | 
| 67 | 
            -
                var leftSlashIndex = path.lastIndexOf("/") || 0,  //不同版本的doc和浏览器都可能影响到这个符号,故直接判断两种
         | 
| 68 | 
            -
                    rightSlashIndex = path.lastIndexOf("\\") || 0,
         | 
| 69 | 
            -
                    separater = leftSlashIndex > rightSlashIndex ? "/" : "\\";
         | 
| 70 | 
            -
             | 
| 71 | 
            -
                path = path.substring(0, path.lastIndexOf(separater) + 1);
         | 
| 72 | 
            -
                g(id).value = path;
         | 
| 73 | 
            -
                //增提醒用户选择哪些文件
         | 
| 74 | 
            -
                var names = [];
         | 
| 75 | 
            -
                for (var i = 0, len = images.length; i < len; i++) {
         | 
| 76 | 
            -
                    var img = images[i];
         | 
| 77 | 
            -
                    names.push(img.substring(img.lastIndexOf(separater) + 1, img.length));
         | 
| 78 | 
            -
                }
         | 
| 79 | 
            -
                $('.image-tip').html('<span style="color:#ff0000;">请选择:' + names.join("、") + "共" + images.length + '个文件</span>');
         | 
| 80 | 
            -
            }
         | 
| 81 | 
            -
             | 
| 82 | 
            -
            function createCopyButton(id, dataFrom) {
         | 
| 83 | 
            -
                var url = g(dataFrom).value;
         | 
| 84 | 
            -
                if (url.startsWith("file:////")) {
         | 
| 85 | 
            -
                    url = url.substring(8);
         | 
| 86 | 
            -
                }
         | 
| 87 | 
            -
                url = decodeURI(url);
         | 
| 88 | 
            -
                g(id).setAttribute("data-clipboard-text", url);
         | 
| 89 | 
            -
                var clipboard = new Clipboard('[data-clipboard-text]')
         | 
| 90 | 
            -
                clipboard.on('success', function (e) {
         | 
| 91 | 
            -
                    g('copyButton').innerHTML = '复制成功';
         | 
| 92 | 
            -
                });
         | 
| 93 | 
            -
            }
         | 
| 1 | 
            +
            /**
         | 
| 2 | 
            +
             * Created by JetBrains PhpStorm.
         | 
| 3 | 
            +
             * User: taoqili
         | 
| 4 | 
            +
             * Date: 12-1-30
         | 
| 5 | 
            +
             * Time: 下午12:50
         | 
| 6 | 
            +
             * To change this template use File | Settings | File Templates.
         | 
| 7 | 
            +
             */
         | 
| 8 | 
            +
            var wordImage = {};
         | 
| 9 | 
            +
            var g = $G, flashObj, flashContainer;
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            wordImage.init = function (opt, callbacks) {
         | 
| 12 | 
            +
                showLocalPath("fileUrl");
         | 
| 13 | 
            +
                createCopyButton("copyButton", "fileUrl");
         | 
| 14 | 
            +
                addUploadButtonListener();
         | 
| 15 | 
            +
                addOkListener();
         | 
| 16 | 
            +
            };
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            function addUploadButtonListener() {
         | 
| 19 | 
            +
                g('saveFile').addEventListener('change', function () {
         | 
| 20 | 
            +
                    $('.image-tip').html('正在转存,请稍后...');
         | 
| 21 | 
            +
                    uploader.addFile(this.files);
         | 
| 22 | 
            +
                    uploader.upload();
         | 
| 23 | 
            +
                });
         | 
| 24 | 
            +
            }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
             | 
| 27 | 
            +
            function addOkListener() {
         | 
| 28 | 
            +
                dialog.onok = function () {
         | 
| 29 | 
            +
                    //console.log('imageUrls',imageUrls);
         | 
| 30 | 
            +
                    if (!imageUrls.length) return;
         | 
| 31 | 
            +
                    var urlPrefix = editor.getOpt('imageUrlPrefix'),
         | 
| 32 | 
            +
                        images = domUtils.getElementsByTagName(editor.document, "img");
         | 
| 33 | 
            +
                    editor.fireEvent('saveScene');
         | 
| 34 | 
            +
                    // console.log('images',images,imageUrls);
         | 
| 35 | 
            +
                    for (var i = 0, img; img = images[i++];) {
         | 
| 36 | 
            +
                        var src = img.getAttribute("data-word-image");
         | 
| 37 | 
            +
                        if (!src) continue;
         | 
| 38 | 
            +
                        for (var j = 0, url; url = imageUrls[j++];) {
         | 
| 39 | 
            +
                            // console.log('url',src, url);
         | 
| 40 | 
            +
                            if (src.indexOf(url.name.replace(" ", "")) != -1) {
         | 
| 41 | 
            +
                                img.src = urlPrefix + url.url;
         | 
| 42 | 
            +
                                img.setAttribute("_src", urlPrefix + url.url);  //同时修改"_src"属性
         | 
| 43 | 
            +
                                img.setAttribute("title", url.title);
         | 
| 44 | 
            +
                                domUtils.removeAttributes(img, ["data-word-image", "style", "width", "height"]);
         | 
| 45 | 
            +
                                editor.fireEvent("selectionchange");
         | 
| 46 | 
            +
                                break;
         | 
| 47 | 
            +
                            }
         | 
| 48 | 
            +
                        }
         | 
| 49 | 
            +
                    }
         | 
| 50 | 
            +
                    editor.fireEvent('saveScene');
         | 
| 51 | 
            +
                    // hideFlash();
         | 
| 52 | 
            +
                };
         | 
| 53 | 
            +
                dialog.oncancel = function () {
         | 
| 54 | 
            +
                    //hideFlash();
         | 
| 55 | 
            +
                };
         | 
| 56 | 
            +
            }
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            function showLocalPath(id) {
         | 
| 59 | 
            +
                //单张编辑
         | 
| 60 | 
            +
                var img = editor.selection.getRange().getClosedNode();
         | 
| 61 | 
            +
                var images = editor.execCommand('wordimage');
         | 
| 62 | 
            +
                if (images.length == 1 || img && img.tagName == 'IMG') {
         | 
| 63 | 
            +
                    g(id).value = images[0];
         | 
| 64 | 
            +
                    return;
         | 
| 65 | 
            +
                }
         | 
| 66 | 
            +
                var path = images[0];
         | 
| 67 | 
            +
                var leftSlashIndex = path.lastIndexOf("/") || 0,  //不同版本的doc和浏览器都可能影响到这个符号,故直接判断两种
         | 
| 68 | 
            +
                    rightSlashIndex = path.lastIndexOf("\\") || 0,
         | 
| 69 | 
            +
                    separater = leftSlashIndex > rightSlashIndex ? "/" : "\\";
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                path = path.substring(0, path.lastIndexOf(separater) + 1);
         | 
| 72 | 
            +
                g(id).value = path;
         | 
| 73 | 
            +
                //增提醒用户选择哪些文件
         | 
| 74 | 
            +
                var names = [];
         | 
| 75 | 
            +
                for (var i = 0, len = images.length; i < len; i++) {
         | 
| 76 | 
            +
                    var img = images[i];
         | 
| 77 | 
            +
                    names.push(img.substring(img.lastIndexOf(separater) + 1, img.length));
         | 
| 78 | 
            +
                }
         | 
| 79 | 
            +
                $('.image-tip').html('<span style="color:#ff0000;">请选择:' + names.join("、") + "共" + images.length + '个文件</span>');
         | 
| 80 | 
            +
            }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
            function createCopyButton(id, dataFrom) {
         | 
| 83 | 
            +
                var url = g(dataFrom).value;
         | 
| 84 | 
            +
                if (url.startsWith("file:////")) {
         | 
| 85 | 
            +
                    url = url.substring(8);
         | 
| 86 | 
            +
                }
         | 
| 87 | 
            +
                url = decodeURI(url);
         | 
| 88 | 
            +
                g(id).setAttribute("data-clipboard-text", url);
         | 
| 89 | 
            +
                var clipboard = new Clipboard('[data-clipboard-text]')
         | 
| 90 | 
            +
                clipboard.on('success', function (e) {
         | 
| 91 | 
            +
                    g('copyButton').innerHTML = '复制成功';
         | 
| 92 | 
            +
                });
         | 
| 93 | 
            +
            }
         |