Alexander Nicolaysen Sørnes : objectManager: add preview support, use it for notes

Chris Morgan cmorgan at winehq.org
Sun Sep 23 10:55:04 CDT 2007


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

Author: Alexander Nicolaysen Sørnes <alexander at alex.alexstyrt>
Date:   Sun Sep 23 16:09:38 2007 +0200

objectManager: add preview support, use it for notes

---

 include/note.php          |   23 ++++++++++++++---------
 include/objectManager.php |   45 ++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 58 insertions(+), 10 deletions(-)

diff --git a/include/note.php b/include/note.php
index 3cf1157..7866f9e 100644
--- a/include/note.php
+++ b/include/note.php
@@ -136,6 +136,10 @@ class Note {
         return TRUE;
     }
 
+    function objectShowPreview()
+    {
+        return TRUE;
+    }
 
     function SendNotificationMail($sAction="add",$sMsg=null)
     {
@@ -183,7 +187,7 @@ class Note {
     /* Show note */
     /* $bDisplayOnly means we should not display any editing controls, even if */
     /*   the user has the ability to edit this note */
-    function display($bDisplayOnly = false)
+    function display($aVars = null)
     {
         switch($this->sTitle)
         {
@@ -216,15 +220,12 @@ class Note {
         $shOutput .= $this->shDescription;
         $shOutput .= "</td></tr>\n";
 
-        if(!$bDisplayOnly)
+        if((!$aVars || $aVars['bEditing'] != "true") && $this->canEdit())
         {
-            if ($this->canEdit())
-            {
-                $shOutput .= "<tr class=\"color1\" align=\"center\" valign=\"top\"><td>";
-                $shOutput .= "<form method=\"post\" name=\"message\" action=\"objectManager.php?sClass=note&sAction=edit&iId=".$this->iNoteId."&sReturnTo=".urlencode($oVersion->objectMakeUrl())."\">";
-                $shOutput .= '<input type="submit" value="Edit Note" class="button">';
-                $shOutput .= '</form></td></tr>';
-            }
+            $shOutput .= "<tr class=\"color1\" align=\"center\" valign=\"top\"><td>";
+            $shOutput .= "<form method=\"post\" name=\"message\" action=\"objectManager.php?sClass=note&sAction=edit&iId=".$this->iNoteId."&sReturnTo=".urlencode($oVersion->objectMakeUrl())."\">";
+            $shOutput .= '<input type="submit" value="Edit Note" class="button">';
+            $shOutput .= '</form></td></tr>';
         }
 
         $shOutput .= "</table>\n";
@@ -237,6 +238,9 @@ class Note {
     {
         switch($sAction)
         {
+            case "preview":
+                return array("bEditing");
+
             case "add":
                 return array("iVersionId","sNoteTitle");
 
@@ -261,6 +265,7 @@ class Note {
         echo html_frame_start("Edit Application Note {$aClean['noteId']}", "90%","",0);
         echo html_table_begin("width='100%' border=0 align=left cellpadding=6 cellspacing=0 class='box-body'");
 
+        echo '<input type="hidden" name="bEditing" value="true" />';
         echo '<input type="hidden" name="iNoteId" value="'.$this->iNoteId.'" />';
         echo '<input type="hidden" name="iVersionId" value="'.$this->iVersionId.'" />';
 
diff --git a/include/objectManager.php b/include/objectManager.php
index 0cd500c..7d749ae 100644
--- a/include/objectManager.php
+++ b/include/objectManager.php
@@ -1,5 +1,7 @@
 <?php
 
+define("PREVIEW_ENTRY", 2);
+
 /* class for managing objects */
 /* - handles processing of queued objects */
 /* - handles the display and editing of unqueued objects */
@@ -236,6 +238,9 @@ class ObjectManager
         {
             global $aClean;
             $oObject->getOutputEditorValues($aClean);
+
+            if($sErrors == PREVIEW_ENTRY)
+                $this->show_preview($oObject, $aClean);
         }
 
         echo '<form name="sQform" action="'.$this->makeUrl("edit", $this->iId).
@@ -312,6 +317,7 @@ class ObjectManager
             echo '<input name="sSubmit" type="submit" value="Submit" class="button">'.
                  '&nbsp',"\n";
             echo '<input name="sSubmit" type="submit" value="Delete" class="button" />'."\n";
+            $this->handle_preview_button();
             echo "</td></tr>\n";
         }
 
@@ -632,6 +638,20 @@ class ObjectManager
         echo "</table>\n";
     }
 
+    function show_preview($oObject, $aClean)
+    {
+        echo html_frame_start("Preview", "75%");
+
+        $aVars = $this->get_custom_vars($aClean, "preview");
+
+        if($aVars)
+            $oObject->display($aVars);
+        else
+            $oObject->display();
+
+        echo html_frame_end();
+    }
+
     /* Display screen for submitting a new entry of given type */
     function add_entry($aClean, $sErrors = "")
     {
@@ -648,6 +668,9 @@ class ObjectManager
         {
             global $aClean;
             $oObject->getOutputEditorValues($aClean);
+
+            if($sErrors == PREVIEW_ENTRY)
+                $this->show_preview($oObject, $aClean);
         }
 
         /* Display help if it is exists */
@@ -673,13 +696,26 @@ class ObjectManager
         echo "<div align=\"center\">";
         echo "<input type=\"submit\" class=\"button\" value=\"Submit\" ". 
         "name=\"sSubmit\" />\n";
+        $this->handle_preview_button();
         echo "</div></form>\n";
-
         echo html_back_link(1, $sBackLink);
 
         echo "</div>\n";
     }
 
+    function handle_preview_button()
+    {
+        $oObject = new $this->sClass($this->iId);
+
+        if(!method_exists($oObject, "objectShowPreview"))
+            return;
+
+        if(!$oObject->objectShowPreview())
+            return;
+
+        echo '<input type="submit" name="sSubmit" class="button" value="Preview" />';
+    }
+
     function handle_anonymous_submission()
     {
         $oObject = new $this->sClass();
@@ -822,6 +858,9 @@ class ObjectManager
         //       have to correct
         switch($aClean['sSubmit'])
         {
+            case "Preview":
+                return PREVIEW_ENTRY;
+
             case "Submit":
                 // if we have errors, return them
                 if($sErrors)
@@ -1070,6 +1109,10 @@ class ObjectManager
             if($sErrors === TRUE)
                 return TRUE;
 
+
+            if($sErrors == PREVIEW_ENTRY)
+                return TRUE;
+
             echo "<font color=\"red\">\n";
             echo "The following errors were found<br />\n";
             echo "<ul>$sErrors</ul>\n";




More information about the wine-cvs mailing list