-
-
Save jonleverrier/5964596e3bbc8f15a4f305185762eae6 to your computer and use it in GitHub Desktop.
| <?php | |
| /** | |
| * Content Blocks cbContentEditor Plugin | |
| * | |
| * This plugin hides certain CB buttons from certain MODX user groups | |
| * and disables the drag and drop functionality, so that you can provide | |
| * some clients with a more locked down version of CB. | |
| * | |
| * I would suggest setting up CB templates and defaults in the CB component manager, | |
| * so that predefined layouts are loaded automatically when a new resource is created. | |
| * It is also recommended that you hide the main content area on "resource/create" using form | |
| * customisation, other wise when a user creates a new page, they will be able to delete blocks | |
| * and use drag & drop, because no Resource ID has been defined yet (this only happens on save). | |
| * | |
| * Tested on: MODX 2.6.1, Content Blocks | |
| * | |
| * Events: OnDocFormPrerender | |
| * | |
| * @author Jon Leverrier <[email protected]> | |
| * | |
| */ | |
| switch ($modx->event->name) { | |
| // load on system event OnDocFormPrerender | |
| case 'OnDocFormPrerender': | |
| // get the current resource ID | |
| $resource = $modx->resource; | |
| // for newly created resources, there will be no ID until the page is saved. So if there | |
| // is no ID, stop here... | |
| if (!$resource) { | |
| return; | |
| } | |
| // check to see if CB is enabled on a resource | |
| $isContentBlocks = $resource->getProperty('_isContentBlocks', 'contentblocks', null); | |
| // only load for a specific user group and if CB is enabled on the resource | |
| if ($modx->user->isMember('Client Web Editor') && $isContentBlocks = true) { | |
| // load custom script to prevent drag and drop feature in CB | |
| // (need to find a better way todo this) | |
| $modx->regClientStartupHTMLBlock(' | |
| <script> | |
| jQuery(function($) { | |
| var checkCB = setInterval(function() { | |
| if (ContentBlocks.initialized) { | |
| $("#contentblocks .contentblocks-field-wrap").addClass("prevent-drag"); | |
| clearInterval(checkCB); | |
| } | |
| }, 50); | |
| }); | |
| </script> | |
| '); | |
| // remove certain buttons from the CB interface | |
| $modx->controller->addHTML(' | |
| <style> | |
| .contentblocks-field-delete, | |
| .contentblocks-add-block, | |
| .contentblocks-add-layout, | |
| .contentblocks-layout-menu, | |
| .contentblocks-layout-move-up, | |
| .contentblocks-layout-move-down, | |
| .contentblocks-add-content-here, | |
| .contentblocks-layout-settings, | |
| .contentblocks-field-gallery-url, | |
| .contentblocks-field-upload, | |
| .contentblocks-field-image-url { | |
| display: none !important; | |
| } | |
| </style> | |
| '); | |
| } else{ | |
| // if the check fails, do nothing | |
| return; | |
| } | |
| break; | |
| } |
Thank you for the plugin!
Works fine, but I can't prevent the drag and drop feature.
Apropo.. „// load custom script to prevent drag and drop feature in CB“ .. do I need it and where can I find it?
Thanks in advance!
Sebastian
Hi @inreti-sb - I've not used MODX for a while, so might not be much help.
I would check:
- Does line 41 get added to the Dom? If yes;
- Does the HTML element
#contentblocks .contentblocks-field-wrapexist in the latest version of CB? If yes; - If you add the class
.prevent-dragto#contentblocks .contentblocks-field-wrapvia your browser console does it prevent drag and drop? If yes, adjust the timeout value on line 48. If no; - Might be worth checking in with Mark from Modmore to see if
.prevent-dragwas removed and if there is a new way to prevent drag and drop - the plugin worked at the time I wrote it!
Hi @jonleverrier - thanks a lot for your fast reply and sorry for not answering earlier.
I just realized, that the plugin works as it should, but can't - up to now - fulfill one respectively two of my last following open wishes:
- Option to disable the drag&drop image upload
- Option to hide the text „or drop images here“ (unfortunately this text is not wrapped with a tag)
I will also ask for the option in this post...
https://forum.modmore.com/t/option-to-disable-the-drag-drop-image-upload-and-upload-from-url/699
... , but maybe someone has already extended this nice plugin or has a useful hint?
thanks @labr1005 - I have incorporated your changes. +100 for checking if CB was initialised :)