doc/auth-server/ContentManagerTutorial

Original author: Benoit Grégoire, this is an early draft. Please contribute other tutorials or list scenarios you'd like described.

Last modified:

Error: Failed to load processor Timestamp
No macro or processor named 'Timestamp' found

The content manager is both the most powerfull and the most misunderstood component of the wifidog auth server. This document isn't the content manager manual, rather, it is a list of use common use cases, and how to use the content manager to meet them.

Content display scenarios

This first section is a list of simple scenarios, answering the questions "I want to do this, how do I do it?"

Displaying images in rotation

  1. Link a BannerAddGroup where you want you images to go.
  2. In "ContentGroup access control", make the ContentGroup non-reusable.
  3. Add your images as elements of the ContentGroup.

Displaying a SINGLE piece of content at several (but not all) hotspots.

This is a very common scenario: displaying a certain piece of content at all the hotspot in a certain neighborhood, or all the hotspots of a certain type (cafe, bar, library, etc.).

  1. Create a reusable content group linked network-wide (must be done by a network admin)
  2. Add your content as the content group's first (and only) element.
  3. In the field "Only display at node(s):", add the desired hotspots.

Note that's it's now trivial to update the list of nodes to show the content at. However, it only works for a single piece of content.

Displaying a piece (or pieces) of content only once to the user

This is useful for notices

  1. Link a ContentGroup where you want your notice to go.
  2. In "ContentGroup access control", make the ContentGroup non-reusable.
  3. Add your notice as an element of the ContentGroup.
  4. In "ContentGroup configuration"/"Can content be shown more than once to the same user?:" select "Content can only be shown once".

Doing a "Treasure hunt" or "Pub crawl"

This is an activity where you give the user clues for finding the next location (and next clue).

  1. Link a new ContentGroup network-wide.
  2. Make sure the ContentGroup is reusable
  3. Add your clues as ContentGroup elements
  4. For each clue, add the node at which it is to be displayed

Variant: Handling several paths

If you want your user's paths to branch off (more fun, as users can't just all follow each other) or not all get the same clue, do this

  1. In "ContentGroup configuration"/"When does the content rotate?" select "Content rotates each time you change node". In this scenario, this means that the content will never actually rotate for a single user, which is what we want.
  2. Make sure that "In what order should the content displayed?" is "Randomly"
  3. Just add more than one clue assigned to the nodes where you want your users to branch off.

Note that an alternative is to use a nested ContentGroup at each node.

Giving prizes or advertizing special events in certain time-windows

There are several ways to do this, but the simplest is to create a second, independent ContentGroup (also linked network-wide), in which the different special prizes (password for free beer, etc.) are listed (for each nodes they apply at). For each content group element, list the start and end time of the special event.

Doing a content "walk"

This is basically an exhibit in which the user must physically change location to get the next piece.

  1. Link a new ContentGroup network-wide.
  2. In "ContentGroup configuration"/"When does the content rotate?" select "Content rotates each time you change node".
  3. Add your pieces of content to the content group.

Creating narratives or "stories of which you are the hero"

WRITEME

Embedding a video, flash, etc. on a page

WRITEME

Displaying banner ads

WRITEME

Providing files to download

Displaying images

Flickr

Q: I want each node to have a Flickr Photostream (each referring to a unique Flickr tag) -- do I need to manually create one content element for each node, and enter my Flickr API information each time? -Gabe

Manual

Static text (taglines, copyrights, etc.)

Displaying parts of another website

Use the IFrame content type

Integrating with another website or CMS

The SmartyTemplate? content type allows passing auth server variables to a remote server if it accepts input as http GET parameters. The following example show two approaches.

IRC chat example using a simple HTML link to pass get variables

This example code allows using a  IRC web interface to connect to the #wifidog channel directly. You'd normally have to pick your username and the channel manually. The following will create a link ('Chat with wifidog developers') that will get you directly into the #wifidog channel, telling other users where you are connecting from if you are physically at a hotspot.

{if $userName}
<a target='_new' href='http://www.linux-quebec.org/cgi-bin/cgiirc/irc.cgi?interface=nonjs&Nickname={$userName|remove_accents|urlencode}{if $realNodeName}{'|'|urlencode}{$realNodeName|remove_accents|urlencode}{/if}&Realname={$userName|remove_accents|urlencode}{if $realNodeName}{'@'|urlencode}{$realNodeName|remove_accents|urlencode}{/if}&Server={'irc.freenode.net'|urlencode}&Channel={'#wifidog'|urlencode}'>
Chat with wifidog developers</a>
{/if}

ShoutBox? example using JavaScript? to pass get variables

This code will send a copy of the users's shouts to another website, and open it in a new window. It was developped to integrate ISF's network with  CityWide. To try it:

window.open('http://www.cwide.org/scripts/cwide_addMsgAndRedirect.php?hotspotID={$realNodeId}&hotspotName={$realNodeName|urlencode}&message='+escape(document.getElementById('shout_text').value)+'&ipAddress={$realNodeLastHeartbeatIP}&username={$userNam|urlencode}');

Displaying RSS feeds

Podcasts and enclosures

Content management scenarios

This second section is meant to answer questions such as "How should I manage content and curating on my network in a distributed, scalable way?"

You can abstract either as groups of content (art exhibits, announcements, etc) or groups of (possibly overlapping) nodes "Cafes, Saint-Laurent merchant's association), etc.

Logos for each hotspot

Collectively managing an exhibit (art, etc.)

Managing nodes as a group

How this will change in the future

Node groups

In the future, the assignement interfaces in the node and network admin UI will disapear. While that specific piece of UI is easy to understand, it prevents users from creating a proper mental model of the whole content manager (for reasons that are too long to explain here).

These two interfaces will be replaced by a single "Content assignement" interface. Content will always be assigned to groups of nodes (The whole network, and a single node being just a special case of node group). This (along with other upcoming features) will allow brand new scenarios to be supported, but most importantly will partly fix the disconnect between the way the ContentGroups? assign content and the way Nodes and Network do it.

Language handling

The Reusable content library