
What's new in version 1.3.2
-----------------------------

- TracGVizSystem now implements IPermissionRequestor interface. This 
  means that Trac admins can use `GVIZ_VIEW` permission to control 
  which users may access GViz data sources or not. On accessing such 
  data, if the aforementioned permission is not granted to the user 
  performing the request then a GViz API error response is returned 
  to the caller with `reason` set to `user_not_authenticated` in case 
  of anonymous access, or `access_denied` otherwise.

- Now absolute URLs are returned while expanding TracLinks 
  expressions found used inside iGoogleGadget macro. Formerly this 
  prevented the iGoogle container to find data inside the project 
  environment in case TracLinks expressions were used.

- Add support for `sheet` option in GoogleDocsConnector in order 
  to have links to data inside an specific sheet provided its name. 
  Hence, links like the following are supported from now on: 
  https://spreadsheets.google.com/tq?key=ABCD&sheet=Sheet1,
  https://spreadsheets.google.com/tq?key=ABCD&sheet=Sheet+2. 
  Sheet names may have alphanumeric characters as well as whitespaces.
  Syntax -> 
  `gviz:google:sheet:<spreadsheet_id>[:[<sheet_name>][:<top_cell>-<bottom_cell>]][?[headers=<number>]]`

- Formerly values in columns having types `date`, `datetime` or 
  `timeofday` were shown in responses not in JSON format (e.g. HTML) 
  in a way similar to `new Date(2009, 12, 2)`. Now they are rendered 
  using the following formats `%Y-%m-%d`, `%Y-%m-%d %H:%M:%S`, 
  `%H:%M:%S` respectively.

- New ! The following (non-standard) formats are supported using 
  special format identifiers for `out` option in `tqx` parameter:
  MoinMoin wiki tables (class extfmt.GVizMoinEncoder `out:moin`).

- Every wiki GViz provider now supports name expansion using Unix 
  shell-style wildcards. This means that if such patterns are 
  specified for `name` parameter either once or multiple times, then
  all those wiki pages for which a match is found will be included in 
  the result set 
  (e.g. `/gviz/wiki/index?tqx=out:html&all&name=Wiki*&name=TracN*`
  will return information about all the versions of the wiki pages 
  starting with either `Wiki` or `TracN` prefixes, such as 
  `WikiNewPage`, `WikiHtml`, `WikiProcessors`, 
  `WikiRestructuredText`, `WikiStart`, `TracNavigation`, 
  `WikiRestructuredTextLinks`, `TracNotification`, `WikiMacros`, 
  `WikiFormatting`, `WikiPageNames`, `WikiDeletePage`).

What's new in version 1.3.1
-----------------------------

- Assertions concerning permissions are supported, but not directly.
  They are delegated to the underlying layers on top of which the data 
  sources have been implemented (e.g. XML-RPC handlers).

- GadgetLinksDispatcher has been renamed. Now it is known as 
  LinksTreeDispatcher. It supports multiple root namespaces 
  (i.e. so far `gadgets`, and `gviz`) as well as the former hierarchy 
  of links. 

- IGadgetTracLinksResolver now is known as ITracLinksItem interface. 
  From now on its `get_link_resolvers` method *has to* return the 
  name of the root namespace (e.g. `gviz`).

- New ! TracLinks expressions for Google Apps Reporting Visualization 
  API have been implemented. It may be necessary to be logged in to 
  the Google Apps control panel in order to access the data. 
  Syntax -> 
  `gviz:google:apps:<report_key>@<report_date>:<domain>[?tq=<query>]`

- New ! It is possible to make reference to Google Spreadsheets using 
  TracLinks expressions starting with `gviz:google:sheet:` prefix. 
  They also support `range` attribute -to select only specific cells- 
  and `headers` option -in order to specify how many rows are header 
  rows-. Syntax -> 
  `gviz:google:sheet:<sheet_id>[:<top_cell>-<bottom_cell>][?headers=<number>]`

- New ! It is possible to make reference to Google's standard 
  visualizations using TracLinks expressions starting with 
  `gadget:google:modules:` prefix. Syntax -> 
  `gadget:google:modules:<chart_name>`

- TracLinks expansion for custom arguments in iGoogleGadget macro is 
  not a dream anymore. You can enclose TracLinks expressions in 
  brackets and assign such values to custom arguments. In such cases 
  the macro will perform the expansion looking for the target URL. 
  Hence the first expression shown below can be written now as shown 
  in the second example. Both of them will embed in the wiki page a 
  motion chart displaying the data found in cells B3-G17 inside 
  Google Spreadsheet number 1234.

    [[iGoogleGadget(url=http://www.google.com/ig/modules/motionchart.xml, 
    _table_query_url=http://spreadsheets.google.com/tq?range=B3%3AG17&key=1234, 
    _table_query_refresh_interval=5)]]

    [[iGoogleGadget(url=gadget:google:modules:motionchart, 
    _table_query_url=[gviz:google:sheet:1234:B3-G17], 
    _table_query_refresh_interval=5)]]

- All links to third-party sites resulting from expanding a 
  TracLinks expression are rendered in wiki pages with the well-know 
  icon `[]->`.

- Instances of GVizXMLRPCAdapter now can implement the method 
  `xmlrpc_namespace`. It is similar to the former `gviz_namespace` 
  method, but returns the XML-RPC namespace. This way multiple data 
  sources can be implemented using the services provided by a single 
  XML-RPC component.

- New ! GVizSearchFiltersProvider now allows to list all search 
  filters installed in a Trac environment.

- New ! It is possible to document the parameters accepted by a data 
  source using `gviz_param` decorator.

- GVizProviderList macro now displays the parameters accepted by 
  data providers.

- Now it is much easier to handle unicode, date & time and values 
  returned by the different data sources. From now on there is no 
  need to convert instances of xmlrpclib.DateTime in to instances of 
  datetime.date*

- New ! GVizSearchProvider now gives access to search results 
  returned by Trac built-in search engine. You can specify a query 
  string and control the search filters (e.g. `wiki`, `ticket`, 
  `milestone`, `pydoc`) in use.

- New ! You can get the names of the actions that can be performed on 
  a given ticket using `ticket/actions` data source.

- New ! You can get all the meta-data describing ticket fields by 
  accessing `ticket/fields` data source.

- New ! GVizTicketChangeLog provides a detailed changelog in order 
  to know the modifications made to different tickets. The data 
  source is available at `ticket/log`.

- New ! GVizTicketAttachments provides detailed information about the 
  files attached to different tickets. The data source is available 
  at `ticket/attachments`.

- New ! GVizTimelineFilters provides detailed information about the 
  different filters offered by those sources contributing to the 
  timeline. The data source is available at `timeline/filters`.

- New ! GVizTimelineEvents provides detailed information about the 
  timed events reported by those sources contributing to the 
  timeline. It supports time slicing, and filtering. The data source 
  is available at `timeline/log`.

- GVizMilestoneProvider has been enhanced. Formerly it just offered 
  the milestone name, due and completed time, plus its description. 
  Now it also contains some statistics on groups of tickets like 
  those displayed in the roadmap views. This includes the amount of 
  work that's been done, the units used to measure the indicators, 
  percent of the whole work that's been already done, the number of 
  active and closed tickets, and the percent they represent with 
  respect to the total number of tickets.

- New ! GVizWikiPages provides detailed information about the wiki 
  pages found in the Trac environment. It supports multiple features, 
  being timed filters, page selection and multiple versions, just a 
  few of them. The data source is available at `wiki/index`.

- New ! GVizWikiAttachments provides detailed information about the 
  files attached to wiki pages found in the Trac environment. 
  The data source is available at `wiki/attachments`.

- The right MIME type (i.e. `application/json`) is sent back to the 
  client in the HTTP response when JSON is requested. This 
  is consistent with RFC xxx.

What's new in version 1.2.3
-----------------------------

- Minor changes ... bah!

What's new in version 1.2.2
-----------------------------

- The meaning of the different columns in the table returned by GViz 
  data sources as well as the default labels can be documented using 
  `gviz_col`. This function is compliant with annotations as defined 
  by PEP 3107.

- Data sources' documentation can be included in wiki pages using 
  `GVizDataSource` macro.

- Docstrings have changed a little.

- Bug fixed: Until now, if no protocol handler was enabled then 
  the project environment became broken, because of a ValueError 
  exception being raised. This is annoying and therefore has been 
  fixed. Now if a URL having `gviz` prefix is accessed and 
  there's no protocol handler available, a ``Not Found`` (404) HTTP 
  response is returned to the caller with message 
  ``Unable to find any protocol handler``.

What's new in version 1.2.1
-----------------------------

- The `gviz_api` module (version 1.0.0) is redistributed in this 
  package. This has been made to fall back to this implementation 
  if no other has been previously installed.

- From this version on, the work is licensed under the Apache License. 
  See COPYRIGHT and NOTICE for details.

- Babel is no longer a dependency.

- Full TracLinks expansion in `iGoogleGadget` macro parameters.

- iGoogle gadgets logo included as image resource. Borders template 
  updated.

- Bug fixed: Until now, if an underlying RPC handler was disabled 
  then environment initialization failed since an annoying ValueError 
  exception was raised. That won't happen anymore. Now, once a method 
  is requested on the corresponding GViz data source provider, a GViz 
  error response is returned to the caller containing an explanatory 
  message.

What's new in version 1.2.0
---------------------------

- Added support to display iGoogle gadgets using WikiFormatting 
  extensions (i.e. iGoogleGadget macro).

- Added support to upload and host custom image-based gadget borders 
  inside the project environment.

- Bug fixed : All requests handled by IGVizDataProvider implementors 
  not having `tq` and `tqx` parameters 
  (e.g. http://myserver.com/project_name/gviz/ticket/status) now 
  output the correct data. Previously on accessing these URLs the
  HTTP response body contained an HTML error page.

What's new in version 1.1.0
---------------------------

- Support has been added to implement Google Visualization API data 
  sources by reusing existing Trac XML RPC components.

- Some (but not all) data sources for Trac ticket system are provided.
  They are based on the following Trac XML-RPC providers (listed 
  hereafter by namespace): ticket.milestone, ticket.severity, 
  ticket.type, ticket.resolution, ticket.priority, ticket.component,
  ticket.version, ticket.status.

What's new in version 1.0.0
---------------------------

- An architecture is available so as to provide a project's data in
  the format specified in Google Visualization API protocol 
  specification (version 0.5) api.TracGVizSystem.

- Multiple protocol handlers (e.g. for different versions, and 
  protocol evolution) are allowed by implementing the interface
  api.IGVizProtocolHandler. There is native support for version 0.5 of
  Google Visualization API protocol through GViz_0_5.

- It is possible to register new data sources by implementing the 
  interface api.IGVizDataProvider

- A pluggable architecture is at hand to retrieve table contents
  in multiple formats by merely implementing api.IGVizTableEncoder
  interface. The following formats are supported : JSON 
  (class stdfmt.GVizJsonEncoder), HTML (class stdfmt.GVizHtmlEncoder),
  CSV (class stdfmt.GVizCSVEncoder).

- The exception conditions mentioned in Google Visualization API
  protocol specification (version 0.5) have been identified.
