<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mFabrik - mobile sites, apps, HTML5 and CMS software development &#187; html</title>
	<atom:link href="http://blog.mfabrik.com/tag/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mfabrik.com</link>
	<description>Freedom delivered.</description>
	<lastBuildDate>Wed, 03 Aug 2011 09:47:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Searching arbitary HTML snippets on Plone content pages</title>
		<link>http://blog.mfabrik.com/2011/02/17/finding-arbitary-html-snippets-on-plone-content-pages/</link>
		<comments>http://blog.mfabrik.com/2011/02/17/finding-arbitary-html-snippets-on-plone-content-pages/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 11:14:19 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[plone]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[crawler]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[render]]></category>
		<category><![CDATA[zmi]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=987</guid>
		<description><![CDATA[Here is an example how to crawl through Plone content to search HTML snippets. This can be done by rendering every content object and check whether certain substrings exists the output HTML This snippet can be executed through-the-web in Zope Management Interface. This kind of scripting is especially useful if you need to find old [...]]]></description>
			<content:encoded><![CDATA[<p>Here is an example how to crawl through Plone content to search HTML snippets. This can be done by rendering every content object and check whether certain substrings exists the output HTML This snippet can be executed through-the-web in Zope Management Interface.</p>
<p>This kind of scripting is especially useful if you need to find old links or migrate some text / HTML snippets in the content itself. There might be artifacts which only appear on the resulting pages (portlets, footer texts, etc.) and thus they are invisible to the normal full text search.</p>
<pre># Find arbitary HTML snippets on Plone content pages 

# Collect script output as text/html, so that you can
# call this script conveniently by just typing its URL to a web browser
buffer = ""

# We need to walk through all the content, as the
# links might not be indexed in any search catalog
for brain in context.portal_catalog(): # This queries cataloged brain of every content object
       try:
         obj = brain.getObject()
         # Call to the content object will render its default view and return it as text
         # Note: this will be slow - it equals to load every page from your Plone site
         rendered = obj()
         if "yourtextmatch" in rendered:
               # found old link in the rendered output
               buffer += "Found old links on &lt;a href='%s'&gt;%s&lt;/a&gt;&lt;br&gt;\n" % (obj.absolute_url(), obj.Title())
       except:
         pass # Something may fail here if the content object is broken

return buffer</pre>
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/02/17/finding-arbitary-html-snippets-on-plone-content-pages/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Plone Developer Manual, take #0.1</title>
		<link>http://blog.mfabrik.com/2009/09/26/plone-developer-manual-take-0-1/</link>
		<comments>http://blog.mfabrik.com/2009/09/26/plone-developer-manual-take-0-1/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 22:53:44 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[plone]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[comic]]></category>
		<category><![CDATA[contributing]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[englishismysecondlanguage]]></category>
		<category><![CDATA[happynow]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[itcontainshundredstyposiwantyoutofix]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[sphinx]]></category>

		<guid isPermaLink="false">http://blog.twinapex.fi/?p=273</guid>
		<description><![CDATA[The first public version of  Plone developer manual is available here. It is still very much draft, but I assure you will find it useful. You will find it even more useful after you put in the answers for your own problems. In my previous Plone developer documentation rant my flow of though was little [...]]]></description>
			<content:encoded><![CDATA[<p>The first public version of  <a href="http://plonemanual.twinapex.fi/index.html">Plone developer manual</a> <a href="http://plonemanual.twinapex.fi">is available here</a>.</p>
<p>It is still very much draft, but I assure you will find it useful. You will find it even more useful <a href="http://plonemanual.twinapex.fi/introduction/updating_this_document.html">after you put in the answers for your own problems</a>.</p>
<p>In my <a href="http://blog.twinapex.fi/2009/07/22/helping-people-and-writing-plone-developer-api-manual-killing-two-birds-with-one-stone/">previous Plone developer documentation rant</a> my flow of though was little abstract and I couldn&#8217;t clearly explain how I want the community to maintain this crucial piece of documentation.  This time I made a comic.</p>
<p><img class="alignnone" title="Plone Developer the comic" src="http://plonemanual.twinapex.fi/_images/comic.png" alt="" width="420" height="479" /></p>
<p>* <a href="http://plone.org/support">How to get support</a></p>
<p>** <a href="http://plonemanual.twinapex.fi/introduction/updating_this_document.html">How to update Plone Developer Manual</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2009/09/26/plone-developer-manual-take-0-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Putting views, like sitemap, into Plone content tree using Easy Template add-on</title>
		<link>http://blog.mfabrik.com/2009/07/30/putting-views-like-sitemap-into-plone-content-tree-using-easy-template-add-on/</link>
		<comments>http://blog.mfabrik.com/2009/07/30/putting-views-like-sitemap-into-plone-content-tree-using-easy-template-add-on/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 21:42:29 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[plone]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[browserview]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jinja]]></category>
		<category><![CDATA[sitemap]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[view]]></category>
		<category><![CDATA[wysiwyg]]></category>

		<guid isPermaLink="false">http://blog.twinapex.fi/?p=235</guid>
		<description><![CDATA[Plone has two kind of pages Content pages which have a path and will appear in the navigation and in the sitemap. These are stored in the database. View based pages and template based pages which usually present an action  (accessibility, sitemap, contact info form). They do not appear in the navigation. They are stored [...]]]></description>
			<content:encoded><![CDATA[<p>Plone has two kind of pages</p>
<ul>
<li>Content pages which have a path and will appear in the navigation and in the sitemap. These are stored in the database.</li>
<li>View based pages and template based pages which usually present an action  (accessibility, sitemap, contact info form). They do not appear in the navigation. They are stored as source code on the file system. You cannot navigate to view based pages and just click edit. To change them you need to use various customization methods (add-on product, Zope management interface) to modify the code.</li>
</ul>
<p>Sometimes it is desirable, for the sake of uniformness, to put view based pages (accessibility, sitemap) into the content tree. For example, one could want to have the sitemap link appearing only in the navigation tree under the site section &#8220;About this site&#8221;.</p>
<p>Plone add-on product <a href="http://plone.org/products/easy-template">Easy Template</a> provides an easy method to show any Plone view(s) on a normal page. Easy Template uses Django like template syntax (<a href="http://jinja.pocoo.org/2/documentation/">Jinja 2 engine</a>). It gives you great power to drop dynamic content easily on pages. Easy Template also has some security awarness ensuring the members using it cannot escape from their sandbox.</p>
<p>Easy Template works in WYSIWYG and non-WYSIWYG modes</p>
<ul>
<li>You can directly mix templates into text in Visual Editor (Kupu). This is mostly useful for non-HTML aware content editors, who use WYSIWYG editor and can use snippets from a reference card prepared by a developer. Note: Visual Editor has some limitations or undesired behavior. Sometimes it tries to put arbitary HTML tags into text (&amp;nbsp; which breaks the template code).</li>
<li>You can write templatized HTML source code in &#8220;raw&#8221; mode. You can write source code on &#8220;Template&#8221; schemata in Edit view.</li>
</ul>
<h2>Example how to show a sitemap on an arbitary Plone page</h2>
<ol>
<li>Install Easy Template (if you are a developer I suggest you to try trunk version)</li>
<li>Create a <em>Templated document</em> content</li>
<li>Write some arbitary text in Kupu</li>
<li>Put in the code snippet <em>{{ view(&#8220;sitemap&#8221;, &#8220;createSiteMap&#8221;) }} </em>which triggers the sitemap view rendering</li>
<li>Save and view the document in View mode</li>
</ol>
<p><img class="alignnone size-full wp-image-238" title="Picture 1" src="http://blog.twinapex.fi/wp-content/uploads/2009/07/Picture-1.png" alt="Picture 1" width="574" height="434" /></p>
<p>It turns out to be:</p>
<p><img class="alignnone size-full wp-image-239" title="Picture 3" src="http://blog.twinapex.fi/wp-content/uploads/2009/07/Picture-3.png" alt="Picture 3" width="496" height="402" /></p>
<p>There is no such thing as a &#8220;views reference&#8221; for Plone. View names and functions can be figured out by searching and reading through ZCML and Python files in Plone source tree. Some developer insight is needed. For example. for sitemap we can do the grep search:</p>
<pre>grep -Ri --include="*.zcml" sitemap *</pre>
<p>Then read <em>Products/CMFPlone/browser/configure.zcml</em> and <em>Products/CMFPlone/browser/sitemap.py</em>.</p>
<p>The same thing works in portlets. Use <em>Templated Portlet </em>portlet type. See <a href="http://pypi.python.org/pypi/collective.easytemplate/">Easy Template PyPi homepage</a> for the full reference of the product&#8217;s potential.</p>
<p><strong>About the author Mikko Ohtamaa</strong></p>
<ul>
<li><a href="http://www.linkedin.com/in/ohtis  ">LinkedIn</a></li>
<li><a href="http://twitter.com/moo9000">Twitter</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2009/07/30/putting-views-like-sitemap-into-plone-content-tree-using-easy-template-add-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XHTML mobile profile transformer and cleaner for Python</title>
		<link>http://blog.mfabrik.com/2009/07/23/xhtml-mobile-profile-transformer-and-cleaner-for-python/</link>
		<comments>http://blog.mfabrik.com/2009/07/23/xhtml-mobile-profile-transformer-and-cleaner-for-python/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 04:06:02 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[aggregator]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[lxml]]></category>
		<category><![CDATA[mobile profile]]></category>
		<category><![CDATA[mobiready]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[search engine optimizations]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[valid]]></category>
		<category><![CDATA[validator]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.twinapex.fi/?p=227</guid>
		<description><![CDATA[Mobile phones, and especially mobile site validators, are very picky about the validy of XHTML. It must not be any XHTML, but special mobile profile XHTML. Also, search engines like Google, will punish you in the mobile search results if your site fails to conform to mobile profile. This is especially troublesome if you display [...]]]></description>
			<content:encoded><![CDATA[<p>Mobile phones, and especially mobile site validators, are very picky about the validy of XHTML. It must not be any XHTML, but special <a href="http://en.wikipedia.org/wiki/XHTML_Mobile_Profile">mobile profile XHTML</a>. Also, search engines like Google, will punish you in the mobile search results if your site fails to conform to mobile profile.</p>
<p>This is especially troublesome if you display external content (RSS feeds, ATOM feeds) on your mobile site. Incoming HTML cannot be guaranteed to follow any specification.</p>
<p>To solve this problem, we have created <a href="http://pypi.python.org/pypi/gomobile.xhtmlmp/">gomobile.xhtmlmp Python library</a> which helps you to transform any HTML to content to valid XHTML MP. The library is piloted on <a title="Plone mobile community site" href="http://plonecommunity.mobi">plonecommunity.mobi</a> site which  uses aggregated content from varying sources. The library is based on <a href="http://codespeak.net/lxml/lxmlhtml.html#cleaning-up-html">lxml.html.Cleaner</a>. The library is part of <a href="http://pypi.python.org/pypi/gomobile.mobile/">GoMobile project</a> which aims to create world class Python mobile web development tools.</p>
<h2>Highlights</h2>
<ul>
<li> Turn any incoming HTML/XHTML to mobile profile compatible</li>
<li>Enforce ALT text on images &#8211; especially useful for external tracking images (feedburner tracker). ALT texts are required by XHTML MP.</li>
<li>Protect against Cross-Site Scripting Attacks (XSS) and other nastiness, as provided by lxml.xhtml.clean</li>
<li>Unicode compliant &#8211; eats funky characters</li>
</ul>
<p>As an example <a href="https://plonegomobile.googlecode.com/svn/trunk/gomobile/gomobile.supporter/gomobile/supporter/feedfeeder/patches.py">we integrated gomobile.xhtmlmp  to Feedfeeder Plone add-on product</a>.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2009/07/23/xhtml-mobile-profile-transformer-and-cleaner-for-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designing a high usability Plone theme</title>
		<link>http://blog.mfabrik.com/2008/09/12/designing-a-high-usability-plone-theme/</link>
		<comments>http://blog.mfabrik.com/2008/09/12/designing-a-high-usability-plone-theme/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 19:24:44 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[Plone (old)]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[icon]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[look]]></category>
		<category><![CDATA[multilingual]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[skin]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[theming]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://blog.redinnovation.com/?p=115</guid>
		<description><![CDATA[This is my brain dump of instructions for artists how to design good Plone themes. I hope I can receive some comments, some feedback from the artists itself and then publish this as a plone.org tutorial. Often external artist is used to design a site theme. Artists might or might not have seen Plone, artists [...]]]></description>
			<content:encoded><![CDATA[<p>This is my brain dump of instructions for artists how to design good Plone themes. I hope I can receive some comments, some feedback from the artists itself and then publish this as a plone.org tutorial.</p>
<p>Often external artist is used to design a site theme. Artists might or might not have seen Plone, artists might or might not have any basic usability know how. This article should explain the elements which &#8220;must be there&#8221; to make a match between the theme and Plone easily.</p>
<h2>The basic layout</h2>
<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } 		H1 { margin-bottom: 0.08in } 		H1.western { font-family: "Arial", sans-serif; font-size: 16pt } 		H1.cjk { font-family: "DejaVu Sans"; font-size: 16pt } 		H1.ctl { font-family: "DejaVu Sans"; font-size: 16pt } 		H2 { margin-bottom: 0.08in } 		H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic } 		H2.cjk { font-size: 14pt; font-style: italic } 		H2.ctl { font-size: 14pt; font-style: italic } 		TD P { margin-bottom: 0in } 		H3 { margin-bottom: 0.08in } 		H3.western { font-family: "Arial", sans-serif } --></p>
<p style="margin-bottom: 0in;">This document describes the elements of multilingual high usability Plone theme. It is based on fluid div layout, meaning that the content stays very readable on small screens or when CSS is not loaded (<a href="http://en.wikipedia.org/wiki/Screen_reader">screen readers</a>). See <a href="http://css-tricks.com/examples/PerfectFluidWidthLayout/">the example layout</a>. <a href="http://css-tricks.com/examples/PerfectFluidWidthLayout/"></a></p>
<p style="margin-bottom: 0in;">The layout must not break down when user is using non-default font size. E.g. all element accept two rows text, even if the default case is usually one row.</p>
<h2>Plone layout</h2>
<p>Here we are designing a &#8220;normal&#8221; site theme where Plone is used to publish textual content for external readers. This might not always be the case &#8211; for example if Plone is used as a professional tool one might want to use all available screen space to display as much as possible action shortcuts to make the tool to quick to use. The latter is actual case I have seen in medical applications.</p>
<p>Plone layout is formed by seven main parts.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="56"></col>
<col width="142"></col>
<col width="58"></col>
<tbody>
<tr valign="top">
<td width="22%">Left body padding (auto width)</td>
<td width="55%">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="256"></col>
<tbody>
<tr>
<td width="100%" valign="top">Header (780 – 1280 pixels)</td>
</tr>
<tr>
<td width="100%" valign="top">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="85"></col>
<col width="85"></col>
<col width="85"></col>
<tbody>
<tr valign="top">
<td width="33%">Left portlets</td>
<td width="33%">Content (780 – 1000 pixels)</td>
<td width="33%">Right portlets</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="100%" valign="top">Footer (780 – 1280 pixels)</td>
</tr>
</tbody>
</table>
</td>
<td width="23%">Right body padding (auto width)</td>
</tr>
</tbody>
</table>
<p>The layout must be designed so that</p>
<ul>
<li>The maximum width of content area newer exceeds a certain 	amount (1200px) so that <a href="http://en.wikipedia.org/wiki/Characters_per_line">characters-per-line</a> count stays readable on wide screen displays. 	Left body padding and right body padding fill the wide screen gap to 	keep the content in sane max-width.</li>
<li>Left portlets and right portlets parts can be missing, giving 	space to content part</li>
<li>Header and footer are resizable. Usually logo is at the left site of the header and actions at the right side of the header. These sections should not overlap with the width of 780 px.</li>
<li>Left body padding and right body padding can have shadow 	effect on the central column a la <a href="http://www.blogger.com/home">blogger</a>.</li>
</ul>
<h3>Alternative layout cases</h3>
<p>The layout must be formed from such a blocks that left or right portlets can be easily dropped without breaking the layout.</p>
<p>Right portlets missing:</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="256"></col>
<tbody>
<tr>
<td width="100%" valign="top">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="256"></col>
<tbody>
<tr>
<td width="100%" valign="top">Header</td>
</tr>
<tr>
<td width="100%" valign="top">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="85"></col>
<col width="171"></col>
<tbody>
<tr valign="top">
<td width="33%">Left portlets</td>
<td width="67%">Content</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="100%" valign="top">Footer</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 0in;">Both portlets missing (front page view):</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="256"></col>
<tbody>
<tr>
<td width="100%" valign="top">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="256"></col>
<tbody>
<tr>
<td width="100%" valign="top">Header</td>
</tr>
<tr>
<td width="100%" valign="top">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="256"></col>
<tbody>
<tr>
<td width="100%" valign="top">Content</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="100%" valign="top">Footer</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<h2>Header elements</h2>
<p>The header should have the following elements</p>
<ul>
<li>Logo</li>
<li>Language selector &#8211; either a drop down list, flag icons or language names</li>
<li>Site action links with icons: site map, accessibility help, 	toggle easy read (make fonts larger), contact</li>
<li>Search box</li>
<li>Section (main level) navigation tabs</li>
<li>Personal bar. Contains the username and log out buttons. Only 	available when logged in. To see an example, create plone.org account and 	login to ploen.org.</li>
</ul>
<p>The header must scale between 780 – 1280 px. Section navigation tabs may trigger drop down menus, see <a href="http://www.jyu.fi/">http://www.jyu.fi/</a></p>
<h2>Content area elements</h2>
<p>The content area contains</p>
<ul>
<li>Content title</li>
<li>Content description: one paragraph, no HTML formatting</li>
<li>Breadcrumbs path bar displaying the position in the 	navigation hierarchy. <a href="http://plone.org/documentation/how-to/backup-plone">Example</a>.</li>
<li>Content actions: send to, print, RSS feed. Icons with or without text labels. New Plone versions place these <a href="http://www.archred.com/updates/news">at the bottom</a>, but they used to be <a href="http://www.jyu.fi/it/">at the top</a>.</li>
<li>Document byline: creator name w/link, creation date or edit 	date. This is usually only available for logged in members.</li>
<li>Notification messages: When user performs actions (e.g. save) this feedback box is rendered with white i(nfo) letter in blue circle having a message like &#8220;Save succeeded.&#8221;</li>
<li>The main body text and images</li>
</ul>
<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p>The whole portlet section can be dropped, making space for the content.</p>
<h3>Portlets</h3>
<p>Portlets are boxes on the left and right side of the content containing section specific actions.</p>
<p>Example portlets:</p>
<ul>
<li>
<p style="margin-left: 0.49in;">Navigation</p>
</li>
<li>
<p style="margin-left: 0.49in;">Search (not the header search)</p>
</li>
<li>
<p style="margin-left: 0.49in;">News</p>
</li>
<li>
<p style="margin-left: 0.49in;">Recently changed</p>
</li>
</ul>
<p>The portlet consists of</p>
<ul>
<li>Title (usually link)</li>
<li>Content area</li>
<li>Optional More link, located at the right bottom corner.</li>
</ul>
<p>See <a href="http://www.siggraph.org/">http://www.siggraph.org/</a> for creative use of portlets.</p>
<h2>Footer elements</h2>
<p>The footer has</p>
<ul>
<li>Copyright clause</li>
<li>Link to about page</li>
<li>Contact information</li>
</ul>
<p>The footer must scale between 780 – 1280 px.</p>
<h2>Complete picture</h2>
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="56"></col>
<col width="142"></col>
<col width="58"></col>
<tbody>
<tr valign="top">
<td width="22%">Left body padding</p>
<ul>
<li>Texture</li>
<li>Drop shadow</li>
</ul>
</td>
<td width="55%">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="256"></col>
<tbody>
<tr>
<td width="100%" valign="top">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="256"></col>
<tbody>
<tr>
<td width="100%" valign="top">
<ul>
<li>Logo</li>
<li>Search box</li>
<li>Site actions</li>
<li>Language selector</li>
</ul>
</td>
</tr>
<tr>
<td width="100%" valign="top">
<ul>
<li>Section tabs</li>
</ul>
</td>
</tr>
<tr>
<td width="100%" valign="top">
<ul>
<li>Personal bar</li>
</ul>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="100%" valign="top">
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="85"></col>
<col width="85"></col>
<col width="85"></col>
<tbody>
<tr valign="top">
<td width="33%">
<ul>
<li>Navigation</li>
</ul>
</td>
<td width="33%">
<ul>
<li>Breadcrumbs</li>
<li>Content actions</li>
<li>Notification messages</li>
<li>Title</li>
<li>Description</li>
<li>Text body /images</li>
</ul>
</td>
<td width="33%">
<ul>
<li>Calendar</li>
<li>News</li>
<li>Recently added</li>
</ul>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="100%" valign="top">
<ul>
<li>Copyright</li>
<li>Link to about page</li>
<li>Contact information</li>
</ul>
</td>
</tr>
</tbody>
</table>
</td>
<td width="23%">Right body padding</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 0in;">
<h2>Special cases</h2>
<p>These are often required and might shoot you into a foot</p>
<ul>
<li>The current section (main level folder) where the user is 	located is identified somehow: a changing big topic picture, text. 	For example, see <a href="http://www.archred.fi/updates/news">http://www.archred.com/updates/news</a> and you see that there is big Updates title.</li>
<li>To make more space available for front page or top level 	content, breadcrumbs and portlets are missing. A special front page 	animation may be used.See <a href="http://www.archred.com/">http://www.archred.com</a></li>
<li>Breadcrumbs is also often disabled for top level elements</li>
<li>There is a special print.css which is loaded when the 	document is printed. It sets display:none to porlets, header and 	footer so that only the main content area is printed.</li>
<li>Visual editor (Kupu) text might require special CSS rules to have the same formatting rules as in non-edit mode to get real WYSIWYG.</li>
<li>A special attention must be paid for the style of generic HTML elements like a, h1, h2 and p. They are used on the content area and outside it, often with different colors.</li>
</ul>
<h2>Colors</h2>
<p>Plone uses mechanism to have color variables in CSS. See <a href="http://plone.org/documentation/tutorial/working-with-css/base_properties-1">base_properties.prop</a> to get an idea what colors there are and try to guess how they are used.</p>
<h2>Icons</h2>
<p>Plone uses generic icon mechanism to apply icons to any action available on site. Icons are 16&#215;16, transparent with one pixel transparent border leaving 14&#215;14 pixels for the content.</p>
<p>The icons should preferably be suitable for dark and light backgrounds. This might be hard to achieve, though, so it is suitable to use ligh background icons, since this is the Plone default.</p>
<h3>Actions</h3>
<ul>
<li>Search</li>
<li>Smaller font</li>
<li>Larger font</li>
<li>Print</li>
<li>Send to (email)</li>
<li>Contact</li>
<li>Sitemap</li>
<li>Member icon</li>
<li>Settings</li>
<li>Log out</li>
<li>Login</li>
<li>RSS feed</li>
</ul>
<h3>Language flags</h3>
<p>Plone default flags can be used</p>
<ul>
<li>Finnish</li>
<li>English</li>
<li>Swedish</li>
<li>etc.</li>
</ul>
<h3>Content icons</h3>
<p>These reflect different Plone content types</p>
<ul>
<li>Page</li>
<li>Folder</li>
<li>News</li>
<li>Event</li>
<li>Collection</li>
<li>File</li>
</ul>
<h3>Link icons</h3>
<p>Plone uses Javascript to apply special icons for external links</p>
<ul>
<li>HTTP link (globe)</li>
<li>HTTPS link (lock)</li>
<li>mailto link (letter)</li>
</ul>
<h3>Favorite icon</h3>
<ul>
<li>The site bookmark icon, the one seen in the address bar, uses normal favicon.ico practices</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2008/09/12/designing-a-high-usability-plone-theme/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

