diff --git a/Events.php b/Events.php index 10aefd07..ca5bb563 100644 --- a/Events.php +++ b/Events.php @@ -23,208 +23,248 @@ class Events public static function onAdminMenuInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - if (!Yii::$app->user->isAdmin()) { - return; - } + if (!Yii::$app->user->isAdmin()) { + return; + } - $event->sender->addItem([ - 'label' => Yii::t('CustomPagesModule.base', 'Custom Pages'), - 'url' => Url::toPageOverview(), - 'group' => 'manage', - 'icon' => '', - 'isActive' => (Yii::$app->controller->module - && Yii::$app->controller->module->id === 'custom_pages' - && (Yii::$app->controller->id === 'page' || Yii::$app->controller->id === 'config')), - 'sortOrder' => 300, - ]); + $event->sender->addItem([ + 'label' => Yii::t('CustomPagesModule.base', 'Custom Pages'), + 'url' => Url::toPageOverview(), + 'group' => 'manage', + 'icon' => '', + 'isActive' => (Yii::$app->controller->module + && Yii::$app->controller->module->id === 'custom_pages' + && (Yii::$app->controller->id === 'page' || Yii::$app->controller->id === 'config')), + 'sortOrder' => 300, + ]); + } catch (\Throwable $e) { + Yii::error($e); + } } public static function onSpaceMenuInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - - /* @var $space \humhub\modules\space\models\Space */ - $space = $event->sender->space; - if ($space->isModuleEnabled('custom_pages')) { - $pages = ContainerPage::find()->contentContainer($space)->andWhere(['target' => ContainerPage::NAV_CLASS_SPACE_NAV])->all(); - foreach ($pages as $page) { - if (!$page->canView()) { - continue; + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + + /* @var $space \humhub\modules\space\models\Space */ + $space = $event->sender->space; + if ($space->isModuleEnabled('custom_pages')) { + $pages = ContainerPage::find()->contentContainer($space)->andWhere(['target' => ContainerPage::NAV_CLASS_SPACE_NAV])->all(); + foreach ($pages as $page) { + if (!$page->canView()) { + continue; + } + + $event->sender->addItem([ + 'label' => Html::encode($page->title), + 'group' => 'modules', + 'htmlOptions' => [ + 'target' => ($page->in_new_window) ? '_blank' : '', + 'data-pjax-prevent' => 1 + ], + 'url' => $page->getUrl(), + 'icon' => '', + 'isActive' => (Yii::$app->controller->module + && Yii::$app->controller->module->id === 'custom_pages' + && Yii::$app->controller->id === 'container' + && Yii::$app->controller->action->id === 'view' && Yii::$app->request->get('id') == $page->id), + 'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000, + ]); } - - $event->sender->addItem([ - 'label' => Html::encode($page->title), - 'group' => 'modules', - 'htmlOptions' => [ - 'target' => ($page->in_new_window) ? '_blank' : '', - 'data-pjax-prevent' => 1 - ], - 'url' => $page->getUrl(), - 'icon' => '', - 'isActive' => (Yii::$app->controller->module - && Yii::$app->controller->module->id === 'custom_pages' - && Yii::$app->controller->id === 'container' - && Yii::$app->controller->action->id === 'view' && Yii::$app->request->get('id') == $page->id), - 'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000, - ]); } + } catch (\Throwable $e) { + Yii::error($e); } } public static function onSpaceHeaderMenuInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - if (Yii::$app->controller->module - && Yii::$app->controller->module->id === 'custom_pages' - && Yii::$app->controller->id === 'container' - && Yii::$app->controller->action->id === 'view' - && PagePermission::canEdit()) { + if (Yii::$app->controller->module + && Yii::$app->controller->module->id === 'custom_pages' + && Yii::$app->controller->id === 'container' + && Yii::$app->controller->action->id === 'view' + && PagePermission::canEdit()) { - $page = ContainerPage::find()->contentContainer(Yii::$app->controller->contentContainer)->where(['custom_pages_container_page.id' => Yii::$app->request->get('id')])->one(); + $page = ContainerPage::find()->contentContainer(Yii::$app->controller->contentContainer)->where(['custom_pages_container_page.id' => Yii::$app->request->get('id')])->one(); - if (TemplateType::isType($page->type)) { - $event->sender->addWidget(modules\template\widgets\TemplatePageEditButton::class, [], ['sortOrder' => 500]); - } else { - $event->sender->addWidget(modules\template\widgets\PageConfigurationButton::class, [], ['sortOrder' => 500]); + if (TemplateType::isType($page->type)) { + $event->sender->addWidget(modules\template\widgets\TemplatePageEditButton::class, [], ['sortOrder' => 500]); + } else { + $event->sender->addWidget(modules\template\widgets\PageConfigurationButton::class, [], ['sortOrder' => 500]); + } } + } catch (\Throwable $e) { + Yii::error($e); } } public static function onSpaceAdminMenuInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - /* @var $space \humhub\modules\space\models\Space */ - $space = $event->sender->space; - if ($space->isModuleEnabled('custom_pages') && $space->isAdmin() && $space->isMember()) { - $event->sender->addItem([ - 'label' => Yii::t('CustomPagesModule.base', 'Custom Pages'), - 'group' => 'admin', - 'url' => Url::toPageOverview($space), - 'icon' => '', - 'isActive' => (Yii::$app->controller->module - && Yii::$app->controller->module->id === 'custom_pages' - && Yii::$app->controller->id === 'container' - && Yii::$app->controller->action->id !== 'view'), - ]); + /* @var $space \humhub\modules\space\models\Space */ + $space = $event->sender->space; + if ($space->isModuleEnabled('custom_pages') && $space->isAdmin() && $space->isMember()) { + $event->sender->addItem([ + 'label' => Yii::t('CustomPagesModule.base', 'Custom Pages'), + 'group' => 'admin', + 'url' => Url::toPageOverview($space), + 'icon' => '', + 'isActive' => (Yii::$app->controller->module + && Yii::$app->controller->module->id === 'custom_pages' + && Yii::$app->controller->id === 'container' + && Yii::$app->controller->action->id !== 'view'), + ]); + } + } catch (\Throwable $e) { + Yii::error($e); } } public static function onDirectoryMenuInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - foreach (Page::findAll(['target' => Page::NAV_CLASS_DIRECTORY]) as $page) { - // Admin only - if ($page->admin_only == 1 && !Yii::$app->user->isAdmin()) { - continue; - } + foreach (Page::findAll(['target' => Page::NAV_CLASS_DIRECTORY]) as $page) { + // Admin only + if ($page->admin_only == 1 && !Yii::$app->user->isAdmin()) { + continue; + } - $event->sender->addItem([ - 'label' => Html::encode($page->title), - 'url' => Url::to(['/custom_pages/view', 'id' => $page->id]), - 'group' => 'directory', - 'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''], - 'icon' => '', - 'isActive' => (Yii::$app->controller->module - && Yii::$app->controller->module->id === 'custom_pages' - && Yii::$app->controller->id === 'view' && Yii::$app->request->get('id') == $page->id), - 'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000, - ]); + $event->sender->addItem([ + 'label' => Html::encode($page->title), + 'url' => Url::to(['/custom_pages/view', 'id' => $page->id]), + 'group' => 'directory', + 'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''], + 'icon' => '', + 'isActive' => (Yii::$app->controller->module + && Yii::$app->controller->module->id === 'custom_pages' + && Yii::$app->controller->id === 'view' && Yii::$app->request->get('id') == $page->id), + 'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000, + ]); + } + } catch (\Throwable $e) { + Yii::error($e); } } public static function onTopMenuInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - foreach (Page::findAll(['target' => Page::NAV_CLASS_TOPNAV]) as $page) { + foreach (Page::findAll(['target' => Page::NAV_CLASS_TOPNAV]) as $page) { - if (!$page->canView()) { - continue; - } + if (!$page->canView()) { + continue; + } - $event->sender->addItem([ - 'label' => Html::encode($page->title), - 'url' => Url::to(['/custom_pages/view', 'id' => $page->id]), - 'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''], - 'icon' => '', - 'isActive' => (Yii::$app->controller->module - && Yii::$app->controller->module->id === 'custom_pages' - && Yii::$app->controller->id === 'view' && Yii::$app->request->get('id') == $page->id), - 'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000, - ]); + $event->sender->addItem([ + 'label' => Html::encode($page->title), + 'url' => Url::to(['/custom_pages/view', 'id' => $page->id]), + 'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''], + 'icon' => '', + 'isActive' => (Yii::$app->controller->module + && Yii::$app->controller->module->id === 'custom_pages' + && Yii::$app->controller->id === 'view' && Yii::$app->request->get('id') == $page->id), + 'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000, + ]); + } + } catch (\Throwable $e) { + Yii::error($e); } } public static function onAccountMenuInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - foreach (Page::findAll(['target' => Page::NAV_CLASS_ACCOUNTNAV]) as $page) { - if (!$page->canView()) { - continue; - } + foreach (Page::findAll(['target' => Page::NAV_CLASS_ACCOUNTNAV]) as $page) { + if (!$page->canView()) { + continue; + } - $event->sender->addItem([ - 'label' => Html::encode($page->title), - 'url' => Url::to(['/custom_pages/view', 'id' => $page->id]), - 'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''], - 'icon' => '', - 'isActive' => (Yii::$app->controller->module - && Yii::$app->controller->module->id === 'custom_pages' - && Yii::$app->controller->id === 'view' && Yii::$app->request->get('id') == $page->id), - 'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000, - ]); + $event->sender->addItem([ + 'label' => Html::encode($page->title), + 'url' => Url::to(['/custom_pages/view', 'id' => $page->id]), + 'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''], + 'icon' => '', + 'isActive' => (Yii::$app->controller->module + && Yii::$app->controller->module->id === 'custom_pages' + && Yii::$app->controller->id === 'view' && Yii::$app->request->get('id') == $page->id), + 'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000, + ]); + } + } catch (\Throwable $e) { + Yii::error($e); } } public static function onDashboardSidebarInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - $snippets = Snippet::findAll(['target' => Snippet::SIDEBAR_DASHBOARD]); - $canEdit = PagePermission::canEdit(); - foreach ($snippets as $snippet) { - if (!$snippet->canView()) { - continue; + $snippets = Snippet::findAll(['target' => Snippet::SIDEBAR_DASHBOARD]); + $canEdit = PagePermission::canEdit(); + foreach ($snippets as $snippet) { + if (!$snippet->canView()) { + continue; + } + $event->sender->addWidget(SnippetWidget::class, ['model' => $snippet, 'canEdit' => $canEdit], ['sortOrder' => $snippet->sort_order]); } - $event->sender->addWidget(SnippetWidget::class, ['model' => $snippet, 'canEdit' => $canEdit], ['sortOrder' => $snippet->sort_order]); + } catch (\Throwable $e) { + Yii::error($e); } } public static function onDirectorySidebarInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - $snippets = Snippet::findAll(['target' => Snippet::SIDEBAR_DIRECTORY]); - $canEdit = PagePermission::canEdit(); - foreach ($snippets as $snippet) { - if (!$snippet->canView()) { - continue; + $snippets = Snippet::findAll(['target' => Snippet::SIDEBAR_DIRECTORY]); + $canEdit = PagePermission::canEdit(); + foreach ($snippets as $snippet) { + if (!$snippet->canView()) { + continue; + } + $event->sender->addWidget(SnippetWidget::class, ['model' => $snippet, 'canEdit' => $canEdit], ['sortOrder' => $snippet->sort_order]); } - $event->sender->addWidget(SnippetWidget::class, ['model' => $snippet, 'canEdit' => $canEdit], ['sortOrder' => $snippet->sort_order]); + } catch (\Throwable $e) { + Yii::error($e); } } public static function onSpaceSidebarInit($event) { - Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); - - $space = $event->sender->space; - $canEdit = PagePermission::canEdit(); - if ($space->isModuleEnabled('custom_pages')) { - $snippets = ContainerSnippet::find()->contentContainer($space)->all(); - foreach ($snippets as $snippet) { - if (!$snippet->canView()) { - continue; + try { + Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent(); + + $space = $event->sender->space; + $canEdit = PagePermission::canEdit(); + if ($space->isModuleEnabled('custom_pages')) { + $snippets = ContainerSnippet::find()->contentContainer($space)->all(); + foreach ($snippets as $snippet) { + if (!$snippet->canView()) { + continue; + } + + $event->sender->addWidget(SnippetWidget::class, ['model' => $snippet, 'canEdit' => $canEdit], ['sortOrder' => $snippet->sort_order]); } - - $event->sender->addWidget(SnippetWidget::class, ['model' => $snippet, 'canEdit' => $canEdit], ['sortOrder' => $snippet->sort_order]); } + } catch (\Throwable $e) { + Yii::error($e); } } diff --git a/assets/Assets.php b/assets/Assets.php index ec9f92d9..09741784 100644 --- a/assets/Assets.php +++ b/assets/Assets.php @@ -6,6 +6,15 @@ class Assets extends AssetBundle { + /** + * v1.5 compatibility defer script loading + * + * Migrate to HumHub AssetBundle once minVersion is >=1.5 + * + * @var bool + */ + public $defer = true; + public $sourcePath = '@custom_pages/resources'; public $publishOptions = [ diff --git a/assets/CkEditorAssetBundle.php b/assets/CkEditorAssetBundle.php index cb06bbc5..de5d7a9a 100644 --- a/assets/CkEditorAssetBundle.php +++ b/assets/CkEditorAssetBundle.php @@ -6,6 +6,15 @@ class CkEditorAssetBundle extends AssetBundle { + /** + * v1.5 compatibility defer script loading + * + * Migrate to HumHub AssetBundle once minVersion is >=1.5 + * + * @var bool + */ + public $defer = true; + public $jsOptions = ['position' => \yii\web\View::POS_HEAD]; public $sourcePath = '@custom_pages/resources/ckeditor'; diff --git a/assets/CodeMirrorAssetBundle.php b/assets/CodeMirrorAssetBundle.php index 9d32d4e6..0ff94daf 100644 --- a/assets/CodeMirrorAssetBundle.php +++ b/assets/CodeMirrorAssetBundle.php @@ -5,10 +5,20 @@ use yii\web\AssetBundle; +use yii\web\View; class CodeMirrorAssetBundle extends AssetBundle { - public $jsOptions = ['position' => \yii\web\View::POS_HEAD]; + /** + * v1.5 compatibility defer script loading + * + * Migrate to HumHub AssetBundle once minVersion is >=1.5 + * + * @var bool + */ + public $defer = true; + + public $jsOptions = ['position' => View::POS_HEAD]; public $sourcePath = '@custom_pages/resources/codemirror'; public $js = [ diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index d38c492d..c0f14358 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========= +1.0.7 (April, 06, 2020) +-------------------- +- Chg: Added 1.5 defer compatibility +- Fix: Fixed "unreachable code after return statement" in humhub.custom_pages.template.TemplateElement.js + 1.0.6 (February 19, 2020) --------------------- - Fix #113: Double collapse menu item in snippet context menu diff --git a/module.json b/module.json index c793fe8b..829989bf 100644 --- a/module.json +++ b/module.json @@ -3,7 +3,7 @@ "name": "Custom Pages", "description": "Allows admins to create custom pages (html or markdown) or external links to various navigations (e.g. top navigation, account menu).", "keywords": ["pages", "custom", "iframe", "markdown", "link", "navigation", "spaces"], - "version": "1.0.6", + "version": "1.0.7", "humhub": { "minVersion": "1.3.10" } diff --git a/modules/template/assets/TemplateCoreAsset.php b/modules/template/assets/TemplateCoreAsset.php index d4a03557..450ca233 100644 --- a/modules/template/assets/TemplateCoreAsset.php +++ b/modules/template/assets/TemplateCoreAsset.php @@ -6,6 +6,10 @@ class TemplateCoreAsset extends AssetBundle { + public $publishOptions = [ + 'forceCopy' => true + ]; + public $sourcePath = '@custom_pages/modules/template/resources'; public $jsOptions = ['position' => \yii\web\View::POS_END]; diff --git a/modules/template/resources/js/humhub.custom_pages.template.TemplateElement.js b/modules/template/resources/js/humhub.custom_pages.template.TemplateElement.js index 365537d6..81b05e76 100644 --- a/modules/template/resources/js/humhub.custom_pages.template.TemplateElement.js +++ b/modules/template/resources/js/humhub.custom_pages.template.TemplateElement.js @@ -296,12 +296,6 @@ humhub.module('custom_pages.template.TemplateElement', function (module, require TemplateElement.prototype.getUniqueId = function ($element) { return this.$.attr('id'); - if (!$element) { - return; - } - - return $element.data('template-empty') ? Date.now().toString() : - $element.data('template-content') + ':' + $element.data('template-content-id'); }; TemplateElement.prototype.loader = function (show) {