diff --git a/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/OnlineMedia.ts b/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/OnlineMedia.ts index 94b8d89461322fd65a6cc716fcf730514300ae12..0b391368b356c87dbebd6c9e6cb4f0b638ec9d8b 100644 --- a/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/OnlineMedia.ts +++ b/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/OnlineMedia.ts @@ -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, diff --git a/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/Utility/MessageUtility.ts b/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/Utility/MessageUtility.ts index 07aa65642c890c0eadfff88a30e0217235f55e51..c3e2103b0e429f543b49c4aceea95b8c64d949e9 100644 --- a/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/Utility/MessageUtility.ts +++ b/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/Utility/MessageUtility.ts @@ -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()); } } diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/OnlineMedia.js b/typo3/sysext/backend/Resources/Public/JavaScript/OnlineMedia.js index 4dca8510548ab6b51fa9cf544c02d4312806239c..4af0d31c5c05daa7d52199e77fd4c61a7cfcd2dd 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/OnlineMedia.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/OnlineMedia.js @@ -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