Warning: session_start(): open(/var/lib/php/sessions/sess_o14n8ph31tp1aokr7fiq9db96h, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51

Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass HTMLFramer1 { S title; // will be HTML-encoded new L navItems; new LS contents; new LS headElements; bool navBeforeTitle; new L willRender; srecord NavItem(S link, S html) { bool targetBlank; } swappable S render() { callFAll(willRender); ret hhtml(hhead(htitle(title) + lines(headElements)) + hbody( (navBeforeTitle ? renderNav() + renderTitle() : renderTitle() + renderNav()) + lines(contents))); } swappable S renderTitle() { ret h1(htmlEncode2(title)); } swappable S renderNav() { if (empty(navItems)) ret ""; ret p(joinWithVBar(map(navItems, ni -> ahref_possiblyTargetBlank(ni.link, ni.html, ni.targetBlank)))); } void addNavItem(S html) { navItems.add(new NavItem(null, html)); } void addNavItem(S link, S html, O... _) { navItems.add(setAll(new NavItem(link, html), filterParams(_, 'targetBlank))); } void addInHead(O html) { headElements.add(str(html)); } // add contents: TODO move things to head automatically void add(O html) { addIfNempty(contents, strOrEmpty(html)); } }