====== Dojo Upgrade Notes ====== These notes are observations about what needs/can be changed upon upgrading dojo versions, as well as pitfalls that may be encountered. Anyone else with ideas/propositions is welcome to edit. =====Dojo 1.4.*===== ====Evergreen Specific Changes==== * Dojo 1.4.* includes [[http://dojotoolkit.org/reference-guide/dijit/Calendar.html|dijit.Calendar]], after converting we should be able to remove jscalendar (/Open-ILS/web/opac/common/js/jscalendar) which includes 74 files at 6760 lines of code (300kb) and will properly style to the chosen dijit theme unlike the jscalendar. * It is probably prudent to upgrade all instances of dojo.Grid to dojox.EnhancedGrid to allow easy multiple column sorting if not they should be replaced by dojox.Grid.DataGrid. ====Upgrade Notes From Dojo==== Upgrading Here are some common issues people have had when upgrading (ie, migrating) from 1.3 to 1.4: 1. If your widgets are using templatePath you should ideally update them to use templateString with dojo.cache() instead, or alternately, minimally, make sure that they set templateString to null (to override the templateString setting from a superclass). 2. ContentPane acts more as a layout widget than before, defining isLayoutContainer: true. This may break some custom subclasses. 3. The startup code for widgetsInTemplate has changed; if you have a custom widget that manually adds sub-widgets into its DOM, be sure to add those sub-widgets to this._startupWidgets[] and also this._supportingWidgets[]. Alternately you can set _earlyTemplatedStartup to true to get the 1.3 behavior 4. If your TabContainer is too wide (you must have set width=100% in your markup?), specify controllerWidget=”“dijit.layout.TabController” (see Ticket #10495). =====Widgets to Check Upon Upgrade===== In order to have a successful Dojo upgrade these widgets **must** be tested and working. These files that contain these widgets, along with files that depend upon the widgets (very useful for testing), can be found using the [[dev:tools:web_reporter|web reporter script (poirot.py)]]. * DojoSRF * MARC.Batch * MARC.Field * MARC.Record * OpenSRF * fieldmapper.AutoIDL * fieldmapper.Fieldmapper * fieldmapper.IDL * fieldmapper.OrgUtils * fieldmapper.dojoData * fieldmapper.hash * openils.BibTemplate * openils.CGI * openils.CopyLocation * openils.DojoPatch * openils.Event * openils.FeedTemplate * openils.GridColumnPicker * openils.I18N * openils.MarcXPathParser * openils.PermGrp * openils.PermaCrud * openils.PermaCrud.Store * openils.User * openils.Util * openils.XUL * openils.acq.CurrencyType * openils.acq.Fund * openils.acq.FundingSource * openils.acq.Lineitem * openils.acq.LineitemAttr * openils.acq.PO * openils.acq.Picklist * openils.acq.Provider * openils.editors * openils.widget.AutoFieldWidget * openils.widget.AutoGrid * openils.widget.AutoWidget * openils.widget.EditDialog * openils.widget.EditPane * openils.widget.FacetSidebar * openils.widget.FacetSidebar.facetClass * openils.widget.FacetSidebar.facetField * openils.widget.FilteringTreeSelect * openils.widget.FundSelector * openils.widget.GridColumnPicker * openils.widget.HoldingCode * openils.widget.OrgUnitFilteringSelect * openils.widget.PCrudAutocompleteBox * openils.widget.PCrudFilterDialog * openils.widget.PermGrpFilteringSelect * openils.widget.ProgressDialog * openils.widget.ProviderSelector * openils.widget.Searcher * openils.widget.Searcher.classedSearch * openils.widget.Searcher.facetedSearch * openils.widget.Searcher.filter * openils.widget.Searcher.modifier * openils.widget.StandingPenaltyBlockedSelector * openils.widget.Textarea * openils.widget.TranslatorPopup * openils.widget.XULTermLoader