Skip to content

Commit f932600

Browse files
committed
Bugfixes
1 parent 6acd635 commit f932600

File tree

7 files changed

+342
-208
lines changed

7 files changed

+342
-208
lines changed

js/classes/media.js

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,21 @@ export default class Media {
77
}
88
}
99

10-
constructor({data}) {
10+
constructor({ data }) {
1111
this.data = data || {}
1212
this.wrapper = undefined
1313
this.selection = undefined
1414
this.name = ''
1515

1616
const self = this
1717

18-
Event.$on('media-field-updated', function(data) {
19-
if(data.name == self.name) {
18+
Event.$on('media-field-updated', function (data) {
19+
if (data.name == self.name) {
2020
self.data.media = data.selected
2121

2222
self.createSelection()
23+
24+
Event.$emit('editor-content-updated')
2325
}
2426
})
2527
}
@@ -40,26 +42,26 @@ export default class Media {
4042
return this.wrapper
4143
}
4244

43-
save() {
45+
save(blockContent) {
4446
return {
45-
media: ((this.data && this.data.media) ? this.data.media: [])
47+
media: ((this.data && this.data.media) ? this.data.media : [])
4648
}
4749
}
4850

4951
createSelection() {
5052
this.selection.innerHTML = ''
51-
52-
if(this.data && this.data.media && this.data.media.length > 0) {
53-
if(this.data.media.length == 1) {
53+
54+
if (this.data && this.data.media && this.data.media.length > 0) {
55+
if (this.data.media.length == 1) {
5456
const medium = this.data.media[0]
5557

56-
if(medium.type == 'image') {
58+
if (medium.type == 'image') {
5759
const image = document.createElement('img')
5860
image.setAttribute('src', medium.public_url)
5961

6062
this.selection.className = 'editor-field-media__selection mb-sm'
6163
this.selection.appendChild(image)
62-
} else if(medium.type == 'embed' && medium.metadata.code && medium.metadata.code.html) {
64+
} else if (medium.type == 'embed' && medium.metadata.code && medium.metadata.code.html) {
6365
this.selection.className = 'editor-field-media__selection mb-sm'
6466
this.selection.innerHTML = (medium.metadata.code && medium.metadata.code.html ? medium.metadata.code.html : '')
6567
} else {
@@ -98,11 +100,11 @@ export default class Media {
98100

99101
const self = this
100102

101-
this.data.media.forEach(function(medium) {
103+
this.data.media.forEach(function (medium) {
102104
const slide = document.createElement('li')
103105
slide.className = 'multiple-media__slide'
104106

105-
if(medium.thumbnail_url) {
107+
if (medium.thumbnail_url) {
106108
const image = document.createElement('img')
107109
image.className = 'multiple-media__image'
108110
image.setAttribute('src', medium.thumbnail_url)
@@ -136,7 +138,7 @@ export default class Media {
136138
heading.appendChild(document.createTextNode(trans.get('media::media.no_media_selected')))
137139
emptyPrompt.appendChild(heading)
138140

139-
if(!this.readOnly) {
141+
if (!this.readOnly) {
140142
const subheading = document.createElement('p')
141143
subheading.className = 'is-size-8 has-color-grey'
142144
subheading.appendChild(document.createTextNode(trans.get('media::media.select_from_library')))
@@ -149,7 +151,7 @@ export default class Media {
149151
}
150152

151153
_createButton() {
152-
if(this.readOnly) return
154+
if (this.readOnly) return
153155

154156
const button = document.createElement('button')
155157
button.className = 'button is-light is-uppercase'
@@ -165,12 +167,12 @@ export default class Media {
165167
iconOuter.className = 'icon-flap'
166168
iconOuter.appendChild(icon)
167169
button.appendChild(iconOuter)
168-
170+
169171
button.appendChild(buttonText)
170172

171173
const self = this
172174

173-
button.addEventListener('click', function() {
175+
button.addEventListener('click', function () {
174176
const selected = ((self.data && self.data.media && self.data.media != '') ? self.data.media : [])
175177

176178
const name = Math.random().toString(36).substring(7)
@@ -190,5 +192,5 @@ export default class Media {
190192
_thumbnailIcon(type) {
191193
return 'fas fa-3x fa-' + (type == 'document' ? 'file' : 'file-' + type)
192194
}
193-
195+
194196
}

js/components/Datable.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
</div>
7373

7474
<div :class="paginationinverted == undefined || paginationinverted ? 'datable-footer has-background-primary' : 'datable-footer has-background-white-ter'">
75-
<Pagination v-if="totalPages > 1 && !searchmode" :total="totalPages" :current="page" :sortkey="sortKey" :route="route" :sortdir="sortDir" :inverted="paginationinverted"/>
75+
<Pagination v-if="totalPages > 1 && !searchmode" :total="totalPages" :current="page" :sortkey="sortKey" :filterkey="filterKey" :route="route" :sortdir="sortDir" :inverted="paginationinverted"/>
7676

7777
<div class="has-text-centered pt-sm pb-sm" v-if="searchmode">
7878
<router-link class="has-color-white is-uppercase has-text-weight-bold is-size-7" :to="{ name: route }"><i class="icon fas fa-long-arrow-alt-left"></i> {{ trans.get(alllabel) }}</router-link>

js/components/fields/DatetimeField.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,13 @@ export default {
3737
data() {
3838
return {
3939
displayPicker: false,
40-
date: (this.value != '' && this.value != null ? new Date(this.value.replace(/ /g, "T")) : new Date())
40+
date: (this.value != '' && this.value != null ? new Date(this.value.replace(/ /g, "T")) : null)
4141
}
4242
},
4343
computed: {
4444
readableDate() {
45+
if(this.date == null) return null;
46+
4547
const tzoffset = (new Date()).getTimezoneOffset() * 60000
4648
return (new Date(this.date - tzoffset)).toISOString().replace('T', ' ').substring(0, this.date.toISOString().length - 5)
4749
}
@@ -51,8 +53,7 @@ export default {
5153
},
5254
watch: {
5355
value(to) {
54-
this.date = (to != '' && to != null ? new Date(to.replace(/ /g, "T")) : new Date())
55-
this.updateDate()
56+
this.date = (to != '' && to != null ? new Date(to.replace(/ /g, "T")) : null)
5657
}
5758
},
5859
methods: {

js/components/fields/SelectField.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<div class="control">
55
<div :class="errors.has(translatable ? name + '.' + locale : name) ? 'select is-fullwidth is-danger' : 'select is-fullwidth'">
66
<select :name="name" :required="options.required" :readonly="readonly" :disabled="readonly" @input="$emit('input', $event.target.value)">
7-
<option v-text="trans.get('foundation::general.choose_one')"></option>
7+
<option v-text="trans.get('foundation::general.choose_one')" value=""></option>
88
<option v-for="option in options.choices" :value="option.value" v-text="option.label" :selected="value == option.value"></option>
99
</select>
1010
</div>

js/components/fields/TextEditorField.vue

Lines changed: 71 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,17 @@ import Underline from '@editorjs/underline'
3131
import Warning from '@editorjs/warning'
3232
import Hyperlink from 'editorjs-hyperlink'
3333
import Style from 'editorjs-style'
34-
import Undo from 'editorjs-undo'
3534
3635
import Media from '../../classes/media'
3736
3837
export default {
39-
mixins: [ Field ],
40-
data() { return {
41-
editor: null,
42-
data: this.value || {}
43-
}},
38+
mixins: [Field],
39+
data() {
40+
return {
41+
editor: null,
42+
data: this.value || {}
43+
}
44+
},
4445
created() {
4546
const self = this
4647
@@ -49,8 +50,11 @@ export default {
4950
holder: self.name + '_' + self.locale,
5051
data: self.data,
5152
onReady() {
52-
const undo = new Undo({ editor })
53-
undo.initialize(self.data)
53+
Event.$on('editor-content-updated', function (data) {
54+
editor.save().then(savedData => {
55+
self.$emit('input', savedData)
56+
})
57+
})
5458
},
5559
onChange() {
5660
editor.save().then(savedData => {
@@ -120,67 +124,69 @@ export default {
120124
hyperlink: Hyperlink,
121125
style: Style
122126
},
123-
i18n: { messages: {
124-
toolNames: {
125-
'Text': self.$root.trans.get('foundation::general.e_text'),
126-
'Heading': self.$root.trans.get('foundation::general.e_heading'),
127-
'Quote': self.$root.trans.get('foundation::general.e_quote'),
128-
'List': self.$root.trans.get('foundation::general.e_list'),
129-
'Checklist': self.$root.trans.get('foundation::general.e_checklist'),
130-
'Delimiter': self.$root.trans.get('foundation::general.e_delimiter'),
131-
'Media': self.$root.trans.get('foundation::general.e_media'),
132-
'Image': self.$root.trans.get('foundation::general.e_image'),
133-
'Embed': self.$root.trans.get('foundation::general.e_embed'),
134-
'Table': self.$root.trans.get('foundation::general.e_table'),
135-
'Warning': self.$root.trans.get('foundation::general.e_warning'),
136-
'Code': self.$root.trans.get('foundation::general.e_code'),
137-
'Raw HTML': self.$root.trans.get('foundation::general.e_raw'),
138-
'InlineCode': self.$root.trans.get('foundation::general.e_inlinecode'),
139-
'Marker': self.$root.trans.get('foundation::general.e_marker'),
140-
'Underline': self.$root.trans.get('foundation::general.e_underline'),
141-
'Hyperlink': self.$root.trans.get('foundation::general.e_hyperlink'),
142-
'Style': self.$root.trans.get('foundation::general.e_style'),
143-
'Bold': self.$root.trans.get('foundation::general.e_bold'),
144-
'Italic': self.$root.trans.get('foundation::general.e_italic')
145-
},
146-
ui: {
147-
'blockTunes': {
148-
'toggler': {
149-
'Click to tune': self.$root.trans.get('foundation::general.e_click_to_tune'),
150-
'Move up': self.$root.trans.get('foundation::general.e_moveup'),
151-
'Move down': self.$root.trans.get('foundation::general.e_movedown'),
152-
}
127+
i18n: {
128+
messages: {
129+
toolNames: {
130+
'Text': self.$root.trans.get('foundation::general.e_text'),
131+
'Heading': self.$root.trans.get('foundation::general.e_heading'),
132+
'Quote': self.$root.trans.get('foundation::general.e_quote'),
133+
'List': self.$root.trans.get('foundation::general.e_list'),
134+
'Checklist': self.$root.trans.get('foundation::general.e_checklist'),
135+
'Delimiter': self.$root.trans.get('foundation::general.e_delimiter'),
136+
'Media': self.$root.trans.get('foundation::general.e_media'),
137+
'Image': self.$root.trans.get('foundation::general.e_image'),
138+
'Embed': self.$root.trans.get('foundation::general.e_embed'),
139+
'Table': self.$root.trans.get('foundation::general.e_table'),
140+
'Warning': self.$root.trans.get('foundation::general.e_warning'),
141+
'Code': self.$root.trans.get('foundation::general.e_code'),
142+
'Raw HTML': self.$root.trans.get('foundation::general.e_raw'),
143+
'InlineCode': self.$root.trans.get('foundation::general.e_inlinecode'),
144+
'Marker': self.$root.trans.get('foundation::general.e_marker'),
145+
'Underline': self.$root.trans.get('foundation::general.e_underline'),
146+
'Hyperlink': self.$root.trans.get('foundation::general.e_hyperlink'),
147+
'Style': self.$root.trans.get('foundation::general.e_style'),
148+
'Bold': self.$root.trans.get('foundation::general.e_bold'),
149+
'Italic': self.$root.trans.get('foundation::general.e_italic')
153150
},
154-
'inlineToolbar': {
155-
'converter': {
156-
'Convert to': self.$root.trans.get('foundation::general.e_convert_to')
151+
ui: {
152+
'blockTunes': {
153+
'toggler': {
154+
'Click to tune': self.$root.trans.get('foundation::general.e_click_to_tune'),
155+
'Move up': self.$root.trans.get('foundation::general.e_moveup'),
156+
'Move down': self.$root.trans.get('foundation::general.e_movedown'),
157+
}
158+
},
159+
'inlineToolbar': {
160+
'converter': {
161+
'Convert to': self.$root.trans.get('foundation::general.e_convert_to')
162+
}
163+
},
164+
'toolbar': {
165+
'toolbox': {
166+
'Add': self.$root.trans.get('foundation::general.add')
167+
}
157168
}
158169
},
159-
'toolbar': {
160-
'toolbox': {
161-
'Add': self.$root.trans.get('foundation::general.add')
170+
blockTunes: {
171+
'delete': {
172+
'Delete': self.$root.trans.get('foundation::general.delete')
173+
},
174+
'moveUp': {
175+
'Move up': self.$root.trans.get('foundation::general.e_moveup')
176+
},
177+
'moveDown': {
178+
'Move down': self.$root.trans.get('foundation::general.e_movedown')
162179
}
163-
}
164-
},
165-
blockTunes: {
166-
'delete': {
167-
'Delete': self.$root.trans.get('foundation::general.delete')
168-
},
169-
'moveUp': {
170-
'Move up': self.$root.trans.get('foundation::general.e_moveup')
171180
},
172-
'moveDown': {
173-
'Move down': self.$root.trans.get('foundation::general.e_movedown')
174-
}
175-
},
176-
tools: {
177-
'hyperlink': {
178-
'Save': self.$root.trans.get('foundation::general.save'),
179-
'Select target': self.$root.trans.get('foundation::general.e_select_target'),
180-
'Select rel': self.$root.trans.get('foundation::general.e_select_rel')
181+
tools: {
182+
'hyperlink': {
183+
'Save': self.$root.trans.get('foundation::general.save'),
184+
'Select target': self.$root.trans.get('foundation::general.e_select_target'),
185+
'Select rel': self.$root.trans.get('foundation::general.e_select_rel')
186+
}
181187
}
182188
}
183-
}}
189+
}
184190
})
185191
186192
self.editor = editor
@@ -190,13 +196,13 @@ export default {
190196
methods: {
191197
refreshValue(data) {
192198
this.editor.clear()
193-
this.data = (data || {blocks:[]})
199+
this.data = (data || { blocks: [] })
194200
this.editor.render(this.data)
195201
this.editor.focus(true)
196202
},
197203
listenerTexteditor(data) {
198-
if(data[this.name] != undefined) {
199-
if(this.locale != '' && this.locale != undefined) {
204+
if (data[this.name] != undefined) {
205+
if (this.locale != '' && this.locale != undefined) {
200206
this.refreshValue(data[this.name][this.locale])
201207
} else {
202208
this.refreshValue(data[this.name])

0 commit comments

Comments
 (0)