Recent Changes - Search:

Administrators

Developers

Articles

Cookbook

edit

ChangeLog

-------------
Version 0.5.2
-------------
NEW: New method "clearOptions" for QuiX combos.
NEW: Added support for date picker UTC dates by using utc="true".
NEW: New "toUtc" and "toLocal" JavaScript Date object methods.
NEW: New mandatory "@porcupine.db.transactional" decorator for
     transactional web methods.
NEW: New "getattr" and "getparent" OQL functions.
NEW: New "indexOf" method of JavaScript Arrays.
NEW: New "query" method of QuiX base widget.
NEW: New "getWidgetByClassName" of QuiX base widget.
NEW: New "AutoComplete" widget contributed by Thomas Bellos.
NEW: New "onunload" custom event of QuiX base widget.
NEW: Added support for Safari, Firefox3 and Google Chrome.
NEW: New "effects" QuiX module.
NEW: New "maxfilesize" parameter for QuiX upload controls.
NEW: New "focus" method of QuiX combos.
NEW: New "onrowprerender" custom event of QuiX list views.
NEW: New "onrendercomplete" custom event of QuiX list views.
NEW: New "cellThreshold" attribute of QuiX list views. If the cells
     to be rendered exceed this number the the list view is rendered
     asynchronously (default value is 2000).
NEW: Added mandatory data types of all data types to avoid heavy
     sub-classing.
NEW: New "ondocumentload" custom event and "getDocument" method
     for QuiX IFrame widgets.

OPT: Fixed list view headers wobbling.
OPT: Enhanced prioritization and activation of web methods based on the
     request parameters.
OPT: New redesigned transactions.
OPT: Optimized calculation of proportional widths of list view cells.
OPT: Interactive column resizing of list views.
OPT: Added optional transaction argument to "getAllParents" method
     of content classes.
OPT: When attempting to append an item having the same displayName with
     a pre-existing item the exception raised contains the name of the
     container in which the insertion was attempted.
OPT: Do not match IE mobile for QuiX based UIs.
OPT: Ability not to duplicate external files when cloning objects.
OPT: "getWidgetsByType", "getWidgetsByAttribute" and
     "getWidgetsByAttributeValue" Widget methods are based on "query".
OPT: The Porcupine db is opened without the db.DB_RECOVER flag to allow
     access from multiple processes (database recovery is done using
     "porupineadmin.py -c").
OPT: New type of progress indication (busy) while QuiX is
     loading external resources.
OPT: The "redraw" method of QuiX boxes can now be overridden.
OPT: Ability to render borderless fields by using border="0".
OPT: Slices of resolved object sets (those returned by OQL queries)
     now return an array of objects instead of a new object set.
OPT: Don not fire the "onchange" event when a Combo is first loaded.
OPT: While editing a data grid the changes are reflected immediately.
OPT: While editing data grids you can navigate between cells by using
     the TAB and SHIFT-TAB keys.
OPT: Moved the object security check inside the web method wrapper
     in order to be able to access objects with no read permissions
     with "runas" impersonation filter.
OPT: Modified the desktop schema in order to use the out of the box
     mandatory data types instead of the custom ones.
OPT: codegen now generates code for event handlers.
OPT: Ability to replace a data type with another for as long they have
     the same safe type by using "setProperty" (codegen).
OPT: New "generate_code" optional argument to "commitChanges" method
     of "porcupine.administration.codegen.ItemEditor" class. If set to
     False the database is updated but the item's class is not.
OPT: The security context is now re-evaluated for evety new request
     without having to initiate a new session thanks to Thomas Bellos.
OPT: Session objects now hold the user's ID instead of the user object
     consuming less memory resources.
OPT: New "porcupine.filters.authorization.RunAs" pre-processing filter.

FIX: Do not keep a cached copy for non-existent published directories.
FIX: Fixed property dialogs when properties contain special
     characters such as ",<,> etc.
FIX: Fixed duplicate files inside packaged directories when using
     the pakager.
FIX: Fixed list view dimensions when exploring folders.
FIX: Fixed cellpadding setting of QuiX list views.
FIX: Fixed cells with proportional width when having a hidden
     list view header.
FIX: Item updates that occur inside "onupdate" event handlers are
     persisted.
FIX: Clear tree selection when destroying a tree node that contains
     a selected sub node.
FIX: Fixed trans_max_retries setting in the Porcupine database
     environment.
FIX: Fixed "activeTab" value when destroying the first tab of
     QuiX tab panes.
FIX: First tab's onactivate handler is now called.
FIX: Fixed multiple file upload on IE.
FIX: Fixed "imgWidth" and "imgHeight" QuiX Icon parameters when
     using percentages.
FIX: Fixed "nextSibling" and "previousSibling" QuiX base widget
     methods.
FIX: Fixed imports generation bug when a module contains "import ..."
     with codegen.
FIX: Fixed "getSecurity" desktop remote method when an assigned
     user or group no longer exists.
FIX: Fixed days locale enumeration for "porcupine.utils.date.Date"
     objects.
FIX: Fixed data types validation when __debug__ is set to False.
FIX: Preserve radio buttons state between redraws on IE.
FIX: Fixed "parseFromUrl" on IE when template contains numerous
     images.

DEP: "HttpContext.current().session.user" is no longer valid. Use
     "HttpContext.current().user" instead.
DEP: "db_backup.py" script is renamed to "porcupineadmin.py"
DEP: The "sort" method of QuiX list views now accepts the column
     name and the sort order ("ASC" or "DESC").
DEP: Removed object cache as objects copying was quite expensive.
     Future releases will use shared cache allowing multi process
     access.
DEP: The "orderBy" and "sortOrder" properties of QuiX list views
     are now private.
DEP: The arguments passed to the sortfunc function of list views
     are the list view, the order by field and the sort order.
DEP: The "porcupine.core.eventHandlers" is now "porcupine.events".
DEP: The "displayName" attribute is now of type
     "porcupine.datatypes.RequiredString".
DEP: The "addProperty" method of "porcupine.administration.codegen.ItemEditor"
     class is deprecated. Use "setProperty" instead.

-----------
Version 0.5
-----------
NEW: Ability to define image dimensions explicitily for Icon and
     TreeNode widgets using the "imgwidth" and "imgheight" attributes.
     Accepted values are integers or percentages.
NEW: Added "onmousedown" to the list of supported QuiX events.
NEW: Added "focus" method to Field widgets.
NEW: Added "maxlength" and "textalign" attributes to fields.
NEW: Added "getFile" method to the internal file data type.
NEW: Support for pre-processing filters.
NEW: New pre-processing filter "porcupine.filters.authorization.RequiresLogin".
     Use "porcupine.filters.requires_login" decorator for web methods.
     As the name denotes this filter protects assets from non authenticated
     users. Ability to redirect such users to a predefined url if the optional
     "redirect" argument is used.
NEW: Added new "QuiX.getTargetWidget" function.
NEW: New "QuiX.getOS" function.
NEW: QuiX context menus now have a new "target" attribute which contains
     the target widget.
NEW: Added new "getWidgetsByAttributeValue" method applying to all widgets.
NEW: POQL now has two new functions "upper" and "lower". Useful when
     performing case-insensitive searches on string attributes.
NEW: QuiX now has a universal mouse button detection method
     (QuiX.getMouseButton)
NEW: Added "deletePermanent" remote method applying to all content classes.
NEW: ListView widgets now have a "select" method that selects items by index.
NEW: New "rowheight" parameter for ListView widgets.
NEW: Ability to specify which splitter pane collapses by using the "_collapse"
     custom attribute.
NEW: New "editundef" attribute for data grids. If set to "false" then the
     dataset's undefined values are not editable.
NEW: New "List" data type.
NEW: New "onclose" custom event for ContextMenu widgets.

OPT: Service oriented architecture. Currently, the supported services
     include an asynchronous network server and a scheduler used for
     executing Python code at fixed intervals.
OPT: Data types are now type safe.
OPT: The porcupine database singleton is now accessible from everywhere
     by using "from porcupine import db".
OPT: The main Porcupine configuration file is now a Python dict.
OPT: The "config.xml" configuration files can now contain smart
     registrations with regular expressions matching providing
     with a powerful rewriting engine.
OPT: QuiX is now using a pooled set of XmlHttp objects for better resource
     usage on the client side.
OPT: Enhanced detection method for droppables.
OPT: Using the standard "mimetypes" Python module for guessing
     response content types.
OPT: Changed the default mode of the "getFile" method of the 
     external files datatypes to 'rb'.
OPT: Session objects are now using __slots__ for more efficient memory
     usage.
OPT: Added the required hooks that allow the integration of other
     popular Python template engines easily.
OPT: The cookie detect page is removed. The code is transferred inside
     the "porcupine.webmethods.quixui" decorator when this is defined
     as a page (by using the isPage=True directive).
OPT: The Porcupine exceptions module has been greatly simplified. The error
     codes have become equivalent to those of the HTTP protocol.
OPT: Object sets have become far more memory efficient.
OPT: The date locales are transfered inside the "porcupine.utils.date"
     module.
OPT: Ability to define custom attributes to tree nodes of FolderTree
     widgets if and only when the remote call returns an
     "attributes" parameter for each tree node.
OPT: Allow more than one non-nested transactions per request.
OPT: Fixed scroll bars bleed through on MacOS Firefox.
OPT: QuiX FlowBox now supports multiple selection by using
     "multiple=true".
OPT: Allow alternate row colors for ListView widgets by using the
     "altcolors" attribute. Ability to define highlight colors by
     using the "hightlightcolors" attribute.
OPT: Added the missing email field on the user's form.
OPT: Ability to define accepted file types for each QuiX file control
     by using the "filetypes" attribute.
OPT: File controls now have an "oncomplete" event which is fired when
     upload is finished.
OPT: Removed limitation that required file controls to be placed inside
     a QuiX window.
OPT: New "reset" method for MultiFile widgets.
OPT: The main widget for all QuiX Window is now a vertical Box in order
     to support themes in a simpler way.
OPT: Enhanced resolution of QuiX modules' dependencies.
OPT: The object cache returns deep copies of objects, so that each request
     is accessing its own copies.
OPT: The "Composition" data type now accepts subclasses of the
     designated type.
OPT: TabPane's "activateTab" now accepts both an integer or a tab widget as
     argument.
OPT: Wrapped tooltips.
OPT: Automatically generated forms now support date data types.
OPT: The "create" and "update" remote methods handle integer data types.
OPT: The remote method "update" now handles date data types.

FIX: The XML-RPC module now encodes unicode keys of dict types
     using the appropriate encoding.
FIX: Fixed the "Content-Disposition" header when the filename contains
     spaces.
FIX: Fixed the "getCaption" method of QuiX Labels when these contain
     special characters such as &,<,>.
FIX: Remove the active editing widget when refreshing a Datagrid.
FIX: Fixed the "getImageURL" and "setImageURL" methods for icons that
     do not have initially an image set.
FIX: Fixed error when packaging directories with unicode paths using the
     pakager utility.
FIX: Fixed row dragging of list views on IE.
FIX: Added missing "__slots__" class attribure to ExternalFile data type
     and PersonalFolder content class.
FIX: Tree widget's "getSelection" now returns null if no tree node is selected.
FIX: Fixed list view's header placement when padding top is other than 0.
FIX: No more orphaned context menus.
FIX: Fixed length distribution after removing a child of a Box.
FIX: Boxes now display correctly if the first child is hidden.
FIX: Fixed filenames for duplicated external files when cloning an object.
FIX: Fixed date formatting when using the "yy" parameter on the server side.
FIX: Fixed the "iconpadding" parameter for QuiX buttons.
FIX: Fixed possible transaction deadlock when moving or copying
     multiple items.
FIX: Fixed selection of "Reference1" data types with POQL.
FIX: The server side XML-RPC module serializes composites.
FIX: Content classes' event handlers are called before datatype event handlers
     to reflect any possible data type updates.
FIX: Do not update the object cache if a transaction handle is given on read
     operations.
FIX: The "onchange" event for date pickers is now fired.

DEP: The servlets are completely replaced by smart decorators. These
     decorators can be found inside the "porcupine.webmethods" module.
     This means the the "HTTPServlet", "XULServlet" and "XMLRPCServlet"
     classes no longer exist.
DEP: You cannot bind Python Server Pages to objects but you can still use
     them stand alone.
DEP: All system objects inside a PSP page now begin with a capital letter;
     i.e. Response instead of response, Item instead of item etc.
DEP: The store.xml configuration file no longer exists.
DEP: The @policymethod descriptor is now implemented as a pre-processing
     filter ("porcupine.filters.authorization.RequiresPolicy" for "config.xml"
     files or "porcuine.filters.requires_policy" when used as a descriptor).
DEP: The Gzip post processing filter is now referenced as
     "porcupine.filters.output.Gzip" when used inside "config.xml"
     configuration files or "porcupine.filters.gzip" when used as a
     descriptor.
DEP: The Multilingual post processing filter is now referenced as
     "porcupine.filters.output.I18n" for "config.xml" files or
     "porcupine.filters.i18n" when used as a descriptor.
DEP: The "porcupine.utils.xmlUtils" module is renamed to "porcupine.utils.xml".
     The "XMLEncode" function is renamed to "xml_encode".
DEP: The "porcupine.serverExceptions" module is renamed to
     "porcupine.exceptions".

-------------
Version 0.1.1
-------------
NEW: Added new "getWidgetsByAttribute" widget method.
NEW: Third party QuiX modules can have dependencies by using the
     "depends" attribute.
NEW: Created custom widgets for "Relator1" and "RelatorN" data
     types.
NEW: New ACL editor custom widget.
NEW: New flow box QuiX widget.
NEW: Added widget opacity.
NEW: Added basic drag an drop capabilities to QuiX widgets.

OPT: Upgraded to the latest version of PLY.
OPT: Compacted QuiX core file size by using indexed widget
     constructors.
OPT: QuiX markup can now be written using QuiX's namespace as the
     default one (no need for those strange "a:" inside QuiX files)
OPT: QuiX XHTML markup must be enclosed inside CDATA elements.
OPT: Using the "display" CSS attribute instead of the "visibility"
     attribute for showing and hiding widgets.
OPT: External files get replicated when creating replicas of their
     respective objects.
OPT: Added "wrap" attribute for labels.
OPT: QImage class now includes width and height info of the preloaded
     image.
OPT: Select lists are selected with onmousedown instead of
     onmouseclick.
OPT: Splitter widget now derives from Box. As a result the "pane" nodes
     are no longer valid.
OPT: Tooltips get disabled while dragging a widget.

FIX: Fixed guest user desktop access.
FIX: Root level objects can now be created.
FIX: Tooltip is removed when their respective widget is destroyed.
FIX: Added synchronous event handlers for composite objects.
FIX: Fixed client side XMLRPC method name validation.
FIX: Allow boxes with zero children spacing.
FIX: Fixed dialogs' minimizing
FIX: Fixed QuiX's local tag name reading for IE.
FIX: Fixed cursor style state for initialy disabled buttons.
FIX: Displaying a context menu over a list view with multiple
     items selected does not clear the selection.
FIX: Fixed composite objects' event handler.
FIX: Fixed "canselect" attribute of Labels on FF.
FIX: Fixed "onexpand" event of FolderTree widgets.


DEP: QuiX forms no longer have an "elements" array attribute. Use
     the "getElements" method instead.
DEP: QuiX "getEventListener" function is now referenced as
     "QuiX.getEventListener".

-------------
Version 0.1.0
-------------
NEW: Synchronous event handlers per content class.
NEW: Added new optional parameter "qs" to the store registrations
     configuration file. It is used for mathcing against the
     query string as a whole for more flexible servlet binding.
NEW: Added new data type for linking external files that reside
     on the file system.
NEW: Added new method "getTempFilename" to the session object. It
     returns a safe filename for creating a temporary file.
NEW: Personal repository for each user.
NEW: Added experimental internal redirect using server local
     relative URLs.
NEW: The "runas" decorator allows servlets' methods to run under a
     different user account.
NEW: New "onresize" QuiX event.
NEW: New slider control.
NEW: QuiX now supports tooltips using the "tooltip" attribute.
NEW: Support for third-party widgets using the "custom" tag.
NEW: Ability to include custom stylesheets by using the "stylesheet"
     tag.
NEW: Added "onscroll" to the list of the supported DOM events.
NEW: Abillity to define custom stepping for QuiX spin buttons.
NEW: Added new "getData" method for QuiX forms.

OPT: Faster XMLRPC object serialization on the server side.
OPT: XMLRPC serialization for Python "unicode" types.
OPT: Allow calling XMLRPC methods with no arguments.
OPT: The "onload" handler is called after the widget is placed
     on the document.
OPT: Porcupine multilingual filter supports multiple resource
     files.
OPT: Child windows are excluded for the task bar's context menu.
OPT: Faster redraws by using a single document fragment.
OPT: Redraws on IE take place offline, just like on Mozilla.
OPT: Faster "getWidgetById".
OPT: QuiX.removeNode returns the removed node.
OPT: Hiding and bringing to front takes care of the child windows too.
OPT: Ability to define custom padding to QuiX toolbars.
OPT: Context menus are not displayed if their "onshow" handler
     returns "false".
OPT: Combo boxes and select lists display vertical scroll bars only.
OPT: Disabled "ondragstart" event for IE images.
OPT: Ability to define initial toggle button state by using value="on".
OPT: The form submit callback function can be omitted.
OPT: Renamed "getClassByName" to "getCallableByName".
OPT: The selected date gets highlighted (date picker control).

FIX: Fixed guest user access to the Porcupine desktop by changing
     the "allow_guests" parameter of porcupine.ini (mentioned by thugree).
FIX: Added support for long types in the Porcupine XMLRPC module.
FIX: Fixed hour formatting for JavaScript Date objects.
FIX: Disabled labels appear grayed.
FIX: Fixed the statuses of menu options of a file upload control, based
     on its state.
FIX: Fixed "textpadding" attribute reading for QuiX fields.
FIX: Fixed "onchange" event firing for spin buttons.
FIX: Fixed width and height calculations when maximizing a window.
     This was a problem when the window was maximized from an "onload"
     handler.
FIX: Fixed date selection when using the months' dropdown or the years'spin
     button of a date picker control.
FIX: Fixed error when having defined the "bgcolor" attribute of a GroupBox.
FIX: Fixed rendering of zeros in a list view (contributed by thugree).
FIX: Fixed ID assignment for QuiX buttons.
FIX: Fixed OQL Query performer tree results display by adding required
     redraws.
FIX: Assigned policies display correctly on the users' and groups' property
     forms.

DEP: Removed servlets' "runAsSystem" method. Use the "runas" decorator
     instead.

-------------
Version 0.0.9
-------------
NEW: Object cache with configurable size.
NEW: New XULSimpleTemplateServlet class using the simple string.Template
     class for simpler more readable QuiX templates.
NEW: Policy methods can now be declared with decorators using
     "@policymethod(policyid)".
NEW: New multilingual post processing filter used for easy output
     internationalization.

OPT: Optimized QuiX's performance by minimizing the number of
     redraws performed when rendering a new UI.
OPT: Post processing filters are now declared as child nodes inside
     the configuration files.
OPT: Post processing filters can accept named arguments deriving
     from the filter's node attributes.
OPT: After sucessful login, the page reloads in order to support
     themes.
OPT: On the server side, the faster built in C sets are used.
OPT: Ability to define the active tab of a tab pane.
OPT: All of the QuiX functions are moved inside compat.js and made
     portable.
OPT: XMLHttp object is created using a portable function.
OPT: Added improved support for each widget's minimum width and
     height whose values are assigned inside the Widget constructor.
     Accepted values can be integers or functions.
OPT: Optimized render time for QuiX box layout widget.
OPT: "-1" for a box layout widget width/height resizes the current
     widget to the maximum size of the minimum widths/heights of
     box children.
OPT: Added transparent image to QuiX outlines. This way the background
     widgets do not raise event while dragging.
OPT: The "generic.showObjectProperties" JavaScript function was
     simplified.

FIX: Distinguish between the "checked" and "value" attributes of
     a checked group box.
FIX: Added protection for negative column widths in a list view.
FIX: Fixed the behavior and appearance of an initialy disabled Combo.
FIX: When hitting the refresh button of window that displays a folder's
     contents the history is not updated.
FIX: The splitter does not include resizing handles if spacing its is
     set to 0.
FIX: Fixed tree nodes offset for Internet Explorer 7.
FIX: Hiding a Frame widget now works properly for Internet Explorer 7.
FIX: Fixed boolean image replication when editing a data grid.
FIX: Added no-cache directive to the rename dialog and the "Rename"
     button is made the default one.
FIX: Fixed the deleted item's restoration from its properties dialog.

DEP: Non-interactive splitters are no longer allowed. Use the Box
     widget instead.

-------------
Version 0.0.8
-------------
NEW: QuiX is now IE7 compatible.
NEW: New desktop utility named "HyperSearch", used for searching the Porcupine
     database.
NEW: New IFrame QuiX widget.
NEW: Box children can be right or bottom aligned for vertical and horizontal
     boxes respectively.
NEW: New GroupBox QuiX widget.
NEW: New method "getIcon" for the Window widget.
NEW: Added support for QuiX ListView columns of functional type.
NEW: ListView columns accept widths expressed as percentages.
NEW: Added ability to create a ListView with hidden header.
NEW: Added the media type (text/xml) for quix static files.
NEW: Added background image to QuiX desktop.
NEW: The event subsystem of the QuiX base Widget is completely rewritten
     from scratch. Added global support of "attachEvent" and "detachEvent",
     even for "custom" events such as "onselect", "onexpand" etc.
NEW: New "buttonIndex" property added to QuiX Dialogs. This property contains
     the index of the dialog button that was last pressed.

OPT: Removed the "schemas", "pubdir" and "resources" folders. Each resource
     now can be freely placed inside any directory. This way, it is now
     possible to have one folder per Porcupine application, simplifying
     the development process.
OPT: Simplified the application object. Instead of having the UI
     and the script embedded within the objects, an external "launchUrl"
     is used for launching the application.
OPT: The "getItem" and "getItems" methods of "Relator1" and "RelatatorN"
     datatypes no longer raise an DBItemNotFound excpetion if the
     referenced object is deleted. "None" is returned instead.
OPT: Added support for synchrounous QuiX XMLRPC calls.
OPT: XMLRPC requests are multi-shot.
OPT: Removed the "isHidden" property from the QuiX base Widget class.
     Use the "isHidden()" method instead.
OPT: Hidden widgets contained inside boxes are excluded from
     calculations.
OPT: Changed the extension of QuiX files from ".xul" to ".quix".
OPT: Boxes can have their overflow attribute set.
OPT: Box children offsets are calculated faster.
OPT: Disabled selection on disabled ListViews.
OPT: Remove editing widget upon disabling a DataGrid.
OPT: Optimized QuiX's XMLRPC array and member serialization.
OPT: The "setExpiration" Response method apart from setting the
     "Cache-Control" header it also sets the "Expires" header.

FIX: Fixed QuiX dataSet sorting by attributes that contain undefined
     values.
FIX: Enabling or disabling a widget twice, without restoring its
     previous state, does not restore its color properly.
FIX: Fixed on-off Splitter button positioning when contained
     inside a pane with padding other than 0,0,0,0.
FIX: When enabling or disabling a Combo the onclick handler set on the
     INPUT element is attached/detached accordingly.

-------------
Version 0.0.7
-------------
NEW: Added WSGI support.
NEW: Each user can select an application to be launched automatically
     immediately after successfull login (requested by Jonny).
NEW: New box layout widget (contributed by Stanislav Ievlev).
NEW: Added the "max-age" attribute to Porcupine's registrations, for
     having control over caching of the static files.
NEW: Added support for cookies to the Response and Request
     objects.
NEW: Added new "window.onclose" event to QuiX windows.
NEW: Added new methods to Window widget: "addControlButton",
     "removeControlButton", "setIcon", "setResizable", "addStatusBar",
     "removeStatusBar" and "getStatus".
NEW: Added new method to Dialog widget: "setButtonsAlign".

OPT: Unified XMLRPC QuiX module (contributed by Stanislav Ievlev).
OPT: Replaced non-interactive splitters with bax layout controls
     (more efficient).
OPT: The session ID is no longer injected in the URL, if the browser
     accepts cookies.
OPT: The browser window gets maximized automatically.
OPT: Most of the QuiX widgets are now fully editable at run-time (thanks
     to Quill). Optimized widgets include: window, tree, flat button, 
     tab pane, menu bar, splitter.
OPT: Assigning an invalid QuiX event handler is no longer blocking (no
     exception is thrown). Instead, null is returned. 

FIX: The "selected" attribute of an option in a select list was ignored.
FIX: The context menu displayed when you right-click on the desktop task bar
     is updated correctly (Hotfix 20060313).
FIX: The state of the menu options of the context menu inside the
     "User and Groups Management" application is updated as expected
     (Hotfix 20060313).

-------------
Version 0.0.6
-------------
NEW: New "db_init" utility, which initializes a blank Porcupine
     database.

OPT: The "stringresources.xml" resource file is discarded.
     String resources are held inside utf-8 encoded python script files.
OPT: Moved all system servlets, Python server pages and string resources
     inside the "resources/system" folder.
     Removed the "resources/servlets" and "resources/PSP" folders.
OPT: Extended the application object by adding a "resourcesImportPath" attribute.
     This is the full import path to a module variable of type
     "porcupine.config.resources.ResourceStrings" used for keeping the application's
     localized strings.
OPT: QuiX now supports off-line widgets. The "detach" method brings a widget
     offline. The detached widget can be attached at a later time by using
     the "appendChild" method
OPT: The QuiX base widget class has been gone under heavy refactoring:
        - Added new methods "setId" and "getId"
        - Added new method named "detach"
        - QuiX widgets no longer have a "borderWidth" attribute.
          Use "setBorderWidth" and "getBorderWidth" instead.
        - Removed the "style" attribute
        - QuiX widgets no longer have a "bgColor" attribute.
          Use "setBgColor" and "getBgColor" instead.
        - QuiX widgets no longer have an "overflow" attribute.
          Use "setOverflow" and "getOverflow" instead.
        - QuiX widgets no longer have a "padding" attribute.
          Use "setPadding" and "getPadding" instead.
        - Removed the "isAbs" attribute
        - QuiX widgets no longer have a "display" attribute.
          Use "setDisplay" and "getDisplay" instead.
        - Added "setPosition" and "getPosition" methods
        - Removed the "repad" method from the QuiX Widget class
        - New method "addPaddingOffset"
        - Changed the "redraw" method in a way that can be overidden
OPT: QuiX now supports offline widgets. The "detach" method brings a widget
     offline. This widget can be attached at a later time by using
     the "appendChild" method.
OPT: Six QuiX modules have been optimized using offline widgets
     (buttons, datepicker, formfields, formfields2, menus, toolbars)
OPT: Added two new methods to the QuiX Combo widget class ("reset" and
     "selectOption")
OPT: Added two new methods to the QuiX SelectList widget class ("selectOption"
     and "deSelectOption")
OPT: QuiX Combo dropdown widgets accept an initial width. If no width is given,
     then the dropdown width is automatically adjusted to the width of the
     combo.
OPT: Removed unused classes and CSS attributes from "quix.css"
OPT: In IE, QuiX preloaded images are not removed from the document. They remain on
     the document with their "display" CSS attribute set to "none".
OPT: Icons with left or right aligned images are vertically centered
OPT: The button widget became lighter. Using two DIVs instead of three.
OPT: QuiX labels no longer have a "caption" attribute.
     Use "getCaption" and "setCaption" methods instead.
OPT: QuiX icons' "changeImage" method is renamed to "setImageURL"
OPT: Added "setCaption" and "getCaption" methods to QuiX buttons
OPT: QuiX checkboxes and radio buttons support captions.
OPT: The Datepicker control is faster (it is using fragments).


FIX: Fixed the seconds formatting ('ss') inside the "format" method of the
     JavaScript Date object.
FIX: The published directories are removed when removing a package with
     the pakager.
FIX: Fixed bug inside the Berkeley db maintenance thread. The deadlock detector
     could not subtract the number of aborted transactions from the total number
     of ongoing transactions.
FIX: Fixed duplicate session in the URL, when hitting "porcupine.py", on Apache 1.3.
FIX: Eliminated errors reported by invalid CSS attribute assignments on Mozilla 1.8.
FIX: Fixed bug that caused the image preloading procedure to freeze on the
     latest Mozilla builds (1.8).
FIX: Script errors generated by negative sizes to QuiX input fields.
FIX: Fixed "getLeft" and "getTop" widget methods and use them while dragging a widget.
     Negative "x" and "y" widget coordinates are allowed.
FIX: Fixed the object permanent deletion when this resides inside the recycle
     bin.
FIX: Fixed the image URL on the recycle bin "Delete" confirmation message box.
FIX: Fixed bad "toXMLRPC" event handler assignment attempt caused by the protected
     "_attachEvents" QuiX Widget method.

-------------
Version 0.0.5
-------------
NEW: QuiX timers
NEW: QuiX radio buttons
NEW: Task bar context menu
NEW: Clock displayed on the right of the task bar
NEW: User is able to choose the task bar position (settings dialog)
NEW: User object now has a "settings" attribute for storing user preferences
NEW: Added Python version to porcupineserver.py output
NEW: "instanceof" OQL function
NEW: "Dictionary" data type
NEW: New module named "configfiles" in the administration package.
     It is used for the managing the Porcupine configuration files at runtime.
     It also contains a function for merging configuration files.

OPT: Did some code cleanup on the "pakager" and added some minor optimizations
OPT: No caching to user and group property dialogs

FIX: Fixed QuiX bug on IE that causes one of the two interfaces loading
     simultaneously not to load (the "onload" event of the images
     was not fired)

-------------
Version 0.0.4
-------------
OPT: Removed the limitation that requires the data type class name and the Porcupine
     object attribute to be identical.
OPT: ItemNotFound exception displays info about the missing resource.
OPT: The "pakager" utility is update ready.

FIX: Fixed image positioning of QuiX menu options of type "check" or "radio".
FIX: Added "formfields.js" to QuiX data grid dependencies.
FIX: QuiX flat buttons of type menu, if not inside a toolbar, are now displayed.
FIX: Added "menu_check.gif" missing image.
FIX: Fixed "Add" and "Remove" buttons on user and group forms.
FIX: It is now possible to assign "onclick" event handlers to the options of select
     lists.
FIX: QuiX Images with an empty "src" attribute are not loaded.
FIX: Reference1 attributes are displayed in the OQL Query Performer.
FIX: The "pakager" utility when uninstalling a package, removes published directories.

-------------
Version 0.0.3
-------------
OPT: QuiX interface images are treated as script modules. They are preloaded and
     displayed inside the preload progress widget.
OPT: "webApps" directory is renamed to "pubdir". The old name was misleading.
     This directoty actually contains published directories.
OPT: All scripts, QuiX modules, images and stylesheets are moved inside Porcupine,
     under the "pubdir" directory. This completely separates the connectors files
     from the server files, so that if adding a new QuiX module does not require
     a new release of the web connectors.

FIX: QuiX multiple file upload progress bar is displayed behind the active window
FIX: Pakager temporary files cleanup when creating a package
FIX: QuiX CSS font sizes, in order to have the same look under Windows and
     Linux

-------------
Version 0.0.2
-------------
NEW: OQL subqueries
NEW: QuiX List View now has global default date format
     and default text displayed for "undefined" values
NEW: XML-RPC lib now serializes object sets and Porcupine objects
NEW: File control supports saving text files locally

OPT: QuiX modules are loaded asynchronously, allowing debugging
OPT: QuiX progress bar widget appears while loading interfaces
OPT: QuiX synchronous image preloading (Patch 0.0.1-20050619)

FIX: Enabling and disabling tree nodes
FIX: Line numbers of JavaScript errors inside QuiX modules are
     now reported correctly
FIX: OQL Performer save query
FIX: Users and Groups Management "Delete" menu option
FIX: Desktop back button
FIX: Login after logout now works
FIX: Fixed OQL division
FIX: Enabling and disabling a widget causes the browser to
     request the URL "http://SERVER_NAME/porcupine.py/undefined"
     (Patch 0.0.1-20050619)

-------------
Version 0.0.1
-------------
Initial release
Page last modified on December 01, 2008, at 01:20 PM