lots of operator stuff. add 'advanced' subfolder to left browser. fix a few bugs...
authorchriskl <chriskl>
Sun, 26 Oct 2003 10:59:16 +0000 (10:59 +0000)
committerchriskl <chriskl>
Sun, 26 Oct 2003 10:59:16 +0000 (10:59 +0000)
BUGS
HISTORY
browser.php
classes/database/Postgres.php
classes/database/Postgres73.php
lang/english.php
lang/recoded/english.php
operators.php
rules.php
schema.php

diff --git a/BUGS b/BUGS
index 2c79ebd4fb87f20ef28c7e16f8892837e9b1409f..770737acd4450c24a16ca02722dd2d60c74c7821 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1,6 +1,6 @@
-choose operator on select screen
 fix getIndexes() and getConstraints() for < 7.3 to know about index type
   (eg. constraints can only be btree indexes)
 re-enable help system
+all DROP and ALTER commands MUST be fully schema-qualified otherwise you can accidentally drop stuff in pg_catalog :(
 
 
diff --git a/HISTORY b/HISTORY
index 1876df413cf6f567dfa54d7e45b295831e445053..0232dbf4d96e3d05107110fa55d298413e8561a0 100644 (file)
--- a/HISTORY
+++ b/HISTORY
@@ -24,6 +24,8 @@ Bugs
 * BIGSERIAL missing from PostgreSQL 7.2
 * Types lengths (eg. varchar(255)) weren't being displayed properly
   in PostgreSQL 7.0.x
+* Resetting sequence on 7.1+ now restarts at 1, not 2
+* Remove deprecated column default 'now' from SQL script
 
 Translations
 * Afrikaans from Petri Jooste
index d42ae0a70ca17a34b30dad1fc210f3e4c850bec4..8ec9605e13968402a90ee89e50d4153faf1069b0 100644 (file)
@@ -5,7 +5,7 @@
         * if you click on a database it shows a list of database objects in that
         * database.
         *
-        * $Id: browser.php,v 1.18 2003/09/10 01:55:52 chriskl Exp $
+        * $Id: browser.php,v 1.19 2003/10/26 10:59:16 chriskl Exp $
         */
 
        // Include application functions
                        // Add folder to schema
                        $schemanode->addItem($dom_node);
                }
+               // Advanced
+               if ($data->hasTypes() || $data->hasOperators()) {
+                       $adv_node = &new HTML_TreeNode(array(
+                                                       'text' => $lang['stradvanced'], 
+                                                       'link' => addslashes(htmlspecialchars("schema.php?{$querystr}&" . SID)), 
+                                                       'icon' => 'folder.gif', 
+                                                       'expandedIcon' => 'folder-expanded.gif',
+                                                       'linkTarget' => 'detail'));
+
+                       // Add folder to schema
+                       $schemanode->addItem($adv_node);                        
+               }
                // Types
                if ($data->hasTypes()) {
                        $type_node = &new HTML_TreeNode(array(
                                                        'linkTarget' => 'detail'));
 
                        // Add folder to schema
-                       $schemanode->addItem($type_node);
+                       $adv_node->addItem($type_node);
                }
                // Operators
                if ($data->hasOperators()) {
                                                        'linkTarget' => 'detail'));
 
                        // Add folder to schema
-                       $schemanode->addItem($opr_node);
+                       $adv_node->addItem($opr_node);
                }
        }       
 
index df110846d7bc93fee513bf5c07e9f01fc83a7dc0..f98031b884ddf51ec20fe2100a39b20a07b1e899 100755 (executable)
@@ -4,7 +4,7 @@
  * A class that implements the DB interface for Postgres
  * Note: This class uses ADODB and returns RecordSets.
  *
- * $Id: Postgres.php,v 1.158 2003/10/14 05:40:30 chriskl Exp $
+ * $Id: Postgres.php,v 1.159 2003/10/26 10:59:16 chriskl Exp $
  */
 
 // @@@ THOUGHT: What about inherits? ie. use of ONLY???
@@ -847,9 +847,9 @@ class Postgres extends BaseDB {
                                // If value is null, 't' or 'f'...
                                if ($value === null || $value == 't' || $value == 'f') {
                                        echo "<select name=\"", htmlspecialchars($name), "\">\n";
-                                       echo "<option value=\"\"", ($value === null) ? ' selected' : '', "></option>\n";
-                                       echo "<option value=\"t\"", ($value == 't') ? ' selected' : '', ">{$lang['strtrue']}</option>\n";
-                                       echo "<option value=\"f\"", ($value == 'f') ? ' selected' : '', ">{$lang['strfalse']}</option>\n";
+                                       echo "<option value=\"\"", ($value === null) ? ' selected="selected"' : '', "></option>\n";
+                                       echo "<option value=\"t\"", ($value == 't') ? ' selected="selected"' : '', ">{$lang['strtrue']}</option>\n";
+                                       echo "<option value=\"f\"", ($value == 'f') ? ' selected="selected"' : '', ">{$lang['strfalse']}</option>\n";
                                        echo "</select>\n";
                                }
                                else {
@@ -1524,7 +1524,7 @@ class Postgres extends BaseDB {
        }
 
        /** 
-        * Resets a given sequence to 1
+        * Resets a given sequence to 2 (lowest possible in 7.0)
         * @param $sequence Sequence name
         * @return 0 success
         */
@@ -2212,28 +2212,64 @@ class Postgres extends BaseDB {
 
                return $this->selectSet($sql);
        }
+
+       /**
+        * Returns all details for a particular operator
+        * @param $operator_oid The oid of the operator
+        * @return Function info
+        */
+       function getOperator($operator_oid) {
+               $this->clean($operator_oid);
+
+               $sql = "
+                       SELECT
+            po.oid,
+                               po.oprname,
+                               (SELECT typname FROM pg_type pt WHERE pt.oid=po.oprleft) AS oprleftname,
+                               (SELECT typname FROM pg_type pt WHERE pt.oid=po.oprright) AS oprrightname,
+                               (SELECT typname FROM pg_type pt WHERE pt.oid=po.oprresult) AS resultname,
+                               po.oprcanhash,
+                               (SELECT oprname FROM pg_operator po2 WHERE po2.oid=po.oprcom) AS oprcom,
+                               (SELECT oprname FROM pg_operator po2 WHERE po2.oid=po.oprnegate) AS oprnegate,
+                               (SELECT oprname FROM pg_operator po2 WHERE po2.oid=po.oprlsortop) AS oprlsortop,
+                               (SELECT oprname FROM pg_operator po2 WHERE po2.oid=po.oprltcmpop) AS oprltcmpop,
+                               (SELECT oprname FROM pg_operator po2 WHERE po2.oid=po.oprgtcmpop) AS oprgtcmpop,
+                               po.oprcode::regproc AS oprcode,
+                               --(SELECT proname FROM pg_proc pp WHERE pp.oid=po.oprcode) AS oprcode,
+                               (SELECT proname FROM pg_proc pp WHERE pp.oid=po.oprrest) AS oprrest,
+                               (SELECT proname FROM pg_proc pp WHERE pp.oid=po.oprjoin) AS oprjoin
+                       FROM
+                               pg_operator po
+                       WHERE
+                               po.oid='{$operator_oid}'
+               ";
        
+               return $this->selectSet($sql);
+       }
+
        /**
         * Drops an operator
-        * @param $oprname The name of the operator to drop
-        * @param $lefttype The left type (NULL for none)
-        * @param $righttype The right type (NULL for none)
+        * @param $operator_oid The OID of the operator to drop
         * @param $cascade True to cascade drop, false to restrict
         * @return 0 success
         */
-       function dropOperator($oprname, $lefttype, $righttype, $cascade) {
-               $this->fieldClean($oprname);
+       function dropOperator($operator_oid, $cascade) {
+               // Function comes in with $object as operator OID
+               $opr = &$this->getOperator($operator_oid);
+               $this->fieldClean($opr->f['oprname']);
 
-               $sql = "DROP OPERATOR \"{$oprname}\"(";
-               echo ($lefttype === null) ? 'NONE' : $lefttype;
-               echo ', ';
-               echo ($righttype === null) ? 'NONE' : $righttype;
-               echo ')';               
+               $sql = "DROP OPERATOR {$opr->f['oprname']} (";
+               // Quoting or formatting here???
+               if ($opr->f['oprleftname'] !== null) $sql .= $opr->f['oprleftname'] . ', ';
+               else $sql .= "NONE, ";
+               if ($opr->f['oprrightname'] !== null) $sql .= $opr->f['oprrightname'] . ')';
+               else $sql .= "NONE)";
+               
                if ($cascade) $sql .= " CASCADE";
-
+               
                return $this->execute($sql);
        }       
-       
+
        // User functions
        
        /**
@@ -3129,7 +3165,7 @@ class Postgres extends BaseDB {
 
        /**
         * Returns all details for a particular function
-        * @param $func The name of the function to retrieve
+        * @param $function_oid The OID of the function to retrieve
         * @return Function info
         */
        function getFunction($function_oid) {
index 811e1ab31c61aa7910a2a40908cc29284b6e9397..5f91c6b66ea5b0f8ea19ea78f21f633018b49616 100644 (file)
@@ -4,7 +4,7 @@
  * A class that implements the DB interface for Postgres
  * Note: This class uses ADODB and returns RecordSets.
  *
- * $Id: Postgres73.php,v 1.71 2003/10/13 08:50:04 chriskl Exp $
+ * $Id: Postgres73.php,v 1.72 2003/10/26 10:59:16 chriskl Exp $
  */
 
 // @@@ THOUGHT: What about inherits? ie. use of ONLY???
@@ -88,7 +88,7 @@ class Postgres73 extends Postgres72 {
                elseif (sizeof($paths) == 0) return -2;
                $this->fieldArrayClean($paths);
 
-               $sql = 'SET SEARCH_PATH TO "' . implode('"', $paths) . '"';
+               $sql = 'SET SEARCH_PATH TO "' . implode('"', $paths) . '", pg_catalog';
                
                return $this->execute($sql);
        }
@@ -215,7 +215,7 @@ class Postgres73 extends Postgres72 {
                if (sizeof($atts) == 0) return array();
 
                $sql = "SELECT attnum, attname FROM pg_catalog.pg_attribute WHERE 
-                       attrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}'AND
+                       attrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' AND
                        relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$this->_schema}')) 
                        AND attnum IN ('" . join("','", $atts) . "')";
 
@@ -1211,13 +1211,14 @@ class Postgres73 extends Postgres72 {
         * @return All operators
         */      
        function &getOperators() {
+               // We stick with the subselects here, as you cannot ORDER BY a regtype
                $sql = "
                        SELECT
             po.oid,
                                po.oprname,
                                (SELECT pg_catalog.format_type(oid, NULL) FROM pg_catalog.pg_type pt WHERE pt.oid=po.oprleft) AS oprleftname,
                                (SELECT pg_catalog.format_type(oid, NULL) FROM pg_catalog.pg_type pt WHERE pt.oid=po.oprright) AS oprrightname,
-                               (SELECT pg_catalog.format_type(oid, NULL) FROM pg_catalog.pg_type pt WHERE pt.oid=po.oprresult) AS resultname
+                               po.oprresult::pg_catalog.regtype AS resultname
                        FROM
                                pg_catalog.pg_operator po
                        WHERE
@@ -1228,7 +1229,41 @@ class Postgres73 extends Postgres72 {
 
                return $this->selectSet($sql);
        }       
+
+       /**
+        * Returns all details for a particular operator
+        * @param $operator_oid The oid of the operator
+        * @return Function info
+        */
+       function getOperator($operator_oid) {
+               $this->clean($operator_oid);
+
+               $sql = "
+                       SELECT
+            po.oid,
+                               po.oprname,
+                               oprleft::pg_catalog.regtype AS oprleftname,
+                               oprright::pg_catalog.regtype AS oprrightname,
+                               oprresult::pg_catalog.regtype AS resultname,
+                               po.oprcanhash,
+                               oprcom::pg_catalog.regoperator AS oprcom,
+                               oprnegate::pg_catalog.regoperator AS oprnegate,
+                               oprlsortop::pg_catalog.regoperator AS oprlsortop,
+                               oprrsortop::pg_catalog.regoperator AS oprrsortop,
+                               oprltcmpop::pg_catalog.regoperator AS oprltcmpop,
+                               oprgtcmpop::pg_catalog.regoperator AS oprgtcmpop,
+                               po.oprcode::pg_catalog.regproc AS oprcode,
+                               po.oprrest::pg_catalog.regproc AS oprrest,
+                               po.oprjoin::pg_catalog.regproc AS oprjoin
+                       FROM
+                               pg_catalog.pg_operator po
+                       WHERE
+                               po.oid='{$operator_oid}'
+               ";
        
+               return $this->selectSet($sql);
+       }
+               
        // Capabilities
        function hasSchemas() { return true; }
        function hasConversions() { return true; }
index c5514a3ac13f547bd7bf1f6e243d5ea5f6455baf..3cdaea75a4b4e7595016eb000680603b626194b5 100755 (executable)
@@ -4,7 +4,7 @@
         * English language file for phpPgAdmin.  Use this as a basis
         * for new translations.
         *
-        * $Id: english.php,v 1.115 2003/10/14 17:55:17 soranzo Exp $
+        * $Id: english.php,v 1.116 2003/10/26 10:59:16 chriskl Exp $
         */
 
        // Language and character set
        $lang['strdownload'] = 'Download';
        $lang['strinfo'] = 'Info';
        $lang['stroids'] = 'OIDs';
+       $lang['stradvanced'] = 'Advanced';
 
        // Error handling
        $lang['strnoframes'] = 'You need a frames-enabled browser to use this application.';
        $lang['strnooperator'] = 'No operator found.';
        $lang['strnooperators'] = 'No operators found.';
        $lang['strcreateoperator'] = 'Create operator';
-       $lang['stroperatorname'] = 'Operator name';
        $lang['strleftarg'] = 'Left Arg Type';
        $lang['strrightarg'] = 'Right Arg Type';
+       $lang['strcommutator'] = 'Commutator';
+       $lang['strnegator'] = 'Negator';
+       $lang['strrestrict'] = 'Restrict';
+       $lang['strjoin'] = 'Join';
+       $lang['strhashes'] = 'Hashes';
+       $lang['strmerges'] = 'Merges';
+       $lang['strleftsort'] = 'Left sort';
+       $lang['strrightsort'] = 'Right sort';
+       $lang['strlessthan'] = 'Less than';
+       $lang['strgreaterthan'] = 'Greater than';
        $lang['stroperatorneedsname'] = 'You must give a name for your operator.';
        $lang['stroperatorcreated'] = 'Operator created';
        $lang['stroperatorcreatedbad'] = 'Operator creation failed.';
index a23d90bc1a06bc82ae95c4d0e1c9305655340460..5f75e2c0a3359cb4378004518e88ee798150f820 100644 (file)
@@ -4,7 +4,7 @@
         * English language file for phpPgAdmin.  Use this as a basis
         * for new translations.
         *
-        * $Id: english.php,v 1.67 2003/10/14 17:55:17 soranzo Exp $
+        * $Id: english.php,v 1.68 2003/10/26 10:59:17 chriskl Exp $
         */
 
        // Language and character set
        $lang['strdownload'] = 'Download';
        $lang['strinfo'] = 'Info';
        $lang['stroids'] = 'OIDs';
+       $lang['stradvanced'] = 'Advanced';
 
        // Error handling
        $lang['strnoframes'] = 'You need a frames-enabled browser to use this application.';
        $lang['strnooperator'] = 'No operator found.';
        $lang['strnooperators'] = 'No operators found.';
        $lang['strcreateoperator'] = 'Create operator';
-       $lang['stroperatorname'] = 'Operator name';
        $lang['strleftarg'] = 'Left Arg Type';
        $lang['strrightarg'] = 'Right Arg Type';
+       $lang['strcommutator'] = 'Commutator';
+       $lang['strnegator'] = 'Negator';
+       $lang['strrestrict'] = 'Restrict';
+       $lang['strjoin'] = 'Join';
+       $lang['strhashes'] = 'Hashes';
+       $lang['strmerges'] = 'Merges';
+       $lang['strleftsort'] = 'Left sort';
+       $lang['strrightsort'] = 'Right sort';
+       $lang['strlessthan'] = 'Less than';
+       $lang['strgreaterthan'] = 'Greater than';
        $lang['stroperatorneedsname'] = 'You must give a name for your operator.';
        $lang['stroperatorcreated'] = 'Operator created';
        $lang['stroperatorcreatedbad'] = 'Operator creation failed.';
index b72b9cc4f669459d3b44b8eebed353f485c3ac00..0a9ae28e8cc440a8a66744ff18608d87be133282 100644 (file)
@@ -3,7 +3,7 @@
        /**
         * Manage operators in a database
         *
-        * $Id: operators.php,v 1.6 2003/08/27 02:30:12 chriskl Exp $
+        * $Id: operators.php,v 1.7 2003/10/26 10:59:16 chriskl Exp $
         */
 
        // Include application functions
        if (!isset($msg)) $msg = '';
        $PHP_SELF = $_SERVER['PHP_SELF'];
 
+       /**
+        * Show read only properties for an operator
+        */
+       function doProperties($msg = '') {
+               global $data, $localData, $misc;
+               global $PHP_SELF, $lang;
+
+               echo "<h2>", $misc->printVal($_REQUEST['database']), ": {$lang['stroperators']}: ", $misc->printVal($_REQUEST['operator']), ": {$lang['strproperties']}</h2>\n";
+               $misc->printMsg($msg);
+               
+               $oprdata = &$localData->getOperator($_REQUEST['operator_oid']);
+               $oprdata->f['oprcanhash'] = $localData->phpBool($oprdata->f['oprcanhash']);
+
+               if ($oprdata->recordCount() > 0) {
+                       echo "<table>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strname']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprname']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strleftarg']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprleftname']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strrightarg']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprrightname']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strcommutator']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprcom']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strnegator']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprnegate']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strjoin']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprjoin']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strhashes']}</th>\n";
+                       echo "<td class=\"data1\">", ($oprdata->f['oprcanhash']) ? $lang['stryes'] : $lang['strno'], "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strmerges']}</th>\n";
+                       echo "<td class=\"data1\">", ($oprdata->f['oprlsortop'] !== '0' && $oprdata->f['oprrsortop'] !== '0') ? $lang['stryes'] : $lang['strno'], "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strrestrict']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprrest']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strleftsort']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprlsortop']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strrightsort']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprrsortop']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strlessthan']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprltcmpop']), "</td></tr>\n";
+                       echo "<tr><th class=\"data left\">{$lang['strgreaterthan']}</th>\n";
+                       echo "<td class=\"data1\">", $misc->printVal($oprdata->f['oprgtcmpop']), "</td></tr>\n";
+                       echo "</table>\n";
+
+                       echo "<p><a class=\"navlink\" href=\"$PHP_SELF?{$misc->href}\">{$lang['strshowalloperators']}</a></p>\n";
+               }
+               else
+                       doDefault($lang['strinvalidparam']);
+       }
+
+       /**
+        * Show confirmation of drop and perform actual drop
+        */
+       function doDrop($confirm) {
+               global $localData, $database, $misc;
+               global $PHP_SELF, $lang;
+
+               if ($confirm) { 
+                       echo "<h2>", $misc->printVal($_REQUEST['database']), ": {$lang['stroperators']}: ", $misc->printVal($_REQUEST['operator']), ": {$lang['strdrop']}</h2>\n";
+                       
+                       echo "<p>", sprintf($lang['strconfdropoperator'], $misc->printVal($_REQUEST['operator'])), "</p>\n";    
+                       
+                       echo "<form action=\"$PHP_SELF\" method=\"post\">\n";
+                       echo "<input type=\"hidden\" name=\"action\" value=\"drop\" />\n";
+                       echo "<input type=\"hidden\" name=\"operator\" value=\"", htmlspecialchars($_REQUEST['operator']), "\" />\n";
+                       echo "<input type=\"hidden\" name=\"operator_oid\" value=\"", htmlspecialchars($_REQUEST['operator_oid']), "\" />\n";
+                       echo $misc->form;
+                       // Show cascade drop option if supportd
+                       if ($localData->hasDropBehavior()) {
+                               echo "<p><input type=\"checkbox\" name=\"cascade\" /> {$lang['strcascade']}</p>\n";
+                       }
+                       echo "<input type=\"submit\" name=\"drop\" value=\"{$lang['strdrop']}\" />\n";
+                       echo "<input type=\"submit\" name=\"cancel\" value=\"{$lang['strcancel']}\" />\n";
+                       echo "</form>\n";
+               }
+               else {
+                       $status = $localData->dropOperator($_POST['operator_oid'], isset($_POST['cascade']));
+                       if ($status == 0)
+                               doDefault($lang['stroperatordropped']);
+                       else
+                               doDefault($lang['stroperatordroppedbad']);
+               }
+               
+       }
+       
        /**
         * Show default list of operators in the database
         */
                        echo "<table>\n";
                        echo "<tr><th class=\"data\">{$lang['stroperator']}</th><th class=\"data\">{$lang['strleftarg']}</th>";
                        echo "<th class=\"data\">{$lang['strrightarg']}</th><th class=\"data\">{$lang['strreturns']}</th>";
-                       //echo "<th colspan=\"2\" class=\"data\">{$lang['stractions']}</th>\n";
+                       echo "<th colspan=\"2\" class=\"data\">{$lang['stractions']}</th>\n";
                        echo "</tr>\n";
                        $i = 0;
                        while (!$operators->EOF) {
                                echo "<td class=\"data{$id}\">", $misc->printVal($operators->f['oprleftname']), "</td>\n";
                                echo "<td class=\"data{$id}\">", $misc->printVal($operators->f['oprrightname']), "</td>\n";
                                echo "<td class=\"data{$id}\">", $misc->printVal($operators->f['resultname']), "</td>\n";
-                               //echo "<td class=\"opbutton{$id}\"><a href=\"$PHP_SELF?action=properties&amp;{$misc->href}&amp;operatoroid=", urlencode($operators->f['oid']), "\">{$lang['strproperties']}</a></td>\n";
-                               //echo "<td class=\"opbutton{$id}\"><a href=\"$PHP_SELF?action=confirm_drop&amp;{$misc->href}&amp;operatoroid=", urlencode($operators->f['oid']), "\">{$lang['strdrop']}</a></td>\n";
+                               echo "<td class=\"opbutton{$id}\"><a href=\"$PHP_SELF?action=properties&amp;{$misc->href}&amp;operator=",
+                                       urlencode($operators->f['oprname']), "&operator_oid=", urlencode($operators->f['oid']), "\">{$lang['strproperties']}</a></td>\n";
+                               echo "<td class=\"opbutton{$id}\"><a href=\"$PHP_SELF?action=confirm_drop&amp;{$misc->href}&amp;operator=",
+                                       urlencode($operators->f['oprname']), "&operator_oid=", urlencode($operators->f['oid']), "\">{$lang['strdrop']}</a></td>\n";
                                echo "</tr>\n";
                                $operators->moveNext();
                                $i++;
                        echo "<p>{$lang['strnooperators']}</p>\n";
                }
                
-               //echo "<p><a class=\"navlink\" href=\"$PHP_SELF?action=create&amp;{$misc->href}\">{$lang['strcreateoperator']}</a></p>\n";
+//             echo "<p><a class=\"navlink\" href=\"$PHP_SELF?action=create&amp;{$misc->href}\">{$lang['strcreateoperator']}</a></p>\n";
        }
 
        $misc->printHeader($lang['stroperators']);
index 86b10b127c2e3ffa9e2ad79999c9af31f9f1f393..f6830e85adeec3c79e03ed33de06b03c5cadef4a 100644 (file)
--- a/rules.php
+++ b/rules.php
@@ -3,7 +3,7 @@
        /**
         * List rules on a table
         *
-        * $Id: rules.php,v 1.14 2003/09/09 06:23:12 chriskl Exp $
+        * $Id: rules.php,v 1.15 2003/10/26 10:59:16 chriskl Exp $
         */
 
        // Include application functions
                                echo "<td class=\"data{$id}\">", $misc->printVal( $rules->f[$data->rlFields['ruledef']]), "</td>";
                                echo "<td class=\"opbutton{$id}\">";
                                echo "<a href=\"$PHP_SELF?action=confirm_drop&{$misc->href}&rule=", urlencode($rules->f[$data->rlFields['rulename']]),
-                                       "&table=", urlencode($_REQUEST['table']), "\">{$lang['strdrop']}</td></tr>\n";
+                                       "&table=", urlencode($_REQUEST['table']), "\">{$lang['strdrop']}</a></td></tr>\n";
 
                                $rules->movenext();
                                $i++;
index 176199686119ace9bd0c6953020eab1e15b2fdb6..cf69b1d9cb6f3a00dc66f661ea2c355df8a22598 100755 (executable)
@@ -3,7 +3,7 @@
        /**
         * Display properties of a schema
         *
-        * $Id: schema.php,v 1.7 2003/08/26 05:59:49 chriskl Exp $
+        * $Id: schema.php,v 1.8 2003/10/26 10:59:16 chriskl Exp $
         */
 
        // Include application functions
                echo "<li><a href=\"sequences.php?{$misc->href}\">{$lang['strsequences']}</a></li>\n";
                echo "<li><a href=\"functions.php?{$misc->href}\">{$lang['strfunctions']}</a></li>\n";
                echo "<li><a href=\"domains.php?{$misc->href}\">{$lang['strdomains']}</a></li>\n";
+               echo "<li>{$lang['stradvanced']}</li>\n";
+               echo "<ul>\n";
                echo "<li><a href=\"types.php?{$misc->href}\">{$lang['strtypes']}</a></li>\n";
                echo "<li><a href=\"operators.php?{$misc->href}\">{$lang['stroperators']}</a></li>\n";
                echo "</ul>\n";
+               echo "</ul>\n";
        }
 
        $misc->printHeader($lang['strschema'] . ' - ' . $_REQUEST['schema']);