<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[Frdlweb: All site blogs: April 2026}]]></title>
	<link>https://frdl.de/blog/all/1775001600/1777593600</link>
	<atom:link href="https://frdl.de/blog/all/1775001600/1777593600" rel="self" type="application/rss+xml" />
	<description><![CDATA[}]]></description>
		<item>
	<guid isPermaLink="true">https://frdl.de/blog/view/1483/webfan-ui-concept-4</guid>
	<pubDate>Thu, 09 Apr 2026 16:08:53 +0000</pubDate>
	<link>https://frdl.de/blog/view/1483/webfan-ui-concept-4</link>
	<title><![CDATA[Webfan UI - Concept 4]]></title>
	<description><![CDATA[<p>Webfan is now testing the new successor of an UI concept implementing components that has been around in the stack since years.</p><p>It is based in the following components or forks of them:</p><p>&nbsp;</p><ul><li><strong>StartDir\Html\Container</strong> Compiles and renders HTML. It uses<ul><li><a href="https://github.com/ivopetkov/html-server-components-compiler">ivopetkov/html-server-components-compiler</a> fork <a href="https://startdir.de/install/?source=Webfan%5CWebfat%5CHTMLServerComponentsCompiler">Webfan\Webfat\HTMLServerComponentsCompiler</a> and the <i><strong>insane</strong></i> PHP-NodeJs-styler <a href="https://startdir.de/install/?source=Webfan%5CScript%5CModules">Webfan\Script\Modules</a></li><li><a href="https://github.com/krzksz/phCompile">krzksz/phcompile</a> for <i><strong>Angularifary</strong></i>!</li></ul></li><li><i><strong>Angularifary </strong>scopify-fetch </i><a href="https://cdn.frdl.de/@webfan3/website/patches/angularjs-make-app.js">Directive</a> is used to asynchronous update the pre-rendered Server-HTML in the browser:&nbsp; Example: <code>&lt;span&nbsp;</code><br /><code>&nbsp;scopify-fetch</code><br /><code>&nbsp; url="https://webfan.de/@&lt;?php echo $component-&gt;subject; ?&gt;/actor.json"</code><br /><code>&nbsp; interval="35"&nbsp;</code><br /><code>&nbsp; increaseinterval="15"&nbsp;</code><br /><code>&nbsp; global&nbsp;</code><br /><code>&nbsp; removemissing="false"&nbsp;</code><br /><code>&nbsp; assign="ItemActor"</code><br /><code>&nbsp; transform="actorTransform"&nbsp;</code><br /><code>&gt;&lt;/span&gt;</code>&nbsp;</li><li><a href="https://github.com/mmamedov/page-cache"><strong>mmamedov/page-cache</strong></a> is &nbsp;needed in the front/top of the UI-Controller as the above rendering can be <i><strong>extremely slow</strong></i>!!!</li></ul><p>&nbsp;</p><p><strong>Example Code-Snippet:</strong></p><p>First register shut down function to output the HTML-Document finally:&nbsp;</p><blockquote><p>$ShutdownTasks = \frdlweb\Thread\ShutdownTasks::mutex();<br />$ShutdownTasks(function($ItemUpdater){<br />&nbsp;&nbsp;&nbsp;&nbsp;$str = @$ItemUpdater-&gt;context()-&gt;html()-&gt;compileScope( Config::get('context.scope') );<br />&nbsp;$str = str_replace(['&lt;/head&gt;'], ['&lt;/head&gt;&lt;body&gt;'], $str).'&lt;/body&gt;';<br />&nbsp;echo '&lt;!DOCTYPE html&gt;<br />&lt;html&gt;'.$str.'&lt;/html&gt;';<br />}, $ItemUpdater);</p></blockquote><p>Then write HTML:&nbsp;</p><blockquote><p>$ItemUpdater::context()-&gt;html()-&gt;write('<br />&nbsp;&lt;component src="file:'.__DIR__.'/template-main.php" subject="'.getenv('WEBFINGER_HANDLE').'" description="'.$ItemUpdater-&gt;getItem()-&gt;getData()['description'].'" /&gt;<br />');</p></blockquote><p>&nbsp;</p>]]></description>
	<dc:creator>Melanie Wehowski</dc:creator>		</item>
</channel>
</rss>
