\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nexport default {\n IMAGE: {\n actions: {\n submit: '.tiny_image_urlentrysubmit',\n imageBrowser: '.openimagebrowser',\n },\n elements: {\n form: 'form.tiny_image_form',\n alignSettings: '.tiny_image_button',\n alt: '.tiny_image_altentry',\n altWarning: '.tiny_image_altwarning',\n height: '.tiny_image_heightentry',\n width: '.tiny_image_widthentry',\n url: '.tiny_image_urlentry',\n urlWarning: '.tiny_image_urlwarning',\n size: '.tiny_image_size',\n presentation: '.tiny_image_presentation',\n constrain: '.tiny_image_constrain',\n customStyle: '.tiny_image_customstyle',\n preview: '.tiny_image_preview',\n previewBox: '.tiny_image_preview_box',\n },\n styles: {\n responsive: 'img-fluid',\n },\n },\n EMBED: {\n actions: {\n submit: '.tiny_media_submit',\n mediaBrowser: '.openmediabrowser',\n },\n elements: {\n form: 'form.tiny_media_form',\n source: '.tiny_media_source',\n track: '.tiny_media_track',\n mediaSource: '.tiny_media_media_source',\n linkSource: '.tiny_media_link_source',\n linkSize: '.tiny_media_link_size',\n posterSource: '.tiny_media_poster_source',\n posterSize: '.tiny_media_poster_size',\n displayOptions: '.tiny_media_display_options',\n name: '.tiny_media_name_entry',\n title: '.tiny_media_title_entry',\n url: '.tiny_media_url_entry',\n width: '.tiny_media_width_entry',\n height: '.tiny_media_height_entry',\n trackSource: '.tiny_media_track_source',\n trackKind: '.tiny_media_track_kind_entry',\n trackLabel: '.tiny_media_track_label_entry',\n trackLang: '.tiny_media_track_lang_entry',\n trackDefault: '.tiny_media_track_default',\n mediaControl: '.tiny_media_controls',\n mediaAutoplay: '.tiny_media_autoplay',\n mediaMute: '.tiny_media_mute',\n mediaLoop: '.tiny_media_loop',\n advancedSettings: '.tiny_media_advancedsettings',\n linkTab: 'li[data-medium-type=\"link\"]',\n videoTab: 'li[data-medium-type=\"video\"]',\n audioTab: 'li[data-medium-type=\"audio\"]',\n linkPane: '.tab-pane[data-medium-type=\"link\"]',\n videoPane: '.tab-pane[data-medium-type=\"video\"]',\n audioPane: '.tab-pane[data-medium-type=\"audio\"]',\n trackSubtitlesTab: 'li[data-track-kind=\"subtitles\"]',\n trackCaptionsTab: 'li[data-track-kind=\"captions\"]',\n trackDescriptionsTab: 'li[data-track-kind=\"descriptions\"]',\n trackChaptersTab: 'li[data-track-kind=\"chapters\"]',\n trackMetadataTab: 'li[data-track-kind=\"metadata\"]',\n trackSubtitlesPane: '.tab-pane[data-track-kind=\"subtitles\"]',\n trackCaptionsPane: '.tab-pane[data-track-kind=\"captions\"]',\n trackDescriptionsPane: '.tab-pane[data-track-kind=\"descriptions\"]',\n trackChaptersPane: '.tab-pane[data-track-kind=\"chapters\"]',\n trackMetadataPane: '.tab-pane[data-track-kind=\"metadata\"]',\n },\n mediaTypes: {\n link: 'LINK',\n video: 'VIDEO',\n audio: 'AUDIO',\n },\n trackKinds: {\n subtitles: 'SUBTITLES',\n captions: 'CAPTIONS',\n descriptions: 'DESCRIPTIONS',\n chapters: 'CHAPTERS',\n metadata: 'METADATA',\n },\n },\n};\n"],"names":["IMAGE","actions","submit","imageBrowser","elements","form","alignSettings","alt","altWarning","height","width","url","urlWarning","size","presentation","constrain","customStyle","preview","previewBox","styles","responsive","EMBED","mediaBrowser","source","track","mediaSource","linkSource","linkSize","posterSource","posterSize","displayOptions","name","title","trackSource","trackKind","trackLabel","trackLang","trackDefault","mediaControl","mediaAutoplay","mediaMute","mediaLoop","advancedSettings","linkTab","videoTab","audioTab","linkPane","videoPane","audioPane","trackSubtitlesTab","trackCaptionsTab","trackDescriptionsTab","trackChaptersTab","trackMetadataTab","trackSubtitlesPane","trackCaptionsPane","trackDescriptionsPane","trackChaptersPane","trackMetadataPane","mediaTypes","link","video","audio","trackKinds","subtitles","captions","descriptions","chapters","metadata"],"mappings":"sKAuBe,CACXA,MAAO,CACHC,QAAS,CACLC,OAAQ,6BACRC,aAAc,qBAElBC,SAAU,CACNC,KAAM,uBACNC,cAAe,qBACfC,IAAK,uBACLC,WAAY,yBACZC,OAAQ,0BACRC,MAAO,yBACPC,IAAK,uBACLC,WAAY,yBACZC,KAAM,mBACNC,aAAc,2BACdC,UAAW,wBACXC,YAAa,0BACbC,QAAS,sBACTC,WAAY,2BAEhBC,OAAQ,CACJC,WAAY,cAGpBC,MAAO,CACHpB,QAAS,CACLC,OAAQ,qBACRoB,aAAc,qBAElBlB,SAAU,CACNC,KAAM,uBACNkB,OAAQ,qBACRC,MAAO,oBACPC,YAAa,2BACbC,WAAY,0BACZC,SAAU,wBACVC,aAAc,4BACdC,WAAY,0BACZC,eAAgB,8BAChBC,KAAM,yBACNC,MAAO,0BACPrB,IAAK,wBACLD,MAAO,0BACPD,OAAQ,2BACRwB,YAAa,2BACbC,UAAW,+BACXC,WAAY,gCACZC,UAAW,+BACXC,aAAc,4BACdC,aAAc,uBACdC,cAAe,uBACfC,UAAW,mBACXC,UAAW,mBACXC,iBAAkB,+BAClBC,QAAS,8BACTC,SAAU,+BACVC,SAAU,+BACVC,SAAU,qCACVC,UAAW,sCACXC,UAAW,sCACXC,kBAAmB,kCACnBC,iBAAkB,iCAClBC,qBAAsB,qCACtBC,iBAAkB,iCAClBC,iBAAkB,iCAClBC,mBAAoB,yCACpBC,kBAAmB,wCACnBC,sBAAuB,4CACvBC,kBAAmB,wCACnBC,kBAAmB,yCAEvBC,WAAY,CACRC,KAAM,OACNC,MAAO,QACPC,MAAO,SAEXC,WAAY,CACRC,UAAW,YACXC,SAAU,WACVC,aAAc,eACdC,SAAU,WACVC,SAAU"}
\ No newline at end of file
diff --git a/lib/editor/tiny/plugins/media/amd/src/image.js b/lib/editor/tiny/plugins/media/amd/src/image.js
index 773f66ceb32..19c4f04f132 100644
--- a/lib/editor/tiny/plugins/media/amd/src/image.js
+++ b/lib/editor/tiny/plugins/media/amd/src/image.js
@@ -22,13 +22,12 @@
*/
import Templates from 'core/templates';
-import {getString, getStrings} from 'core/str';
+import {getString} from 'core/str';
import Pending from 'core/pending';
import {displayFilepicker} from 'editor_tiny/utils';
import Selectors from './selectors';
import ImageModal from './imagemodal';
import {getImagePermissions} from './options';
-import {component} from "./common";
import {getFilePicker} from 'editor_tiny/options';
export default class MediaImage {
@@ -43,7 +42,6 @@ export default class MediaImage {
editor = null;
currentModal = null;
selectedImage = null;
- imageAlignment = null;
constructor(editor) {
const permissions = getImagePermissions(editor);
@@ -71,57 +69,10 @@ export default class MediaImage {
await this.registerEventListeners();
}
- async getAlignmentTitles() {
- if (!this.alignmentTitles) {
- const [top, middle, bottom] = await getStrings([
- 'alignment_top',
- 'alignment_middle',
- 'alignment_bottom',
- ].map((key) => ({key, component})));
-
- this.alignmentTitles = {
- top,
- middle,
- bottom,
- };
- }
-
- return this.alignmentTitles;
- }
-
- async getImageAlignment(selected = '') {
- const titles = await this.getAlignmentTitles();
- const alignments = [
- {
- text: titles.top,
- value: 'align-top',
- },
- {
- text: titles.middle,
- value: 'align-middle',
- },
- {
- text: titles.bottom,
- value: 'align-bottom',
- },
- ];
-
- if (selected) {
- alignments.forEach((alignment, index, array) => {
- if (alignment.value === selected) {
- array[index].selected = true;
- }
- });
- }
-
- return alignments;
- }
-
async getTemplateContext(data) {
return {
elementid: this.editor.id,
showfilepicker: this.canShowFilePicker,
- alignoptions: await this.getImageAlignment(),
...data,
};
}
@@ -133,9 +84,6 @@ export default class MediaImage {
}
const properties = {...selectedImageProperties};
- if (properties.align) {
- properties.alignoptions = await this.getImageAlignment(properties.align);
- }
if (properties.src) {
properties.haspreview = true;
@@ -263,10 +211,6 @@ export default class MediaImage {
});
}
- getAlignmentClass(alignment) {
- return alignment;
- }
-
updateWarning() {
const urlError = this.hasErrorUrlField();
const imageAltError = this.hasErrorAltField();
@@ -287,10 +231,6 @@ export default class MediaImage {
classList.push(Selectors.IMAGE.styles.responsive);
}
- // Add the alignment class for the image.
- const alignment = this.getAlignmentClass(this.form.querySelector(Selectors.IMAGE.elements.alignment).value);
- classList.push(alignment);
-
return {
url: this.form.querySelector(Selectors.IMAGE.elements.url).value,
alt: this.form.querySelector(Selectors.IMAGE.elements.alt).value,
@@ -460,7 +400,6 @@ export default class MediaImage {
alt: null,
width: null,
height: null,
- align: '',
presentation: false,
};
@@ -481,7 +420,6 @@ export default class MediaImage {
};
// Get the current selection.
- this.removeLegacyAlignment(image);
this.selectedImage = image;
properties.customStyle = image.style.cssText;
@@ -496,11 +434,6 @@ export default class MediaImage {
properties.height = height;
}
- const alignment = this.getAlignmentProperties(image, properties);
- if (alignment) {
- properties.align = alignment.value;
- }
-
properties.src = image.getAttribute('src');
properties.alt = image.getAttribute('alt') || '';
properties.presentation = (image.getAttribute('role') === 'presentation');
@@ -508,53 +441,6 @@ export default class MediaImage {
return properties;
}
- removeLegacyAlignment(imageNode) {
- if (!imageNode.style.margin) {
- // There is no margin therefore this cannot match any known alignments.
- return imageNode;
- }
-
- Selectors.IMAGE.alignments.some(alignment => {
- if (imageNode.style[alignment.name] !== alignment.value) {
- // The name/value do not match. Skip.
- return false;
- }
- const normalisedNode = document.createElement('div');
- normalisedNode.style.margin = alignment.margin;
- if (imageNode.style.margin !== normalisedNode.style.margin) {
- // The margin does not match.
- return false;
- }
-
- imageNode.classList.add(this.getAlignmentClass(alignment.value));
- imageNode.style[alignment.name] = null;
- imageNode.style.margin = null;
-
- return true;
- });
-
- return imageNode;
- }
-
- getAlignmentProperties(image) {
- const currentAlignment = Selectors.IMAGE.alignments.find((alignment) => {
- if (image.classList.contains(this.getAlignmentClass(alignment.value))) {
- return true;
- }
-
- if (alignment.legacyValues) {
- return alignment.legacyValues.some((legacyValue) => image.classList.contains(legacyValue));
- }
-
- return false;
- });
- if (currentAlignment) {
- return currentAlignment;
- }
-
- return Selectors.IMAGE.alignments.find((alignment) => alignment.isDefault);
- }
-
getSelectedImage() {
const imgElm = this.editor.selection.getNode();
const figureElm = this.editor.dom.getParent(imgElm, 'figure.image');
diff --git a/lib/editor/tiny/plugins/media/amd/src/selectors.js b/lib/editor/tiny/plugins/media/amd/src/selectors.js
index 3b8f2d692d1..af039012a19 100644
--- a/lib/editor/tiny/plugins/media/amd/src/selectors.js
+++ b/lib/editor/tiny/plugins/media/amd/src/selectors.js
@@ -29,7 +29,6 @@ export default {
},
elements: {
form: 'form.tiny_image_form',
- alignment: '.tiny_image_alignment',
alignSettings: '.tiny_image_button',
alt: '.tiny_image_altentry',
altWarning: '.tiny_image_altwarning',
@@ -47,34 +46,6 @@ export default {
styles: {
responsive: 'img-fluid',
},
- alignments: [
- // Vertical alignment.
- {
- name: 'verticalAlign',
- value: 'align-top',
- margin: '0 0.5em',
- legacyValues: [
- 'atto_image_button_text-top',
- ],
- },
- {
- name: 'verticalAlign',
- value: 'align-middle',
- margin: '0 0.5em',
- legacyValues: [
- 'atto_image_button_middle',
- ],
- },
- {
- name: 'verticalAlign',
- value: 'align-bottom',
- margin: '0 0.5em',
- isDefault: true,
- legacyValues: [
- 'atto_image_button_text-bottom',
- ],
- },
- ],
},
EMBED: {
actions: {
diff --git a/lib/editor/tiny/plugins/media/lang/en/deprecated.txt b/lib/editor/tiny/plugins/media/lang/en/deprecated.txt
new file mode 100644
index 00000000000..cf139df359d
--- /dev/null
+++ b/lib/editor/tiny/plugins/media/lang/en/deprecated.txt
@@ -0,0 +1,6 @@
+alignment,tiny_media
+alignment_bottom,tiny_media
+alignment_left,tiny_media
+alignment_middle,tiny_media
+alignment_right,tiny_media
+alignment_top,tiny_media
\ No newline at end of file
diff --git a/lib/editor/tiny/plugins/media/lang/en/tiny_media.php b/lib/editor/tiny/plugins/media/lang/en/tiny_media.php
index 0d266132e91..41a5ab112fb 100644
--- a/lib/editor/tiny/plugins/media/lang/en/tiny_media.php
+++ b/lib/editor/tiny/plugins/media/lang/en/tiny_media.php
@@ -30,12 +30,6 @@ $string['addsource_help'] = 'You are recommended to provide an alternative media
$string['addsource'] = 'Add alternative source';
$string['addsubtitlestrack'] = 'Add subtitle track';
$string['advancedsettings'] = 'Advanced settings';
-$string['alignment_bottom'] = 'Bottom';
-$string['alignment_left'] = 'Left';
-$string['alignment_middle'] = 'Middle';
-$string['alignment_right'] = 'Right';
-$string['alignment_top'] = 'Top';
-$string['alignment'] = 'Alignment';
$string['audio'] = 'Audio';
$string['audiosourcelabel'] = 'Audio source URL';
$string['autoplay'] = 'Play automatically';
@@ -103,3 +97,11 @@ $string['videoheight'] = 'Video height';
$string['videosourcelabel'] = 'Video source URL';
$string['videowidth'] = 'Video width';
$string['width'] = 'Width';
+
+// Deprecated since Moodle 4.4.
+$string['alignment'] = 'Alignment';
+$string['alignment_bottom'] = 'Bottom';
+$string['alignment_left'] = 'Left';
+$string['alignment_middle'] = 'Middle';
+$string['alignment_right'] = 'Right';
+$string['alignment_top'] = 'Top';
\ No newline at end of file
diff --git a/lib/editor/tiny/plugins/media/templates/insert_image_modal.mustache b/lib/editor/tiny/plugins/media/templates/insert_image_modal.mustache
index 783f3b26e51..8245810621b 100644
--- a/lib/editor/tiny/plugins/media/templates/insert_image_modal.mustache
+++ b/lib/editor/tiny/plugins/media/templates/insert_image_modal.mustache
@@ -21,7 +21,14 @@
Example context (json):
{
-
+ "elementid": "exampleId",
+ "src": "https://moodle.org/logo.png",
+ "alt": "Image description",
+ "presentation": true,
+ "width": 600,
+ "height": 400,
+ "customStyle": "",
+ "haspreview": true
}
}}
{{< core/modal }}
@@ -85,14 +92,6 @@
-
-
-
-