1.3.beta2 colliding changes: - skinReportPart table en printPart('ButtonsPanel') added - pntUnit/index.php - Inspect.php includeTestcaseClass other: - pnt/generalFunctions verson number now 1.3.beta2 - PntErrorHandler::handleError extracted ::dieIfFatal; allways called, not only if error is reported - PntErrorHandler::dieIfFatal now dies on E_RECOVERABLE_ERROR (does not take reportingLevel into account) - PntErrorHandler::initErrorLevelMap now maps E_SRICT and E_RECOVERABLE_ERROR E_NOTICE "Only variable references should be returned by reference" fixes: PntClassDescriptor ::_getPeanutWithId now returns $null instead of null; ::_getPeanuts no longer returns reference ::getPropertyDescriptor now returns $null instead of null; ::_getPeanutsWith no longer returns reference ::getUiFieldPaths no longer returns reference PntPropertyDescriptor ::primitiveTypes no longer returns reference ::_getOptionsFor no longer returns reference PntObject ::getUiColumnPaths no longer returns reference ::getReportColumnPaths no longer returns reference ::getUiFieldPaths no longer returns reference ::get now returns $null instead of null; ::getOptions no longer returns reference PntMultiValuePropertyDescriptor ::getIdPropertyDescriptor now returns $null instead of null; PntDbClassDescriptor ::_getPeanutsRunQueryHandler no longer returns reference ::_getPeanutsWith no longer returns reference ::_getPeanuts no longer returns reference ::getLabelSort now returns variable with labelSort ::getFilters no longer returns reference PntDbObject::newQueryHandler now returns variable with QueryHandler PntXmlPart::getConverter no longer returns reference bug fixes: - PntUnitTestResultsPart::inspectorLink now refers to Inspect.php instead of just Inspect - PntPregFilterExpression class name fixed (was PntPregFilterExpresson) in: - class file - PntUnitScriptPart::getFileFilter - pntUnit/index.php - Inspect.php includeTestcaseClass - ObjectSortDialog specialzation code for dutch removed - PntHcodeObject::getKey now checks isSet($this->packageKey) - PntErrorPage::initForHandleRequest now starts session and calls doScouting - PntErrorPage::doScouting added; fools next page to think referrer was the previous page - When an MtoNDialog is reopend after closing, the current values of the MtoNDialogWidget it was opened from are not reflected in the dialog. Patching this is not a big deal, look on the forum for a patch. PntMtoNDialogWidget::initialize replace equivalent line with: $this->setDialogUrlNoId("index.php?pntHandler=$dialogType&pntType=$pntType&pntProperty=$this->formKey&pntRef=$fpId&id=$id&$this->formKey="); Added Print buttons to reports - PntObjectSelectionReportPage::getButtonsList modified - PntObjectIndexPage::getButtonsList modified - phpPeanuts.css @print styles for funkyButton(Ghost) added for hiding buttons on printer - mcl/skinReportPart table en printPart('ButtonsPanel') added - PntObjectReportPage added field inPopup = true; ::printBody now calls parent if not inPopup ::printMainPart added ::getButtonsList modified security improvement (risk not considered high) - PntObjectMtoNSearchPage::getPropertyName now checks the propertyName to be alphaNumeric - PntPage::includeSkin now checks skin name to be alphanumeric - PntRequestHandler::checkAlphaNumeric error message now mentions skinName - pntPhp4Functions tryIncludeClass, includeClass added exploit warning to comment - pntPhp5Functions tryIncludeClass, includeClass added exploit warning to comment - PntRequestHandler useClass, tryUseClass added exploit warning to comment - PntSite::guessContextTypeFolder now uses ::getType - PntObjectMtoNDialog::getItemsInfo now uses ::getPropertyName - PntErrorHandler now by default uses the PHP's system logger - PntErrorHandler::debugInfoBacktrace now defaults to isDevelopment() - PntErrorHandler::getErrorPageUrl no longer includes cause - PntQueryHandler::convert(ConditionArgumentTo)Sql now uses mysql_real_escape_string - PntErrorPage::getBody no longer reveals errorCause 1.3 beta1a colliding changes/bugfixes: - Inspect.php fixed include exploit; unserialize by default disabled 1.3 beta 1 colliding changes: - images/buttonpupup modified - style/phpPeanuts.css = tabsPart no longer uses negative offsets with relative positioning because of IE bug: .pntTab top now 2px; .pntTab_selected top now 0px; .pntTabContent positioning and top no longer set; . pntDetailsGroup.. added .pntDetailsTextArea added, sizes now set, specific size for IE = added .pntButtonPopup, .pntClearWidgetButton, .pntMtoNButtonPopup, .pntDialogWidget, .pntMtoNDialogWidget .pntDetailsGroupHeader, .pntDetailsGroupLeft, .pntDetailsGroupRight, .pntDetailsGroupMiddle - scripts/general.js added ::pntFfpColSort - scripts/general.js pntFfpColSort factored out: pntGetFilterFormVisible - scripts/general.js pntSubmitDetailsForm added - skinFilterFormPart - simpleFilterDiv DIVs added for rightaligning advanced link - sortImage added to both simpleFIlterDiv and advancedFilterOverlay with onClick=openSortDialog - printSortDialogScripts call added - added $this->printSortParams(): - skinMtoNFilterFormPart analogous to skinFilterFormPart - skinMtoNSearchPart added checks for clientsizes not to be too small - skinMtoNPropertyPart changed iframe coordinates, whidth en height table, height Div - PntObjectMtoNPropertyPage moved saveMtoNPropTableState to scripts/general.js pntSaveMtoNPropTableState non-colliding changes in specific layer - ObjectMtoNDialog added - MtoNDialogWidget added - ObjectEditDetailsDialog added - ObjectSortDialog added - SortDialogPart added - skinSortDialogPart.php added - skinDetailsDialogPart added - images/sort.gif added bugfixes: - PntSite::getFunkyRequestData bug solved: POST and cookies from request got lost - PntValueValidator ::validate debugged: $type undefined,now is $this->type ::validateObject now checks length - PntTablePart depricated support debugged: ::printItemBgColor now passes parameters to printRowBgColor ::setHandler_printItemRows now assigns field properly - PntTabspart::processPartArgumentsConvertTabsSpec replaced $contentParts[$tabName] by $this->contentParts[$tabName] - PntMtoNPropertyPart::getPropertyValueFor debugged: now uses request param - PntErrorHandler::getStringConverter now checks if StringConverter exists - PntFormMtoNRelValue::setConvertMarkup contentLabel is not set if it is an invalid form value other changes: - added style for FireFox cursor:pointer : - PntTablePart::printRows - PntMtoNPropertyPart::printRows - PntHorizontalTablePart::printItemCells - PntHorSelReportPage::printItemCells - PntObjectMtoNSearchPage::printRows - PntDialogWidget::printBody - PntMtoNDialogWidget::printBody - pnt/generalFunctions.php pntIs_a now uses instanceof operator - PntFilterFormPart::initFilter now includes valuetype class - PntObjectMtoNPropertyPage ::printScaleContentScripts now also prints openNewItemDialog function that suggests initial value for label property ::getNewItemButton debugged: should use app folder corresponding to classDir ::getNewItemButton button script now calls openNewItemDialog function - PntObjectReportPage::getFormTextPaths override removed, page now only reports over uiFieldPaths - PntPage::addMultiValuePropertyButtons no longer assigns variable reference to $excludedPropKeys - PntObjectEditDetailsPage ::getButtonsList no longer returns variable reference; calls pntSubmitDetailsForm ::printOnUnloadScript roept pntSubmitDetailsForm aan ::printDetailsExtra now calls printDetailsExtraEmpty if setted readonly or not compulsory ::printDetailsExtraEmpty added, prints non breaking space - PntObjectSaveAction ::handleRequest now explcitly passes formTexts to convertAndValidateFormValues and commitFormValues ::commitFormValues now expects formTexts to be passed explcitly ::convertAndValidateFormValues now expects formTexts to be passed explcitly ::processMtoNproperties debugged: no longer stops after first successfully processed property - PntFormWidget fields $value and $formKey added - PntFormNavValue::getMarkupWith no longer assigns variable reference to $contentLabel - PntRequestHandler ::getFormTexts no longer returns variable refererence, no longer assigns variable reference to $this->formTexts ::setFormTexts no longer takes&assigns variable reference - PntStringConverter field labelItemSeparator added ::splitDT not adds ''00' instead of '' if a piece is missing ::toLabel calls arrayToLabel ::arrayToLabel convert arrays into labelItemSeparator separated string ::convert factored out: convertToObject ::convertToObject added so that these conversions can be overridden by subclass - PntPage::getConvert now triggers warning if no propertydescriptor - PntSite::isWindows now uses PHP_OS - PntMtoNDialogWidget::initialize now makes StringConverter convert linefeeds to
s for the labelValue; textSize now 32 - PntStringConverter ::toHtlm optional parameter added for conversion of convert linefeeds to
s ::arrayToLabel adds linefeeds if any of the labels includes an ampersand - PntObjectDialog ::getInitItemTable now sets eventhandler getCellOnClickParam instead of printItemCells ::getCellOnClickParam added ::printItemCells removed - PntSite::getBaseUrl factored out ../classes/pnt/pntBaseUrlFunctions.php - ../classes/pnt/generalFunctions now includes ../classes/pnt/pntBaseUrlFunctions.php - PntObjectNavigation::getStepResultType getSettedProp() replaced by getFirstProp() - PntTextWidget size can now be set - pnt/db/classTemplate.php initPropertyDescriptors now contains call to addDbFieldProps - PntMtoNPropertyPart ::printItemTablePart now sets $this->itemTable ::getPropertyValueFor now uses PntFormMtoNRelValue ::printTableHeaders no longer prints getOnClickRemoveRow ::printItemActionCell factored out getItemActionCellContent ::printAddRemoveScriptPart . now allways creates new row, but uses innerHTML for ItemActionCellContent . no longer contains/uses addCsQs_ToValueOf . sets pntMtoNPropsEdited so that page can saveMtoNPropTableState for its MtoNPropertyParts - PntButtonPart now prints id so that buttons may be enabled and disabled dynamically changes related to search page sorting: - PntTablePart added support for sorting by click on header: ::addHeaderSortParams ::initialize initializes $this->headerSortParams ::printTableHeaders prints headerSortParams if present - PntFilterFormPart ::getSortIsSpecific added ::getSortId added ::getSortDirection added ::getSort factored out: ::getSortDefault, now calls ::getSortSpecific ::getSortSpecific added - PntObjectSearchPage added: ::printItemTablePart, ::setTableHeaderSortParams, getHeaderSortParams - PntObjectMtoNSearchPage::getInitItemTable now calls ::setTableHeaderSortParams - PntObjectDialog::getInitItemTable now calls ::setTableHeaderSortParams - PntObjectNavigation::getDbSortPaths added - PntPropertyDescriptor added: getDbSortPaths, setDbSortPaths - PntFieldPropertyDescriptor::getDbSortPaths added - PntDerivedPropertyDescriptor ::getPersistent now tries to include type class ::getPersistent added - PntSqlSort added: getSortSpecFilters, getSortPaths - added $this->printSortParams(): skinFilterFormPart, skinMtoNFilterFormPart - scripts/general.js added ::pntFfpColSort - added: - ObjectSortDialog, PntObjectSortDialog, SortDialogPart, PntObjectSortDialogPart - skinObjectSortDialogPart.php added - images/sort.gif added - scripts/general.js pntFfpColSort factored out: pntGetFilterFormVisible - PntFilterFormPart $extraSortParams added - printSortDialogScripts added - PntSelectWidget $unselectLabel added ::printUnselectOption prints $this->unselectLabel if true - skinFilterFormPart - simpleFilterDiv DIVs added for rightaligning advanced link - sortImage added to both simpleFIlterDiv and advancedFilterOverlay with onClick=openSortDialog - printSortDialogScripts call added - skinMtoNFilterFormPart analogous to skinFilterFormPart - PntFilterFormPart forwards score as default and en sets sortParams emtpy with simpleFilterForm defaultSort changes related to search for values navigating over 1 to m and m to n relationships: - PntMultiValuePropertyDescriptor::deriveUsingPathFor relationTableName removed from alias - PntSqlSort ::getNewItemPropName added ::getSql factored out: getSql_WhereToLimit ::getSql_WhereToLimit factored out, now calls getSqlForGroupBy - PntSqlJoinFilter ::addJoinTableAndConditionByTableAlias removed tablename from table alias, uses table alias if set ::isJoinFilter added - testSqlSortTest and testSqlJoinFilterTest removed tableNames from table aliases - PntSqlSpec::::isJoinFilter added - PntSqlFilter added to support JOINing over multi value paths: getSqlForGroupBy, getGroupBySql, getGroupByField, getSql_WhereToLimit - PntSqlCombiFilter::getItemType overridden, if itemType not set, look for it on parts - PntDbClassDescriptor::getFieldFilters now only adds filters for visible properties - PntQueryHandler ::convertToSql now allways addsSlashes ::convertConditionArgumentToSql now calls labelFrom ::addSqlFromSpec now calls getSql_WhereToLimit - PntQueryHandler::getPropertyType added support for datetime datatype - PntObjectNavigation::getSettedProp factored out, adapted, now returns last prop - PntSqlSpec field and property propLabel added - PntSqlSpec::getLabel now return propLabel if no label - PntSqlJoinFilter::getLabel now only returns label exists, otherwise uses propLabel to build labelpath - PntDbClassDescriptor::addReferenceFilters sets propLabel instead of label - PntDbClassDescriptor::getFieldFilters sets propLabel instead of label - PntSqlFilter::getInstanceForNav sets propLabel instead of label changes related to SelectWidget and primitive types: - PntSelectWidget ::initialize now supports primitive types ::setOptionsFromValues added - PntObjectEditDetailsPage::getFormWidget now supports non-compulsory boolean properties and properties of primitive type with options getter - PntPropertyDescriptor ::isTypePrimitive added ::_getOptionsFor now returns array(true, false) for type == 'boolean' pnt changes related to New Item buttons in ObjectDialog and ObjectNtoMPropertyPage: - PntMtoNPropertyPart::printAddRemoveScriptPart now prints reply function for EditDetailsDialog - PntMtoNPropertyPart::getEditDetailsDialogReplyScriptPiece added - PntObjectMtoNPropertyPage ::getButtonsList now adds NewItemButton ::getNewItemButton added ::getNewItemButtonLabel added ::getNewItemDialogSize added - PntObjectMtoNDialog ::getButtonsList now adds NewItemButton ::getNewItemButton added - PntObjectEditDetailsDialog added - ObjectEditDetailsDialog added - skinDetailsDialogPart added pnt Changes related to MtoNDialogWidget: - PntObjectDetailsPage::getDetailsLinkFromNavText now returns content for multi value property navtexts (produces no hyperlink) - PntObjectEditDetailsPage ::getDetailsLinkFromNavText now returns content for multi value property navtexts (produces no hyperlink) ::getFormWidget not calls getMtoNDialogWidget for PntFormMtoNRelValues ::getMtoNDialogWidget added - PntObjectMtoNPropertyPage ::printMainPart now calls printSaveScript ::getButtonsList savebutton script now calls saveDetailsForm ::printSaveScript added, script creates array pntMtoNPropsEdited in which MtoNPropertyParts should register their propertynames and ItemTables' ids. ::printScaleContentScripts factored out coordinates to fields saveDetailsForm collects itemtable state for each MtoNPropertyPart and sets the ids to the properties form field - PntObjectSaveAction ::handleRequest now does finishFailure if processMtoNproperties was not successfull ::convertAndValidateFormValues ignores PntFormMtoNRelValues that are not set ::shouldProcess returns false for PntFormMtoNRelValues ::processMtoNproperties rewritten, calls old (depricated) processMtoNParamsFor if property readOnly or form value not set ::processMtoNRelValue added ::processMtoNParamsFor depricated - PntMtoNDialogWidget added - PntFormNavValue::getInstances now returns PntFormMtoNRelValue for multi value properties - PntObjectMtoNDialog added - PntObjectNavigation ::getSettedProp factored out from getIdPath, isSettedReadOnly, isSettedCompulsory it now is the first multi value property in the path, or if all are single value, the last property. Remark: if the setted properties type is not a primitive type, The user interface will actually set the idProperty of the setted property getFirstProp factored out from getFirstPropertyLabel - skinMtoNPropertyPart added - ObjectMtoNDialog added - MtoNDialogWidget added - images/buttonpupup modified - style/phppeanuts.css . modified .pntButtonPopup, .pntClearWidgetButton, . added .pntMtoNButtonPopup, .pntDialogWidget, .pntMtoNDialogWidget pnt.web.helpers.PntMarkedItemsCollector factored out from PntObjectDeleteMarkedAction and PntObjectSelectionReportPage: - PntObjectSelectionReportPage::getMarkedOids moved to PntMarkedItemsCollector - PntObjectDeleteMarkedAction::getMarkedOids moved to PntMarkedItemsCollector - PntObjectDeleteMarkedAction::getMarkedOidParams moved to PntMarkedItemsCollector and renamed getMarkedItemParams - PntRequestHandler::getMarkedItemsCollector added - PntObjectSelectionReportPage::getRequestedObject now uses PntMarkedItemsCollector::getMarkedObjects - PntObjectDeleteMarkedAction::getRequestedObject now uses PntMarkedItemsCollector::getMarkedObjects and stores collector for later use from handleRequest - PntObjectDeleteMarkedAction::handleRequest now calls $this->collector->getMarkedItemParams