<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>23screens</title>
	<link>http://23screens.openplans.org</link>
	<description>the rubber hits the road</description>
	<pubDate>Tue, 17 Jul 2007 07:42:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>Back in the saddle</title>
		<link>http://23screens.openplans.org/2007/07/17/back-in-the-saddle/</link>
		<comments>http://23screens.openplans.org/2007/07/17/back-in-the-saddle/#comments</comments>
		<pubDate>Tue, 17 Jul 2007 07:31:36 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Progress Reports]]></category>

		<guid isPermaLink="false">http://23screens.openplans.org/2007/07/17/back-in-the-saddle/</guid>
		<description><![CDATA[We&#8217;ve haven&#8217;t been posting since our initial flurry (which was mainly for our development team as we kicked off the project), but we have been very busy building pages, and there&#8217;s already a lot to show for it.
It&#8217;s taken us a little longer than 10 days we were shooting for, but we&#8217;re closing in on [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve haven&#8217;t been posting since our initial flurry (which was mainly for our development team as we kicked off the project), but we have been very busy building pages, and there&#8217;s already <a href="http://nui.flow.openplans.org/openplans">a lot to show for it</a>.</p>
<p>It&#8217;s taken us a little longer than <a href="http://23screens.openplans.org/2007/05/07/hello-world/">10 days we were shooting for</a>, but we&#8217;re closing in on the first release of what is known around here as &#8220;NUI&#8221; (for New UI &#8212; pronounced &#8220;newee&#8221;).</p>
<p>So far, we&#8217;ve been tackling such fun projects as <strong>creating robust markup and CSS that will work when merged with other sites</strong> (our &#8220;<a href="http://www.openplans.org/projects/deliverance">Deliverance</a>&#8221; app will let you wrap your existing website around OpenPlans) and developing a <strong>framework for unobtrusive Ajax</strong> (on top of YUI and Ext). Updates on both of those and lots more to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://23screens.openplans.org/2007/07/17/back-in-the-saddle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Case Study: Forms - take away the pain</title>
		<link>http://23screens.openplans.org/2007/05/10/example-forms/</link>
		<comments>http://23screens.openplans.org/2007/05/10/example-forms/#comments</comments>
		<pubDate>Thu, 10 May 2007 05:04:55 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Principles]]></category>

		<guid isPermaLink="false">http://23screens.openplans.org/2007/05/10/example-forms/</guid>
		<description><![CDATA[
Forms can be complicated.  Here are a few guidelines to take the pain away.

Use fieldsets to group sections of forms and related inputs
Use tables to group labels, inputs, and help.  Using tables to lay out forms isn&#8217;t the best, in terms of semantic markup, but we&#8217;re making a slight compromise here to ease development.



&#60;form [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://23screens.openplans.org/wp-content/uploads/2007/05/1040.jpg" alt="1040.jpg" /></p>
<p>Forms can be complicated.  Here are a few guidelines to take the pain away.</p>
<ul>
<li>Use fieldsets to group sections of forms and related inputs</li>
<li>Use tables to group labels, inputs, and help.  Using tables to lay out forms isn&#8217;t the best, in terms of semantic markup, but we&#8217;re making a slight compromise here to ease development.</li>
</ul>
<pre>
<code>
&lt;form id="oc-join-form" name="edit_form" method="post" enctype="multipart/form-data" action="/portal_memberdata/portal_factory/OpenMember/openmember.2007-05-08.0523490218/reg_form"&gt;
	&lt;fieldset&gt;
	  &lt;legend class="headingBlock"&gt;
		&lt;h1&gt;Join OpenPlans&lt;/h1&gt;
		&lt;p class="oc-headingContext"&gt;Registration is free and your email will not be
		shared with anyone, however, you will need to confirm your email address in order to avoid
		spam bots abusing this system
		&lt;/p&gt;
	  &lt;/legend&gt;
	  &lt;table class="oc-form"&gt;
		&lt;tbody&gt;
		  &lt;tr class="oc-form-row"&gt;
			&lt;th scope="row" class="oc-form-label"&gt;
			  &lt;label for=""&gt;Username&lt;/label&gt;
			&lt;/th&gt;
			&lt;td class="oc-form-value"&gt;
			  &lt;input type="text" name="__ac_name" id="__ac_name" /&gt;
			&lt;/td&gt;
			&lt;td class="oc-form-help"&gt;
			  &lt;span class="oc-form-context"&gt;
			  	Pick something funny
			  &lt;/span&gt;
			  &lt;span id="oc-username-validator" class="oc-form-validator"&gt;
			  	Sorry, that username is taken
			  &lt;/span&gt;
			&lt;/td&gt;
		  &lt;/tr&gt;
		  &lt;tr class="oc-form-row"&gt;
			&lt;th scope="row" class="oc-form-label"&gt;
			  &lt;label for=""&gt;Full Name&lt;/label&gt;
			&lt;/th&gt;
			&lt;td class="oc-form-value"&gt;
			  &lt;input type="text" /&gt;
			&lt;/td&gt;
			&lt;td class="oc-form-help"&gt;
			  &lt;span class="oc-form-context"&gt;
				(optional)
			  &lt;/span&gt;
			  &lt;span class="oc-form-validator"&gt;

			  &lt;/span&gt;
			&lt;/td&gt;
		  &lt;/tr&gt;
		&lt;/tbody&gt;
	  &lt;/table&gt;
	&lt;/fieldset&gt;
  &lt;/form&gt;
</code></pre>
<p>This markup will make the following naked html:</p>
<p><img src="http://23screens.openplans.org/wp-content/uploads/2007/05/join.jpg" alt="join.jpg" /></p>
<p>Add CSS, and you get the finished product:</p>
<p><img src="http://23screens.openplans.org/wp-content/uploads/2007/05/join_css.png" alt="join_css.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://23screens.openplans.org/2007/05/10/example-forms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Deliverance and the OC</title>
		<link>http://23screens.openplans.org/2007/05/10/deliverance-and-the-oc/</link>
		<comments>http://23screens.openplans.org/2007/05/10/deliverance-and-the-oc/#comments</comments>
		<pubDate>Thu, 10 May 2007 05:03:10 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Principles]]></category>

		<category><![CDATA[Constraints]]></category>

		<guid isPermaLink="false">http://23screens.openplans.org/2007/05/10/deliverance-and-the-oc/</guid>
		<description><![CDATA[
Not your daddy&#8217;s Deliverance.
Since our markup and CSS will need to be ported into other people&#8217;s sites via Deliverance, we&#8217;ll add an oc- namespace to all our classes and IDs (in addition to following our other naming rules).  This will avoid any conflicts with styles in the parent site.  For example:

&#60;div class="oc-wiki"&#62;
  [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://23screens.openplans.org/wp-content/uploads/2007/05/deliverance_and_the_oc.jpg" alt="deliverance_and_the_oc.jpg" /></p>
<p>Not your daddy&#8217;s <em>Deliverance</em>.</p>
<p>Since our markup and CSS will need to be ported into other people&#8217;s sites via <a href="http://www.openplans.org/projects/deliverance">Deliverance</a>, <strong>we&#8217;ll add an <code>oc-</code> namespace to all our classes and IDs</strong> (in addition to following our <a href="http://23screens.openplans.org/2007/05/10/have-a-little-class/">other naming rules</a>).  This will avoid any conflicts with styles in the parent site.  For example:</p>
<pre>
<code>&lt;div class="oc-wiki"&gt;
  &lt;div class="oc-headingBlockâ€&gt;
    &lt;h2&gt;Project Home&lt;/h2&gt;
  &lt;/div&gt;&lt;!â€“ end .oc-headingBlock â€“&gt;
  &lt;ul class=â€oc-tabsâ€&gt;
    &lt;li&gt;
      &lt;a href=â€â€ rel=â€viewâ€&gt;view&lt;/a&gt;
    &lt;/li&gt;
    &lt;li class=â€oc-selectedâ€&gt;
      &lt;a href=â€â€ rel=â€editâ€&gt;edit&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;a href=â€â€ rel=â€historyâ€&gt;history&lt;/a&gt;
    &lt;/li&gt;
  &lt;/ul&gt;&lt;!â€“ end .oc-tabs â€“&gt;

  &lt;!â€“- more stuff here -â€“&gt;
&lt;/div&gt;&lt;!â€“- end .oc-wiki â€“-&gt;</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://23screens.openplans.org/2007/05/10/deliverance-and-the-oc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Have a little class</title>
		<link>http://23screens.openplans.org/2007/05/10/have-a-little-class/</link>
		<comments>http://23screens.openplans.org/2007/05/10/have-a-little-class/#comments</comments>
		<pubDate>Thu, 10 May 2007 05:02:53 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Principles]]></category>

		<guid isPermaLink="false">http://23screens.openplans.org/2007/05/10/have-a-little-class/</guid>
		<description><![CDATA[
Class naming conventions

oc-namespace
Hierarchical
Reusables/generics
Two-class naming
Case studies

Hierarchical classes:
Hierarchical elements take class names from their parents, within reason.  The idea is to keep it consistent while avoiding 10-part class names.  Use your best judgement here.


&#60;div class=&#34;oc-widget oc-widget-feed&#34;&#62;
  &#60;h2&#62;Recently updated projects&#60;/h2&#62;
  &#60;ul class=&#34;oc-widget-feed-list&#34;&#62;
    &#60;li class=&#34;oc-feed-item oc-clearAfter&#34; tal:repeat=&#34;project view/recentprojects&#34;&#62;
     [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://23screens.openplans.org/wp-content/uploads/2007/05/class.jpg' alt='class.jpg' /></p>
<p>Class naming conventions</p>
<ul>
<li><a href="http://23screens.openplans.org/2007/05/10/deliverance-and-the-oc/">oc-<em>namespace</em></a></li>
<li><a href="#hierarchical">Hierarchical</a></li>
<li><a href="#generics">Reusables/generics</a></li>
<li><a href="#two-class">Two-class naming</a></li>
<li><a href="#examples">Case studies</a></li>
</ul>
<p><strong><a name="hierarchical"></a>Hierarchical classes:</strong><br />
Hierarchical elements take class names from their parents, within reason.  The idea is to keep it consistent while avoiding 10-part class names.  Use your best judgement here.</p>
<pre>
<code>
&lt;div class=&quot;oc-widget <strong>oc-widget-feed</strong>&quot;&gt;
  &lt;h2&gt;Recently updated projects&lt;/h2&gt;
  &lt;ul class=&quot;<strong>oc-widget-feed-list</strong>&quot;&gt;
    &lt;li class=&quot;<strong>oc-feed-item</strong> oc-clearAfter&quot; tal:repeat=&quot;project view/recentprojects&quot;&gt;
      &lt;img class=&quot;oc-avatar&quot; src=&quot;&quot; tal:attributes=&quot;src project/image_src | nothing&quot; /&gt;
      &lt;h3 class=&quot;<strong>oc-feed-item-title</strong>&quot;&gt;
            &lt;a href=&quot;&quot; tal:attributes=&quot;href project/absolute_url&quot; tal:content=&quot;nocall: project/title&quot;&gt;Project Title&lt;/a&gt;
      &lt;/h3&gt;
      &lt;p class=&quot;<strong><strong>oc-feed-item-data</strong></strong> oc-discreetText&quot; tal:define=&quot;nmembers python: len(project.projectMemberIds())&quot;&gt;
        &lt;span tal:replace=&quot;nmembers&quot;&gt;YY&lt;/span&gt; member&lt;span tal:condition=&quot;python: nmembers &gt; 1&quot; tal:replace=&quot;string:s&quot; /&gt;, active since &lt;span tal:replace=&quot;python: view.create_date(project)&quot;&gt;Jan 1937&lt;/span&gt;
      &lt;/p&gt;
      &lt;p class=&quot;<strong>oc-feed-item-description</strong>&quot; tal:content=&quot;project/mission | string: project mission statement goes here&quot;&gt;
        This is the descriptive text for a project. Apparently it doesn&#8217;t quite work right yet. Is there even a field for users to fill out or entry to call from a database?
      &lt;/p&gt;
  &lt;/li&gt;
  &lt;/ul&gt;&lt;!&#8211; end .oc-widget-feed-list &#8211;&gt;
&lt;/div&gt;&lt;!&#8211; end .oc-widget-feed &#8211;&gt;
</code>
</pre>
<p><strong><a name="generics"></a>Reusable/generic classes:</strong><br />
Reusable / generic classes can go anywhere, without specifying anything more. For example, an <code>oc-headingBlock</code> can go inside any block-level element, including &ldquo;widgets&rdquo;.</p>
<pre>
<code>
&lt;div class=&quot;oc-headingBlock&quot;&gt;
   &lt;h1&gt;Projects on OpenPlans&lt;/h1&gt;
   &lt;p class=&quot;oc-headingContext&quot;&gt;Currently serving &lt;span tal:replace=&quot;view/nprojects&quot;/&gt; projects&lt;/p&gt;
&lt;/div&gt;&lt;!-- end .oc-headingBlock --&gt;
</code>
</pre>
<p><a name="two-class"></a><strong>Two-class naming structure for generics.</strong><br />  First class name defines generic.  Second enables customizations.</p>
<pre>
<code>
&lt;div class=&quot;<strong>oc-widget oc-widget-feed</strong>&quot;&gt;

&lt;!&#8211; some stuff &#8211;&gt;

&lt;/div&gt;&lt;!&#8211; end .oc-widget.oc-widget-feed &#8211;&gt;
</code>
</pre>
<p><strong><a name="examples"></a>Case studies:</strong><br />
A few code examples here&#8230; (simple to complex)</p>
<ol>
<li>Feed</li>
<li>Wiki</li>
<li><a href="http://23screens.openplans.org/2007/05/10/example-forms/">Forms</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://23screens.openplans.org/2007/05/10/have-a-little-class/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Markup dos &#038; don&#8217;ts for spring 2007</title>
		<link>http://23screens.openplans.org/2007/05/10/markup-dos-donts-for-spring-2007/</link>
		<comments>http://23screens.openplans.org/2007/05/10/markup-dos-donts-for-spring-2007/#comments</comments>
		<pubDate>Thu, 10 May 2007 05:01:59 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Principles]]></category>

		<guid isPermaLink="false">http://23screens.openplans.org/2007/05/10/markup-dos-donts-for-spring-2007/</guid>
		<description><![CDATA[
DO:

Focus on structure. Build proper XHTML rather than trying to make things look a certain way.
Nest your html properly.  A tab is equal to 2 spaces.
Comment the end of your elements.
eg, &#60;/div&#62;&#60;!-- end .myLongDiv --&#62;
Use reusable components.
Set scope on table headers. For &#60;th&#62;s that describe columns then scope=&#8221;col&#8221;. For rows, then scope=&#8221;row&#8221;.

DON&#8217;T:

Implement wireframes. We [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://23screens.openplans.org/wp-content/uploads/2007/05/dos_and_donts.jpg" alt="dos_and_donts.jpg" /></p>
<p><strong style="color: #0c0;">DO:</strong></p>
<ul>
<li><strong>Focus on structure.</strong> Build proper XHTML rather than trying to make things look a certain way.</li>
<li><strong>Nest your html properly.</strong>  A tab is equal to 2 spaces.</li>
<li><strong>Comment the end of your elements.</strong><br />
<em>eg</em>, <code>&lt;/div&gt;&lt;!-- end .myLongDiv --&gt;</code></li>
<li><strong>Use reusable components.</strong></li>
<li><strong>Set scope on table headers.</strong> For <code>&lt;th&gt;</code>s that describe columns then scope=&#8221;col&#8221;. For rows, then scope=&#8221;row&#8221;.</li>
</ul>
<p><strong style="color: #c00;">DON&#8217;T:</strong></p>
<ul>
<li><strong>Implement wireframes.</strong> We love Mouna&#8217;s magnificent mockups, but you should be working to build the structure and functionality, not the presentation.</li>
<li><strong>Create unnecessary classes or IDs.</strong> <em>Do</em> use the ones already provided and talk to us if you need new ones.</li>
<li><strong>Use arbitrary headings.</strong> Pick heading tags for outline hierarchy, not for size.</li>
<li><strong>Use tables for layout.</strong> But <em>do</em> use them for tabular data and forms as appropriate.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://23screens.openplans.org/2007/05/10/markup-dos-donts-for-spring-2007/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What we&#8217;re shooting for</title>
		<link>http://23screens.openplans.org/2007/05/10/what-were-shooting-for/</link>
		<comments>http://23screens.openplans.org/2007/05/10/what-were-shooting-for/#comments</comments>
		<pubDate>Thu, 10 May 2007 05:00:55 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Principles]]></category>

		<guid isPermaLink="false">http://23screens.openplans.org/2007/05/10/what-were-shooting-for/</guid>
		<description><![CDATA[
Simple, semantic, reusable markup, tied to organized CSS.

Simple: Keep class names as simple as possible while using The OC and sticking with our naming conventions.
Semantic: Use &#60;h1&#62;, &#60;h2&#62;, etc. for headings, &#60;ul&#62; for unordered lists, &#60;ol&#62; for ordered lists, etc.  Use generic &#60;div&#62;s &#38; &#60;span&#62;s as little as possible.  (Almost) never use tables [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://23screens.openplans.org/wp-content/uploads/2007/05/unicorn.jpg" alt="unicorn.jpg" /></p>
<p><strong>Simple, semantic, reusable markup, tied to organized CSS.</strong></p>
<ul>
<li><strong>Simple</strong>: Keep class names as simple as possible while using <a href="http://23screens.openplans.org/2007/05/10/deliverance-and-the-oc/">The OC</a> and sticking with our <a href="http://23screens.openplans.org/2007/05/10/have-a-little-class/">naming conventions</a>.</li>
<li><strong>Semantic</strong>: Use &lt;h1&gt;, &lt;h2&gt;, etc. for headings, &lt;ul&gt; for unordered lists, &lt;ol&gt; for ordered lists, etc.  Use generic &lt;div&gt;s &amp; &lt;span&gt;s as little as possible.  (<a href="http://23screens.openplans.org/2007/05/10/example-forms/">Almost</a>) never use tables for layout.</li>
<li><strong>Reusable</strong>:  Find patterns and use existing markup whenever possible.  Keep developers out of the CSS file as much as possible.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://23screens.openplans.org/2007/05/10/what-were-shooting-for/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://23screens.openplans.org/2007/05/07/hello-world/</link>
		<comments>http://23screens.openplans.org/2007/05/07/hello-world/#comments</comments>
		<pubDate>Mon, 07 May 2007 21:19:51 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to 23 screens, and welcome to the beginning of a magical journey through the wonderful world of web design.
23 screens is our attempt to document the process of rebuilding our web application, OpenPlans, from the ground upâ€”one screen at a time.  Along the way, we&#8217;ll explore all the various goals &#38; constraints that [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to 23 screens, and welcome to the beginning of a magical journey through the wonderful world of web design.</p>
<p><strong>23 screens</strong> is our attempt to document the process of rebuilding our web application, <a href="http://www.openplans.org">OpenPlans</a>, from the ground upâ€”one screen at a time.  Along the way, we&#8217;ll explore all the various goals &amp; constraints that shape our design decisions.</p>
<p>The goal is simple: <a href="http://www.openplans.org/projects/opencore/main-interfaces">build 23 screens</a> in 10 days, using (X)HTML, CSS, and a bit of Javascript, so that they can be made functional by an eagerly waiting team of developers.  We&#8217;re hoping that this blog will help us keep things straight, and might occasionally prove itself interesting to others out there on the interweb.</p>
<p>So, buckle up, hold your hats, and let&#8217;s go!</p>
]]></content:encoded>
			<wfw:commentRss>http://23screens.openplans.org/2007/05/07/hello-world/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
