mirror of
https://github.com/moodle/moodle.git
synced 2025-04-20 07:56:06 +02:00
MDL-76277 tiny_media: Limit image alignment to vertical align
Atto mixed vertical and horizontal alignment into a single selection, which does not make any sense. It also used CSS classes in such a way that those styles will break if/when Atto is removed. This commit: * removes the horizontal alignment from the dropdown - these are easily achieved using the existing Tiny UI * addresses a bug where existing styles (like horizontal alignment) were not preserved when editing the image * fixes a bug where the CSS selector was used instead of a CSS class name * recognises legacy TinyMCE class names and replaces these * switches from using random class names to using Bootstrap class utility classes for vertical alignment.
This commit is contained in:
parent
7c3188b2ca
commit
a68d9d5410
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,3 +1,3 @@
|
||||
define("tiny_media/selectors",["exports"],(function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;return _exports.default={IMAGE:{actions:{submit:".tiny_image_urlentrysubmit",imageBrowser:".openimagebrowser"},elements:{form:"form.tiny_image_form",alignment:".tiny_image_alignment",alignSettings:".tiny_image_button",alt:".tiny_image_altentry",altWarning:".tiny_image_altwarning",height:".tiny_image_heightentry",width:".tiny_image_widthentry",url:".tiny_image_urlentry",urlWarning:".tiny_image_urlwarning",size:".tiny_image_size",presentation:".tiny_image_presentation",constrain:".tiny_image_constrain",customStyle:".tiny_image_customstyle",preview:".tiny_image_preview",previewBox:".tiny_image_preview_box"},styles:{responsive:"img-fluid"},alignments:[{name:"verticalAlign",value:"text-top",margin:"0 0.5em"},{name:"verticalAlign",value:"middle",margin:"0 0.5em"},{name:"verticalAlign",value:"text-bottom",margin:"0 0.5em",isDefault:!0},{name:"float",value:"left",margin:"0 0.5em 0 0"},{name:"float",value:"right",margin:"0 0 0 0.5em"}]},EMBED:{actions:{submit:".tiny_media_submit",mediaBrowser:".openmediabrowser"},elements:{form:"form.tiny_media_form",source:".tiny_media_source",track:".tiny_media_track",mediaSource:".tiny_media_media_source",linkSource:".tiny_media_link_source",linkSize:".tiny_media_link_size",posterSource:".tiny_media_poster_source",posterSize:".tiny_media_poster_size",displayOptions:".tiny_media_display_options",name:".tiny_media_name_entry",title:".tiny_media_title_entry",url:".tiny_media_url_entry",width:".tiny_media_width_entry",height:".tiny_media_height_entry",trackSource:".tiny_media_track_source",trackKind:".tiny_media_track_kind_entry",trackLabel:".tiny_media_track_label_entry",trackLang:".tiny_media_track_lang_entry",trackDefault:".tiny_media_track_default",mediaControl:".tiny_media_controls",mediaAutoplay:".tiny_media_autoplay",mediaMute:".tiny_media_mute",mediaLoop:".tiny_media_loop",advancedSettings:".tiny_media_advancedsettings",linkTab:'li[data-medium-type="link"]',videoTab:'li[data-medium-type="video"]',audioTab:'li[data-medium-type="audio"]',linkPane:'.tab-pane[data-medium-type="link"]',videoPane:'.tab-pane[data-medium-type="video"]',audioPane:'.tab-pane[data-medium-type="audio"]',trackSubtitlesTab:'li[data-track-kind="subtitles"]',trackCaptionsTab:'li[data-track-kind="captions"]',trackDescriptionsTab:'li[data-track-kind="descriptions"]',trackChaptersTab:'li[data-track-kind="chapters"]',trackMetadataTab:'li[data-track-kind="metadata"]',trackSubtitlesPane:'.tab-pane[data-track-kind="subtitles"]',trackCaptionsPane:'.tab-pane[data-track-kind="captions"]',trackDescriptionsPane:'.tab-pane[data-track-kind="descriptions"]',trackChaptersPane:'.tab-pane[data-track-kind="chapters"]',trackMetadataPane:'.tab-pane[data-track-kind="metadata"]'},mediaTypes:{link:"LINK",video:"VIDEO",audio:"AUDIO"},trackKinds:{subtitles:"SUBTITLES",captions:"CAPTIONS",descriptions:"DESCRIPTIONS",chapters:"CHAPTERS",metadata:"METADATA"}}},_exports.default}));
|
||||
define("tiny_media/selectors",["exports"],(function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;return _exports.default={IMAGE:{actions:{submit:".tiny_image_urlentrysubmit",imageBrowser:".openimagebrowser"},elements:{form:"form.tiny_image_form",alignment:".tiny_image_alignment",alignSettings:".tiny_image_button",alt:".tiny_image_altentry",altWarning:".tiny_image_altwarning",height:".tiny_image_heightentry",width:".tiny_image_widthentry",url:".tiny_image_urlentry",urlWarning:".tiny_image_urlwarning",size:".tiny_image_size",presentation:".tiny_image_presentation",constrain:".tiny_image_constrain",customStyle:".tiny_image_customstyle",preview:".tiny_image_preview",previewBox:".tiny_image_preview_box"},styles:{responsive:"img-fluid"},alignments:[{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:!0,legacyValues:["atto_image_button_text-bottom"]}]},EMBED:{actions:{submit:".tiny_media_submit",mediaBrowser:".openmediabrowser"},elements:{form:"form.tiny_media_form",source:".tiny_media_source",track:".tiny_media_track",mediaSource:".tiny_media_media_source",linkSource:".tiny_media_link_source",linkSize:".tiny_media_link_size",posterSource:".tiny_media_poster_source",posterSize:".tiny_media_poster_size",displayOptions:".tiny_media_display_options",name:".tiny_media_name_entry",title:".tiny_media_title_entry",url:".tiny_media_url_entry",width:".tiny_media_width_entry",height:".tiny_media_height_entry",trackSource:".tiny_media_track_source",trackKind:".tiny_media_track_kind_entry",trackLabel:".tiny_media_track_label_entry",trackLang:".tiny_media_track_lang_entry",trackDefault:".tiny_media_track_default",mediaControl:".tiny_media_controls",mediaAutoplay:".tiny_media_autoplay",mediaMute:".tiny_media_mute",mediaLoop:".tiny_media_loop",advancedSettings:".tiny_media_advancedsettings",linkTab:'li[data-medium-type="link"]',videoTab:'li[data-medium-type="video"]',audioTab:'li[data-medium-type="audio"]',linkPane:'.tab-pane[data-medium-type="link"]',videoPane:'.tab-pane[data-medium-type="video"]',audioPane:'.tab-pane[data-medium-type="audio"]',trackSubtitlesTab:'li[data-track-kind="subtitles"]',trackCaptionsTab:'li[data-track-kind="captions"]',trackDescriptionsTab:'li[data-track-kind="descriptions"]',trackChaptersTab:'li[data-track-kind="chapters"]',trackMetadataTab:'li[data-track-kind="metadata"]',trackSubtitlesPane:'.tab-pane[data-track-kind="subtitles"]',trackCaptionsPane:'.tab-pane[data-track-kind="captions"]',trackDescriptionsPane:'.tab-pane[data-track-kind="descriptions"]',trackChaptersPane:'.tab-pane[data-track-kind="chapters"]',trackMetadataPane:'.tab-pane[data-track-kind="metadata"]'},mediaTypes:{link:"LINK",video:"VIDEO",audio:"AUDIO"},trackKinds:{subtitles:"SUBTITLES",captions:"CAPTIONS",descriptions:"DESCRIPTIONS",chapters:"CHAPTERS",metadata:"METADATA"}}},_exports.default}));
|
||||
|
||||
//# sourceMappingURL=selectors.min.js.map
|
File diff suppressed because one or more lines are too long
@ -75,20 +75,16 @@ export const MediaImage = class {
|
||||
|
||||
async getAlignmentTitles() {
|
||||
if (!this.alignmentTitles) {
|
||||
const [top, middle, bottom, left, right] = await getStrings([
|
||||
const [top, middle, bottom] = await getStrings([
|
||||
'alignment_top',
|
||||
'alignment_middle',
|
||||
'alignment_bottom',
|
||||
'alignment_left',
|
||||
'alignment_right',
|
||||
].map((key) => ({key, component})));
|
||||
|
||||
this.alignmentTitles = {
|
||||
top,
|
||||
middle,
|
||||
bottom,
|
||||
left,
|
||||
right,
|
||||
};
|
||||
}
|
||||
|
||||
@ -100,23 +96,15 @@ export const MediaImage = class {
|
||||
const alignments = [
|
||||
{
|
||||
text: titles.top,
|
||||
value: 'text-top'
|
||||
value: 'align-top',
|
||||
},
|
||||
{
|
||||
text: titles.middle,
|
||||
value: 'middle'
|
||||
value: 'align-middle',
|
||||
},
|
||||
{
|
||||
text: titles.bottom,
|
||||
value: 'text-bottom'
|
||||
},
|
||||
{
|
||||
text: titles.left,
|
||||
value: 'left'
|
||||
},
|
||||
{
|
||||
text: titles.right,
|
||||
value: 'right'
|
||||
value: 'align-bottom',
|
||||
},
|
||||
];
|
||||
|
||||
@ -132,11 +120,12 @@ export const MediaImage = class {
|
||||
}
|
||||
|
||||
async getTemplateContext(data) {
|
||||
return Object.assign({}, {
|
||||
return {
|
||||
elementid: this.editor.id,
|
||||
showfilepicker: this.canShowFilePicker,
|
||||
alignoptions: await this.getImageAlignment(),
|
||||
}, data);
|
||||
...data,
|
||||
};
|
||||
}
|
||||
|
||||
async getCurrentImageData() {
|
||||
@ -145,7 +134,7 @@ export const MediaImage = class {
|
||||
return {};
|
||||
}
|
||||
|
||||
const properties = Object.assign({}, selectedImageProperties);
|
||||
const properties = {...selectedImageProperties};
|
||||
if (properties.align) {
|
||||
properties.alignoptions = await this.getImageAlignment(properties.align);
|
||||
}
|
||||
@ -277,7 +266,7 @@ export const MediaImage = class {
|
||||
}
|
||||
|
||||
getAlignmentClass(alignment) {
|
||||
return `${Selectors.IMAGE.elements.alignSettings}_${alignment}`;
|
||||
return alignment;
|
||||
}
|
||||
|
||||
updateWarning() {
|
||||
@ -492,7 +481,7 @@ export const MediaImage = class {
|
||||
this.removeLegacyAlignment(image);
|
||||
this.selectedImage = image;
|
||||
|
||||
properties.customstyle = image.style;
|
||||
properties.customStyle = image.style.cssText;
|
||||
|
||||
const width = getImageWidth(image);
|
||||
if (width !== 0) {
|
||||
@ -546,7 +535,15 @@ export const MediaImage = class {
|
||||
|
||||
getAlignmentProperties(image) {
|
||||
const currentAlignment = Selectors.IMAGE.alignments.find((alignment) => {
|
||||
return image.classList.contains(this.getAlignmentClass(alignment.value));
|
||||
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;
|
||||
|
@ -51,33 +51,30 @@ export default {
|
||||
// Vertical alignment.
|
||||
{
|
||||
name: 'verticalAlign',
|
||||
value: 'text-top',
|
||||
margin: '0 0.5em'
|
||||
},
|
||||
{
|
||||
name: 'verticalAlign',
|
||||
value: 'middle',
|
||||
margin: '0 0.5em'
|
||||
},
|
||||
{
|
||||
name: 'verticalAlign',
|
||||
value: 'text-bottom',
|
||||
value: 'align-top',
|
||||
margin: '0 0.5em',
|
||||
isDefault: true
|
||||
},
|
||||
|
||||
// Floats.
|
||||
{
|
||||
name: 'float',
|
||||
value: 'left',
|
||||
margin: '0 0.5em 0 0'
|
||||
legacyValues: [
|
||||
'atto_image_button_text-top',
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'float',
|
||||
value: 'right',
|
||||
margin: '0 0 0 0.5em'
|
||||
}
|
||||
]
|
||||
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: {
|
||||
|
@ -28,7 +28,7 @@
|
||||
}}{{#width}} width="{{.}}"{{/width}}{{!
|
||||
}}{{#height}} height="{{.}}"{{/height}}{{!
|
||||
}}{{#presentation}} role="presentation"{{/presentation}}{{!
|
||||
}}{{#customstyle}} style="{{.}}"{{/customstyle}}{{!
|
||||
}}{{#customStyle}} style="{{.}}"{{/customStyle}}{{!
|
||||
}}{{#classlist}} class="{{.}}"{{/classlist}}{{!
|
||||
}}{{#id}} id="{{.}}"{{/id}}{{!
|
||||
}}/>
|
||||
|
@ -93,7 +93,7 @@
|
||||
{{/alignoptions}}
|
||||
</select>
|
||||
</div>
|
||||
<input type="hidden" class="tiny_image_customstyle" value="{{customstyle}}"/>
|
||||
<input type="hidden" class="tiny_image_customstyle" value="{{customStyle}}"/>
|
||||
<br/>
|
||||
<div class="mdl-align">
|
||||
<div class="tiny_image_preview_box">
|
||||
|
Loading…
x
Reference in New Issue
Block a user