From 314333b46b4f182b02db621883179f7449969982 Mon Sep 17 00:00:00 2001 From: Andreas Fernandez <a.fernandez@scripting-base.de> Date: Fri, 17 Apr 2020 19:40:53 +0200 Subject: [PATCH] [BUGFIX] Don't update language icon if not in language mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The page module now doesn't try to update the flag icon of a dragged record if the page module is not in "language" mode as the required information is not available. Resolves: #91096 Related: #90693 Releases: master Change-Id: I1c796a6f4b00761f3310335cf45256d75a7e3bc5 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64218 Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Richard Haeser <richard@maxserv.com> Tested-by: Markus Klein <markus.klein@typo3.org> Tested-by: Christian Eßl <indy.essl@gmail.com> Reviewed-by: Richard Haeser <richard@maxserv.com> Reviewed-by: Markus Klein <markus.klein@typo3.org> Reviewed-by: Christian Eßl <indy.essl@gmail.com> --- .../Resources/Public/TypeScript/LayoutModule/DragDrop.ts | 4 ++++ .../Resources/Public/JavaScript/LayoutModule/DragDrop.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/LayoutModule/DragDrop.ts b/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/LayoutModule/DragDrop.ts index a4937d1ab67f..3e00d1ba4bcc 100644 --- a/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/LayoutModule/DragDrop.ts +++ b/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/LayoutModule/DragDrop.ts @@ -219,6 +219,10 @@ class DragDrop { DragDrop.ajaxAction($droppableElement, $draggableElement, parameters, copyAction).then((): void => { const $languageDescriber = $(`.t3-page-column-lang-name[data-language-uid="${language}"]`); + if ($languageDescriber.length === 0) { + return; + } + const newFlagIdentifier = $languageDescriber.data('flagIdentifier'); const newLanguageTitle = $languageDescriber.data('languageTitle'); diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/LayoutModule/DragDrop.js b/typo3/sysext/backend/Resources/Public/JavaScript/LayoutModule/DragDrop.js index 95f95847ed69..82323b100900 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/LayoutModule/DragDrop.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/LayoutModule/DragDrop.js @@ -10,4 +10,4 @@ * * The TYPO3 project - inspiring people to share! */ -define(["require","exports","jquery","../AjaxDataHandler","../Icons","jquery-ui/droppable"],(function(e,t,a,n,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{static initialize(){a(s.contentIdentifier).draggable({handle:s.dragHeaderIdentifier,scope:"tt_content",cursor:"move",distance:20,revert:"invalid",zIndex:100,start:e=>{s.onDragStart(a(e.target))},stop:e=>{s.onDragStop(a(e.target))}}),a(s.dropZoneIdentifier).droppable({accept:this.contentIdentifier,scope:"tt_content",tolerance:"pointer",over:(e,t)=>{s.onDropHoverOver(a(t.draggable),a(e.target))},out:(e,t)=>{s.onDropHoverOut(a(t.draggable),a(e.target))},drop:(e,t)=>{s.onDrop(a(t.draggable),a(e.target),e)}})}static onDragStart(e){s.originalStyles=e.get(0).style.cssText,e.children(s.dragIdentifier).addClass("dragitem-shadow"),e.append('<div class="ui-draggable-copy-message">'+TYPO3.lang["dragdrop.copy.message"]+"</div>"),e.children(s.dropZoneIdentifier).addClass("drag-start"),e.closest(s.columnIdentifier).removeClass("active"),e.find(s.dropZoneIdentifier).hide(),a(s.dropZoneIdentifier).each((e,t)=>{const n=a(t);n.parent().find(".t3js-toggle-new-content-element-wizard").length?n.addClass(s.validDropZoneClass):n.closest(s.contentIdentifier).find("> "+s.addContentIdentifier+", > > "+s.addContentIdentifier).show()})}static onDragStop(e){e.children(s.dragIdentifier).removeClass("dragitem-shadow"),e.children(s.dropZoneIdentifier).removeClass("drag-start"),e.closest(s.columnIdentifier).addClass("active"),e.find(s.dropZoneIdentifier).show(),e.find(".ui-draggable-copy-message").remove(),e.get(0).style.cssText=s.originalStyles,a(s.dropZoneIdentifier+"."+s.validDropZoneClass).removeClass(s.validDropZoneClass)}static onDropHoverOver(e,t){t.hasClass(s.validDropZoneClass)&&t.addClass(s.dropPossibleHoverClass)}static onDropHoverOut(e,t){t.removeClass(s.dropPossibleHoverClass)}static onDrop(e,t,n){const r=s.getColumnPositionForElement(t);t.removeClass(s.dropPossibleHoverClass);const i=parseInt(e.data("uid"),10);if("number"==typeof i&&i>0){let d={};const l=t.closest(s.contentIdentifier).data("uid");let c=0;c=void 0===l?parseInt(n.target.offsetParent.getAttribute("data-page"),10):0-parseInt(l,10);const g=parseInt(t.closest("[data-language-uid]").data("language-uid"),10);let p=0;0!==c&&(p=r),d.cmd={tt_content:{}},d.data={tt_content:{}};const f=n&&n.originalEvent.ctrlKey||t.hasClass("t3js-paste-copy");f?d.cmd.tt_content[i]={copy:{action:"paste",target:c,update:{colPos:p,sys_language_uid:g}}}:(d.data.tt_content[i]={colPos:p,sys_language_uid:g},d.cmd.tt_content[i]={move:c}),s.ajaxAction(t,e,d,f).then(()=>{const t=a(`.t3-page-column-lang-name[data-language-uid="${g}"]`),n=t.data("flagIdentifier"),s=t.data("languageTitle");e.find(".t3js-language-title").text(s),o.getIcon(n,o.sizes.small).then(t=>{e.find(".t3js-flag").attr("title",s).html(t)})})}}static ajaxAction(e,t,a,o){return n.process(a).then(a=>{if(a.hasErrors)throw a.messages;e.parent().hasClass(s.contentIdentifier.substring(1))?t.detach().css({top:0,left:0}).insertAfter(e.closest(s.contentIdentifier)):t.detach().css({top:0,left:0}).insertAfter(e.closest(s.dropZoneIdentifier)),o&&self.location.reload()})}static getColumnPositionForElement(e){const t=e.closest("[data-colpos]");return!(!t.length||"undefined"===t.data("colpos"))&&t.data("colpos")}}s.contentIdentifier=".t3js-page-ce",s.dragIdentifier=".t3-page-ce-dragitem",s.dragHeaderIdentifier=".t3js-page-ce-draghandle",s.dropZoneIdentifier=".t3js-page-ce-dropzone-available",s.columnIdentifier=".t3js-page-column",s.validDropZoneClass="active",s.dropPossibleHoverClass="t3-page-ce-dropzone-possible",s.addContentIdentifier=".t3js-page-new-ce",s.originalStyles="",t.default=s,a(s.initialize)})); \ No newline at end of file +define(["require","exports","jquery","../AjaxDataHandler","../Icons","jquery-ui/droppable"],(function(e,t,a,n,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{static initialize(){a(s.contentIdentifier).draggable({handle:s.dragHeaderIdentifier,scope:"tt_content",cursor:"move",distance:20,revert:"invalid",zIndex:100,start:e=>{s.onDragStart(a(e.target))},stop:e=>{s.onDragStop(a(e.target))}}),a(s.dropZoneIdentifier).droppable({accept:this.contentIdentifier,scope:"tt_content",tolerance:"pointer",over:(e,t)=>{s.onDropHoverOver(a(t.draggable),a(e.target))},out:(e,t)=>{s.onDropHoverOut(a(t.draggable),a(e.target))},drop:(e,t)=>{s.onDrop(a(t.draggable),a(e.target),e)}})}static onDragStart(e){s.originalStyles=e.get(0).style.cssText,e.children(s.dragIdentifier).addClass("dragitem-shadow"),e.append('<div class="ui-draggable-copy-message">'+TYPO3.lang["dragdrop.copy.message"]+"</div>"),e.children(s.dropZoneIdentifier).addClass("drag-start"),e.closest(s.columnIdentifier).removeClass("active"),e.find(s.dropZoneIdentifier).hide(),a(s.dropZoneIdentifier).each((e,t)=>{const n=a(t);n.parent().find(".t3js-toggle-new-content-element-wizard").length?n.addClass(s.validDropZoneClass):n.closest(s.contentIdentifier).find("> "+s.addContentIdentifier+", > > "+s.addContentIdentifier).show()})}static onDragStop(e){e.children(s.dragIdentifier).removeClass("dragitem-shadow"),e.children(s.dropZoneIdentifier).removeClass("drag-start"),e.closest(s.columnIdentifier).addClass("active"),e.find(s.dropZoneIdentifier).show(),e.find(".ui-draggable-copy-message").remove(),e.get(0).style.cssText=s.originalStyles,a(s.dropZoneIdentifier+"."+s.validDropZoneClass).removeClass(s.validDropZoneClass)}static onDropHoverOver(e,t){t.hasClass(s.validDropZoneClass)&&t.addClass(s.dropPossibleHoverClass)}static onDropHoverOut(e,t){t.removeClass(s.dropPossibleHoverClass)}static onDrop(e,t,n){const r=s.getColumnPositionForElement(t);t.removeClass(s.dropPossibleHoverClass);const i=parseInt(e.data("uid"),10);if("number"==typeof i&&i>0){let d={};const l=t.closest(s.contentIdentifier).data("uid");let c=0;c=void 0===l?parseInt(n.target.offsetParent.getAttribute("data-page"),10):0-parseInt(l,10);const g=parseInt(t.closest("[data-language-uid]").data("language-uid"),10);let p=0;0!==c&&(p=r),d.cmd={tt_content:{}},d.data={tt_content:{}};const f=n&&n.originalEvent.ctrlKey||t.hasClass("t3js-paste-copy");f?d.cmd.tt_content[i]={copy:{action:"paste",target:c,update:{colPos:p,sys_language_uid:g}}}:(d.data.tt_content[i]={colPos:p,sys_language_uid:g},d.cmd.tt_content[i]={move:c}),s.ajaxAction(t,e,d,f).then(()=>{const t=a(`.t3-page-column-lang-name[data-language-uid="${g}"]`);if(0===t.length)return;const n=t.data("flagIdentifier"),s=t.data("languageTitle");e.find(".t3js-language-title").text(s),o.getIcon(n,o.sizes.small).then(t=>{e.find(".t3js-flag").attr("title",s).html(t)})})}}static ajaxAction(e,t,a,o){return n.process(a).then(a=>{if(a.hasErrors)throw a.messages;e.parent().hasClass(s.contentIdentifier.substring(1))?t.detach().css({top:0,left:0}).insertAfter(e.closest(s.contentIdentifier)):t.detach().css({top:0,left:0}).insertAfter(e.closest(s.dropZoneIdentifier)),o&&self.location.reload()})}static getColumnPositionForElement(e){const t=e.closest("[data-colpos]");return!(!t.length||"undefined"===t.data("colpos"))&&t.data("colpos")}}s.contentIdentifier=".t3js-page-ce",s.dragIdentifier=".t3-page-ce-dragitem",s.dragHeaderIdentifier=".t3js-page-ce-draghandle",s.dropZoneIdentifier=".t3js-page-ce-dropzone-available",s.columnIdentifier=".t3js-page-column",s.validDropZoneClass="active",s.dropPossibleHoverClass="t3-page-ce-dropzone-possible",s.addContentIdentifier=".t3js-page-new-ce",s.originalStyles="",t.default=s,a(s.initialize)})); \ No newline at end of file -- GitLab