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