Skip to content
Snippets Groups Projects
Commit a5f19efc authored by Andreas Fernandez's avatar Andreas Fernandez Committed by Daniel Goerz
Browse files

[BUGFIX] Set actionName for adding online media

The property `actionName` is added to the window message to allow adding
media from the "Add media by URL" again. To prevent such issues in
future, a new interface is introduced which renders `actionName`
mandatory.

Resolves: #90626
Releases: master
Change-Id: I925da0476f2f29bd9394c723369b68429e59b545
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63538


Tested-by: default avatarTYPO3com <noreply@typo3.com>
Tested-by: default avatarChristian Eßl <indy.essl@gmail.com>
Tested-by: default avatarDaniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: default avatarChristian Eßl <indy.essl@gmail.com>
Reviewed-by: default avatarDaniel Goerz <daniel.goerz@posteo.de>
parent 2758aa4f
Branches
Tags
No related merge requests found
......@@ -64,6 +64,7 @@ class OnlineMedia {
(data: Response): void => {
if (data.file) {
const message = {
actionName: 'typo3:foreignRelation:inserted',
objectGroup: irreObjectUid,
table: 'sys_file',
uid: data.file,
......
......@@ -11,6 +11,11 @@
* The TYPO3 project - inspiring people to share!
*/
interface Message {
actionName: string;
[key: string]: any;
}
export class MessageUtility {
/**
* Generates an URL for usage in postMessage
......@@ -34,7 +39,7 @@ export class MessageUtility {
* @param {*} message
* @param {Window} windowObject
*/
public static send(message: any, windowObject: Window = window): void {
public static send(message: Message, windowObject: Window = window): void {
windowObject.postMessage(message, MessageUtility.getOrigin());
}
}
......@@ -10,4 +10,4 @@
*
* The TYPO3 project - inspiring people to share!
*/
define(["require","exports","./Enum/KeyTypes","jquery","nprogress","./Modal","./Severity","TYPO3/CMS/Core/SecurityUtility","TYPO3/CMS/Backend/Utility/MessageUtility"],(function(e,t,i,a,n,r,o,l,s){"use strict";return new class{constructor(){this.securityUtility=new l,a(()=>{this.registerEvents()})}registerEvents(){const e=this;a(document).on("click",".t3js-online-media-add-btn",t=>{e.triggerModal(a(t.currentTarget))})}addOnlineMedia(e,t){const i=e.data("target-folder"),l=e.data("online-media-allowed"),d=e.data("file-irre-object");n.start(),a.post(TYPO3.settings.ajaxUrls.online_media_create,{url:t,targetFolder:i,allowed:l},e=>{if(e.file){const t={objectGroup:d,table:"sys_file",uid:e.file};s.MessageUtility.send(t)}else{const t=r.confirm("ERROR",e.error,o.error,[{text:TYPO3.lang["button.ok"]||"OK",btnClass:"btn-"+o.getCssClass(o.error),name:"ok",active:!0}]).on("confirm.button.ok",()=>{t.modal("hide")})}n.done()})}triggerModal(e){const t=e.data("btn-submit")||"Add",n=e.data("placeholder")||"Paste media url here...",l=a.map(e.data("online-media-allowed").split(","),e=>'<span class="label label-success">'+this.securityUtility.encodeHtml(e.toUpperCase(),!1)+"</span>"),s=e.data("online-media-allowed-help-text")||"Allow to embed from sources:",d=a("<div>").attr("class","form-control-wrap").append([a("<input>").attr("type","text").attr("class","form-control online-media-url").attr("placeholder",n),a("<div>").attr("class","help-block").html(this.securityUtility.encodeHtml(s,!1)+"<br>"+l.join(" "))]),c=r.show(e.attr("title"),d,o.notice,[{text:t,btnClass:"btn btn-primary",name:"ok",trigger:()=>{const t=c.find("input.online-media-url").val();t&&(c.modal("hide"),this.addOnlineMedia(e,t))}}]);c.on("shown.bs.modal",e=>{a(e.currentTarget).find("input.online-media-url").first().focus().on("keydown",e=>{e.keyCode===i.KeyTypesEnum.ENTER&&c.find('button[name="ok"]').trigger("click")})})}}}));
\ No newline at end of file
define(["require","exports","./Enum/KeyTypes","jquery","nprogress","./Modal","./Severity","TYPO3/CMS/Core/SecurityUtility","TYPO3/CMS/Backend/Utility/MessageUtility"],(function(e,t,i,n,a,r,o,l,s){"use strict";return new class{constructor(){this.securityUtility=new l,n(()=>{this.registerEvents()})}registerEvents(){const e=this;n(document).on("click",".t3js-online-media-add-btn",t=>{e.triggerModal(n(t.currentTarget))})}addOnlineMedia(e,t){const i=e.data("target-folder"),l=e.data("online-media-allowed"),d=e.data("file-irre-object");a.start(),n.post(TYPO3.settings.ajaxUrls.online_media_create,{url:t,targetFolder:i,allowed:l},e=>{if(e.file){const t={actionName:"typo3:foreignRelation:inserted",objectGroup:d,table:"sys_file",uid:e.file};s.MessageUtility.send(t)}else{const t=r.confirm("ERROR",e.error,o.error,[{text:TYPO3.lang["button.ok"]||"OK",btnClass:"btn-"+o.getCssClass(o.error),name:"ok",active:!0}]).on("confirm.button.ok",()=>{t.modal("hide")})}a.done()})}triggerModal(e){const t=e.data("btn-submit")||"Add",a=e.data("placeholder")||"Paste media url here...",l=n.map(e.data("online-media-allowed").split(","),e=>'<span class="label label-success">'+this.securityUtility.encodeHtml(e.toUpperCase(),!1)+"</span>"),s=e.data("online-media-allowed-help-text")||"Allow to embed from sources:",d=n("<div>").attr("class","form-control-wrap").append([n("<input>").attr("type","text").attr("class","form-control online-media-url").attr("placeholder",a),n("<div>").attr("class","help-block").html(this.securityUtility.encodeHtml(s,!1)+"<br>"+l.join(" "))]),c=r.show(e.attr("title"),d,o.notice,[{text:t,btnClass:"btn btn-primary",name:"ok",trigger:()=>{const t=c.find("input.online-media-url").val();t&&(c.modal("hide"),this.addOnlineMedia(e,t))}}]);c.on("shown.bs.modal",e=>{n(e.currentTarget).find("input.online-media-url").first().focus().on("keydown",e=>{e.keyCode===i.KeyTypesEnum.ENTER&&c.find('button[name="ok"]').trigger("click")})})}}}));
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment