tag:blogger.com,1999:blog-175157582024-03-07T19:37:21.320+10:00Stuff and ContentStuff & Content about javascript, AJAX, PHP, eZ publish, CSS, XHTML, Content management and web development.Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.comBlogger66125tag:blogger.com,1999:blog-17515758.post-57112304162768407722013-05-21T18:20:00.000+10:002013-05-21T18:20:30.302+10:00Presentation: Vagrant as part of a production workflowThe following presentation was given on 24 July 2012 to the <a href="http://www.meetup.com/Devops-Brisbane/">DevOps Brisbane group</a>. Some of the technical detail about Vagrant is outdated but I think it provides a good overview of why moving to a "Infrastructure as code" setup makes a lot of sense.
<iframe allowfullscreen="true" frameborder="0" height="389" mozallowfullscreen="true" src="https://docs.google.com/presentation/d/137XnQSNRNVt9EiYOSxSE-6CdBiq66LADzhR6wBLqtgY/embed?start=false&loop=false&delayms=3000" webkitallowfullscreen="true" width="480"></iframe>Anonymoushttp://www.blogger.com/profile/05155956171370098392noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-51197655098076026002013-05-17T12:17:00.001+10:002013-05-17T12:17:10.144+10:00eZ Publish 5 Virtual Machine<span style="font-family: Arial, Helvetica, sans-serif; font-size: 14px;">One of the most common issues of newcomers to eZ Publish is the setup of a system suitable for running it. Without a correctly configured system in place they usually do not get beyond the installation process and abandon their evaluation before having experienced the product. </span><br />
<div style="border: 0px; font-size: 14px; line-height: 1.428571em; margin: 0px; padding: 0px;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="border: 0px; font-size: 14px; line-height: 1.428571em; margin: 0px; padding: 0px;">
<span style="font-family: Arial, Helvetica, sans-serif;">The <a href="https://github.com/brucem/puppet-ezpublish">eZ Publish puppet module</a> is an attempt to codify the requirements for running eZ Publish and provide a means for automatically creating a system suitable for running it - no more following a checklist of "setting up eZ Publish on XYZ".</span></div>
<div style="border: 0px; font-size: 14px; line-height: 1.428571em; margin: 0px; padding: 0px;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
The eZ Publish 5 Virtual Machine can be found on github at <a href="https://github.com/brucem/vagrant-puppet-ezpublish" style="font-size: medium; line-height: normal;">https://github.com/brucem/vagrant-puppet-ezpublish</a>. <span style="line-height: 1.428571em;">It combines Vagrant, VirtualBox & Puppet to generate a VM with the </span><a href="http://share.ez.no/downloads/downloads/ez-publish-community-project-2013.4" style="line-height: 1.428571em;">current eZ Publish community version (2013.4)</a><span style="line-height: 1.428571em;"> installed and ready to be configured.</span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="line-height: 1.428571em;"><br /></span></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The <a href="https://github.com/brucem/vagrant-puppet-ezpublish/blob/master/README.md" style="font-family: Arial, Helvetica, sans-serif;">README.md</a> provides details of the requirements and how to use it.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
</div>
<div style="border: 0px; margin: 0px; padding: 0px;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 1.428571em;"><a href="http://www.vagrantup.com/">Vagrant</a> is a system that </span><span style="font-size: 14px; line-height: 19.984375px;">orchestrates the automatic creation and configuration of systems. It has been used to define a system that provides a platform to run eZ Publish.</span></span></div>
<div style="border: 0px; margin: 0px; padding: 0px;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 19.984375px;"><br /></span></div>
<div style="border: 0px; margin: 0px; padding: 0px;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 1.428571em;">By default Vagrant uses </span><a href="https://www.virtualbox.org/" style="font-size: 14px; line-height: 1.428571em;">VirtualBox</a><span style="font-size: 14px; line-height: 1.428571em;"> to provide a local Virtual Machine environment. This allows for systems (guests) to be created and destroyed locally in </span><span style="font-size: 14px; line-height: 19.984375px;">isolation</span><span style="font-size: 14px; line-height: 1.428571em;"> to your own system (host). For example i</span><span style="font-size: 14px; line-height: 1.428571em;">f you want to test a version of eZ Publish that requires a newer version of PHP that you have installed, you can do so using a VM solution and not have to update your local system, </span><span style="font-size: 14px; line-height: 19.984375px;">potentially</span><span style="font-size: 14px; line-height: 1.428571em;"> breaking other functionally.</span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Many thanks to <a class="g-profile" href="http://plus.google.com/101402050618214380874" target="_blank">+André Rømcke</a> for his input and help in polishing both the <a href="https://github.com/brucem/puppet-ezpublish" style="font-size: 14px; line-height: 19.984375px;">eZ Publish puppet module</a> & <span style="font-size: 14px; line-height: 19.984375px;"><a href="https://github.com/brucem/vagrant-puppet-ezpublish">eZ Publish 5 Virtual Machine</a> setup. </span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 19.984375px;"><br /></span>
<span style="font-size: 14px; line-height: 19.984375px;">I'm happy to receive issues with or without pull requests on either repository via github.</span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 19.984375px;"><br /></span>
<span style="font-size: 14px; line-height: 19.984375px;">If you use it or have any questions let me know in the comments!</span></span></div>
Anonymoushttp://www.blogger.com/profile/05155956171370098392noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-22702120339271653942013-04-19T15:48:00.001+10:002013-04-19T15:48:59.489+10:00New eZ Publish Puppet ModuleIn my <a href="http://www.stuffandcontent.com/2011/12/hassle-free-ez-publish-setup.html">last blog post</a> I wrote about an eZ Publish Puppet module that I'd created that could be used to setup and install eZ Publish.<br />
<br />
Its been awhile since I'd done any work on it (and blogged for that matter!) and in that time both <a href="https://puppetlabs.com/">Puppet</a> and <a href="http://vagrantup.com/">Vagrant</a> have matured considerably. I've also had more experience creating Puppet modules and managing systems with Puppet.<br />
<br />
I've decided to re-write the eZ Publish module from scratch utilising Puppets own modules for apache and mysql. <br />
<br />
The result is available on <a href="https://github.com/brucem/puppet-ezpublish">GitHub</a> and in the <a href="http://forge.puppetlabs.com/brucem/ezpublish">Puppet Module Forge</a>.<br />
<br />
The overall functionality in the new module is essentially the same as the old one, but elements have been decoupled. This allows for the various components that make up an eZ Publish "stack" to be combined to match the desired architecture. e.g. a standalone system with the database and application on the one system to a clustered systems where different components are on separate systems.<br />
<br />
In the coming weeks I hope to post some examples of how it can be used to configure different architectures.<br />
<br />
Currently the module is specific to Debian/Ubuntu systems but I hope to update it in the near future to also work with Redhat/CentOS systems.Anonymoushttp://www.blogger.com/profile/05155956171370098392noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-82245980091387967452011-12-07T22:28:00.001+10:002011-12-08T20:20:37.701+10:00Hassle free eZ Publish setupThis is <b>not</b> another how to setup Ubuntu to run eZ Publish guide...well not really.<br />
<br />
One of the biggest hurdles when getting started with eZ Publish is successfully installing the CMS. This process often fails because the system on which it is being installed is not configured correctly. If you do not have a helpful systems administrator handy it can be quite difficult to get past the initial steps.<br />
<br />
There are a number of solutions that allow you to manage the configuration of computer systems. Two of the most popular are <a href="http://docs.puppetlabs.com/">Puppet</a> & <a href="http://www.opscode.com/chef/">Chef</a>. These systems allow you to create "recipes" of how systems should be setup. <br />
<br />
I've put together a <a href="https://github.com/brucem/puppet-ezpublish">eZ Publish module for Puppet</a> that: <br />
<ul>
<li>Configures a system suitable to run eZ Publish </li>
<li>Setup Virtual Hosts configured to run eZ Publish </li>
<li>Sets up a Database </li>
<li>Downloads eZ Publish </li>
<li>Configures a kickstart.ini file</li>
</ul>
<br />
It's a bit like a <a href="http://share.ez.no/blogs/thiago-campos-viana/tip-setup-ubuntu-11.04-for-ez-publish-dev">guide to setting up eZ publish on Ubuntu</a> but doesn't require you to manually follow the steps (and that you can keep under revision control)! It can also be rerun time and time again with the same result.<br />
<br />
This doesn't help unless you have a system to apply it to and it would help if it was a system that you could trash if you wanted.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Introducing Vagrant</span><br />
<a href="http://vagrantup.com/">Vagrant</a> is a very cool tool that manages <a href="https://www.virtualbox.org/">VirtualBox</a> virtual machines (VM). It will also provision (setup, configure) those VMs with Puppet (and Chef). This makes it an great complementary tool for testing your Puppet configurations. Vagrant can also be used to manage multiple VMs, allowing it to be used to test configurations with more than one system (e.g. separate systems running application and database).<br />
<br />
I've configured a Vagrant setup that utilises the <a href="https://github.com/brucem/puppet-ezpublish">eZ Publish module for puppet</a> module to create a single VM that will be setup to run eZ Publish (<a href="http://share.ez.no/blogs/community-project-board/ez-publish-community-project-2011.11-available">Community Project 2011.11</a>).<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Getting up and running</span><br />
Once you have required software installed on your local system and the <a href="https://github.com/brucem/vagrant-puppet-ezpublish">eZ Publish sample Vagrant setup</a> checked out you can have a VM with the latest version of eZ Publish running by running one command - "<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">vagrant up</span>".<br />
<br />
Running this for the first time will take a while as the base Ubuntu 10.4 LTS image needs to be downloaded. It's around 400Mb so depending on your connection speed it may take some time. The good news is that the base image is only downloaded once and can be used for other Vagrant managed VMs.<br />
<br />
Once the "<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">vagrant up</span>" command has finished running visiting <a href="http://33.33.33.10/">http://33.33.33.10/</a> will display the eZ Publish configuration wizard. A kickstart.ini file has been pre-configured with all the details to perform the installation. <br />
<br />
Clicking "Next" will run the installation with the default parameters defined in the <a href="https://github.com/brucem/puppet-ezpublish/blob/master/manifests/vhost.pp">eZ Publish Puppet module</a>. This will take a little time as the packages for the eZFlow Clean Site need to be downloaded and installed.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Quick guide to Vagrant commands</span><br />
The VM can be shutdown by running "<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">vagrant halt</span>" and started again by running "<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">vagrant up</span>". reloading is as simple as "<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">vagrant reload</span>"<br />
<br />
Once you are finished you can destroy the VM by running "<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">vagrant destroy</span>". Running "<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">vagrant up</span>" will setup new VM and provision it from scratch.<br />
<br />
<a href="http://vagrantup.com/docs/commands.html">More detailed documentation can be found on the Vagrant site.</a><br />
<br />
<span class="Apple-style-span" style="font-size: large;">Last words</span><br />
I've done my testing on a Linux system but you should be able to try this out on any system that can run ruby & VirtualBox. The Vagrant site has a <a href="http://vagrantup.com/docs/getting-started/index.html">guide on getting systems setup</a> for Windows, Mac OS X, Linux, and Solaris.<br />
<br />
I'd be interested to hearing any feedback you might have.Anonymoushttp://www.blogger.com/profile/05155956171370098392noreply@blogger.com1tag:blogger.com,1999:blog-17515758.post-71458574868550461272011-12-07T20:21:00.001+10:002011-12-07T21:19:35.102+10:00It's been a while since my last post...I've just checked my blog and was quite shocked to see that's my last post was almost 2 years ago! In my defence I've been quite busy and managed to get quite a few things done in that time. A few highlights have been:<br />
<ul>
<li><a href="http://ez.no/About-eZ/Events-News/News/eZ-Awards-2010-winners">Winning the 2010 eZ Publish Blogger of the Year</a></li>
<li>Working with the great team at <a href="http://www.visionwt.com/">Vision with Technology</a></li>
<li>Working with old friends and some new ones</li>
<li>Getting engaged</li>
<li>Travel</li>
<li><a href="http://devopsdownunder.org/">Learning to love system administration again</a></li>
<li><a href="http://www.polkadotbride.com/2011/10/striking-mountain-wedding/">Getting married</a></li>
<li><a href="http://www.slideshare.net/brucemorrison/2011-brisbane-web-design-group-review">Running a local web design meetup group</a></li>
</ul>
<div>
Hopefully I'll have some time for blogging again soon!</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-17207384770473811382009-12-23T18:14:00.004+10:002009-12-23T19:25:13.255+10:00eZ Publish Admin Prototype extensionFollowing on from <a href="http://www.stuffandcontent.com/2009/12/how-to-install-ez-admin-interface.html" id="lq-w" title="yesterdays post">yesterdays post</a> on checking out the eZ Admin Interface prototype I've created an extension that can be easily downloaded, installed and enabled.<br />
<ol><li><a href="http://dl.dropbox.com/u/2022827/admin2prototype/admin2prototype.tgz" id="ie-n" onclick="javascript:pageTracker._trackPageview('/virtual/download/admin2prototype.tgz');" title="Download the extension from here">Download the extension from here</a></li>
<li>Copy to your extension directory and untar:<br />
<br />
<span style="font-family: Courier New;">tar xzf admin2prototype.tgz<br />
<br />
</span></li>
<li>Enable it in your admin siteaccess by editing <span style="font-family: Courier New;">settings/siteaccess/site_admin/site.ini.append.php</span> and adding:<br />
<br />
<span style="font-family: Courier New;">[ExtensionSettings]</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">ActiveAccessExtensions[]=admin2prototype<br />
<br />
</span></li>
<li>Clear the cache<br />
</li>
</ol>To disable, simply remove the settings from step 3 above and clear the cache.<br />
<br />
<b>Note:</b> If you enable the extension via the admin interface (Setup -> Extensions) this will effect all site accesses including your front end ones. <br />
<br />
Things to check out in the prototype:<br />
<ol><li>Lack of Shop and Design tabs - these are disabled by default in eZ Publish 4.3</li>
<li>Hidden right menu. Click on the [+] to expand</li>
<li>Content menu (Left Hand side under Content, Users & Media Tabs) can be variably sized. Grab the bottom right hand corner and drag to desired size</li>
<li>Different context menu when left clicking on items in the content menu (I'm not a fan of how sub items cover the top menu items)<br />
</li>
<li><strike>Drag and drop block ordering (When editing a Front Page in eZ Flow)</strike> Apparently this is eZ Flow 2.0 (included with eZ 4.2)<br />
</li>
<li>Full screen editing (this rocks)<br />
</li>
<li>Edit action buttons (Send for Publishing, Store Draft, Discard) replicated at top of edit page</li>
</ol>If you have issues with the extension let me know.<br />
<br />
<a href="http://share.ez.no/blogs/ez/administration-interface-refresh-take-2-tell-us-more-of-what-you-think">Comments on the prototype should be made here</a>. Remember that this is a prototype! <br />
<ol></ol>I'll attempt to keep the download up to date with the latest changes.Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com1tag:blogger.com,1999:blog-17515758.post-13435305736166245142009-12-22T17:09:00.009+10:002009-12-23T18:45:11.419+10:00How to install the eZ Admin Interface prototypeThe <a href="http://share.ez.no/blogs/ez/administration-interface-refresh-take-2-tell-us-more-of-what-you-think" id="ht_:" title="new Admin Interface">Admin Interface Refresh</a> project has had a concept implemented that can be reviewed live with an eZ Publish install. This is a guide on how to get things working.<br />
<br />
The new Admin Interface design is a <b>prototype</b> and it's constantly being refined so don't try this on your production servers.<br />
<br />
Starting from a clean install of eZ Publish 4.2 with the the eZ Flow package (with content)<br />
<ol><li>Change into the design directory<br />
<span style="font-family: Courier New;"> # cd design</span></li>
<li>Checkout the design<br />
<span style="font-family: Courier New;"># svn co http://pubsvn.ez.no/nextgen/trunk/design/admin2<br />
</span></li>
<li>Edit <span style="font-family: Courier New;">settings/siteaccess/admin_site/site.ini.append.php</span> and change the SiteDesign to admin2<br />
<span style="font-family: Courier New;">[DesignSettings]</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">SiteDesign=admin2</span></li>
<li>Grab new menu.ini - this is required to display the left hand menus under Setup and My account.<br />
<span style="font-family: Courier New;"># cd settings/siteaccess/</span><span style="font-family: Courier New;">admin_site</span><span style="font-family: Courier New;">/</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;"># wget http://pubsvn.ez.no/nextgen/trunk/settings/menu.ini</span><br />
</li>
<li>Clear the cache</li>
</ol>You should now be able to view the new interface and it should look something like this:<br />
<div id="xuyz" style="text-align: center;"><a href="http://share.ez.no/var/community/storage/images/media/images/ez-publish-4.3-admin-refresh-preview/321541-1-eng-GB/ez-publish-4.3-admin-refresh-preview.png" target="_blank"><img src="http://docs.google.com/a/stuffandcontent.com/File?id=dzccrsd_42gzdn2kc3_b" style="height: 211.155px; width: 413px;" /></a> <br />
</div><br />
To revert back to the original interface:<br />
<ol><li>Remove the menu.ini from the admin siteaccess</li>
<li>Set the SiteDesign back to admin_site</li>
<li>Clear cache </li>
</ol>Updates are occurring on a regular basis so you can update the design with svn:<br />
<ol><li>Change directory into the new admin design <br />
<span style="font-family: Courier New;">cd design/admin2</span></li>
<li>Update from subversion<br />
<span style="font-family: Courier New;">svn update</span></li>
<li>Clear the cache<br />
</li>
</ol><div><b>Note:</b> If you are attempting to add this to a an existing site make sure you have the <a href="http://projects.ez.no/ezjscore">ezjscore</a> extension installed.<br />
<br />
Let me know if this doesn't work for you via comments and I'll check it out and update the post.<br />
<br />
<b>UPDATE</b>: <a href="http://www.stuffandcontent.com/2009/12/ez-publish-admin-prototype-extension.html">I've created an extension version to make it even easier to check out.</a><br />
</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com3tag:blogger.com,1999:blog-17515758.post-27642248692482445262009-12-17T20:57:00.002+10:002009-12-21T09:51:30.680+10:00eZ Publish Community Day to be streamed live!<img id="wrk0" src="http://docs.google.com/a/stuffandcontent.com/File?id=dzccrsd_38dt5rs2dt_b" style="float: right; height: 180px; margin-left: 1em; margin-right: 0pt; width: 240px;" />The eZ Publish <a href="http://share.ez.no/blogs/ez/community-day-at-the-ez-international-winter-conference-2010-in-geneva" id="wsyq" title="winter conference">winter conference</a> is a free conference being held in Geneva on 21<sup>st</sup> and 22<sup>nd</sup> of January 2010, with the <a href="http://share.ez.no/blogs/ez/community-day-at-the-ez-international-winter-conference-2010-in-geneva#Agenda" id="lfku" title="Community Day">Community Day</a> being held on the 22<sup>nd</sup>.<br />
<br />
If you are like me and can't make it there is some exciting news! eZ Publish's Community Manager Nicolas Pastorino has setup a <a href="http://www.ustream.tv/channel/ez-community" id="y9k5" title="ustream account for the eZ Community">Ustream account for the eZ Community</a> and scheduled a event for the community day. <br />
<br />
<b>That's right the Community Day will be streamed live!</b><br />
<br />
Show your support of this wonderful initiative by <a href="http://www.ustream.tv/login-signup" id="x54." title="signing up to Ustream">signing up to Ustream</a> and <a href="http://www.ustream.tv/channel/ez-community" id="tl7a" title="RSVPing to the event">RSVPing to the event</a>! (Note that two events for they day one for the morning session and another for the afternoon one.) <br />
<br />
The Ustream interface allows for a twitter channel as well as inline chat allowing participation throughout the day. The twitter hastag is <a href="http://twitter.com/#search?q=%23ezwintercf" id="beja" title="#ezwintercf">#ezwintercf</a>.<br />
<br />
If you know anyone interested in <a href="http://www.ez.no/" id="a7-9" title="eZ Publish">eZ Publish</a> get them to RSVP as well. It will be great to have as <a href="http://www.ustream.tv/ezcommunity/followers" id="nr8i" title="many people as possible participating">many people as possible participating</a>!<br />
<br />
If you have any experience producing an live event like this or can help out on the day please <a href="mailto:community@ez.no" id="e2_a" title="contact Nicolas">contact Nicolas</a> and let him know what you can offer.<br />
<br />
Photo Credit: <a href="http://www.flickr.com/photos/mathplourde/3727973992/" id="c828" title="http://www.flickr.com/photos/mathplourde/3727973992/">http://www.flickr.com/photos/mathplourde/3727973992/</a>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-12407738326900303032009-12-17T17:46:00.004+10:002009-12-21T09:52:09.279+10:00eZ Publish Admin redesign - Some suggestionsI've covered two larger topics in other blog posts (<a href="http://www.stuffandcontent.com/2009/12/ez-publish-admin-redesign-think-of.html" id="oy0h" title="Admin interface users">Admin interface users</a> & <a href="http://www.stuffandcontent.com/2009/12/ez-publish-admin-redesign-dashboard.html" id="ztr_" title="Dashboards">Dashboards</a>) so in this post I'm going to cover a number of smaller suggestions I have for the Admin Interface refresh. <br />
<br />
Some of the items have been suggested by others and been added to the specification - I hope I've noted these.<br />
<h2>Improve underlying HTML</h2><a href="http://pwet.fr/blog/some_thougths_about_the_admin_interface_refresh_of_ez_publish" id="inaq" title="Damien has already mentioned">Damien has already mentioned</a> linking labels with their related input via the for attribute. I wasn't aware that there was <a href="http://issues.ez.no/13503" id="s4cs" title="already an issue for this">already an issue for this</a> but I made a start of adding a <a href="http://projects.ez.no/accessibility_improvements" id="gd2x" title="Accessibility & Usability Improvements">Accessibility & Usability Improvements</a> project that currently "<i>associates labels with specific form elements, adds "required" class to required input elements to allow attachment of javascript validation</i>".<br />
<br />
The project looked at "fixing" the datatype edit templates and the <a href="http://svn.projects.ez.no/accessibility_improvements/trunk/CHANGELOG" id="cnjm" title="modifications can be viewed in the CHANGELOG">modifications can be viewed in the CHANGELOG</a>.<br />
<br />
Specific changes I'd like to see in the underlying HTML are:<br />
<ul><li>Labels linked to input fields</li>
<li>Labels only used when associated to an input field<br />
</li>
<li>Fieldsets & legends used to group associated input fields</li>
<li>A class applied to input field that are required<br />
</li>
<li>A class applied to input fields based on datatype<br />
</li>
<li>Size attributes removed from input fields and CSS used to set the size</li>
</ul><br />
These changes will not only improve the accessibility of the admin interface but also improve the front end as well.<br />
<h2>Javascript validation</h2>I'm not sure there is any Javascript validation of forms in eZ Publish. Adding required input validation is relatively easy especially based on the suggestions above as this would allow for simply selecting input elements with the "required" class and ensuring they contain content before the form was submitted.<br />
<br />
While maybe not exactly matched to eZ Publish needs the <a href="http://docs.jquery.com/Plugins/Validation" id="dyx3" title="JQuery validations plugin">JQuery validations plugin</a> is a good example of how this can be done.<br />
<br />
The eZUser datatype is a great example where both Javascript and AJAX can be combined to improve usability. The validation rules ( from when I put together the <a href="http://projects.ez.no/accessibility_improvements" id="j28-" title="Accessibility & Usability Improvements">Accessibility & Usability Improvements</a> project<sup><a href="http://www.blogger.com/post-edit.g?blogID=17515758&postID=1240773832690030303#FOOTNOTE-1">1</a></sup>) is:<br />
<br />
<div style="margin-left: 40px;">Password: If [UserSettings] GeneratePasswordIfEmpty = true empty passwords are allowed and one will be generated if the password is blank.<br />
Password Length: Stored in [UserSettings] MinPasswordLength or default to 3 if not present (in ezuser datatype)<br />
Password cannot be set to "password"<br />
Passwords must match<br />
<br />
Email: Must be valid email<br />
Email: If the email can be used for Authentication the email address must be unique<br />
<br />
Login: must be unique<br />
Login: cannot be empty<br />
<br />
</div>This is a perfect opportunity to utilise Javascript to ensure the validation rules are followed and that Email and Login are unique using AJAX.<br />
<h2>Primary and Secondary Actions</h2><a href="http://www.lukew.com/" id="r085" title="Luke Wroblewski">Luke Wroblewski</a> begins the "Primary and Secondary Actions" chapter of his book <i><a href="http://www.lukew.com/resources/web_form_design.asp" id="hzat" title="Web Form Design">Web Form Design</a></i>:<br />
<blockquote>Labels provide the questions that forms ask people. Input fields give people a way to answer those questions. Neither of these items, however actually lets people complete a form. That singular responsibility rests with actions.<br />
</blockquote>Many pages in the admin interface have lots of form buttons. Currently they are either:<br />
<br />
<div><table border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" class="" id="llt8"><tbody>
<tr><td width="33.333333333333336%"><b>Colour<br />
</b><br />
</td><td width="33.333333333333336%"><b>Meaning<br />
</b><br />
</td><td width="33.333333333333336%"><b>Examples<br />
</b><br />
</td></tr>
<tr><td width="33.333333333333336%">Blue<br />
</td><td width="33.333333333333336%">Main Function<br />
</td><td width="33.333333333333336%">Send for publishing, Store Draft, Discard draft<br />
</td></tr>
<tr><td width="33.333333333333336%">Dark Grey<br />
</td><td width="33.333333333333336%">Supplementary Function<br />
</td><td width="33.333333333333336%">Add object, Disable Editor<br />
</td></tr>
<tr><td width="33.333333333333336%">Light Grey<br />
</td><td width="33.333333333333336%">Disabled<br />
</td><td width="33.333333333333336%">Remove Object (Related Object attribute where there's not an existing association)<br />
</td></tr>
</tbody></table></div><br />
By default a content edit page has (at least) 5 main function buttons, all coloured blue. This makes it extremely difficult to scan for the correct path to complete the task.<br />
<br />
Most forms have a primary and secondary action. The primary action being the "save", "continue" or" "I'm finished here, what's next?" button, they enable completion. Secondary actions are those where the user wants to do the opposite - "Cancel", "Go Back", "Get me outa here!".<br />
<br />
For example when editing content in eZ Publish users are most likely to complete the form by clicking on either "Send for Publishing" (primary) or "Discard Draft" (secondary). These buttons need to stand out on the page so that they are immediately obvious and the user doesn't have to search for them. <br />
<br />
<b>Suggestions:</b><br />
<ul><li>Ascertain and clearly differentiate primary and secondary action buttons on each page</li>
<li>Apply consistent styling to primary and secondary buttons through out the site</li>
<li>If there is no obvious primary and secondary actions don't use them (e.g. cache management )</li>
<li>Use existing colour scheme (or similar) for all other buttons. These are less used and it's OK for users to have to scan the page to find them.</li>
</ul><a href="http://pwet.fr/blog/some_thougths_about_the_admin_interface_refresh_of_ez_publish" id="e1td" title="Damien suggested">Damien has a similar suggestion:</a><br />
<blockquote>Buttons in the admin interface should be of a different colour depending on the action they trigger. For instance cancel buttons can be orange, publish buttons blue, remove buttons red, ... The main key here is to be consistent over all the interface.<br />
</blockquote>This was also added to the <a href="http://pubsvn.ez.no/nextgen/trunk/doc/specifications/trunk/admin_refresh/functional_requirements.txt" id="dsr:" title="specification">specification</a> (#1 as a "Could").<br />
<br />
My concerns with this is that some pages may end up looking like some has dropped <a href="http://en.wikipedia.org/wiki/Skittles_%28confectionery%29" id="slkl" title="skittles">skittles</a> over it. Some pages contain too many actions that may be coloured. I believe that this would limit the ability of users to quickly find and complete their desired action.<br />
<h2>Ability to add help text</h2>The ability to add help text for each attribute of a content class will be a major improvement. This not only allows for better interfaces for users but will save an incredible amount of time for developers who currently have to customise each form to include this type of information.<br />
<br />
<b>Note</b>: This has been added to the specification but I'd like to see it a little higher up the list. Much more important than any drag and drop functionality IMHO!<br />
<div><div><h2>Setup tab</h2>The setup tab is the dumping ground of functionality that doesn't fit anywhere else. There are functions located under this tab what don't have anything to do with "Setup" e.g. Search statistics, Collected Information and URL Management. I suspect that new users may have some trouble finding this functionality.<br />
<br />
The Setup Tab also contains mix of functionality that Content Editors may require access to (the non setup one listed above are a good start as well as URL management translator and wildcards, and Global settings ) and others that they should not e.g. Cache management, Classes etc.<br />
<br />
In fact unless the Content Editor has the ability to clear the cache (setup -> managecache) they'll see an error when visiting the setup tab. <br />
<br />
<a href="http://www.stuffandcontent.com/2009/12/ez-publish-admin-redesign-think-of.html" id="pxrm" title="Thinking about who is using the interface">Thinking about who is using the interface</a> I'd suggest that the functionality that is available under the Setup Tab is split into <b>Development setup tasks</b> and <b>Editor configuration tasks</b>. Another way of thinking about this tasks that are performed during development and those that are performed during the day to day running of a site.<br />
<br />
<b>Suggestions</b>:<br />
<ul><li>Only the options that the current user has access to should be displayed (This is in the <a href="http://pubsvn.ez.no/nextgen/trunk/doc/specifications/trunk/admin_refresh/functional_requirements.txt" id="wrkq" title="specification">specification</a> #1.5)<br />
</li>
<li>The Setup Tab link should go to a landing page that lists the tasks with a brief description of the functionality provided.</li>
<li>Group related functionality (put the URL alias management, workflow links together)<br />
</li>
</ul><h2>Ability to use old interface</h2>Pain of some level usually goes hand in hand with the introduction of change of any kind. I'd hope that along with the new interface there is the ability for the old Admin interface to be used. The interface is one component of eZ Publish 4.3 but one that have a very big impact. <br />
<br />
The use of the new interface should not be a barrier to upgrading and taking advantage of the new features and bug fixes.<br />
<br />
I know of at least one site that is still on eZ Publish 3.4 because the cost of retraining staff in the new interface was a significant project in itself! (The current interface was introduced in eZ Publish 3.5)<br />
<h2>Christmas reading</h2>I can't recommend enough <a href="http://www.lukew.com/" id="nxvt" title="Luke Wroblewski">Luke Wroblewski's</a> book <i><a href="http://www.lukew.com/resources/web_form_design.asp" id="rvhy" title="Web Form Design">Web Form Design: Filling in the blanks</a></i>. It's a must read if you are creating forms on the web. It won't tell you how to create the perfect form but presents a number of best practices all backed up with research.<br />
</div></div><div class="endnotes"><br />
<sup>1 </sup><a href="http://www.blogger.com/post-edit.g?blogID=17515758&postID=1240773832690030303" name="FOOTNOTE-1"></a>Since I reviewed these additional checks on the Login are allowed.<br />
</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com2tag:blogger.com,1999:blog-17515758.post-35734160460224724822009-12-15T17:06:00.004+10:002009-12-15T17:09:51.967+10:00eZ Publish Admin redesign - Dashboard = OpenSocial?In the preface to the current <a href="http://pubsvn.ez.no/nextgen/trunk/doc/specifications/trunk/admin_refresh/functional_requirements.txt" id="a7zo" title="Admin interface specification">Admin interface specification</a> the last paragraph caught my eye:<br />
<blockquote>A overview of user task need a <b>dashboard</b>, where she can follow here own content, approval and other tasks she might do on a regular basis.<br />
</blockquote><a href="http://docs.google.com/a/stuffandcontent.com/File?id=dzccrsd_35fkqp8bd8_b" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="142" id="dgx:" src="http://docs.google.com/a/stuffandcontent.com/File?id=dzccrsd_35fkqp8bd8_b" width="142" /></a>I recently saw a demo of the latest version of the bug tracking system <a href="http://www.atlassian.com/software/jira/" id="c7::" title="JIRA">JIRA 4.0</a> by <a href="http://www.atlassian.com/" id="p0lj" title="Atlassian">Atlassian</a>. It used an <a href="http://code.google.com/apis/opensocial/" id="sb7j" title="OpenSocial">OpenSocial</a> dashboard to allow users to customise their homepage to access and interact with information that was important to them. The system not only displays JIRA widgets but any OpenSocial widgets (and those from <a href="http://blog.opensocial.org/2009/12/collaborate-around-opensocial-gadget.html" id="swfn" title="other Atlassian products">other Atlassian products</a>). You can check out a video of it in action <a href="http://www.atlassian.com/tv/episode?id=m558flw7cjdh&product=jira" id="p1e2" title="here">here</a> and more information on how <a href="http://www.atlassian.com/opensocial/" id="an4p" title="Atlassian is using OpenSocial here">Atlassian is using OpenSocial here</a>.<br />
<br />
What is OpenSocial? From the official site:<br />
<blockquote>OpenSocial defines a common API for social applications across multiple websites. With standard JavaScript and HTML,<br />
developers can create apps that access a social network's friends and update feeds. <br />
</blockquote><a href="http://www.google.com/ig" id="zbaq" title="google personal home page">Google personal home page</a> is an example of an OpenSocial dashboard but basically there are 2 parts the gadget consumer/container (dashboard) and the gadget producer (the gadgets themselves),<br />
<br />
Atlassian use the <a href="http://incubator.apache.org/shindig/" id="gzzp" title="Shindig">Apache Shindig</a> software to provide OpenSocial functionality in their products. This is a good match as it's a Java application as are the Atlassian products. The good news for eZ Publish is that there is a <a href="http://incubator.apache.org/shindig/developers/php/index.html" id="v1g-" title="PHP implementation">PHP implementation</a>.<br />
<br />
While it's probably beyond the scope of the the current Admin Interface redesign I believe that this is technology that would fit nicely with eZ Publish. OpenSocial is based on Open Standards and has wide industry support from the likes of google, linkedin, yahoo!, myspace, saleforce and ebay.<br />
<br />
Another benefit is that the gadgets are <a href="http://code.google.com/apis/gadgets/docs/gs.html" id="y1-o" title="easy to write">easy to write</a> as they are based on HTML, CSS, Javascript and REST. Each eZ Publish module could have a number of gadgets that provide views of information that could be displayed on the dashboard. Examples may include: Items requiring workflow approval, a search, number of new users, new content since last visit or number of active sessions.<br />
<br />
Using OpenSocial not only solves the eZ Publish Admin dashboard problem but opens up eZ Publish to many new opportunities. I can see this as a killer feature for Intranet or Extranet sites.<br />
<br />
Paul Forsyth started an <a href="http://projects.ez.no/opensocial/" id="z.vo" title="OpenSocial project page">OpenSocial project page</a> when it was launched in November 2007. The project doesn't seem to contain much at this stage but perhaps this can be used as the basis for a proof of concept project? Sound interesting?Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com4tag:blogger.com,1999:blog-17515758.post-64703907682318789602009-12-14T17:34:00.004+10:002009-12-14T19:16:38.716+10:00eZ Publish Admin redesign - Think of the Editors!<a href="http://www.flickr.com/photos/sybrenstuvel/2468506922/"><img src="http://docs.google.com/a/stuffandcontent.com/File?id=dzccrsd_32hk67dzf7_b" style="float: right; height: 196px; margin-left: 1em; margin-right: 0pt; width: 240px;" /></a>It's been a while since I <a href="http://www.stuffandcontent.com/2009/10/ez-publish-admin-interface-overhaul.html" id="yks1" title="first posted">first posted</a> about the Admin interface redesign that will be part of the eZ Publish 4.3 (due 30 March 2010). Since that time there have been some great input (<a href="http://share.ez.no/forums/discussions/administration-interface-refresh-tell-us-what-you-think" id="yc:3" title="here">here</a>, <a href="http://share.ez.no/forums/discussions/administration-interface-refresh-take-2-tell-us-more-of-what-you-think" id="upl9" title="here">here</a>, & <a href="http://pwet.fr/blog/some_thougths_about_the_admin_interface_refresh_of_ez_publish" id="u9tp" title="here">here</a>) from the eZ Publish community as well as a transparent and inclusive design process from eZ Publish. <br />
<br />
I'd like to congratulate eZ Systems on their approach with this process and encourage any eZ Publish users to have a look at the <a href="http://pubsvn.ez.no/nextgen/trunk/doc/specifications/trunk/admin_refresh/functional_requirements.txt" id="auej" title="specification">specification</a> and the <a href="http://pubsvn.ez.no/nextgen/trunk/doc/specifications/trunk/admin_refresh/concepts/tab_and_columns.html" id="gju4" title="prototype of proposed layout changes">prototype of proposed layout changes</a> and add their voice to the process by <a href="http://share.ez.no/blogs/ez/administration-interface-refresh-take-2-tell-us-more-of-what-you-think" id="l80v" title="commenting on the blog post">commenting on the blog post</a>.<br />
<br />
In moving forward with any changes I believe that it's important to understand the users of the system and the tasks they are attempting to carry out. This allows for suggestions and potential changes to be "tested" against a rule of "How does this help <b>[ROLE]</b> complete task <b>[TASK]</b>?" <br />
<br />
In my experience users of the Admin interface can be split into two <u>broad</u> groups:<br />
<ol><li><b>Content editors</b>, whose role is to use the Admin interface to accomplish a number of tasks that largely revolve around creating and editing content. These are the day-today users of the Admin interface, but utilise a small subset of the functionality.<br />
</li>
<li><b>Developers</b>, who work extensively with most components within the Admin Interface (including those that a Content Editor would use) while a site is being built. However once a site is live will visits to the Admin Interface are only to resolve issues or add new functionality.<br />
</li>
</ol><br />
I believe that the most important group of the two are the Content Editors. They are (usually) our clients, pay the bills and use the system extensively once it's live. They are also the ones who talk to others (potential clients) about the system. So as well as adding your comments to the <a href="http://share.ez.no/blogs/ez/administration-interface-refresh-take-2-tell-us-more-of-what-you-think" id="bu28" title="blog post">blog post</a>, ask your clients what issues they have and improvements they'd like to see.<br />
<br />
Photo credit: <a href="http://www.flickr.com/photos/sybrenstuvel/2468506922/">http://www.flickr.com/photos/sybrenstuvel/2468506922/</a>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com2tag:blogger.com,1999:blog-17515758.post-68524949015840342302009-10-23T20:35:00.005+10:002009-10-23T20:45:58.642+10:00Review - eZ Publish 4: Enterprise Web Sites Step-by-Step<img id="ltwb" src="http://docs.google.com/a/stuffandcontent.com/File?id=dzccrsd_12f57jz5wc_b" style="float: right; height: 123px; margin-left: 1em; margin-right: 0pt; width: 100px;" />It's been a while since there's been a <a href="http://www.ez.no/" id="awf9" title="eZ Publish">eZ Publish</a> release from <a href="http://www.packtpub.com/?utm_source=stuffandcontent.com&utm_medium=bookrev&utm_content=blog&utm_campaign=mdb_00106" id="zo8s" title="Packt Publishing">Packt Publishing</a> but the long awaited <a href="http://www.packtpub.com/ez-publish-4-enterprise-web-sites-step-by-step?utm_source=stuffandcontent.com&utm_medium=bookrev&utm_content=blog&utm_campaign=mdb_001069" id="j282" title="eZ Publish 4: Enterprise Web Sites Step-by-Step">eZ Publish 4: Enterprise Web Sites Step-by-Step</a> has finally hit the shelves. Written by <a href="http://www.packtpub.com/author_view_profile/id/301" id="uh-:" title="Francesco Fullone">Francesco Fullone</a> and <a href="http://www.packtpub.com/author_view_profile/id/300" id="fegl" title="Francesco Trucchia">Francesco Trucchia</a> it spans 292 pages and details building a site using eZ Publish 4 from server preparation, eZ Publish installation, implementation and deployment. A imaginary magazine site is used to illustrate examples throughout the book. A number of topics are covered that will help those new to eZ Publish get up and running.<br />
<br />
The book is based on eZ publish 4.0.1 and while the current version of eZ publish is 4.2.0 the content is still relevant and there are several notes that refer to features and changes in newer versions. <br />
<br />
Packt has provided <b>Chapter 6 - Creating a Design</b> as a <a href="http://www.packtpub.com/files/1640-ez-publish-4-sample-chapter-6-creating-a-design.pdf" id="sqc5" title="free sample download (PDF)"><b>free</b> sample download (PDF)</a>. A <a href="http://www.packtpub.com/ez-publish-4-enterprise-web-sites-step-by-step?utm_source=stuffandcontent.com&utm_medium=bookrev&utm_content=blog&utm_campaign=mdb_001069#indetail" id="xcl8" title="chapter overview">chapter overview</a> is available on the <a href="http://www.packtpub.com/ez-publish-4-enterprise-web-sites-step-by-step?utm_source=stuffandcontent.com&utm_medium=bookrev&utm_content=blog&utm_campaign=mdb_001069" id="lcz1" title="book site">book site</a> as well as a <a href="http://www.packtpub.com/view_popup/page/ez-publish-4-enterprise-web-sites-step-by-step-table-of-contents" id="yq.d" title="full table of contents">full table of contents</a>.<br />
<br />
This is a review of the PDF version of the book provided by <a href="http://www.packtpub.com/?utm_source=stuffandcontent.com&utm_medium=bookrev&utm_content=blog&utm_campaign=mdb_00106" id="rue7" title="Packt Publishing">Packt Publishing.</a> <br />
<h2>Text and structure<br />
</h2><a href="http://www.packtpub.com/ez-publish-4-enterprise-web-sites-step-by-step?utm_source=stuffandcontent.com&utm_medium=bookrev&utm_content=blog&utm_campaign=mdb_001069" id="m6nr" title="eZ Publish 4: Enterprise Web Sites Step-by-Step">eZ Publish 4: Enterprise Web Sites Step-by-Step</a> is not an enjoyable book, in fact I found it quite painful. The text does not read well and would appear only to have been given the briefest of edits. Some examples of this are:<br />
<br />
<blockquote> The Achilles' heel of eZ Publish is the template system subframework that cannot, and should not, be overrated, and that is used as a true programming language.<br />
</blockquote>and<br />
<blockquote>When we translate a content object, its main URL will change accordingly. But we should only need to create aliases for a single language. For example, we should create an alias for the contact page in the staff section of the site only for the Italian version.<br />
</blockquote>Unfortunately these are not isolated examples. I found myself having to re-read passages several times to understand what was being said.<br />
<br />
The text overuses words like "moreover" (33 instances), is not consistent in it's use of terminology and formatting. The authors make use of the "we" as if they are coming on the journey with the reader instead of instructing them. There is a explanatory "Note" on breadcrumbs that appears twice. I would expected that these types of issues would have been picked up in the editing process. The problem is that the number and severity of issues distract the reader from the knowledge the authors are tyring to convey.<br />
<br />
Some chapters just do not deliver what the chapter titles imply. Chapter 5, titled "Creating an Extension" details how to create an empty extension (directory structure, files). The details of creating the actual content of the extension is found in subsequent chapters. <br />
<br />
The structure of the book is also problematic. At the end of Cchapter 5 the authors take the reader through creating a packaged extension, while at this stage of the book we only have an empty extension. I don't understand why this information was not moved towards the end of the book. Another example of this is that the first screenshot of the admin interface login screen appears in Chapter 7, where the first point the user will have come across the screen is in Chapter 3.<br />
<br />
The requirements of the magazine site that is being used as an example are peppered throughout the book. Giving the users a chapter that detailed the requirements, site-map, write frames and mockups up front would better mimic a real world development process help in explaining how this is to be achieved in the chapters where the site is implemented.<br />
<h2>Image Quality</h2>The screen shots in the book are not clear and difficult to read. The majority are not annotated with explanation of the image left to the accompanying text. Images that are annotated only have highlighted regions (circled in red) and are not labeled. <br />
<br />
There are a number of images that are acknowledged in the accompanying text to come from the the "official eZ System documentation" <i>[sic]</i> according to the footer on the <a href="http://ez.no/doc/ez_publish/technical_manual/4_x/concepts_and_basics/content_management/the_content_object" id="z4uz" title="page in which they appear">page in which they appear</a>, are licenced under the <a href="http://www.gnu.org/copyleft/fdl.html" id="cwb-" title="GNU Free Documentation Licence">GNU Free Documentation Licence</a>. The copyright page in the book makes no mention of these images. I'm not sure if eZ Systems granted permission for their use but I would have expected some official acknowledgement on the copyright page. <br />
<br />
The use of these images (regardless of acknowledgement) is disappointing as the book doesn't present anything new. If the reader has read the official documentation may feel ripped off on recognising them. There aren't many images aside from screen shots in the book and more diagrams would have helped better explain some the the underlying structures that are essential to understand. <br />
<h2>Technical Aspects<br />
</h2>Technically the book is OK with a couple of places where best practices are not followed. One example is using a numerical attribute id instead of an attribute identifier string when fetching related objects (the latter is more easily understood and more portable). Some statements are quite strong (saying that $node.children <b>must</b> be used instead of using a fetch to retrieve the children of the current node) and may be true in some circumstances but would not be considered a rule that <b>must</b> be followed always.<br />
<br />
Some interesting concepts of using separate siteaccesses for development, staging and production are raised but I would have liked to see some more detail on the development workflows around these.<br />
<br />
The examples used throughout the book rely on command line access to a Unix based system specifically Debian & Red Hat Linux. If you are not familiar with Unix then you may have trouble following some examples especially if any unexpected errors occur. I suspect that Windows users would struggle.<br />
<br />
The last chapter (12) on Deployment focuses on using the 3rd party <a href="http://projects.ez.no/ez_deploy" id="j6wh" title="eZ Deploy">eZ Deploy</a> extension. This seems to be a strange inclusion for this book as I would have expected details of using FTP or rSync naively to be detailed in this chapter. <br />
<br />
The Deployment chapter includes the use of <a href="http://seleniumhq.org/" id="jhut" title="Selenium">Selenium</a> and <a href="http://www.phpunit.de/" id="rdhi" title="PHPUnit">PHPUnit</a> for functional testing but doesn't detail testing of the functionality that has been built in the example. This is where the inclusion of a a "Requirements" chapter could have been used as the basis for quality assurance with example tests being written to demonstrate how specific requirements can be tested with these tools.<br />
<h2>Conclusion</h2>In conclusion there is some good technical information in <a href="http://www.packtpub.com/ez-publish-4-enterprise-web-sites-step-by-step?utm_source=stuffandcontent.com&utm_medium=bookrev&utm_content=blog&utm_campaign=mdb_001069" id="lt_d" title="eZ Publish 4: Enterprise Web Sites Step-by-Step">eZ Publish 4: Enterprise Web Sites Step-by-Step</a> but the language and structure make it difficult to follow. New users to eZ Publish may end up more confused than when they started, while as a reference the book isn't ideal as the chapter titles don't always deliver what is expected.<br />
<br />
It should be pointed out that the issues with the book do not lie with the authors but with the editors at <a href="http://www.packtpub.com/?utm_source=stuffandcontent.com&utm_medium=bookrev&utm_content=blog&utm_campaign=mdb_00106" id="m67y" title="Packt">Packt</a>. I'm a little baffled that the book was published as it is and would believe if told that I've received a early draft. I'm not sure that I'd be very pleased if I'd paid for a copy.Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com3tag:blogger.com,1999:blog-17515758.post-68649273984576689302009-10-13T19:18:00.003+10:002009-10-13T19:22:43.633+10:00eZ Publish Admin to get some loving<img id="ofvj" style="width: 223px; height: 240px; float: right; margin-left: 1em; margin-right: 0pt;" src="http://docs.google.com/a/stuffandcontent.com/File?id=dzccrsd_7cfq9bxc2_b" /><br />The current eZ Publish admin interface first appeared almost 5 years ago in version 3.5 ( released Dec 2004 ). At the time it was a massive improvement from the previous version. Since it's release there have been many advances in web technologies, javascript libraries and browser support.<br /><br />When the eZ publish <a title="roadmap" href="http://ez.no/ezpublish/roadmap" id="f.l8">roadmap</a> was updated in July this year it indicated that version eZ Publish 4.3 (due 30 March 2010) will include a redesign of the admin interface. From the roadmap:<br /><blockquote><p>eZ Publish Admin interface<br /></p>Redesign of the current User Interface including :<br /><ul><li>More Ajax based usability features</li><li>Revamped look and feel</li><li>Improved management of Object States</li><li>Dashboard</li></ul></blockquote>A <a title="good discussion of the admin interface" href="http://ez.no/developer/forum/suggestions/2_years_ago" id="y-zm">good discussion of the admin interface</a> occurred in the forums originating in Jan 2009 and was reinvigorated after the roadmap announcement. The thread is a rather long one and winds it's way around a number of topics (JavaScript libraries, projects/contributions site, admin interface) but is well worth reading. The issue of JavaScript libraries has largely been addressed in the <a title="ezjscore project" href="http://projects.ez.no/ezjscore" id="jvaa">ezjscore project</a> (which will be bundled as part of eZ 4.3) but other issues of seems largely up in the air.<br /><br /><span class="fn">Last week <a title="Morten Zetlitz" href="http://twitter.com/wwater" id="w6u4">Morten Zetlitz</a> tweeted from the Nordic eZ Partner Meeting </span>"<span class="status-body"><a title="Itchy fingers after eZ Systems promises a new admin UI by 2010. We need something like Drupal has, an eZ UX initiative." href="http://twitter.com/wwater/status/4713629611" id="q:bg">Itchy fingers after eZ Systems promises a new admin UI by 2010. We need something like Drupal has, an eZ UX initiative.</a><span class="entry-content">" The project he is referring to is the </span></span><a title="Drupal 7 UX Project" href="http://www.d7ux.org/" id="hb-l">Drupal 7 UX Project</a> which is a concerted effort to improve usability. The project has the following principles:<br /><ol><li>Make the most frequent tasks easy and less frequent tasks achievable </li><li>Design for the 80%</li><li>Privilege the Content Creator</li><li>Make the default settings smart</li></ol>I agree with Morten in that a <b>eZ Publish UX Project</b> would be a great idea. Unlike the Drupal project an eZ Publish one should focus on more than the Content Creator. The eZ publish admin interface is the place where the majority of content creation, user management and site configuration takes place. It's used by a number of people playing a number of roles to<br />perform many varied tasks. It's been around for quite some time so there is quite a bit of experience and interface knowledge out there. Fundamental changes need to be made with caution to avoid incurring retraining for existing users.<br /><br />I see a <b>eZ Publish UX Project </b>fleshing out the roadmap list & requirements from the forums to provide an interface style guide as well as providing a user centered information architecture.<br /><br />One of the UX people involved in the project, <a title="Leisa Reichelt" href="http://www.disambiguity.com/" id="j7m-">Leisa Reichelt</a> has some <a title="insightful observations" href="http://www.disambiguity.com/designing-for-the-wrong-target-audience/" id="mi2_">insightful observations</a> of the Drupal process, but I suspect that given that eZ Publish is a very different project that these may not apply, in fact it's likely to have a different set of issues all together.<br /><br />If you like the idea of an <b>eZ Publish UX Project</b> drop me an <a title="email" href="mailto:blog@stuffandcontent.com" id="ufk0">email</a> or comment on the blog.<br /><br /><a title="Tony Wood" href="http://twitter.com/tonywood" id="dr.-">Tony Wood</a> from <a title="Vision with Technology" href="http://www.visionwt.com/" id="q7fu">Vision with Technology</a> has set up a <a title="survey" href="https://www.surveymonkey.com/s.aspx?sm=XdceP232zMtVeQApNduLrg_3d_3d" id="pz83">survey</a> to collect information which will be presented to eZ as feedback. I encourage you to fill out the <a title="survey" href="https://www.surveymonkey.com/s.aspx?sm=XdceP232zMtVeQApNduLrg_3d_3d" id="pw95">survey</a>, but also post to your ideas to the forum or your blogs and comment here.<br /><br />This post has turned out to be more about background information and a call to action than I'd first intended. I've got a bunch of notes on ideas for the Admin interface that I'll turn into a blog post which I'll hopefully get up in the next couple of days.<br /><br />Photo Credit: <a title="http://www.flickr.com/photos/captkodak/373622275/" href="http://www.flickr.com/photos/captkodak/373622275/" id="l7z3">http://www.flickr.com/photos/captkodak/373622275/</a>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com4tag:blogger.com,1999:blog-17515758.post-44352974130227448882009-10-05T18:00:00.006+10:002009-10-05T18:05:26.828+10:00Adding negative filters to eZ Find<div xmlns="http://www.w3.org/1999/xhtml">I've been doing some work with <a href="http://ez.no/ezfind/">eZ Find</a> recently and have come across an issue that has also <a href="http://ez.no/developer/forum/extensions/ez_find/negative_queries">troubled others</a>. While eZ Find includes some <a href="http://ez.no/doc/extensions/ez_find/2_1/customization/template_fetch_functions#Filter">powerful filtering options </a>there's no support for negative filters.<br /><br />This can easily remedied by adding "NOT" as an allowed Boolean Operator and adding specific handling of NOT to the final query construction to <span style="font-family:monospace;">ezfind/classes/ezfezpsolrquerybuilder.php</span>. This small change allows NOT to be used in the same manor as the existing AND and OR operators.<br /><br />An <a href="http://issues.ez.no/IssueView.php?Id=15617&activeItem=1">enhancement request</a> has been lodged that includes the following patch.<br /><br /><code>diff --git a/classes/ezfezpsolrquerybuilder.php b/classes/ezfezpsolrquerybuilder.php<br />index 3c997dc..f30813c 100755<br />--- a/classes/ezfezpsolrquerybuilder.php<br />+++ b/classes/ezfezpsolrquerybuilder.php<br />@@ -852,7 +852,10 @@ class ezfeZPSolrQueryBuilder<br /> }<br /> }<br /><br />- return implode( " $booleanOperator ", $filterQueryList );<br />+ if ( $booleanOperator == 'NOT' )<br />+ return ' NOT ( ' . implode( " OR ", $filterQueryList ) .')';<br />+ else<br />+ return implode( " $booleanOperator ", $filterQueryList );<br />}<br /><br />/**<br />@@ -1590,5 +1593,7 @@ ezfeZPSolrQueryBuilder::$FindINI = eZINI::instance( 'ezfind.ini' );<br />ezfeZPSolrQueryBuilder::$allowedBooleanOperators = array( 'AND',<br /> 'and',<br /> 'OR',<br />- 'or' );<br />+ 'or',<br />+ 'NOT',<br />+ 'not' );<br />?></code><br />To fetch results where the <b>myattr</b> attribute of <b>myclass</b> is not equal to 0 you can write:<br /><code>{def $results = fetch('ezfind', 'search', hash(<br /> 'query', $query,<br /> 'filter', array('not', '<b>myclass</b>/<b>myattr</b>:0')<br />))}<br /></code><br />This query will return any content that where <b>myclass</b>/<b>myattr != 0</b>. This will include objects from other classes, so to limit the results to object of myclass you need to add a class_id filter:<br /><code>{def $results = fetch('ezfind', 'search', hash(<br /> 'query', $query,<br /> 'filter', array('not', '<b>myclass</b>/<b>myattr</b>:0'),<br /> 'class_id', '<b>myclass</b>')<br />))}<br /></code><br />Great to see the <a href="http://ez.no/developer/forum/extensions/ez_find/negative_queries">documentation for eZ Find 2.1</a> make it into HTML format!</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-48985177185674108652009-09-09T18:00:00.001+10:002009-09-09T18:00:03.716+10:00Nominate eZ Publish for 2009 Packt Open Source CMS Awards<div xmlns="http://www.w3.org/1999/xhtml"><div style="float: right;" class="zemanta-image"><a title="Non-free, could qualify as fair use" href="http://en.wikipedia.org/wiki/Image:PacktLogo.jpg"><img src="http://upload.wikimedia.org/wikipedia/en/2/2a/PacktLogo.jpg" /></a><br /><small>Image via <a href="http://en.wikipedia.org/wiki/Image:PacktLogo.jpg">Wikipedia</a></small></div>Time is running out to nominate eZ Publish for this years <a href="http://www.packtpub.com/award">Packt Open Source CMS Awards</a>. Help to get <a href="http://ez.no/ezpublish">eZ Publish</a> into the final five by clicking on the links below and supplying your name and email! (The links auto select eZ Publish)<br /><ul><li><a href="http://www.packtpub.com/nominate-overall-open-source-cms-award-winner?cms=ez+publish">Nominate eZ Publish for Best Overall Open Source CMS</a></li><li><a href="http://www.packtpub.com/nominate-best-open-source-php-cms?cms=ez+publish">Nominate eZ Publish for Best PHP Open Source CMS</a></li></ul><a href="http://www.packtpub.com/nominate-best-open-source-php-cms?cms=ez+publish"><br /></a></div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-44266535018400157762009-08-27T18:00:00.000+10:002009-08-27T18:00:01.770+10:00eZ Publish 4.2 to include Star Rating module<div xmlns="http://www.w3.org/1999/xhtml">Prior to this years eZ conference I was approached by eZ systems to allow for my <a href="http://www.stuffandcontent.com/2008/02/new-rating-extension-for-ez-publish.html">Star Rating module</a> to be included in the eZ Publish distribution. All and all it was a pretty painless process that simply required the signing of the <a href="http://ez.no/ezfind/contributing/cla">Contributor Licence Agreement (CLA)</a>.<br /><br />The CLA is an interesting legal document as it doesn't specify the particular piece of software that it refers to. I was informed that this is by design as it's intended to be a general agreement where specifics are communicated seperately.<br /><br />eZ Systems have created a new project for <a href="http://projects.ez.no/ezstarrating">eZ Star Rating</a> on the eZ Projects site where a number of improvments have been made, including:<br /><ul><li>Given it the eZ treatment, better comments, cleaned up code formatting<br /></li><li>Removed references for full 4.x compatability</li><li>Changed from <a href="http://projects.ez.no/ezxajax">xajax</a> to <a href="http://projects.ez.no/ezjscore">ezjscore</a> + yui3 for ajax calls</li><li>Merged rating code from <a href="http://projects.ez.no/ezcore">ezcore</a> / ezyui</li><li>Code cleanup (cs & phpdoc and code name conventions)</li><li>Added fetch operators</li><li>Added postgresql support</li><li>Added internationalisation</li></ul>The upshot is that the<a href="http://www.stuffandcontent.com/2008/02/new-rating-extension-for-ez-publish.html"> Star Rating module</a> will remain under the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL</a>, I retain copyright of the original work and it's now installed as part of<a href="http://ez.no/ezflow"> eZ Flow</a> in eZ publish 4.2 (of cource it can still be used on it's own). You can check it out in <a href="http://ez.no/developer/news/ez_publish_4_2_0alpha1_released">eZ Publish 4.2.0alpha1</a>.<br /><br />The <a href="http://projects.ez.no/ezstarrating">eZ Projects site</a> states<br /><blockquote>NOTE: THIS IS TEMPORARY PROJECT. WILL BE MERGE WITH http://projects.ez.no/starrating<br /></blockquote>I haven't had any communication with eZ Systems regarding this matter and I can't see the point in doing a merge. I don't intend to make any further changes to the original so from eZ Publish 4.2 onwards (there appears to be a reliance on <a href="http://projects.ez.no/ezstarrating/subversion/25">core changes that are in eZ publish 4.2</a>) use the <a href="http://projects.ez.no/ezstarrating">eZ publish version</a>.</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-5342730860568961612009-08-26T16:42:00.002+10:002009-08-26T16:46:12.147+10:00eZ Publish 4.2 User module to get workflow triggers<div xmlns="http://www.w3.org/1999/xhtml">The upcoming eZ Publish 4.2 (<a href="http://ez.no/ezpublish/roadmap">due September 29th</a>) will add a bunch of workflow triggers to the <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/reference/modules/user">user module</a>. Workflows will be able to be attached to the following views:<br /><ul><li><a href="http://ez.no/doc/ez_publish/technical_manual/4_0/reference/modules/user/views/activate">Activation</a></li><li><a href="http://ez.no/doc/ez_publish/technical_manual/4_0/reference/modules/user/views/password">Change Password</a></li><li><a href="http://ez.no/doc/ez_publish/technical_manual/4_0/reference/modules/user/views/forgotpassword">Forgot Password</a></li><li><a href="http://ez.no/doc/ez_publish/technical_manual/4_0/reference/modules/user/views/preferences">Preferences</a></li><li><a href="http://ez.no/doc/ez_publish/technical_manual/4_0/reference/modules/user/views/setting">Set Preferences</a><br /></li></ul>This allows for custom workflow events to be run before and after each of these operations, resulting in a massive increase in the flexibility when interacting with users.<br /><br />Some potential uses that come to mind:<br /><ul><li>Emailing users upon activation</li><li>Creating user specific content upon activation</li><li>Emailing users when they change their password</li></ul>An effect of these changes is that code for these actions is isolated into a <a href="http://pubsvn.ez.no/websvn2/filedetails.php?repname=nextgen&path=%2Ftrunk%2Fkernel%2Fuser%2Fezuseroperationcollection.php&rev=23884">class</a> allowing calls to be easily made from elsewhere. Prior to these changes to activate a user outside of the user/activate view you would have replicate code contained in the view. This will also make it easier to test.<br /><br />I would have loved to see triggers added for <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/reference/modules/user/views/login">login</a> and <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/reference/modules/user/views/logout">logout</a> but I suspect that would be a more involved exercise.<br /><br />Unfortunately this enhancement did not make it into <a href="http://ez.no/developer/news/ez_publish_4_2_0alpha1_released">eZ Publish 4.2.0alpha1</a><br /><br />SVN changes: <a href="http://pubsvn.ez.no/websvn2/revision.php?repname=nextgen&path=%2F&rev=23884">http://pubsvn.ez.no/websvn2/revision.php?repname=nextgen&path=%2F&rev=23884</a><br />Changes were based on the enhancement request <a href="http://issues.ez.no/IssueView.php?Id=14882">http://issues.ez.no/IssueView.php?Id=14882</a><br /></div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com6tag:blogger.com,1999:blog-17515758.post-49186179298842594322009-08-04T17:04:00.002+10:002009-08-04T17:05:26.714+10:00PHPList extension upgraded for eZ Publish 4.x<div xmlns="http://www.w3.org/1999/xhtml"><img src="http://www.phplist.com/images/phplist-logo.png" style="max-width: 800px; float: right; margin-top: 10px; margin-bottom: 10px; margin-left: 10px;" /> Thanks to sponsorship by <a href="http://www.dbinformatics.com.au/">DB Informatics</a> the <a href="http://projects.ez.no/phplist">PHPList subscription synchronise extension</a> has been upgraded to work with PHP5 and eZ Publish 4.x<br /><br />This extension allows for the addition of a <span style="font-style: italic;">Subscribe to list</span> attribute to be added to the User content class. Users are able to subscribe or unsubscribe from <a href="http://www.phplist.com/">PHPList</a> mailing list by editing their profile.</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com1tag:blogger.com,1999:blog-17515758.post-64668552762627182252008-12-15T12:42:00.003+10:002009-04-23T15:25:18.663+10:00New reCAPTCHA release for eZ PublishThanks to <a href="http://serwatka.net/">Łukasz Serwatka</a> for pointing out some <a href="http://projects.ez.no/recaptcha/forum/general/js_issue_with_ie7">issues with JavaScript in IE7</a>. I've applied the patch and released new versions for both <a href="http://ez.no/developer/contribs/applications/recaptcha_ez3">eZ 3.x</a> & <a href="http://ez.no/developer/contribs/applications/recaptcha_ez4">eZ 4.x</a> both on the contributions section of the main ez.no site and at <a href="http://projects.ez.no/recaptcha">projects.ez.no</a>.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ez.no/var/ezno/storage/images/company/news/ez_awards_2008_prize_winners/2_award_winner_web__1/1604791-1-eng-GB/2_award_winner_web_medium.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 149px;" src="http://ez.no/var/ezno/storage/images/company/news/ez_awards_2008_prize_winners/2_award_winner_web__1/1604791-1-eng-GB/2_award_winner_web_medium.jpg" alt="" border="0" /></a><br />It's pretty old news now but the reCAPTCHA extension won the "Contribution of the year" at this years <a href="http://ez.no/company/news/ez_awards_2008_prize_winners">eZ Awards</a>! A little embarrassing to tell the truth, given that the extension simply exposes the <a href="http://recaptcha.net/">reCAPTCHA system</a> which does all the hard work.<br /><br />If you use the extension please drop a comment on the blog and link to your site. It's great to win awards but even better to see the extension in action.Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com4tag:blogger.com,1999:blog-17515758.post-36066145284089082552008-12-08T13:40:00.003+10:002008-12-08T23:36:44.375+10:00eZtip: Character Encoding in Templates<div xmlns="http://www.w3.org/1999/xhtml"><a title="Idea (by annais)" href="http://flickr.com/photos/annais/9335897/"><img alt="Idea (by annais)" title="Idea (by annais)" src="http://farm1.static.flickr.com/8/9335897_f55c8f30c5_m.jpg" style="float: right; margin-top: 10px; margin-bottom: 10px; margin-left: 10px;" height="240" width="182" /></a>Recently I was working on a multilingual site and had to add some static text in a number of languages. I added the supplied text and then viewed the resulting page. Having previously lost many hours of my life to dealing with character encoding issues I momentarily regretted I'd gotten out of bed when confronted with mess that was before me.<br /><br />Quickly regaining my composure I realised that eZ Publish must be doing the transformation and with a bit of digging I discovered that by default templates are seen by the system as being in iso-8859-1 and are converted into utf-8 for display.<br />In my case eZ Publish was doing what it was told and converting the already utf-8 characters in utf-8.<br /><br />There are 2 options for telling eZ publish the character encoding of a template. Firstly you can configure eZ publish that all templates are utf-8 by editing template.ini.append.php in overrides for the entire site or your specific siteaccess to limit the effect.<br /><br /><code>[CharsetSettings]<br /># The charset to use if no charset is specified in the template<br />DefaultTemplateCharset=utf-8</code><br /><br />The other option is to specifically indicate a template as being encoded using utf-8. This involves adding the following line to the top of the template.<br /><br /><code>{*?template charset=utf-8?*}</code><br /><br />In end I utilised the latter method. As I was making a small change to a large site that I was not familiar with, the specific method allowed for the change to be limited the effected template only.<br /><br />I must admit I was surprised that these defaults are in place, given that eZ moved to a Unicode default some time ago. From the comments on <a href="http://issues.ez.no/IssueView.php?Id=12269&activeItem=6&rv%5B%5D=811&rm=1&column=8&sortOrder=4http://issues.ez.no/IssueView.php?Id=13835&ProjectId=3">this issue </a>it would appear that concerns about backward compatibility are the reason that the default remains iso-8859-1 while the output is set to utf-8. I do wonder what effect this has on performance though.</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com4tag:blogger.com,1999:blog-17515758.post-76236516462217208732008-11-12T10:22:00.002+10:002008-11-12T10:31:09.324+10:00Read about French eZ Developer day with Google Readers inline TranslationsThere is a wonderful <a href="http://translate.google.com.au/translate?hl=en&sl=fr&u=http://ezpublish-france.fr/">French eZ publish community</a> and many of the members blog. In the past keeping up to date with these has been a quite painful and involved passing the link through an online translator.<br /><br />Yesterday I read an <a href="http://googlereader.blogspot.com/2008/11/is-your-web-truly-world-wide.html">announcement</a> that Google have added automated translations to their online RSS reader product, <a href="http://www.google.com/reader">Google Reader</a>. Now reading these blogs is as simple as adding the feed and selecting "Translate into my language" from the feed settings options.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7v0KNkbWkDUAmxzpqBSLl7ClaGYtcu6AaNSFDU07_1JdYJchWWGktTAerVtF5V61lq_tsdbSAsXLymjDOy9zl3KZI283Gzak_rQGPhiJRQ8rK2SNKbaNHK3-r2QEX25HYsuhH/s1600-h/GoogleReaderTranslations.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 271px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7v0KNkbWkDUAmxzpqBSLl7ClaGYtcu6AaNSFDU07_1JdYJchWWGktTAerVtF5V61lq_tsdbSAsXLymjDOy9zl3KZI283Gzak_rQGPhiJRQ8rK2SNKbaNHK3-r2QEX25HYsuhH/s400/GoogleReaderTranslations.png" alt="" id="BLOGGER_PHOTO_ID_5267560332538920642" border="0" /></a><br />I discovered this great new feature at the same time that I read <a href="http://pwet.fr/">Damien Pobels</a> post pointing out summaries of the eZ Developer day recently held in Paris:<br /><ul><li><a href="http://209.85.171.104/translate_c?hl=en&sl=fr&tl=en&u=http://blog.gauthier-garnier.fr/post/eZ-developer-day-a-Paris-7-novembre-2008&usg=ALkJrhgOAUoqgIodzMDL2Ql6z7B-J5pL4w">eZ developer day in Paris (November 7, 2008)</a> by Gauthier <a href="http://209.85.171.104/translate_c?hl=en&sl=fr&tl=en&u=http://blog.gauthier-garnier.fr/&usg=ALkJrhgazAVGjvvXb7No_LqDrSVevjSRDA">Garnier</a></li><li><a href="http://209.85.171.104/translate_c?hl=en&sl=fr&tl=en&u=http://www.nfrey.com/ezpublish/ez-developer-day-7-11-08/&usg=ALkJrhj_m6uHrIQB7mo4op7KczNkj_434w">Ezpublish Developer Day in Paris (November 7, 2008)</a> by Nicolas <a href="http://209.85.171.104/translate_c?hl=en&sl=fr&tl=en&u=http://www.nfrey.com/&usg=ALkJrhi4Hv4HiWJ91hc_zXK5XOhfzRd36Q">Frey</a></li></ul>Gauthiers post mentions that there is an International eZ Publish Developer day to be held in Barcelona on January 29, 2009. Can't find anything on the eZ site though.Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-71229176017664935882008-11-11T11:42:00.008+10:002008-11-11T18:19:43.083+10:00eZtip: Errors can be misleading...what happens when the DB is deadI recently received an email from an eZ community member stating after an abnormal system reboot that their working eZ Publish install was reduced to responding with "Error / kernel (1) Access denied"<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi32NyNmjPeuiZmuVtCzDnKDG8iG0vEy0TVa4vLfBFPpmI4b3eQuTcUA7oSTCMIQSGyRLzoHMunWWxFBWK5qPDSwH3bGLWnIjVxQd2t7Sq8npz01PYuumMga25m_j9bN9xsbEs-/s1600-h/kernel_error_1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 176px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi32NyNmjPeuiZmuVtCzDnKDG8iG0vEy0TVa4vLfBFPpmI4b3eQuTcUA7oSTCMIQSGyRLzoHMunWWxFBWK5qPDSwH3bGLWnIjVxQd2t7Sq8npz01PYuumMga25m_j9bN9xsbEs-/s320/kernel_error_1.png" alt="" id="BLOGGER_PHOTO_ID_5267210151755712418" border="0" /></a><br />My suspicion was that there was an issue with the database. More than likely it had not successfully started when the system was brought up again.<br /><br />I tested this theory by stopping the database in my local development environment and accessing the associated eZ Publish site. Manually editing the settings/siteaccess/eng/site.ini/append.php to turn on debugging confirms the problem and gives an insight into what is happening:<br /><br /><b><span style="color:orange;">Warning:</span> PHP</b><br /><pre>mysqli_connect() [<a href='function.mysqli-connect'<br />>function.mysqli-connect</a>]:<br />(HY000/2002): Can't connect to local MySQL server through socket<br />'/var/run/mysqld/mysqld.sock' (2)<br />in /var/www/ezpublish-4.0.0-ezwebmin/lib/ezdb/classes/ezmysqlidb.php<br />on line 132</pre><br /><b><span style="color:red;">Error:</span> eZMySQLiDB</b><br /><pre>Connection error: Couldn't connect to database.<br />Please try again later or inform the system administrator.<br />Can't connect to local MySQL server through socket<br />'/var/run/mysqld/mysqld.sock' (2)</pre>One of the main concepts of eZ publish is that there is always a user associated with an access. If a specific user is not logged in then the special "anonymous user" is utilised. The anonymous user exists and must be retrieved from the database so that the roles that are associated with it can be access and the permissions system can determine if the user has access to the requested resource.<br /><br /><b><span style="color:orange;">Warning:</span></b><pre>User not found, returning anonymous</pre><b><span style="color:orange;">Warning:</span></b><pre>Anonymous user not found, returning NoUser</pre>Because the database is not accessible the Anonymous user cannot be retrieved so the system creates a "dummy" eZUser object (NoUser) and returns that. (This behavior can bee seen in the eZUser:instance method in kernel/classes/datatypes/ezuser/ezuser.php)<br /><br />As NoUser does not exist and has no role information associated with it, not that any could be retrieved, the system responds with the access denied message.<br /><br />Now I'm sure that at some point eZ Publish raised an error on database connectivity issues instead of attempting to continue. Having a poke through the source code I found kernel/error/errors.php contains:<br /><br /><code>/*!<br />No database connection<br />*/<br />define( 'EZ_ERROR_KERNEL_NO_DB_CONNECTION', 50 );</code><br /><br />Interestingly this constant doesn't appear anywhere else within the source. I wonder why it is no longer used?<br /><br />As eZ Publish is pretty much useless when database access is not present the system should raise a specific DB error error when access cannot be established. (Of course this could be overridden for each siteaccess). At the very least this would give the site owners a better indication of where to start looking for solutions.<br /><br />I've raised an issue <a href="http://issues.ez.no/IssueView.php?Id=13931&activeItem=1">here</a>. I can't think of any reasons why this isn't a good idea.<br /><br />Update: The Admin siteaccess <span style="font-weight: bold;">does</span> display a the following error when the DB is not accessible:<br /><strong>kernel::50</strong><br /><ul><li>No database connection could be made, the system might not behave properly.</li></ul>Hat tip to <a href="http://andrewduck.name/">@andrewduck</a>. Will have to investigate...Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com2tag:blogger.com,1999:blog-17515758.post-25074003575311631062008-10-29T12:57:00.002+10:002008-10-29T12:59:11.229+10:00eZtip: Get the current siteaccess from template<div xmlns="http://www.w3.org/1999/xhtml">I'm currently working on a multilingual site and had to use the name of the siteaccess in the template code. Easy I thought...well it took quite a while to find.<br /><br />From <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/templates/the_pagelayout/variables_in_pagelayout">http://ez.no/doc/ez_publish/technical_manual/4_0/templates/the_pagelayout/variables_in_pagelayout</a><br /><br /><table class="renderedtable" cellpadding="2" cellspacing="0"><thead><tr><th>Variable</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>$access_type</td><td>array</td><td>The name of the siteaccess (as "name") and the ID number (as "type") of the <a href="http://www.blogger.com/doc/ez_publish/technical_manual/4_0/concepts_and_basics/configuration/access_methods">access method</a> that was used (1=URL, 2=Host, 3=Port).<br /></td></tr></tbody></table><br /><br />Adding <code>{$access_type|attribute(show,2)}</code> to the pagelayout.tpl template will give the following:<br /><code><br />name string 'ezwebin_site'<br />type integer 2</code><br /><br />The siteaccess used to serve the current page is accessible via <code>$access_type.name</code></div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com2tag:blogger.com,1999:blog-17515758.post-37268872406752628222008-10-15T11:36:00.002+10:002008-10-15T11:39:31.919+10:00French version of "10 Tips for New eZ Publish Developers"<div xmlns="http://www.w3.org/1999/xhtml">Some days I absolutely love the internet and the possibilities it enables. Today I got a real buzz when I leaned that <a href="http://www.clochix.net/">Clochix</a> has created a <a href="http://www.clochix.net/post/2008/10/11/Conseils-pour-debuter-avec-eZ-Publish">French version</a> of my previous post, "<a href="http://suffandnonsense.blogspot.com/2008/10/10-tips-for-new-ez-publish-developers.html">10 Tips for New eZ Publish Developers</a>". It doesn't appear to be a straight <a href="http://translate.google.com/translate?u=http%3A%2F%2Fwww.clochix.net%2Fpost%2F2008%2F10%2F11%2FConseils-pour-debuter-avec-eZ-Publish&hl=en&ie=UTF-8&sl=fr&tl=en">translation</a> and contains additional thoughts on most of the points. <br /><br />What Clochix does point out is that many of the tips could apply to most applications, and he's 100% correct on this. Many of them are common sense. Trouble is that time and time again I've see projects (and not just eZ projects ) that don't "follow the rules". Sometimes it's good not to assume that people know and to state the basics!</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com0tag:blogger.com,1999:blog-17515758.post-172341001764513072008-10-09T12:07:00.003+10:002008-10-09T23:52:06.622+10:0010 Tips for New eZ Publish Developers<div xmlns="http://www.w3.org/1999/xhtml"><a title="1/365 [dazed & confused] (by PhotoJonny)" href="http://flickr.com/photos/photojonny/2268845904/"><img alt="1/365 [dazed & confused] (by PhotoJonny)" title="1/365 [dazed & confused] (by PhotoJonny)" src="http://farm3.static.flickr.com/2285/2268845904_e6b1bb0a3a_m.jpg" style="float: right; margin-top: 10px; margin-bottom: 10px; margin-left: 10px;" width="240" height="188" /></a>We've all been there, starting out with a new product and not knowing where to begin. Below are my top 10 tips for new eZ publish developers.<br /><br /><ol><li><b>Read the <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/installation">install documents</a></b> and make sure your system meets the <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/installation/normal_installation/requirements_for_doing_a_normal_installation">requirements</a> before beginning. eZ Publish has some hefty needs in terms of memory limits and timeouts that may not be set at recommended levels in some PHP setups. Not having these values set to acceptable levels will impact on a successful install.<br /></li><li><b>Don't modify the core distribution</b>. Just don't, no matter how tempting it is. There is no need to modify any files that come as part of the eZ Publish distribution. This will save you losing any changes when you upgrade.<br /></li><li><b>Understand the <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/concepts_and_basics">basics</a></b>. eZ Publish doesn't store content in straight database tables like other Content Management Systems. Read the documentation and understand the <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/concepts_and_basics/content_management/the_content_object">content model</a>. eZ Publish is all about <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/concepts_and_basics/content_management/the_content_object">content objects</a> arranged in a <a href="http://ez.no/doc/ez_publish/technical_manual/4_0/concepts_and_basics/content_management/the_content_node_tree">tree</a>, not data stored in tables.<br /></li><li><b>Debugging holds the answers</b>. If something is not working as expected turn on debugging and check the output. Most times the answer or a pointer to what is wrong will be found in the debug output. Check the Web Server error logs for issues as well. If this still doesn't help, <span style="font-weight: bold;">clear the caches</span> and try again.</li><li><b>Use the Community</b>. If you still have trouble, use the <a href="http://ez.no/developer/forum">forums</a>. There is a great <a href="http://ez.no/developer">developer community</a> around eZ publish and they are usually happy to help.<br /></li><li><b>Provide enough information</b>. Include as much information as possible in your forum post. Include a detailed explanation of what you are attempting to achieve, what is or isn't happening, code samples, specifics of your setup and debug information.</li><li><b>Don't "force" it</b>. If something seems overly difficult it usually means that you aren't approaching it in an optimal way. As with most things there are several ways to achieve the same outcome, some better than others. Ask the community for help (see above).<br /></li><li><b>Comment your code</b>. Before you start to write any code (<a href="http://ez.no/doc/ez_publish/technical_manual/4_0/templates/the_template_language/comments">templates</a>, PHP, settings) describe what you are going to achieve in a comment. This will not only help you focus on what is required but serve as documentation for anyone who has to work with your code in the future. Remember this may be you in 6 months time.</li><li><b>Write readable code</b>. Follow a coding standard. eZ have a number for various aspects of the system: <a href="http://ez.no/ezpublish/documentation/development/standards/template">Templates</a>, <a href="http://ez.no/ezpublish/documentation/development/standards/php">PHP</a> & <a href="http://ez.no/ezpublish/documentation/development/standards/sql">SQL</a>. There used to be a PDF eznetwork_development_guidelines.pdf up on the eZ site that contains all this info and more but it longer exists - eZ people can this go back? If you are interested email me/comment for a copy.</li><li><b>Plan ahead</b>. Document what you are going to do before starting. This doesn't have to be elaborate or time consuming but will save you time in the long run as well as providing a guide to how the site was put together. I've found that the absolute basics are a sitemap, and a list of content types, their views and how they are applied in the site.<br /></li></ol>What do you wish someone had told you when you first started using <a href="http://ez.no/">eZ Publish</a>?</div>Anonymoushttp://www.blogger.com/profile/13676902324002509368noreply@blogger.com5