From dba90a092432b392eb3c98d59481821ba40018bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Nicolaysen=20S=C3=B8rnes?= Date: Thu, 25 Oct 2007 11:57:18 +0200 Subject: [PATCH] Support previewing version when submitting application --- include/application_queue.php | 44 ++++++++++++++++++++++++++++++++--- include/version.php | 17 ++++++++++---- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/include/application_queue.php b/include/application_queue.php index 883e126..93e1171 100644 --- a/include/application_queue.php +++ b/include/application_queue.php @@ -160,7 +160,7 @@ class application_queue return FALSE; } - function outputEditor() + function outputEditor($aClean = array()) { /* We ask the user for the application name first so as to avoid duplicate submissons; a list of potential duplicates is displayed on the next page */ @@ -203,6 +203,23 @@ class application_queue $this->oVersionQueue->oVersion->iVersionId, $aClean); $this->oVersionQueue->oTestDataQueue->outputEditor(); + + /* Allow the user to choose whether to preview the application view + or the version view. Application view is default */ + echo html_frame_start("Select What to Preview"); + $sPreviewVersion = $aClean['bPreviewVersion'] ? $aClean['bPreviewVersion'] : ""; + + $shPreviewApp = ''; + $shPreviewVersion = ''; + + if($sPreviewVersion == "true") + $shPreviewVersion = ' checked="checked"'; + else + $shPreviewApp = ' checked="checked"'; + + echo " Preview application
\n"; + echo " Preview version\n"; + echo html_frame_end(); } } @@ -297,13 +314,34 @@ class application_queue echo ""; } - function display() + function objectGetCustomVars($sAction) + { + switch($sAction) + { + case "preview": + return array("bPreviewVersion"); + + default: + return 0; + } + } + + function display($aClean = array()) { /* Cache the version object if it is not in the database */ if(!$this->oVersionQueue->objectGetId()) $this->oApp->aVersions = array($this->oVersionQueue->oVersion); - $this->oApp->display(); + $sPreviewVersion = $aClean['bPreviewVersion'] ? $aClean['bPreviewVersion'] : ""; + + if($sPreviewVersion == "true") + { + $this->oVersionQueue->oVersion->oApp = $this->oApp; + $this->oVersionQueue->display(); + } else + { + $this->oApp->display(); + } } function objectMakeUrl() diff --git a/include/version.php b/include/version.php index efa8b72..3b9bd2f 100644 --- a/include/version.php +++ b/include/version.php @@ -26,6 +26,7 @@ define("LICENSE_RETAIL", "Retail"); class version { var $iVersionId; var $iAppId; + var $oApp; /* Parento object */ var $sName; var $sDescription; var $sTestedRelease; @@ -759,6 +760,16 @@ class version { return TRUE; } + /* Not standard OM function yet, but will be in the future */ + public function objectGetParent() + { + /* No id so we can't query the DB, but perhaps an entry is cached? */ + if(!$this->iAppId) + return $this->oApp; + + return new application($this->iAppId); + } + public function display($aVars = array()) { /* is this user supposed to view this version? */ @@ -767,11 +778,7 @@ class version { $iTestingId = $aVars['iTestingId'] ? $aVars['iTestingId'] : 0; - $oApp = new Application($this->iAppId); - - // Oops! application not found or other error. do something - if(!$oApp->iAppId) - util_show_error_page_and_exit('Internal Database Access Error. No App found.'); + $oApp = $this->objectGetParent(); // show Vote Menu if($_SESSION['current']->isLoggedIn())