Specification menu, plugin, widget, dashboard

  • The menu
    • is made of sections (links to other reports)
    • has 2 levels of depth
    • can be added new sections by the plugins
  • A plugin
    • can output data
      • can publish several widgets
      • can output a normal plain page
        • this page is located in its own section, adding an entry to the menu ; error if the section assigned already exists
    • can be
      • activated ; the first time it is activated it runs the (optional) installation function
      • deactivated
      • deleted ; runs the (optional) desinstall function
    • can have dependencies with other plugins
    • can have its own configuration file
    • can have its own translation files
    • respects the directory structure
      • /plugins/PluginName
        • PluginName.php ; main plugin file, defining meta information about the plugin, optional hooks, optional widgets, etc
        • Controller.php ; if the plugin wants to display data it needs a controller
        • API.php ; if the plugin wants to publish an API easily using Piwik architecture, this is the place to go
  • A widget
    • is - generally - a small piece of data to display
    • is displayed within Piwik
      • can be included in the Piwik dashboard
    • is embeddable
      • can be included in any website or blog using the Iframe / javascript technique
      • can also be included in other personalized homepage (igoogle netvibes etc) by using the clearspring.com converter
    • by default, the widget is not displayed
      • can be included in the dashboard by the user
      • can be included in the plugin's output if the plugin developed decided to include it
    • has properties
      • a title
      • a description (optional)
    • is basically the output of a php function or method and can be added in the widgets list in the dashboard by calling the Piwik_AddWidget function
  • The homepage in piwik is the Dashboard that
    • is made of widgets
    • is customizable like netvibes/igoogle (add/remove widgets, move widgets in the dashboard)
    • has multiple columns, the widgets have different heights ; number of columns customizable
      • the number of columns is FIXED (even when resizing the window to a small width, the widgets should stay on the same line)
      • the dashboard should handle when the window is resized (eg for width=800 or width=1600 it should occupy 100% of the screen width)
    • handles the multiple columns widget (eg a widget can be 1 column or 2 columns or 3 columns)
    • The dashboard can be customized per user
      • each anonymous user can customize the dashboard freely as well
      • way to serialize/unserialize the dashboard state
    • the widgets in the dashboard are loaded via ajax. Simple way for the developer to "reload" a widget via a javascript function.
    • the dashboard should work in a non-javascript mode (the links to other categories should work even if the dashboard itself doesn't display the data loaded in ajax)

  • Dashboard
  • Visitors
    • Overview
    • Loyalty (frequency, visits per visitor / time spent by visitor, visitor recency)
    • Locations (continent / countrie / provider)
    • Settings (browsers / os / plugins / resolutions / screen type)
    • Times (local / server time)
  • Actions
    • Overview
    • All actions (pages/downloads/outlinks)
    • Entry actions
    • Exit actions
  • Links
    • Overview
    • Search engines
    • Keywords
    • Websites
    • Others (direct entry/campaigns/partners)
  • Piwik Live!
    • Overview (current connected visitors
    • Last N visitors details
    • Last keywords (more recent, last new)
    • Last links (more recent, last new)

Attachments