From 856906d20820bca58a3756d5aeb1d12c9601e241 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Sun, 5 Jun 2016 09:54:25 +0930 Subject: [PATCH] Update for beta 6, fix some errors --- extensions/embed/js/forum/dist/extension.js | 34 +++++++++----- .../js/forum/src/components/DiscussionPage.js | 18 +++++--- extensions/embed/js/forum/src/main.js | 14 +++++- extensions/embed/less/forum/extension.less | 17 ++++--- extensions/embed/src/DiscussionController.php | 44 ------------------- extensions/embed/src/EmbedWebApp.php | 40 +++++++++++++++++ .../src/EmbeddedDiscussionController.php | 27 ++++++++++++ .../embed/src/Listener/AddEmbedRoute.php | 2 +- ...FlushEmbedAssetsWhenSettingsAreChanged.php | 13 +++--- 9 files changed, 131 insertions(+), 78 deletions(-) delete mode 100644 extensions/embed/src/DiscussionController.php create mode 100644 extensions/embed/src/EmbedWebApp.php create mode 100644 extensions/embed/src/EmbeddedDiscussionController.php diff --git a/extensions/embed/js/forum/dist/extension.js b/extensions/embed/js/forum/dist/extension.js index 7b3e323a4..702a51101 100644 --- a/extensions/embed/js/forum/dist/extension.js +++ b/extensions/embed/js/forum/dist/extension.js @@ -10,15 +10,15 @@ //# sourceMappingURL=iframeResizer.contentWindow.map; 'use strict'; -System.register('flarum/embed/components/DiscussionPage', ['flarum/components/DiscussionPage', 'flarum/components/PostStream', 'flarum/helpers/listItems'], function (_export, _context) { +System.register('flarum/embed/components/DiscussionPage', ['flarum/components/DiscussionPage', 'flarum/components/LoadingIndicator', 'flarum/helpers/listItems'], function (_export, _context) { "use strict"; - var BaseDiscussionPage, PostStream, listItems, DiscussionPage; + var BaseDiscussionPage, LoadingIndicator, listItems, DiscussionPage; return { setters: [function (_flarumComponentsDiscussionPage) { BaseDiscussionPage = _flarumComponentsDiscussionPage.default; - }, function (_flarumComponentsPostStream) { - PostStream = _flarumComponentsPostStream.default; + }, function (_flarumComponentsLoadingIndicator) { + LoadingIndicator = _flarumComponentsLoadingIndicator.default; }, function (_flarumHelpersListItems) { listItems = _flarumHelpersListItems.default; }], @@ -50,7 +50,7 @@ System.register('flarum/embed/components/DiscussionPage', ['flarum/components/Di m( 'div', { className: 'DiscussionPage-discussion' }, - m( + this.discussion ? [m( 'nav', { className: 'DiscussionPage-nav--embed' }, m( @@ -58,12 +58,11 @@ System.register('flarum/embed/components/DiscussionPage', ['flarum/components/Di null, listItems(this.sidebarItems().toArray()) ) - ), - m( + ), m( 'div', { className: 'DiscussionPage-stream' }, - this.stream ? this.stream.render() : '' - ) + this.stream.render() + )] : m(LoadingIndicator, { className: 'LoadingIndicator--block' }) ) ) ); @@ -104,10 +103,10 @@ System.register('flarum/embed/components/DiscussionPage', ['flarum/components/Di });; 'use strict'; -System.register('flarum/embed/main', ['flarum/extend', 'flarum/app', 'flarum/components/Composer', 'flarum/components/PostStream', 'flarum/components/ModalManager', 'flarum/components/AlertManager', 'flarum/components/PostMeta', 'flarum/utils/mapRoutes', 'flarum/utils/Pane', 'flarum/utils/Drawer', 'flarum/embed/components/DiscussionPage'], function (_export, _context) { +System.register('flarum/embed/main', ['flarum/extend', 'flarum/app', 'flarum/components/Composer', 'flarum/components/PostStream', 'flarum/components/ModalManager', 'flarum/components/AlertManager', 'flarum/components/PostMeta', 'flarum/utils/mapRoutes', 'flarum/utils/Pane', 'flarum/utils/Drawer', 'flarum/utils/ScrollListener', 'flarum/embed/components/DiscussionPage'], function (_export, _context) { "use strict"; - var override, extend, app, Composer, PostStream, ModalManager, AlertManager, PostMeta, mapRoutes, Pane, Drawer, DiscussionPage; + var override, extend, app, Composer, PostStream, ModalManager, AlertManager, PostMeta, mapRoutes, Pane, Drawer, ScrollListener, DiscussionPage; return { setters: [function (_flarumExtend) { override = _flarumExtend.override; @@ -130,6 +129,8 @@ System.register('flarum/embed/main', ['flarum/extend', 'flarum/app', 'flarum/com Pane = _flarumUtilsPane.default; }, function (_flarumUtilsDrawer) { Drawer = _flarumUtilsDrawer.default; + }, function (_flarumUtilsScrollListener) { + ScrollListener = _flarumUtilsScrollListener.default; }, function (_flarumEmbedComponentsDiscussionPage) { DiscussionPage = _flarumEmbedComponentsDiscussionPage.default; }], @@ -156,7 +157,7 @@ System.register('flarum/embed/main', ['flarum/extend', 'flarum/app', 'flarum/com return original(post).replace('/embed', '/d'); }); - app.pageInfo = m.prop(); + app.pageInfo = m.prop({}); var reposition = function reposition() { var info = app.pageInfo(); @@ -205,6 +206,15 @@ System.register('flarum/embed/main', ['flarum/extend', 'flarum/app', 'flarum/com }); } + // Add a class to the body which indicates that the page has been scrolled + // down. + new ScrollListener(function (top) { + var $app = $('#app'); + var offset = $app.offset().top; + + $app.toggleClass('affix', top >= offset).toggleClass('scrolled', top > offset); + }).start(); + // Initialize FastClick, which makes links and buttons much more responsive on // touch devices. $(function () { diff --git a/extensions/embed/js/forum/src/components/DiscussionPage.js b/extensions/embed/js/forum/src/components/DiscussionPage.js index ad2e910f0..e0e890ed3 100644 --- a/extensions/embed/js/forum/src/components/DiscussionPage.js +++ b/extensions/embed/js/forum/src/components/DiscussionPage.js @@ -1,5 +1,5 @@ import BaseDiscussionPage from 'flarum/components/DiscussionPage'; -import PostStream from 'flarum/components/PostStream'; +import LoadingIndicator from 'flarum/components/LoadingIndicator'; import listItems from 'flarum/helpers/listItems'; export default class DiscussionPage extends BaseDiscussionPage { @@ -14,12 +14,16 @@ export default class DiscussionPage extends BaseDiscussionPage {
- -
- {this.stream ? this.stream.render() : ''} -
+ {this.discussion ? [ + , +
+ {this.stream.render()} +
+ ] : ( + + )}
diff --git a/extensions/embed/js/forum/src/main.js b/extensions/embed/js/forum/src/main.js index 9087e5a98..ac5e32e3c 100644 --- a/extensions/embed/js/forum/src/main.js +++ b/extensions/embed/js/forum/src/main.js @@ -8,6 +8,7 @@ import PostMeta from 'flarum/components/PostMeta'; import mapRoutes from 'flarum/utils/mapRoutes'; import Pane from 'flarum/utils/Pane'; import Drawer from 'flarum/utils/Drawer'; +import ScrollListener from 'flarum/utils/ScrollListener'; import DiscussionPage from 'flarum/embed/components/DiscussionPage'; @@ -36,7 +37,7 @@ app.initializers.replace('boot', () => { return original(post).replace('/embed', '/d'); }); - app.pageInfo = m.prop(); + app.pageInfo = m.prop({}); const reposition = function() { const info = app.pageInfo(); @@ -89,6 +90,17 @@ app.initializers.replace('boot', () => { }); } + // Add a class to the body which indicates that the page has been scrolled + // down. + new ScrollListener(top => { + const $app = $('#app'); + const offset = $app.offset().top; + + $app + .toggleClass('affix', top >= offset) + .toggleClass('scrolled', top > offset); + }).start(); + // Initialize FastClick, which makes links and buttons much more responsive on // touch devices. $(() => { diff --git a/extensions/embed/less/forum/extension.less b/extensions/embed/less/forum/extension.less index 2644640af..2ed80328b 100644 --- a/extensions/embed/less/forum/extension.less +++ b/extensions/embed/less/forum/extension.less @@ -25,19 +25,22 @@ } > ul { - z-index: 100; - background: @body-bg; + .header-background(); + border-bottom: 0; + height: auto !important; list-style: none; padding: 15px 0; margin: 0; - border-bottom: 1px solid @control-bg; + @media @phone { + position: static; + } @media @tablet-up { - position: fixed; - left: 0; - right: 0; - top: 0; padding: 15px 15px; + + .scrolled & { + .box-shadow(0 2px 6px @shadow-color); + } } > li { diff --git a/extensions/embed/src/DiscussionController.php b/extensions/embed/src/DiscussionController.php deleted file mode 100644 index 15e3228fc..000000000 --- a/extensions/embed/src/DiscussionController.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Flarum\Embed; - -use Flarum\Forum\Controller\DiscussionController as BaseDiscussionController; -use Psr\Http\Message\ServerRequestInterface; - -class DiscussionController extends BaseDiscussionController -{ - /** - * {@inheritdoc} - */ - public function render(ServerRequestInterface $request) - { - $view = parent::render($request); - - $view->addBootstrapper('flarum/embed/main'); - $view->setLayout(__DIR__.'/../views/embed.blade.php'); - - return $view; - } - - /** - * {@inheritdoc} - */ - protected function getAssets() - { - $assets = parent::getAssets(); - - $assets->addFile(__DIR__.'/../js/forum/dist/extension.js'); - $assets->addFile(__DIR__.'/../less/forum/extension.less'); - $assets->setFilename('embed'); - - return $assets; - } -} diff --git a/extensions/embed/src/EmbedWebApp.php b/extensions/embed/src/EmbedWebApp.php new file mode 100644 index 000000000..5d81ad958 --- /dev/null +++ b/extensions/embed/src/EmbedWebApp.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Embed; + +use Flarum\Forum\WebApp; + +class EmbedWebApp extends WebApp +{ + /** + * {@inheritdoc} + */ + public function getView() + { + $view = parent::getView(); + + $view->getJs()->addFile(__DIR__.'/../js/forum/dist/extension.js'); + $view->getCss()->addFile(__DIR__.'/../less/forum/extension.less'); + + $view->loadModule('flarum/embed/main'); + $view->setLayout(__DIR__.'/../views/embed.blade.php'); + + return $view; + } + + /** + * {@inheritdoc} + */ + public function getAssets() + { + return $this->assets->make('embed'); + } +} diff --git a/extensions/embed/src/EmbeddedDiscussionController.php b/extensions/embed/src/EmbeddedDiscussionController.php new file mode 100644 index 000000000..fe578745b --- /dev/null +++ b/extensions/embed/src/EmbeddedDiscussionController.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Embed; + +use Flarum\Api\Client; +use Flarum\Forum\Controller\DiscussionController; +use Flarum\Forum\UrlGenerator; +use Illuminate\Contracts\Events\Dispatcher; + +class EmbeddedDiscussionController extends DiscussionController +{ + /** + * {@inheritdoc} + */ + public function __construct(EmbedWebApp $webApp, Dispatcher $events, Client $api, UrlGenerator $url) + { + parent::__construct($webApp, $events, $api, $url); + } +} diff --git a/extensions/embed/src/Listener/AddEmbedRoute.php b/extensions/embed/src/Listener/AddEmbedRoute.php index 299c89819..da20d33ea 100644 --- a/extensions/embed/src/Listener/AddEmbedRoute.php +++ b/extensions/embed/src/Listener/AddEmbedRoute.php @@ -28,6 +28,6 @@ class AddEmbedRoute */ public function addEmbedRoute(ConfigureForumRoutes $event) { - $event->get('/embed/{id:\d+(?:-[^/]*)?}[/{near:[^/]*}]', 'embed.discussion', 'Flarum\Embed\DiscussionController'); + $event->get('/embed/{id:\d+(?:-[^/]*)?}[/{near:[^/]*}]', 'embed.discussion', 'Flarum\Embed\EmbeddedDiscussionController'); } } diff --git a/extensions/embed/src/Listener/FlushEmbedAssetsWhenSettingsAreChanged.php b/extensions/embed/src/Listener/FlushEmbedAssetsWhenSettingsAreChanged.php index acb06c5f8..5e0b9ffcf 100644 --- a/extensions/embed/src/Listener/FlushEmbedAssetsWhenSettingsAreChanged.php +++ b/extensions/embed/src/Listener/FlushEmbedAssetsWhenSettingsAreChanged.php @@ -11,6 +11,7 @@ namespace Flarum\Embed\Listener; use Flarum\Embed\DiscussionController; +use Flarum\Embed\EmbedWebApp; use Flarum\Event\ExtensionWasDisabled; use Flarum\Event\ExtensionWasEnabled; use Flarum\Event\SettingWasSet; @@ -21,14 +22,14 @@ class FlushEmbedAssetsWhenSettingsAreChanged /** * @var DiscussionController */ - protected $controller; + protected $webApp; /** - * @param DiscussionController $controller + * @param EmbedWebApp $webApp */ - public function __construct(DiscussionController $controller) + public function __construct(EmbedWebApp $webApp) { - $this->controller = $controller; + $this->webApp = $webApp; } /** @@ -47,12 +48,12 @@ class FlushEmbedAssetsWhenSettingsAreChanged public function flushCss(SettingWasSet $event) { if (preg_match('/^theme_|^custom_less$/i', $event->key)) { - $this->controller->flushCss(); + $this->webApp->getAssets()->flushCss(); } } public function flushAssets() { - $this->controller->flushAssets(); + $this->webApp->getAssets()->flush(); } }