<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- generator="Chisimba" -->
<?xml-stylesheet href="http://manalang.com/wp-content/rss2.xsl" type="text/xsl"?>
<rss version="2.0">
    <channel>
        <title>Anonymous user (not logged in)</title>
        <description>Chisimba powered blog of Anonymous user (not logged in)</description>
        <link>http://www.dkeats.com/index.php?module=blog&amp;action=randblog&amp;userid=</link>
        <lastBuildDate>Thu, 09 Sep 2010 18:18:45 +0200</lastBuildDate>
        <generator>Chisimba</generator>
        <item>
            <title>A challenge to African institutions and governments (#Chisimba, #AVOIR)</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_26342_1283675573&amp;amp;userid=</link>
            <description><![CDATA[<p>
	It is not unusual for governments and institutions to make use of their own processes to help foster development, despite the fact that this may create some risks that have to be managed. One of the reasons the USA is so strong on innovation and innovation-based industries such as ICT is that it takes managed risks that lead to development, sometimes explicitly and sometimes implicitly. <br /> 
	 <br /> 
	When it comes to Africa, however, it seems that we are often unwilling to believe in ourselves sufficiently to take some calculated risks for our own development. There are two kinds of capital that leave Africa every time we make a choice about software where the bulk of activity in its production and extension is outside: money, and ideas. The least important of these, and the easiest to understand, is money. When idea capital flows elsewhere, and when local ideas are prevented from finding their way into the economy, then development opportunities are moved elsewhere. <br /> 
	 <br /> 
	One of the reasons for this idea outflow is this concept of &#39;risk&#39;, which is probably the most misunderstood concept that we have in our lexicon. Someone actually said to me the other day, &#39;you are creating risks&#39;! I should put a double explanation point there. Of course I am, we all do; the only way to not create risks is to be dead and post cremation. Risk in the abstract is a meaningless concept, and often confused with hazard, and used as a stick to beat something to death. The perception of risk is a major impediment to development, and to institutions taking part in activities that lead to their own strengthening. <br /> 
	 <br /> 
	In the African Virtual Open Initiatives and Resources (AVOIR) project we have brought together African software engineers in higher education institutions across a number of African countries. We have created a world class software product, and a talented group of young people who are building and extending it every day. <br /> 
	 <br /> 
	We have the capacity in this network to create Africa-led innovation. The only thing that is slowing us down is the failure of institutions to play a leadership role in fostering and promoting African software development. The perception of risk plays a major role. <br /> 
	 <br /> 
	AVOIR was started in 2004 by a number of senior academics, IT people, and university managers from African universities. I was the first chair of the AVOIR board, but handed this over to Dr Elijah Omwenga my counterpart at the University of Nairobi just before I moved to Wits University. Members of AVOIR believe passionately that if we collaborate in Africa, we can produce software and other innovations that are as good or better than anything produced anywhere, and that the hope for the future lies with the young people and ensuring that they are able to create world class products and solutions. For that reason, I still participate in the mentoring of young African developers in my personal time despite having a rather busy day job. Many of them have gone on to careers in industry in their country, taking with them the skills that they acquire in the AVOIR network. <br /> 
	 <br /> 
	I consider my participation in this network my way of giving something back and helping create hope for young people. The only gain I get out of this is the satisfaction of making a difference. I have found the level of talent in this network to be truly magnificent. For African institutions to reject that talent and its output, in favour of the development of talent elsewhere,&nbsp; would be a tragedy, and a complete failure of the role of institutions in fostering development. <br /> 
	 <br /> 
	Some of our institutions understand this, and take calculated and managed risks to foster this kind of local development. The University of Nairobi has implemented Chisimba for its eLearning platform, and a couple of other uses. It manages the risk by participating in the AVOIR network, having a local team to support and manage the application, and it participates in the software development. The University of Dar es Salaam Computer Centre have developed business opportunities around both eLearning and othere applications of Chisimba. For example, they developed the national higher education application system on Chisimba. The University of the Western Cape employ the products of AVOIR, and have both development and support capacity in the institution, deploying eLearning, mobile advice services, portal, electronic thesis and dissertation, and other Chisimba applications. Wits University went live in May with the eLearning application, has deployed an online presentation system, created its onine applications system on Chisimba and is going live with its portal/website in October. The latter is based on a combination of Chisimba and some internally developed tools that really demonstrate the kind of excellence that we have in our institutions. We have created capacity to do this kind of deployment and development for less than the cost of a single proprietary application. <br /> 
	 <br /> 
	If we look at the products, proprietary and open source, that compete with Chisimba, almost all of them had an institutional origin, and one or more institutions who took the earliest and most difficult to manage risks. From that institutional base they expanded, and became global products. <br /> 
	 <br /> 
	So my challenge to African institutions and governments is join us in this one small aspect of African development. Help us build African software, and more importantly, young African engineers and implementers, into a global industry that we help create. Are we ready for it? Or do we prefer dependence?</p>
<ul>
	<li>
		<a href="http://avoir.uwc.ac.za" target="_blank">AVOIR</a></li>
	<li>
		<a href="http://www.chisimba.com" target="_blank">Chisimba</a></li>
	<li>
		Chisimba <a href="http://www.uwc.ac.za" target="_blank">used as a portal</a></li>
	<li>
		Chisimba <a href="http://presentations.chisimba.com" target="_blank">used as an online presentation system</a></li>
	<li>
		Chisimba <a href="http://elearn.wits.ac.za" target="_blank">used in eLearning</a></li>
	<li>
		And of course, used as a blog on this site</li>
</ul>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>How to return data for Ajax in Chisimba</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_13138_1283278157&amp;amp;userid=</link>
            <description><![CDATA[<p>
	In any Chisimba module, based on the MVC architectural paradigm, you will have a controller and templates, and of course you might have models and a variety of helper classes. Here, we are only concerned about the controller and templates.</p>
<p>
	The controller is in the root of the module, and is named controller.php. Templates may be of three kinds: content, layout, and page. In general, we do not need to touch page or layout templates, only the content templates.</p>
<p>
	<strong>Use case</strong>: You want to return some data for an Ajax call, so you can do something with it in Javascript and insert it into the page. You need to return only the required data without any of the user interface components or webpage components that Chisimba normally renders.</p>
<p>
	Lets say that you have a module called <em>dosomething</em>. You are calling for a user name through an Ajax call. The URL you are calling from within your Ajax code might be something like:</p>
<p style="margin-left: 40px;">
	http://localhost/index.php?module=dosomething&amp;action=getname</p>
<p>
	which you expect to return just the name, say <span style="color: rgb(178, 34, 34);">Derek Keats</span>.</p>
<p>
	Using the standard appoach, without suppressing all the user interface elements, you will get data that are unusable in Ajax. You need to suppress all that using a custom page template.</p>
<p>
	The Controller for your module would have a method __getname() <br /> 
	which would do something like: <br /> 
	 <br /> 
	public function __getname() <br /> 
	{ <br /> 
	&nbsp;&nbsp;&nbsp; $str = &quot;Derek Keats&quot;; <br /> 
	&nbsp;&nbsp;&nbsp; $this-&gt;setVarByRef(&quot;str&quot;, $name); <br /> 
	&nbsp;&nbsp;&nbsp; $this-&gt;setPageTemplate(&#39;ajax_template.php&#39;); <br /> 
	&nbsp;&nbsp;&nbsp; return &quot;ajax_tpl.php&quot;; <br /> 
	}</p>
<p>
	Note that there are two templates used here, the custom page template, ajax_template.php and the content template ajax_tpl.php. Within your module, you must have a templates directory, and inside it you must have one called <em>page</em>, and one called <em>content</em>. That is,</p>
<p>
	dosomething/templates/page/ajax_template.php <br /> 
	dosomething/templates/content/ajax_tpl.php</p>
<p>
	The file ajax_template.php should contain only</p>
<p>
	&lt;?php <br /> 
	echo $this-&gt;getLayoutContent(); <br /> 
	?&gt; <br /> 
	 <br /> 
	The file ajax_tpl.php should contain only</p>
<p>
	 <br /> 
	&lt;?php <br /> 
	echo $str; <br /> 
	?&gt;</p>
<p>
	That is it. Any data can be returned for use by Ajax calls in this way.</p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>FLOSSInclude workshop concludes in Brussels</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_3121_1281376766&amp;amp;userid=</link>
            <description><![CDATA[<p>
	The FLOSSInclude project&rsquo;s final workshop was recently held in Brussels (7th to 8th June 2010). All of the consortium members attended the workshop and gave a presentation on their pilots and case studies of FLOSS projects within their institution or region.</p>
<p>
	<img alt="No caption provided" src="/index.php?module=filemanager&amp;action=file&amp;id=gen13Srv30Nme10_56717_1281377078&amp;filename=Selection_015.png&amp;type=.png" style="width: 479px; height: 321px;" /></p>
<p>
	The FLOSSInclude project http://www.flossinclude.org/ is a European commission (EC) funded project and aimed to build on the corpus of FLOSS research that the EC had built up. The study also built on the highly successful FP5 FLOSSPols project http://www.flosspols.org/ and the FP6 FLOSSWORLD project http://www.flossworld.org/. The FLOSSInclude study was a more focused study than its predecessors and focused more on regional FLOSS initiatives and FLOSS needs within the target regions. The reports and data collected on the project will be used to be a European Commission roadmap on FLOSS research and possibly shape future FLOSS policy in Europe and elsewhere.</p>
<p>
	The major areas addressed by the FLOSSInclude study were the following:</p>
<ul>
	<li>
		Analysis of available data to identify key problem areas and areas of blocked potential for FLOSS in the target regions. Dissemination and networking, to identify and federate local and regional initiatives</li>
	<li>
		Requirements analysis, to show with concrete cases the specific technical, business and socio-political needs for the growth of FLOSS use, deployment and development in target regions</li>
	<li>
		Validation and pilots, to ensure that FLOSS solutions, tools and services can be cost-effective and practical</li>
	<li>
		Prepare a cooperation roadmap, supported by regional initiatives, concrete cases for clearly identified requirements, with solution areas proposed that have been validated through pilots.</li>
</ul>
<p>
	<img alt="No caption provided" src="/index.php?module=filemanager&amp;action=file&amp;id=gen13Srv30Nme10_13328_1281377070&amp;filename=Selection_016.png&amp;type=.png" /></p>
<p>
	 <br /> 
	FLOSSInclude in Africa was represented by the University of the Western Cape (UWC) and the India Kofi Annan Centre of Excellence in ICT in Ghana. Both Nic Appleby and Enver Ravat gave presentations on the case study &ldquo;e-learning and Kewl 3.0: the implementation of web 3.0 advanced technologies&rdquo;). The case study explored e-learning at UWC and included a range of issues from e-learning structures to development problems of the world class, locally developed e-learning platform (Kewl 3.0) to the challenges faced by the e-learning team at implementing a sound e-learning policy at UWC and placing University of the Western Cape at the vanguard of e-learning innovation in South Africa. It also documented the use of e-learning outside of the University within the regional context. For more information on the case study and project please mail Enver Ravat (at eravat2@gmail.com).</p>
<p>
	<img alt="No caption provided" src="/index.php?module=filemanager&amp;action=file&amp;id=gen13Srv30Nme10_12035_1281377061&amp;filename=Selection_017.png&amp;type=.png" style="width: 481px; height: 363px;" /></p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>Chisimba vuvuzelas and learning in Polokwane</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_65797_1279805563&amp;amp;userid=</link>
            <description><![CDATA[ <br /> 
<div style="text-align: left; padding: 3px;"> <br /> 
<a href="http://www.flickr.com/photos/52238056@N04/4817639975/" title="photo sharing"><img src="http://farm5.static.flickr.com/4142/4817639975_74fd962ac7.jpg" style="border: solid 2px #000000;" alt="" /></a> <br /> 
 <br />  <br /> 
<span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/52238056@N04/4817639975/">Participants-Keen-To-Learn</a>, originally uploaded by <a href="http://www.flickr.com/people/52238056@N04/">Paul Mungai</a>.</span> <br /> 
</div> <br /> 
<p> <br /> 
I bet this is the only software framework where programmers get a free Vuvuzela! <br /> 
</p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>Le Vuvuzela de #Chisimba</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_51187_1279118007&amp;amp;userid=</link>
            <description><![CDATA[ <br /> 
<div style="text-align: left; padding: 3px;"> <br /> 
<a href="http://www.flickr.com/photos/nitsckie/4792874668/" title="photo sharing"><img src="http://farm5.static.flickr.com/4082/4792874668_135f938da2.jpg" style="border: solid 2px #000000;" alt="" /></a> <br /> 
 <br />  <br /> 
<span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/nitsckie/4792874668/">Le Vuvuzela</a>, originally uploaded by <a href="http://www.flickr.com/people/nitsckie/">wesleynitsckie</a>.</span> <br /> 
</div> <br /> 
<p> <br /> 
The guys at UWC created a Chisimba vuvuzela to take to OSCON. If this doesn't get attention, nothing willl! <br /> 
</p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>Digital business card in #Chisimba</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_98113_1278600423&amp;amp;userid=</link>
            <description><![CDATA[<p>
	The digital business card module is incomplete, but works and provides a vcard compatible business card for Chisimba. This is for someone who is experimenting with it.</p>
<p>
	Currently, the fields are stored in user paramters (MENU: user | user configuration). The plan is to move this to triplestore as soon as triplestore has a user interface (no planned timeline, no list response to query). The following fields will generate the business card:</p>
<p>
	ABOUT ME: <br /> 
	tagline</p>
<p>
	SOCIAL NETWORKING: <br /> 
	africatorurl <br /> 
	deliciousurl <br /> 
	diggurl <br /> 
	facebookurl <br /> 
	flickrurl <br /> 
	friendfeedurl <br /> 
	googleurl <br /> 
	identicaurl <br /> 
	linkedinurl <br /> 
	mutiurl <br /> 
	operaurl <br /> 
	picasaurl <br /> 
	qikurl <br /> 
	slideshareurl <br /> 
	technoratiurl <br /> 
	twitterurl <br /> 
	youtubeurl <br /> 
	 <br /> 
	ADDRESSES: <br /> 
	addr_home <br /> 
	ddr_city_home <br /> 
	addr_city_work <br /> 
	addr_postalcode_home <br /> 
	addr_postalcode_work <br /> 
	 <br /> 
	MAP: <br /> 
	latitude <br /> 
	longitude <br /> 
	 <br /> 
	PHONE: <br /> 
	phone_home <br /> 
	phone_work <br /> 
	phone_cell <br /> 
	 <br /> 
	TAGS: <br /> 
	 <br /> 
	tags <br /> 
	&nbsp;&nbsp; separated by a dash - <br /> 
	&nbsp;&nbsp; e.g. geek-elearning-chisimba-php <br /> 
	 <br /> 
	WEBSITES: <br /> 
	homepage</p>
<p>
	Happy experimenting!</p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>mLearning with #Chisimba</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_79026_1278584179&amp;amp;userid=</link>
            <description><![CDATA[ <br /> 
<div style="text-align: left; padding: 3px;"> <br /> 
<a href="http://www.flickr.com/photos/paulscott56/4770604045/" title="photo sharing"><img src="http://farm5.static.flickr.com/4121/4770604045_8a64858b5c.jpg" style="border: solid 2px #000000;" alt="" /></a> <br /> 
 <br />  <br /> 
<span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/paulscott56/4770604045/">15/365 - mLearning with Chisimba</a>, originally uploaded by <a href="http://www.flickr.com/people/paulscott56/">paulscott56</a>.</span> <br /> 
</div> <br /> 
<p> <br /> 
Paul Scott shows the login screen for Chisimba's mLearning skin. The mLearning skin was developed for use of UWC's eLearning site on mobile phones. <br /> 
</p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>My blockview: personal templates in #Chisimba</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_39098_1278329789&amp;amp;userid=</link>
            <description><![CDATA[<p>
	There is a new module in Chisimba that I wrote at the airport on my way to Madrid. It is very simple, and it only exists to demonstrate the power of dynamic templates. However, it could be expanded to provide for a system of user created templates that allow users to create their own look and feel. The module is myblockview (My block view). <br /> 
	 <br /> 
	To use it, a user may create a templates directory on a Chisimba server using file manager. In that directory, then create a new directory, one for each template, and load into it a file called template.txt file containing a typical dynamic template of the same kind you would use in a module powered by dynamic templates. <br /> 
	 <br /> 
	Let&#39;s say you create a directory called templates, and then in it you create a directory called default. Then you would create a template contianing the three column divs that you would expect in Chisimba as follows. <br /> 
	 <br /> 
	&nbsp;&lt;div id=&quot;Canvas_Content_Body_Region1&quot;&gt; <br /> 
	&nbsp;&nbsp; &nbsp;Put some content here for the left column <br /> 
	&nbsp;&nbsp;&nbsp; &lt;/div&gt; <br /> 
	&nbsp;&nbsp;&nbsp; &lt;div id=&quot;Canvas_Content_Body_Region3&quot;&gt; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Put some content here for the right column <br /> 
	&nbsp;&nbsp;&nbsp; &lt;/div&gt; <br /> 
	&nbsp;&nbsp;&nbsp; &lt;div id=&quot;Canvas_Content_Body_Region2&quot;&gt; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Put some content here for the wider, middle column. <br /> 
	&nbsp;&nbsp;&nbsp; &lt;/div&gt; <br /> 
	&lt;/div&gt; <br /> 
	 <br /> 
	Of course, this is not very powerful in itself, but if you combine this form of dynamic canvas with the dynamic blocks specified using JSON, then you can have your own design for a Chisimba interface very quickly. <br /> 
	 <br /> 
	This module is just a proof of concept to show the power of the dynamic canvas approach to templates. Took me &lt;30 minutes to make it, sitting in the airport. Hopefully, this can stimulate some other ideas.&nbsp; To use it, install the myblockview module and play around with creating your own templates as described above. At the time of writing, there is little or no error trapping or checking, so if you use it, be warned, it is developer grade code, not yet ready for unleashing on users.</p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>External blocks with dynamic templates in #Chisimba</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_51801_1278235681&amp;amp;userid=</link>
            <description><![CDATA[<p>
	Chisimba can display blocks on another Chisimba server, using the dynamic blocks module with the blocks specified in ajax format in a content or personal template. To display blocks in response to an external request, the host server must have the externalblocks module installed (in modules, not in core). In addition, the ALLOW_EXTERNAL_BLOCKS property of the Blocks module must be set to 1 on the host server. If this is not set to 1, then the host will not supply external blocks even with the externalblocks module installed. <br /> 
	 <br /> 
	To be valid for display externally, blocks must have a property expose set to true. This is done by the developer at thet ime of development of the block, and would normally be done in the init() method of the block as follows: <br /> 
	 <br /> 
	&nbsp;&nbsp;&nbsp; public function init() <br /> 
	&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;title = &quot;Demonstration block&quot;; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;expose = TRUE; <br /> 
	&nbsp;&nbsp;&nbsp; } <br /> 
	 <br /> 
	External blocks are rendered by the dynamiccanvas module, so only module that use the dynamiccanvas for displaying content can display dynamic blocks, although a filter is in development to provide external blocks within content. The minimal JSON content to display an external block is as follows: <br /> 
	 <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;externalblock&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;server&quot; : &quot;http://server/chisimbapath/&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;modulecode&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;blockcode&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	 <br /> 
	All the other parameters of the dynamic blocks JSON are available to external blocks. For example, <br /> 
	 <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;externalblock&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;server&quot; : &quot;http://localhost/ch/&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;dynamiccanvas&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;thirdtest&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	 <br /> 
	will display the thirdtest block from the dynamiccanvas module on http://localhost/ch. The following will display the same block without a title. <br /> 
	 <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;externalblock&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;server&quot; : &quot;http://localhost/ch/&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;dynamiccanvas&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;thirdtest&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;showTitle&quot;:0 <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	 <br /> 
	The only difference between the JSON to display regular blocks and that to display external blocks is in the two lines <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;externalblock&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;server&quot; : &quot;http://localhost/ch/&quot;, <br /> 
	 <br /> 
	instead of just <br /> 
	 <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	 <br /> 
	for an internal block.</p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
        <item>
            <title>Block-based dynamic canvas for #Chisimba</title>
            <link>http://www.dkeats.com/index.php?module=blog&amp;amp;action=viewsingle&amp;amp;postid=gen13Srv30Nme10_83700_1277978330&amp;amp;userid=</link>
            <description><![CDATA[<p>
	Since I code for relaxation, for the past few days of my holiday I have been doing some work on Chisimba to improve the way in which it renders its look and feel, as well as the way in which it parses templates to render content. Everything I do is backward compatible.</p>
<p>
	Following on from the idea of dynamic canvases, I have made it possible for Chisimba to render an entire template based on functionality of Chisimba that we call blocks. There are two types of blocks in Chisimba, narrow blocks and wide blocks. Narrow blocks work on the side columns of 2 and 3 column layout, and wide blocks work on the middle area of 1, 2 and 3 column layout.</p>
<p>
	To use blocks to make a template, it may be necessary to use output buffering. To do this, add the following to the top of the template:</p>
<p style="margin-left: 40px;">
	&lt;?php <br /> 
	ob_start(); <br /> 
	?&gt;</p>
<p>
	Then add the following to the bottom of the template:</p>
<p style="margin-left: 40px;">
	&lt;?php <br /> 
	// Get the contents for the layout template <br /> 
	$pageContent = ob_get_contents(); <br /> 
	ob_end_clean(); <br /> 
	$this-&gt;setVar(&#39;pageContent&#39;, $pageContent); <br /> 
	?&gt;</p>
<p>
	You then need a layout template in your module that contains:</p>
<p style="margin-left: 40px;">
	&lt;?php <br /> 
	$objBlocks = $this-&gt;getObject(&#39;blockfilter&#39;, &#39;dynamiccanvas&#39;); <br /> 
	$pageContent = $this-&gt;getVar(&#39;pageContent&#39;); <br /> 
	$pageContent = $objBlocks-&gt;parse($pageContent); <br /> 
	echo $pageContent; <br /> 
	?&gt;</p>
<p>
	In your controller, for methods that will render the block-based dynamic canvas, you need to ensure that you enable the layout template using:</p>
<p style="margin-left: 40px;">
	$this-&gt;setLayoutTemplate(&#39;demo_layout.php&#39;);</p>
<p>
	For this to work, you need a version 3.0+ skin, and you need to use the Chisimba Canvas layout, which is as follows:</p>
<p style="margin-left: 40px;">
	&lt;div id=&quot;Canvas_Content_Body_Region1&quot;&gt;&lt;/div&gt; <br /> 
	&lt;div id=&quot;Canvas_Content_Body_Region3&quot;&gt;&lt;/div&gt; <br /> 
	&lt;div id=&quot;Canvas_Content_Body_Region2&quot;&gt;&lt;/div&gt;</p>
<p>
	Note that Canvas_Content_Body_Region2 is the middle, but needs to be presented last in order for the columns to float and align correctly.</p>
<p>
	For 2-column layouts this would be:</p>
<p style="margin-left: 40px;">
	&lt;div id=&quot;Canvas_Content_Body_Region1&quot;&gt;&lt;/div&gt; <br /> 
	&lt;div id=&quot;Canvas_Content_Body_Region2&quot;&gt;&lt;/div&gt;</p>
<p>
	Blocks are inserted using JSON syntax as follows:</p>
<p style="margin-left: 40px;">
	&nbsp;{ <br /> 
	&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;modulename&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;blockname&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;blocktype&quot; : &quot;blocktype&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;titleLength&quot; : &quot;titlelength&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;wrapStr&quot; : 0|1, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;showToggle&quot; : 0|1, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;hidden&quot; : &quot;value, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;showTitle&quot; : 0|1, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;cssClass&quot; : &quot;cssClass&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;cssId &quot; : &quot;cssId&quot; <br /> 
	&nbsp;}</p>
<p>
	Thus, adding the above block to the left column in such a template would consist of including it in the Canvas_Content_Body_Region1 div as follows:</p>
<p style="margin-left: 40px;">
	&lt;div id=&quot;Canvas_Content_Body_Region1&quot;&gt;</p>
<p style="margin-left: 80px;">
	&nbsp;{ <br /> 
	&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;modulename&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;blockname&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;blocktype&quot; : &quot;blocktype&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;titleLength&quot; : &quot;titlelength&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;wrapStr&quot; : 0|1, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;showToggle&quot; : 0|1, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;hidden&quot; : &quot;value, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;showTitle&quot; : 0|1, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;cssClass&quot; : &quot;cssClass&quot;, <br /> 
	&nbsp;&nbsp;&nbsp; &quot;cssId &quot; : &quot;cssId&quot; <br /> 
	&nbsp;}</p>
<p style="margin-left: 40px;">
	&lt;/div&gt;</p>
<p>
	Everything except display, module and block are optional. A template made up in this way might look like:</p>
<p style="margin-left: 40px;">
	&lt;?php <br /> 
	ob_start(); <br /> 
	$objFix = $this-&gt;getObject(&#39;cssfixlength&#39;, &#39;htmlelements&#39;); <br /> 
	$objFix-&gt;fixThree(); <br /> 
	?&gt; <br /> 
	 <br /> 
	&lt;div id=&quot;threecolumn&quot;&gt; <br /> 
	&nbsp;&nbsp;&nbsp; &lt;div id=&quot;Canvas_Content_Body_Region1&quot;&gt; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;dynamiccanvas&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;test1&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;canvas&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;selecttype&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp; &lt;/div&gt; <br /> 
	&nbsp;&nbsp;&nbsp; &lt;div id=&quot;Canvas_Content_Body_Region3&quot;&gt; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;dynamiccanvas&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;test2&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;security&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;login&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;blocks&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;wrapper&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;blocks&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;table&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;filemanager&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;userfiles&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp; &lt;/div&gt; <br /> 
	&nbsp;&nbsp;&nbsp; &lt;div id=&quot;Canvas_Content_Body_Region2&quot;&gt; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;userdetails&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;userdetails&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;block&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;dynamiccanvas&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;nonexistentblock&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;externalblock&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;server&quot; : &quot;http://localhost/ch/&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;dynamiccanvas&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;thirdtest&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;showTitle&quot;:0 <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;display&quot; : &quot;externalblock&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;server&quot; : &quot;http://localhost/ch/&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;module&quot; : &quot;canvas&quot;, <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;block&quot; : &quot;canvasviewer&quot; <br /> 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> 
	&nbsp;&nbsp;&nbsp; &lt;/div&gt; <br /> 
	&lt;/div&gt; <br /> 
	 <br /> 
	&lt;?php <br /> 
	// Get the contents for the layout template <br /> 
	$pageContent = ob_get_contents(); <br /> 
	ob_end_clean(); <br /> 
	$this-&gt;setVar(&#39;pageContent&#39;, $pageContent); <br /> 
	?&gt;</p>
<p>
	Note that the lines</p>
<p style="margin-left: 40px;">
	$objFix = $this-&gt;getObject(&#39;cssfixlength&#39;, &#39;htmlelements&#39;); <br /> 
	$objFix-&gt;fixThree();</p>
<p>
	are there to equalize the columns. This need will shortly be removed.</p>
<p>
	For a working example of this, see the dynamiccanvas module.&nbsp;</p>]]></description>
            <author>Anonymous user (not logged in)&amp;lt;Anonymous user (not logged in)&amp;gt;</author>
            <pubDate>Thu, 09 Sep 2010 16:18:45 +0200</pubDate>
        </item>
    </channel>
</rss>
