<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>Documentation</title>
		<link>https://www.cotonti.com</link>
		<description>A forum to coordinate work on documentation</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Tue, 22 Sep 2026 15:55:10 -0000</pubDate>

		<item>
			<title>milleja46 - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	Well just some of the stuff that would be building blocks for making a theme using the variables and maybe some other useful ones for going a step further. That would be nice at least for now...</p>
]]></description>
			<pubDate>Mon, 28 Jan 2013 13:29:30 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=36904#36904]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	So, it's the "Global variable reference" you vote for. Really nice choice and shouldn't be too hard to describe if considering only the essentials.</p>
<p>
	What would the "codex" consist of?</p>
]]></description>
			<pubDate>Mon, 28 Jan 2013 12:42:00 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=36903#36903]]></link>
		</item>
		<item>
			<title>milleja46 - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	Well I only mentioned something because it seemed like the topic hadn't really been updated in so long. As well I think there needs to just be more clarification theme building specifically the different tags that can be used and everything without having to debug a page just to find it. As well 3.5.1 sounds like a good one to get done as well...Coming from wp there more or less needs to be something like their "codex" because that helped me a lot when I ran into trouble trying to write a theme(though I don't think I'll be going back to wp just because of some of the stuff I saw that went on behind the scenes with writing that software). But some kind of codex even if it just contains the essentials at the moment would be great ;)</p>
]]></description>
			<pubDate>Mon, 28 Jan 2013 11:59:29 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=36898#36898]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	The plan has not been abandoned, but I personally have a problem of prioritizing with it. I can write docs from times to times but there are so many topics to cover that it's hard to focus on something.</p>
<p>
	If people pointed to me 3-5 topics that they want most of all it would help to get them covered sooner.</p>
<p>
	There is also a temporary pause on User and Administrator docs because we plan changing both default user and admin themes in the package soon, so the screenshots would be out of date.</p>
]]></description>
			<pubDate>Mon, 28 Jan 2013 09:54:01 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=36893#36893]]></link>
		</item>
		<item>
			<title>milleja46 - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	Any news on this? Looks like it kinda fell by the wayside, and the plans are great if they could get accomplished. Don't know how much help I could be since I'm kinda a newb to the system. But it would be great to see if there might be some work on this again since I know that can ruin someone's decision to go with a system if their docs are not complete to some extent.</p>
]]></description>
			<pubDate>Sun, 27 Jan 2013 19:30:28 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=36890#36890]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	I just forgot about it :) I'll add i18n support to TOC later.</p>
]]></description>
			<pubDate>Sat, 30 Jun 2012 16:45:52 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=34829#34829]]></link>
		</item>
		<item>
			<title>GHengeveld - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	Lets focus on getting proper documentation in English first, then we can worry about supporting i18n.</p>
]]></description>
			<pubDate>Sat, 30 Jun 2012 15:56:55 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=34828#34828]]></link>
		</item>
		<item>
			<title>Dayver - Cotonti documentation plan</title>
			<description><![CDATA[<blockquote>
	<a href="https://www.cotonti.com/forums?m=posts&amp;p=34809#34809">#34809</a> <strong>Trustmaster: </strong><br /><p>
		Documentation section now has interactive Table of Contents, so it is easier to browse.</p>
</blockquote>
<p>
	But why without i18n ?</p>
]]></description>
			<pubDate>Sat, 30 Jun 2012 13:34:14 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=34827#34827]]></link>
		</item>
		<item>
			<title>Eugene - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	GREAT!!!</p>
]]></description>
			<pubDate>Thu, 28 Jun 2012 08:54:12 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=34817#34817]]></link>
		</item>
		<item>
			<title>Twiebie - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	Indeed a lot easier to browse now, nice one!</p>
]]></description>
			<pubDate>Wed, 27 Jun 2012 14:35:48 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=34810#34810]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	Documentation section now has interactive Table of Contents, so it is easier to browse.</p>
]]></description>
			<pubDate>Wed, 27 Jun 2012 11:20:06 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=34809#34809]]></link>
		</item>
		<item>
			<title>elfrenazo - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	seeker. yes, think of searching more coherent example, search for "msn messenger" see results example, search for "msn messenger 7837482130" absence of any results. ¿integrated spider?</p>
<p>
	cotonti minimize and focus on content, excellent idea. Each content titles and descriptions own goals, and avoid duplicate.</p>
]]></description>
			<pubDate>Mon, 04 Jun 2012 01:20:47 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=34564#34564]]></link>
		</item>
		<item>
			<title>pieter - [Admin] Installing new themes</title>
			<description><![CDATA[<p>
	I started something, but I don't thing I have it anymore.</p>
<p>
	I totally forgot it.<br />
	I'll check what I can do.</p>
]]></description>
			<pubDate>Fri, 02 Mar 2012 11:44:15 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=33408#33408]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	I've updated the plan status but I didn't put direct links in there.</p>
<p>
	As the poll shows, the most requested section is 2.3.</p>
<p>
	Section 1.2 feels quite empty currently too, user-contributed articles and screencasts there would help a lot.</p>
<p>
	I can write some stuff for 2.2 if I know what the important topics to cover are.</p>
<p><strong>Added 3 months later:</strong></p><p>
	 </p>
<blockquote>
	<a href="https://www.cotonti.com/forums?m=posts&amp;p=34549#34549">#34549</a> <strong>GHengeveld: </strong><br /><p>
		About the documentation section, I have some thoughts on that.</p>
	<ul><li>
			The docs should be written like a book, with a list of chapters in the sidebar so it's easy to navigate from one section to another.</li>
		<li>
			Pages should be written in a text-to-html markup language to prevent a huge mess of inconsistent html markup. My preference is Markdown. BBcode is acceptable, but not really suitable for long articles.</li>
		<li>
			The design should be minimalistic so it's easy to focus on the main content. This means the docs section should not have a header, only the topbar.</li>
		<li>
			Comments on the docs should be actively monitored and moderated. Also it should be encouraged to comment on articles so we can improve them.</li>
		<li>
			The site search should be improved or replaced with a proper crawler-based search engine such as <a href="http://www.sphider.eu/" rel="nofollow">Sphider</a>. Also, the docs should have a dedicated search field, preferably in the sidebar.</li>
	</ul><p>
		Many of these features are possible with the existing Cotonti functionality and the plugins I wrote for this purpose (autotoc, combilists and pagesiblings).</p>
	<p>
		Some good examples of docs are <a href="http://documentation.magnolia-cms.com/index.html" rel="nofollow">here</a>, <a href="http://docs.django-cms.org/en/latest/index.html" rel="nofollow">here</a> and <a href="http://plone.org/documentation" rel="nofollow">here</a>.</p>
</blockquote>
<p>
	Markdown is better for docs indeed. Though, existing entries should be kept in HTML or it will be a lot of work converting.</p>
<p>
	I'm not so sure about disabling header and footer though. I'd keep them so the site looks solid and you'd be able to get anywhere from docs.</p>
<p>
	Yeah, we need something to monitor comments on site and I think for comments <a href="http://www.cotonti.com/extensions/administration-management/lastcommentsa">lastcommentsa</a> plugin would be enough. But we also need something to log and monitor page edits if we want the docs section to be more wiki-like.</p>
<p>
	Site search needs improvement, yes. The Find module is a great thing by design but search results are often not what you expect to see. Sphinder seems to be discontinued. I'd prefer building a Sphinx-based search module. We're on a VPS, so we can afford installing it here.</p>
]]></description>
			<pubDate>Fri, 24 Feb 2012 14:22:59 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=33257#33257]]></link>
		</item>
		<item>
			<title>Macik - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	Great idea, GHengeveld! It's a "must have" item for all user friendly CMS.</p>
<p>
	So, is there any progress in this work?</p>
<p>
	I saw several new «how-to» and «tutorial» last time. Some of it can be included in this documentation (<a href="https://www.cotonti.com/docs/admin/git_maintenance" title="HOWTO Maintain your Cotonti site with Git">HOWTO Maintain your Cotonti site with Git</a> as 3.2.3, <a href="https://www.cotonti.com/docs/admin/parser_editor_management" title="Content parser and editor management">Content parser and editor management</a> as 1.2.7). and so on.</p>
<p>
	Can you update entire plan with actual states of writing and with direct links to completed parts if it uploaded to site.</p>
<p>
	Thank you.</p>
]]></description>
			<pubDate>Sun, 25 Dec 2011 21:44:57 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=32267#32267]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	I have uploaded current trunk reference generated with PHPDoc here: <a href="http://www.cotonti.com/reference/">http://www.cotonti.com/reference/</a></p>
<p><strong>Added 4 days later:</strong></p><p>
	Started applying new document structure and uploaded some documents which we've made so far.</p>
<p><strong>Added 3 days later:</strong></p><p>
	Regenerated reference with phpDoctor.</p>
]]></description>
			<pubDate>Wed, 30 Mar 2011 20:16:06 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=29227#29227]]></link>
		</item>
		<item>
			<title>Dyllon - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	i've been working on a video tutorial for creating plugins, whenever the section is finished i'll surely put it in there.</p>
]]></description>
			<pubDate>Sat, 26 Mar 2011 11:58:05 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=29127#29127]]></link>
		</item>
		<item>
			<title>GHengeveld - Cotonti documentation plan</title>
			<description><![CDATA[I've merged modules and plugins development into extension development, since they are very similar.<br />
I've also marked items which are assigned <span style="color:#CC0000">red</span>.]]></description>
			<pubDate>Sun, 20 Feb 2011 19:50:55 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=28433#28433]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[I have extended the plan up to individual articles and have marked there articles which are <span style="color:#4E9A06">already completed</span> for Siena and those which <span style="color:#CE5C00">are currently in progress</span> or need updating for Siena, with article author specified in braces. If somebody starts writing an article due to the plan, let us know and we will indicate it there. Modification proposals for the plan are still accepted.<br />
<br />
I currently save my articles as local ODT files, I plan to add them later after this site migrates to Siena as it will use HTML markup.]]></description>
			<pubDate>Sun, 20 Feb 2011 17:35:20 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=28431#28431]]></link>
		</item>
		<item>
			<title>GHengeveld - Cotonti documentation plan</title>
			<description><![CDATA[You could get started on writing an installation guide which uses the installer script which comes with Siena. I think you should get Siena from the trunk and install that. All documentation has to be Siena-oriented.]]></description>
			<pubDate>Tue, 09 Nov 2010 05:34:06 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26924#26924]]></link>
		</item>
		<item>
			<title>MIHDev - Cotonti documentation plan</title>
			<description><![CDATA[Hi Trustmaster,<br />
I agree we need the key articles planned first.<br />
I can contribute on the Modules and Plugins, Installation and a new multi-site installation document.<br />
I have freed up some more of my time to work on Cotonti documentation so feel free to let me know what you require and I will endeavour to get started on it.<br />
Regards]]></description>
			<pubDate>Mon, 08 Nov 2010 19:04:44 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26913#26913]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[Apart from the categories we also need to plan the essential articles which should be present and written first. I have planned these a while ago to be written for example:<br />
<ul>
<li>File and Directory Structure (3.1?)</li>
<li>Modules and Plugins Explained (2)</li>
</ul>
<br />
So we should include the key articles into the plan too and then use some indication for the task assignee and progress.]]></description>
			<pubDate>Thu, 21 Oct 2010 21:43:43 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26737#26737]]></link>
		</item>
		<item>
			<title>GHengeveld - Cotonti documentation plan</title>
			<description><![CDATA[<strong>Added 2 chapters:</strong><br />
- Global variable reference<br />
- Resource strings reference<br />
<br />
<strong>Also changed the point about tutorials:</strong><br />
Tutorial-style documentation can be used when appropriate, for the Installation chapter for example. More specific/niche tutorials get their own listing and could be posted in the Cotonti.com 2.0 blog.]]></description>
			<pubDate>Thu, 21 Oct 2010 19:02:27 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26734#26734]]></link>
		</item>
		<item>
			<title>MIHDev - Cotonti documentation plan</title>
			<description><![CDATA[Fair point :), I think the PDF idea is certainly an attractive prospect espeically for newcomers as it avoids the overhead of having to wait for pages to load.<br />
<br />
I think increasing the propogation of the system is vital for its continuing development and success so I will be backing you all the way on these endeavours.<br />
<br />
Regards<br />
<br />
CCCDev]]></description>
			<pubDate>Thu, 21 Oct 2010 18:56:56 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26733#26733]]></link>
		</item>
		<item>
			<title>Trustmaster - Cotonti documentation plan</title>
			<description><![CDATA[I agree with Koradhil about long pages vs. short pages. An article should be a complete guide to a specific topic, but not overlapping with other topics.]]></description>
			<pubDate>Thu, 21 Oct 2010 16:28:27 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26732#26732]]></link>
		</item>
		<item>
			<title>GHengeveld - Cotonti documentation plan</title>
			<description><![CDATA[My idea with longer pages is to have an 'index', with links (anchors) to every page. Each header will get an anchor attached so you can 'jump' from chapter to chapter, which also enables you to link directly to a certain part of the text. The advantage of having a longer page is that it's possible to include information that is related to the topic on the same page, so that readers are more likely to find out about stuff they didn't even know existed. Also it enables you to use your browser's search function more effectively.<br />
<br />
As to your point about scrolling, for a manual it's better to scroll and read on, than to click links all the time, waiting for the pages to load while hoping to find what you need when it does. After all you will not know if the page you're going to will actually contain the information you need. If its a single page you can just 'scan' the page quickly and be done with it, or use Ctrl-F to look for a specific topic.<br />
<br />
I basically have three goals for the documentation:<br />
<ul>
<li>Increase number of Cotonti developers, which hopefully means more 3rd party extensions</li>
<li>Increase attractiveness of Cotonti to newcomers (novice and professional)</li>
<li>Reduce number of support questions in forums</li>
</ul>]]></description>
			<pubDate>Thu, 21 Oct 2010 05:44:08 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26730#26730]]></link>
		</item>
		<item>
			<title>MIHDev - Cotonti documentation plan</title>
			<description><![CDATA[Sounds great.<br />
<br />
I think that currently the documentation is good but could be tweaked and re-ordered for simplicity as outlined in your post.<br />
<br />
Some of the sections in Config.php for example are documented but not documented if you know what I mean.<br />
<br />
<strong>Lets take an example:</strong><br />
<br />
I had a requirement to develop a multi-site system on a single database using failover redundancy with shared users but not pages etc..<br />
<br />
From my prior experience with LDU and Seditio I knew this could be done easily but was an area that while posts existed for how to kind of achieve it, nothing actually told anybody how it was achievable by a non-developer user unless I missed this.<br />
<br />
Taking this into account I set about re-working the SQL scripts, tables and config files to do what I required. As a full-time software developer this was not an issue as I understand MySQL and programmatic structuring, it worked first time with a few tweaks but ideally it should be documented in an easy to understand 'official' way as it is a 'selling' point for the system for enterprises and corporate service providers even though it is open source.<br />
<br />
Koradhil the ideas you mention above are superb,<br />
<br />
one topic for discussion at the moment:<br />
<blockquote>One long page is better than multiple short pages<br />
</blockquote> - Could this be article specific as from experience with my clients alot of people do not have large monitors and hate scrolling. We may find that some articles are suited to multiple-documents eg: You can do Step 1 but Step 2 is optional thus contained in a separate document. This avoids scaring the user with an enormous amount of information which may not be pertinent to their requirement.<br />
Lets make it happen <img class="aux smiley" src="https://www.cotonti.com/./images/smilies/smile.gif" alt=":)" /><br />
<br />
Regards<br />
<br />
CCCDev]]></description>
			<pubDate>Thu, 21 Oct 2010 03:09:53 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26729#26729]]></link>
		</item>
		<item>
			<title>GHengeveld - Tutorial section</title>
			<description><![CDATA[Let's continue in <a href="http://www.cotonti.com/forums.php?m=posts&amp;q=5959">this topic</a>.]]></description>
			<pubDate>Mon, 11 Oct 2010 01:13:07 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26595#26595]]></link>
		</item>
		<item>
			<title>GHengeveld - Cotonti documentation plan</title>
			<description><![CDATA[<p>
	As one of my primary tasks as Administrator, I'm going to be working on improving the documentation area. This topic will be used to write and discuss the documentation plan (which will be the reference for the changes we're going to make. Please leave any suggestions you may have in this topic.<br />
	 </p>
<h2>
	Cotonti documentation plan (draft)</h2>
<ul><li>
		New category structure: categories and pages are numbered in order to make 'chapters'</li>
	<li>
		Documentation root is an index page listing all categories and their underlying pages</li>
	<li>
		Multi-language is implemented as alternative pages, meaning an English version is always required first</li>
	<li>
		Pages are laid out in a consistent way, using headers and code examples where appropriate</li>
	<li>
		One long page is better than multiple short pages</li>
	<li>
		Option to download a page (chapter) as PDF</li>
	<li>
		Tutorial-style documentation can be used when appropriate, for the Installation chapter for example. More specific/niche tutorials get their own listing and could be posted in the Cotonti.com 2.0 blog.</li>
	<li>
		Provide explanation for multiple platforms (Windows/Linux)</li>
	<li>
		Include some documentation in Cotonti itself (Admin Help)</li>
</ul><p>
	 </p>
<h3>
	Chapters</h3>
<p>
	 </p>
<ol><li>
		Manual
		<ol><li>
				Getting started
				<ol><li>
						<span style="color:#4E9A06;">Requirements (GHengeveld)</span></li>
					<li>
						<span style="color:#4E9A06;">Installation (GHengeveld)</span></li>
					<li>
						<span style="color:#4E9A06;">Upgrading (Trustmaster)</span></li>
					<li>
						<span style="color:#CC0000;">Initial setup and configuration (GHengeveld)</span></li>
				</ol></li>
			<li>
				Administration
				<ol><li>
						Dashboard</li>
					<li>
						Configuration</li>
					<li>
						Users &amp; Rights</li>
					<li>
						Structure &amp; Pages</li>
					<li>
						Extra fields</li>
					<li>
						Extensions</li>
					<li>
						Tools, trash &amp; misc.</li>
					<li>
						<span style="color:#008000;">Content parser and editor management (Trustmaster)</span></li>
					<li>
						<span style="color:rgb(0,128,0);">Extension updates (Trustmaster)</span></li>
					<li>
						<span style="color:rgb(0,128,0);">SEF URLs (Trustmaster)</span></li>
					<li>
						<span style="color:rgb(0,128,0);">Maintain your site with Git (Trustmaster)</span></li>
				</ol></li>
		</ol></li>
	<li>
		Extending Cotonti
		<ol><li>
				<span style="color:#4E9A06;">Directory structure (Trustmaster)</span></li>
			<li>
				Extensions
				<ol><li>
						<span style="color:#008000;">Introduction to extension development (GHengeveld)</span></li>
					<li>
						<span style="color:#008000;">Configuration values (GHengeveld)</span></li>
					<li>
						<span style="color:#008000;">Hooks (Trustmaster)</span></li>
					<li>
						<span style="color:#008000;">Converting Genoa plugins to Siena (Trustmaster)</span></li>
					<li>
						<span style="color:#008000;">Advanced plugin development tutorial (Trustmaster)</span></li>
					<li>
						<span style="color:#008000;">XTemplate for programmers (GHengeveld)</span></li>
				</ol></li>
			<li>
				Themes
				<ol><li>
						<span style="color:#4E9A06;">Overview of Cotonti Themes (musiconly)</span></li>
					<li>
						<span style="color:#4E9A06;">CoTemplate Introduction (musiconly)</span></li>
					<li>
						<span style="color:#008000;">Advanced CoTemplate for Designers (GHengeveld)</span></li>
					<li>
						<span style="color:#008000;">Custom themes for Administration panel (Trustmaster)</span></li>
					<li>
						<span style="color:#008000;">How to list available tags and blocks in CoTemplate (Trustmaster) </span></li>
					<li>
						<span style="color:#008000;">CoTemplate statements reference (Trustmaster)</span></li>
					<li>
						<span style="color:#ffa500;">Tutorial: HTML template into Cotonti Theme (Kort)</span></li>
				</ol></li>
			<li>
				Localizations
				<ol><li>
						<span style="color:#008000;">Localization files for Cotonti (Pieter)</span></li>
					<li>
						<span style="color:#008000;">Updating localizations (Steffen)</span></li>
				</ol></li>
		</ol></li>
	<li>
		Developer Guide
		<ol><li>
				General development information
				<ol><li>
						<span style="color:#4E9A06;">Technical concepts (Trustmaster)</span></li>
					<li>
						<span style="color:#4E9A06;">Coding guide &amp; style (Trustmaster)</span></li>
				</ol></li>
			<li>
				Debugging and testing
				<ol><li>
						<span style="color:#4E9A06;">Debug helpers API (Trustmaster)</span></li>
					<li>
						Using XDebug with NetBeans</li>
				</ol></li>
			<li>
				API reference
				<ol><li>
						<span style="color:#4E9A06;">Cotonti Code reference (PHPDocumentor)</span></li>
					<li>
						<span style="color:#4E9A06;">AJAX helpers (Trustmaster)</span></li>
					<li>
						<span style="color:#008000;">Authorization API</span></li>
					<li>
						<span style="color:#4E9A06;">Cache subsystem (Trustmaster)</span></li>
					<li>
						Configuration API</li>
					<li>
						Database layer</li>
					<li>
						Extensions API</li>
					<li>
						ExtraFields</li>
					<li>
						<span style="color:#ff0000;">Forms API (Trustmaster)</span></li>
					<li>
						<span style="color:#008000;">Messages, error handling and validation (Trustmaster)</span></li>
					<li>
						<span style="color:#008000;">Understanding resource strings (Trustmaster)</span></li>
					<li>
						Uploading files</li>
				</ol></li>
			<li>
				Hooks</li>
			<li>
				Global variable reference</li>
			<li>
				CoTemplate
				<ol><li>
						<span style="color:#4E9A06;">Standard tags reference</span></li>
				</ol></li>
		</ol></li>
	<li>
		Quick help
		<ol><li>
				Troubleshooting FAQ</li>
			<li>
				Code snippets</li>
		</ol></li>
	<li>
		Modules
		<ol><li>
				(list modules)</li>
		</ol></li>
	<li>
		Plugins
		<ol><li>
				(list plugins)</li>
		</ol></li>
</ol><p>
	 </p>
<p>
	<strong><span style="color:#CC0000;">Assigned</span><br /><span style="color:#F57900;">In progress</span><br /><span style="color:#4E9A06;">Completed</span></strong><br />
	 </p>
<p>
	 </p>
<h3>
	Documentation style</h3>
<h4>
	Article layout</h4>
<ol><li>
		Introduction</li>
	<li>
		General implications (basic)</li>
	<li>
		Advanced topics</li>
	<li>
		Exceptional cases</li>
	<li>
		Conclusion</li>
</ol><h4>
	Styling</h4>
<h5>
	Headings</h5>
<ul><li>
		Start at H2 (H1 is reserved for article title)</li>
	<li>
		Don't skip headings</li>
</ul><h5>
	Code blocks</h5>
<ul><li>
		Single lines: preformatted text</li>
	<li>
		Multiple lines: code block for specific language</li>
	<li>
		Force line end: 80 characters</li>
</ul>]]></description>
			<pubDate>Mon, 11 Oct 2010 01:11:32 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26594#26594]]></link>
		</item>
		<item>
			<title>Lissbol - Tutorial section</title>
			<description><![CDATA[I agree with Koradhil.]]></description>
			<pubDate>Tue, 05 Oct 2010 15:36:51 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26510#26510]]></link>
		</item>
		<item>
			<title>GHengeveld - Tutorial section</title>
			<description><![CDATA[Well, I think the whole documentation structure needs a re-thinking. To me, it makes no sense having languages as root directories. Multiple languages is good, but it's better to have everything in English, with a list of alternative languages for an article if they are available.<br />
<br />
Something that bothers me with the current multi-language setup is that I have no idea if there is some information available in Russian for example, which is not available in English. I think documentation should be in English by default, with optional translations for other languages. For technical documentation its even worse because it quickly gets outdated, so its best to keep this all in English.<br />
<br />
One thing that I know for sure is that Cotonti can be so much more popular if we'd just have some decent documentation. Preferably the documentation should be concise but complete, and presented in a way that is coherent and simple. Having to click though many categories of pages is not what I think of when I say simple. We should take example of other well-known open source projects in terms of documentation. For example, the <a href="http://docs.djangoproject.com/en/1.2/" rel="nofollow">Django documentation</a> is one of the best examples around, and the <a href="http://pylonshq.com/docs/en/1.0/" rel="nofollow">Pylons docs</a> is very good also. You'll notice the difference very quickly: they dont have pages stuffed in categories, they actually wrote it like a physical manual, and the index is, well, the index. Everything accessible from one page.]]></description>
			<pubDate>Tue, 05 Oct 2010 04:07:44 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26504#26504]]></link>
		</item>
		<item>
			<title>Kingsley - Tutorial section</title>
			<description><![CDATA[Hi,<br />
<br />
was thinking.. wouldn't it be good to add a section on this site for tutorials? Every now and then you get questions regarding stuff, that has been discussed a couple of months before (but are hard to find, or ppl don't use the search)<br />
<br />
I think that with a tutorial part you can help people who lack certain knowledge, and on the other side help programmers not to get irritated with the millionst question about, for example, how to recreate leetlogin is a good way.<br />
<br />
just an idea.]]></description>
			<pubDate>Tue, 05 Oct 2010 01:17:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=26499#26499]]></link>
		</item>
		<item>
			<title>urlkiller - Importing documents from other resources</title>
			<description><![CDATA[is this still relevant: <a href="http://neocrome.net/page.php?id=2208" rel="nofollow">http://neocrome.net/page.php?id=2208</a> ?]]></description>
			<pubDate>Thu, 05 Aug 2010 01:07:37 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=25470#25470]]></link>
		</item>
		<item>
			<title>GHengeveld - Importing documents from other resources</title>
			<description><![CDATA[Syntax of config block is already described <a href="http://www.cotonti.com/docs/en/plugins/configvalues">here</a>.]]></description>
			<pubDate>Tue, 20 Oct 2009 03:48:50 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=18020#18020]]></link>
		</item>
		<item>
			<title>pieter - Importing documents from other resources</title>
			<description><![CDATA[Including content in the pages or the skin files<br />
This is done by musiconly.<br />
<a href="http://www.cotonti.com/docs/en/skins/227">http://www.cotonti.com/docs/en/skins/227</a>]]></description>
			<pubDate>Mon, 19 Oct 2009 02:05:39 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=17976#17976]]></link>
		</item>
		<item>
			<title>GHengeveld - [Plugins] Plugin development</title>
			<description><![CDATA[Thanks. The rest of the guide will follow asap. I think the part about XTemplate is going to be especially useful.<br />
<br />
<strong>Added 23 hours 49 minutes later:</strong><br />
<br />
<strong>The XTemplate system</strong><br />
Those familiar with building or modifying Cotonti templates will have seen and used template tags. Tags are short bits of code which, when parsed by XTemplate, are replaced by a block of HTML code. This ensures your template file exists only of HTML code. Any PHP generated code is handled by the plugin and parsed using a tag.<br />
<br />
When developing a plugin, it’s important to know how to define tags and conditional blocks with the XTemplate system. Before, most plugins used the legacy way of getting HTML to be parsed and displayed. Although using XTemplate and your own template file is a much nicer way to build your plugin, you can still use the classic way for standalone plugins. You do this by using the variables $plugin_title, $plugin_subtitle and $plugin_body. These are assigned automatically to the tags {PLUGIN_TITLE}, {PLUGIN_SUBTITLE} and {PLUGIN_BODY}. In this case, you don’t need to create your own template file (and you can omit the tpl directory). Cotonti will use the skin’s plugin.tpl instead.<br />
<br />
So you want to use your own template file. You start by defining the template file as a new XTemplate object. That’s right, the XTemplate system is an object oriented piece of code. Once you’ve created a new XTemplate object, you can use a collection of methods (functions) supplied by the XTemplate class. We will be using just two of them: assign() and parse(). First we create a new XTemplate object:<br />
<br />
<pre class="code">$t = new XTemplate(‘path/to/skinfile.tpl’);</pre>
<br />
We are using $t as the XTemplate object variable name, but you can use any variable name you like. The ‘path/to/skinfile.tpl’ is the path to the template file, from the Cotonti root folder. While this would work perfectly fine, it’s not a very flexible way to define the template file. Therefore we will use the sed_skinfile() function instead, like this:<br />
<br />
<pre class="code">$t = new XTemplate(sed_skinfile('pluginname', true));</pre>
<br />
The first parameter is the filename without extension. The second parameter must be set to true, since we’re dealing with a plugin. The sed_skinfile() function will look up the correct path to the template file. The filename must always start with the pluginname. If you want to use multiple template files, you should use filenames like this: pluginname.secondary.tpl. Remember to omit the extension when using sed_skinfile().<br />
<br />
The next step is to assign some tags to your template file. We do this by using the assign() method on our XTemplate object:<br />
<br />
<pre class="code">$t -&gt; assign();</pre>
<br />
The assign() method can take single tags or an array of tags:<br />
<br />
<pre class="code">$t -&gt; assign(“SINGLE_TAG”, ‘&lt;p&gt;Piece of HTML&lt;/p&gt;’);
$t -&gt; assign(array(
	“TAG_ONE” =&gt; ‘&lt;p&gt;Piece of HTML&lt;/p&gt;’, 
	“TAG_TWO” =&gt; $somevariable
));</pre>
<br />
As you can see, it’s very simple to assign a bunch of tags with PHP generated content. While it’s a good way to implement the MVC design pattern, it’s still not very flexible. What if you want to display multiple rows of content from your database? XTemplate uses HTML comments and the parse() method to allow this. Lets say you just executed an sql query to get all pages. Likely you’ll be using a while loop to go through the rows. Consider this code:<br />
<br />
<pre class="code">while($row = sed_sql_fetcharray($sql))
{
	$t -&gt; assign(array(
		“PAGE_ROW_ID” =&gt; $row&#091;‘page_id’&#093;,
		“PAGE_ROW_TITLE” =&gt; $row&#091;‘page_title’&#093;
	));
}</pre>
<br />
This would redefine the tags every time we go through the while loop, and result in the tag to be set to the last row’s value. To prevent this, we need to force parsing the tags directly after defining them. This is achieved with the parse() method.<br />
<br />
<pre class="code">$t -&gt; parse();</pre>
<br />
The parse() method takes one parameter: the block code. The block code is a unique code that is placed inside the template file as an HTML comment. It always has a BEGIN and END, like this:<br />
<br />
<pre class="code">&lt;!-- BEGIN: BLOCK_CODE --&gt;
...
&lt;!-- END: BLOCK_CODE --&gt;</pre>
<br />
You may have noticed that every Cotonti template file starts and ends with such a tag, effectively defining the entire document as a block. Usually this is the MAIN block, but you can use another if you really want to.<br />
<br />
In the plugin PHP code, we will now add the parse() method to the while loop:<br />
<br />
<pre class="code">while($row = sed_sql_fetcharray($sql))
{
	$t -&gt; assign(array(
		“PAGE_ROW_ID” =&gt; $row&#091;‘page_id’&#093;,
		“PAGE_ROW_TITLE” =&gt; $row&#091;‘page_title’&#093;
	));
	$t -&gt; parse(“MAIN.PAGE_ROW”);
}</pre>
<br />
The block we’ve just defined is named ‘PAGE_ROW’, but because it is to be used within the MAIN block, we prepend the block name with the parent block name and a dot to separate them. Our template file could now look like this:<br />
<br />
<pre class="code">&lt;!-- BEGIN: MAIN --&gt;
	&lt;h1&gt;{SINGLE_TAG}&lt;/h1&gt;

	&lt;!-- BEGIN: PAGE_ROW --&gt;
	&lt;p&gt;{PAGE_ROW_TITLE}&lt;/p&gt;
	&lt;!-- END: PAGE_ROW --&gt;
&lt;!-- END: MAIN --&gt;</pre>
<br />
If you don’t want or can’t use the MAIN block, you can replace it with another code. However, this will require you to do one more parse at the end of the plugin code. The MAIN block is automatically parsed by Cotonti, but any other blocks will need to be parsed manually by your plugin. Simply call the parse method again:<br />
<br />
<pre class="code">$t -&gt; parse(“ALTERNATIVE”);</pre>
<br />
It’s best to do this right before the PHP ending tag.]]></description>
			<pubDate>Mon, 07 Sep 2009 06:13:10 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=16869#16869]]></link>
		</item>
		<item>
			<title>Kingsley - [Plugins] Plugin development</title>
			<description><![CDATA[Nice man, this helps alot..]]></description>
			<pubDate>Mon, 07 Sep 2009 05:55:12 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=16868#16868]]></link>
		</item>
		<item>
			<title>GHengeveld - [Plugins] Plugin development</title>
			<description><![CDATA[<strong>Category:</strong> Plugins<br />
<strong>Type:</strong> Article, Reference guide<br />
<strong>Languages:</strong> English<br />
<br />
<strong>Contents:</strong><br />
<ol>
<li>Default files/folders</li>
<li>Using and understanding hooks</li>
<li>Using the XTemplate system, defining tags and using rows</li>
<li>Setting config values and using them</li>
<li>Writing localisations and using $L / {PHP.L}</li>
</ol>
<br />
<strong>Added 10 minutes later:</strong><br />
<br />
I will do this as soon as I find the time for it.<br />
<br />
<strong>Added 9 hours  later:</strong><br />
<br />
<strong>Introduction</strong><br />
So you want to write your own plugins? This guide will help you use the Cotonti plugins system. Cotonti (extended) plugins are normal PHP scripts, modified for use with the Cotonti CMS.<br />
<br />
<strong>Getting started</strong><br />
The first step in the process of developing a plugin is setting up the directory structure and creating some default files. Your plugin directory structure should look like this:<br />
<br />
<a href="http://www.cotonti.com/datas/users/pluginstructure_68.png"><img src="http://www.cotonti.com/datas/users/pluginstructure_68.png" alt="" class="scale" /></a><br />
<br />
If the plugin you will be writing is not going to use template files and/or language strings, you are free to omit the respective folders.<br />
<br />
Your plugin name, when used as a filename or code, should:<br />
<ul>
<li>be unique</li>
<li>be all lowercase</li>
<li>consist of only letters, numbers and dashes (-)</li>
</ul>
<br />
All files inside your plugin folder (root) have a predefined code structure:<br />
<br />
<pre class="code">&lt;?PHP

/* ====================
&#091;BEGIN_SED_EXTPLUGIN&#093;
Code=pluginname
Part=main
File=pluginname
Hooks=standalone
Tags=
Order=10
&#091;END_SED_EXTPLUGIN&#093;
==================== */

/**
 * Plugin description
 *
 * @package Plugin name
 * @version 1.0
 * @author You
 * @copyright Your company
 * @license BSD
 */

defined('SED_CODE') or die(&quot;Wrong URL.&quot;);

// Your plugin code

?&gt;</pre>
<br />
The first thing you will notice is the presence of some setup values. These values are used by Cotonti to setup and configure your plugin when it is installed through the adminpanel.<br />
<br />
Code: the plugin name<br />
Part: the second part of the filename (example: ‘index’ for pluginname.index.php). default: main<br />
File: the filename without extension (example: pluginname.index)<br />
Hooks: Cotonti hook code, or ‘standalone’ for standalone pages<br />
Tags: list of tags using this format: file.tpl:{TAG_ONE},{TAG_TWO}<br />
Order: integer, default 10, order by which plugins are executed by a hook<br />
<br />
The following javadoc comment block is optional, but recommended. You are free to modify this to your liking.<br />
<br />
Finally, there is one line of code which is required for all your php files, as a security feature. It will prevent your file from being included (and executed) in non-Cotonti php files.<br />
<br />
<strong>Using and understanding hooks</strong><br />
The Cotonti plugins system is based upon the simple principle of including blocks of code inside the core files. If you look into these core files, which are located in system/core/.../, you will find blocks of code like this:<br />
<br />
<pre class="code">$extp = sed_getextplugins('index.main');
if (is_array($extp))
	{ foreach($extp as $k =&gt; $pl) { include_once($cfg&#091;'plugins_dir'&#093;.'/'.$pl&#091;'pl_code'&#093;.'/'.$pl&#091;'pl_file'&#093;.'.php'); } }</pre>
<br />
The ‘index.main’ code is the unique hook code. The hook looks up a list of plugins using this hook code, and executes the corresponding plugin files with a simple include_once. Knowing this, you will be able to better understand the way your plugin works and interacts with the Cotonti core. You should treat the plugin code as if it were part of the core code, replacing the hook code. This means that you can use and modify core variables and use global Cotonti functions. This also means you can use the $usr[] variable for accessing data concerning the visitor, which is mostly useful for granting or denying access. The downside is that you need to be aware of naming conflicts. For example, most single character variable names are in use by the Cotonti core. This means it is not safe so use these variable names inside your plugin, because you might overwrite a system variable, introducing new bugs and errors.<br />
<br />
The order by which plugin files are included by a hook is defined by the plugin. In most cases it is okay to use the default value (10), but in some special cases you will want to have control over the order by which the plugin code is included. This will allow you to make two plugins successfully work together. The plugin with the lowest value will be included first.[/]]]></description>
			<pubDate>Sun, 06 Sep 2009 19:53:44 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=16850#16850]]></link>
		</item>
		<item>
			<title>pieter - [Skins] Making your own skin for Cotonti {musiconly}</title>
			<description><![CDATA[Nice Job, I will translate them to Dutch.<br />
<br />
Have a nice holiday and enjoy it.]]></description>
			<pubDate>Thu, 13 Aug 2009 21:41:36 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=15918#15918]]></link>
		</item>
		<item>
			<title>Trustmaster - [Skins] Making your own skin for Cotonti {musiconly}</title>
			<description><![CDATA[We're looking forward to these amazing series to continue. Have a nice time there!]]></description>
			<pubDate>Thu, 13 Aug 2009 21:28:59 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&p=15915#15915]]></link>
		</item>
	</channel>
</rss>