Changes between Version 3 and Version 4 of MapGuideRfc24


Ignore:
Timestamp:
Aug 16, 2007, 5:08:27 AM (17 years ago)
Author:
pagameba
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc24

    v3 v4  
    2929The existing AJAX viewer has limited capacity for customization, both in functionality and appearance.  Modifications require changes that modify every application that runs on the same servers, and are difficult to keep synchronized with changes in the AJAX viewer between releases (bug fixes etc)
    3030
    31 == Fusion Background ==
     31== Fusion Technical Overview ==
    3232
    33 The Fusion framework is a flexible, extensible templating system that provides the ability to separate application presentation from its functional components.  A Fusion application template is, at its simplest, is composed of an HTML page.  A Fusion application is created by loading the fusion.js library into the HTML page and initializing the Fusion object in the onload event of the page.  Fusion uses a special XML document, stored as an ApplicationDefinition resource in the !MapGuide OS server, to determine what functional components to create in the page.  Fusion dynamically loads additional javascript files to create the necessary functionality and initialize the application.
     33The Fusion framework is a flexible, extensible templating system that provides the ability to separate application presentation from its functional components.  A Fusion application template is, at its simplest, is composed of an HTML page.  A Fusion application is created by loading the fusion.js library into the HTML page and initializing the Fusion object in the onload event of the page.  Fusion uses a special XML document, stored as an !ApplicationDefinition resource in the !MapGuide OS server, to determine what functional components to create in the page.  Fusion dynamically loads additional javascript files to create the necessary functionality and initialize the application.
    3434
    35 The functional pieces of a Fusion application are called "Widgets".  A widget is a single, discrete piece of functionality.  In general, widgets are completely self contained and do not require any other widget to be in the application in order to function although, in practice, some widgets are not very useful without other widgets.  A widget typically has some form of representation inside the application, for instance as a button or a legend.  Where the widget appears in the application is controlled by the use of HTML id attributes in the application template.  Widgets are designed to be created "inside" HTML containers and usually size themselves according to their container.  A widget's position in an application is not constrained by the fusion framework in any way, although different widgets are designed to be contained in specific ways.  For instance, the container of a Legend widget would typically be a <div> element with a CSS style that would allow the contents to be scrolled if the Legend is larger than the container while a Map's container normally hides overflow.  Widgets are designed to be configurable through the ApplicationDefinition.  Where a widget's functionality can be customized in some way, optional tags are available in the ApplicationDefinition to specify that customization.  In general, the look and feel of a widget is customized by overriding specific CSS classes.
     35The functional pieces of a Fusion application are called "Widgets".  A widget is a single, discrete piece of functionality.  In general, widgets are completely self contained and do not require any other widget to be in the application in order to function although, in practice, some widgets are not very useful without other widgets.  A widget typically has some form of representation inside the application, for instance as a button or a legend.  Where the widget appears in the application is controlled by the use of HTML id attributes in the application template.  Widgets are designed to be created "inside" HTML containers and usually size themselves according to their container.  A widget's position in an application is not constrained by the fusion framework in any way, although different widgets are designed to be contained in specific ways.  For instance, the container of a Legend widget would typically be a <div> element with a CSS style that would allow the contents to be scrolled if the Legend is larger than the container while a Map's container normally hides overflow.  Widgets are designed to be configurable through the !ApplicationDefinition.  Where a widget's functionality can be customized in some way, optional tags are available in the !ApplicationDefinition to specify that customization.  In general, the look and feel of a widget is customized by overriding specific CSS classes.
    3636
    37 The Fusion framework uses the Jx library to simplify cross browser support for application UI elements such as toolbars, buttons, menus, splitter bars, tabs and more.  Jx is an independent javascript library that was originally developed to support WebStudio.  When the look and feel of an application is customized, often the developer is actually customizing the Jx components rather than the Fusion widgets themselves.  For instance, to change the appearance of all button widgets to emulate a Windows XP style, a developer would actually provide a CSS file that overrides the default button CSS defined by Jx.  Fusion widgets do not normally contain their own CSS or visual styles.
     37The Fusion framework uses the Jx library to simplify cross browser support for application UI elements such as toolbars, buttons, menus, splitter bars, tabs and more.  Jx is an independent javascript library that was originally developed to support !WebStudio.  When the look and feel of an application is customized, often the developer is actually customizing the Jx components rather than the Fusion widgets themselves.  For instance, to change the appearance of all button widgets to emulate a Windows XP style, a developer would actually provide a CSS file that overrides the default button CSS defined by Jx.  Fusion widgets do not normally contain their own CSS or visual styles.
    3838
    3939Fusion widgets are written in javascript, but have a mechanism to asynchronously invoke server-side scripts that can leverage the power of the !MapGuide OS Web Extensions API to perform advanced functionality.  The architecture of Fusion is designed to support any server-side scripting language but only PHP is actually implemented at this time.
    4040
     41A preview of an application that runs using Fusion is available at [http://demo01.dmsolutions.ca/mapguide/fusion/demo].  The application includes links to download Fusion and related documentation.  The version of Fusion used for this preview is not the final version, so it is recommended not to do any serious development on this version.
     42
    4143== Proposed Solution ==
    4244
    43 The Fusion framework, a base set of widgets that replicate the functionality of the existing AJAX viewer, and supporting server side scripts (in PHP only) will be donated by DM Solutions Group to the MapGuide OS project.  The Fusion framework is a core set of javascript classes that provide the basic framework for creating an application from an HTML template and an ApplicationDefinition.
    44 
    45 The base set of widgets that will be donated are:
    46 
    47 * list
    48 * of
    49 * widgets
    50 * here
     45The Fusion framework, a base set of widgets that replicate the functionality of the existing AJAX viewer, and supporting server side scripts (in PHP only) will be donated by DM Solutions Group to the !MapGuide OS project.  The Fusion framework is a core set of javascript classes that provide the basic framework for creating an application from an HTML template and an !ApplicationDefinition.
    5146
    5247In addition to DM Solutions Group's contribution, Autodesk is funding the development of several basic application templates that can be used as the basis for new applications.
    5348
     49Modifications will be made by Autodesk to !MapGuide OS to enable storing the !ApplicationDefinition resource in the !MapGuide repository.
     50
     51
     52
    5453== Implications ==
    5554
    56 !MapGuide OS will be modified to accept a new Resource type, ApplicationDefinition.  The schema of an ApplicationDefinition is yet to be determined.
     55!MapGuide OS will be modified to accept a new Resource type, !ApplicationDefinition.  The schema of an !ApplicationDefinition is yet to be determined.
    5756
    5857The Fusion code base will be added to the !MapGuide SVN inside the www/ folder.
    5958 
    60 == Test Plan ==
     59== License ==
     60
     61Fusion will be contributed under an MIT license, which is compatible with the LGPL license used by !MapGuide OS.  Fusion has several dependencies on other libraries ([http://www.prototypejs.org prototype], [http://script.aculo.us scriptaculous], and [http://excanvas.sourceforge.net Explorer Canvas] which are all released under compatible licenses.  The Jx library is maintained at [http://www.jxlib.org] and is released under an MIT license.
    6162
    6263== Funding/Resources ==