<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>News from Planet eZ publish</title>
    <link>http://planetezpublish.org</link>
    <description></description>
    <language></language>
    <item>
      <pubDate>Wed, 16 May 2012 17:53:24 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>&quot;Concurrency and Scalability&quot; - Jérôme&apos;s talk at the Forum PHP conference, June 6th, Paris</title>
      <link>http://share.ez.no/blogs/ez/concurrency-and-scalability-jerome-s-talk-at-the-forum-php-conference-june-6th-paris</link>
      <description>&lt;p&gt;On June 6th in Paris, &lt;a href=&quot;http://share.ez.no/community/profile/11256&quot; title=&quot;Jérôme Vieilledent in the eZ Community&quot; target=&quot;_self&quot;&gt;Jérôme&lt;/a&gt;, from our engineering and R&amp;D team will enlighten us on Concurrency and Scalability, illustrating the talk with his experience on eZ Publish, and most particularly the latest developments of eZ Publish 5.&lt;/p&gt;&lt;div class=&quot;ezxmltext-separator&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 15 May 2012 15:55:33 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>eZ Publish Enterprise Edition Etna (4.7) at a glance. Two webinars scheduled</title>
      <link>http://share.ez.no/blogs/ez/ez-publish-enterprise-edition-etna-4.7-at-a-glance.-two-webinars-scheduled</link>
      <description>&lt;p&gt;Today is “&lt;i&gt;&lt;b&gt;Release Day&lt;/b&gt;&lt;/i&gt;” for Enterprise Edition!&lt;/p&gt;&lt;p&gt;While eZ Publish Community Project is updated and published &lt;a href=&quot;http://share.ez.no/download&quot; title=&quot;eZ Publish Community Project downloads&quot; target=&quot;_self&quot;&gt;every month&lt;/a&gt;  - which is a regular expression of what we, the eZ Community &amp; eZ Engineers, are building very successfully, we have our share of guilty pleasure in the release of the Enterprise Edition.&lt;/p&gt;&lt;div class=&quot;ezxmltext-separator&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 15 May 2012 09:12:12 GMT</pubDate>
      <author>Netgen </author>
      <title>How to create a modern web site - part 3: the Web Content Model</title>
      <link>http://www.netgen.hr/Blog/How-to-create-a-modern-web-site-part-3-the-Web-Content-Model</link>
      <description>&lt;p&gt;Before I started to write these posts we used to call this part of the project Information Architecture (IA). While browsing the web about the topic for this post, I noticed that IA is used in much broader sense. It usually includes the site map (we covered it already), navigation, content organization, wire frames, mock-ups and user scenarios. The topic covered in this post is very specific part of this broader picture: how the content should be organized, thus we can call it information structure or content model. A similar concept is the database model when designing a system which uses an SQL database (of course, content model could be implemented via a database, depends on the software used).&lt;/p&gt;&lt;a name=&quot;eztoc8288_0_1&quot; id=&quot;eztoc8288_0_1&quot;&gt;&lt;/a&gt;&lt;h3&gt;What is a web content model?&lt;/h3&gt;&lt;p&gt;There are several definitions we could apply:&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;it is a basic information architecture (focusing on just describing each specific page)&lt;/li&gt;

&lt;li&gt;it specifies information on each specific page&lt;/li&gt;

&lt;li&gt;assessing needed content on each specific page&lt;/li&gt;

&lt;/ul&gt;
&lt;p&gt;First, you’ll notice that ‘specific page’ is mentioned always. In the process of specifying the content model all page types ought to be identified (we already defined some of them on the site map). The process is natural thing to do after site map is created. Also, with the content model in place you should have all the info for creating wire frames.&lt;/p&gt;&lt;a name=&quot;eztoc8288_0_2&quot; id=&quot;eztoc8288_0_2&quot;&gt;&lt;/a&gt;&lt;h3&gt;How to create it?&lt;/h3&gt;&lt;p&gt;The content model is basically a sheet, so you can create it in Google spreadsheet, Excel or any other sheet application.&lt;/p&gt;
&lt;ol&gt;

&lt;li&gt;Check your site map notes and collect all different types of pages specified there. Probably you will need to add more pages which were not in the site map. For example interstitial pages like login screen or error pages are usually not in the site map.&lt;/li&gt;

&lt;li&gt;Next step would be to list all pieces of information for each page type&lt;/li&gt;

&lt;li&gt;For each pieces of information set type and source &lt;/li&gt;

&lt;/ol&gt;
&lt;p&gt;Example for this web site showing just few page types:&lt;/p&gt;&lt;table class=&quot;cols&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; summary=&quot;content model example&quot;&gt;&lt;col class=&quot;bglight&quot; /&gt;&lt;col class=&quot;bgdark&quot; /&gt;&lt;col class=&quot;bglight&quot; /&gt;&lt;col class=&quot;bgdark&quot; /&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot; valign=&quot;top&quot;&gt;  page type
  &lt;/th&gt;&lt;th scope=&quot;col&quot; valign=&quot;top&quot;&gt;  what
  &lt;/th&gt;&lt;th scope=&quot;col&quot; valign=&quot;top&quot;&gt;  type
  &lt;/th&gt;&lt;th scope=&quot;col&quot; valign=&quot;top&quot;&gt;  source
  &lt;/th&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  Frontpage
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  3 messages with image
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  slider
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  list of news and posts
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  title, image, intro
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  news, blog
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  manual list of references
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  title, image, intro
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  portfolio
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  feedback box
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  custom
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  testimonial box
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  custom
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  contact box
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  custom
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  manual list of clients
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  slider
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  clients
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  Blog post
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  title
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  text
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  date
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  date
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  author
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  text
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  tags
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  tags
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  intro
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  rich text
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  image
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  image
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  body
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  rich text
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  user comments
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  comments
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  RSS subscribe box
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  custom
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bglight&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  tags box
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  cloud
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  blog
  &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;bgdark&quot;&gt;&lt;td valign=&quot;top&quot;&gt;  &amp;nbsp;
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  manual list of clients
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  slider
  &lt;/td&gt;&lt;td valign=&quot;top&quot;&gt;  clients
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;In “page type” column all specific pages are listed. In “what” column all specific pieces of information are listed. For each “what” there is a description in “type” column of what kind of information is shown. This can be a simple information type like text for Title or more complex like comments. Also for all pieces of information which are not directly managed on the page, the page which manages that content is listed in “source” column. For example: Title of the page is always managed by the page, but a List of News &amp; Posts is usually not, that information is actually gathered from other pages to avoid duplicate entry.&lt;/p&gt;&lt;p&gt;It is important that all stakeholders understand how each piece of information works, so that the functionality is common to all team members. If this is not the case, it can lead to problems later. E.g. client could expect User Comments to behave in some different way so the specification could be broken down to even smaller pieces.&lt;/p&gt;&lt;p&gt;Creating this sheet is probably not needed is some cases:&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;if the site is simple so all information can be specified in sitemap and wireframes,&lt;/li&gt;

&lt;li&gt;or, if the site is standard in some way (e.g blog site) so the content model is known,&lt;/li&gt;

&lt;li&gt;or for very simple pages that have no manageable information &lt;/li&gt;

&lt;/ul&gt;
&lt;p&gt;But for more complex sites, especially with more customized content, this step should give a complete overview on all information that is presented and should be an excellent base for next &amp;nbsp;steps:&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;User scenarios&lt;/li&gt;

&lt;li&gt;Wireframes&lt;/li&gt;

&lt;li&gt;CMS page type definitions (if the site is being implement with modern CMS)&lt;/li&gt;

&lt;/ul&gt;
&lt;p&gt;For even more complex sites additional columns would be very handy. If, for example, a site has more user groups with different policies an additional “can read” column would be good to have.&lt;/p&gt;&lt;p&gt;What is important to remember that this model should be revised in situations were you learn more information in the following steps. For example, if you produce a clickable demo for user testing purposes and the results are telling you to change the content model, do it.&lt;/p&gt;&lt;p&gt;That is all for know, hopefully next post from this series will be published in less than year time :)&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 15 May 2012 08:47:00 GMT</pubDate>
      <author>Derick Rethans</author>
      <title>Ignite London: Crowd Sourcing a Map of the World</title>
      <link>http://derickrethans.nl/ignite-openstreetmap.html</link>
      <description>&lt;div class=&quot;article&quot;&gt;
  &lt;div class=&quot;body&quot;&gt;
    &lt;div class=&quot;articleListItem&quot;&gt;
      &lt;h1&gt;&lt;a name=&quot;ignite_london_crowd_sourcing_a_map_of_the_world&quot;/&gt;Ignite London: Crowd Sourcing a Map of the World&lt;/h1&gt;
      &lt;dl class=&quot;head&quot;/&gt;
      &lt;div class=&quot;articleMetaData&quot;&gt;
        &lt;div class=&quot;location&quot;&gt; London, UK&lt;/div&gt;
        &lt;div class=&quot;date&quot;&gt;Tuesday, May 15th 2012, 09:47 BST&lt;/div&gt;
      &lt;/div&gt;
      &lt;p&gt;Almost  two weeks ago, I gave a talk at &lt;a href=&quot;http://ignitelondon.net&quot;&gt;Ignite London&lt;/a&gt; about &lt;a href=&quot;http://openstreetmap.org&quot;&gt;OpenStreetMap&lt;/a&gt;, titled &quot;Crowd Sourcing a Map of the World&quot;. Ignite&apos;s presentation style is 20 slides which automatically advance every 15 seconds. Having never done &lt;a href=&quot;http://derickrethans.nl/talks.html&quot;&gt;this&lt;/a&gt; before I actually wrote the whole talk out. The presentation that I gave slightly diverges from this but I thought it&apos;d still be good to reproduce here. I did add some links to more information, and if you want to see the recording, you can find it at the end of this post.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-01-project-openstreetmap.png&quot; alt=&quot;osm-01-project-openstreetmap.png&quot;/&gt;
      &lt;p&gt;1. This talk is about a project, started here in the UK with as its major goal to create a free map of the whole planet. From roads and motorways to country-side footpaths, restaurants and of course pubs. This talk is about OpenStreetMap, the free map of the world.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-02-ordnance-survey.png&quot; alt=&quot;osm-02-ordnance-survey.png&quot;/&gt;
      &lt;p&gt;2. There are of course already plenty of mapping solutions available. Maybe one of the best maps can be acquired through Ordnance Survey. They can be regarded as the national authority on this subject. It&apos;s however expensive to get access to their maps, especially the very detailed maps from OS MasterMap. Additionally, it&apos;s only for the UK.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-03-google-maps.png&quot; alt=&quot;osm-03-google-maps.png&quot;/&gt;
      &lt;p&gt;3. Besides the commercial solutions, you might wonder why we simply can&apos;t do with GoogleMaps? It&apos;s mostly freely available for use and also provides you with satellite imagery and StreetView. They even allow you in some areas to update the map through Google MapMaker.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-04-the-data.png&quot; alt=&quot;osm-04-the-data.png&quot;/&gt;
      &lt;p&gt;4. But one thing Google doesn&apos;t give you access to, is the data behind the map. All you will ever see, is the rendered map tiles and perhaps some APIs to lookup locations and points of interest. Even for data that you have added yourself through MapMaker.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-05-free-and-open-data.png&quot; alt=&quot;osm-05-free-and-open-data.png&quot;/&gt;
      &lt;p&gt;5. Both aspects; the cost of commercial maps, as well as the access to the data that is behind the map tiles is something that the OpenStreetMap project addresses. But which steps have to be taken to obtain this enormous amount of geographical data?&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-06-survey.png&quot; alt=&quot;osm-06-survey.png&quot;/&gt;
      &lt;p&gt;6. We start by getting our wellies and trusty GPS out. Maybe even some pen and paper. We find a location that looks rather empty on the map and travel to that area to see what&apos;s on the ground. This is step one: data gathering in the field.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-07-urban.png&quot; alt=&quot;osm-07-urban.png&quot;/&gt;
      &lt;p&gt;7. In urban areas such as London the roads have often already been mapped and a GPS is not accurate enough to be useful. Then we just use pen and paper to record points of interest, such as shops, landmarks, restaurants and postboxes, my personal favourite.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-08-countryside.png&quot; alt=&quot;osm-08-countryside.png&quot;/&gt;
      &lt;p&gt;8. In the country side, donated aerial imagery makes it possible for us to easily trace tracks and footpaths. However, you can&apos;t be sure whether the imagery is up-to-date, and you can&apos;t always see where fences, streams and local wild life create barriers.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-09-mapping-party.png&quot; alt=&quot;osm-09-mapping-party.png&quot;/&gt;
      &lt;p&gt;9. In both situations, surveys are best done in groups: at mapping parties. It helps spread the workload and a larger area can be surveyed in one go. As an additional benefit, it allows us to go the pub and discuss our mapping adventures!&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-10-recording.png&quot; alt=&quot;osm-10-recording.png&quot;/&gt;
      &lt;p&gt;10. Doing a survey is important. We take photographs, video and notes with pen and paper of everything that seems to be of interest. This leaves a record that everything we map is actually existing and we can prove that nothing has been copied from other copyrighted maps.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-11-database.png&quot; alt=&quot;osm-11-database.png&quot;/&gt;
      &lt;p&gt;11. After collecting the data, we enter it into the database. This includes basic information such as street names, but we also record whether a café has wheelchair access, or whether a pub has wifi. Updates to the map show up on the site close to real time.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-12-tagging.png&quot; alt=&quot;osm-12-tagging.png&quot;/&gt;
      &lt;p&gt;12. Every map object has tags associated with it. Tags tell whether a line is a road, or perhaps a fence. All the tags are free form so you can generally add as much information about an object as you want. Sometimes however, this gets slightly out of hand and people tag pandas in trees and eyes on postboxes.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-13-display.png&quot; alt=&quot;osm-13-display.png&quot;/&gt;
      &lt;p&gt;13. Once the data has been added to the map, we can make use of it. One of the primary uses is obviously showing the data as map tiles. But with all the extra data, we can generate maps that show all the information you&apos;re interested in-and nothing more.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-14-visualisation.png&quot; alt=&quot;osm-14-visualisation.png&quot;/&gt;
      &lt;p&gt;14. Clockwise, we have four different visualisations of the map data: we have a &lt;a href=&quot;http://www.openstreetmap.org/?lat=51.51647&amp;lon=-0.16968&amp;zoom=17&amp;layers=C&quot;&gt;cycling-specific&lt;/a&gt; style, a style that shows &lt;a href=&quot;http://www.openstreetmap.org/?lat=51.51647&amp;lon=-0.16968&amp;zoom=17&amp;layers=T&quot;&gt;transport&lt;/a&gt; routes, a rendering with &lt;a href=&quot;http://www.openstreetmap.org/?lat=51.51647&amp;lon=-0.16968&amp;zoom=17&amp;layers=Q&quot;&gt;MapQuest&apos;s&lt;/a&gt; style sheets and even a &lt;a href=&quot;http://maps.stamen.com/watercolor/#12/51.5168/-0.1515&quot;&gt;water colours&lt;/a&gt; inspired style.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-15-mapquest.png&quot; alt=&quot;osm-15-mapquest.png&quot;/&gt;
      &lt;p&gt;15. Having mentioned MapQuest; they were one of the first companies to make use of OpenStreetMap data. They provide, free of charge, map tiles with their own rendering style as well as an instance of &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/Nominatim&quot;&gt;Nominatim&lt;/a&gt;, OpenStreetMap&apos;s geolocation sister project.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-16-switching.png&quot; alt=&quot;osm-16-switching.png&quot;/&gt;
      &lt;p&gt;16. Lots of companies have already switched to OpenStreetMap.  The property search site &lt;a href=&quot;http://blog.nestoria.co.uk/why-and-how-weve-switched-away-from-google-ma&quot;&gt;Nestoria&lt;/a&gt; recently switched from using GoogleMaps to OpenStreetMap. Partly because of their costs, but also partly because &quot;The maps are equal or better&quot;. geocaching.com, TfL&apos;s countdown website and Apple also use OpenStreetMap maps and data.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-17-creative-commons.png&quot; alt=&quot;osm-17-creative-commons.png&quot;/&gt;
      &lt;p&gt;17. Although OpenStreetMap provides a free and editable map of the world, there are certain requirements for using the data as well. The most important one is that you always need to attribute the OpenStreetMap project.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-18-switch2osm.png&quot; alt=&quot;osm-18-switch2osm.png&quot;/&gt;
      &lt;p&gt;18. In order to help people start using OpenStreetMap for their mapping needs, the Switch2OSM site has been launched. This website provides background information, case studies and technical information on how to use OpenStreetMap data.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-19-we-need-you.png&quot; alt=&quot;osm-19-we-need-you.png&quot;/&gt;
      &lt;p&gt;19. Right now, OpenStreetMap has very good data coverage in the country, but we are not nearly finished. A lot of work still has to be done, and we rely on you to improve the data too, even if you add just a postbox.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/osm-20-openstreetmap.png&quot; alt=&quot;osm-20-openstreetmap.png&quot;/&gt;
      &lt;p&gt;20. In the last 5 minutes we have looked at what OpenStreetMap is, how the data is gathered and how the data is added to the map. Further more, we had a look at different use cases of the data. OpenStreetMap in the UK: Footpaths and pubs a speciality!&lt;/p&gt;
      &lt;p&gt;And then I planned showing the &lt;a href=&quot;http://vimeo.com/derickr/osm-2011&quot;&gt;&quot;Year of Edits&quot;&lt;/a&gt; video, but that sadly didn&apos;t work out. I&apos;m including it for good measure here though. (If you want it in HD, follow the &lt;a href=&quot;http://vimeo.com/derickr/osm-2011&quot;&gt;link&lt;/a&gt;).&lt;/p&gt;
      &lt;div class=&quot;video&quot;&gt;
        &lt;iframe src=&quot;http://player.vimeo.com/video/34404102?title=0&amp;byline=0&amp;portrait=0&quot; width=&quot; 599&quot; height=&quot; 337&quot; frameborder=&quot;0&quot;/&gt;
        &lt;p&gt;&lt;a href=&quot;http://vimeo.com/34404102&quot;/&gt;OpenStreetMap: A Year of Edits (2011)&lt;/p&gt;
      &lt;/div&gt;
      &lt;p&gt;The video of the talk itself is at &lt;a href=&quot;http://vimeo.com/41626116&quot;&gt;http://vimeo.com/41626116&lt;/a&gt; and is embedded here:&lt;/p&gt;
      &lt;div class=&quot;video&quot;&gt;
        &lt;iframe src=&quot;http://player.vimeo.com/video/41626116?title=0&amp;byline=0&amp;portrait=0&quot; width=&quot; 599&quot; height=&quot; 337&quot; frameborder=&quot;0&quot;/&gt;
        &lt;p&gt;&lt;a href=&quot;http://vimeo.com/41626116&quot;/&gt;Crowdsourcing a Map of the World&lt;/p&gt;
      &lt;/div&gt;
      &lt;div class=&quot;flattr&quot;&gt;
        &lt;a class=&quot;FlattrButton&quot; rev=&quot;flattr;button:compact;&quot; style=&quot;display: none&quot; href=&quot;http://derickrethans.nl&quot;/&gt;
        &lt;noscript&gt;
          &lt;a href=&quot;http://flattr.com/thing/429095/Derick-Rethans-website&quot;&gt;
            &lt;img src=&quot;http://api.flattr.com/button/flattr-badge-large.png&quot; alt=&quot;Flattr this&quot; title=&quot;Flattr this&quot;/&gt;
          &lt;/a&gt;
        &lt;/noscript&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 15 May 2012 06:21:33 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>Bag collection Note</title>
      <link>http://share.ez.no/blogs/bruce-bruce/bag-collection-note</link>
      <description>&lt;p&gt;Woman bags big grass is always greener. Moreover, as the women of fashion, who will not prepare a few different styles of handbags to match different style of clothing?However, handbags and more trouble will come.Do not often use the bag to how easydeformation or metamorphism it?This article mainly tell you how the collection andmaintenance of the bag&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 14 May 2012 18:52:22 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>The share.ez.no team : “We change the way we work: we want more contact with you.”</title>
      <link>http://share.ez.no/blogs/share.ez.no-team/the-share.ez.no-team-we-change-the-way-we-work-we-want-more-contact-with-you.</link>
      <description>&lt;p&gt;The Share Team is responsible for maintaining the eZ Community portal &lt;a href=&quot;http://share.ez.no./&quot; target=&quot;_self&quot;&gt;http://share.ez.no.&lt;/a&gt; Until now the team has taken on each task that came along primarily on their own, without help from any other community members, exception to be made of the amazing &lt;a href=&quot;http://share.ez.no/blogs/share.ez.no-team/ez-design-contest-and-the-winner-is&quot; target=&quot;_self&quot;&gt;design contest&lt;/a&gt;. This approach is going to change.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 14 May 2012 11:16:20 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>eZ Publish Fetch Functions Optimization</title>
      <link>http://share.ez.no/blogs/serhey-dolgushev/ez-publish-fetch-functions-optimization</link>
      <description>&lt;p&gt;Each time there’s a need to get a list of articles/users/comments in eZ Publish, we use fetch functions. Fetch function can be used in a template (&lt;a href=&quot;http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Modules/content/Fetch-functions/list&quot; target=&quot;_blank&quot;&gt;http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Modules/content/Fetch-functions/list&lt;/a&gt;, &lt;a href=&quot;http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Modules/content/Fetch-functions/tree&quot; target=&quot;_blank&quot;&gt;http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Modules/content/Fetch-functions/tree&lt;/a&gt;) and PHP code (&lt;a href=&quot;https://github.com/ezsystems/ezpublish/blob/master/kernel/classes/ezcontentobjecttreenode.php#L1837&quot; target=&quot;_blank&quot;&gt;https://github.com/ezsystems/ezpublish/blob/master/kernel/classes/ezcontentobjecttreenode.php#L1837&lt;/a&gt;). That’s why problems may arise, when you need to fetch a lot of nodes.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blog.nxcgroup.com/2012/ez-publish-fetch-functions-optimization/&quot; title=&quot;eZ Publish Extended Attribute Filters &quot; target=&quot;_self&quot;&gt;Continue Reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Sun, 13 May 2012 21:54:46 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>Update-proofing your extension</title>
      <link>http://share.ez.no/blogs/david-ennis/update-proofing-your-extension</link>
      <description>&lt;p&gt;Settings, directories, AcitveExtension, ActiveAccessExtension, etc.. Use them in the wrong order and go slightly mad.&lt;/p&gt;&lt;p&gt;Mix them up in the right quantities and in the right order, add a touch of patience and you have the recipe for easily updating an extension!&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Fri, 11 May 2012 14:08:48 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>Road to eZ Market (2): contacting eZ, decisions and implications</title>
      <link>http://share.ez.no/blogs/terry-duivesteijn/road-to-ez-market-2-contacting-ez-decisions-and-implications</link>
      <description>&lt;p&gt;Last time I wrote about the &lt;a href=&quot;http://share.ez.no/blogs/terry-duivesteijn/road-to-ez-market-1-the-first-steps&quot; target=&quot;_self&quot;&gt;first steps&lt;/a&gt; we took to launch the extension ‘eZ Multitasking One’ on the &lt;a href=&quot;http://ez.no/Products/eZ-Market/Explore-the-eZ-Market&quot; target=&quot;_self&quot;&gt;eZ Market&lt;/a&gt;. In this blog post I will describe why we chose to develop our extension as much as a self-contained product, relying on the eZ Publish kernel. But first, did you perhaps join the webinar of the eZ Publish Enterprise 4.7 ‘Etna’ release yesterday? Then you should have seen a glimpse of our extension in the presentation, being described as ‘revolutionary’ for eZ Publish, or as the &lt;a href=&quot;http://ez.no/About-eZ/Events-News/News/eZ-Publish-Enterprise-4.7&quot; target=&quot;_self&quot;&gt;news-page of eZ&lt;/a&gt; describes it: ‘&lt;i&gt;The possibility of editing and working on multiple articles or content items at any given time revolutionizes the way eZ Publish Enterprise clients can operate freeing up operators to concentrate on the quality of content creation which is their core business&lt;/i&gt;.’ Yes, that made me proud, and also gave me extra energy to write this blog post today.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Thu, 10 May 2012 16:13:44 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>Three new, low-severity security advisories: take actions</title>
      <link>http://share.ez.no/blogs/ez/three-new-low-severity-security-advisories-take-actions</link>
      <description>&lt;p&gt;Please get acquainted with these three new, low-severity security advisories, and patch your instances : &lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;    &lt;a href=&quot;/community-project/security-advisories/ezsa-2011-02-cross-site-scripting-xss-issue-in-the-ezoption-datatype&quot;&gt;EZSA-2011-02: Cross site scripting (XSS) issue in the ezoption datatype&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;    &lt;a href=&quot;/community-project/security-advisories/ezsa-2011-03-cross-site-scripting-xss-issue-in-the-ezstarrating-extension&quot;&gt;EZSA-2011-03: Cross site scripting (XSS) issue in the ezstarrating extension&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;    &lt;a href=&quot;/community-project/security-advisories/ezsa-2012-006-xss-exploit-on-ezjscore-run-command-when-using-firefox&quot;&gt;EZSA-2012-006: XSS exploit on eZJSCore RUN command when using Firefox&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Thu, 10 May 2012 13:37:10 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>Report on the Etna (4.7) / 2012.4 translation campaign : how impressive !</title>
      <link>http://share.ez.no/blogs/ez/report-on-the-etna-4.7-2012.4-translation-campaign-how-impressive</link>
      <description>&lt;p&gt;&lt;a href=&quot;/blogs/ez/call-for-etna-4.7-2012.4-and-extensions-translation-sprint-until-mon.-april-30th&quot; title=&quot;Call for Etna (4.7), 2012.4 and extensions translation: sprint until Mon. April 30th.&quot; target=&quot;_self&quot;&gt;Launched&lt;/a&gt; at the beginning of April, open for a bit over one month, this campaign brought amazing results. Read on to get the full report !&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Thu, 10 May 2012 08:39:06 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>Netbeans 7.1.2 and SmartyTemplate (same syntax as eZ tpl)</title>
      <link>http://share.ez.no/blogs/thiago-campos-viana/netbeans-7.1.2-and-smartytemplate-same-syntax-as-ez-tpl</link>
      <description>&lt;p&gt;I have checked Netbeans and now it comes with SmartyTemplate syntax highlighting by default, which is compatibly with eZ tpl language, so it&apos;s not more necessary to install &lt;a href=&quot;http://projects.ez.no/eznetbeans&quot; target=&quot;_self&quot;&gt;the extension I was developing&lt;/a&gt; and it&apos;s not recommended for a while as long it&apos;s conflicting with SmartyTemplate highlighting.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Wed, 09 May 2012 17:09:21 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>Announcing the eZ Diff Squad, a New Key Team within the eZ Community</title>
      <link>http://share.ez.no/blogs/community-project-board/announcing-the-ez-diff-squad-a-new-key-team-within-the-ez-community</link>
      <description>&lt;p&gt;The volume of contributions is constantly increasing in our Community. Primed by the move to &lt;a href=&quot;https://github.com/ezsystems&quot; title=&quot;eZ Systems code, powered by Github.com&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;, the trend is set, and the number of &lt;a href=&quot;http://help.github.com/pull-requests/&quot; title=&quot;The concept of Pull-request, awesomeness at the tip of your fingers&quot; target=&quot;_blank&quot;&gt;pull-requests&lt;/a&gt; merged in last year was multiplied by several dozens (no, there is no typo) compared to the previous year. The trend is confirmed this year, and as more and more pull-requests are submitted, the Community Project Board decided to back &lt;a href=&quot;http://share.ez.no/get-involved/develop#resources&quot; title=&quot;Developer resources - eZ Publish Community&quot; target=&quot;_self&quot;&gt;the existing set of tools &amp; resources&lt;/a&gt; with a dedicated team: more care, more responsiveness, more fun...and more innovation !&lt;/p&gt;&lt;div class=&quot;ezxmltext-separator&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 08 May 2012 13:00:00 GMT</pubDate>
      <author>Derick Rethans</author>
      <title>10 years of Xdebug and Xdebug 2.2.0 released</title>
      <link>http://derickrethans.nl/xdebug-10.html</link>
      <description>&lt;div class=&quot;article&quot;&gt;
  &lt;div class=&quot;body&quot;&gt;
    &lt;div class=&quot;articleListItem&quot;&gt;
      &lt;h1&gt;&lt;a name=&quot;id_10_years_of_xdebug_and_xdebug_2_2_0_released&quot;/&gt;10 years of Xdebug and Xdebug 2.2.0 released&lt;/h1&gt;
      &lt;dl class=&quot;head&quot;/&gt;
      &lt;div class=&quot;articleMetaData&quot;&gt;
        &lt;div class=&quot;location&quot;&gt; London, UK&lt;/div&gt;
        &lt;div class=&quot;date&quot;&gt;Tuesday, May 8th 2012, 14:00 BST&lt;/div&gt;
      &lt;/div&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/cake.jpg&quot; class=&quot;right&quot; alt=&quot;cake.jpg&quot;/&gt;
      &lt;p&gt;Today it has been ten years since the first release of Xdebug: version 0.7.0. I would like to celebrate this tenth anniversary with a new release: Xdebug 2.2.0. Xdebug 2.2 adds support for PHP 5.4 and provides some new features:&lt;/p&gt;
      &lt;p&gt;
        &lt;strong&gt;Colours on the command line&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p&gt;First of all there is now &lt;a href=&quot;http://xdebug.org/docs/display&quot;&gt;var_dump() overloading&lt;/a&gt; and &lt;a href=&quot;http://derickrethans.nl/clicolor-9cr&quot;&gt;colours on the command line&lt;/a&gt;. I&apos;ve already written about that before, but here are the screenshots again:&lt;/p&gt;
      &lt;p&gt;Linux/Mac:&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/cli-color-linux.png&quot; alt=&quot;cli-color-linux.png&quot;/&gt;
      &lt;p&gt;Windows:&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/cli-color-windows.png&quot; alt=&quot;cli-color-windows.png&quot;/&gt;
      &lt;p&gt;You can find an article about this &lt;a href=&quot;http://derickrethans.nl/clicolor-9cr&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;
        &lt;strong&gt;Better support for closures in stack and function traces&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p&gt;Closures are functions that don&apos;t have a function name associated with them. Therefore, Xdebug creates a pseudo function in its stack traces.  The stack trace for this example:&lt;/p&gt;
      &lt;pre&gt;&lt;?php
function test1()
{
        $f = function($a, $b) {
                $Q = strlen($a * $b);
                trigger_error(&apos;foo&apos;);
        };

        $f(5, 25);
}

test1();
?&gt;

&lt;/pre&gt;
      &lt;p&gt;Looks like:&lt;/p&gt;
      &lt;pre&gt;Notice: foo in /tmp/closure-stack-trace.php on line 21

Call Stack:
        0.0009     268464   1. {main}() /tmp/closure-stack-trace.php:0
        0.0026     269288   2. test1() /tmp/closure-stack-trace.php:27
        0.0032     270024   3. {closure:/tmp/closure-stack-trace.php:19-22}($a = 5, $b = 25) /tmp/closure-stack-trace.php:24
        0.0038     270496   4. trigger_error(&apos;foo&apos;) /tmp/closure-stack-trace.php:21

&lt;/pre&gt;
      &lt;p&gt;In the 3rd line in the call stack you see &lt;code&gt;{closure:/tmp/closure-stack-trace.php:19-22}($a = 5, $b = 25)&lt;/code&gt; where &lt;code&gt;/tmp/closure-stack-trace.php:19-22&lt;/code&gt; contains the filename and line numbers on which the closure is defined at.&lt;/p&gt;
      &lt;p&gt;
        &lt;strong&gt;The size of arrays is now shown with the overloaded variable output&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p&gt;After this change, each array in the HTML version of the overloaded var_dump() function now looks like:&lt;/p&gt;
      &lt;pre&gt;&lt;b&gt;array&lt;/b&gt; &lt;i&gt;(size=5)&lt;/li&gt;

&lt;/pre&gt;
      &lt;p&gt;Before the change, this was only:&lt;/p&gt;
      &lt;pre&gt;&lt;b&gt;array&lt;/b&gt;

&lt;/pre&gt;
      &lt;p&gt;
        &lt;strong&gt;Added the method call type to xdebug_get_function_stack&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p&gt;This changes adds another array element to &lt;a href=&quot;http://xdebug.org/docs/stack_trace#xdebug_get_function_stack&quot;&gt;xdebug_get_function_stack()&lt;/a&gt; to show whether it was a static or dynamic function call. For example, for:&lt;/p&gt;
      &lt;pre&gt;new Error_Entry(false, $errno);

&lt;/pre&gt;
      &lt;p&gt;It now adds the &lt;code&gt;[&quot;type&quot;]=&gt; string(7) &quot;dynamic&quot;&lt;/code&gt; element to each stack element:&lt;/p&gt;
      &lt;pre&gt;array(6) {
  [&quot;function&quot;]=&gt;
  string(11) &quot;__construct&quot;
  [&quot;type&quot;]=&gt;
  string(7) &quot;dynamic&quot;
  [&quot;class&quot;]=&gt;
  string(11) &quot;Error_Entry&quot;
  [&quot;file&quot;]=&gt;
  string(%d) &quot;%sbug00241.php&quot;
  [&quot;line&quot;]=&gt;
  int(11)


&lt;/pre&gt;
      &lt;p&gt;
        &lt;strong&gt;Extra information to error printouts to tell that the error suppression operator has been ignored due to xdebug.scream&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p&gt;When you have the &lt;a href=&quot;http://xdebug.org/docs/all_settings#scream&quot;&gt;xdebug.scream&lt;/a&gt; option activated, Xdebug will now tell you when it had any effect on the error reporting with a big &quot;&lt;em&gt;SCREAM: Error suppression ignored for&lt;/em&gt;&quot; warning prepended to the actual error message.&lt;/p&gt;
      &lt;img src=&quot;http://derickrethans.nl/images/content/champagne.jpg&quot; class=&quot;left&quot; alt=&quot;champagne.jpg&quot;/&gt;
      &lt;p&gt;
        &lt;strong&gt;Changelog&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p&gt;You can find the full changelog for Xdebug 2.2.0 at the &lt;a href=&quot;http://xdebug.org/updates.php#x_2_2_0&quot;&gt;Xdebug website&lt;/a&gt; where you can also &lt;a href=&quot;http://xdebug.org/download.php&quot;&gt;download&lt;/a&gt; the latest version.  If you are using Windows, and don&apos;t know which binary to download, please refer to the &lt;a href=&quot;http://xdebug.org/wizard.php&quot;&gt;wizard&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;
        &lt;strong&gt;Support&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p&gt;If you find Xdebug valuable for your PHP development, perhaps you want to support its development by acquiring a &quot;support&quot; contract. See the &lt;a href=&quot;http://xdebug.org/buy-support.php&quot;&gt;buying &quot;support&quot;&lt;/a&gt; page if you feel generous.&lt;/p&gt;
      &lt;p&gt;
        &lt;strong&gt;What&apos;s next?&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p&gt;Now Xdebug 2.2 is out of the door, I am looking for new features to add to Xdebug.  What would you like to see added to Xdebug? Please leave a comment here, or add your feature requests at &lt;a href=&quot;http://bugs.xdebug.org&quot;&gt;http://bugs.xdebug.org&lt;/a&gt;.&lt;/p&gt;
      &lt;div class=&quot;flattr&quot;&gt;
        &lt;a class=&quot;FlattrButton&quot; rev=&quot;flattr;button:compact;&quot; style=&quot;display: none&quot; href=&quot;http://derickrethans.nl&quot;/&gt;
        &lt;noscript&gt;
          &lt;a href=&quot;http://flattr.com/thing/429095/Derick-Rethans-website&quot;&gt;
            &lt;img src=&quot;http://api.flattr.com/button/flattr-badge-large.png&quot; alt=&quot;Flattr this&quot; title=&quot;Flattr this&quot;/&gt;
          &lt;/a&gt;
        &lt;/noscript&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 08 May 2012 08:49:46 GMT</pubDate>
      <author>eZ Projects</author>
      <title>Source code is moved to github</title>
      <link>http://projects.ez.no/nxc_string/news/source_code_is_moved_to_github</link>
      <description>&lt;p&gt;Source code is moved to github repo:&amp;nbsp;&lt;a href=&quot;https://github.com/nxc/nxc_string&quot; target=&quot;_self&quot;&gt;https://github.com/nxc/nxc_string&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 08 May 2012 08:48:34 GMT</pubDate>
      <author>eZ Projects</author>
      <title>Source code is moved to github</title>
      <link>http://projects.ez.no/nxc_hotkeys/news/source_code_is_moved_to_github</link>
      <description>&lt;p&gt;Source code is moved to github repo:&amp;nbsp;&lt;a href=&quot;https://github.com/nxc/nxc_hotkeys&quot; target=&quot;_blank&quot;&gt;https://github.com/nxc/nxc_hotkeys&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 07 May 2012 11:37:50 GMT</pubDate>
      <author>Netgen </author>
      <title>Confessions of an apprentice: How to create and use custom fetch functions in eZ Publish</title>
      <link>http://www.netgen.hr/Blog/Confessions-of-an-apprentice-How-to-create-and-use-custom-fetch-functions-in-eZ-Publish</link>
      <description>&lt;p&gt;Last time we have created a new database table, linked it to a new class we created specifically for this purpose, and learned how to extend the&amp;nbsp;&lt;b&gt;eZPersistentObject&lt;/b&gt; class which is used for all the data manipulation.&lt;/p&gt;&lt;p&gt;This time, we will learn how to actually use all of the features we’ve created last time in the templates. Of course, as always, I’ll create a simple example which will use as a foundation for all of your work in eZ Publish, as you progress to truly being a wizard.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;a name=&quot;eztoc8278_1&quot; id=&quot;eztoc8278_1&quot;&gt;&lt;/a&gt;&lt;h2&gt;Setting up fetch functions&lt;/h2&gt;&lt;a name=&quot;eztoc8278_1_1&quot; id=&quot;eztoc8278_1_1&quot;&gt;&lt;/a&gt;&lt;h3&gt;Creating custom fetch functions&lt;/h3&gt;&lt;p&gt;The first thing you need to create are two PHP files for your module:&lt;b&gt;&amp;nbsp;function_definition.php&lt;/b&gt; and &lt;b&gt;mymodulefunctioncollection.php&lt;/b&gt;. As you can see from the names of the files, &lt;b&gt;mymodulefunctioncollection.php&lt;/b&gt; is a collection of all the functions that our fetch functions will use in the PHP side of the module, and&lt;b&gt;&amp;nbsp;function_definition.php&lt;/b&gt; is the PHP script which defines the names and parameters of our fetch functions.&lt;/p&gt;&lt;p&gt;First off, create the&lt;b&gt;&amp;nbsp;mymodulefunctioncollection.php&lt;/b&gt; in the &lt;b&gt;modules/mymodule&lt;/b&gt; folder of your extension. This is actually a PHP class which will have a few of the functions we need in the templates. Let’s fill it up with some code, shall we?&lt;/p&gt;&lt;pre&gt;&lt;?php

class myModuleFunctionCollection
{
public static function fetchDiscountCodes( $offset=false, $limit = false )
{
$limits = null;
if ( is_numeric( $offset ) || is_numeric( $limit ) )
{
$limits = array();
$limits[&apos;offset&apos;] = is_numeric( $offset ) ? (int) $offset : 0;
$limits[&apos;length&apos;] = is_numeric( $limit ) ? (int) $limit : 15;
}

$fetchResult = myDiscountCode::fetchList( null, $limits );

if ( is_array( $fetchResult ) &amp;&amp; !empty( $fetchResult ) )
return array( &apos;result&apos; =&gt; $fetchResult );

return array( &apos;result&apos; =&gt; false );
}

public static function fetchDiscountCodesCount()
{
$fetchResult = myDiscountCode::fetchCount();
if ( is_numeric( $fetchResult ) )
return array( &apos;result&apos; =&gt; (int) $fetchResult );

return array( &apos;result&apos; =&gt; 0 );
}
}

?&gt;&lt;/pre&gt;&lt;p&gt;
As you can see, we have defined two methods here: &lt;b&gt;fetchDiscountCodes()&lt;/b&gt;, and &lt;b&gt;fetchDiscountCodesCount()&lt;/b&gt;. The &lt;b&gt;fetchDiscountCodes()&lt;/b&gt; method will take two parameters,&lt;b&gt;&amp;nbsp;$offset&lt;/b&gt; and &lt;b&gt;$limit&lt;/b&gt; which will serve as parameters for one of the fetch functions. With those, we can define how much of the codes we want to fetch at once, and where in the table to begin fetching results, assuming we have a bunch of codes in our table. Since we already have a &lt;b&gt;fetchList()&lt;/b&gt; method defined in the&amp;nbsp;&lt;b&gt;myDiscountCode&lt;/b&gt; class, we will just return a result according to those parameters. Therefore, we check if &lt;b&gt;$offset&lt;/b&gt; and &lt;b&gt;$limit&lt;/b&gt; are numeric values, and if either of them is a numeric value, we will set an offset value or a limit value to our &lt;b&gt;$limits&lt;/b&gt; array accordingly. If none of them is a numeric value, we set them to some default values. In this case, I have chosen these values to be 0 for offset and 15 for limit, but you can set them to whichever values you’d like. After that, we just call the &lt;b&gt;fetchList()&lt;/b&gt; method from the &lt;b&gt;myDiscountCode&lt;/b&gt; class and apply those limits to it. When this function is called from a template, it will return either a false result, in case no data is in the table or if offset and limit are invalid or out of range, or a list of the &lt;b&gt;myDiscountCode&lt;/b&gt; objects within specified limits.&lt;br /&gt;The second function we have created is the fetchDiscountCodesCount() function which we’ll use to count all of the rows in the database table. And if there is data in the table, we will get a number of all the rows in it, otherwise, we will get a zero count.&lt;/p&gt;&lt;p&gt;The next step is to modify the function_definition.php file we’ve created. This file is the place where we create definitions for our fetch functions. As you will see in a moment, the structure of this file is very similar to the actual module.php file&amp;nbsp;itself. We’ll start coding it like so:&lt;/p&gt;&lt;pre&gt;&lt;?php

$FunctionList = array();

$FunctionList[&apos;discount_codes&apos;] = array( 
&apos;name&apos; =&gt; &apos;discount_codes&apos;,
&apos;call_method&apos; =&gt; array( &apos;class&apos; =&gt; &apos;myModuleFunctionCollection&apos;, &apos;method&apos; =&gt; &apos;fetchDiscountCodes&apos; ),
&apos;parameter_type&apos; =&gt; &apos;standard&apos;,
&apos;parameters&apos; =&gt; array( array( &apos;name&apos; =&gt; &apos;offset&apos;, &apos;type&apos; =&gt; &apos;integer&apos;, &apos;required&apos; =&gt; false, &apos;default&apos; =&gt; 0 ), array( &apos;name&apos; =&gt; &apos;limit&apos;, &apos;type&apos; =&gt; &apos;integer&apos;, &apos;required&apos; =&gt; false, &apos;default&apos; =&gt; 15 ) )
);

$FunctionList[&apos;discount_codes_count&apos;] = array(
&apos;name&apos; =&gt; &apos;discount_codes_count&apos;,
&apos;call_method&apos; =&gt; array( &apos;class&apos; =&gt; &apos;myModuleFunctionCollection&apos;, &apos;method&apos; =&gt; &apos;fetchDiscountCodesCount&apos; ),
&apos;parameter_type&apos; =&gt; &apos;standard&apos;,
&apos;parameters&apos; =&gt; array()
);

?&gt;&lt;/pre&gt;&lt;p&gt;OK, so what do we see here? We have defined a &lt;b&gt;$FunctionList&lt;/b&gt; array and put in it two keys called &lt;b&gt;discount_codes&lt;/b&gt; and &lt;b&gt;discount_codes_count&lt;/b&gt;. Each of these keys is an array which contains the following keys: &lt;b&gt;name&lt;/b&gt;, &lt;b&gt;call_method&lt;/b&gt;, &lt;b&gt;parameter_type&lt;/b&gt;, and &lt;b&gt;parameters&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;The &lt;b&gt;name&lt;/b&gt; key speaks for itself, it’s the name of the function we need to call. The &lt;b&gt;call_method&lt;/b&gt; key is the key in which we define an array of the class and method this particular function uses, therefore, we’ll use our function collection and a method from it which matches the function we’d like to perform. The &lt;b&gt;parameter_type&lt;/b&gt; key is a deprecated feature which is here because of backwards compatibility with the previous versions. And the last key is parameters. Its value is an array which consists of inner arrays which define the parameters we want to pass onto a function one by one. In the case of the &lt;b&gt;discount_codes&lt;/b&gt; function, we have determined two integer parameters, ‘offset’ and ‘limit’, both of which are optional, and have default values of 0 and 15 respectively.&lt;/p&gt;&lt;p&gt;At the end of the day, when you test your code, if everything is set up properly, you’ll be able to write something like this:&lt;/p&gt;&lt;pre&gt;{def $discount_codes_fetch = fetch(‘mymodule’, ‘discount_codes’)}&lt;/pre&gt;&lt;p&gt;and get a list of discount codes.&lt;/p&gt;&lt;a name=&quot;eztoc8278_1_2&quot; id=&quot;eztoc8278_1_2&quot;&gt;&lt;/a&gt;&lt;h3&gt;Using fetch functions in the templates&lt;/h3&gt;&lt;p&gt;Let’s say that you want to set up a template which will have a main purpose of editing discount codes in the database table. We will use both fetch functions we created to demonstrate their use. This is just a fragment of a larger code involving a form which submits the changes:&lt;/p&gt;&lt;pre&gt;{def $codes = fetch(mymodule, discount_codes, hash( offset, first_set( $view_parameters.offset, 0 ) ) )}
{def $codes_count = fetch(mymodule, discount_codes_count)}

{if $codes_count|gt( 0 )}
{foreach $codes as $code}
&lt;tr&gt;
&lt;td&gt;&lt;input type=&quot;checkbox&quot; value=&quot;{$code.id}&quot; name=&quot;CodeIDArray[]&quot; /&gt;&lt;/td&gt;
&lt;td&gt;{$code.discount_code|wash}&lt;/td&gt;
&lt;td&gt;{$code.valid_from|datetime(&apos;custom&apos;, &apos;%Y-%m-%d %H:%i&apos;)}&lt;/td&gt;
&lt;td&gt;{$code.valid_to|datetime(&apos;custom&apos;, &apos;%Y-%m-%d %H:%i&apos;)}&lt;/td&gt;
&lt;td&gt;&lt;a href={concat(&apos;mymodule/editdiscountcode/&apos;, $code.id)|ezurl}&gt;&lt;img src={&apos;edit.gif&apos;|ezimage} alt=&quot;Edit discount code&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
{/foreach}
{/if}&lt;/pre&gt;&lt;p&gt;
As you can see, after we fetched the codes count and the codes themselves, we created an HTML table inside the template which displays all of the relevant information regarding our discount codes. Also, at the end of each row in the table, we added an Edit link which will enable us to add new codes, and edit the existing ones.&lt;br /&gt;
In the next article, we will deal with the necessary views for our discount codes to be fully functional.&lt;br /&gt;
Until next time, I wish you happy coding,&lt;br /&gt;Tomislav&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 07 May 2012 09:20:53 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>eZ Publish Extended Attribute Filters</title>
      <link>http://share.ez.no/blogs/serhey-dolgushev/ez-publish-extended-attribute-filters</link>
      <description>&lt;p&gt;If you are using eZ Publish fetch functions, sometimes there are situations in which it is not enough to filter the nodes just by attributes. Moreover that not all datatypes can be filtered. In this case you should use extended attribute filter (&lt;a href=&quot;http://www.ezpedia.org/ez/extended_attribute_filter&quot; title=&quot;http://www.ezpedia.org/ez/extended_attribute_filter&quot; target=&quot;_blank&quot;&gt;http://www.ezpedia.org/ez/extended_attribute_filter&lt;/a&gt;). It allows injecting additional code to the SQL query  used by eZ Publish for fetching.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blog.nxcgroup.com/2012/ez-publish-extended-attribute-filters/&quot; title=&quot;eZ Publish Extended Attribute Filters &quot; target=&quot;_self&quot;&gt;Continue Reading...&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 07 May 2012 09:17:02 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>How to restore access to eZ Publish</title>
      <link>http://share.ez.no/blogs/serhey-dolgushev/how-to-restore-access-to-ez-publish</link>
      <description>&lt;p&gt;Quite often there can be a situation when you have ssh access to the server, but you do not have access to the eZ Publish back-end (which is hosted at the same server). For example, single server hosts many eZ Publish projects, and you have back-end access only to some of them. Suddenly you need to get to inaccessible project`s eZ Publish back-end. Another example, the customer has provided you only ssh access, and you urgently need to create or modify eZ Publish node.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 07 May 2012 06:52:50 GMT</pubDate>
      <author>eZ Publish Community Gateway</author>
      <title>Road to eZ Market (1): the first steps</title>
      <link>http://share.ez.no/blogs/terry-duivesteijn/road-to-ez-market-1-the-first-steps</link>
      <description>&lt;p&gt;&lt;i&gt;Note: This is a series of blog posts. You might want to read older posts first:&lt;/i&gt;&lt;/p&gt;&lt;p&gt;1) &lt;a href=&quot;http://share.ez.no/blogs/terry-duivesteijn/ins-and-outs-of-product-development-for-the-ez-market&quot; target=&quot;_self&quot;&gt;Ins and outs of product development for the eZ Market&lt;/a&gt;&lt;/p&gt;&lt;p&gt;----&lt;/p&gt;&lt;p&gt;As promised I will continue with writing blog posts about the release of our extension eZ Multitasking One into the eZ Market. My blog posts are an ongoing process, so if I miss out on any particular area you would like to know more about, let me know!&lt;/p&gt;&lt;p&gt;Parallel to my blog posts, my colleague &lt;a href=&quot;http://share.ez.no/community/profile/111039&quot; target=&quot;_self&quot;&gt;David Ennis&lt;/a&gt; will describe technical details and challenges in his blog at &lt;a href=&quot;http://share.ez.no/blogs/david-ennis&quot; target=&quot;_self&quot;&gt;http://share.ez.no/blogs/david-ennis&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;
In my posts I will try to chronologically list the steps we took on the ‘road to the eZ Market’. &lt;br /&gt;This post describes the (possibly very obvious) first baby steps we took before we did anything else. That’s why this post isn’t technical at all, but more a ground-layer for upcoming posts.&lt;/p&gt;&lt;p&gt;When we &lt;a href=&quot;http://share.ez.no/blogs/terry-duivesteijn/ins-and-outs-of-product-development-for-the-ez-market&quot; target=&quot;_self&quot;&gt;thought of creating an extension&lt;/a&gt; that would simplify content management in eZ Publish we had to make a lot of decisions. In retro-perspective I personally think the following issues were specifically important to us throughout the whole process, and that’s why I kick off with this post.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
