Alexander Nicolaysen Sørnes : Support previewing version when submitting application

Chris Morgan cmorgan at winehq.org
Thu Oct 25 18:10:45 CDT 2007


Module: appdb
Branch: master
Commit: dba90a092432b392eb3c98d59481821ba40018bb
URL:    http://source.winehq.org/git/appdb.git/?a=commit;h=dba90a092432b392eb3c98d59481821ba40018bb

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Thu Oct 25 11:57:18 2007 +0200

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 "<input type=\"radio\" name=\"bPreviewVersion\"$shPreviewApp value=\"false\" /> Preview application<br />\n";
+            echo "<input type=\"radio\" name=\"bPreviewVersion\"$shPreviewVersion value=\"true\" /> Preview version\n";
+            echo html_frame_end();
         }
     }
 
@@ -297,13 +314,34 @@ class application_queue
         echo "</table>";
     }
 
-    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())




More information about the wine-cvs mailing list