[Chameleon] Chameleon 1.99 beta 3
pspencer at dmsolutions.ca
Tue Nov 9 19:55:50 EST 2004
I'm pleased (believe me!) to announce the release of Chameleon 1.99 beta
3. The full release notes are available at:
I've included the release notes, new features and changes sections here
for your convenience. To get your new package, visit:
As the note suggests, there are some important changes in this version,
please read the following in its entirety before upgrading.
(PLEASE READ NEW FEATURES AND CHANGES BEFORE INSTALLING THIS VERSION OF
Those following Bugzilla activity will have noticed a flurry of activity
recently. This activity was all in aid of getting a new beta version of
Chameleon 1.99 ready. This newest version includes the final Chameleon
features we were waiting on and bunch of bug fixes and core improvements
that make Chameleon easier to work with and more stable.
This release, beta 3, will hopefully be the last beta release for
Chameleon 1.99 and represents a full feature set for the final 1.99
version. However, it still contains a number of known issues that we
will be working on resolving. (Search for target milestone RC 1 under
the Chameleon product to see a list of issues.)
The current plan is to resolve outstanding issues recorded in Bugzilla
and then release a first Release Candidate. After a suitable period and
further internal testing, we will likely release a second Release
Candidate to be followed shortly (I hope) by a final version of 1.99.
Our goal for releasing version 1.99 is to have a set of basic, useful
widgets that are stable and without known problems. This does not mean
that every widget available for Chameleon will be at this level of
stability at the time of the final release of 1.99. It is beyond our
current resources to perform sufficient QA on all widgets and get the
entire set of widgets up to a release standard. These non-core widgets
are likely to have known limitations or issues (listed in Bugzilla) that
will not be addressed for the 1.99 release. At the same time, we do not
mean that these non-core widgets won't be useable - in fact, most are
already in active use in some of our projects. As planning begins for
future releases, addressing the remaining issues of highest priority
will be targetted for the upcoming development cycles of Chameleon.
Widgets that will be considered stable will be clearly identified by the
time we release the first Release Candidate. We have added a new core
feature (in bug 701) which assigns a maturity level to each widget. The
Chameleon configuration file has been expanded to include a
'maturity_level' parameter which can be set to one of the predefined
maturity levels. This parameter prevents applications from being able
to access widgets below this maturity level. Applications can also
override this value to set a lower or higher minimum maturity level.
The net effect of this will be that you, the application developer, will
knowingly have to make a choice to use widgets which may not be fully
tested or even stable.
The maturity levels that are currently available for use, and their
UNKNOWN - the base level at which all widgets start
ALPHA - in development, incomplete functionality, no documentation
(other than auto generated)
BETA - in development, functionally complete, no know major bugs, no
documentation (other than auto generated)
RELEASECANDIDATE - out of development, no know bugs, limited testing,
little documentation (other than auto generated)
TECHNICALRELEASE - out of development, few known bugs (all minor),
thoroughly tested, widget doc completed
PRODUCTRELEASE - out of development, no known bugs, thoroughly tested,
all documentation completed
The large majority of available widgets currently have a maturity level
of BETA (with a few at ALPHA). As further releases of 1.99 come out,
these maturity levels (in particular, for the basic set of widgets) will
move along the spectrum of values. Widgets without set maturity levels
are considered to have the maturity level of UNKNOWN.
There will be more on the maturity system in the documentation available
for 1.99 RC 1.
NOTE: it is quite likely that, when you install this beta version of
Chameleon, you will run into issues related to this maturity level
change. By issues, I mean that some widgets will no longer appear in
your application, especially custom widgets. Do not panic - this is
normal. To account for this, you will need to do one of the following:
* modify any widget that is failing to appear by including a line in the
widget's constructor, as follows:
$this->mnMaturityLevel = MATURITY_<level>;
where <level> is at least as high as the level specified in your
chameleon.xml file's maturity_level setting. (If it's not in there, copy
from chameleon.xml-dist and set appropriately.)
* modify your application to accept a lower maturity level by adding the
following line AFTER $oApp->CWCInitialize():
$oApp->mnMinimumMaturityLevel = MATURITY_<level>;
You will probably want to use UNKNOWN for <level>. This will have the
effect of allowing all widgets to be used, regardless of maturity level.
* modify your chameleon.xml to set a lower overall maturity level, i.e.:
<description>This option controls the widgets that will be
available to Chameleon applications. Only widgets at or above the
configured level will be accessible. Levels in increasing order of
maturity are: UNKNOWN, ALPHA, BETA, RELEASECANDIDATE, TECHNICALRELEASE,
PRODUCTRELEASE. See Chameleon documentation for a description of these
maturity levels. </description>
* added a documentation builder and help file viewer for widget-level
documentation. The documentation builder is primarily an internal tool
at this point; it provides support for generating and maintaining
documentation in xml format for all widgets.
The help viewer is an application developer tool that allows browsing of
the Chameleon documentation, in particular the widget-specific
NOTE: The help viewer requires the php_xslt module. See your PHP
documentation for instructions on enabling this module. For MS4W users,
release 1.0 of MS4W makes this module available by default. Previous
versions will not work without modification, specifically the dlls in
php/dlls must be moved to the cgi-bin directory.
The auto-generated documentation building system has undergone a serious
overhaul and is targeted at longer term needs, including multilingual
support and support for processes other than end-user documentation
(like QA). For this release, it is primarily an internal tool so there
are likely to be problems in other configurations. We will be expanding
our testing to improve its stability in the next release. Note that
this tool is not for application developers - it is for widget
developers and documentation maintainers. Use at your own risk!
* bug 565: added new ContextSelector widget which allows for a preset
list of contexts to be defined. They are displayed as a select box in
the page. Choosing a context from the list loads the associated context
and resets the legend/view extents and projection appropriately.
* added new MapTitle widget that displays the title of the current
mapfile, useful with the ContextSelector widget or any app that allows
changing map files. Uses metadata wms_title over map name, if possible.
* bug 583: added new LayerOrder widget based on code provided by GeoDan,
allows user to promote and/or demote layers in the application by
combining with the SelectLayers widget and an appropriately crafted HTML
legend template (LegendTemplate widget).
* bug 583: added new RemoveLayer widget, allows users to permanently
remove a layer from the view/map file by combining with the SelectLayers
widget and an appropriately crafted HTML legend template (LegendTemplate
* added an implementation of the ZoomSelectedLayers widget (previously
unfinished). Requires MapServer 4.3 (4.4).
(implemented in cwc_event.js).
* added new widget, ExtractSR, that allows the user to download the
contents of a SharedResource as a CSV file. To be useful, this needs to
be used with a widget that populates a SharedResource (such as SQLQuery)
and a SharedResource widget that both point to.
* removed some deprecated files.
* refactoring of duplicated code.
* added getRemoteFile and loadContext to Chameleon core class to
simplify widgets that work with remote files.
* streamlined and simplified all code that loads files to seamlessly
detect and load remote files and local files in a consistent manner.
(That is, all local relative paths are considered relative to the
* modified TemplateParser to allow default values to be specified in the
preprocessor engine. New format is [$<value>|<default>$]. Now, if
<value> is not set in POST/GET then <default> will be substituted
instead of just leaving the [$ $] tag. It is valid to specify an empty
string using [$<value>|$].
* enhanced some of the internal error handling code to be more
descriptive in a number of cases.
* bug 424: LegendTemplate
added a CONTROLVISIBILITY="<true|false>" attribute to allow
template designers to work around a problem combining multiple legend
templates (and, specifically, LayerManager2).
* bug 621: UIManager
added global handling of ENABLED="false" in widgets.
* moved the contents of the chameleon/html directory into the new docs
directory under html. New structure allows for multiple formats since
we are maintaining the core documentation in DocBook (xml) format. Core
documents will now go in chameleon/docs/xml and html documents generated
from them are in chameleon/docs/html.
* bug 454: php_geocoder
updated watershed lookup service code to point to the new home of
the watershed lookup service.
* added zip to the common directories used by Chameleon.
* bug 520: HelpWidget
updated for new help file structure, renamed to EmbeddedHelp.
* bug 635: Language
deprecated Language widget by moving language capability into the
core of Chameleon - it is now always in every application. Updated
* improved MapTips widget to allow for application-defined onmouseover
and onmouseout events.
* updated sample applications to showcase the new widgets and new
attributes on existing widgets.
* bug 659: added persistent queries to query capability, supported by
the core of Chameleon and initial implementation in the Query widget.
This feature uses the Mapscript functions saveQuery and loadQuery to
persist query results. The core of Chameleon simply looks for a query
file in the session and restores it using loadQuery, if found. The
Query widget has additional attributes to make queries persistent and it
saves the results of a query in the session, if appropriate. This
mechanism makes it possible for other query tools to generate the query
files as well. Also added ClearQueryResults widget to remove persistent
* completely revamped the administration pages, including a number of
bug fixes and reworking the interface to be more useable. The admin
pages have also been moved in CVS from htdocs_admin to admin/htdocs
which is more in line with the structure of the rest of Chameleon.
* bug 782: added more template validation, now extraneous attributes
(those not defined for the widget) are reported as errors through the
error manager if template validation is turned on in the configuration
* added support for running from a CD or auto-mounted usb device.
* bug 701: added support for maturity levels to the Chameleon core and
existing widgets. Developers must now indicate the maturity level of a
given widget and application developers can choose an acceptable
maturity level for their applications. The Chameleon framework will
then automatically restrict access to widgets that are below the
acceptable maturity level. This change will also help QA and
documentation maintainers to provide a more robust product.
|Paul Spencer pspencer at dmsolutions.ca |
|Applications & Software Development |
|DM Solutions Group Inc http://www.dmsolutions.ca/|
More information about the Chameleon