1.2.0a colliding changes/bugfixes: - pntUnit/Inspect.php include exploit fixed 1.2.0 Changes since 1.2 beta (no colliding changes) x added prototype PntIndex (NOT PRODUCTION CODE) x pnt.unit.web.PntUnitTestResultPart::printTestStatisticsRow now sets whole peanut image if result is 'Strict', but not if 'Notice' x pnt.web.actions.PntObjectSaveAction::handleRequest refactoring . replaced temporary variables by member variables: . $obj by $this->object . $formTexts by $this->formTexts . factored out methods: . initialize . convertAndValidateFormValues . commitFormValues . moved processMtoNproperties call from finishSuccess to handleRequest x PntQueryHandler::in debugged x PntSite::getContextHref now only uses pntContext parameter if contextFolder can be guessed and used guessed folder if not equal to curren domainDir x becuase of incorrect conversion to html if SaveAction validation fails: . PntXmlTextPart added member variable $contentLabel . PntXmlTextPart::getContentLabelWith added . PntXmlTextPart::setContenLabel added . PntXmlTextPart::getMarkupWith now calls getContentLabelWith . PntFormNavValue::getContentLabelWith added . PntFormNavValue::getMarkupWith now calls getContentLabelWith . PntFormNavValue::setConvertMarkup now sets contentLabel instead of markup . PntRequestHandler::getFormTexts now calls setContenLabel instead of setMarkup . PntDialogWidget::initialize now uses contentLabel instead of markup . PntSelectWidget::initialize now uses contentLabel instead of markup Changes since phpPeanuts 1.2 alpha 2 Colliding: x includes/skinFilterFormPart changed advancedFilterOverlay postion left:130 x includes/skinNtoMSearchPart.php renamed to skinMtoNSearchPart.php x includes/skinNtoMPropertyPart.php replaced 'pntNtoM by 'pntMtoN x ObjectSaveAction comment with function finishSuccess: renamed call processNtoMproperties to processMtoNproperties Other: x PntMultiValuePropertyDescriptor::setDerivationPath comment: replaced n to m with m to n x PntMultiValuePropertyDescriptor::deriveUsingPathFor comment: replaced n to m with m to n x PntMultiValuePropertyDescriptor::mutateRelationFor_ids comment: replaced n to m with m to n x PntObjectSaveAction::finishSuccess renamed call processNtoMproperties to processMtoNproperties x PntObjectSaveAction::processNtoMproperties renamed to processMtoNproperties renamed call processNtoMParamsFor to processMtoNParamsFor x PntObjectSaveAction::processNtoMParamsFor renamed to processMtoNParamsFor replaced getRequestParam('pntNtoM' by getRequestParam('pntMtoN' replaced requestData['pntNtoM' by requestData['pntMtoN' replaced 'NtoMmodIds' by 'MtoNmodIds' x PntObjectMtoNSearchPage::printMainPart replaced 'NtoMSearchPart' by 'MtoNSearchPart' x PntObjectPropertyPage::doScouting replaced 'NtoMSearchPage' by 'MtoNSearchPage' x PntObjectPropertyPage::isSameContextHandler replaced 'NtoMPropertyPage' by 'MtoNPropertyPage' x PntObjectEditDetailsPage::::doScouting replaced 'NtoMSearchPage' by 'MtoNSearchPage' x PntObjectEditDetailsPage::isSameContextHandler replaced 'NtoMPropertyPage' by 'MtoNPropertyPage' x PntNtoMPropertyPart::printAddRemoveScriptPart replaced .pntNtoM$propName by .pntMtoN$propName x PntSite::getBaseUrl corrected slashPos for funkyUrls x PntTestNotifier::event if abortIncrementalOnError did not process testresult x PntDbObject::addDbFieldProps added. It adds properties from database table metadata x PntQueryHandler::addFieldPropsTo_table, addFieldPropTo_row and getPropertyType added x PntQueryHandler renamed fields: $aantalRecords, $aantalVelden x PntQueryHandler::release added x PntDbClassDescriptor::_getPeanutsRunQueryHandler now calls PntQueryHandler::release x PntDbClassDescriptor::_loadMissingFields x PntFilterFormPart::_runQhStoreAllItemsSize_getItemsLimitedTo now calls PntQueryHandler::release x PntDbClassDescriptor::getSelectQueryHandlerFor factored out getSimpleQueryHandler x PntPagerButtonsListBuilder added class comment x PntTestNotifier added class comment x added class comment @package to classes: PntHorizontalTablePart, PntAssert, PntObjectSelectionReportPage, PntHorSelReportPage, PntSortableTablePart x pnt/classTemplate.php added class comment @package x pnt/generalFunctions.php added comment @package x pnt/pntPhp4Functions.php added comment @package x pnt/pntPhp5Functions.php added comment @package x added comment * @package to all classes of: pnt.widgets, pnt.web.dom, pnt.test, pnt.test.db, pnt.test.meta, pnt.test.web Changes since phpPeanuts 1.2 alpha 1 Colliding: x includes/skinFilterFormPart added to both simpleFilterForm and advancedFilterForm x includes/skinNtoMFilterFormPart added to both simpleFilterForm and advancedFilterForm x styles/phpPeanuts.css added pntDetailsExtra (change this style to get different color) x Layout menuPart width too small for examples menu set it in skinBody to 135, -145 in skinDetailsPart, skinPropertyPart and skinIndexPart Other x PntDbObject::save corrected save error message x PntPropertyDescriptor::getCompulsory added x PntDerivedPropertyDescriptor::getCompulsory added x PntMultiValuePropertyDescriptor::getCompulsory added x PntMultiValuePropertyDescriptor::getHoldsDepentents added x PntObjectNavigation::isSettedCompulsory now dereves value from $prop->getComulsory(); x PntPropertyPage::getButtonsList now adds Delete button if property holdsDependents x PntDialogWidget::initialize added: $fpId = $this->getFootprintId(); $this->setDialogUrlNoId (..) &pntRef=$fpId x PntObjectDetailsPage::getButtonsList added $pntRefParam to script of Details and Report button x PntUnit added suppport for showing and hiding E_STRICT notifications x PntPropertyDescriptor added constant definitions for >>persistent x PntFieldPropertyDescriptor::getPersistent and setPersistent updated default and comment x PntPropertyDescriptor::getPersistent updated value and comment x PntDerivedPropertyDescriptor::getPersistent updated comment x PntDbClassDescriptor::getFieldMapForTable now returns table for save, leaving out fields whose propertyDescriptor>>persistent is PNT_READ_ONLY; see added comment x PntDbClassDescriptor updated/added comment for getFieldMap, getFieldMapPrefixed, _getDescribedClassInstanceForData, x PntObjectDetailsPage::printDetailsRow and printSkinDetailsRow factored out printDetailsExtra, added class=pntDetailsExtra to middle TD tag x PntObjectEditDetailsPage::printDetailsExtra for readonly properties prints * if property is compulsory (links to PropertyPage are no longer printed by default user interface) To print them override printDetailsExtra on ObjectEditDetailsPage and call printDetailsLink x PntDbObject::initMissingFields added x PntDbClassDescriptor::_getDescribedClassInstanceForData now initializes missing fields if no delegator x PntDbClassDescriptor::_loadMissingFields now initializes missing fields that did not load x generalFunction and php4 functions moved array_diff_key to generalFunctions x renamed CasePntPhp4Functions to CasePntGeneralFunctions Changes in phpPeanuts 1.2 aplpha 1 since phpPeanuts 1.1 portable Nested Context Tracking (scouting) trough session This not only allows return to the context of the context - as many levels deep as you like -, but also makes it possible to return to the exact context, with the proper search criteria and paging. The result is a big improvement in user-friendlyness of the user interface. This caused a series of changes in code that generates urls. Added parameters to skinHeader, Forms and general.js To debug the data that is collected by the scout, uncomment the lines at the bottom of PntSessionBasedScout::moved, the data will then be printed at the top of each page. To adapt an application to scouting: - add to all your skinHeader.php files - add &pntRef='. $this->getFootprintId() to buttons, especially those that use javascript document.location= . check implementors of getPageButtonScript . check implementors of getMultiValuePropertyButtonScript . check implementors of addMultiValuePropertyButtons . check implemetors of getButtonsList - add pntRef hidden field to forms - check itemtables cell onclick to use javascript tdl function or to add &pntRef='. $this->getFootprintId() - check overriding implementations of javascript functions tdl and tdlGetHref - check implementations of ObjectSaveAction::finishSuccess to include pntRef into the new request - check context in selectionReport (first selection report is new context. This is taken care of by PntObjectSelectionReport::doScouting. If you use other pages that require a specific pntHandler request parameter value, you may want to override isSameContextHandler to make these pages share their context) - add &pntScd=d to menu's and all other places where you want to go into subcontexts (drill down) - check Context buttons, SaveAction, DeleteAction etc where you want to go back to context (move up) Incomplete list of changes for scouting: - PntObjectEditDetailsPage::includeOrPrintDetailsTable factored out printOpenPageForScript - PntObjectIndexPage::getPageButtonScript - PntObjectSearchPage::getPageButtonScript - PntObjectIndexPage::getButtonsList (requires new version of scripts/general.js) - PntPage::getMultiValuePropertyButtonScript - PntObjectEditDetailsPage::getButtonsList - PntObjectPropertyPage::getButtonsList - PntObjectSelectionReportPage added context button and scouting - PntObjectEditdetailsPage::doScounting - pntObjectPropertyPage::doScouting - PntObjectReportPage::getDetailsHref now includes pntRef parameter For more information see class pnt.web.helpers.PntSessionBasedScout M to N Relationship support in default user interface: - Added classes ObjectMtoNPropertyPage, ObjectMtoNSearchPage, MtoNFilterFormPart, MtoNPoropertyPart and their skins - PntObjectSaveAction::finishSuccess now calls new method processNtoMproperties - PntObjectSaveAction::getBackToOriginRequestData will get back to property page if pntProperty parameter is set and pntHandlerOrigin parameter is not - PntMultiValuePropertyDescriptor::setDerivationPath to set the derivation path for an n to m relationship property - PntMultiValuePropertyDescriptor::_deriveValueFor calls deriveUsingPathFor if derivationPath is set - PntMultiValuePropertyDescriptor::mutateRelationFor_ids To use ObjectMtoNPropertyPage, make a (type specific) subclass of ObjectPropertyPage and let it inherit from ObjectMtoNPropertyPage or forward to ObjectMtoNPropertyPage. You may implement an update method as described in mutateRelationFor_ids comment Index- and SearchPage show report if pntLayout=Report - PntFilterFormPart::getFilterResult returns unlimited result if rowCount=='All' - PntPage::isLayoutReport added - PntPage::printBody includes skinReportBody if isLayoutReport() - PntObjectIndexPage::printIndexPart added, includes skinIndexReportPart if isLayoutReport() - PntObjectIndexPage::getRequestedObject returns unlimited result if isLayoutReport() - PntObjectIndexPage::getButtonsList Report button uses javascript function pntSelectionReport() - PntObjectIndexPage::getButtonsList returns only Report button if isLayoutReport() - PntObjectSearchPage::getRequestedObject calls filterFormPart::getFilterResult with rowCount=='All' if isLayoutReport() - general.js added function pntSelectionReport() that opens popup with same page and pntLayout=Report if no rows selected Added scripts for confirming modified form unLoad . PntObjectEditDetailsPage:: getButtonsList, includeOrPrintDetailsTable, printOnUnloadScript printBodyTagIeExtraPiece, printOnUnload, getOnUnloadMessage . scripts/general.js pntGetFormValues, pntArraysEqual . scripts/popup.js popUpYesNo . inlcudes/skinDetailsFormStartPart.php added hidden field pntBackToOrigin Other subjects: - PntSite->startSession now only starts session if not already started - pntPhp4Functions.php pntIs_a solved bug warnings when allow_call_time_pass_reference=Off (zit ook al in 1.1 portable) - PntAction::finishAndRedirectToContext factored out from PntObjectDeleteAction::finishSuccess - PntObjectDeleteAction::finishSuccess finishAndRedirectToContext uitgefactoriseerd - PntErrorHandling::printDebugInfo now prints backtrace - PntErrorHandling::startHandling adapted for modern php versions - pnt/generalFunctions.php: pntPrintBacktrace, pntGetRelativePath, pntGetFsSeparator fromCsvString, isBrowserIE - pnt/php4Functions.php array_diff_key added - pnt.test::testCasePntPhp4Functions test_array_diff_key - PntStringConverter now can convert MySQL version < 4.1 timestamp format - PntDbObject::initFromData polymorphism support now should work properly with get_magic_quotes_runtime - PntQueryHandler::in debugged - PntQueryHandler::setQueryToSaveObject_table_fieldMap no longer triggers notifications for missing fields - PntObjectSaveAction::getBackToOriginRequestData factored out from finishSuccess - PntObjectSaveAction::handleRequest now takes requestParam pntIgnoreMissingFields into account - PntRequestHandler setting $this->controller added - PntRequestHandler::getController added - PntSite constructor parent constructor call replaced - PntSite::getController added - PntRequestHandler subclasses references to global $site replaced by $this->controller - PntObjectDialog::printItemCells now escapes javascript string because of mozilla - PntTablePart added eventHandler getCellOnClickParam - PntTablePart::printBody now prints empty table if no items but noTableIfNoItems == false - PntPagePart::getType() no longer passes $this but $this->getName() when asking $this->whole->getType() - PntPagePart::getPart now passes partName to getSpecificPartPrefix - PntPagePart::getSpecificPartPrefix now passes partName to getType - PntObjectEditDetailPage::getFormText factored out to PntObjectDetailsPage - PntObjectDetailsPage::getFormText factored out - PntObjectReportPage::getFormText overridden to support skins from EditDetailsPage - PntObjectReportPage::getMultiPropNames no longer returns names of invisible properties - PntObjectEditDetailsPage::getTextAreaTreshold was wrongly set to 210. Set to 120 (was originally 80) - PntDbObject::loadData triggered E_NOTICE. Also moved to legacy support section - PntSqlFilter::getDescription now supports specialization of comparators and shows value2 only for BETWEEN AND - PntSelectWidget width parameter added - PntObjectDetailsPage::getDetailsLinkFromNavText returns only content if no id, no object or an error - PntObjectPropertyPage::getButtonsList factored out addNewButton, new button is no longer added if no idProperty delete button no longer added because of new inisight about remove versus delete button (is recognized to be 'Not Yet Implemented') - PntFieldPropertyDiescriptor::_deriveValueFor now checks for unset fields, with documegtation why - PntSite::getBaseUrl added documentation - PntSite::getBaseUrl now works with funkyUrls if server root == phpPeanuts root folder - PntSite::isFunkyUrl comment changed - PntSite::getFunkyRequestData comment changed - PntButtonsPanel::printButtons adapted for arbitrary indexes - PntRequestHandler::checkAlphaNumeric now returns the checked value - PntPropertyDescriptor::_deriveValueFor now caches reference to results array in field (same name as property) and checks for cached results. ! cached array is not reset before returned - test.db.CaseDbObject::test_insertChild now uninitializes children field on obj1 - test.db.CaseDbPolymorphic::test_insertChild now uninitializes children field on obj1 - test.db.SqlJoinFilterTest::testCreateTableAndDbSub now releases obj1 from subclassdescriptor's cache - PntDialogWidget::initialize now converts label to html - PntFilterFormPart now supports multiple advanced filters combined with AND or OR - PntTabsPart::setTabsSpec now processes part parameters where values are arrays !!! not yet tested - PntObjectEditDetailsPage::getButtonsList and getDeleteConfirmationQuestion delete confirmation popup added - PntObjectIndexPage::getButtonsList and getDeleteConfirmationQuestion delete confirmation popup added Colliding changes (incomplete list) - - includes/skinHeader - includes/skinIndexPart - includes/skinPropertyPart - includes/skinSelectionReportPart - includes/skinDetailsPart - includes/skinFilterFromPart (2 x)