ChangeSet ID: 31008 CVSROOT: /opt/cvs-commit Module name: appdb Changes by: wineowner@winehq.org 2007/03/25 13:52:19
Modified files: . : objectManager.php include : objectManager.php
Log message: Alexander Nicolaysen Sørnes alex@thehandofagony.com objectManager: check editor values
Patch: http://cvs.winehq.org/patch.py?id=31008
Old revision New revision Changes Path 1.2 1.3 +8 -4 appdb/objectManager.php 1.9 1.10 +52 -11 appdb/include/objectManager.php
Index: appdb/objectManager.php diff -u -p appdb/objectManager.php:1.2 appdb/objectManager.php:1.3 --- appdb/objectManager.php:1.2 25 Mar 2007 18:52:19 -0000 +++ appdb/objectManager.php 25 Mar 2007 18:52:19 -0000 @@ -40,8 +40,12 @@ if($aClean['bIsRejected'] == 'true')
$oOtherObject = new $oObject->sClass($oObject->iId);
-/* Certain actions must be performed before the header is set */ -$oObject->processForm($aClean); +/* Certain actions must be performed before the header is set + processForm return TRUE on success, or a user-readable list of errors + on failure */ +$sErrors = $oObject->processForm($aClean); +if($sErrors === TRUE) + $sErrors = "";
if($oObject->iId && $aClean['sAction'] == "delete") $oObject->delete_entry(); @@ -58,7 +62,7 @@ if($oObject->iId) break;
case "edit": - $oObject->display_entry_for_editing($REQUEST_URI); + $oObject->display_entry_for_editing($REQUEST_URI, $sErrors); break;
default: @@ -66,7 +70,7 @@ if($oObject->iId) break; } } else if ($aClean['sAction'] == "add") - $oObject->add_entry($REQUEST_URI); + $oObject->add_entry($REQUEST_URI, $sErrors); else { // if displaying a queue display the help for the given queue Index: appdb/include/objectManager.php diff -u -p appdb/include/objectManager.php:1.9 appdb/include/objectManager.php:1.10 --- appdb/include/objectManager.php:1.9 25 Mar 2007 18:52:19 -0000 +++ appdb/include/objectManager.php 25 Mar 2007 18:52:19 -0000 @@ -116,7 +116,7 @@ class ObjectManager }
/* display the entry for editing */ - function display_entry_for_editing($sBackLink) + function display_entry_for_editing($sBackLink, $sErrors) { $this->checkMethods(array("outputEditor", "getOutputEditorValues", "update", "create")); @@ -124,9 +124,17 @@ class ObjectManager // link back to the previous page echo html_back_link(1, $sBackLink);
- echo '<form name="sQform" action="'.BASE.'objectManager.php?sClass='. - $this->sClass."&bIsQueue=".($this->bIsQueue ? "true" : "false"). - ' method="post" enctype="multipart/form-data">',"\n"; + $oObject = new $this->sClass($this->iId); + + /* Display errors, if any, and fetch form data */ + if($this->displayErrors($sErrors)) + { + global $aClean; + $oObject->getOutputEditorValues($aClean); + } + + echo '<form name="sQform" action="'.$this->makeUrl("edit", $this->iId). + '" method="post" enctype="multipart/form-data">',"\n";
echo '<input type="hidden" name="sClass" value="'.$this->sClass.'" />'; echo '<input type="hidden" name="sTitle" value="'.$this->sTitle.'" />'; @@ -136,8 +144,6 @@ class ObjectManager echo '<input type="hidden" name="bIsRejected" '. 'value='.($this->bIsRejected ? "true" : "false").' />';
- $oObject = new $this->sClass($this->iId); - $oObject->outputEditor();
/* if this is a queue add a dialog for replying to the submitter of the @@ -215,13 +221,24 @@ class ObjectManager }
/* Display screen for submitting a new entry of given type */ - function add_entry($sBackLink) + function add_entry($sBackLink, $sErrors = "") { $this->checkMethods(array("outputEditor", "getOutputEditorValues", "update", "create"));
+ $oObject = new $this->sClass();
+ /* Display help if it is exists */ + if(method_exists(new $this->sClass, "objectDisplayAddItemHelp")) + $oObject->objectDisplayAddItemHelp(); + + /* Display errors, if any, and fetch form data */ + if($this->displayErrors($sErrors)) + { + global $aClean; + $oObject->getOutputEditorValues($aClean); + } echo "<form method="post">\n";
$oObject->outputEditor(); @@ -272,6 +289,14 @@ class ObjectManager
$oObject->getOutputEditorValues($aClean);
+ /* Check input, if necessary */ + if(method_exists(new $this->sClass, "checkOutputEditorInput")) + { + $sErrors = $oObject->checkOutputEditorInput($aClean); + if($sErrors) + return $sErrors; + } + switch($aClean['sSubmit']) { case "Submit": @@ -299,12 +324,16 @@ class ObjectManager $this->delete_entry(); }
- if(!$this->bIsQueue) - $sAction = "view"; + /* Displaying the entire un-queued list for a class is not a good idea, + so only do so for queued data */ + if($this->bIsQueue) + $sRedirectLink = $this->makeUrl("view", false, "$this->sClass list"); else - $sAction = false; + $sRedirectLink = APPDB_ROOT; + + util_redirect_and_exit($sRedirectLink);
- util_redirect_and_exit($this->makeUrl($sAction, false, "$this->sClass list")); + return TRUE; }
/* Make an objectManager URL based on the object and optional parameters */ @@ -362,6 +391,18 @@ class ObjectManager
return $sQueueString; } + + function displayErrors($sErrors) + { + if($sErrors) + { + echo "<font color="red">\n"; + echo "The following errors were found<br />\n"; + echo "<ul>$sErrors</ul>\n"; + echo "</font><br />"; + } else + return FALSE; + } }
?>