Feel free to contribute and/or format better

At a glance

WiFidog allows hotspot owners and administrators to create and associate content to hotspot login pages, portal pages or everywhere in the interface. The system can be accessed through the administration pages of the authentication server. The primary way to add/edit content is through the Reusable content library.

You can use the « Add new content » button to create content objects, which will be discussed later in this document. The « Show all content » button will display all the content stored in the system. It is important to note, that the normal view shows only « persistent, read-only » contents. Before you can associate content to a node, a network or a user profile, the content must be set to « persistent, read-only ». This prevents deleting the content too easily.

Attributes common to all content types

All content types share several of attributes, although Simple content types (see below), such as TrivialLangstring and SimplePicture, may not show most of them to keep them as simple as possible.


The different Metadata attributes contain information about the content that will be displayed, meant for human consumption. They are all optional.

These attributes, if used, can be constituted of any Simple content type. Thus, a title could be a TrivialLangstring, a SimplePicture? or any other available content type.

Note that if all Metadata attributes are empty, and authors are also empty, the content will display differently (no background, no margin).

Title (and "Display the title?")

The title of the displayed content. * Note: Not present in Simple types, unless they are persistent. * Note: Will only show at display time if "Display the title?" is checked. The reason for the "Display the title?" is to allow titling Persistend content types so they can e found in the reusable content library, without forcing you to actually display the title. * Standard display: Will be displayed at the very top of the content area


A short description of the content. * Standard display: Right side, below Authors

Long description

Meant to provide more detailed information about the content. Will be diplayed as a link to a page showing the actual Long description. * Standard display: NOT YET USED (as of 2007-01-14)

Information on this project

* Standard display: Right side, below Description.

Content access control

Is part of reusable content library (protected from deletion)?

Indicates that the Content is meant to be reused. Reusable content will: * Be listed in the Reusable content library, and the node and network content assignation interfaces. * Will not be deleted if removed from a node or ContentGroup it is set to display at. Non-reusable content will: * Be completely deleted if removed from a node, network or ContentGroup.

Content owner list

When you first create a content, you are it's sole owner. You can add any other user as an owner, and the user will be allowed to modify the Content (Very useful for team curating of content groups, or for collective art).

Is content author?

Once you add a owner, you can check the "Is content author?" box to indicate that the user actually created the content displayed (Art, text, image, etc.). * Standard display: Will be displayed at the top of the right side, above the description.

The different content types

Note that many of the following content types have a "Simple" version, that contains no metadata, and are never persistent. They are otherwise identical to their non "Simple" version. Note that for historical reasons, a SimpleLangstring? is actually named a TrivialLangstring. Full Content class hierarchy This is the inheritance hierarchy for the content types. A content will usually inherit all the administration interface of it's parent, and possible add it's own attributes.

  • Content
    • ContentGroup
      • BannerAdGroup
      • PatternLanguage
  • EmbeddedContent
  • File
    • Picture
      • SimplePicture
  • FlickrPhotostream
  • IFrame
    • IFrameRest
    • SimpleIFrame
  • Langstring
    • HTMLeditor
    • TrivialLangstring
    • SmartyTemplate
      • SimpleSmartyTemplate
    • Stylesheet
  • RssAggregator
  • ShoutBox


A ContentGroup is not actual content. It is a container that can contain a number of different content pieces. ContentGroup configuration It's elements are displayed accordingly with the following attributes :

  • In what order should the content displayed?
    • Pick content elements randomly
    • Pick content elements randomly, but not twice until all elements have been seen
    • Pick content elements in sequential order
  • When does the content rotate?
    • Content always rotates
    • Content rotates once per day
    • Content rotates once per session
    • Content rotates each time you change node
  • Can content be shown more than once to the same user?
    • Content can be shown more than once
    • Content can only be shown once
    • Content can be shown more than once, but not at the same node
  • Pick how many elements for each display?

ContentGroup Elements You can create new content on the spot for each content element or select existing content in the Reusable Content Library. Remember : the existing content, must be set persistent before you can reuse it.

Also remember that you can assign a content group as an element of another, to nest them.

Each element will be displayed according to it's display conditions:

  • Display order: In what order will the element display (Ignored if display type is random)
  • Only display from (date) untill (date): Content will only diplay during this date range. Note that once expired, an element will not appear on the admin interface by default (but you can show them by clicking on "Show expired group elements").
  • Only display at node(s): The nodes this element is allowed to display at. Note that an element can display at ANY node unless one or more nodes are selected.




This content type allows you to embed multimedia content in the portal pages. It support an unlimited number of fallback content (alternative content), which will be displayed if the client's browser cannot supported the multimedia content.


This content type allows you to either upload content that will be stored in the database or to specify a remote URL where the file can be downloaded. On the user side, this content will display a Download button.


Extends File, allows displaying a picture (optionally with a hyperlink).


« Flickr is a digital photo sharing website and web services suite. ... The service is widely used by bloggers as a photo repository. ». What's nice about Flickr, is that you can access all photos and metadatas through a well-documented API. Using this API we can display photos from the Flickr photosets on WiFiDog's portal pages. You will need a Flickr API key to active this content type. API keys are free for non-commercial use ( http://www.flickr.com/services/api/misc.api_keys.html). We support three Flickr photo selection modes :

  • By group
  • By tags
  • By user

Each selection mode has a number of different attributes.


Allows displaying another web page in a configurable portion of the portal.

IFrameREST (DEPRECATED, will be removed!)

Use a SmartyTemplate, which is much more powerful.

Langstring and TrivialLangstring

Most of the time, you will use a TrivialLangstring. This object supports translations for each locales specified in WiFiDog (as of Jan 2007, WiFiDog supports Français, English, Deutsch, , Español, Português' and 'ja_JP' => '日本語' (Japanese).

Note that simple HTML markup is allowed in Langstrings.


A Langstring with a WYSIWYG GUI for creating HTML markup.


Uses the  Smarty template engine to create content that uses variables from the auth server (usernames, node name, node id, etc). It's an extremely powerfull way to integrate with other web systems. There is online help available in the admin interface.


Allows adding custom CSS Stylesheets to node, content, etc.


A very powerfull RSSAggregator based of Feedpressreview. Extensive online help is available in the admin interface.


Note that unlike other content types, this one actively interacts with the users. It implements the Shoutbox use case. It's current feature set is still minimal (as of 2007-01-14):

  • Allows users to post short messages on the portal, directly from the portal.
  • Other users on the portal will see the last 5 messages.
  • It will check that the user is physically connected to the Hotspot before allowing them to post.
  • Allows adding custom Javascript in the button's onclick, for example to copy the message to a remote website.