diff --git a/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/ContextMenuActions.ts b/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/ContextMenuActions.ts index 8b6d6493afc337324d8cdb94bd57cc8a947bdf38..9462be89d19ce99a34dcc9a516e2ca8b67e4cc61 100644 --- a/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/ContextMenuActions.ts +++ b/Build/Sources/TypeScript/backend/Resources/Public/TypeScript/ContextMenuActions.ts @@ -153,9 +153,10 @@ class ContextMenuActions { * @param {number} uid */ public static disableRecord(table: string, uid: number): void { + const disableFieldName = $(this).data('disable-field') || 'hidden'; Viewport.ContentContainer.setUrl( top.TYPO3.settings.RecordCommit.moduleUrl - + '&data[' + table + '][' + uid + '][hidden]=1' + + '&data[' + table + '][' + uid + '][' + disableFieldName + ']=1' + '&redirect=' + ContextMenuActions.getReturnUrl(), ).done((): void => { Viewport.NavigationContainer.PageTree.refreshTree(); @@ -167,9 +168,10 @@ class ContextMenuActions { * @param {number} uid */ public static enableRecord(table: string, uid: number): void { + const disableFieldName = $(this).data('disable-field') || 'hidden'; Viewport.ContentContainer.setUrl( top.TYPO3.settings.RecordCommit.moduleUrl - + '&data[' + table + '][' + uid + '][hidden]=0' + + '&data[' + table + '][' + uid + '][' + disableFieldName + ']=0' + '&redirect=' + ContextMenuActions.getReturnUrl(), ).done((): void => { Viewport.NavigationContainer.PageTree.refreshTree(); diff --git a/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/PageProvider.php b/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/PageProvider.php index d7eba58e7e8132dc05a0c92b026bf29b702d7f97..350e2306934238f002851cff60bf770e54a9467a 100644 --- a/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/PageProvider.php +++ b/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/PageProvider.php @@ -504,6 +504,9 @@ class PageProvider extends RecordProvider if ($itemName === 'view') { $attributes += $this->getViewAdditionalAttributes(); } + if ($itemName === 'enable' || $itemName === 'disable') { + $attributes += $this->getEnableDisableAdditionalAttributes(); + } if ($itemName === 'delete') { $attributes += $this->getDeleteAdditionalAttributes(); } diff --git a/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/RecordProvider.php b/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/RecordProvider.php index 4c07cbb70427d8636a9f347de19f2d7f08be9fe8..3ed420712d88e1f6cc808cba2a6c975dc5800e9a 100644 --- a/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/RecordProvider.php +++ b/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/RecordProvider.php @@ -293,6 +293,9 @@ class RecordProvider extends AbstractProvider if ($itemName === 'view') { $attributes += $this->getViewAdditionalAttributes(); } + if ($itemName === 'enable' || $itemName === 'disable') { + $attributes += $this->getEnableDisableAdditionalAttributes(); + } if ($itemName === 'newWizard' && $this->table === 'tt_content') { $moduleName = BackendUtility::getPagesTSconfig($this->record['pid'])['mod.']['newContentElementWizard.']['override'] ?? 'new_content_element_wizard'; @@ -340,6 +343,18 @@ class RecordProvider extends AbstractProvider return $attributes; } + /** + * Additional attributes for the hide & unhide items + * + * @return array + */ + protected function getEnableDisableAdditionalAttributes(): array + { + return [ + 'data-disable-field' => $GLOBALS['TCA'][$this->table]['ctrl']['enablecolumns']['disabled'] ?? '' + ]; + } + /** * Additional attributes for the pasteInto and pasteAfter items * diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/ContextMenuActions.js b/typo3/sysext/backend/Resources/Public/JavaScript/ContextMenuActions.js index 9c4d94f306343ae95c611e7a6c1a5f71afcd7a82..a5958186f0c6564818fa2358901dee2ce47d0bf5 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/ContextMenuActions.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/ContextMenuActions.js @@ -10,4 +10,4 @@ * * The TYPO3 project - inspiring people to share! */ -var __awaiter=this&&this.__awaiter||function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function o(e){try{l(a.next(e))}catch(e){i(e)}}function s(e){try{l(a.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((a=a.apply(e,t||[])).next())}))};define(["require","exports","./Enum/Severity","jquery","./AjaxDataHandler","TYPO3/CMS/Core/Ajax/AjaxRequest","./InfoWindow","./Modal","./ModuleMenu","TYPO3/CMS/Backend/Notification","./Viewport"],(function(e,t,n,a,r,i,o,s,l,c,d){"use strict";class g{static getReturnUrl(){return encodeURIComponent(top.list_frame.document.location.pathname+top.list_frame.document.location.search)}static editRecord(e,t){let n="",r=a(this).data("pages-language-uid");r&&(n="&overrideVals[pages][sys_language_uid]="+r),d.ContentContainer.setUrl(top.TYPO3.settings.FormEngine.moduleUrl+"&edit["+e+"]["+t+"]=edit"+n+"&returnUrl="+g.getReturnUrl())}static viewRecord(){const e=a(this).data("preview-url");if(e){window.open(e,"newTYPO3frontendWindow").focus()}}static openInfoPopUp(e,t){o.showItem(e,t)}static mountAsTreeRoot(e,t){"pages"===e&&d.NavigationContainer.PageTree.setTemporaryMountPoint(t)}static newPageWizard(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.NewRecord.moduleUrl+"&id="+t+"&pagesOnly=1&returnUrl="+g.getReturnUrl())}static newContentWizard(){const e=a(this);let t=e.data("new-wizard-url");t&&(t+="&returnUrl="+g.getReturnUrl(),s.advanced({title:e.data("title"),type:s.types.ajax,size:s.sizes.medium,content:t,severity:n.SeverityEnum.notice}))}static newRecord(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.FormEngine.moduleUrl+"&edit["+e+"][-"+t+"]=new&returnUrl="+g.getReturnUrl())}static openHistoryPopUp(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.RecordHistory.moduleUrl+"&element="+e+":"+t+"&returnUrl="+g.getReturnUrl())}static openListModule(e,t){const n="pages"===e?t:a(this).data("page-uid");l.App.showModule("web_list","id="+n)}static pagesSort(){const e=a(this).data("pages-sort-url");e&&d.ContentContainer.setUrl(e)}static pagesNewMultiple(){const e=a(this).data("pages-new-multiple-url");e&&d.ContentContainer.setUrl(e)}static disableRecord(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+"&data["+e+"]["+t+"][hidden]=1&redirect="+g.getReturnUrl()).done(()=>{d.NavigationContainer.PageTree.refreshTree()})}static enableRecord(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+"&data["+e+"]["+t+"][hidden]=0&redirect="+g.getReturnUrl()).done(()=>{d.NavigationContainer.PageTree.refreshTree()})}static showInMenus(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+"&data["+e+"]["+t+"][nav_hide]=0&redirect="+g.getReturnUrl()).done(()=>{d.NavigationContainer.PageTree.refreshTree()})}static hideInMenus(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+"&data["+e+"]["+t+"][nav_hide]=1&redirect="+g.getReturnUrl()).done(()=>{d.NavigationContainer.PageTree.refreshTree()})}static deleteRecord(e,t){const i=a(this);s.confirm(i.data("title"),i.data("message"),n.SeverityEnum.warning,[{text:a(this).data("button-close-text")||TYPO3.lang["button.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:a(this).data("button-ok-text")||TYPO3.lang["button.delete"]||"Delete",btnClass:"btn-warning",name:"delete"}]).on("button.clicked",n=>{"delete"===n.target.getAttribute("name")&&r.process("cmd["+e+"]["+t+"][delete]=1").then(()=>{if("pages"===e&&d.NavigationContainer.PageTree){if(t===top.fsMod.recentIds.web){let e=d.NavigationContainer.PageTree.getFirstNode();d.NavigationContainer.PageTree.selectNode(e)}d.NavigationContainer.PageTree.refreshTree()}}),s.dismiss()})}static copy(e,t){const n=TYPO3.settings.ajaxUrls.contextmenu_clipboard+"&CB[el]["+e+"%7C"+t+"]=1&CB[setCopyMode]=1";new i(n).get().finally(()=>{g.triggerRefresh(d.ContentContainer.get().location.href)})}static clipboardRelease(e,t){const n=TYPO3.settings.ajaxUrls.contextmenu_clipboard+"&CB[el]["+e+"%7C"+t+"]=0";new i(n).get().finally(()=>{g.triggerRefresh(d.ContentContainer.get().location.href)})}static cut(e,t){const n=TYPO3.settings.ajaxUrls.contextmenu_clipboard+"&CB[el]["+e+"%7C"+t+"]=1&CB[setCopyMode]=0";new i(n).get().finally(()=>{g.triggerRefresh(d.ContentContainer.get().location.href)})}static triggerRefresh(e){e.includes("record%2Fedit")||d.ContentContainer.refresh()}static clearCache(e,t){new i(TYPO3.settings.ajaxUrls.web_list_clearpagecache).withQueryArguments({id:t}).get({cache:"no-cache"}).then(e=>__awaiter(this,void 0,void 0,(function*(){const t=yield e.resolve();!0===t.success?c.success(t.title,t.message,1):c.error(t.title,t.message,1)})),()=>{c.error("Clearing page caches went wrong on the server side.")})}static pasteAfter(e,t){g.pasteInto.bind(a(this))(e,-t)}static pasteInto(e,t){const r=a(this),i=()=>{const n="&CB[paste]="+e+"%7C"+t+"&CB[pad]=normal&redirect="+g.getReturnUrl();d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+n).done(()=>{"pages"===e&&d.NavigationContainer.PageTree&&d.NavigationContainer.PageTree.refreshTree()})};r.data("title")?s.confirm(r.data("title"),r.data("message"),n.SeverityEnum.warning,[{text:a(this).data("button-close-text")||TYPO3.lang["button.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:a(this).data("button-ok-text")||TYPO3.lang["button.ok"]||"OK",btnClass:"btn-warning",name:"ok"}]).on("button.clicked",e=>{"ok"===e.target.getAttribute("name")&&i(),s.dismiss()}):i()}}return g})); \ No newline at end of file +var __awaiter=this&&this.__awaiter||function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function o(e){try{l(a.next(e))}catch(e){i(e)}}function s(e){try{l(a.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((a=a.apply(e,t||[])).next())}))};define(["require","exports","./Enum/Severity","jquery","./AjaxDataHandler","TYPO3/CMS/Core/Ajax/AjaxRequest","./InfoWindow","./Modal","./ModuleMenu","TYPO3/CMS/Backend/Notification","./Viewport"],(function(e,t,n,a,r,i,o,s,l,c,d){"use strict";class g{static getReturnUrl(){return encodeURIComponent(top.list_frame.document.location.pathname+top.list_frame.document.location.search)}static editRecord(e,t){let n="",r=a(this).data("pages-language-uid");r&&(n="&overrideVals[pages][sys_language_uid]="+r),d.ContentContainer.setUrl(top.TYPO3.settings.FormEngine.moduleUrl+"&edit["+e+"]["+t+"]=edit"+n+"&returnUrl="+g.getReturnUrl())}static viewRecord(){const e=a(this).data("preview-url");if(e){window.open(e,"newTYPO3frontendWindow").focus()}}static openInfoPopUp(e,t){o.showItem(e,t)}static mountAsTreeRoot(e,t){"pages"===e&&d.NavigationContainer.PageTree.setTemporaryMountPoint(t)}static newPageWizard(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.NewRecord.moduleUrl+"&id="+t+"&pagesOnly=1&returnUrl="+g.getReturnUrl())}static newContentWizard(){const e=a(this);let t=e.data("new-wizard-url");t&&(t+="&returnUrl="+g.getReturnUrl(),s.advanced({title:e.data("title"),type:s.types.ajax,size:s.sizes.medium,content:t,severity:n.SeverityEnum.notice}))}static newRecord(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.FormEngine.moduleUrl+"&edit["+e+"][-"+t+"]=new&returnUrl="+g.getReturnUrl())}static openHistoryPopUp(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.RecordHistory.moduleUrl+"&element="+e+":"+t+"&returnUrl="+g.getReturnUrl())}static openListModule(e,t){const n="pages"===e?t:a(this).data("page-uid");l.App.showModule("web_list","id="+n)}static pagesSort(){const e=a(this).data("pages-sort-url");e&&d.ContentContainer.setUrl(e)}static pagesNewMultiple(){const e=a(this).data("pages-new-multiple-url");e&&d.ContentContainer.setUrl(e)}static disableRecord(e,t){const n=a(this).data("disable-field")||"hidden";d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+"&data["+e+"]["+t+"]["+n+"]=1&redirect="+g.getReturnUrl()).done(()=>{d.NavigationContainer.PageTree.refreshTree()})}static enableRecord(e,t){const n=a(this).data("disable-field")||"hidden";d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+"&data["+e+"]["+t+"]["+n+"]=0&redirect="+g.getReturnUrl()).done(()=>{d.NavigationContainer.PageTree.refreshTree()})}static showInMenus(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+"&data["+e+"]["+t+"][nav_hide]=0&redirect="+g.getReturnUrl()).done(()=>{d.NavigationContainer.PageTree.refreshTree()})}static hideInMenus(e,t){d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+"&data["+e+"]["+t+"][nav_hide]=1&redirect="+g.getReturnUrl()).done(()=>{d.NavigationContainer.PageTree.refreshTree()})}static deleteRecord(e,t){const i=a(this);s.confirm(i.data("title"),i.data("message"),n.SeverityEnum.warning,[{text:a(this).data("button-close-text")||TYPO3.lang["button.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:a(this).data("button-ok-text")||TYPO3.lang["button.delete"]||"Delete",btnClass:"btn-warning",name:"delete"}]).on("button.clicked",n=>{"delete"===n.target.getAttribute("name")&&r.process("cmd["+e+"]["+t+"][delete]=1").then(()=>{if("pages"===e&&d.NavigationContainer.PageTree){if(t===top.fsMod.recentIds.web){let e=d.NavigationContainer.PageTree.getFirstNode();d.NavigationContainer.PageTree.selectNode(e)}d.NavigationContainer.PageTree.refreshTree()}}),s.dismiss()})}static copy(e,t){const n=TYPO3.settings.ajaxUrls.contextmenu_clipboard+"&CB[el]["+e+"%7C"+t+"]=1&CB[setCopyMode]=1";new i(n).get().finally(()=>{g.triggerRefresh(d.ContentContainer.get().location.href)})}static clipboardRelease(e,t){const n=TYPO3.settings.ajaxUrls.contextmenu_clipboard+"&CB[el]["+e+"%7C"+t+"]=0";new i(n).get().finally(()=>{g.triggerRefresh(d.ContentContainer.get().location.href)})}static cut(e,t){const n=TYPO3.settings.ajaxUrls.contextmenu_clipboard+"&CB[el]["+e+"%7C"+t+"]=1&CB[setCopyMode]=0";new i(n).get().finally(()=>{g.triggerRefresh(d.ContentContainer.get().location.href)})}static triggerRefresh(e){e.includes("record%2Fedit")||d.ContentContainer.refresh()}static clearCache(e,t){new i(TYPO3.settings.ajaxUrls.web_list_clearpagecache).withQueryArguments({id:t}).get({cache:"no-cache"}).then(e=>__awaiter(this,void 0,void 0,(function*(){const t=yield e.resolve();!0===t.success?c.success(t.title,t.message,1):c.error(t.title,t.message,1)})),()=>{c.error("Clearing page caches went wrong on the server side.")})}static pasteAfter(e,t){g.pasteInto.bind(a(this))(e,-t)}static pasteInto(e,t){const r=a(this),i=()=>{const n="&CB[paste]="+e+"%7C"+t+"&CB[pad]=normal&redirect="+g.getReturnUrl();d.ContentContainer.setUrl(top.TYPO3.settings.RecordCommit.moduleUrl+n).done(()=>{"pages"===e&&d.NavigationContainer.PageTree&&d.NavigationContainer.PageTree.refreshTree()})};r.data("title")?s.confirm(r.data("title"),r.data("message"),n.SeverityEnum.warning,[{text:a(this).data("button-close-text")||TYPO3.lang["button.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:a(this).data("button-ok-text")||TYPO3.lang["button.ok"]||"OK",btnClass:"btn-warning",name:"ok"}]).on("button.clicked",e=>{"ok"===e.target.getAttribute("name")&&i(),s.dismiss()}):i()}}return g})); \ No newline at end of file