Skip to content

Commit 4f01b8a

Browse files
committed
added a new check for the markdown buttons to check dependency modules within the YML configs, updated the JS to check whether the asset-admin module is installed.
1 parent 16c1aa9 commit 4f01b8a

File tree

5 files changed

+30
-5
lines changed

5 files changed

+30
-5
lines changed

_config/editorconfig.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,13 @@ SilverStripers\markdown\forms\MarkdownEditorConfig:
5050
action: ssEmbed
5151
className: 'fa fa-play'
5252
title: 'Embed Media'
53+
dependsOn: 'silverstripe/asset-admin'
5354
-
5455
name: image
5556
action: ssImage
5657
className: 'fa fa-picture-o'
5758
title: 'Insert Image'
59+
dependsOn: 'silverstripe/asset-admin'
5860
- '|'
5961
-
6062
name: preview

client/dist/bundle.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/src/entwine/Markdown_ssembed.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import ReactDOM from 'react-dom';
55

66
import { ApolloProvider } from 'react-apollo';
77
import { provideInjector } from 'lib/Injector';
8-
const InjectableInsertEmbedModal = provideInjector(window.InsertEmbedModal.default);
8+
const InjectableInsertEmbedModal = window.InsertEmbedModal ? provideInjector(window.InsertEmbedModal.default) : null;
99

1010
jQuery.entwine('ss', ($) => {
1111

@@ -40,6 +40,9 @@ jQuery.entwine('ss', ($) => {
4040
* @private
4141
*/
4242
_renderModal(show) {
43+
if(!InjectableInsertEmbedModal) {
44+
throw new Error('Embed is not supported, Install silverstripe/asset-admin');
45+
}
4346
const handleHide = () => this.close();
4447
const handleInsert = (...args) => this._handleInsert(...args);
4548
const handleCreate = (...args) => this._handleCreate(...args);

client/src/entwine/Markdown_ssmedia.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import ReactDOM from 'react-dom';
44

55
import { ApolloProvider } from 'react-apollo';
66
import { provideInjector } from 'lib/Injector';
7-
const InjectableInsertMediaModal = provideInjector(window.InsertMediaModal.default);
7+
const InjectableInsertMediaModal = window.InsertMediaModal ? provideInjector(window.InsertMediaModal.default) : null;
88

99

1010
jQuery.entwine('ss', ($) => {
@@ -34,6 +34,9 @@ jQuery.entwine('ss', ($) => {
3434
* @private
3535
*/
3636
_renderModal(show) {
37+
if(!InjectableInsertMediaModal) {
38+
throw new Error('Embed is not supported, Install silverstripe/asset-admin');
39+
}
3740
const handleHide = () => this.close();
3841
const handleInsert = (...args) => this._handleInsert(...args);
3942
const store = window.ss.store;

src/forms/MarkdownEditorConfig.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use SilverStripe\Core\Config\Configurable;
1515
use SilverStripe\Core\Convert;
1616
use SilverStripe\Core\Injector\Injectable;
17+
use SilverStripe\Core\Manifest\ModuleLoader;
1718
use SilverStripe\Core\Manifest\ModuleResourceLoader;
1819
use SilverStripe\View\SSViewer;
1920
use SilverStripe\View\ThemeResourceLoader;
@@ -178,6 +179,22 @@ public function getEditorCSS()
178179
return $editor;
179180
}
180181

182+
/**
183+
* @param $toolbar
184+
* @return array
185+
*/
186+
private function checkSettingsDependencies($toolbar)
187+
{
188+
$moduleLoader = ModuleLoader::inst();
189+
$modules = array_keys($moduleLoader->getManifest()->getModules());
190+
$approved = [];
191+
foreach ($toolbar as $item) {
192+
if(empty($item['dependsOn']) || (isset($item['dependsOn']) && in_array($item['dependsOn'], $modules))) {
193+
$approved[] = $item;
194+
}
195+
}
196+
return $approved;
197+
}
181198

182199
/**
183200
* @return array
@@ -196,7 +213,7 @@ public function getSettings()
196213
}
197214

198215
return [
199-
'toolbar' => $toolbar,
216+
'toolbar' => $this->checkSettingsDependencies($toolbar),
200217
'editor_css' => $this->getEditorCSS(),
201218
'identifier' => $this->getIdentifier()
202219
];

0 commit comments

Comments
 (0)