Skip to content →

Month: August 2013

A simple ‘to do’ list for Drupal 7 using Date & Calendar

This post describes a very simple ‘to do’ list that I made in a Drupal 7 website.

The website already had a Calendar and Date function.  I can add a Date, and all its details, which is recorded as a node of content-type Date and displayed on a Calendar View.

Already installed and enabled : Drupal 7, Token, Pathauto, CTools, Views and Views UI, Date, Calendar, Computed Field

To add items and to put them on and off the ‘to do’ list

To make this simple to do list, I decided –

  1. To add the things I want ‘to do’as a Date and, if they have no date, I record an arbitrary start date – say the end of the quarter or the end of the half.
  2. When I want to move an item to my active ‘to do’ list, I simply edit the item and change the start date to today or if it on this week’s list, to Monday.
  3. When I have finished the task, I edit the item again to reflect the finish date.
  4. As I will describe below, an odd feature of the filter’s in Views required an extra Boolean filed so I check a box when the task is complete.

Permanent record

With this simple set up, I have a permanent record, in one place, of all my projects that are pending, and of all my projects in the past with the dates when I started them and finished them

Adding focus

To keep me thoroughly focused, I made two taxonomies – one for work and one for leisure. Both of these were added to Date so that later I can retrieve work and leisure activities into separate Views.

Additional information

As I have both start and end information, I added another field to Date to calculate the Elapsed Time between the date I started and ended a project. There is code available on the internet and I repeat it here.  Simply, we retrieve the entity values for the two times, make DateObjects with the values, and then choose our granuality (‘days’).

I also added another field to Date, Days in Queue, and added similar code to calculate the time between the day the Date was added and the start date.

To display my ‘to do’ list

To display my current ‘to do’ list, I made a View in a Block, in table format, and display the taxonomy tag and Date title

I also added two filters. First, using a Relative filter, I selected Dates with a start date equal or larger than now.  Second, I searched on the Complete check box.  It is important to manually put in 1 and 0 as the default values when you set up the field initially, otherwise they will filter will not work in the View. The reason that I added what seems to be a superfluous checkbox is that the default finish date for a new task is not NULL, as one might expect, but the start date. The only way to select tasks that have been started and not finished is to add the extra box.

As I have made a Block, I can put the Block in a side bar.

Note also that we can tell the Block View to order the items in the order of the Taxonomy.  So when you set up the Taxonomy, ensure you put the tags for work into the order of your daily routine.

Note also that I did try using Editable Views but firstly, it did not work out of preview, and secondly, the preview showed a massive date edit screen that would not be user friendly.  So to record a project as finished, I follow the link and edit the Date and check the complete box.

To set up my ‘to do’ list

To review my pending list of items in the queue, I made another View, this time as a page. This time I use all four fields – Date, title, Elapsed Time, Days in Queue – in a table.

I can also filter by taxonomy.

Here I can pick my items, follow their link and change the start date to today or Monday.

To review what I have achieved

For those days when I have been buried in a task and feel that I have achieved nothing, I have an ordinary View of all four fields – Date, title, Elapsed Time, Days in Queue – in a table. This time, I have two exposed filters.  The first is headed, ‘Finish on or after’ and the second is headed, ‘Finished before’.

By setting my time range, I can immediately see what I have finished during the period in question.


I can repeat the entire setup for leisure items.

Features to be developed

My next tasks will be to track my Elapsed Time and Days in Queue, particularly for work items.

To understand my own planning behaviour better, I will group all my Dates by week and count the number of items inserted and the number of items that are finished. Now I will have the basic information to understand my queue – how fast am I adding things and how fast am I finishing things.  Ideally, I’ll plot these numbers on a graph.

To understand the chunking of my tasks, I’ll group them again by week and calculate the minimum, average and maximum Elapsed Time.   Hopefully, both the spread of times and the average time will decrease below 5 days – meaning, I have designed tasks that can be finished within a week.

And I will calculate the minimum, average and maximum Elapsed Time and Days in Queue for a moving period of quarters, halves and years so that I can be aware of how long I take to complete something I have decided to do and how my behaviour changes in time.


There it is.  A simply backlog manager.  Add Dates to a Calendar.  Use Computed Fields to monitor both the Elapsed Time and the Days in Queue. Use a check box to show a task is complete because filtering by a blank end date does not work.  And add two taxonomies so that you can split your lists and display tasks in order.

One Comment

How to make a Slideshow in Drupal 7

How to make a slideshow in Drupal

The concept behind a slideshow

A slideshow in Drupal is actually a View.   A View is a query that will search through your pile of nodes, pick out any that match the criteria you set, and display them in a format you set.  Slideshow simply extends Views to layout your content in a slideshow with our without a carousel.

This post will describe how to get the slideshow working without a carousel.

Before you start

Before you start, you will obviously need a working Drupal website with some content, such as a collection of images.  You can also use a slideshow to display ordinary posts as I do on the front page of Rooi.  We will use images here because that is the more common use.

Additionally, you need to have View downloaded and enabled and you will also have to enable its sub-module View_UI.

You also need to know, at least roughly what the following mean:

  • Page and block
  • Content-type, node and field

Modules & Plugin

To set up Slideshow, you will need the modules: Libraries, Views _Slideshow, Views_Slideshow_JCarousel and Libraries.  When you enable Views Slideshow, also enable Views_Slideshow_Cycle.

Additionally, you will need the jCycle plugin which you download from (get the .zip file on the right).

Unpack the file into your Libraries folder. If you don’t have a Libraries folder, make one under /sites/all/.  Rename the folder that the .zip file creates as jquery.cycle.

Make a View Slideshow

You will recall that to make a View, you go to Structure/Views and make a new view.

Screen 1

  1. Add a name and a description
  2. Choose your content.   Notice that everything on the list is a content-type. If you have a separate content-type for images, choose it. Otherwise choose a content-type that has a field for images. The default content-type Article has a default field for images and I chose Article.
  3. Decide whether you want to display your slideshow on a page or a block.
  4. If you chose page, check the path.
  5. At format, choose slideshow.
  6. Set the number of images to show before pagination kicks in.
  7. Decide whether you want a direct link to show on a menu.
  8. Continue & edit but beware, your work has not been saved at this point.

Screen 2

  1. The second screen has a baffling array of controls.  Look over them carefully and ignore Advanced Options in column three for the moment.
  2. The middle column controls the path, the links to menus, the permissions, and pagination.
  3. Most of the controls that you want for a slideshow are in column one.
  4. Starting at the top, you see Display Name and Title. Display name is the name used to when Views are listed. Title is the name displayed as part of the view – that is, above the slide show.  So make sure the Display Name speaks to administrators and developers and Title speaks to users and visitors.
  5. The next four blocks cover FORMAT, FIELDS, FILTER CRITERIA and SORT CRITERIA.
  6. Starting from the bottom — as those are easiest to understand – Sort Criteria telsl you the order in which slides will be displayed.  If you want to change the order, this will be the block where you will find the controls.
  7. Filter Criteria is also fairly self-explanatory:  with the default settings, the slideshow will only display published content that is an Article.
  8. The FIELDS block, if you followed the instructions for Screen 1, will be blank.
  9. FORMAT refers in the first line to Slideshow|Settings and Content|Teaser.  We will begin with Content and you will see that varying the Content changes your Field options in the Fields block below.
  10. Click on Content and choose Fields.  Now you see Content:Title come up below.  You can also Add a field.
  11. Add a field and you will see many choices.  Think a little – you are looking for Content: Image.  Add that, and it will come up in the Fields block.

Inspect Preview

Scroll down to the bottom of your screen.  You should see a slideshow of all the images that you have uploaded into Articles with the title of the Article above the Image.

Save and go to the menu where you linked the slideshow or type in the url to see your work on your website.

Advanced Option

You might also note that you are also seeing the title to every Article, whether it contains an Image or not.

To add a another Filter to choose only the Articles that contain an image, you can look first at the list of Filters.  I don’t think we will find a suitable filter because we are displaying nodes of content-type Article and we want a logic that would go something like “contains an image” rather than “is an image”. But look anyway.

(Remember to edit a View, go to Structure/Views.)

I went instead to Advanced Options and chose the Relationships. On that list I could find Content:Image (field). I added it and checked required.

Now my slideshow only contains Articles which contain an image.  And it is cycling nicely.  Save if you wish.

Slideshow Settings

What if I want to speed up my slideshow or add previous and next buttons?

Go back to the View and go to Slideshow | Settings in column one.  (Btw, if you have not downloaded jcycle correctly, on the following screen you will get a big warning message in red. So if something is not running correctly and you want to eliminate jcycle as being the cause look here.)

To get some basic settings, scroll down to the bottom and check the options under Bottom of the page.  Be patient as when you check the options, more options are revealed.

Oddly, the controls aren’t working as I expected them to.  I checked all three and checked the option to stop when hovering.  Only the counter is showing at the bottom for me.


So far, we have downloaded the correct modules and plugin and set up the basic slideshow view.

You know how to reveal fields and to add fields.  You know how to filter on the content-type (column 1) and on the fields (under Relationships in column three).  And you know where to find the settings to control the slide show.

You can also decide where your slideshow will go on you site – onto a page or block and if it is page, attached to a menu or not.

The next post will describe how to get the carousel working.






One Comment

How to install WYSIWYG and CKEditor on Drupal 7

To install WYSIWYG successfully, it is helpful to understand that works at three levels: text filters, WYSIWYG and Editor.

Text filters

Drupal 7 arrives with pre-installed text filters.  If you have a fresh install (and even if you don’t), got to the admin bar at the top of screen and select Configuration.  On the left hand side, close to the top, you will see Text Filters.  Have a look at these.  You will see Filtered HTML, Full HTML and Plain Text.

The filters give you control over three things:

1.  Who can use Full HTML, or Filtered HTML and who must use plain text.

When you are new to Drupal, leave everything on default.  You can see that with the default settings only administrators can use Full HTML.  Later on, you might want to limit anonymous users to plain text as Drupal attracts spam.

2. Which Filter is used by default

Also, note that Filtered HTML is at the top. That means that is acts as the default, even for administrators. If changing the filter manually becomes annoying when you need Full HTML, change the order.  You can change the order back again later, if you wish.

3.  The exact functions of the filter and the order in which they work

As a general rule, do not play with the settings. There are several of them and when you fiddle, you are fiddling with relationships to the underlying code and to the effect of combinations of settings.  When in doubt, don’t touch!

There are three settings that you will probably want to change though.

  1. When you add the Media module, you must check the box for “Convert Media tags to markup” (and Save).  The Media module will remind you if you forget. You must check this box in both Filtered and Full HTML.
  2. When you add the WYWIWYG module, you are recommended to uncheck “Convert line breaks into HTML (i.e. <br> and <p>)”.  Uncheck this box in both Filtered and Full HTML.
  3. Additionally, when you add the WYSIWYG module, go to “Limit allowed HTML tags” under Filter Settings near the bottom of the page, and add <p> and <br>.  You only need to add these tags in Filtered HTML.

Text Filters is the first level of setting up WYSIWYG.

WYSIWYG module

You can install and enable the WYSIWYG module in the usual ways.

  • Either, use drush (drush dl wysiwyg) and (drush en –y wysiwyg)
  • Or, go to the admin bar/modules and insert the url that you retrieved from the WYSIWYG page. When prompted, enable the module.

WSYIWYG should now show up on the Configuration page under Text Filters. If it does not, then clear your caches.

  • Either, use drush (drush cc, followed by 1 when prompted)
  • Or, go to the admin bar/configuration and performance where you can clear all caches.

Go to WYSIWYG at the Configuration page and you will see the three Text Filters you saw in the first stage above, with a drop-down box that says “No Editor”.

Your next task, is to go to the “third level” and install an editor. Then we will configure a combination of WYSYWYG and the editor you have installed.


Drupal will prompt you with a list of editors and highlight one in particular, CKEditor, in pink.  CKEditor is very well established but I must begin with two warnings.

  • Do not install the CKEditor for Drupal.  Install the normal CKEditor.
  • Do not install the most recent CK Editor, because Drupal/WYSIWYG will insist that it cannot see it.   You can install the latest development version of WYSIWYG (by downloading it manually into the WYSIWYG folder), but it does not play nicely with DRUPAL and destroys the Edit layout and does not render a tool bar.  Install an older version, say 3.5.
  • Do not fuss about all the instructions about where to put the CKEditor. Download the zip file and unzip it into /www/yourwesbite/sites/all/libraries. If this is the first library that you are installing, then you must create the library folder.  CKEditor will unpack itself neatly.

Once you have an (old) version of CKEditor, when you go to WYSIWYG on the configuration page, you should now see CKEditor in the drop-down box where you once saw No Editor. If it doesn’t show up, try cleaning your caches before you panic.

Now you can configure your WYSIWYG/CKEditor.  You only have one task to do but you must do it for Filtered HTML and Full HTML. And remember to save each time.

Click on Configure and go to Buttons and Plugins. Check all the buttons that you want on your tool bar. Be mean, rather than extravagant but remember to check “HTML Block Format” which give you a drop down list for headers and “Media Browser” if you are going to add the Media Module (near the bottom).  This may feel like a tedious chore, but enjoy – when you are done with this you will have working WYSIWYG.


WYSIWYG requires you to think at three levels.

  1. Set up your text filters and prepare for the addition of WYSIWYG and Media as I described in the first section above.
  2. Install WYSIWYG and go to the configuration page where you are prompted to get an editor.
  3. Get an old version of CKEditor and set up the buttons for your tool bar with the configure button.




One Comment