1.4.beta2 colliding changes ! skinPropertyPart added pntActionTicket hidden field ! skinBody added span InformationPart ! skinButtonsPanel added id='Buttons0' ! phpPeanuts.css body added: overflow = 'hidden'; ! general.js added AJAX functions bugfixes ! skinPropertyPart added pntActionTicket hidden field non-colliding changes changes to add AJAX support - added to includes folder: skinAjaxPage.php skinAjaxUpdateElement.php - PntPage added: ::ajaxHandleRequest, ::ajaxPrintUpdates, ::ajaxPrintPartUpdate, ::isRequestAjax, ::ajaxPrintPartAttributes, ::getAjaxUpdatePartIds, ::ajaxShouldUpdate - PntPage::initForHandleRequest no longer does scouting if ::isRequestAjax - PntDialog, PntObjectDialog, PntObjectMtoNDialog, PntObjectEditDetailsDialog, PntPagePart ::ajaxPrintUpdates added - PntSite::forwardToHandler now calls ::ajaxHandleRequest if ::isRequestAjax - PntButtonsPanel::ajaxPrintUpdates added member variable $typeSeparator added id='Buttons1' - PntErrorPage::ajaxShouldUpdate added, returns true for MainPart and InformationPart, otherwise false 1.4.beta1 colliding changes ! QueryHandler now by default extends PntMysqlDao ! DatabaseConnection factored out abstract superclass pnt.db.PntDatabaseConnection ::connect depricated ! phppeanuts.css added style for noPrint, invisible in print ! skinMtoNSearchPart now moves the itemTableDiv down if getFilterPartString not empty ! includes/skinDetailsFormStartPart now urlEncodes data from request ! includes/skinDetailsFormStartPart, skinIndexPart now outputs hidden field pntActionTicket ! includes/skinFilterFormPart, skinMtoNFilterFormPart now encodes pntHandlerName and filtervalue1 ! includes/skinHeader, skinHeaderClean, skinHeaderSelectionDetailsReportPage now encodes label ! includes/skinGlobalFilterFormPart now encodes filter values ! includes/skinPropertyPart now encodes pntContext bug fixes - many changes to prevent corss site scripting, see under "cross site scripting prevention" - PntSite::getFunkyRequestData now urlEncodes and adds slashes - PntFilterFormPart::getInitializedAdvancedFilters no longer assigns cloned filter by reference ::advancedFilterCombine, ::advancedFilterOr now return reference Pnt changes for recursive delete (onDelete) - PntMultiValuePropertyDescriptor>>onDelete field, getter and setter added, ::getOnDeleteLabels, ::getRecurseDelete ::getVerifyOnDelete added - PntDbClassDescriptor::getVerifyOnDelete added - PntDbObject ::getDeleteErrorMessages now adds error messages for multi value properties onDelete = 'c' ::getOnDeleteErrorMessage added ::recurseDelete added ::delete extracted: ::pntDelete; now calls recurseDelete ::addVerifyOnDeleteValues added - PntDialog::getButtonsList only adds OK button if it exists - PntObjectEditDetailsPage for use of ObjectVerifyDeleteDialog: ::printDeleteScript added ::includeOrPrintDetailsTable now calls printDeleteScript ::getButtonList Delete button now calls script function pntVerifyAndDelete() - PntObjectEditDetailsPart for use of ObjectVerifyDeleteDialog: ::printDeleteScript added ::includeOrPrintDetailsTable now calls printDeleteScript - PntObjectIndexPage ::printDeleteScript added ::printIndexPart now calls printDeleteScript ::getButtonList Delete button now calls script function pntVerifyAndDelete() ::getNoItemsMarkedMessage added pnt changes for better defaults for label and labelsort - PntClassDescriptor::getDefaultLabelProp added - PntObject::getLabel now returns string from value of defaultLabelProp if exists - PntDbClassDescriptor now caches labelSort - PntDbObject::getLabelSort now returns sort by defaultLabelProp if exists - PntDbObject::getLabel now returns label concatenated from labelsort navigations results - PntSqlSort::getSortNavs added - PntSqlFilter>>navigation added - PntSqlFilter::getInstanceForNav now sets >>navigation on created filter - PntSqlFilter, PntSqlJoinFilter::initFromPersistArray not initializes >>navigation - PntDbObject::addDbFieldProps now uses $this->getClassDescriptor()->getTabelName() pnt solve doubling between MtoNDialogWidget and MtoNPropertyButton - PntPage::getMultiValuePropertyButtonScript now uses MtoNPropertyPage if formText exists - PntObjectDetailsPage::printDetailsRows now only prints row for MtoNDialogWidget if no multi value property button Adding support for SQLite database (alle verwerkt in phpPeanuts examples 1.4 alpha) ! DatabaseConnection factored out abstract superclass pnt.db.PntDatabaseConnection ::connect depricated ::defaultConnection added to hold default connection ::makeConnection now lets queryHandler make the connection - PntDao added, generic methods from PntQueryHandler moved to it, added ::getConnection, setConnection, setDefaultConnection PntDao constructor now has parameter $connection instead of $query - PntMysqlDao added, specific methods from PntQueryHandler moved to it, added ::connect, ::getAssocRow, ::realEscapeString, ::dataSeek - PntSqliteDao added, specific methods for SQLite added - PntQueryHandler depricated - PntDbClassDescriptor ::_getPeanutsRunQueryHandler, ::_loadMissingFields now calls getAssocRow on queryHandler - PntFilterFormPart::_runQhStoreAllItemsSize_getItemsLimitedTo now calls getAssocRow on queryHandler pnt changes for PntPdoDao - PntObjectSaveAction::handleRequest factored out ::saveObject - PntMysqlDao and PntSqliteDao::getDbmsName now returns lowercase - PntDao::addSqlFromSpec added $groupBy parameter - PntDao::supportsSelectRowCount added - PntSite::forwardRequest now checks DatabaseConnection::defaultConnection() - PntSite moved class includes for DatabaseConnection and QueryHandler to includeLibraries - PntDatabaseConnection>>dsnPrefix and >>dsnBody added - PntDatabaseConnection::getDsn added - PntMysqlDao and PntSqliteDao::_runQuery now keeps track of rowIndex - PntMysqlDao and PntSqliteDao::getAssocRow now keeps track of rowIndex - PntMysqlDao and PntSqliteDao::getSingleValue no longer resets recordpointer - PntDao and PntMysqlDao::getAssocRows no longer reset recordpointer - PntPdoDao added - PntDbObject::loadData no longer calls QueryHandler::getRowCount, releases qh - PntDbClassDescriptor::_getPeanutsRunQueryHandler, _loadMissingFields no longer calls QueryHandler::getRowCount - PntSqlFilter, PntSqlSort::getSql_WhereToLimit added $groupBy parameter - PntFilterFormPart::getFilterResult now counts rows through separate query if not QueryHandler::supportsSelectRowCount pnt changes for database transactions - PntObjectDeleteMarkedAction::handleRequest factored out finishSuccess, finishFailure - PntObjectDeleteMarkedAction::getRequestedObject now caches in $this->object - PntAction added $queryHandler, ::beginTransaction, ::commit, ::rollback - PntPage::getTypeClassDescriptor moved to PntRequestHandler - PntObjectSaveAction replaced memer varibale saveErrors by errors - PntObjectSaveAction, PntObjectDeleteAction, PntObjectDeleteMarkedAction::handleRequest calls added to transaction methods - PntObjectSaveAction::saveObject now checks for errors returned by PntDbObject::save and returns wheater the save was successfull - PntObjectDeleteAction::handleRequest factored out ::deleteObject and checks if errors have been added - PntObjectDeleteAction::deleteObject now checks for PntErrors returned by PntDbObject::delete - PntObjectDeleteMarkedAction::handleRequest factored out ::deleteObjects and checks if errors have been added - PntObjectDeleteMarkedAction::deleteObjects checks for PntErrors returned by PntDbObject::delete ! PntAction added ::rerouteErrorHandling and ::handleError * REMARK: to avoid furter changes to the database after rollBack, * not only fatal errors will lead to die(), but all reported errors, * i.e. all that will lead to the error page in a production environment. Pnt changes for authentication and authorization support - SecurityManager added - pnt.PntSecurityManager added, provides defaults: no authentication, allow all - PntSite::handleRequest now checks authentication with security manager, if not authenticated, calls ::forwardToLoginPage - PntSite added ::getSecurityManager, ::forwardToLoginPage, ::checkAccess, ::accessDenied - PntObjectSaveAction::handleRequest now calls checkAccess; ::checkAccess added. if not authorized error message is shown through origin page. - PntObjectDeleteAction::handleRequest now calls checkAccess; ::checkAccess added if not authorized error message is shown through origin page. - PntObjectDeleteMarkedAction::handleRequest now calls checkAccess; ::checkAccess added if not authorized error message is shown through origin page. - PntPage::handleRequest now calls checkAccess; ::checkAccess added. if not authorized request is forwarded to ErrorPage, then die() - PntObjectDetailsPage, PntObjectPropertyPage, PntErrorPage, PntIndexPage, PntObjectMtoNPropertyPage, PntObjectSortDialog ::checkAccess added if not authorized request is forwarded to ErrorPage, then die() - PntErrorPage::getBody now checks errorMessage for script tag ::printMenuPart added to replace menu with back link - PntObjectSaveAction::processMtoNRelValue calls checkProcessMtoNRelValue, ::checkProcessMtoNRelValue added, if not authorized error message is shown through origin page. - PntPage::addMultiValuePropertyButtons only adds property button if authorized to view the property values, button is only made to edit if authorized to edit property values. - PntObjectReportPage::printMultiPropsPart only prints properties for which viewing is authorized - PntObjectSortDialog::getRequestedObject now returns reference to null - PntSessionbasedScout::getFootprintUri now strips authLastRand - PntErrorHandler::logError no longer logs cookies and other security sensitive params (to implement authentication you need to add a class LoginPage and override the SecurityManager::isAuthenticated and ::authenticate) (to implement authorization you need to override the appropiate check.. methods on SecurityManager) cross site scripting prevention - PntFormMtoNRelValue, PntFormNavValue::setConvertMarkup $value parameter can now be omitted ~ PntRequestHandler::getFormTexts now uses ::getReqParam so that request parameters are now sanitized. As a result html tags will be stripped unless you override ::getReqParam or PntSite::sanitize ~ PntObjectSaveAction::convertAndValidateFormValues, ::processMtoNRelValue processing form values no longer provides form values to setConvertMarkup so that contentLabels set by getFormTexts are used. - PntFilterFormPart::getFilter1Value1/2 now calls ::getFilterValue1/2 ::getFilterValue1/2, ::getAllItemsSize, ::getPageItemOffset, ::getSortId, ::getFilterId, ::getSortIsSpecific, getSortDirection now use ::getReqParam - PntSortDialogPart::getSortId, ::getSortDirection now uses ::getReqParam - PntAction::finishAndRedirectToContext now uses ::getReqParam - PntObjectDeleteMarkedAction::getContextRequest now uses ::getReqParam - PntObjectSaveAction::convertAndValidateFormValues, ::finishSuccess now uses ::getReqParam ::finishFailure, getBackToOriginRequestData no longer uses ::getRequestParam - PntObjectEditDetailsDialog::getButtonsList now uses ::getReqParam - PntObjectSortDialog::getPathAfterEmptyMessage now uses ::getReqParam - PntErrorPage::getLabel, ::getBody now use ::getReqParam - PntObjectEditDetailsPage, PntObjectPropertyPage, PntObjectSelectionReportPage, PntPage ::doScouting now uses ::getReqParam - PntObjectMtoNSearchPage, PntObjectPropertyPage, PntObjectDialog::getPropertyName now uses ::getReqParam - PntObjectDialog::getRequestedObjectDefault now uses ::getReqParam - PntPage::isLayoutReport now uses ::getReqParam - PntObjectSearchPage::getPropertyFilter now uses ::getReqParam - PntMtoNPropertyPart::getPropertyValueFor now uses ::getReqParam - PntSortDialogPart::initNsorts, printFilterSelectWidget now uses ::getReqParam - PntPage::includeSkin added extra parameter $param - PntObjectSaveAction::processMtoNParamsFor removed. Depricated version 1.2.0 separate form parameters for added and removed ids no longer supported - PntObjectSaveAction::getOkMessage now returns plain text - PntRequestHandler::getInformation() now converts pntInfo parameter to html - PntErrorHandler::getUserErrorText now returns plain text - PntErrorPage::getBody now converts errorText parameter to html, adds

tags - PntErrorPage::getDefaultErrorMessage factored out from ::getBody - PntDialog, PntObjectEditDetailsDialog, PntObjectMtoNDialog::printReturnFuncName now use ::getPropertyName - PntPage::getPropertyName moved here from PntObjectPropertyPage - PntObjectDetailsPage, PntObjectPropertyPage::getButtonsList now urlEncodes id - PntObjectPropertyPage::addNewButton now urlEncodes id and pntContext getDetailsHref now urlEcodes pntContext - PntObjectEditDetailsPage, PntObjectPropertyPage::getInformation now converts requestParam to html - PntObjectEditDetailsPage::getButtonsList now urlEcodes requestData - PntObjectReportPage::printLabelPart now encodes requestParam and label ::printMultiPropLabel now encodes propery label - PntSite::getContextHref now urlEncodes data from request - PntObjectDialog::getNewItemButton no longer uses data directly from request ::getCellOnClickParam now escapes argument strings - PntPage::getMultiValuePropertyButtonScript now urlEncodes data from request ::printSetTitle now encodes title ::printPart now checks partName to be alphaNumeric ::getFilterPartString now encodes filter description - PntRequestHandler::htOut added - PntErrorHandler::printDebugInfo now encodes requestData - pntPrintBacktrace now encodes function arguments - PntObjectSaveAction::convertAndValidateFormValues now triggers warning if formKey missing ::getErrorInformation now encodes saveErrorMessages - PntObjectSelectionReportPage::printItemCells now calls ::getCellOnClickParam - PntObjectDetailsPage::printLabelPart now encodes label - PntObjectDetailsPage, PntDetailsPart ::printFormLabel now encodes label ::getDetailsLinkFromNavText now encodes id - PntObjectEditDetailsPage::printInformationPart now encodes pathLabels and errors from formTexts - PntObjectIndexPage::getPageButtonScript now encodes pageItemOffset - PntButtonPart::printButton now encodes / escapes the parameters - ObjectMtoNPropertyPage::printScaleContentScripts now converts dialogSizes to ints - PntFilterFormPart::printSearchButtonLabel now encodes ::printExtraFormParameters now only prints parameters whose keys are in ::getExtraFormParameterKeys and encodes the values ::printAdvancedFilterDescription now encodes descriptions ::printAdvancedFilterDiv now includes skinAdvFilterDiv, which encodes filterValues ::getFilterCmp, ::getFilterCombinator, ::getFilter1Cmp now uses getReqParam - PntTablePart::addPropPath now encodes label ::printTableId now encodes ::setTableWidth now converts to int ::printItemSelectCell now encodes oid ::getCellOnClickParam now enoces id - PntTabsPart::setName now checks the name to be alphanumeric ::processPartArgumentsConvertTabsSpec now checks tab names to be alphanumeric - PntMtoNFilterFormPart::printAdvancedFilterDiv now includes skinMtoNAdvFilterDiv, which encodes filterValues - PntMtoNPropertyPart::printRows now encodes id - PntCheckboxWidget::getCheckedValue now encodes checkedValue - PntDialogWidget, PntMtoNDialogWidget::setTextSize, ::printDialogSize now converts to int - PntSelectWidget::setWidth not converts to int ::setOptionsFromObjects now encodes id - PntTextWidget::setSize now converts to int - PntObjectEditDetailsDialog::printReturnAndCloseScript now escapes id quotes - PntObjectMtoNDialog::printSaveScript now escapes labelItemSeparator - PntObjectSortDialog::getPathAfterEmptyMessage now checks dsOptLbl to be alphaNumeric ! includes/skinDetailsFormStartPart now urlEncodes data from request ! includes/skinFilterFormPart, skinMtoNFilterFormPart now encodes pntHandlerName and filtervalue1 ! includes/skinHeader, skinHeaderClean, skinHeaderSelectionDetailsReportPage now encodes label ! includes/skinGlobalFilterFormPart now encodes filter values ! includes/skinPropertyPart now encodes pntContext cross site request forgery prevention - PntPage::printNextActionTicket added - PntAction::checkActionTicket added - PntObjectSaveAction, PntObjectDeleteAction, PntObjectDeleteMarkedAction ::checkAccess now calls ::checkActionTicket ! includes/skinDetailsFormStartPart, skinIndexPart now outputs hidden field pntActionTicket pnt unittest changes - pnt.test.CaseDbObject added support for testing wiht SQLite ::testSqlDateTimeFormat now calls getAssocRow on queryHandler - pnt.test.CaseDbPolymorphic added support for testing wiht SQLite - ClassDescriptorTest::test_getDefaultLabelProp added - PntObjectTest::test_getLabel added - TestDbObject, TestDbSub, TestPropsObject member variable singleValuePropNames added classDescriptor - CaseDbObject::getCreateTableSqlMySQL and getCreateTableSqlSQLite increased doubleField length to 7 - moved getLabelSort from TestDbObject to TestDbSub - TestDbObject::testSqlDateTimeFormat now uses QueryHandler - CaseSqlCombiFilter::testCombiFilterParts unsets Filter::queryHandler before assertSame - PntNavigationsTests::test_createPntNavigation now uses PntDao - testSqlFilterTest::initDateBetweenFilter now initializes navigation - PntXmlElementTest::test_navtext adapted to PntObject::getLabel returning value of first single value fieldprop - pnt.test.CasePntGeneralFunctions::test_is_subclassOr added - pnt.test.meta.TestPropsObject::getDerived2 added - pnt.test.CaseSecurityManager added - pnt.test.TestSecurityManager added other - pntPhp5Functions ::is_subclassOr now uses is_subclass_of if php version >= 5.0.3 - PntObjectSearchPage now sets setImplicitCombiFilter to AND for the value of the property specified in pntProperty request param. The value is specified in the id request param. modified/added: ::getFilterFormPart, ::getPropertyFilter, ::getFilterPartString, ::getFilterPartDescription - PntObjectDialog::getPropertyFilter overridden, returns null - PntObjectMtoNSearchPage::getPropertyFilter added, returns null - PntObjectMtoNPropertyPage::printBooleanProps prints hidden formfields for properties with type = boolean - PntObjectMtoNPropertyPage::printMainPart now calls ::printBooleanProps - PntObjectMtoNPropertyPage::printHandlerOrigin added - PntObjectMtoNPropertyPage::printMainPart now calls printHandlerOrigin - PntPage::getConvert added optional parameters $breaksForLineFeeds=false, $preformatAndTab=0 ! includes/skinHeaderSelectionDetailsReporttPage.php added - PntObjectReportPage added field showButtonsPanel = true; ::printButtonsPanel added, does only print if field showButtonsPanel - PntObjectSelectionDetailsReportPage added - PntObjectSelectionReportPage added class comment - PntXmlTextPart added ::setPreformat ::merge now uses >>preformat to eventually convert the content as preformatted - PntObjectDialog::getRequestedObjectDefault now uses ::getRequestParam - PntRequestHandler::forwardToHandler added - PntRequestHandler::forwardRequest now calls ::forwardToHandler - PntObjectDeleteAction, PntObjectDeleteMarkedAction, PntObjectSaveAction ::finishFailure now calls ::forwardToHandler on controller - PntRequestHandler::getRequestedObject now gets id using ::getReqParam - PntObjectDeleteAction now uses ::getReqParam - PntObjectPropertyPage::handleRequest now uses ::forwardToHandler ! phppeanuts.css added style for noPrint, invisible in print ! skinMtoNSearchPart now moves the itemTableDiv down if getFilterPartString not empty