appdb/ ./objectManager.php include/distributio ...

WineHQ wineowner at wine.codeweavers.com
Fri Apr 27 18:43:43 CDT 2007


ChangeSet ID:	31115
CVSROOT:	/opt/cvs-commit
Module name:	appdb
Changes by:	wineowner at winehq.org	2007/04/27 18:43:43

Modified files:
	.              : objectManager.php 
	include        : distribution.php objectManager.php 

Log message:
	Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
	Add om method for displaying a move child objects page. A link to this page is displayed in
	an entry's view page automatically if the class that entry has the required methods
	objectMoveChildren and objectGetId

Patch: http://cvs.winehq.org/patch.py?id=31115

Old revision  New revision  Changes     Path
 1.9           1.10          +4 -0       appdb/objectManager.php
 1.27          1.28          +23 -0      appdb/include/distribution.php
 1.18          1.19          +55 -0      appdb/include/objectManager.php

Index: appdb/objectManager.php
diff -u -p appdb/objectManager.php:1.9 appdb/objectManager.php:1.10
--- appdb/objectManager.php:1.9	27 Apr 2007 23:43:43 -0000
+++ appdb/objectManager.php	27 Apr 2007 23:43:43 -0000
@@ -82,6 +82,10 @@ if($oObject->iId)
         $oObject->display_entry_for_editing($REQUEST_URI, $sErrors);
         break;
 
+        case "showMoveChildren":
+        $oObject->display_move_children();
+        break;
+
         default:
         $oObject->view($REQUEST_URI);
         break;
Index: appdb/include/distribution.php
diff -u -p appdb/include/distribution.php:1.27 appdb/include/distribution.php:1.28
--- appdb/include/distribution.php:1.27	27 Apr 2007 23:43:43 -0000
+++ appdb/include/distribution.php	27 Apr 2007 23:43:43 -0000
@@ -592,6 +592,29 @@ class distribution {
     {
         return "<a href=\"".$this->objectMakeUrl()."\">$this->sName</a>";
     }
+
+    function objectMoveChildren($iNewId)
+    {
+        /* Keep track of how many children we modified */
+        $iCount = 0;
+
+        foreach($this->aTestingIds as $iTestId)
+        {
+            $oTest = new testData($iTestId);
+            $oTest->iDistributionId = $iNewId;
+            if($oTest->update(TRUE))
+                $iCount++;
+            else
+                return FALSE;
+        }
+
+        return $iCount;
+    }
+
+    function objectGetid()
+    {
+        return $this->iDistributionId;
+    }
 }
 
 ?>
Index: appdb/include/objectManager.php
diff -u -p appdb/include/objectManager.php:1.18 appdb/include/objectManager.php:1.19
--- appdb/include/objectManager.php:1.18	27 Apr 2007 23:43:43 -0000
+++ appdb/include/objectManager.php	27 Apr 2007 23:43:43 -0000
@@ -249,6 +249,52 @@ class ObjectManager
         $this->delete_entry();
     }
 
+    /* Display a page where the user can select which object the children of the current
+       object can be moved to */
+    function display_move_children()
+    {
+        $oObject = new $this->sClass($this->iId);
+        if(!$oObject->canEdit())
+        {
+            echo "Insufficient privileges.<br />\n";
+            return FALSE;
+        }
+
+        /* We only allow moving to non-queued objects */
+        if(!$hResult = $oObject->objectGetEntries(false, false))
+        {
+            echo "Failed to get list of objects.<br />\n";
+            return FALSE;
+        }
+
+        /* Display some help text */
+        echo "<p>Move all child objects of ".$oObject->objectMakeLink()." to the entry ";
+        echo "selected below, and delete ".$oObject->objectMakeLink()." afterwards.</p>\n";
+
+        echo "<table width=\"50%\" cellpadding=\"3\">\n";
+        echo html_tr(array(
+                "Name",
+                "Move here"),
+                    "color4");
+
+        for($i = 0; $oRow = mysql_fetch_object($hResult); $i++)
+        {
+            $oCandidate = $oObject->objectGetInstanceFromRow($oRow);
+            if($oCandidate->objectGetId() == $this->iId)
+            {
+                $i++;
+                continue;
+            }
+
+            echo html_tr(array(
+                    $oCandidate->objectMakeLink(),
+                    "<a href=\"".$this->makeUrl("moveChildren", $this->iId).
+                    "&iNewId=".$oCandidate->objectGetId()."\">Move here</a>"),
+                        ($i % 2) ? "color0" : "color1");
+        }
+        echo "</table>\n";
+    }
+
     /* Display screen for submitting a new entry of given type */
     function add_entry($sBackLink, $sErrors = "")
     {
@@ -291,6 +337,15 @@ class ObjectManager
 
         $oObject = new $this->sClass($this->iId);
 
+        /* Display a link to the move child objects page if the class has the necessary
+           functions and the user has edit rights.  Not all classes have child objects. */
+        if(method_exists($oObject, "objectMoveChildren") &&
+           method_exists($oObject, "objectGetId") && $oObject->canEdit())
+        {
+            echo "<a href=\"".$this->makeUrl("showMoveChildren", $this->iId,
+                 "Move Child Objects")."\">Move child objects</a><br /><br />\n";
+        }
+
         $oObject->display();
 
         echo html_back_link(1, $sBackLink);



More information about the wine-cvs mailing list