1 /** 2 * Copyright © Webd 2018 3 * License: MIT (https://github.com/DiamondMVC/Webd/blob/master/LICENSE) 4 * Author: Jacob Jensen (bausshf) 5 */ 6 module webd.modules.basemodules; 7 8 import diamond.views.view; 9 10 import webd.modules; 11 import webd.web.page; 12 13 /// Page render arguments. 14 final class PageRenderArgs 15 { 16 private: 17 /// The view. 18 View _view; 19 /// The page. 20 Page _page; 21 22 public: 23 /** 24 * Creates new page render arguments. 25 * Params: 26 * view = The view getting rendered. 27 * page = The page getting rendered. 28 */ 29 this(View view, Page page) 30 { 31 _view = view; 32 _page = page; 33 } 34 35 @property 36 { 37 /// Gets the view getting rendered. 38 View view() { return _view; } 39 40 /// Gets the page getting rendered. 41 Page page() { return _page; } 42 } 43 } 44 45 /// Wrapper around a page render subscriber. 46 abstract class PageRenderSubscriber : ModulePackage 47 { 48 protected: 49 /// Creates a new page render subscriber. 50 this() 51 { 52 subscribeEvent("render", new ModuleAction!PageRenderArgs(&handleRender)); 53 } 54 55 /// Override this to handle the rendering of a page. 56 abstract void onRender(PageRenderArgs args); 57 58 private: 59 /** 60 * Handles the rendering of a page. 61 * Params: 62 * args = The page render arguments. 63 */ 64 void handleRender(PageRenderArgs args) 65 { 66 onRender(args); 67 } 68 }