********************************************************************************** Application notes ********************************************************************************** 1.0.13 03/11/2012 - set home page (introducion to navigation into catalogue) - remove fast search from 'IndexLayout' - add new filter field "keywords" and added modifier extension (MF - FU) - modified render for filters (id 'sf-tsk' and 'sf-usv') now rendered as combo - modified textual description for section 'tree' (changed in 'Indice') - modified textual description for section 'history selection' (changed in 'Ricerche') - modified textual description for crumb 'Ricerca' (changed in 'Maschera di ricerca') - modified textual description for crumb 'Titoli' (changed in 'Risultati') - modified database structure to render REL and REV (global chronological rifs) to avoid more accurancy and correct order - modified document rendering (now showing global chronological rifs) - deactivate link ti system pdf in case of 'UdType' == 'PG' 1.0.12 23/10/2012 - fixing label "Comdizione" into "Condizione" - fixing TitleRow.class when record has no image linked - set id attribute on th and headers attribute on td 1.0.11 16/10/2012 - fixing url composition to referenced site link - fixing pagenavigation counter info when navigate from A to PG and from PG to A 1.0.10 16/10/2012 - populating help 1.0.9 15/10/2012 - modified my.runtime.js execNodeAction function to send query to titles service instead just execute node call - added rel attribute in TreeNode.xsl (its used for base64 encoded node query) 1.0.8 12/10/2012 - override SelTree.class and seltree.xsl (to complete); - override SortableSearchFormContent.pxml (to complete) - add graphic render for PCCP (provincia) in titles modied files: TitleRow.class titlesAndDoc.pxml my.css Stemma-XX.png (where XX could be "BL", "GO", "PD", "PN", "RO", "TS", "TV", "UD", "VE", "VI", "VR") 1.0.7 10/10/2012 - override PageNavigator.class to avoid best discrimination while render Titles Page and Document Page; modied files: titles_order.config.inc PageNavigator.class.php titlesAndDoc.pxml default.properties (EN and IT) 1.0.6 09/10/2012 - modified title header to avoid multiple row disposition; - modified title composition in according to new header: - modified tree controls; - modified document view (document.xsl) - draft tree help content; modied files: titles_order.config.inc my.css tree.css access-no-small.png access-yes-small.png closedArrowFolder.png openedArrowFolder.png 1.0.5 05/10/2012 - added new lookup def: indexDefaultLimited with both patterns ' §^§' due to filter double indexed values - integration list of fields interested to "filter double indexed values" ("MyFilterObject.class.php") - label correction in "document.xsl" (changed "Provincialele" in "Provinciale") 1.0.4 03/10/2012 - resizers adjust - implementation of specific element container ("span") with specific class ("bap-a", "bap-pg", "access_yes", "access_no") in TitleRow.class.php modied files: TitleRow.class.php my.css access-no.gif access-yes.gif bap-a.png bap-pg.png my.runtime.js help.pxml document.xsl TreeNode.xsl 1.0.3 02/10/2012 - set specific class for colums 1, 4 and 7 (for element td) inside TitleRow.class.php and declarate my.css in according (style for ".TitlesCell_document_variant_center") - set style (max-width:100px;max-height:100px) for "img" inside TitleRow.class.php and changed corrispondent thead label in tiles_order_config.inc - adjusted height of Storico box - uniformed image gallery from titles and document - added help system pahes in ui.component.help package modified my.runtime.js in order to handle different help popups for main center content this is done by capturing onAjaxContentLoaded event, and setting internal variable with it, then when help call is in arrive, we use saved ajax content type to distinguish help type. modied files: help.config.inc popup.config.inc app.config.inc (added new help service) MainHelp.class.php TreeHelp.clas.php my.runtime.js help.pxml layout.pxml (changed actions on help butons) - configuration integration for supporting help content casistits ('SELECTONHISTORY', 'FASTSEARCHFORM', 'SEARCHFORM', 'TITLESFORM', 'DOCUMENTVIEWFORM') modied files: help.config.inc DocumentViewFormHelp.class.php FastSearchFormHelp.class.php SearchFormHelp.class.php SelectionHistoryHelp.class.php TitlesFormHelp.class.php my.runtime.js help.pxml layout.pxml (changed actions on help butons) - modify call to related document in document.xsl ('Pxml.xw.loadDocumentQuery' changed in 'Pxml.xw.loadDocumentQueryNoSel') 1.0.2 01/10/2012 - some experiment with header h2 in "document.xsl" - creating "emula_fieldset_ricerca" in "my.css" to avoid conflict between "MySearchFormFields.pxml" and "document.xsl"; - overload some style; - changed some resource in properties file; - added resizer into rs/tmpl/layout.pxml - changed header height - added glyph button help for widget title - added glyph button lookup for search form - added icons to widget title for opening help popup option 1.0.1 27/09/2012 - created Irvv principal services, due to necesity to change PageNavigator layout position - modified app.config.inc in order to use new services overload - added fast search form - fixed developers configs - removed fieldlayot skin forms.config.inc - renamed css styles about left side boxes (widgets) inside layout.pxml, index.css, my-runtime.js - changed favicon.ico - modified .w_prev16_glyph:hover style - modified style of document / titles navigation - configure filter, skins, and order rules 1.0.0 07/09/2012 - created ********************************************************************************** C O R E notes ********************************************************************************** --- Remember to change the pxml.php file when a new version in released --- TO-DO: 1: Imaging, and galleries revision 2: New XW trees handling revision 3: Widget containers and layouts 4: Customised docway lookup source 5: File upload 3.7.35 04/12/2012 - ADD: new posibility to configure clickability of current crumb link this is done by config param in history.config.inc crumbs.allowCurrentCrumbActive = {true|false} 3.7.34 03/12/2012 - ADD: possibility to overload crumbs text render for Titles and SearchForm services adding method: getCrumbText($title) - ADD: media upload handlers classes and scripts pxmlMediaUploadGate.php xw/lib/ui/component/edit/MediaRenderer.class.php - ADD: xml schema file for media upload collection grid xw/rs/model/schema_media.xml - ADD: added new javascript uploadMedia event pxml.edit.js - ADD: added MediaRenderer template xmlEditing.pxml - MOD: i18 labels for media handlers 3.7.33 27/11/2012 - FIX: setlocale on NIX not function so we have to check manually if locale change was done and if not set then we fallback in fixed array with EU settings for money 3.7.32 26/11/2012 - FIX: add type bool to XmlField.class.php - ADD: id for Edit forms groups, so we can handle them in JS 3.7.31 24/11/2012 - MOD: continue on standardisation of upload file, upload form template moved from xwdoc to xw added some nicer form, and modified gate, to accept attachments also for non docway documents - ADD: jquery 1.8.3, ui.jquery 1.9.2 - ADD: prototype 1.7.1 - ADD: new method in Xml addMissingNodesForSimpleXPath, it will add simple xPath to the xml (making missing nodes) - DEV: continue devel on BPM module - MOD: some minor adds in History types 3.7.30 23/11/2012 - FIX: xw.gallery.js missing open/close function - MOD: crumbs can have more sets of initial text - ADD: page can set current set nof, if it is configured in pages.config.inc like 'fApp' - FIX: also when updating a record can arrive less field values (because null or empty) fo a certain entity than other instances of same entity in the same set of form data posted, so SqlDatabase->saveEntity was fixed 3.7.29 22/11/2012 - ADD: new function in XwResponse getXwUnit - FIX: SqlDatabase->deleteChilds() routines bugs fixed 3.7.28 21/11/2012 - ADD: BpmToDOWidget - handle todo tasks for current user - ADD: XwStoredProcResponse.class.php for stored procedure multiple response handling - ADD: EE_LUA_ERROR constant - ADD: root param - FIX: xml deescaping problem - ADD: delegated versions of functions for start, finish, and setTask variables - ADD: BPM_ADMIN layout 3.7.27 20/11/2012 - ADD: BOS Bonita Bpm integration module: lib/bpm config: bos/db.config.php serializable.config.inc HistoryRecord.class.php - ADD: xw.gallery.js - for gallery of attachments handling xw-lib.xsl - call to new js lib xwDocFileUploadGate.php - FIX: relations handling in SqlDatabase->saveEntity() - FIX: corrected SqlDatabase->saveEntity() in case no fields of entity were passed but just want to update entity table (created or modified). - ADD: added possibility to handle multiple relations of same records in SqlDatabase - ADD: added hook XmlDocumentEditActionBase::ED_ACT_JUST_AFTER_SAVE_PART in XmlAutoEditService 3.7.26 15/11/2012 - FIX: fixed all presences of hardcoded 'centerHolder' use OrderByCommander.class.php PageNavigator.class.php CustomOrderByPopup.class.php SelTree.class.php ColumnHeaderOrderable.class.php ColumnHeaderOrdered.class.php TitlesTableHeader.class.php xw.runtime.js xwdoc.runtime.js MultiDbLinks.xsl titlesAndDoc.pxml seltree.xsl TitleItemsContent.class.php - ADD: Acl handling at Sql User management UserSourceSql.class.php - FIX: isOpen was private in SqlDatabase.class.php - ADD: new hook at XmlAutoEdit service AfterAddPart, will be called just after ne pard were added into collection - ADD: IAcl.interface.php interface for all future Acl handlers 3.7.25 13/11/2012 - FIX: fixed missing namespace in config bind in Mail.class.php 3.7.24 10/11/2012 - ADD: CurrencyFormatter.class.php - it will format Db 2 UI US normalized number form to EU normalized form UI 2 DB will remove '.' and then replace ',' with '.' - FIX: of CurrencyValidator RegExp it was considering 1000.000,00 like valid!! in fron should be couples of numbers now its not possible, it validate currency for EU_IT normalized form - ADD: added method isHTML() to Mail.class.php. It is simply a wrapper of PHPMailer->isHTML() method - FIX: removed '\r\n' argument from trim call in Xml->getNodeValueConsideringMixedElements() because it caused 'r' (and perhaps 'n') char at the end of text to be erased from returned text. 3.7.23 08/11/2012 - FIX: problem in search form service, it was not considering forceFormAction options param which could arive from crumbs link 3.7.22 07/11/2012 - ADD: Courency formatting, we need format any numeric form (US or EU) in EU so we have first decide if it is already in EU or not and then we have to apply US to EU formatting done in functions: money_format_ext money_format in DataFmt.class.php 3.7.21 26/10/2012 - FIX: AtLeastOneFieldValidator return message from validate() must not use _L function for field labels because they are already translated - ADD: added dialect property in SqlDatabase - ADD: added SqlDatabase->quote() method to quote field and table names - MOD: added identifying relationship concept in document childs deletion. If a relation is 'identifying' when deleted entoty is also deleted and not only the relation. For 1-n, 1-1 relations fk is set to null (fk must be nullable). In m-n relations only row in relational table is deleted, not the entity. - ADD: UserProfileSourceSql.class.php UserSourceSql.class.php This two classes handle user acl persistance in MySql (ar any Sql db) we had to make bunch of fixes to put all together, her eis list of modified files: UserProfileSourceACL.class.php - changed getProfile method params User.class.php - changed and fixed user rights mapping and filtering SUserSourceFactory.class.php - added new source type SUserProfileSourceFactory.class.php - added new profile source file IUserProfileSource.interface.php - getProfile method param type changed serializable.config.inc - adde serializable MultiLoginWarning.class.php - fixed url for redirect SApplication.class.php - fixes done - ADD: method SqlDatabase->execDmlStatement() for execution of insert,update,delete queries wich don't return resultests but only affected rows. - FIX: imported ASqlSelection class in SqlDatabase. ASqlSeelction could be istantiated as is in some cases and not just be returned after query execution, to have an empty initial ASqlSelection object. - ADD: added possibility to configure charset and content-type of an email (mail.config.inc) in Mail.class.php - ADD: added Optimistic Concurrency support in SqlDatabase.class.php. If a node has last-modified attribute SqlDatabae->saveEntity() compare it with modified column from entity table, directly when permor update of the entity. If affected rows are 0 then it means that entity user is trying to update has already been updated by someone else in the meantime. To do this 'created' and 'modified' columns were added to entity table. 3.7.20 25/10/2012 - FIX: adFileUploadGate.php -> in xwDocFileUploadGate.php this pull changes in : xwdoc.runtime.js - added new functions in XwDoc.Client uploadDone, uploadAttach xwdoc-lib.xsl - added new common template: xwdoc.uploadFileForm with param id (idIUnit of document/folder) - MOD: changed skincollors of search form actions - ADD: internal variable fFormAction of XmlAutoEditFormContent.class.php for possibility to distinguish what we are doing in render time of content - FIX: in forlderTree management refactored §1§ in $1$ 3.7.19 24/10/2012 - MOD: SqlDatabase->getGuid() now have to use specific database dialect funztion to generate UID. Default is MySql UUID() - FIX: implemented method deleteDocument in SqlDatabase class - FIX: fixed some comments in SqlDatabase class - FIX: null $db parameter is now handled in ASqlSelection - FIX: deleted a debug check in SqlSelections - FIX: null $sqlSelection parameter is now handled in SqlXmlResponse - FIX: catched EmptyResultWarning exception in SqlQueryLookupSource->exec() - MOD: object validation system revisited, now each object validator vill generate message for him self and SFormFieldfactory will render it in its object form container - we review also fields group requiring (we can mark gorup of fields with the same require group label) then there is AtLeastOneFieldValidator.class.php validator, it will chek presence of at least one value. modified files: DataField.class.php - FIX: it must skip IObjectValidators in validation IDataValidator.interface.it - FIX: static method for validator creatin must strip string separation from parameters array AtLeastOneFieldValidator.class.php - ADD: new validator, this validator must be added on XmlObject and it will hangle validation groups (labelled in required attribute with the same label) - FIX: form edit content must draw object error message SFormFieldFactory.class.php XmlModel.class.php XmlObject.class.php SXmlFormFieldFactory.class.php xmlEditing.pxml - ADD: xsl internalisation: there is posibility render internalised strings directly from xsl, internalised label(key) will have to be set in xsl like this: xsl nee dnew xmlns too: example: ... ... 3.7.18 23/10/2012 - MOD: modificata pagina di login.pxml in lib/commons/rs/tmpl con file login.css in lib/commons/rs/css - ADD: added images for login and logout page bgrLogin.png and bgrLogout.png in lib/commons/rs/css/img 3.7.17 22/10/2012 - MOD: added protected method doHistory into SearchFormService so we can overload it - ADD: xwdoc desktop new icons 3.7.16 18/10/2012 - ADD: 2 new glyphs 23x23 home23_glyph and userpanellight23_glyph - ADD: new serializabled classes - MOD: db.xw.XwSelectionsHistroy refactored into db.SelectionHistory - FIX: missing warning code EmptyresultWarning - FIX: fixed debug notice while xPath query returns empty nodes in core.xml.Xml - ADD: new optional core module sql containing all wrappers for Sql RDBMS communication - ADD: new generalisation interfaces a: IDatabase.interface.php -> XwDatabase -> SqlDatabase b: IResponse.interface.php - XwResponse - SqlResponse c: ISelection.interface.php - ASqlSelection - XwSelection - ADD: IFilterObject.interface -> db.xw.filter.FilterObject -> db.sql.filter.SqlFilterObject - ADD: sql syntax dialect management and diferences handling dialect must be specified in db.config.inc like this prior of connection class .... 'dialect' => SXwDatabaseFactory::DB_SYNTAX_DIALECT_MYSQL, 'class' => 'db.sql.EcmAnagraficaDatabase', ... possible values see in : SXwDatabaseFactory - FIX: comment in UIComponent - ADD: RegexValidator.class.php - FIX: empty value cant be consider non valid EmailValidator - FIX: xpath namespace handling Attachment.class.php 3.7.15 16/10/2012 - FIX: DocumentViewContent constructor now can receive $pager also like NULL 3.7.14 15/10/2012 - MOD: modified fData handling of TitlesService in case fCmd == 'search' it can transfer base64 encoded query in this case string must start with 'B64' - MOD: XwTreeService added base64 encoding for query in front of xsl transformation 3.7.13 08/10/2012 - FIX: https / http handling there are 3 combinations A: app http, login http B: app https, login https C: app http, liogin https add new config value: 'livesite.forceHttpsOverride' => false, //if true force https in all generated links even if request was http 3.7.12 05/10/2012 - FIX: xml dumping from model in case of collection was not safe against loose of original nodes not presented in schema - FIX: of eroneous use of DOMNode->nodeValue, folowing W3C spec NodeValue is not suitable o for mixed XML content handling - ADD: First BPM workflow addings - ADD: filter option on SearchForm 'fSkipRefineFieldRender' which if set to true means that form will skip fSelectionID hidden status field - MOD: Function 'loadSearchFormCustom' in xw.runtime.js was modified with one new param options (any hash map of data) - MOD: changed filter field 'fulltext' in FilterObjectXwdoc.class.php 3.7.11 03/09/2012 - ADD: resize function to Pxml.Resizer in pxmlscu.js in order to hook to resize window event, it can be done by like this in layout.pxml $j(window).resize(function() { window.resizer.resize(); window.resizerLeft.resize(); }); 3.7.10 02/10/2012 - ADD: added class Skin_MarginTopBottom in skins.css - FIX: creation of one DB connection had possibility to send connection params override, this was done just for connection part of db configuration (host, port, etc..) now it can send also other config params. (old version is still suported too) - FIX: fixed encodinf of error page - ADD: help service system added help.config.inc f.e.: 'help.default' => 'MAIN', 'help.cfg' => array( 'MAIN' => array( 'contentCls'=> array('ui.component.help.MainHelp', array('info', 'help')), ), 'TREE' => array( 'contentCls'=> array('ui.component.help.TreeHelp', array('info', 'help')), ) ) this service load some PopupContent into popup, help execution action is done by js proxy action: $DA('loadHelp', {fHelpId:'< help content configuration ID>'}); modified files: HelppopupService.class.php pxml.runtime.js 3.7.9 01/10/2012 - FIX: margin/padding of Title text in popup and titleskins (skins.css) 3.7.8 27/09/2012 - MOD: DocumentViewContent will now accept pager UI like NULL - FIX: Search form was not handling correctly fpfx in any case (problem with Fast search form binding) - ADD: new search form loading custom method in xw.runtime.js (loadSearchFormCustom) - FIX: padding in Custom order popup (due to new skins) - FIX: removed attach column type from custom order by columns lists 3.7.7 26/09/2012 - ADD: Tree access can now be filtered due to an existing selection that reduces the "spectral analisys". Changes affect my.runtime.js (two new methods with filter parameter), XWTreeService.class.php and XWDatabase.class.php. PHP added parameters all have a null default so no impact is expected on existing code. - FIX: synchro problem in Zend persistor (there were no concurency handled) - ADD: new glyphs - FIX: some css in skins 3.7.6 23/09/2012 - FIX: problem with character cut curmb.class.php 3.7.5 20/09/2012 - ADD: Added a new command to the execute() method of DocumentViewService class that allows to load the first document of a query without taking care about the query itself and with no impact on selection Tree. Added also a corresponding Pxml.xw.loadDocumentQueryNoSel() javascript method to call that execute() option. 3.7.4 12/09/2012 - MOD: skins css and templates was updated to new css version instead of images versions so we have new possibilities to configure skins in the future 3.7.3 07/09/2012 - MOD: changed folder tree handling in XwDocWayDatabase.class.php, added new parameter to all folder tree functions (there were done changes to WS too): $maxNumDocuments - -1 => ALL; 0 => nothing; n => limited to N for this fact we changed more files: folderTree.xsl (m) folderTree.runtime.js (m) altro.png (a) folderTree.css (m) FolderTreeService.class.php (m) XwDocWayDatabase.class.php (m) - MOD: there were add transaltion of fixed config lookup values, this is not all time wanted, so we add configuration parameter to the lookup so you can turn off lookup label translation attribute in fixed lookup values config file 'lookup.disableLabelTranslation' => true 3.7.2 05/09/2012 - FIX: problem with translation of labels in AConfigLookupSource. case of labels with &# escape sequences there is conflict with label path mapping, so we have to disable translation using configuration value lookup.disableLabelTranslation = true; 3.7.1 04/09/2012 - INCOMPATIBLE: removed closing PHP '?>' from end of files ATTENTION!!!! there is prohibited use trailing '?>' in *.inc and *.php files!! it can cause empty spaces inside responses where it is not requested we removed temporary bufering during include due to performance boost [0,002 sec/medium simple php]. Compatibility walktrough: use eclipse for replace all trailing '?>' with empty string use regular expression search: '(?-m)\s*\?>\s*$' on *.inc and *.php files - MOD: added new param $strict to getXmlObjectById of XmlModel.class.php, with default value true; it means that in case of failed lookup it will throw exception, if strict is false it will silently return null in case of fail 3.5.23 04/09/2012 - MOD: removed closing PHP '?>' from end of files 3.5.22 07/08/2012 - FIX: Calling the loadFirst() Web Service method doesn't use shared object extension if required. Uses Web Services 3.7.4 (07/08/2012 or higher) 3.5.21 03/08/2012 - FIX: XwIndexLookupSource & XwThesaurusLookupSource. Check if lookup parameters are set in passed array before setting them to internal parameter array. If not a default value (-1) is used. - ADD: Translation of the lables of fixed (custom) lookup values. 3.5.20 25/07/2012 - FIX: tiny MCE editor reseting in widget properties editing - FIX: some bugs in titles preview widget - FIX: element was not updated on right plac ein xml, it was inserted like last child of current parent now it corectly replace old element, bu it must exists, so it must be also in template - FIX: lookup popup title in case of index source there were not allowed chatr # 3.5.19 23/07/2012 - MOD: ldap search result formatting and query - ADD: core.template.SimpleStringTemplate class - ADD: function createElementLikeChild in Xml class - FIX: problem with auto inserts in collection and isNew flag - FIX: removed custom doc helpers 3.5.18 20/07/2012 - ADD: anyslider and jscrollpane jQuery plugins - MOD: titleswidget can choice between slided document preview or normal titles list - REM: save document from XwDocWayDatabase (it was overriding without sense) - FIX: bug with escaping of Html formated document parts 3.5.17 14/07/2012 - ADD: possibility to create widgets on application level - ADD: configurabilty of skin variant for Widget header adn background 3.5.16 09/07/2012 - ADD: Xml.class.php - setXslFile() - the method now handles in a special way XSL tags having "i18n" inside their "class" attribute, tags' content is automagically translated through the 'default.properties" bundle. - ADD: XwDateFormatter.class.php - now handles 15 chars date and time notation (20101207T151503 <-> 07/12/2010 15:15:03) - FIX: XmlObjectCollection.class.php - fixed bug which prevented i18n translation on tables' header for collections (XmlAutoEditService) - ADD: XmlAutoEditService.class.php - added "event" parameter to $options array in followUp calls - MOD: XmlAutoEditService.class.php - new handling for a 'cancel' event raised from the editing of a new record: if 'newCancelFollowUp' config properties is set to true, the service do nothing and just execute the followUp to the caller service (instead of calling explicitly the HistoryService via Javascript) - ADD: XmlDocumentHelper - added new method 'getForceFUpOnCancelNew' that retrieves value of the aforementioned 'newCancelFollowUp' configuration parameter - MOD: XwIndexLooupSource.class.php - exec() method - case of $where parameter empty is collapsed on the case of 'start' value 3.5.15 09/07/2012 - ADD: Introduced new set of functions in XwDatabase.class.php. Those functions allows you to call a plug in, in syncronous or asyncronous mode and wait for a valid result bey getting the asyncronous progress state. callPlugin() callPluginAsync() getSPluginProgress() - ADD: Introduced new set of functions in XwDatabase.class.php. Those functions allows you to call a stored procedure, in syncronous or asyncronous mode and wait for a valid result bey getting the asyncronous progress state. callStoredProcedure() callStoredProcedureAsync() getStoreProcedureProgress() 3.5.14 06/07/2012 - ADD: new widgets: htmlwidget - this widgets can have any html or any UI component as content - FIX: widget are under devel so we do progressive fixes during tests: desktopwidget titleswidget - FIX: language detection, we add header for each response in SApplication - ADD: ldap search results components - ADD: function on client side 'redirectWithPost : function(url, data)' ,so ja can skip to new page sending data in POST there is hidden form generation and its submit automated. - ADD: function on client side for dcument load, in selection done out of current set, so it will set new current set, and afterwards it will load document - ADD: home to other pages connection, we can fire some home action (action on some home widget) this will force application load, application will recognise parameters and it will load what is requested 1: widget fire event 2: current js will capture it and it will redirect to index 3: index layout will set current DB, choice desktop, and set what necessary into session 4: js will handle different ajax requests depending on source widget from home - FIX: there were hidden problem with Database handles creation, all config helpers were returning db connection ID and not real DB id (in case of existing current db) so we add specific method 'getDbConnectionID' for who need Connection ID of current but in 'getDbID' we return real handle ID of curent DB 3.5.13 29/06/2012 - MOD: Using the same FilterObject class within different search forms can cause a mix of fields coming from each form. In order to avoid this behavior, the SearchFormService.class.php has been changed so that the FilterObject class instance stored into the session is form specific (using the 'FP', that is the $this->_fFpfx element). 3.5.12 28/06/2012 - MOD: removed jQuery 1.7.1 use, IMPORTANT: CHANGE REFERENCE TO THIS VERSION OF JQUERY INSIDE app.config.inc!!! - ADD: new widgets: desktopwidget - docwaylike desktop component swidgetsourcewidget - listo of widgets usable in some containers widgetcontainerwidget - widget container for home page titleswidget - widget whih show some configurable count of titles preview - ADD: db.xw.model.XmlObjectBool like model class - FIX: added missed field attribute 'uiAddCss' attribute handling - ADD: added missing method 'renderHost' in IUISkin.interface.php - FIX: work on widgets (not specified fixes, we are stil in devel phase) - ADD: admin page and admin layout, this need config copy into application level pages.config.inc: 'ADMIN' => array( 'freeAccess'=> false, 'contentCls'=> array('ui.component.AdminLayout', array()), 'css' => array( array('name' => 'widget.css', 'ns' => '#widget', 'type' => 'css'), array('name' => 'admin.css', 'ns' => '#xw', 'type' => 'css') ), 'scr' => array( array('name' => 'pxml.edit.js', 'ns' => 'commons'), array('name' => 'pxml.widget.js', 'ns' => 'widget'), array('name' => 'admin.runtime.js', 'ns' => 'xw') ), 'cfg' => array( ) ), - ADD: new method in IConfig.interface.php 'getParamSet' -> this return list of attributes for selected path, useful in XML config in array config it return single value enclosd in array for compatibility. - ADD: jQuery masonry plugin (experimental) - FIX: problem with start drag of widget when clicking some action icon. We add class 'PXML_MouseEventsTrap' for js event trapping - ADD: SimpleCheckBox editing component - FIX: XmlObjectBool.class.php , there were problems with bind and dump in text in case of new - FIX: All helpers were working with db considering just one possible DB of certain connection configuration function getDbID of helper were returning in case of current db presence just connection config id not connection ID, so if there weremore connections of the same connection config, it were woking just with one. So we add new method in helper: getDbConnectionID which do 3.5.11 27/06/2012 - ADD: (rpierpaoli) Added new "filterChildrenByOpts" method to UIContainer.class.php. This new methods allows to extract a filtered array of children from the UIContainer. Filters are expressed as an associative array where keys are names of possible children options and values can be either simple strings (check if equal) or "preg" regular expressions (check if matches). A $logicOperator parameter can be passed to the method: values are LOGICAL_AND or LOGICAL_OR (class constants), telling whereas to put conditions together in OR or AND logic. 3.5.10 12/06/2012 - FIX: (czappavigna) Complete CodDescFormatter, CodDescrLookupSource and XmlCodDescrField - ADD: (czappavigna) Add maxlength attribute to SimpleTextInput if class LenghtValidator is used - ADD: added tinyMCE featured notes editor, it is possible to assigne like UI class for field in schema 'factory:TinyMceEditor' and it will render rich html editor for textfield content ther eis necessary then in xsl display it on this way (due to escaping): important is this: disable-output-escaping="yes" Important: add 'TinyMceEditor' => 'ui.component.form.TinyMceTextArea' in form.config.inc added client side javascript singleton 'Pxml.Edit.TinyMce' for handle tinyMCE editors - FIX: form fields prior this version were submited only if they were not empty strings, then during bind there were every time default value : '' this will not cause any problems if all fields of model are all present in form in live style or hidden, but if there is custom form which will render just some field from model, all non edited and non present fields will be emptied during bind, this is not correct behavior, so we changed it. We add new function to SApplication: getFormInputVar() without default value. So if there is no form field model field will catch this and it will not change its state. If there is empty value arrived from form, model field will empty its value too. This force changes in this classes: DataField.class.php FilterField.class.php XmlCodDescrField.class.php SApplication.class.php pxml.ajax.js - FIX: harvesting values on server side (FormFieldFactory) was looking for eventual model field from harvest rule only in current XmlObject, so we add possibility to check whole model, if not present in place. - ADD: add posibility to load arbitrary javascript file from javascript itself, added method in pxml.js function loadScript(scriptUrl, callBack), this function will call 'callBack' when script was loaded we use this for tinyMCE script loading so its called just when its necessary 3.5.9 08/06/2012 - FIX: (fcappelli) Missing check on backDiv element in object PopupMan in file pxml.js. Fixed. - FIX: (fcappelli) Updated old core version number in file pxml.php from 3.5.6 to 3.5.9. 3.5.8 08/06/2012 - ADD: (rtirabassi GWT001337) Changed the behaviour of the Crumb.class.php. Now, according to some configurations available in history.config.inc, the application can define the color the current Crumb will have and can also define the maximum length for the showned crumb. Even if the crumb text is cut, the 'alternate' on it will show the full title. This change also reset the default crumb color to #ff0000 that was wrongly changed. 3.5.7 08/06/2012 - FIX: (rtirabassi GWT001321) When calling the TitlesService.class.php with a 'caller' parameter, the 'fOrderById' and 'fOrdeByDir' were ignored. Fixed. 3.5.6 08/06/2012 - MOD: We can set multiple XmlEditing Hook actions in configuration for each model, full class names have to be separated by ',' , we changed this files to handle new situations: XmlAutoEditService.class.php XwDocumentHelper.class.php 3.5.5 07/06/2012 - FIX: FormFieldFactory connection with data in case of EditFormContent - ADD: method setLikeNotNew into XmlField , when some collection or some Xml part born in code and it is set by code, there will not be any bind so it will remain like new, and so it will not be domped in output so using this function we mak Xml part like not new - MOD: due to modifications on XwDocumentHelper.class.php from 3.3.27 we do not neew specified model helpers so we change models : XwDocPostItModel.class.php and XwDocRpaCcModel.class.php, in manner that they wil not trow exceptions if not overloaded with method gethelper. 3.5.4 06/06/2012 - ADD: we add dynamic update on html select options, so there is possible to make more depending combos in one form. F.e. One combo select cathegory and second depending one select subcathegory. for this we made changes in this files: - ADependingConfigLookupSource.class.php example of one depending lookup source this source use this configuration: 'lookup.dependingSets' => array( 'CATHEGORY' => array( 'DEFAULT' => array( '-1' => '...' ), 'DOCINTRANET' => array( '-1' => '...', 'aziendale' => 'Aziendale', 'documenti' => 'Documenti') ), 'SUBCATHEGORY' => array( 'DEFAULT' => array('-1' => '...'), 'aziendale' => array('-1' => '...', 'modulistica' => 'Modulistica', 'manuali' => 'Manuali e Guide', 'matcorsi' => 'Materiale corsi', 'siglario' => 'Standard Aziendali', 'convenzioni' => 'Convenzioni' ), 'documenti' => array('-1' => '...', 'procedure' => 'Procedure e Norme', 'comunicaz' => 'Comunicati', 'ordini' => 'Ordini di Servizio', 'personale' => 'Contratti di Lavoro', 'modello' => 'Modello Organizzativo', 'ambiente' => 'Ambiente e Sicurezza' ) ) ) where SUBCATHEGORY depends on value selected in CATHEGORY combo, CATHEGORY combo values are depending too on some other combe put in fron of cathegory (in this case there is repertorio selection - BaseLookupSource.class.php - we add constants to represent different setting of lookup.config.inc, cause it starts to have mny different values we recomand use this constants instead dirrect strings - LookupService.class.php added new command: 'startCombo' this will reload options into html select element, this command is just initially handled, after lookup initial settings done it will be translated to command 'start' - FormSkinnableFieldPartBase.class.php - we had to add new slave type for form fields: example : this new slave will generate events for combos options update on client site, so if one combo options list depend on some form field value, this field have to have new slave in edit properties, in schema. - FormSkinnableFieldPartWithListBase.class.php - we add lookup values management for Javascript command generation in fact its the same like to call lookup action, when we need update select options list. so we add to select element its lookup function, this function will be called on JS side when, is neccesary - SimpleSelect.class.php - it like file before - SelectOptions.class.php - it like file before - forms.pxml - it like file before - forms.css in commons some Note dimensions fix - pxml.edit.js added whole select options dynamic update - XwRepertoriesLookupSource.class.php - done some fixes for better repertories use, there was add also one global firter xpath which will be add to current xpath filter this xp is set be config parameter: 'filterXp' => '(./@numero>=\'28\' and ./@numero<=\'34\')' in lookup.config.inc in used handler settings 3.5.3 04/06/2012 - FIX: there were problem to recognise renderer in old manner in schema XmlModel.class.php - ADD: missing icons for plain text attachments - MOD: xw trees xsl TreeNode.xsl reference to My.Client -> Ad.Client - FIX: history forced command have to be null not '' cause we use isset() for test 3.5.2 01/06/2012 - ADD: new functions into XwDatabase.class.php general purpous: protected function waitForLastObserverResult() - make async operation sync (simulation with timeout) public function callPlugin($pluginName, $function = '', $params = array()) - general function for call xw plugins xw navigation trees: public function getNavigationTreeList() - get trees list public function getNavigationTreeNode($id) - get tree node public function getNavigationTreeRoot($TreeId = '') - get tree root node public function executeNavigationTreeNode($id) - execute node action and return selection id which can be used to make query - ADD: other neccessary files relative to the new XwTrees handling XwService.class.php - main tree service xw/tree.config.inc - in conf-common in this form: /* * tree config */ 'xw.navigTrees' => array( 'default' => array( 'ID' => 'default', //id tree 'DB' => 'DB_' . constant('__APP_DEFAULT_SET__'), //db name prefix for tree navigation commands 'Xsl' => 'xw#TreeNode.xsl', //one node xsl transformation 'followUp' => array( 'default' => 'TitlesService', 'titles' => 'TitlesService', 'document' => 'DocumentService' ) ) ) xw#tree.css - css for tree xw#css/img/tree directory wit tree image assets xw#TreeNode.xsl - xsl for nodes formating - FIX: AttachmentService.class.php strrch($where, $what) returns rest of string from $what possition and not numeric position 3.5.1 31/05/2012 - INCOMATIBLE: we had to change DocumentActions.class.php constructor call attributes, now we send in whole document reponse so during actions creation it is possible to make custom actions more simple examining also directly document we create new class in xw : ui.component.DocumentActions for general use this actions have single action 'Modify', there is best practice to derive application document actions from this class, or do it on the same way then we add also template for that class in xw.menu.pxml compatibility walktrough: 1: adjust DocumentActions for new system, use xw::ui.component.DocumentActions for example - MOD: there are several fixes and modifications done finalising editing in Dialog - ADD: we add new OnDemand editing of some XmlObject part, it means that some xmlpart in root form is in read only custom layout form, and there is editing request and that part will be edited in dialog for this purpose we add some new things in schema structure: we add renderes alternative element which can be add in edit element. examle: We also add new editingTypes: group_dialog, invisible_group_dialog this 2 types are conected to renderers. type="group" is used while xml oject does part of parent form and type="dialog" is used while there is edit dialog on options are used like values for constructor call like $options array for this system we made many changes and fixes in this file list: EditFormContent.class.php - validation message separatet for object and field by separator SFormFieldFactory.class.php - validation message separatet for object and field by separator XwDocumentModel.class.php - possibility to skip validation on demand IXmlField.interface.php - changed params in function getRenderer XmlField.class.php - modified editparams parsing XmlModel.class.php - new renderers in edit handling XmlObject.class.php - many changes for renderers and backward compatibility, changed decision if field is simple or not, and so on XmlObjectCollection.class.php - new dialog and renderers system XmlAutoEditService.class.php - added support for new dialog and on demand editing DialogEditFormActions.class.php - Dialog edit form actions (this is barely new class) OnDemandEditRenderer.class.php - new SimpleValuesListContent.class.php - new SXmlFormFieldFactory.class.php - new renderers support added xmlEditing.pxml - new templates for OnDemandEditRenderer, SimpleValuesListContent - MOD: added missing dumpInDom function parameter $filterOutEmpty to all classes. IXmlBindable.interface.php XmlCodDescrField.class.php XmlField.class.php XmlObjectSkip.class.php XmlObject.class.php XmlObjectCollection.class.php 3.3.29 30/05/2012 - ADD: add EmailValidator.class.php and value in errors.properties and serializable.conf.inc - ADD: XwThesaurusLookupSource.class.php, search and navigation in thesaurus - MOD: DocumentViewServices.class.php and XwDocumentHelper.class.php modify document model load method 3.3.28 30/05/2012 - FIX: edit dialog forms management - fix close button action so it cancel also edit of xml part - possibility to specify on popup skin option 'escapable' if true dialog can be closed by esc on edit dialog we can catch well this event to call cancel edit so on edit dialog escapable is forced to 'false' - MOD: refactor of Pxml.PopupMan in pxml.js, so it support multiple stack of modal dialogs, so we can handle lookups from edit dialogs (errors and so on) - FIX: in onAjaxContentLoadedEvent there can be called the same event handler also from non AjaxProxy so we have to handle this differece - ADD: html_base.xml template for head will render automaticaly alsy link to jquery style - ADD: function getCurrentModelId() for mantain form with XwDocumentHelper 3.3.27 29/05/2012 - MOD: added rendering of all popup destination dirs into HtmlBody (so we can use more destination divs for dialogs) => eventual multi dialog editing. Modified files: SPopupHelper.class.php (smal fix) HtmlBody.class.php html_base.pxml - MOD: added handling of edit order for mixed elements (attribute editOrder='first|last') - MOD: ctor comment in APopupContent - ADD: generalised ui.component.dialog.XmlPartEditorDialogContent - REM: removed ui.component.dialog.WidgetConfigEditorDialogContent was substituted by XmlPartEditorDialogContent - MOD: XwDocumentHelper.class.php was modified for support multiple models for one app set. There were document.config.inc modifications done: this is example of new one: /* * Document definitions */ 'document.default' => constant('__APP_DEFAULT_SET__'), 'document.definition' => array( constant('__APP_DEFAULT_SET__') => array( 'dbId' => constant('__GLOBAL_DB_ID__'), 'xsl' => '',//document.xsl', 'menuClass' => 'ui.component.DocumentActions', 'ud' => '', //DOCUMENT_MODEL', //this can be empty, if its empty model must be specified , from outside using 'fEditedDocType' variable 'editFormActions' => 'ui.component.edit.EditFormActions', //edit form actions global default will be deprecated 'editFormContent' => 'ui.componen.XmlAutoEditFormContent' //edit form content class like global default will be deprecated ) ),//end of document.definitions /** * models map udTypes to schemas */ 'document.models' => array( 'DOCUMENT_MODEL_TEST' => array( 'modelClass' => 'db.xw.XwDocumentModel', 'rootElement' => 'PLANT', //REQUIRED!!!!! 'model' => 'schema_doc.xml', 'template' => 'template_doc.xml', 'followUp' => array( 'default' => 'service.ajax.DocumentViewService' ), 'editActions' => array( //XmlDocumentEditActionBase::ED_ACT_JUST_BEFORE_EDIT => 'db.xw.edit.JustBeforeEditActionFOLDER', //XmlDocumentEditActionBase::ED_ACT_JUST_BEFORE_SAVEDB => 'db.xw.edit.JustBeforeSaveActionFOLDER' ) /* ADDED */ //edit form actions used for form generated for specific model 'editFormActions' => array( 'default' => 'ui.component.edit.EditFormActions', 'SomeTagName' => 'some actions class', ), 'editFormContent' => 'ui.componen.XmlAutoEditFormContent', //edit form content class ) ), XwDocumentHelper will examine parameters and it will decide in this order: ctor param > post/get > globalVariable > error we use global variable instead of session so its request scoped, so each form have to hold current edited model id in state, so we did modify also in XmlAutoEditService.class.php constructor - MOD: added new dialog destination div in popup.config.inc 'popup.divs' => array( 'default' => 'popupDomDragDiv', 'edit' => 'editPopupDomDragDiv' ), - MOD: added new function into UIContainer.class.php insertChild($ch, $where) : $where = {'first','last'} - MOD: in SPopupHelper function getDialogDiv handle default dialog div - ADD: new editType for XmlObject was added 'dialog' in this case some XmlObject from some collection will be handled in dialog for this management we made changes in files: pxml.edit.js pxmlscu.js XwDocumentHelper.class.php XmlFiled.class.php - isNew handling XmlObject.class.php - isNew handling XmlObjectCollection.class.php - added clearNewNonUsed() function, cause if we call edit dialog, then we have clear all new non used cause we can cancel operation, but in model XmlObject were already created XmlAutoEditService.class.php - here we add: new execute actions: savePart, cancelEdit_part added functions: pushCurrentTarget() will save target,formname in stack popCurrentTarget() will restore target,formname from stack makeEditFormDialog() this will render form in dialog we made some changes in form generation too, for correct selection of actions and content classes - ADD: class XmlAutoEditFormContent for editing form in dialog - ADD: XmlPartEditorDialogContent (is used also by widget config edit) - MOD: CollectionValuesGrid.class.php, this class will skip all collection lines which are new, and without values - ADD: DialogEditFormActions.class.php this class will render edit dialog actions - MOD: SXmlFormFactory.class.php we call clearNewNonUsed() on collection before it will be drawen by Grid - ADD: new styles in edit.css - ADD: template XmlDialogAutoEditFormContent in xmlEditing.pxml#xw 3.3.26 28/05/2012 - ADD: XwDatabase.class.php add methods for searching and browsing of thesaurus - ADD: CodDescr input, formatter, lookupSource. - FIX: pxml.edit.js modify for call addCheckForVisibility - MOD: XwDocumentHelper.class.php added default into function getEditFormContentClass, we set defaultly: 'ui.component.XmlAutoEditFormContent' to mantain compatibility - FIX: in autoedit xml there were problems with initialisation of XmlObject for mixed xml (self value and attributes too) fixed files: SXmlFormFieldFactory.class.php in method 'addObject' moved setup of object in front of other operations - FIX: Grid columns generation for XmlObjectCollection, in case of mixed element (self value and attributes too). it was not considering self value like grid column, fixed in XmlObjectCollection.class.php - FIX: problem with form content class (adding from 3.3.23), if in document.config.inc was 'editFormContent' => '', it goes in exceprtion. 3.3.25 25/05/2012 - MOD: SApplication can collect arbitrary script during execution/render process, this script can be then rendered like page load event or it can be add in tail of AjaxResponse, for this handling we add new functions in SApplication: public function addGlobalJsForExcute($js), public function getGlobalJsForExecute(), public function resetGlobalJsforExecute() Then we fix using of this script also in AjaxResponse - MOD: In whole render and handling proccess we will use like identificator of Widget ist class, not full class name in all places where we need full class name we will construct it so we did many fixes for this fact. - ADD: maximize glyphs - ADD: on getCfgParam we do discovery of default value, and do some sort of value type configuration, in case of number, we try to return number, and in case of bool we try return true, it accept values for true: true, yes, si, on 3.3.24 24/05/2012 - FIX: FileLock.class.php will handle dir creation in case of missing dir (linux could not work due to permissions) - ADD: admin level management in SApplication singleton, it means we know if curent user is admin or not, there are different situations, that we need distinguish if user is application admin or just user, there will not be different stat handled on application level just admin or not, so we add admin user rights mask in app.config.inc 'session.adminRights', is user is admin it will have admin flag on it will be checkable from User.class.php by function 'isAdmin', and added 'isAdministration' in SApplication There we can handle 2 different things: 1 - recognise that some user is application admin, and if there is appliction state administration set to true so there can be rendered some controls with administrative functions to set application in admin state there must be variable in request 'admin'='true' - MOD: work on WidgetSkins and user intercation 3.3.23 23/05/2012 - ADD: widget resources in resources.config.inc - MOD: FormService.class.php , chenges in input parameters recognition, it take cfgParams with defaults from post - MOD: removed params in closePopup proxy actions pxml.edit.js, pxml.runtime.js - MOD: parameters for job of doRequest was not complete pxml.ajax.js - ADD: jQuery adds - ADD: posibility to configure EditFormContent class in document.config.inc XdocumentHelper.class.php - ADD: return states from customExecute function const AES_CUSTOM_EXEC_RET_EXECUTED = 'executed'; const AES_CUSTOM_EXEC_RET_REDIRECTED = 'redirected'; const AES_CUSTOM_EXEC_RET_NOTHING = 'nothing'; - ADD: configuration editing dialog and all necesary support classes 3.3.22 22/05/2012 - FIX: in all Widgets guid => instanceId - ADD: jquery 1.7.2 with UI plugins (Interactions) 3.3.21 21/05/2012 - FIX: CollectionValuesGrid.class.php modified construct method - FIX: selection set from custom desktop is not having size and neither ID so we have to handle it for future navigation, there were 2 fixes done in classes XwDatabase.class.php XwSelection.class.php 3.3.20 18/05/2012 - MOD: XmlAutoEditService.class.php created function getDocumentHelper so it can be overriden - Moved all what was widget insisde widget/lib all classes necesary for Config editing - ADD: new serializables 'WidgetConfigDocumentModel' => 'db.widget.WidgetConfigDocumentModel', 'ConfigXml' => 'core.config.ConfigXml', - FIX: ConfigXml had problems creating from Xml - FIX: Xml addXmlLikeChild problems with empty inserts - MOD: Pxml.FormActionsListener in pxm.edit.js mage like singleton new style - MOD: XwDocumentHelper modified initial comment - MOD: XmlAutoEditService - params in ctor - execute added with customExecute - added getDocumentHelper function - MOD: added new include path in pxml.php constant('__PROJECT_PATH__').'/lib/widget/lib', constant('__PROJECT_PATH__').'/lib/widget' 3.3.19 17/05/2012 - ADD: WidgetComponent mechanics. Widgets are SkinableContainers with different programable runtime configuration. There are 4 different levels of configurability. 1° ComponentConfig - component config (not runtime editable) 2° WidgetConfig - override with widget class config (runtime editable) /classes/.config.xml 3° InstanceConfig - override with widget instance config, instance mean Widget will obtain Global instance ID and this will be used for config identification (runtime editable) /classes//.config.xml 4° UserConfig - its instance config override for specific user (runtime editable) /users//classes//.config.xml For support this we add new config files manager. SConfigStore.class.php this class manage configuration storage. All future widgets have to extend ui.widget.WidgetBase. One widget is mostly auto sufficient component. It have to be placed in /lib/widget base dir. All widgets have to have root dir with lowercased class name f.e. TestWidget will be placed into testwidget directory. Directory structure for one widget: ../lib/widget/ |- |- .class.php - main widget class file |- .config.xml - ComponentConfig for widget |- src - any other widget private classes | |- .class.php | |- .... |- rs - widget private resources (namespace will be lowecase widget name) |- model - non obligatory editing schemas and templates for different level of configuration | |- w_schema.xml | |- w_template.xml | |- i_schema.xml | |- i_template.xml | |- u_schema.xml | |- u_template.xml | |- tmpl - PXML templates used privately in widget |- .pxml |- .... Each widget have to declare with annotation level of configuration available. 0 - Just Component level this widget have not alot more then usual skinable component 1 - Widget level configuration, this is valid for all widgets of the same type in the application 2 - Instance level configuration. There is possibility to mark Instances of widget with guid (some string) depends on developer and this config is walit for widget and particular insatance guid 3 - User insatnce config. We can mantain specific config for each user and each instance separately. There is cascading of configs: 0 <- 1 <- 2 <- 3 means that what is in bigger one it will wins over smaler one. There is work still in progress, but til now we change/add following files in core: - SLoader.class.php added include dir 'lib/widget' - SResManager.class.php new method for runtime namespac adding - ConfigArrays.class.php some minor modifications - Configurable.class.php adapt also for ConfigXml type - ConfigXml.class.php new configuration type (its ConfigArrays compatible, ConfigArrays can be merged into ConfigXml, but not vs.) - IConfig.interface.php - SConfigFactory.class.php some adopts for new Xml config type - SCofigStorage.class.php new configs storage engine (simple files storage) - User.class.php - added function for user hash - WidgetBase.class.php root for all widgets - Added new TestWidget for testing and development - Added EmptyWidget.class.php for future copiing in development 3.3.18 16/05/2012 - Added ConfigXml.class.php - modified IConfig.interface.php, added $namespace constructor parameter => it was added also into ConfigArrays.class.php 3.3.17 15/05/2012 - Added new libs lib-opt/docway and lib-opt/acl - added include path in pxml.php - added resources (docway) in resources.config.inc 3.3.16 15/05/2012 - MOD: modified machanics for Xml dumping from XmlModel, we were redump new Xml, but this is not robust solution, spetialy if we ar enot 100% sure about of completnes of our Xml schema. There were new proposal, to Dump model directly into existing DOM document. We modified following files: IXmlBindable.interface.php - added dumpIntoDom function XmlField, XmlObject, XmlObjectCollection classes, we add new dumping function XmlModel, XwDocumentModel classes for to call new dumping Xml.class.php we add return parameter to addXmlLikeChild function 3.3.15 11/05/2012 - FIX: removed thumbnail label trim from code of AttachPrettyPhotoThumbnail.class.php and moved this fack to the template of documents preview component ( we format label in place of visualisation instead of source) - FIX: XwIndexLookupSource.class.php in vlues can be present '&null;' so it is translated for label like _L('index_empty_value#xw') - FIX: FilterField.class.php index type case of first letter of index name decided basing also on index type - ADD: some labels - MOD: xwdoc-lib.xsl templade for xwdoc.CreaIntestazioneDocumento modified return of '' in case of simple varie document - FIX: AttachPrettyPhotoThumbnail.class.php there were problem if fName contains & so now is fixed - FIX: AclOfficeQuery and AclPersonQuery classes, they trim white chars from generated query strings. 3.3.14 10/05/2012 - FIX: We add sortable content, and we was using type of ajax content on client side to decide what to do in case of ordering, if we were in titles it was forcing order directly on titles, and when we were on search form it was just setting future order but there is other situtation, when we have smal search forms (without order) on the same window with titles which need sorting we have to create new type of ajax content, and this content must be send in case of orderable search form, so we can distinguish correct situation, then we will change decision on javascript side: we will test if there is no 'search-sortable' we will do titles sorting kind so we will not test if there is titles do titles sort, we wil do it every time while there is no 'search-sortale', and it is only in specific situation, if seguent content is derived from: ui.component.SortableSearchFormContent - modified SearchFormService.class.php , it will generate label for ajaxContentLoaded even. 'search' or 'search-sortable' - xw.runtime.js reorderTitles function will handle ordering type decision basing on Pxml.xw.currentContent in revers logic, it will consider titles ordering everithing except 'search-sortable', so it will handle all posible cases except real sortable search form - FIX: above method is not enough :( we have create new event on TitlesService and also on SearchFormService so we can separate completaly sorting, so we generate new JS event 'sortingContextChanged' so we can handle sorting differency, and we add in Pxml.xw new variable. 'currentSortingContext' so we can handle specific sorting context changes, added new event handler onSortingContextChangedEvent in xw.runtime.js, in which we set client sorting context reorderTitles function now is using Pxml.xw.currentSortingContext to decide what to do. services affected: TitlesService.class.php DocWayTitlesService.class.php SearchFormService.class.php fixed problem with searchForm state _state['orderByDir'], if it was set to '' it was not rendered and so all code after (spetialy client side) was not function cause there were no field present, so we add possibility to set form sate to '##EMPTY##' in this case hiddent field will be rendered, but hidden it's self check presence of value == '##EMPTY##' and it will render '' instead. For panic security we added also handling of value '##EMPTY##' in orderByHelper 3.3.13 09/05/2012 - MOD: AttachPrettyPhotoThumbnail added new param 'readOnly' can be used for seting readOnly actions on attach - MOD: field 'oggetto' set like editable in schema_doc.xml#xwdoc & schema_fascicolo.xml#xwdoc - MOD: xwdoc.CreaIntestazioneDocumento there will accept also already formated date 3.3.12 08/05/2012 - FIX: hidden fields form rendering and also labels rendering SFormFieldFactory.class.php - fixed field param sending into SimpleLabel SimpleLabel - fixed for hiddens fields render (it prints word 'hidden' in case we are i debug and hiddens are rendered) forms.pxml - fixed template for SimpleLabel XmlModel.class.php fixed field generation Field will be marked like readOnly also in case of hidden - ADD: possibility to skip final IAjaxResponse descendants render setting configuration parameter ($options via ctor) 'skipFinalOutputRendering' to 'true' - MOD: Pxml.PopupMan in pxml.js for Esc popup closing 3.3.11 07/05/2012 - FIX: there is problem with custom descktop selections, and also any kind of selection which was not inserted in selection tree by WS, we are depending on selections in selection tree, at least we are require one currrent for to know its selection id. But while we do setCurrentSet using SelID frem Custom desktop, it will not produce any current selection set on SelectionTree and this implies future errors when we ask DB to return last current set selection ID, in case we set it from Custom desktop. So we will introduce FAKE selection ID field in XwSelection.class.php, this one will be used by external actors. So it will have everytime some current set also in case that there is no one current in selection tree. - FIX: corrected set of lastDocument in XwDocWayDatabase.class.php - ADD: post it management Model: schema_postit.xml template_postit.xml XwDocPostItModel.class.php -> base class for any PostItmode.class.php (need to be added to serializables) XmlObjectpostIt.class.php -> DataObject for PostIt adding (need to be added to serializables) Form: PostItEditor.class.php (modified edit.pxml for template) lang default.properties for postit_title string Js: XwDoc.PostIt with addPostIt(idIUnit) function 3.3.10 04/05/2012 - ADD: 'removeCC' action in DocWayDocumentViewService, also in xwdoc.runtime.js - minor changes on XwDocWayDatabase, grantRight and denyRight receive modified doc so it will be set like lastDocument - MOD: function workOnRpaCc was moved form application.runtime.js into xwdoc.runtime.js in class XwDoc.RpaCc - MOD: autocomplete value handling, there is distinction betveen value and label, autocomplete show label but it will set value in field in case label is different from value!!! fixed this in AutoCompleteValue.class.php and also in pxmlscu.js (we overload original updateElement handler) - ADD: added function assignFolderRPA in XwDocWayDatabase this is for assigning RPA to folder this will be decided in XwDocRpaCcModel in method save it will intercept nature of current document and it will call right one method - FIX: XwDocumentModel.class.php setCurrentXmlObject was not returning anything. Now it return correctly set current object - ADD: AutoCompleteBehavior.class.php added querystring generation from parameters - render of FormSkinnableFieldPartBase.class.php changed for use new function of AutoCompleteBehavior 3.3.9 03/05/2012 - FIX: pxml.ajax.js - customParams were lost during "pushing + handling" of JavaScript jobs (they were simply not passed over as parameters in function calls). Fixed just adding the proper param inside doFormRequest and handleJobs functions. 3.3.8 02/05/2012 - FIX: custom updates parameters sending form in Lookup system, so modified event handler onLookupValueSelectedEvent in pxm.edit.js now it take data['lkp_customs']['update'] instead of data['lkp_customs'][0] - MOD: added new function in 3diwsPXML "loadFirst(String query, boolean docwayLike)" this function execute query and return first document it will not alterate selections tree and nothing else in current connection on ws side, so its good to load arbitrary document via query and out of any set!!, old XwDatabase function loadFirst was moved to this end point function - old method of XwDatabase loadFirst becom loadFirstWithSelection - changed XwPerson.class.php old loadFirst call was changed to loadFirstWithSelection call - ADD: AclPersonQueryLookupSource for person lookups (added also AclPersonQuery), it handle also office to person bind in list view, it have cache for office_code to office name translation so it will not produce queries for each person of the same office. This source will produce 'update' lookup customs rule, so it will try to set values into office, office_code, and person_code fields - ADD: AclOfficeQueryLookupSource, AclOfficeQuery 3.3.7 27/04/2012 - FIX: str2bool in DataFmt.class.php was amlied to capture also 'on' or 'yes' like true - MOD: working on model in XW, we add possibility to attach custom form rendering, and custom model generating so we can handle more editing situations 1: added possibility to specify modelClass for XmlObject in schema, so im free to decide who will handle my sub model. We add ne attribute in schema '.. 2: added new XmlObjectRpaCc.class.php and XwDocRpaCcModel.class.php for RPA and CC handling into xwdoc All components present in RpaCc handling a: schema_rpa.xml (template_rpa.xml) added in xwdoc, schema is custom recognised by XmlObjectRpaCc.class.php b: XwDocRpaCcModel.class.php this model is base for final application model, we need overload cause we need use specific application helper, This model will be called to edit custom RpaCc form on custom model with custo model object c: then there are UI components: i) ui.component.edit.RpaCcEditor - this one render edit form part for rpa anc cc handling ii) ui.component.edit.RpaCcPersonContent - this one render one person edit boxes (this is called by LoadClass service) 3: for beter ajax handling we add in ajax target possible taconite command, cause taconite can do many other things not just replceChildren so new optional ajax target sintax is: a: target old style used for replace children b: target$command command := {'append-as-children','append-as-first-child','delete','insert-after','insert-before','replace','replace-children','set-attributes'} c: there can be aditional calling parameter fTaconiteCommand := {'append-as-children','append-as-first-child','delete','insert-after','insert-before','replace','replace-children','set-attributes'} - FIX: removed json2 implementation from pxml.js (was bugged) we will use prototypes one 3.3.6 24/04/2012 - MOD: some relevant modifications to XmlAutoedit system 1: SFormFieldFactory getInstance added new parameter $canCreateNewInstance with default true. If false factory must exists already in time of getInstance Call so we can garantie some specific settings inside Factory and we can use it in other places which need those particular settings 2: created SXmlFormFieldFactory which extends SFormFieldFactory, it add methods for creating complex form content starting from some XmlField 3: SFormField factory is working on some data object in one time, but when we are using complex xml data model we need possibility to swith factory to work on some particular dataobject and then it have co come back to precedent , so we add mechanismus of dataobjects stack and methods pushDataObject and popDataObejct. Push will set new data object and curent will be set to stack, pop will take current away and it will recover one from stack 4: Added 'renderer' field and attribute in XmlObject (done form IXmlField in up), it hold class for Xml object edit form part rendering 5: function drawField of SFormFieldFactory can be called on fields of XmlObject which can have its self like form field so we have to test if wanted id its not it self, so getFieldById will not give error, so we modified getFieldById of XmlField so it test for is it self first 6: minor bug fixes in editing mechanics 7: Added posibility to identify data field in model by 'name path', this was done in SXmlFormFieldFactory in function drawField, it look first for field by ID then by name path if was not found by ID 3.3.5 23/04/2012 - FIX: Img.class.php resize was not correct in any case 3.3.4 20/04/2012 - MOD: TitlesService.class.php 'desktop' command handled like sel not like search!! - ADD: added db connection config param 'folderTreeDocwayRights', if true all folder tree queries limited for access rights like in ordinary Docway connection - MOD: removed useless override of setCurrentSet from XwDocWayDatabase - MOD: titles service on fCmd = 'sel' can have exception on first title page if SID was used from external connection, so it will retry one time executing new query [?sel]=.... 3.3.3 19/04/2012 - FIX: SearchFormService.class.php redirect param - MOD: XmlDocumentEditActionBase.class.php added new hook ED_ACT_JUST_AFTER_DELETE_DOC - FIX: LeftMenuPanelService.class.php port to new redirect system - MOD: added fTarget param in redirect call in DocumentViewService and TitlesService 3.3.2 18/04/2012 - ADD: SelectionTreeLeftMenuPanelService.class.php like new standardized xw.service for Selection tree handling - FIX: SortablesSearchFormContent template was missing hidden field for 'fOrderByDir' value - FIX: fixed missing return statement in function getCrumbText of DocumentViewService of xw - FIX: MultiDbManagerService fixed command recognition after crum hit 3.3.1 17/04/2012 - MOD: unify services calling interface: __construct(IData data, array options); there should be present options['caller'] reference in case of service redirect, we will use "called must to understund" pattern, what means that called service must try to decode arrived parameters, if it is not able to recognise calling atributes good for him it will finish in error. This pattern will permit to extend services, use configurable followups without changes in stable existing servivces. Added possibility to configure logical services names, there is static method identifyServiceClassname($source) in AjaxServiceGate which can translate logical names (names without '.' in) into full classified class names, it is good practice use logical names of services instead of full classified names Changed services: - PopupService.class.php descendant: - ErrorDialogService.class.php adapted to follow it's parent interface, anyway this class have personalized constructor, cause its not possible to use it in services chaining - LoadClass.class.php this service was refactored, it can receive this params in options: 'caller' - optional caller 'target' - optional target client div, it will look for fTarget in (P/G) 'classDescriptor' - optional class descriptor, it will look for fClassId { descr := ]; params := [|[..|[]]] } in (P/G) fClassDescriptor {JSON form of real classDescriptor} in (P/G) - LoginService.class.php removed ctor params, this service do not need params, so anything send in will be ignored - FormService.class.php adjusted ctor parameters descendant: - SearchFormService.class.php adapted constructor parameters and also history record generation, then we refactor all followUp calls to generate right parameters for followup mechanics - XmlAutoEditService.class.php adapted parent constructor call - AsyncProgressService.class.php adapted constructor parameters , changed follow up mechanics, it is now possible to configure class which will follow after async procces finish - LeftMenuPanelService.class.php adapted constructor parameters - PrintService.class.php adapted constructor parameters - TitlesService.class.php full refactor of parameters recognition now it follow this schema: caller != null a. history fCmd = 'sel' in options fData = SID in options fSelectionID ignored!!!! b. searchform or advanced search form fCmd = 'search' | 'searchAsync' in options fData hold query or filter object and is set in options fSelectionID can be set for refinement in P/G c. documentview fCmd = 'search' | 'searchAsync' in options fData hold query or filter object and is set in options fSelectionID ignored!!! caller == null a. desktop fCmd = 'desktop' will be override to 'sel' fData = SID fSelectionID ignored!!!! b. dirrect external call fCmd = 'search' | 'searchAsync' in P/G fData hold query is set in P/G fSelectionID can be set for refinement in P/G c. page fCmd = 'pag' fData = {first, prev, next, last} d. oreder fCmd = 'order' rest is ignored For this schema we changed several calling places: - xwdoc.runtime.js function setDesktop will set fData instead fSelectionID, - xw.runtime.js function showSelectionTitles set fData instead fSelectionID, - DocumentViewService.class.php refactor of parameters and calling system - FolderTreeService.class.php refactor of parameters and calling system - MultiDbManagerService.class.php refactor calling parameters and also parameters recognition Pxml.xw.MultiDbSupport.loadTitles in xw.runtime.js was modified fSelectionID => fData to be conform with new services calling system (in TitlesService param fSelectionID is used for refinement) Other changes: - XwFilterHelper.class.php, modified exceuteFollowUp, it is trying to translate class name first (AjaxServiceGate::identifyServiceClassname($source)). - total refactor fOldQuery => fRefineQuery in all files - XwDocumentHelper.class.php, modified exceuteFollowUp, it is trying to translate class name first (AjaxServiceGate::identifyServiceClassname($source)). - MOD: removed useless UIContainer constructor method - ADD: json2.js compressed code to pxml.js core javascript - FIX: all implementors of method function getCfgParam($paramName, $defaultVal = '', $namespace = ''){... were fixed to function getCfgParam($paramName, $defaultVal = null, $namespace = ''){... cause calling this method with default null it casue return emty string and not null!!! there were some of files implementing IConfigurable.interface.php - ADD: new UIComponent for search form visualisation and handling, it is envelop for search form fields - SortableSearchFormContent - this is search form fileds container with possible sorting commander on the top of the form this content can be set in filter.config.inc like 'class' option for some search form example: 'class' => array('ui.component.XwDocSortableSearchFormContent', array(null, array('fContentClass'=>'ui.component.AdSearchFormContent'))), it must be defined with full correct classdescriptor, there must be present option: 'fContentClass' which point to fields content component Options: fContentClass - full classified class name to fields content fSortingOff - true sort will be turned off , false (dafault) sorting is present - MOD: refactor XwDocSearchFormContent => XwDocSearchFormFields, cause we have new SearchFormContent composition Migration guide: 1: adapt SearchFormContents a: extend from UIContainer b: Modify template removing all parts already defined in SortableSearchFormContent template(it is envelop for search form contents) c: Modify filter.config.inc class for FormContent in manner that it call SortableSearchFormContent using your new fileds content example: 'class' => array('ui.component.XwDocSortableSearchFormContent', array(null, array('fContentClass'=>'ui.component.AdSearchFormContent'))) there is param 'fSortingOff'=>true|false, you can use it to turn off sorting on Search form 2: adapt all extended services with new service calling system 3: if you'r using searchAsync (calling titles) you have to add followUp class in async.config.inc 'async.followingTitlesServiceClass' => 'TitlesService' 4: change all followup references in document.config.inc in manner that it use logical names of following services (it can remain full classified name too, but logical name will follow services mapping from app.copnfig.inc) 3.1.3 13/04/2012 - FIX: onLookupResetFilterEvent function in pxml.edit.js - FIX: removeAttachment in XwDocument.class.php - ADD: add function loadSottoFascicoloByNumFasc in xwdoc.runtime.js - ADD: add funtion loadTreeNodeQuery in folderTree.runtime.js and FolderTreeService.class.php 3.1.2 05/04/2012 - FIX: there is case that we have also $app->getInputVar('fSelectionID', ''); and $fSelectionID set it happen when we call titles from breadcrumbles file TitlesService.class.php 3.1.1 05/04/2012 - removed /conf-example from core project, it will be added in skeleton project 3di.pxml3.new_pxml_xw_project - FIX: LogoutForm template of commons had hardcoded image location( refactored ) - FIX: unified use of xsl libraries, commons-lib.xsl, xwdoc-lib.xsl, and xw-lib.xsl , there is new naming practice all templates from commons will have name commons.