Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
Sep 24 2012
Sep 24
Updates to the Drupal Evernote module (play with it now on Github) | Chris Shattuck
  • strict warning: Only variables should be passed by reference in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/nd/nd.module on line 593.
  • strict warning: Non-static method view::load() should not be called statically in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/views.module on line 1008.
  • strict warning: Declaration of views_handler_field::query() should be compatible with views_handler::query($group_by = false) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_field.inc on line 1092.
  • strict warning: Declaration of views_handler_field_markup::element_type() should be compatible with views_handler_field::element_type($none_supported = false, $default_empty = false) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_field_markup.inc on line 46.
  • strict warning: Declaration of views_handler_argument::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_argument.inc on line 907.
  • strict warning: Declaration of views_handler_argument::query() should be compatible with views_handler::query($group_by = false) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_argument.inc on line 907.
  • strict warning: Declaration of views_handler_sort::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_sort.inc on line 166.
  • strict warning: Declaration of views_handler_sort::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_sort.inc on line 166.
  • strict warning: Declaration of views_handler_sort::query() should be compatible with views_handler::query($group_by = false) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_sort.inc on line 166.
  • strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_filter.inc on line 583.
  • strict warning: Declaration of views_handler_filter::query() should be compatible with views_handler::query($group_by = false) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/handlers/views_handler_filter.inc on line 583.
  • strict warning: Declaration of views_plugin_query::options_submit() should be compatible with views_plugin::options_submit($form, &$form_state) in /home/site5imp/public_html/chrisshattuck.com/sites/all/modules/contrib/views/plugins/views_plugin_query.inc on line 168.
Feb 18 2010
Feb 18

Acording to A Survey of 2,368 Drupal Sites a large number of websites are still running Drupal5 so i think it's a perfect time and perhaps the last change to start planning for safely upgrading our good old Drupal 5 websites to Drupal 6 (If any remained), Drupal 5 will be deprecated as soon  Drupal 7 final comes out. Some module maintainers already removed Drupal 5 releases from their projects which is a trouble for website running Drupal 5. Drupal 7 final release is not out yet and i guess that it takes about 2 years until Drupal 7 becomes as solid as Drupal 6 and also most modules upgrade to this new version that's because too many awesome new features included in Drupal 7 and they require quite some polishing.

Why not wait for Drupal 7 and directly upgrade? . As long as i know it's not possible to skip Drupal 6. You'll have to upgrade to Drupal 6 and then Drupal 7 if you want Drupal to do it automatically for you. Besides if your site is critical and you want an stable site i guess you'll have to wait for about 2 years until everything is ready (Including contributed modules port). And also in my case there are certain features i should implement that are not available in Drupal 5, and reimplementing them requires much more time than upgrading the website. i only have one website left with Drupal 5 , it didn't worth upgrading before but today after i checked upgrade status to see the status of the contributed modules i used on the website, they've  been either upgraded , included in Drupal 6 or replaced by better alternatives.

Upgrading Drupal has never been easy, not because of Drupal itself but because of the fact that Drupal's strength relies mostly on its modules and we usually install dozens of them on each website (I have websites with over 90 modules installed, you may have even more :) ). And not all of these modules are well maintained. Switching from one module to another is not easy , specially for complex modules. that's what makes upgrading sometimes very time consuming, not to mentioned the testing process!!

As i mentioned before upgrading is time consuming and with lots of module i've installed on this site it's going to take even more. since my time is limited i should pick the fastest way so i decided to divide the modules into two groups, Critical and Non Critical (Like some administration modules). This way i can launch the new version of the website and then upgrade the remaining modules one by one.

Planing

Perhaps the most important part of the upgrade process is planning. As you may already know, Drupal is also a Framework which means that on each release both users and developers have to deal with some fundamental changes. It's actually Drupal's great advantage. So upgrading Drupal is not only about updating it's also about improving, changing, customizing and also sometimes simplifying. For this reason planning is even more important. You might be able to find far better alternatives for your current modules, get rid of many core/module patches, simplify the modules you've developed or customized, by benefiting from new core and contributed modules' features.

The first part of planing is reading more about the new Drupal version and its new features. And the next part is checking all contributed modules and finding better alternatives which i'm going to describe here. So we need to install and use the awesome upgrade status module.

Check the status of contributed modules

Patches

I usually patch both modules and Drupal core specially when i find a bug. and almost always contribute this patches back to the community. It's important to keep track of this changes otherwise i may break the site with every core or module update! There is a young module called patchdoq by @doq which is going to simplify patching , right now it needs our love :)

Most of the time i use version control system and follow these steps :

  • Making the patch
  • Testing it
  • Submit the patch to the modules' issue queue and keep the issue link
  • Commit the patch and use patch keyword , simple description of what it does and a link to the issue on issue queued.

Before we start lets have a look at the contributed modules and see how difficult it's going be be , i can simply check the history of the module using VCS and see whether there is any patch keyword  on history, if i find anything since i already have a link i can check whether its been committed or not. If you're not using VCS you can use Drupal.org's advanced search and enter your username in "Participant" or "Submitted by" field and fill in the project name field.

Core patches : i've had plenty of them like this one Very expensive calls drupal_lookup_path but they're no longer required for Drupal 6

Modules

Critical (Check list)

Here is the list of modules i used on this particular website and their status, i'm sure that it will come handy for anyone willing to upgrade. i mentioned alternatives for deprecated module as well.

I sorted the modules by their dependency because it's important to upgrade all the module's dependencies first.

Note : I usually use Devel Macro module to repeat the configuration on the production site.

Views by @merlinofchaos , @dereine , @dww and many others : The Views module provides a flexible method for Drupal site designers to control how lists and tables of content (nodes in Views 1, almost anything in Views 2) are presented. Traditionally, Drupal has hard-coded most of this, particularly in how taxonomy and tracker lists are formatte ...

  • Ported : Yes (Can't imagine Drupal without this one :) )
  • Installed version : 5.x-1.6
  • Patched : No
  • Latest Drupal 5's version :  Uptodate 
  • Latest Drupal 6's stable version :   6.x-2.8
  • Dependency for the other modules : Yes
  • Better Alternatives : You kidding?
  • Special note for upgrade : Old views should be converted via admin/build/views/tools/convert.

Token by @eaton , @greggles and many others : Tokens are small bits of text that can be placed into larger documents via simple placeholders, like %site-name or [user]. The Token module provides a central API for modules to use these tokens, and expose their own token values ...

  • Ported : Yes
  • Installed version : 5.x-1.13
  • Patched : No
  • Latest Drupal 5's version : Uptodate
  • Latest Drupal 6's stable version : 6.x-1.12
  • Dependency for the other modules : Yes
  • Better  Alternatives : No
  • Special note for upgrade : No

jQuery Update by @jjeff , @webchick and the others : This module facilitates an upgrade of jQuery in Drupal core and allows other contrib modules to rely on a newer jQuery version ...

  • Ported : Yes
  • Installed version : 5.x-2.0 
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-1.1
  • Dependency for the other modules : Yes
  • Better  Alternatives : No
  • Special note for upgrade : No

Pathauto @greggles , @Freso , @mikeryan and the others : The Pathauto module automatically generates path aliases for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias. This allows you to get aliases like /category/my-node-title.html instead of /node/123. The aliases are based upon a "pattern" system which the administrator can control ...

  • Ported : Yes
  • Installed version : 5.x-2.3
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-1.2
  • Dependency for the other modules : Yes
  • Better Alternatives : No
  • Special note for upgrade : No

 Content Construction Kit (CCK) by @yched , @markus_petrux , @KarenS and many others :  The Content Construction Kit allows you to add custom fields to nodes using a web browser ...

  • Ported : of course it's ported :) , Who can live without CCK?!
  • Installed version : 5.x-1.10
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-2.6
  • Dependency for the other modules : Yes
  • Better Alternatives : No
  • Special note for upgrade : No

Javascript Tools by @nedjo , @ray007 , @m3avrck and the others : Javascript Tools provides a common set of methods extending those available in Drupal core (drupal.js) for Javascript and AJAX module development in Drupal ...

  • Ported : Yes
  • Installed version : 5.x-1.2
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-1.0
  • Dependency for the other modules : Yes
  • Better Alternatives : No
  • Special note for upgrade :No

Date by @KarenS , @hass and many others : The date module is a flexible date/time field type for the cck content module which requires the CCK content.module and the Date API module ...

  • Ported : Yes
  • Installed version : 5.x-2.8
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-2.4
  • Dependency for the other modules : Yes
  • Better Alternatives : No
  • Special note for upgrade :No

 Boost by  @Arto , @wulff , @mikeytown2   Boost provides static page caching for Drupal enabling a very significant performance and scalability boost for sites that receive mostly anonymous traffic ...

  • Ported : Yes, Not only ported but thanks to its recent very active maintainer @mikeytown2 it's in a very good shape
  • Installed version : 5.x-1.0
  • Patched : Yes, but all the patches committed at least to 6.x version by the maintainers Remove symlink creation. Let each path have own file
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-1.18
  • Dependency for the other modules : No
  • Better Alternatives : No
  • Special note for upgrade : New version of boost are quite different, complete uninstall/reinstall is easier. Also make sure that you've updated .htaccess and create cache folder when moving to production site. admin/settings/performance/boost set cache folder to temp/boost

Comment Info by @Cainan , @mfer : This module allows for anonymous guests to keep persistent comment info between comment postings ...

  • Ported : Yes, Couldn't be better, Ported to core.
  • Installed version : 5.x-3.1
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : In Core
  • Dependency for the other modules : No
  • Better Alternatives : No
  • Special note for upgrade : No, it just works

CAPTCHA by @wundo , @soxofaan , @Rob Loach and lots of others : A CAPTCHA is a challenge-response test most often placed within web forms to determine whether the user is human. The purpose of CAPTCHA is to block form submissions by spambots, which are automated scripts that post spam content everywhere they can ...

  • Ported : Yes,  Ported and also has a very active maintainer @soxofaan
  • Installed version : 5.x-3.2 
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-2.1
  • Dependency for the other modules : Yes
  • Better Alternatives : There are several alternative like Mollom and recaptcha (check out module's page for more alternatives) but since i need something simple i prefer the bundled captcha image. 
  • Special note for upgrade : Currently this module has some serious issue with caching modules please join us to fix this issue. Other than this issue it work fine

Calendar by @KarenS and the others : This module will display any Views date field in calendar formats, including CCK date fields, node created or updated dates, etc. Switch between year, month, and day views. Back and next navigation is provided for all views ...

  • Ported : Yes
  • Installed version : 5.x-2.7 
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-2.2
  • Dependency for the other modules : No
  • Better Alternatives : Not that i'm aware of
  • Special note for upgrade : New Calendar module benefits from Views argument feature, therefore simply converting its views does not work. Arguments should be added. Calendar's default views is a good example. The difference between old calendar views and the new is much so i found it easier to use views export feature and use the default views as a template

Lazy image loader by @sinasalek : Websites with lots of images on a single page might take a long time to load, and it sometimes annoys visitors. for fixing this problem this module loads only the images that are visible to or requested by visitors and the other images loads only when visitor scroll downs to them (This is the default behavior there are other options available live mouseover, mouseclick etc) ...

  • Ported : Yes
  • Installed version : Custom Module 
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-1.1
  • Dependency for the other modules : No
  • Better Alternatives : No
  • Special note for upgrade : No, default configuration works just fine

Voting API by @eaton , and the others: VotingAPI helps developers who want to use a standardized API and schema for storing, retrieving, and tabulating votes for Drupal content ...

  • Ported : Yes
  • Installed version : 5.x-1.6 
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-2.3  
  • Dependency for the other modules : Yes
  • Better Alternatives : Yes
  • Special note for upgrade : No

Fivestar by @quicksketch , @ezra-g and the others:

  • Ported : Yes
  • Installed version : 5.x-1.16 
  • Patched : Yes, but all the patches committed by the maintainers
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-1.19  
  • Dependency for the other modules : No
  • Better Alternatives : No
  • Special note for upgrade : It has some strange issue warning: Division by zero which has been reported several types, but it seems that it still exists. it's not critical bug however
    admin/settings/fivestar select oxygon theme

Image Picker by @hutch and @notsleepy: The Image Picker module is an image upload feature modeled after the image upload currently built into Wordpress but with a few improvements ...

  • Ported : Yes
  • Installed version : 5.x-2.2
  • Patched : Yes, Imageinsert does not work and no javascript error! Not sure wether it's applied or not
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-2.6
  • Dependency for the other modules : No
  • Better Alternatives : Yes , the combination of filefield, imagefield, insert, imagecache module
  • Special note for upgrade : No

 Javascript Aggregator by @derjochenmeyer , @Rob Loach : The aim of the JavaScript Aggregator module is to improve performance of your site with less server requests and bandwidth per page. In Drupal 5, all the JavaScript files will be aggregated into one file and optionally minified. JavaScript aggregation was brought into core with Drupal 6, so the Drupal 6 version of this module goes one step further to minify that file. ...

  • Ported : Yes
  • Installed version : 5.x-1.5
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version :  6.x-1.3
  • Dependency for the other modules : No
  • Better Alternatives : Support File cache but it's too much
  • Special note for upgrade : Configure it here admin/settings/performance

Nodewords by @kiamlaluno , @Robrecht Jacques , @hass and the others : This project allows you to set some meta tags for each Drupal page.

  • Ported : Yes
  • Installed version : 5.x-1.13 
  • Patched : No
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version :  6.x-1.11
  • Dependency for the other modules : No
  • Better Alternatives : No
  • Special note for upgrade : Make sure to enable at least one of the sub modules that come with Nodewords

Notify by @matt2000 , @beginner , @RobRoy and the others : The notify module allows users to subscribe to periodic emails which include all new or revised content and/or comments much like the daily news letters sent by some websites ...

  • Ported : Yes
  • Installed version : 5.x-1.3
  • Patched : Yes, "limiting number of result in notify module" and it's not committed and also notification of unapprouved comments... which is not committed
  • Latest Drupal 5's version :  Uptodate
  • Latest Drupal 6's stable version : 6.x-1.0
  • Dependency for the other modules : No
  • Better Alternatives : No
  • Special note for upgrade : Check the configuration admin/settings/notify and also users' configuration user/5/notify

Page Title by @nicholasThompson , @JohnAlbin , @robertDouglass and the others: The word "title" is a bit overloaded. Every piece of content in Drupal has a title, and so does every page. The page title is the one found in the HTML head inside the

tag. It is also used on SERPs (Search Engine Result Pages) and can greatly enhance your websites SEO (Search Engine Optimization) ...</p><ul><li>Ported :<span class="project-title"> Yes</span></li><li>Installed version : <span class="existing-version">5.x-2.3</span></li><li><span class="existing-version">Patched :</span><span class="existing-version">No</span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version :</span> <a href="http://drupal.org/node/640996">6.x-2.3</a></li><li>Dependency for the other modules : No</li><li>Better Alternatives : No</li><li>Special note for upgrade : No</li></ul><p><span class="project-title"><a href="http://drupal.org/project/recent_blocks">Recent Blocks</a></span><span class="existing-version"> by </span><a title="View user profile." href="http://drupal.org/user/71463">@cotto</a> , <a title="View user profile." href="http://drupal.org/user/216048">@Frank Ralf</a><span class="existing-version"> and <a href="http://drupal.org/node/42872/committers">the others</a>: No ported but it's easily achieve using Views and Views UI</span></p><ul><li>Ported :<span class="project-title"> Yes</span></li><li>Installed version : <span class="existing-version">5.x-1.3</span></li><li><span class="existing-version">Patched :</span><span class="existing-version">No</span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : Non but the maintainer say </span><a href="http://drupal.org/node/587106">6.x-1.x-dev</a> should work</li><li>Dependency for the other modules : No</li><li>Better Alternatives : Yes, i'm going to use views instead</li><li>Special note for upgrade : No</li></ul><p><span class="project-title"><a href="http://drupal.org/project/recent_changes">Recent Changes</a> by </span><a title="View user profile." href="http://drupal.org/user/73064">@rötzi</a><span class="project-title"> , </span><a title="View user profile." href="http://drupal.org/user/19502">@toemaz</a><span class="project-title"> : </span>The recent changes module let's you track all editing on your site. A page is provided with a list of all revisions and comments in chronological order.</p><ul><li>Ported :<span class="project-title"> Yes</span></li><li>Installed version : <span class="existing-version">5.x-1.2</span></li><li><span class="existing-version">Patched : </span><span class="existing-version">No</span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : None but </span><a href="http://drupal.org/node/224958">6.x-1.x-dev</a> exist, don't know whether it works or not.</li><li>Dependency for the other modules : No</li><li>Better Alternatives : Yes, i'm going to use views instead</li><li>Special note for upgrade : No</li></ul><p><span class="project-title"><a href="http://drupal.org/project/supernav">Super Nav</a></span><span class="existing-version"> by </span><a title="View user profile." href="http://drupal.org/user/166383">@chrisshattuck</a> <span class="existing-version"> </span></p><ul><li>Ported :<span class="project-title"> Yes</span></li><li>Installed version :<span class="project-title"> </span><span class="existing-version"> 5.x-1.0</span></li><li><span class="existing-version">Patched : Yes and all committed, </span><a href="http://drupal.org/node/267413">"Don't force frame" and "Show URL in right frame" optoins issues</a> and <a href="http://drupal.org/node/245054">Some images link is not valid when has i18n module enabled or is inside admin</a></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : </span><a href="http://drupal.org/node/241062">6.x-1.0</a></li><li>Dependency for the other modules : No</li><li><p>Better Alternatives : Yes, <span class="existing-version"> there is a better alternative by the same developer </span><span class="existing-version"> </span><a href="http://drupal.org/project/navigate">Navigate</a>. This new module unlike Super Nav does not use Frames and it's also more customizable. Drupal 6 also has lots of new administration modules like <a href="http://drupal.org/project/teleport" rel="nofollow">Teleport</a> , <a href="http://drupal.org/project/admin">Admin </a>, <a href="http://drupal.org/project/admin_menu">Admin Menu</a>, etc</p></li><li>Special note for upgrade : No</li></ul><p><span class="project-title"> </span><a href="http://drupal.org/project/scheduler">Scheduler</a> by <a title="View user profile." href="http://drupal.org/user/20786">@Eric Schaefer</a> , <a title="View user profile." href="http://drupal.org/user/265179">@skiminki</a> , <a title="View user profile." href="http://drupal.org/user/39030">@AjK</a> and<a href="http://drupal.org/node/3292/committers"> the others</a> : This module allows nodes to be published and unpublished on specified dates.</p><ul><li>Ported :<span class="project-title"> Yes</span></li><li>Installed version : <span class="existing-version">5.x-1.18</span></li><li><span class="existing-version">Patched : Yes, commited<br /></span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : </span> <a href="http://drupal.org/node/607892">6.x-1.6</a> <span class="version-date"> </span></li><li>Dependency for the other modules : No</li><li>Better Alternatives : No</li><li>Special note for upgrade : This module used to have some critical issues with publishing nodes incorrectly , so testing it again is very important</li></ul><p><span class="project-title"><a href="http://drupal.org/project/excerpt">Excerpt</a> by </span><a title="View user profile." href="http://drupal.org/user/56015">@hayesr</a> , <a title="View user profile." href="http://drupal.org/user/23157">@hanoii</a> and <a href="http://drupal.org/node/10811/committers">the others</a> <span class="project-title">: </span>Excerpt module allows you to enter a separate excerpt/summary/teaser for a node, which does not have to be a cut off version of the body.</p><ul><li>Ported :<span class="project-title"> Yes</span></li><li>Installed version : <a href="http://drupal.org/node/239311">5.x-1.3</a><span class="existing-version"> </span></li><li><span class="existing-version">Patched : No<br /></span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : </span><a href="http://drupal.org/node/607496">6.x-1.1</a></li><li>Dependency for the other modules : No</li><li>Better Alternatives : No</li><li>Special note for upgrade : No</li></ul><p><span class="project-title"><a href="http://drupal.org/project/tinytinymce">Tiny Tiny MCE</a></span><span class="existing-version"> by </span><a title="View user profile." href="http://drupal.org/user/90065">@Steve Lockwood</a> <span class="existing-version">: </span>Tiny Tiny MCE (TinyTinyMCE) is a Drupal 6 supported module supporting the wysiwyg editor tinymce.<span class="existing-version"> </span></p><ul><li>Ported :<span class="project-title"> Yes</span></li><li>Installed version : <span class="existing-version">5.x-1.5</span></li><li><span class="existing-version">Patched : No</span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : </span><a href="http://drupal.org/node/357053">6.x-1.12</a> <span class="version-date"> </span></li><li>Dependency for the other modules : No</li><li>Better Alternatives : Yes, T<span class="existing-version">here is a perfect alternative <a href="http://drupal.org/project/WYSIWYG">WYSIWYG</a></span></li><li>Special note for upgrade : Should be set here admin/settings/wysiwyg</li></ul><p><span class="project-title">theme_switcher</span><span class="existing-version"> : A custom module i created for separating view and admin theme more accurately<br /></span></p><ul><li>Ported :<span class="project-title"> No<br /> </span></li><li>Installed version : Custom</li><li><span class="existing-version">Patched : No</span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : No<br /></span></li><li>Dependency for the other modules : No</li><li>Better Alternatives :<span class="existing-version"> Yes, Drupal 6 has its functionality build-in there is also two other modules for more customization <a href="http://drupal.org/project/admin_theme">Administration theme</a> and <a href="http://drupal.org/project/system_theme">System Theme++</a></span></li><li>Special note for upgrade : You can set it here admin/settings/admin</li></ul><p><span class="project-title"> </span><span class="project-title"><a href="http://drupal.org/project/default_filter">Default Filter</a> by </span><a title="View user profile." href="http://drupal.org/user/39382">@dllh</a><span class="project-title"> : </span>This module allows you to set default filter formats per node type per role, preventing users from having to tick a checkbox every time they add a new node. This is useful for sites that set the global default to a less rich format to prevent anonymous users from using (for example) full HTML.</p><ul><li>Ported :<span class="project-title"> No<br /> </span></li><li>Installed version : <span class="existing-version">5.x-2.1</span></li><li><span class="existing-version">Patched : No</span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : No</span></li><li>Dependency for the other modules : No</li><li>Better Alternatives :<span class="existing-version"> Yes, </span><span class="project-title"> much better alternative is available <a href="http://drupal.org/project/better_formats">Better Formats</a></span></li><li>Special note for upgrade : Select co-author as well here admin/settings/filters/4<br />Select smart content for both webmaster and co-atuhor  admin/settings/filters/defaults </li></ul><p><span class="project-title"><a href="http://drupal.org/project/smartlinebreakconverter">Smart Line Break Converter</a></span><span class="existing-version"> by </span><a title="View user profile." href="http://drupal.org/user/182824">@nschelly</a> <span class="existing-version">: </span>The smartlinebreakconverter will selectively apply the line break converter filter (in the core filter module) based on whether it thinks it's necessary.</p><ul><li>Ported :<span class="project-title"> No<br /> </span></li><li>Installed version : <span class="existing-version">5.x-1.1</span></li><li><span class="existing-version">Patched : No</span></li><li><span class="existing-version">Latest Drupal 5's version : </span><span class="existing-version"> </span>Uptodate</li><li><span class="existing-version">Latest Drupal 6's stable version : No</span></li><li>Dependency for the other modules : No</li><li>Better Alternatives :<span class="existing-version"> No</span></li><li>Special note for upgrade : No</li></ul><p><em>In the next article i'm going to check the remianing non critical modules and the prepare the development copy for upgrade and finally actuallay doing the upgrade</em></p><div id="nuan_ria_plugin"><object id="plugin0" style="position: absolute; z-index: 1000;" type="application/x-dgnria" height="0" width="0"><param name="tabId" value="ff-tab-332" /><param name="counter" value="1215" /></object></div><form action="/content/upgrading-drupal-5-drupal-6-part-1" accept-charset="UTF-8" method="post" id="fivestar-form-node-1319" class="fivestar-widget"> <div><div class="fivestar-form-vote-1319 clear-block"><input type="hidden" name="content_type" id="edit-content-type" value="node" /> <input type="hidden" name="content_id" id="edit-content-id" value="1319" /> <div class="fivestar-form-item fivestar-combo-text fivestar-average-stars fivestar-labels-hover"><div class="form-item" id="edit-vote-wrapper"> <input type="hidden" name="vote_count" id="edit-vote-count" value="91" /> <input type="hidden" name="vote_average" id="edit-vote-average" value="20.4396" /> <input type="hidden" name="auto_submit_path" id="edit-auto-submit-path" value="/fivestar/vote/node/1319/vote" class="fivestar-path" /> <select name="vote" class="form-select" id="edit-vote-1" ><option value="-">Select rating</option><option value="20">Poor</option><option value="40" selected="selected">Okay</option><option value="60">Good</option><option value="80">Great</option><option value="100">Awesome</option></select><input type="hidden" name="auto_submit_token" id="edit-auto-submit-token" value="b6fe1d78e8866209bd25b6b9e20d03ca" class="fivestar-token" /> <div class="description"><div class="fivestar-summary fivestar-summary-combo fivestar-feedback-enabled"><span class="user-rating">Your rating: <span>None</span></span> <span class="average-rating">Average: <span>1</span></span> <span class="total-votes">(<span>91</span> votes)</span></div></div> </div> </div><input type="hidden" name="destination" id="edit-destination" value="node/1319" /> <input type="submit" name="op" id="edit-fivestar-submit" value="Rate" class="form-submit fivestar-submit" /> <input type="hidden" name="form_build_id" id="form-dvq4M6HKDVFbh0oYv5Ianm12LAKpsROMOHbwyLHQ7PA" value="form-dvq4M6HKDVFbh0oYv5Ianm12LAKpsROMOHbwyLHQ7PA" /> <input type="hidden" name="form_id" id="edit-fivestar-form-node-1319" value="fivestar_form_node_1319" /> </div> </div></form> </div> </div> <div class="links"> <ul class="links inline"><li class="comment_forbidden first"><span><a href="https://sina.salek.ws/user/login?destination=comment%2Freply%2F1319%23co...">Login</a> to post comments</span></li> <li class="addtoany last"><span> <a class="da2a_button" href="http://www.addtoany.com/share_save?linkurl=https%3A%2F%2Fsina.salek.ws%2..." id="da2a_1"><img src="https://sina.salek.ws/sites/all/modules/addtoany/images/share_save_171_1..." width="171" height="16" alt="Share this"/></a> <script type="text/javascript"> <!--//--><![CDATA[//><!-- da2a.script_load(); //--><!]]> </script> </span></li> </ul> </div> </div><!-- /inner --> </div><!-- /node-1319 --> </div><!-- /content-content --> </div><!-- /content-inner-inner --> </div><!-- /content-inner --> </div><!-- /content-region-inner --> </div><!-- /content-region --> </div><!-- /content-group-inner --> </div><!-- /content-group --> </div><!-- /main-content-inner --> </div><!-- /main-content --> </div><!-- /main-group-inner --> </div><!-- /main-group --> </div><!-- /main-inner --> </div><!-- /main --> </div><!-- /main-wrapper --> <!-- postscript-bottom row: width = grid_width --> <!-- footer row: width = grid_width --> <!-- footer-message row: width = grid_width --> <div id="footer-message-wrapper" class="footer-message-wrapper full-width"> <div id="footer-message" class="footer-message row grid16-16"> <div id="footer-message-inner" class="footer-message-inner inner clearfix"> <div id="footer-message-text" class="footer-message-text block"> <div id="footer-message-text-inner" class="footer-message-text-inner inner clearfix"> <table border="0"><tbody><tr><td><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/"><img class="mceItem" src="http://i.creativecommons.org/l/by-sa/3.0/us/88x31.png" alt="Creative Commons License"></a></td><td valign="top" align="left">Except where otherwise <span class="subfoot">noted (Projects section)</span>, content on this site is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/">Creative Commons Attribution-Share Alike 3.0 United States License</a></td></tr></tbody></table></div><!-- /footer-message-text-inner --> </div><!-- /footer-message-text --> </div><!-- /footer-message-inner --> </div><!-- /footer-message --> </div><!-- /footer-message-wrapper --> </div><!-- /page-inner --> </div><!-- /page --> <!--[if (IE 6)]> <script type="text/javascript"> var IE6UPDATE_OPTIONS = { icons_path: "https://sina.salek.ws/sites/all/modules/ie6update/images/", message: "Internet Explorer is missing updates required to view this site. Click here to update... ", url: "http://www.microsoft.com/windows/internet-explorer/default.aspx" } </script> <script type="text/javascript" src="https://sina.salek.ws/sites/all/modules/ie6update/ie6update.js"></script> <![endif]--> <script type="text/javascript" src="https://sina.salek.ws/sites/all/modules/syntaxhighlighter/syntaxhighligh..."></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- if (Drupal.jsEnabled) { $(document).ready(function () { $('a').Tooltip({ delay: 0, track: true, showURL: false, showBody: "; " }); }); } //--><!]]> </script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- da2a.targets=[ {title:'Upgrading Drupal 5 to Drupal 6, Part 1 | Sina Salek Official Site',url:'https://sina.salek.ws/content/upgrading-drupal-5-drupal-6-part-1'}]; da2a.html_done=true;if(da2a.script_ready&&!da2a.done)da2a.init();da2a.script_load(); //--><!]]> </script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-898205-3', 'auto'); ga('send', 'pageview'); </script> </body> </html> <!-- Page cached by Boost @ 2021-08-30 16:27:25, expires @ 2021-12-20 15:27:25 -->
Mar 16 2008
Mar 16

The number of available Drupal modules is continuing to grow dramatically. Like a lot of other Drupal users, I spend a good deal of time downloading new modules and trying them out to see what they do. Unfortunately, not all contrib modules work as advertised. I may spend several hours working with a new module before realizing there's some small issue with it that prevents it from solving my problem.

Similarly, there are often modules out there that solve problems I didn't even know I had, but I'm simply not aware they exist.

What I want is a resource that leverages the experience of thousands of Drupal administrators. I want to know that I shouldn't even bother with a module because it's too buggy. I want to know what modules other users find useful in specific areas (such as multimedia, file handling, cache issues, etc.).

Other large OSS communities often solve this need for a shared knowledge base by providing user reviews. Mozilla, Thunderbird, Joomla and other modular systems provide user reviews and ratings. It is time that the Drupal community have one too.

When I first started using drupal about three years ago, it was not all that difficult to simply be aware of most modules and how effective they were because there just weren't that many. Now there are multiple new modules released on a daily basis, and I just can't keep up anymore.

Why do we, the Drupal community, not have a shared review/rating system? It's certainly not due to lack of demand. A search for "module ratings" on Drupal.org reveals a great deal of interest in this functionality.

As far as I can tell, the primary reason for not having a rating system for modules is fear. Module developers in particular are concerned with the fairness of ratings. They are concerned with "gaming" of ratings. They are concerned that inexperienced or "dumb" end users may unfairly give a bad review of a module simply because they don't understand how to use it. These are all reasonable concerns. But they are concerns shared by other OSS projects as well. Sure you will see "bad" reviews, giving a module the lowest possible rating along with some inane review such as "tis modules sukcs BEWARES" :) But who cares, it's just noise that will be drowned out by valid reviews. It works for other OSS projects, and it can work for Drupal.


John Forsythe
has released what I believe is the first site dedicated to rating and reviewing Drupal modules drupalmodules.com. No doubt this site will be a source of controversy as developers voice their concerns. But we need this resource now.

I encourage my entire audience (hi, mom!) to register at drupalmodules.com and to submit reviews for both your favorite and most hated Drupal contributions. This is a great way for non-techies to contribute to the community. The site is young, and there is naturally a shortage of ratings on the site now, but that will change as the site brings on more users.

Maybe this database will eventually make its way to Drupal.org. For now we can show our support for this type of system by helping build out the database at drupalmodules.com.

Dec 19 2007
Dec 19

Views Bulk OperationsViews bulk operations is ready for some beta testers.

It is essentially the admin nodes page on steroids. It enables you to perform node operations as well as actions from a custom view.

If you want to quickly check it out, install it, then go to the views overview page. Select 'add' for the 'admin_content' view, configure it and save it. When you first go to the view, you will be prompted to enable actions and/or operations.

For the full effect, install the actions module as well.

If you have any problems using it, please submit a bug!

Nov 29 2007
Nov 29

Drupal books are a great way to organize content. Unfortunately, there is no way to control access to individual books by default. Like default forums, it's all or nothing.

The Book Access module adds the ability to set view, edit and delete access control for individual books and all pages therein.  

This module has no official release as it needs to be tested. The development snapshot is ready for testing though.

If you're interested in such functionality, install this module and please submit feedback and bug reports

Thanks to LifeWire for sponsoring development of this module. 

Nov 16 2006
Nov 16

Until the mid 90s, spam was a non-issue. It was exciting to get email. The web was also virtually spam-free. Netizens respected one another and everything was very pleasant. Spam Those days are long gone. Fortunately, there are some pretty amazing tools out there for fighting email spam. I use a combination of SpamAssassin on the server side and Thunderbird (with its wonderful built in junkmail filters) on the desktop. I am sent thousands of spam messages a day that I never see thanks to these tools.

But approximately five years ago, a new type of spam emerged which exploited not email but the web. Among this new wave of abuse, my personal favorite, comment spam.

I love getting comments on my blog. I also like reading comments on other blogs. However, it's not practical to simply allow anyone who wants to leave a comment, as within a very short period of time, blog comments will be overrun with spam generated by scripts that exploit sites with permissive comment privileges. To prevent this, most sites require that you log in to post a comment. But this may be too much to ask of someone who just wants to post a quick comment as they pass through. I often come across blog postings which I would like to contribute to, but I simply don't bother because the site requires me to create an account (which I'd likely only use once) before posting a comment. Not worth it. Another common practice is the use of "captchas" which require a user enter some bit of information to prove they are human and not a script. This works fairly well, however, it is still a hurdle that must be jumped before a user can post a comment. And as I've personally learned, captchas, particularly those that are image based, are prone to problems which may leave users unable to post a comment at all.

As email spam grew, there were various efforts to implement similar types of protection, requiring by the sender to somehow verify he was not a spammer (typically by resending the email with some special text in the subject line). None of these solutions are around anymore because they were just plain annoying. SpamAssassin and other similar tools are now used on most mail servers. Savvy email users will typically have some sort of junkmail filter built into their email client or perhaps as part of an anti-virus package. And spam is much less a nuisance as a result.

What we need for comment spam is a similar solution. One that works without getting in the way of the commenter or causing a lot of work for the blog owner. Turn it on, and it works. I've recently come across just such a solution for blogs which also happens to have a very nice Drupal module so you can quickly and easily put this solution to work on your own Drupal site.

Enter Akismet

It's called Akismet, and it works similarly to junkmail filters. After a comment (or virtually any piece of content) has been submitted, the Akismet module passes it to a server where it is analyzed. Content labeled as potential spam is then saved for review by the site admin and not posted to the blog.

Pricing

Akismet follows my absolute favorite pricing model. It's free for workaday Joes like me and costs money only if you're a large company that will be pumping lots of bits through the service. They realize that most small bloggers are not making any money on their sites, and they price their service accordingly. Very cool.

Installation

In order to use Akismet, you need to obtain a Wordpress API key. I'm not entirely sure why, but it is free and having a collection of API keys is fun. So get one if you have not already.

The Akismet Drupal module is appropriately named Akismet. It's not currently hosted on Drupal.org, but hopefully the author will eventually host it there as that is where most people find their Drupal modules. Instead, you will need to download the Akismet module from the author's own site. The installation process is standard. Unzip the contents into your site's modules directory, go to your admin/modules page and enable it. There is no need for additional Akismet code as all the spam checking is done on Akismet's servers.

Configuration

After installing Akismet, I was immediately impressed at how professional the module is. There were absolutely no problems after installation. Configuration options are powerful and very well explained. The spam queue is very nice and lets you quickly mark content as "ham" (ie not spam) and delete actual spam. As you build up a level of trust with the spam detection, you can configure the module to automatically delete spam after a period of time.

Spam filtering can be enabled on a per node type basis, allowing you to turn off filtering for node types submitted by trusted users (such as bloggers) and on for others (eg forums users). Comment filtering is configured separately.

Another sweet feature is the ability to customize responses to detected spammers. In addition to being able to delay response time by a configureable number of seconds, you can also configure an alternate HTTP response to the client, such as 503 (service unavailable) or 403 (access denied). Nice touch.

One small problem

I've only been working with Akismet for several days now. And I'd previously been using captcha, which I imagine got me out of the spammers sights for a while (spammers seem to spend most of their efforts on sites where their scripts can post content successfully). So far, Akismet has detected 12 spams, 2 of which were not actually spam. These were very short comments, and I imagine Akismet takes the length of the content into consideration. I assume that as the Akismet server processes more and more pieces of content, it will become more accurate in picking out spam versus legitimate content. Each time a piece of flagged content is marked as "ham", it is sent to Akismet where it can help refine their rule sets and make the service more accurate.

Perhaps Akismet could provide an additional option that allows users to increase or decrease tolerance for spam. I would prefer to err on the side of caution and let comments through.

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web