<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
         xmlns="http://purl.org/rss/1.0/">




    



<channel rdf:about="http://blog.fourdigits.nl/robgietema/RSS">
  <title>robgietema</title>
  <link>http://blog.fourdigits.nl</link>

  <description>
    
       
       
  </description>

  
  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2009-07-01T09:57:41Z</syn:updateBase>
        

  <image rdf:resource="http://blog.fourdigits.nl/logo.gif"/>

  <items>
    <rdf:Seq>
        
            <rdf:li rdf:resource="http://blog.fourdigits.nl/drag-and-drop-image-uploading-using-deco"/>
        
        
            <rdf:li rdf:resource="http://blog.fourdigits.nl/collection-contentlisting-and-search"/>
        
        
            <rdf:li rdf:resource="http://blog.fourdigits.nl/tinymce-1.1rc3"/>
        
        
            <rdf:li rdf:resource="http://blog.fourdigits.nl/deco-on-the-european-plone-symposium-in-sorrento"/>
        
        
            <rdf:li rdf:resource="http://blog.fourdigits.nl/why-tinymce"/>
        
    </rdf:Seq>
  </items>

</channel>

    <item rdf:about="http://blog.fourdigits.nl/drag-and-drop-image-uploading-using-deco">        <title>Drag and Drop Image Uploading using Deco</title>        <link>http://blog.fourdigits.nl/drag-and-drop-image-uploading-using-deco</link>        <description>In the new beta versions of Firefox 3.6 drag and drop support for uploading files is added, see what Deco can do with this functionality.</description>    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <![CDATA[<p>In the new beta versions of Firefox 3.6 drag and drop support for uploading files is added, see what Deco can do with this functionality.</p><p>After <a class="external-link" href="http://limi.net">Alexander Limi</a> showed me <a class="external-link" href="http://www.thecssninja.com/javascript/drag-and-drop-upload">some demo's</a> of the drag and drop upload functionality added in the new beta versions of Firefox 3.6 I just had to try to add it to the Deco UI. The demo's used a fixed area where images can be dropped. In Deco you want to specify exactly where you want the images to be and not an area. To determine where to drop images Deco uses the mousemove event, but this event is not available when the window doesn't have focus (like with dragging images into a browser) so some code needed to be rewritten to use the dragover event.</p>
<p>Another issue was the fact the demo's use the sendAsBinary method of the XMLHttpRequest object. This method only sends the binary data itself and adding other fields like filename is not possible. I fixed this issue by creating a <a class="external-link" href="http://blog.igstan.ro/2009/01/pure-javascript-file-upload.html">form request in javascript</a> so I can add multiple fields like filename etc. All the sourcecode can be found in the <a class="external-link" href="http://svn.plone.org/svn/plone/sandbox/plone.app.deco/">Plone SVN</a>.</p>
<p> </p>
<p>
<object data="http://blip.tv/play/AYGuogkA" height="338" type="application/x-shockwave-flash" width="530">
<param name="src" value="http://blip.tv/play/AYGuogkA">
<param name="allowfullscreen" value="true">
</object>
</p>
<p> </p>
<p>This demo shows a Finder window on the left with some pictures taken at the Plone Conference 2009 and the Deco UI on the right with some example text. First a single image is dragged into the browser. The image is put on the dropped location and a black mask and loading icon is added to the image. The image is now being uploaded to the server and once ready the server returns the url and some more properties in a json structure. The correct source url is then applied to the image object.</p>
<p>Multiple files is also supported. Each image will be uploaded to Plone and becomes a sepparate tile. After the images are uploaded the images can be rearanged using the standard drag and drop functionality of Deco.</p>]]>
</content:encoded>       <dc:publisher>Four Digits</dc:publisher>        <dc:creator>Rob Gietema</dc:creator>       <dc:rights>(C) Four Digits</dc:rights>                <dc:date>2009-11-11T12:54:35Z</dc:date>        <dc:type>Blog Post</dc:type>    </item>
    <item rdf:about="http://blog.fourdigits.nl/collection-contentlisting-and-search">        <title>Collections, Contentlistings and Search</title>        <link>http://blog.fourdigits.nl/collection-contentlisting-and-search</link>        <description>A sprint at Jarn (Norway) to complete the remaining PLIP's related to collections, contentlistings and search.</description>    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <![CDATA[<p>A sprint at Jarn (Norway) to complete the remaining PLIP's related to collections, contentlistings and search.</p><h2 style="text-align: left;">Sorrento</h2>
<p style="text-align: left;">At the <a href="http://plone.org/events/regional/european-symposium-2009">European Plone Symposium</a> in Sorrento (Italy) we organized a <a href="http://en.wikipedia.org/wiki/Birds_of_a_Feather_%28computing%29">Birds of a Feather</a> session about how to improve collections, contentlistings and search. Among the participants were Geir Baekholt, Carsten Senger and our complete team. Laurens organized the BOF session using his <a href="researching-plone-ui-done">Plone UI research document</a> as input.</p>
<h2 style="text-align: left;">PLIP's</h2>
<p style="text-align: left;">The outcome of the BOF sessions lead to five PLIP's:</p>
<ul>
<li><a href="https://dev.plone.org/plone/ticket/9295">PLIP 9295</a> Improved UI for collections</li>
<li><a href="https://dev.plone.org/plone/ticket/9283">PLIP 9283</a> A more lightweight backend for collections</li>
<li><a href="https://dev.plone.org/plone/ticket/9352">PLIP 9352</a> Combination of search results PLIPs (merge of <a href="https://dev.plone.org/plone/ticket/9271">9271</a> and <a href="https://dev.plone.org/plone/ticket/9282">9282</a>)</li>
<li><a href="https://dev.plone.org/plone/ticket/9327">PLIP 9327</a> Unified interface for lists of content</li>
<li><a href="https://dev.plone.org/plone/ticket/9321">PLIP 9321</a> Reimplement the search form with an eye on usability</li>
</ul>
<p>Carsten took up PLIP 9321 which left us four plips to complete.</p>
<h2>Sprint</h2>
<p>Since the four PLIPs had a lot of overlap we decided to team up with Jarn and complete them all at once. On thursday morning we had a brainstorm session to determine what we already had and which direction to go. Geir already had a working package for plone.app.contentlisting for PLIP 9327 and we had done some work on the search results PLIP. After the brainstorm session we came up with a design using three packages:</p>
<ul>
<li>plone.app.contentlisting to create the unified interface of the content listings</li>
<li>plone.app.search to contain all the search related functionality</li>
<li>plone.app.collection to contain the Collection content type</li>
</ul>
<h3>Backend</h3>
<p>Ralph, Roel and Geir worked on the backend. They used the :records mechanism of Zope to parse the query string. One query line consists of an index (query.i:records), an operator (query.o:records) and a value (query.v:records or query.v:records:list if it was a multiple input field). This query string was converted to a catalog query to get the actual search results.</p>
<p style="text-align: center;"><img alt="Ralph &amp; Roel" class="image-inline image-inline" src="ralphroel.jpeg/image_preview" /></p>
<p class="discreet" style="text-align: center;">Roel, Ralph and Geir working on the backend</p>
<h3>User interface</h3>
<p>Laurens, Denys and I worked on the user interface. We used the design from the PLIP and created a  static HTML <a href="http://svn.plone.org/svn/plone/plone.app.search/trunk/plone/app/search/prototype/index.html">prototype</a> to see if the design we came up with actually worked. Once we agreed this was the right way to go, we continued to build the query builder using the code from the backend team.</p>
<p style="text-align: center;"><img alt="Laurens, Denys and Rob" class="image-inline" src="ldr.jpeg/image_preview" /></p>
<p class="discreet" style="text-align: center;">Laurens, Denys and me working on the UI</p>
<h3 style="text-align: left;">Collection type</h3>
<p style="text-align: left;">Once we got the query parser and the query builder done, it was time to glue everything together and store the query on the collection type. We worked throughout the weekend to get everything done just before the plip deadline. Ralph and Roel created the Collection type and Laurens and I finished the query builder and put the query builder into the criterion edit form of the new Collection type.</p>
<p style="text-align: center;"><img alt="View" class="image-inline image-inline" src="view.jpeg/image_preview" /></p>
<p class="discreet" style="text-align: center;">Finishing the collection type while enjoying the nice view.</p>
<h2>Final result</h2>
<p>Below is a screenshot of the javascript version of the query builder. The first column shows all the available indexes, the second the operator and the third the value. To keep every rule one line we used pulldown menu's for multi selects. The fourth column has a remove criteria button and finally the fifth column shows the remaining matching items after this rule was applied. This provides instant feedback of the number of results per rule, so when there are no results you can see right away wich rule caused this. Below the criteria you can select the sorting order and below that you can see a live search of the matching elements of your query.</p>
<p style="text-align: center;"><img class="image-inline" src="collections" /></p>
<h3>Non javascript fallback</h3>
<p>The interface also has a non-javascript fallback which looks almost the same. See image below:</p>
<p style="text-align: center;"><img class="image-inline" src="nojs.jpg" /></p>
<p class="discreet" style="text-align: center;">Non-javascript fallback interface</p>
<h3>Folder summary</h3>
<p>After saving the query you can select view methods for the collection. These methods use the plone.app.contentlisting package build by Geir.</p>
<p style="text-align: center;"><img class="image-inline" src="view.jpg" /></p>
<p class="discreet" style="text-align: center;">Summary view of the collection</p>
<p>Thanks go out to Jarn for providing the sprint location and we hope the framework team is as excited about the end-result as we are!</p>]]>
</content:encoded>       <dc:publisher>Four Digits</dc:publisher>        <dc:creator>Rob Gietema</dc:creator>       <dc:rights>(C) Four Digits</dc:rights>                <dc:date>2009-08-19T11:54:32Z</dc:date>        <dc:type>Blog Post</dc:type>    </item>
    <item rdf:about="http://blog.fourdigits.nl/tinymce-1.1rc3">        <title>TinyMCE 1.1rc3 up for testing</title>        <link>http://blog.fourdigits.nl/tinymce-1.1rc3</link>        <description>A new release candidate of TinyMCE is released and available for testing, so start your testing engines...</description>    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <![CDATA[<p>A new release candidate of TinyMCE is released and available for testing, so start your testing engines...</p>
<p>This new version contains a lot of fixes, some of the highlights are:</p>
<ul><li>Upgrade steps and uninstall profile added.</li><li>Definition lists added.</li><li>Upgrade to TinyMCE 3.5.2.</li><li>Improved handling of inserting images (all credits to the balloon sprint team!).</li></ul>
<p>A full list of all the changes can be found in the <a class="external-link" href="http://svn.plone.org/svn/collective/Products.TinyMCE/tags/1.1rc3/CHANGES.txt">changelog</a></p>
<h2>Plone 4</h2>
<p>This version also adds support for the upcoming Plone 4. <a class="external-link" href="https://dev.plone.org/plone/ticket/9249">This PLIP</a> which proposes TinyMCE to become the default WYSIWYG editor has been approved by the framework team and is ready for review.</p>
<h2>I18n</h2>
<p>All the control panel messages are also translatable in this version, so anybody who is interested in creating translations please feel free to add them in <a class="external-link" href="http://svn.plone.org/svn/collective/Products.TinyMCE/trunk/Products/TinyMCE/locales/">svn</a>. English and Dutch are already available at this moment.</p>
]]>
</content:encoded>       <dc:publisher>Four Digits</dc:publisher>        <dc:creator>Rob Gietema</dc:creator>       <dc:rights>(C) Four Digits</dc:rights>                <dc:date>2009-08-18T15:03:46Z</dc:date>        <dc:type>Blog Post</dc:type>    </item>
    <item rdf:about="http://blog.fourdigits.nl/deco-on-the-european-plone-symposium-in-sorrento">        <title>Deco on the European Plone Symposium in Sorrento</title>        <link>http://blog.fourdigits.nl/deco-on-the-european-plone-symposium-in-sorrento</link>        <description>The European Plone Symposium 2009 on which a lot of attention has been given to Deco is almost over. Deco is the new page layout and rendering paradigm for Plone (most likely Plone 5).</description>    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <![CDATA[<p>The European Plone Symposium 2009 on which a lot of attention has been given to Deco is almost over. Deco is the new page layout and rendering paradigm for Plone (most likely Plone 5).</p><p>On Wednesday I gave a talk about the progress we have made so far, showing a prototype of the layout and content editing part. Integration with the Plone UI, Dexterity Content Types and the new rendering process called Blocks was covered as well. A video of the presentation can be found  on <a href="http://plone.tv/media/1010208981">Plone.tv</a> and the slides can be found on <a href="http://www.slideshare.net/robgietema/deco-ui-european-plone-symposium-2009">Slideshare</a>.</p>
<p style="text-align: center;"><img alt="Deco Presentation" class="image-inline" src="decopres.jpg" /></p>
<p>On Friday and Saturday Deco was one of the sprint topics. New features were implemented and bugs have been fixed. A complete list of all the work which has been done can be found on <a href="http://www.openplans.org/projects/sorrento-sprint-2009/deco">Open Plans</a>. If you would like to test Deco you can find the installation instruction the <a href="http://svn.plone.org/svn/plone/sandbox/plone.app.deco/trunk/docs/INSTALL.txt">Plone SVN</a>. Feedback about usability and  implementation is very much appreciated. Help implementing Deco is also greatly appreciated, just sent me an e-mail if you want to help out.</p>
<p style="text-align: center;"><img class="image-inline" src="screenshot.jpg" /></p>]]>
</content:encoded>       <dc:publisher>Four Digits</dc:publisher>        <dc:creator>Rob Gietema</dc:creator>       <dc:rights>(C) Four Digits</dc:rights>                <dc:date>2009-05-16T22:25:00Z</dc:date>        <dc:type>Blog Post</dc:type>    </item>
    <item rdf:about="http://blog.fourdigits.nl/why-tinymce">        <title>Why TinyMCE?</title>        <link>http://blog.fourdigits.nl/why-tinymce</link>        <description>As some may have noticed we recently became maintainer of the TinyMCE product for Plone. The development of this product was put on halt after version 2.0.6 of TinyMCE by Jacob Smith (the previous maintainer) because at that time Kupu had all the features and stability to become the default Plone wysiwyg editor. Then why did we pick up the project you may ask? I'll tell you why.</description>    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <![CDATA[<p>As some may have noticed we recently became maintainer of the TinyMCE product for Plone. The development of this product was put on halt after version 2.0.6 of TinyMCE by Jacob Smith (the previous maintainer) because at that time Kupu had all the features and stability to become the default Plone wysiwyg editor. Then why did we pick up the project you may ask? I'll tell you why.</p><p>For a website we were building we were looking for solution to insert an address within the content of a page. This address needed to be selected from a database so when the address itself changed, it was automatically updated within the content of the webpage. This functionality is often called a placeholder. To be able to build this functionality we had to make a plugin for the wysiwyg editor.</p>
<p>After having a closer look at Kupu we came to the conclusion it is possible to create a plugin for Kupu but, it is really hard to separate your plugin code from the Kupu codebase. The last thing we want is to edit the source of another product since this will most likely create issues when upgrading to a newer version of Kupu. We also had a look at the FCKEditor plugin for Plone but this editor also isn't very plugin friendly.</p>
<p>When examining the TinyMCE codebase we noticed TinyMCE is by itself already fully based on modules. This made it really easy to create a separate TinyMCE plugin in another Plone product. The only problem at the time was that, as stated above, the development of TinyMCE was put on halt. That is why we decided to upgrade the product ourself to the newest version of TinyMCE and Plone. After that we also added a control panel to make it easier to configure the editor.</p>
<p>At the moment we are working on the placeholder product for TinyMCE which should be done this summer.</p>]]>
</content:encoded>       <dc:publisher>Four Digits</dc:publisher>        <dc:creator>Rob Gietema</dc:creator>       <dc:rights>(C) Four Digits</dc:rights>                <dc:date>2008-06-03T15:55:00Z</dc:date>        <dc:type>Blog Post</dc:type>    </item>




</rdf:RDF>
