Chameleon    Home  |  Docs  |  Support  |  Bugs  |  CVS  |  Downloads 

MapTools.org

chameleon-1.99beta3.20041109
============================

(PLEASE READ NEW FEATURES AND CHANGES BEFORE INSTALLING THIS VERSION OF
CHAMELEON)

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
definitions, are:

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.:

    <context-param>
          <param-name>maturity_level</param-name>
          <param-value>UNKNOWN</param-value>
          <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>
    </context-param>

END NOTE.


New Features
============

* 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 
information.

NOTE: The help viewer requires the php_xslt module.  See your PHP
documentation for instructions on enabling this module.  For MS4W users,
release 0.10 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 widget).

* added an implementation of the ZoomSelectedLayers widget (previously
unfinished).  Requires MapServer 4.3 (4.4).

* bug 629: created a generic JavaScript event management system 
(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.

Changes
=======

* 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 
application now).

* 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 samples accordingly.

* 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 queries.

* 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 file.

* added support for running from a CD or auto-mounted usb device.
(experimental)

* 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.

Bug Fixes
=========

bug 517: chameleon.php
    forward slashes removed from URL if no filename in URL.

no bug:  ROIPolygonTool, ROICircleTool
    check that the mouse is over the map in MouseMove().

bug 514: ExtractWFSData
    use the wfs_filter metadata even if it has no spatial element.

bug 514: ClearWFSData, ExpressionBuilder
    select original layer when deleting, change to existing layer 
    if already selected.

bug 367: ExtractWFSData
    implemented compressionformat and outputformat as child 
    elements instead of attributes.

no bug: DDSGUI
    added multilingualisation support to the DDS GUI widget.

no bug: SLD support (general)
    updated SLD-related code to work with WMS layers.

no bug: WMSBrowser
    many enhancements and bug fixes, including redesign of 
    layout, updated caching support, and integration of an 
    embedded catalog search widget.

bug 607: LegendTemplate
    resolved problem with loading templates from URLs.

no bug:  Buttons
    fixed problem with toggle buttons when toolset is empty.

no bug: LegendTemplate
    fixed a problem with multiple legend templates attempting 
    to use different template files, caching too aggressive.

no bug: DownloadContext
    fixed a problem downloading contexts (and all other downloads) 
    when the configuration files have absolute URLs in them.

no bug: MapDHTMLWidget
    fixed a problem when the mouse leaves the map image.

no bug: SharedResource
    fixed a problem when enablejs="true" - deeply nested arrays 
    created variable names that were too long.

bug 652: ExpressionBuilder
    modified ExpressionBuilder to not change the active layer.

bug 657: KeyMapDHTML, PanMap
    fixed an initialization bug in the JavaScript code that caused 
    the KeyMapDHTML widget to be non-functional if the PanMap widget 
    was in the application too.

bug 664: LegendTemplate
    fixed bug in initialization of JavaScript array containing 
    layer names.

no bug: ROIManager
    fixed a bug in the ROIRenderer that caused a crash on layers 
    in a different projection from the map object.  Also a 
    complete rewrite of the support for ROI Features for optimization, 
    now many times faster (using saveQuery and loadQuery).

bug 93: multiple widgets
    modified widgets so that it is safe to use them in a multi-form
    environment (when the Chameleon form is not form 0), using the
    formindex="<form number>" attribute from Widget.php.

bug 462: Widget
   fixed a problem in reprojectFromCenter concerning projections.

no bug: KeepSessionAlive
    fixed a problem in image generation due to an invalid number of 
    colours.

bug 678: MapDHTMLWidget
   fixed a bug in JavaScript code that caused unnecessary page 
   submit on resize in NS6+ browsers.

bug 480: CWC2 Service Instance
    added error handling for cases when no default language and/or 
    no default context is specified in cwc2.xml.  Default template 
    was already handled correctly.

bug 503: Chameleon
    fix bug in skinning support functions when requested file is an 
    empty string.

bug 498: Buttons
    trap requests for invalid images and generate session errors 
    rather than PHP errors.

no bug: KeyMapDHTML
    swap zoom extents if necessary to work around changes in 
    MapServer 4.3, extents are now validated to make sure that 
    minx < maxx and miny < maxy.  Code worked with 4.2 ...

bug 444:  Popups
    fixed problem with popupstyleresource that occurred if the 
    sharedresource referred to in popupstyleresource was not used 
    elsewhere, at least once, as a styleresource.  This caused 
    buttons in popups to appear as HTML input buttons instead of 
    JavaScript-enabled image buttons.  Also modified a number of 
    widgets to correctly initialize the Popup objects they were
    using, even though the fix works around incorrect 
    initialization if possible.

bug 186: Locate
    fixed a problem when zooming to a location and adding a 
    point at the location.  The newly added marker was often not 
    at the center of the zoomed-in view.  The problem occurred 
    because zooming was done from full extents based on pixel 
    location and could be off, at full extents, by as
    much as the size of a pixel.  Since default scale zoomed 
    in is 1:50000 and full scale extents for Canada are 1:50000000, 
    the error could be considerable.  Now the widget recenters 
    after zooming to get a much more accurate result.

bug 575: KeyMap
   fixed a problem using remote files as keymap images, required 
   changes to core functions for working with remote files by 
   allowing the remote file to become web-accessible after 
   downloading locally.

bug 440: Common
    removed unnecessary (and conflicting) references to session 
    variables related to gd module and freetype.

no bug: wrapper
    fixed a problem in map_query.php when mixed WMS and local 
    layers were queried and results should have been found.  
    Bug fix also improved performance of query code considerably.

bug 679: wrapper
    only use drawQuery when a query is actually required, to 
    prevent problems with using QUERYMAP sizes instead of MAP size.

no bug: wrapper
    improve performance of applications by closing session in 
    drawmap.php immediately after opening.  This prevents other 
    frames or delay-loaded stuff from waiting for the map draw 
    to finish.

bug 166: phpwms
    fix detection of queryable WMS layers (broken by a change 
    in MapServer's handling of contexts).

bug 339: Buttonizer
    bundle Vera.ttf with Buttonizer as a fail-safe font option.

bug 187: ClearWFSFilter
    fixed a bug when there was no filter to clear.

bug 700: Chameleon
    added additional error checking of gszAppPath.

bug 645: Widget
    removed NAME from attributes, it was only used by 
    SharedResource.

bug 708: Button
    fixed a potential problem when buttons can't find images, use 
    label wrapped in <a> tag, if possible.

no bug: Link
    added return value in ParseURL to stop spurious errors being 
    reported.

no bug: Button
    added 'hidden' feature to specify a div id for a button.  The 
    button will show/hide the associated div when clicked.  
    This is primarily for use with widgets that are part of a 
    toolset so the buttons can act as tabs.  This
    also affected cwc_button.js.

bug 746: session
    modified session.inc.php to prevent warnings.

bug 765: JSAPI mode
    UpdateMap.php was broken by a previous change that made calling
    InitDefaults mandatory, fixed this by adding InitDefaults calls 
    when instantiating widgets in UpdateMap.php.

bug 763: Packaging
    fixed Makefile to include the new docs directory and remove 
    the old html directory.

bug 756: KeyMap
    fixed invalid reference to a_pixel.gif that generated errors 
    in the web server log files.

bug 766: Samples
    updated nav_enhanced.html to use the correct icon for zoom 
    to layer.

bug 758: download
    fixed invalid variable reference in download.phtml that caused 
    downloads to fail under some circumstances.

bug 451: Button
    fixed session caching problem when the same sharedresource 
    name was used on multiple templates but button caching was 
    turned off.

bug 339: Button
    added better error reporting if font missing.

bug 747: drawmap
    added inline errors for several error states.

bug 784: cwc2, Chameleon
    handle errors relating to invalid templates in the URL.

no bug: download.phtml
    clean up the URL before triggering download to prevent 
    problems reported on Mac OSX, where multiple // caused download to fail.

no bug: Popup
    detect popups that fail to open and warn user that a 
    Popup Blocker may be causing problems.



Printer Friendly

 
 

Contact Information

Chameleon Users List