December 5th, 2008· 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 display Name witha pre-existing item the exception raised contains the name of thecontainer 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.
· uture releases will use shared cache allowing multi processaccess.
· 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.
June 26th, 2008· Ability to define image dimensions explicitily for Icon and TreeNode widgets using the "imgwidth" and "imgheight" attributes. Accepted values are integers or percentages.
· Added "onmousedown" to the list of supported QuiX events.
· Added "focus" method to Field widgets.
· Added "maxlength" and "textalign" attributes to fields.
· Added "getFile" method to the internal file data type.
· Support for pre-processing filters.
· 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.
· Added new "QuiX.getTargetWidget" function.
· New "QuiX.getOS" function.
· QuiX context menus now have a new "target" attribute which contains the target widget.
· Added new "getWidgetsByAttributeValue" method applying to all widgets.
· POQL now has two new functions "upper" and "lower". Useful when performing case-insensitive searches on string attributes.
· QuiX now has a universal mouse button detection method (QuiX.getMouseButton)
· Added "deletePermanent" remote method applying to all content classes.
· ListView widgets now have a "select" method that selects items by index.
· New "rowheight" parameter for ListView widgets.
· Ability to specify which splitter pane collapses by using the "_collapse" custom attribute.
· New "editundef" attribute for data grids. If set to "false" then the dataset's undefined values are not editable.
· New "List" data type.
· New "onclose" custom event for ContextMenu widgets.
· Service oriented architecture. Currently, the supported services include an asynchronous network server and a scheduler used for executing Python code at fixed intervals.
· Data types are now type safe.
· The porcupine database singleton is now accessible from everywhere by using "from porcupine import db".
· The main Porcupine configuration file is now a Python dict.
· The "config.xml" configuration files can now contain smart registrations with regular expressions matching providing with a powerful rewriting engine.
· QuiX is now using a pooled set of XmlHttp objects for better resource usage on the client side.
· Enhanced detection method for droppables.
· Using the standard "mimetypes" Python module for guessing the response's content types.
· Changed the default mode of the "getFile" method of the external files datatypes to 'rb'.
· Session objects are now using __slots__ for more efficient memory usage.
· Added the required hooks that allow the integration of other popular Python template engines easily.
· 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).
· The Porcupine exceptions module has been greatly simplified. The error codes have become equivalent to those of the HTTP protocol.
· Object sets have become far more memory efficient.
· The date locales are transfered inside the "porcupine.utils.date" module.
· 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.
· Allow more than one non-nested transactions per request.
· Fixed scroll bars bleed through on MacOS Firefox.
· QuiX FlowBox now supports multiple selection by using "multiple=true".
· Allow alternate row colors for ListView widgets by using the "altcolors" attribute. Ability to define highlight colors by using the "hightlightcolors" attribute.
· Added the missing email field on the user's form.
· Ability to define accepted file types for each QuiX file control by using the "filetypes" attribute.
· File controls now have an "oncomplete" event which is fired when upload is finished.
· Removed limitation that required file controls to be placed inside a QuiX window.
· New "reset" method for MultiFile widgets.
· The main widget for all QuiX Window is now a vertical Box in order to support themes in a simpler way.
· Enhanced resolution of QuiX modules' dependencies.
· The object cache returns deep copies of objects, so that each request is accessing its own copies.
· Optimized the "Composition" data type now accepts subclasses of the designated type.
· TabPane's "activateTab" now accepts both an integer or a tab widget as argument.
· Optimized wrapped tooltips.
· Automatically generated forms now support date data types.
· Optimized the "create" and "update" remote methods handle integer data types.
· Optimized the remote method "update" handles date data types.
· The XML-RPC module now encodes unicode keys of dict types using the appropriate encoding.
· Fixed the "Content-Disposition" header when the filename contains spaces.
· Fixed the "getCaption" method of QuiX Labels when these contain special characters such as &,.
· Fixed removing the active editing widget when refreshing a data grid.
· Fixed the "getImageURL" and "setImageURL" methods for icons that do not have initially an image set.
· Fixed error when packaging directories with unicode paths using the pakager utility.
· Fixed row dragging of list views on IE.
· Added missing "__slots__" class attribure to ExternalFile data type and PersonalFolder content class.
· Tree widget's "getSelection" now returns null if no tree node is selected.
· Fixed list view's header placement when padding top is other than 0.
· Fixed the orphaned context menus.
· Fixed length distribution after removing a child of a Box.
· Fixed The boxes which now display correctly if the first child is hidden.
· Fixed filenames for duplicated external files when cloning an object.
· Fixed date formatting when using the "yy" parameter on the server side.
· Fixed the "iconpadding" parameter for QuiX buttons.
· Fixed possible transaction deadlock when moving or copying multiple items.
· Fixed selection of "Reference1" data types with POQL.
· Fixed the server side XML-RPC module serializes composites.
· Fixed content classes' event handlers are called before datatype event handlers to reflect any possible data type updates.
· Fixed do not update the object cache if a transaction handle is given on read operations.
· Fixed the "onchange" event for date pickers is now fired.
September 17th, 2007· 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.
· 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 initially 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.
· QuiX forms no longer have an "elements" array attribute. Use the "getElements" method instead.
· QuiX "getEventListener" function is now referenced as "QuiX.getEventListener".