Skip to content

Commit 59c361c

Browse files
committed
Merge branch 'master' of github.com:hinesboy/mavonEditor
2 parents c1549bf + 2cfdb10 commit 59c361c

File tree

9 files changed

+50
-25
lines changed

9 files changed

+50
-25
lines changed

README-EN.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ exports default {
123123
| code_style | String | code-github | markdown Style: default github, [option hljs color scheme](./src/lib/core/hljs/lang.hljs.css.js) |
124124
| toolbarsFlag | Boolean | true | Show toolbars |
125125
| toolbars | Object | As in the following example | toolbars |
126-
| ishljs | Boolean | true | highlight code switch(cdn) |
126+
| ishljs | Boolean | true | highlight code switch |
127+
| image_filter | Function | null | Image file filter Function, params is a `File Object`, you should return `Boolean` about the test result |
127128

128129
```javascript
129130
/*

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ exports default {
130130
| code_style | String | code-github | markdown样式: 默认github, [可选配色方案](./src/lib/core/hljs/lang.hljs.css.js) |
131131
| toolbarsFlag | Boolean | true | 工具栏是否显示 |
132132
| toolbars | Object | 如下例 | 工具栏 |
133-
| ishljs | Boolean | true | 代码高亮(cdn外链) |
133+
| ishljs | Boolean | true | 代码高亮 |
134+
| image_filter | function | null | 图片过滤函数,参数为一个`File Object`,要求返回一个`Boolean`, `true`表示文件合法,`false`表示文件不合法 |
134135

135136
```javascript
136137
/*

dist/mavon-editor.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

doc/cn/upload-images.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ exports default {
118118
### 图片事件
119119
| name 方法名 | params 参数 | describe 描述 |
120120
| ---------------- | :-----------------------------: | ---------------------------------------- |
121-
| $vm.$refs.toolbar_left.$imgDelByFilename(>=**2.1.6**) | String: filename | 主动删除对应图片文件, 如果成功返回TRUE,否则返回FALSE |
121+
| $vm.$refs.toolbar_left.$imgDelByFilename(>=**2.1.6**) | String: filename | 主动删除对应图片文件, 如果成功返回TRUE,否则返回FALSE, (并将其从 `md` 源码中删除 (>=**2.4.16**)) |
122122
| $vm.$refs.toolbar_left.$imgAddByFilename(>=**2.1.6**) | String: filename, File: file | 添加对应图片文件,文件别名为filename(filename 必须为 ./filename 样式), 如果成功返回TRUE,否则返回FALSE |
123123
| $vm.$refs.toolbar_left.$imgUpdateByFilename(>=**2.1.6**) | String: filename, File: file | 更新对应文件名的图片文件(filename 必须为 ./filename 样式), 如果成功返回TRUE,否则返回FALSE |
124124
| $vm.$imgUpdateByUrl(>=**2.1.5**) | String: filename, String: url | 将<img>标签src相对路径值替换为url(如./0 -> http://path/to/png/some.png) |
@@ -129,5 +129,3 @@ exports default {
129129
**注意**: `$vm`指为`mavonEditor`实例,可以通过如下两种方式获取
130130
1. 通过引入对象获取: `import {mavonEditor} from ...` 等方式引入后,此时`$vm`即为`mavonEditor`
131131
2. 通过$refs获取: html声明ref : `<mavon-editor ref=md ></mavon-editor>, 此时`$vm``this.$refs.md`
132-
133-

doc/en/upload-images.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ exports default {
115115
### image methods
116116
| name | params | describe |
117117
| ---------------- | :-----------------------------: | ---------------------------------------- |
118-
| $vm.$refs.toolbar_left.$imgDelByFilename(>=**2.1.6**) | String: filename | Delete the image by filename, return true if sucess, false otherwise |
118+
| $vm.$refs.toolbar_left.$imgDelByFilename(>=**2.1.6**) | String: filename | Delete the image by filename, return true if sucess, false otherwise, (and it will remove from `md` (>=**2.4.16**)) |
119119
| $vm.$refs.toolbar_left.$imgAddByFilename(>=**2.1.6**) | String: filename, File: file | Add the image by filename (The filename alias style must be "./filename"), return true if sucess, false otherwise |
120120
| $vm.$refs.toolbar_left.$imgUpdateByFilename(>=**2.1.6**) | String: filename, File: file | Update the image by filename(The filename alias style must be "./filename"), return true if sucess, false otherwise |
121121
| $vm.$imgUpdateByUrl(>=**2.1.6**) | String: filename, String: url | Update filename to url(example: ./0 -> http://path/to/png/some.png) |
@@ -126,5 +126,3 @@ exports default {
126126
**Notice**: `$vm` => reference instance of component, you can get it:
127127
1. `import {mavonEditor} from ...`: `$vm` == `mavonEditor`
128128
2. `<mavon-editor ref=md ></mavon-editor>: `$vm` == `this.$refs.md`
129-
130-

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mavon-editor",
3-
"version": "2.4.15",
3+
"version": "2.4.16",
44
"description": "Vue markdown editor",
55
"main": "dist/mavon-editor.js",
66
"scripts": {

src/components/s-md-toolbar-left.vue

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
<div class="op-image popup-dropdown" v-show="s_img_dropdown_open">
5858
<div class="dropdown-item" @click.stop="$toggle_imgLinkAdd('imagelink')" title="ctrl+alt+l"><span>{{d_words.tl_image}}</span></div>
5959
<div class="dropdown-item" style="overflow: hidden">
60-
<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" @change="$imgAdd($event)" :key="img_file[0][0]"/>{{d_words.tl_upload}}
60+
<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" @change="$imgAdd($event)" :key="img_file[0][0]" multiple="multiple"/>{{d_words.tl_upload}}
6161
</div>
6262

6363
<div class="dropdown-item dropdown-images" v-if="index > 0" v-for="(item, index) in img_file" @click.stop="$imgFileListClick(index)">
@@ -128,6 +128,10 @@
128128
d_words: {
129129
type: Object,
130130
required: true
131+
},
132+
image_filter: {
133+
type: Function,
134+
default: null,
131135
}
132136
},
133137
data() {
@@ -166,9 +170,19 @@
166170
this.num = this.num + 1;
167171
this.$emit('imgAdd', this.img_file[1][0], $file);
168172
},
173+
$imgFilesAdd($files) {
174+
// valid means if the image_filter exist.
175+
let valid = (typeof this.image_filter == 'function');
176+
for(let i = 0;i < $files.length;i++) {
177+
if(valid && this.image_filter($files[i]) === true) {
178+
this.$imgFileAdd($files[i]);
179+
} else if(!valid && $files[i].type.match(/^image\//i)) {
180+
this.$imgFileAdd($files[i]);
181+
}
182+
}
183+
},
169184
$imgAdd($e) {
170-
// 新增加
171-
this.$imgFileAdd($e.target.files[0]);
185+
this.$imgFilesAdd($e.target.files);
172186
},
173187
$imgDel(pos) {
174188
this.$emit('imgDel', this.img_file[pos]);
@@ -179,8 +193,7 @@
179193
var pos = 0;
180194
while (this.img_file.length > pos) {
181195
if (this.img_file[pos][0] == filename) {
182-
this.$emit('imgDel', filename);
183-
this.img_file.splice(pos, 1);
196+
this.$imgDel(pos);
184197
return true;
185198
}
186199
pos += 1;

src/dev/app.vue

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,13 @@
1818
</h2>
1919
<button @click="uploadimg">upload</button>
2020
<button @click="imgreplace">imgreplace</button>
21+
<input type="text" v-model="imgName" />
22+
<button @click="imgdelete">delete</button>
2123
<mavon-editor ref=md :subfield="subfield" :toolbarsFlag="toolbarsFlag" :editable="editable"
2224
:language="d_language" @change="change" @save="saveone" :ishljs="true" class="item-editor" v-model="help1"
2325
:external_link="external_link"
24-
@imgAdd="$imgAdd" @imgDel="$imgDel" @subfieldtoggle="$subfieldtoggle" @previewtoggle="$previewtoggle"></mavon-editor>
26+
@imgAdd="$imgAdd" @imgDel="$imgDel" @subfieldtoggle="$subfieldtoggle" @previewtoggle="$previewtoggle"
27+
:image_filter="image_filter"></mavon-editor>
2528

2629
<button ref="diy" type="button" @click="$click('selftest')" class="op-icon fa fa-mavon-align-left"
2730
aria-hidden="true" title="自定义"></button>
@@ -119,7 +122,13 @@
119122
preview: true, // 预览
120123
/* 1.4.2 */
121124
navigation: true, // 导航目录
122-
}
125+
},
126+
image_filter: function($files) {
127+
console.log('image_filter files:', $files);
128+
// console.log('here for you', $files);
129+
return true;
130+
},
131+
imgName: '',
123132
}
124133
},
125134
created () {
@@ -218,6 +227,11 @@
218227
},
219228
$previewtoggle(flag , value) {
220229
console.log('preview toggle' + flag)
230+
},
231+
imgdelete() {
232+
var md = this.$refs.md;
233+
var toolbar_left = md.$refs.toolbar_left;
234+
toolbar_left.$imgDelByFilename(this.imgName);
221235
}
222236
},
223237
watch: {

src/mavon-editor.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<div class="v-note-op" v-show="toolbarsFlag">
55
<s-md-toolbar-left ref="toolbar_left" :editable="editable" :d_words="d_words"
66
@toolbar_left_click="toolbar_left_click" @toolbar_left_addlink="toolbar_left_addlink" :toolbars="toolbars"
7-
@imgAdd="$imgAdd" @imgDel="$imgDel" @imgTouch="$imgTouch"/>
7+
@imgAdd="$imgAdd" @imgDel="$imgDel" @imgTouch="$imgTouch" :image_filter="image_filter"/>
88
<s-md-toolbar-right ref="toolbar_right" :d_words="d_words" @toolbar_right_click="toolbar_right_click"
99
:toolbars="toolbars"
1010
:s_subfield="s_subfield"
@@ -168,6 +168,10 @@
168168
type: [Object, Boolean],
169169
default: true
170170
},
171+
image_filter: {
172+
type: Function,
173+
default: null,
174+
}
171175
},
172176
data() {
173177
return {
@@ -317,11 +321,7 @@
317321
var files = dataTransfer.files;
318322
if (files.length > 0) {
319323
$e.preventDefault();
320-
for (var i = 0; i < files.length; i++) {
321-
if(files[i].type.match(/^image\//i)) {
322-
this.$refs.toolbar_left.$imgFileAdd(files[i]);
323-
}
324-
}
324+
this.$refs.toolbar_left.$imgFilesAdd(files);
325325
}
326326
}
327327
},
@@ -338,9 +338,9 @@
338338
break;
339339
}
340340
}
341-
if (item && item.kind === 'file' && item.type.match(/^image\//i)) {
341+
if (item && item.kind === 'file') {
342342
var oFile = item.getAsFile();
343-
this.$refs.toolbar_left.$imgFileAdd(oFile);
343+
this.$refs.toolbar_left.$imgFilesAdd([oFile,]);
344344
}
345345
}
346346
},

0 commit comments

Comments
 (0)