covers versions 3.4.4 stable, 3.6.0 RC1, 3.7.0 development
Several changes have been made to MySource Matrix this week to help with system performance and caching. Due to the importance of these features to clients, they have been made to both 3.6.0 RC1 and 3.7.0 development. Being so close to the scheduled release of 3.6.0 stable, we have decided to postpone the stable release for another month and release another release candidate (3.6.0 RC2). This will allow for additional testing of these changes to ensure they are indeed working correctly in production systems.
This also means there will be a 3.4.5 stable release next month so all bug fixes should continue to be committed to all three source code branches.
A few queries within the MySource Matrix core were optimised this week. The largest speed improvement should be noticed when expanding nodes in the asset map on larger system (the bigger the system the more the improvement). These performance improvements have been made to both 3.6.0 RC1 and 3.7.0 development.
Some changes were committed to MySource Matrix 3.7.0 development last week to fix some bugs with the link tree and the PostgreSQL collating order. At that time, there was no upgrade available for rollback enabled systems.
These changes have now also been made to 3.6.0 RC1 and an upgrade developed for rollback enabled systems. The upgrade must be performed in a certain order, so please refer to the UPGRADING section of this newsletter for instructions for both 3.6.0 RC1 and 3.7.0 development systems.
Any developer that fixes a bug that changes the way the system works must now ensure that the documentation team is notified directly via email. Any bug fixes that enhance the functionality of MySource Matrix will be reported in this newsletter in the New Features section and do not need additional notification. This new process is being put in place to ensure all changes to the documentation occur at the earliest point in time (hopefully before each release).
Examples of bugs that would need additional notification are: - fixed a problem where a workflow email wasn't being sent (new email being generated) - fixed a bug where the WYSIWYG popup looked different to the others (new screenshots required)
Basically, anything that changes the user experience needs to be documented.
Please send a description of the changed (as detailed as possible) to documentation@squiz.net (or doco@squiz.net if you're lazy).
Previously, getAssetKeywords() returned an array with descriptions and replacements for every keyword for an asset even though most of them were not going to be used. Instead, now use getAvailableKeywords() in order to get the list of keywords and their descriptions. If the asset has more than one bodycopy and needs to distinguish different sets of keywords for different bodycopies, the logic should be implemented in onRequestKeywords() function. Each different sets of keywords should be provided in private functions that return an array of keywords and their description. These function will be called in onRequestKeywords.
Replacement is done by the new getKeywordReplacement() function. Any assets which introduce their own keywords are responsible for providing proper replacements functions in their class. If the replacement is dynamically generated, the programmer can decide to write their own function for the replacement. If the keyword is generic enough so that its parent or child class might use, then provide get{KeywordName}KeywordReplacement function and call getKeywordReplacement() in asset.inc.
For example: if you have the keyword 'asset_im_generic' in someClass, provide a function in someClass function getAssetImGenericKeywordReplacement() { return 'Replace Me'; }
Then getKeywordReplacement($name) in asset.inc will find and call this function. $replacement = $this->getKeywordReplacement('asset_im_generic'); Note : getAssetKeywords() still stays in asset.inc not to break other packages which are currently using it. However, it has been deprecated.
The following is a list of files which have either getAssetKeywords() or onRequestKeywords(). The developer responsible for these assets should decide if they would benefit from using the new keyword system. In the case of core or commercial modules, this must be done.
CORE - paint_layout getAssetKeywords() /core/assets/paint_layout/paint_layout_bodycopy/paint_layout_bodycopy.inc onRequstKeywords() /core/assets/paint_layout/paint_layout_page/paint_layout_page.inc
PACKAGES - ISC getAssetKeywords() /isc/page_templates/page_template_builder/page_template_builder.inc /isc/page_templates/page_appointment_finder/page_appointment_finder.inc /isc/page_templates/page_asset_editor/page_asset_editor.inc /isc/components/files/isc_image/isc_image.inc /isc/components/isc_account_type/isc_account_type.inc /isc/components/isc_quote/isc_quote.inc /isc/components/isc_operation/isc_operation.inc /isc/components/isc_patient_account/isc_patient_account.inc /isc/components/isc_payment/isc_payment.inc /isc/components/isc_external_doctor/isc_external_doctor.inc /isc/components/isc_invoice/isc_invoice.inc /isc/components/isc_refund/isc_refund.inc /isc/components/calendar_events/isc_appointment/isc_appointment.inc /isc/components/isc_referral/isc_referral.inc /isc/components/isc_pathology_results/isc_pathology_result_pit/isc_pathology_result_pit.inc /isc/components/isc_pathology_results/isc_pathology_result/isc_pathology_result.inc onRequestKeywords() /isc/page_templates/page_template_builder/page_template_builder.inc /isc/page_templates/page_appointment_finder/page_appointment_finder.inc /isc/page_templates/page_patient_viewer/page_patient_viewer.inc /isc/page_templates/page_appointment_builder/page_appointment_builder.inc /isc/components/isc_pathology_results/isc_pathology_result/isc_pathology_result.inc - NEWS getAssetKeywords() /news/news_item/news_item.inc - NOIE getAssetKeywords() /noie/noie_presentation/noie_presentation.inc - SOPA getAssetKeywords() /sopa/calendar_events/sopa_recurring_event/sopa_recurring_event.inc /sopa/calendar_events/sopa_single_event/sopa_single_event.inc - AUSTEREO getAssetKeywords() /austereo/page_templates/austereo_up_for_grabs_item/austereo_up_for_grabs_item.inc /austereo/page_templates/austereo_code_word_category/austereo_code_word_category.inc /austereo/austereo_code_word/austereo_code_word.inc onRequestKeywords() /austereo/page_templates/page_feed_reader/page_feed_reader.inc /austereo/page_templates/austereo_code_word_category/austereo_code_word_category.inc - RADIO_NZ getAssetKeywords() /radio_nz/audio_item/audio_item.inc - CALENDAR getAssetKeywords() /calendar/calendar_event/calendar_event.inc /calendar/page_templates/page_calendar_rolling/page_calendar_rolling.inc /calendar/calendar_events/calendar_event_recurring/calendar_event_recurring.inc onRequestKeywords() /calendar/page_templates/page_calendar_rolling/page_calendar_rolling.inc /calendar/page_templates/page_calendar/page_calendar.inc /calendar/page_templates/page_calendar_restricted/page_calendar_restricted.inc - ARISTOCRAT getAssetKeywords() /aristocrat/aristocrat_game/aristocrat_game.inc - DPI onRequestKeywords() /dpi/dpi_metadata_search_list/dpi_metadata_search_list.inc
Added to: 3.7.0 development
Listing engine assets now have the ability to specify where they would like their listing form submitted. By default, they will submit back to themselves, but for asset listings that use the new selections, submitting to another assets (such as an ecommerce cart) can be beneficial. Essentially, the asset listing can be used to create a selection of assets that can then be submitted to another asset for processing.
Added to: 3.7.0 development
The listing engine assets now have the ability to display checkboxes, radio buttons, or text boxes that allow you to create a selection from the listing. Nothing will be done with the list itself, but other assets will be able to use this list and pass it to other assets.
For example, you can now perform a search for a list of products and select which ones you would like to add to your cart. The ecommerce cart can then use this selection and add the list of products to the cart.
Added to: 3.7.0 development
The Ecommerce cart has been completely overhauled and now uses asset selections to update and remove cart contents. Items can be added to the cart from external listing engine pages by setting up an asset selection on the external page and a dynamic parameter on the cart and setting both to using the same field name. eg. an Asset Selection called 'Purchase' matches up to a Dynamic Parameter assigned to the GET variable 'Purchase'.
Added to: 3.7.0 development
Most developers are aware of how bloated form_email is, causing problems with the custom form page because so much functionality is outside of the control of custom form. Enter simple_form! This new core asset type provides form functionality in the same way as bodycopy assets provide HTML editing. The simple_form is not be a page on its own but is rather used by page assets (such as custom form or search page) to provide a common interface for creating forms within pages.
Added to: 3.6.0 RC1, 3.7.0 development
Previously, the submission logs of custom forms could only be exported to a file by going to a screen of the form asset. This meant that custom form submissions could not be exported in the simple editing interface because the custom form page asset did not have the ability to export its own submission logs.
Custom form page now has a new logs screen that functions in the same way as the existing screen on the form. It also makes the fields within the screen accessible in the simple editing interface, allowing editors to access submission logs without opening the administration interface.
Added to: 3.6.0 RC1, 3.7.0 development
Design areas, such as menus and nested content, are often static, yet they account for quite a lot of queries during page loading. All design areas (with the exception of the BODY, SHOW_IF and LOGIN_FORM design areas) can now be cached by adding the attribute cache="1" to the design area tag in the parse file.
All design areas that are static (ie. not random) should be cached for performance. This includes all menus, most nested content areas, all asset lineages and constant buttons. Like all other MySource Matrix caching, permissions do not stop the cache from working, so users will still see the correct contents based on their group permissions.
Added to: 3.6.0 RC1, 3.7.0 development
When inserting images in the WYSIWYG, both internal and external images now appear in a preview pane in the popup window. This allows you to confirm that the image you have selected is correct before inserting it.
To be added to : 3.7.0
Estimated start date: already in development
Estimated end date : 28th July 2005
Run step_02.php: yes
Run step_03.php: yes
Run compile_locale.php: yes
Additional queries: No additional queries are required for upgrades.
Additional comments: To upgrade all systems, perform the following upgrade steps in the specified order: run "php ./scripts/upgrade_treeid_field.php"
Run in PSQL (as the postgres user) DROP FUNCTION sq_get_parent_treeids(VARCHAR, INT); DROP FUNCTION sq_rb_get_parent_treeids(VARCHAR, INT);
run "php ./install/step_02.php ."
Run step_02.php: yes
Run step_03.php: yes
Run compile_locale.php: yes
Additional queries: No additional queries are required for upgrades.
Additional comments: To upgrade all systems, perform the following upgrade steps in the specified order: run "php ./scripts/upgrade_treeid_field.php"
Run in PSQL (as the postgres user) DROP FUNCTION sq_get_parent_treeids(VARCHAR, INT); DROP FUNCTION sq_rb_get_parent_treeids(VARCHAR, INT);
run "php ./install/step_02.php ."
| Bug ID | Stable | Beta | Dev | Description |
| 794 | N | Y | Y | Purging trash can delete links outside the trash |
| 796 | N | N | N | Empty metadata fields causing speed issues before committed not confirmed |
| 798 | N | Y | Y | Asset Listing Page Sorting screen Asset type chooser |
| 799 | N | Y | Y | Asset Listing Page Grouping by Parent Asset |
| 800 | Y | Y | Y | When adding new link between asset and root folder childrens treeids become corrupted |
| 801 | N | N | Y | restricting asset statuses in search categories in search page doesn t work |
| 802 | Y | Y | Y | Inconsistencies in Table Creation interface |
| 803 | N | Y | Y | Int text boxes throw javascript errors |
| 807 | Y | Y | Y | After an asset is deleted purged links to assets under it remain not confirmed |
| 808 | N | N | N | Paint layout not removed from URL not confirmed |
Bug #793 (assetid field length varies in the DB) was submitted by Geoffroy but was marked as not being a bug after it was found that the asset map that was thought to be affected by differing database column types was optimised to a point where sequential scans were no longer required.
Bug #795 (Listing Engine should allow root node to be part of the result set) was submitted as a feature request by Andrei but was marked as Will Not Fix because the feature described is actually implemented by Paint Layouts.
Bug #805 ( in asset listing displays broken image) was submitted by James H but was marked as not being a bug because it was found that the thumbnail didnt actually have URL to replace.
| Bug ID | Description |
| 792 | XHTML Sitemap |
| 795 | Listing Engine should allow root node to be part of the result set |
| 797 | Sorting assets by sort order in listings |
| 806 | Add keyword for asset content summary |
| Bug ID | Stable | Beta | Dev | Description |
| 752 | Y | Y | Y | Problems with custom form submission viewing and exporting |
| 784 | N | N | Y | The Account managr page bodycopies shows irrelevant keywords |
| 794 | N | Y | Y | Purging trash can delete links outside the trash |
| 798 | N | Y | Y | Asset Listing Page Sorting screen Asset type chooser |
| 799 | N | Y | Y | Asset Listing Page Grouping by Parent Asset |
| 800 | Y | Y | Y | When adding new link between asset and root folder childrens treeids become corrupted |
| 801 | N | N | Y | restricting asset statuses in search categories in search page doesn t work |
| 802 | Y | Y | Y | Inconsistencies in Table Creation interface |
| 803 | N | Y | Y | Int text boxes throw javascript errors |
There are currently no comments for this newsletter.