Alexander Nicolaysen Sørnes : Use objectManager to display versions

Chris Morgan cmorgan at winehq.org
Wed Sep 19 19:41:14 CDT 2007


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

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Tue Sep 18 13:18:50 2007 +0200

Use objectManager to display versions

---

 appview.php               |    2 +-
 include/objectManager.php |   23 +++++++++++++++++++++++
 include/version.php       |   16 ++++++++++++++--
 objectManager.php         |   17 +++++++++++++----
 4 files changed, 51 insertions(+), 7 deletions(-)

diff --git a/appview.php b/appview.php
index 4ad6e8a..6b4e3b3 100644
--- a/appview.php
+++ b/appview.php
@@ -79,7 +79,7 @@ if( isset($aClean['iAppId']) )
 } else if( isset($aClean['iVersionId']) ) // We want to see a particular version.
 {
     $oVersion = new Version($aClean['iVersionId']);
-    $iTestingId = isset($aClean['iTestingId']) ? $aClean['iTestingId'] : null;
+
     // header
     apidb_header("Viewing App: ".version::fullName($oVersion->iVersionId));
     $oVersion->display($aClean);
diff --git a/include/objectManager.php b/include/objectManager.php
index 1b2737a..7473998 100644
--- a/include/objectManager.php
+++ b/include/objectManager.php
@@ -700,6 +700,29 @@ class ObjectManager
         }
     }
 
+    /* Gets the title of the page to be displayed. Classes can set
+       the page title depending on the action, or return null to
+       let objectManager use one, normally the title specified in
+       the URL. Since this only affects the user interface and not
+       functionality, objectGetCustomTitle is not a required method.
+       Why do we need this method?  Think of the versions, for instance.
+       If we were to fetch the name from the URL, that would mean
+       that changes to the version name would not be reflected in
+       static URLs, like external links to the AppDB. */
+    function get_title($sAction)
+    {
+        $oObject = new $this->sClass($this->iId);
+        $sTitle = "";
+
+        if(method_exists($oObject, "objectGetCustomTitle"))
+            $sTitle = $oObject->objectGetCustomTitle($sAction);
+
+        if(!$sTitle)
+            $sTitle = $this->sTitle;
+
+        return $sTitle;
+    }
+
     /* Gets the custom variables, if any, from a class depending on
        the action which is being taken, such as viewing an entry,
        editing one etc.
diff --git a/include/version.php b/include/version.php
index 1d14db2..85c723b 100644
--- a/include/version.php
+++ b/include/version.php
@@ -719,6 +719,18 @@ class version {
             $this->iObsoleteBy = 0;
     }
 
+    function objectGetCustomTitle($sAction)
+    {
+        switch($sAction)
+        {
+            case "display":
+                return "Viewing App: ".version::fullName($this->iVersionId);
+
+            default:
+                return null;
+        }
+    }
+
     function objectGetCustomVars($aClean, $sAction)
     {
         switch($sAction)
@@ -986,7 +998,7 @@ class version {
         // show the test results table
         if($oTest->iTestingId)
         {
-            $oTest->ShowVersionsTestingTable($_SERVER['PHP_SELF']."?iVersionId=".$this->iVersionId."&iTestingId=",
+            $oTest->ShowVersionsTestingTable($this->objectMakeUrl()."&iTestingId=",
                                              5);
         }
         if($_SESSION['current']->isLoggedIn())
@@ -1278,7 +1290,7 @@ class version {
 
     function objectMakeUrl()
     {
-        return APPDB_ROOT."appview.php?iVersionId=$this->iVersionId";
+        return APPDB_ROOT."objectManager.php?sClass=version&iId=$this->iVersionId";
     }
 
     function objectMakeLink()
diff --git a/objectManager.php b/objectManager.php
index 7052c62..e880a68 100644
--- a/objectManager.php
+++ b/objectManager.php
@@ -79,12 +79,21 @@ if(isset($aClean['sAction']) && $aClean['sAction'] == "add")
 if($oObject->iId && $aClean['sAction'] == "moveChildren" && $aClean['iNewId'])
     $oObject->move_children($aClean['iNewId']);
 
-apidb_header($oObject->sTitle);
+$sAction = $aClean['sAction'];
+
+/* If no action is specified, use a default depending on other parameters */
+if(!$sAction)
+{
+    if($oObject->iId)
+        $sAction = "display";
+}
+
+apidb_header($oObject->get_title($sAction));
 
 /* display a particular element */
 if($oObject->iId)
 {
-    switch($aClean['sAction'])
+    switch($sAction)
     {
         case "cancel":
         $oObject->display_table($aClean); /* go back to the queue */
@@ -102,11 +111,11 @@ if($oObject->iId)
         $oObject->delete_prompt();
         break;
 
-        default:
+        case "display":
         $oObject->view($_SERVER['REQUEST_URI'], $aClean);
         break;
     }
-} else if (isset($aClean['sAction']) && $aClean['sAction'] == "add")
+} else if ($sAction == "add")
 {
     $oObject->add_entry($_SERVER['REQUEST_URI'], $sErrors);
 } else




More information about the wine-cvs mailing list