[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_4_7-21576-g1fd7a96

Rouslan Placella roccivic at users.sourceforge.net
Wed Oct 26 17:30:39 CEST 2011


The branch, master has been updated
       via  1fd7a96135243353171fb88db5ec2f562d3aea1b (commit)
       via  f6d2da769b62f637a128b681d565ff4c6571748b (commit)
       via  93686fd47a72f4e82070648a765f5f99fe32480b (commit)
      from  999e85b505b57c58e397ea967e4333f6fa38b57a (commit)


- Log -----------------------------------------------------------------
commit 1fd7a96135243353171fb88db5ec2f562d3aea1b
Merge: 999e85b f6d2da7
Author: Rouslan Placella <rouslan at placella.com>
Date:   Wed Oct 26 16:29:10 2011 +0100

    Merge branch 'enum'
    
    Conflicts:
    	enum_editor.php

commit f6d2da769b62f637a128b681d565ff4c6571748b
Author: Rouslan Placella <rouslan at placella.com>
Date:   Wed Oct 26 16:26:15 2011 +0100

    Integrated the ENUM/SET editor with the Routines editor

commit 93686fd47a72f4e82070648a765f5f99fe32480b
Author: Rouslan Placella <rouslan at placella.com>
Date:   Wed Oct 26 16:01:24 2011 +0100

    Improved ENUM/SET editor

-----------------------------------------------------------------------

Summary of changes:
 enum_editor.php                         |  166 ++++++++++++++++++-------
 js/functions.js                         |  209 ++++++++++++++++++++----------
 js/messages.php                         |    7 +
 js/rte/common.js                        |    2 +-
 js/rte/routines.js                      |    7 +
 libraries/rte/rte_routines.lib.php      |   13 ++-
 libraries/tbl_properties.inc.php        |   18 +--
 themes/original/css/theme_right.css.php |   82 ++++++++-----
 themes/pmahomme/css/theme_right.css.php |   83 ++++++++-----
 9 files changed, 395 insertions(+), 192 deletions(-)

diff --git a/enum_editor.php b/enum_editor.php
index e7bba62..879023b 100644
--- a/enum_editor.php
+++ b/enum_editor.php
@@ -2,9 +2,11 @@
 
 /* vim: set expandtab sw=4 ts=4 sts=4: */
 /**
- * Displays a form for editing ENUM and SET values with more space (as an alternative to doing it in tbl_alter.php)
- * This form is only for users with JavaScript disabled -- users with JavaScript enabled will see a different form
- * defined in tbl_properties.inc.php
+ * Displays a form for editing ENUM and SET values with more
+ * space (as an alternative to doing it in tbl_alter.php).
+ * This form is only for users with JavaScript disabled,
+ * users with JavaScript enabled will see a jQuery dialog.
+ *
  * @package PhpMyAdmin
  */
 
@@ -12,62 +14,134 @@ require_once './libraries/common.inc.php';
 require_once './libraries/header_http.inc.php';
 require_once './libraries/header_meta_style.inc.php';
 ?>
-
 </head>
-
 <body>
     <form action="enum_editor.php" method="get">
-        <div id="enum_editor_no_js">
-            <h3><?php printf(__('Values for the column "%s"'), htmlspecialchars($_GET['field'])); ?></h3>
-            <p><?php echo __('Enter each value in a separate field.'); ?></p>
-            <div id="values">
+        <?php echo PMA_generate_common_hidden_inputs(); ?>
+        <input type="hidden" name="field" value="<?php echo htmlspecialchars($_GET['field']); ?>" />
+        <fieldset class="enum_editor_no_js">
+        <legend><?php echo __('ENUM/SET editor'); ?></legend>
+        <div class="enum_editor_no_js">
+            <h3>
+            <?php
+                if (empty($_GET['field'])) {
+                    echo __('Values for a new column');
+                } else {
+                    printf(__('Values for column %s'), '"' . htmlspecialchars($_GET['field']) . '"');
+                }
+            ?>
+            </h3>
+            <p><?php echo PMA_getImage('s_info.png') . __('Enter each value in a separate field'); ?></p>
+            <table id="values">
             <?php
+                // Get the enum values
                 $values = array();
-                if (isset($_GET['values'])) { // This page was displayed when the "add a new value" link or the link in tbl_alter.php was clicked
-                    $values = explode(',', urldecode($_GET['values']));
-                } elseif (isset($_GET['num_fields'])) { // This page was displayed from submitting this form
-                    for ($field_num = 1; $field_num <= $_GET['num_fields']; $field_num++) {
-                        $values[] = "'" . str_replace(array("'", '\\'), array("''", '\\\\'), $_GET['field' . $field_num]) . "'";
+                if (isset($_GET['values']) && is_array($_GET['values'])) { // If the values are in an array
+                     // then this page was called from itself via the "Add a value", "Drop" or "Go" buttons
+                    $values = $_GET['values'];
+                    foreach ($values as $key => $value) {
+                        $values[$key] = htmlentities($value);
                     }
-                }
-                // Display the values in text fields, excluding empty strings
-                $field_counter = 0;
-                foreach ($values as $value) {
-                    if (trim($value) != "") {
-                        $field_counter++;
-                        echo sprintf('<input type="text" size="30" value="%s" name="field' . $field_counter . '" />', htmlspecialchars(str_replace(array("''", '\\\\', "\\'"), array("'", '\\', "'"), substr($value, 1, -1))));
+                } else if (isset($_GET['values']) && is_string($_GET['values'])){ // If the values are in a string
+                    // then this page was called via a link from some external page
+                    $values_string = htmlentities($_GET['values']);
+                    // There is a JS port of the below parser in functions.js
+                    // If you are fixing something here,
+                    // you need to also update the JS port.
+                    $values = array();
+                    $in_string = false;
+                    $buffer = '';
+                    for ($i=0; $i<strlen($values_string); $i++) {
+                        $curr = $values_string[$i];
+                        $next = $i == strlen($values_string)-1 ? '' : $values_string[$i+1];
+                        if (! $in_string && $curr == "'") {
+                            $in_string = true;
+                        } else if ($in_string && $curr == "\\" && $next == "\\") {
+                            $buffer .= "\";
+                            $i++;
+                        } else if ($in_string && $next == "'" && ($curr == "'" || $curr == "\\")) {
+                            $buffer .= "'";
+                            $i++;
+                        } else if ($in_string && $curr == "'") {
+                            $in_string = false;
+                            $values[] = $buffer;
+                            $buffer = '';
+                        } else if ($in_string) {
+                             $buffer .= $curr;
+                        }
+                    }
+                    if (strlen($buffer) > 0) {
+                        // The leftovers in the buffer are the last value (if any)
+                        $values[] = $buffer;
                     }
                 }
-
-                $total_fields = $field_counter;
-                // If extra empty fields are added, display them
-                if (isset($_GET['extra_fields'])) {
-                    $total_fields += $_GET['extra_fields'];
-                    for ($i = $field_counter+1; $i <= $total_fields; $i++) {
-                        echo '<input type="text" size="30" name="field' . $i . '"/>';
+                // Escape double quotes
+                foreach ($values as $key => $value) {
+                    $values[$key] = str_replace('"', ""e;", $value);
+                }
+                // If there are no values, maybe the user is about to make a
+                // new list so we add a few for him/her to get started with.
+                if (! count($values)
+                    || (count($values) == 1 && strlen($values[0]) == 0)
+                ) {
+                    array_push($values, '', '', '');
+                }
+                // Add an empty value, if there was a request to do so
+                if (! empty($_GET['add_field'])) {
+                    $values[] = '';
+                }
+                // Remove a value, given a valid index, from the list
+                // of values, if there was a request to do so.
+                if (isset($_GET['drop']) && is_array($_GET['drop'])) {
+                    foreach ($_GET['drop'] as $index => $value){
+                        if ((int)$index == $index
+                            && $index > 0
+                            && $index <= count($values)
+                        ) {
+                            unset($values[$index]);
+                        }
                     }
-                } else {
-                    $_GET['extra_fields'] = 0;
                 }
-
+                // Display the values in text fields
+                $field_counter = 0;
+                foreach ($values as $value) {
+                    $field_counter++;
+                    echo sprintf(
+                        '<tr><td><input class="text" type="text" size="30" value="%s" name="values[' . $field_counter . ']" />' . "\n",
+                        $value
+                    );
+                    echo '</td><td>';
+                    echo '<input class="drop" type="submit" value="' . __('Drop') . '" name="drop[' . $field_counter . ']" />' . "\n";
+                    echo '</td></tr>' . "\n";
+                }
             ?>
-            </div>
-            <p>
-               <a href="enum_editor.php<?php echo PMA_generate_common_url(array('field' => $_GET['field'], 'extra_fields' => $_GET['extra_fields'] + 1, 'values' => join(',', $values))); ?>">
-<?php echo __('+ Restart insertion and add a new value'); ?>
-               </a>
-            </p>
-            <?php echo PMA_generate_common_hidden_inputs(); ?>
-             <input type="hidden" name="field" value="<?php echo htmlspecialchars($_GET['field']); ?>" />
-             <input type="hidden" name="num_fields" value="<?php echo $total_fields; ?>" />
-             <input type="submit" value="<?php echo __('Go'); ?>" />
-        </form>
-
+                <tr><td>
+                    <input type="submit" class="submit" value="<?php echo __('Go'); ?>" />
+                </td><td>
+                    <input type="submit" class="submit" name="add_field" value="<?php echo __('Add a value'); ?>" />
+                </td></tr>
+            </table>
+        </div>
+        <hr class='enum_editor_no_js' />
         <div id="enum_editor_output">
         <h3><?php echo __('Output'); ?></h3>
-        <p><?php echo __('Copy and paste the joined values into the "Length/Values" field'); ?></p>
-            <textarea id="joined_values" cols="95" rows="5"><?php echo htmlspecialchars(join(",", $values)); ?></textarea>
+        <p><?php echo PMA_getImage('s_info.png') . __('Copy and paste the joined values into the "Length/Values" field'); ?></p>
+            <?php
+                // Escape quotes and slashes for usage with MySQL
+                foreach ($values as $key => $value) {
+                    $values[$key]  = "'";
+                    $values[$key] .= str_replace(
+                        array("'", "\\", "'", "\"),
+                        array("''", '\\\\', "''", '\\\\'),
+                        $value
+                    );
+                    $values[$key] .= "'";
+                }
+                // Print out the values as a string
+            ?>
+            <textarea id="joined_values" cols="95" rows="5"><?php echo join(",", $values); ?></textarea>
         </div>
-    </div>
+        </fieldset>
+    </form>
 </body>
 </html>
diff --git a/js/functions.js b/js/functions.js
index 8eb0d62..162c517 100644
--- a/js/functions.js
+++ b/js/functions.js
@@ -2574,45 +2574,30 @@ function PMA_hideShowDefaultValue($default_type)
 }
 
 /**
- * Closes the ENUM/SET editor and removes the data in it
+ * @var $enum_editor_dialog An object that points to the jQuery
+ *                          dialog of the ENUM/SET editor
  */
-function disable_popup()
-{
-    $("#popup_background").fadeOut("fast");
-    $("#enum_editor").fadeOut("fast");
-    // clear the data from the text boxes
-    $("#enum_editor #values input").remove();
-    $("#enum_editor input[type='hidden']").remove();
-}
-
+var $enum_editor_dialog = null;
 /**
  * Opens the ENUM/SET editor and controls its functions
  */
 $(document).ready(function() {
-    // Needs live() to work also in the Create table dialog
-    $("a[class='open_enum_editor']").live('click', function() {
-        // Center the popup
-        var windowWidth = document.documentElement.clientWidth;
-        var windowHeight = document.documentElement.clientHeight;
-        var popupWidth = windowWidth/2;
-        var popupHeight = windowHeight*0.8;
-        var popupOffsetTop = windowHeight/2 - popupHeight/2;
-        var popupOffsetLeft = windowWidth/2 - popupWidth/2;
-        $("#enum_editor").css({"position":"absolute", "top": popupOffsetTop, "left": popupOffsetLeft, "width": popupWidth, "height": popupHeight});
-
-        // Make it appear
-        $("#popup_background").css({"opacity":"0.7"});
-        $("#popup_background").fadeIn("fast");
-        $("#enum_editor").fadeIn("fast");
-        /**Replacing the column name in the enum editor header*/
-        var column_name = $("#append_fields_form").find("input[id=field_0_1]").attr("value");
-        var h3_text = $("#enum_editor h3").html();
-        $("#enum_editor h3").html(h3_text.split('"')[0]+'"'+column_name+'"');
-
+    $("a.open_enum_editor").live('click', function() {
+        // Get the name of the column that is being edited
+        var colname = $(this).closest('tr').find('input:first').val();
+        // And use it to make up a title for the page
+        if (colname.length < 1) {
+            var title = PMA_messages['enum_newColumnVals'];
+        } else {
+            var title = PMA_messages['enum_columnVals'].replace(
+                /%s/,
+                '"' + decodeURIComponent(colname) + '"'
+            );
+        }
         // Get the values as a string
         var inputstring = $(this)
-            .parent()
-            .prev("input")
+            .closest('td')
+            .find("input")
             .val();
         // Escape html entities
         inputstring = $('<div/>')
@@ -2620,6 +2605,9 @@ $(document).ready(function() {
             .html();
         // Parse the values, escaping quotes and
         // slashes on the fly, into an array
+        //
+        // There is a PHP port of the below parser in enum_editor.php
+        // If you are fixing something here, you need to also update the PHP port.
         var values = [];
         var in_string = false;
         var curr, next, buffer = '';
@@ -2643,57 +2631,138 @@ $(document).ready(function() {
             }
         }
         if (buffer.length > 0) {
+            // The leftovers in the buffer are the last value (if any)
             values.push(buffer);
         }
+        var fields = '';
+        // If there are no values, maybe the user is about to make a
+        // new list so we add a few for him/her to get started with.
+        if (values.length == 0) {
+            values.push('','','','');
+        }
         // Add the parsed values to the editor
+        var drop_icon = PMA_getImage('b_drop.png');
         for (var i=0; i<values.length; i++) {
-            $("#enum_editor #values").append(
-                "<input type='text' value='" + values[i] + "' />"
-            );
+            fields += "<tr><td>"
+                   + "<input type='text' value='" + values[i] + "'/>"
+                   + "</td><td class='drop'>"
+                   + drop_icon
+                   + "</td></tr>";
         }
-        // So we know which column's data is being edited
-        $("#enum_editor").append("<input type='hidden' value='" + $(this).parent().prev("input").attr("id") + "' />");
+        /**
+         * @var dialog HTML code for the ENUM/SET dialog
+         */
+        var dialog = "<div id='enum_editor'>"
+                   + "<fieldset>"
+                   + "<legend>" + title + "</legend>"
+                   + "<p>" + PMA_getImage('s_notice.png')
+                   + PMA_messages['enum_hint'] + "</p>"
+                   + "<table class='values'>" + fields + "</table>"
+                   + "</fieldset><fieldset class='tblFooters'>"
+                   + "<table class='add'><tr><td>"
+                   + "<div class='slider'></div>"
+                   + "</td><td>"
+                   + "<form><div><input type='submit' class='add_value' value='"
+                   + PMA_messages['enum_addValue'].replace(/%d/, 1)
+                   + "'/></div></form>"
+                   + "</td></tr></table>"
+                   + "<input type='hidden' value='" // So we know which column's data is being edited
+                   + $(this).closest('td').find("input").attr("id")
+                   + "' />"
+                   + "</fieldset>";
+                   + "</div>";
+        /**
+         * @var  Defines functions to be called when the buttons in
+         * the buttonOptions jQuery dialog bar are pressed
+         */
+        var buttonOptions = {};
+        buttonOptions[PMA_messages['strGo']] = function () {
+            // When the submit button is clicked,
+            // put the data back into the original form
+            var value_array = new Array();
+            $(this).find(".values input").each(function(index, elm) {
+                var val = elm.value.replace(/\\/g, '\\\\').replace(/'/g, "''");
+                value_array.push("'" + val + "'");
+            });
+            // get the Length/Values text field where this value belongs
+            var values_id = $(this).find("input[type='hidden']").attr("value");
+            $("input[id='" + values_id + "']").attr("value", value_array.join(","));
+            $(this).dialog("close");
+        };
+        buttonOptions[PMA_messages['strClose']] = function () {
+            $(this).dialog("close");
+        };
+        // Show the dialog
+        var width = parseInt(
+            (parseInt($('html').css('font-size'), 10)/13)*340,
+            10
+        );
+        if (! width) {
+            width = 340;
+        }
+        $enum_editor_dialog = $(dialog).dialog({
+            minWidth: width,
+            modal: true,
+            title: PMA_messages['enum_editor'],
+            buttons: buttonOptions,
+            open: function() {
+                // Focus the "Go" button after opening the dialog
+                $(this).closest('.ui-dialog').find('.ui-dialog-buttonpane button:first').focus();
+            },
+            close: function() {
+                $(this).remove();
+            }
+        });
+        // slider for choosing how many fields to add
+        $enum_editor_dialog.find(".slider").slider({
+               animate: true,
+               range: "min",
+               value: 1,
+               min: 1,
+               max: 9,
+               slide: function( event, ui ) {
+                    $(this).closest('table').find('input[type=submit]').val(
+                        PMA_messages['enum_addValue'].replace(/%d/, ui.value)
+                    );
+               }
+			});
+        // Focus the slider, otherwise it looks nearly transparent
+        $('.ui-slider-handle').addClass('ui-state-focus');
         return false;
     });
 
-    // If the "close" link is clicked, close the enum editor
-    // Needs live() to work also in the Create table dialog
-    $("a[class='close_enum_editor']").live('click', function() {
-        disable_popup();
-    });
-
-    // If the "cancel" link is clicked, close the enum editor
-    // Needs live() to work also in the Create table dialog
-    $("a[class='cancel_enum_editor']").live('click', function() {
-        disable_popup();
-    });
-
     // When "add a new value" is clicked, append an empty text field
-    // Needs live() to work also in the Create table dialog
-    $("a[class='add_value']").live('click', function() {
-        $("#enum_editor #values").append("<input type='text' />");
+    $("input.add_value").live('click', function(e) {
+        e.preventDefault();
+        var num_new_rows = $enum_editor_dialog.find("div.slider").slider('value');
+        while (num_new_rows--) {
+            $enum_editor_dialog.find('.values')
+                .append(
+                    "<tr style='display: none;'><td>"
+                  + "<input type='text' />"
+                  + "</td><td class='drop'>"
+                  + PMA_getImage('b_drop.png')
+                  + "</td></tr>"
+                )
+                .find('tr:last')
+                .show('fast');
+        }
     });
 
-    // When the submit button is clicked, put the data back into the original form
-    // Needs live() to work also in the Create table dialog
-    $("#enum_editor input[type='submit']").live('click', function() {
-        var value_array = new Array();
-        $.each($("#enum_editor #values input"), function(index, input_element) {
-            val = jQuery.trim(input_element.value);
-            if(val != "") {
-                value_array.push("'" + val.replace(/\\/g, '\\\\').replace(/'/g, "''") + "'");
-            }
+    // Removes the specified row from the enum editor
+    $("#enum_editor td.drop").live('click', function() {
+        $(this).closest('tr').hide('fast', function () {
+            $(this).remove();
         });
-        // get the Length/Values text field where this value belongs
-        var values_id = $("#enum_editor input[type='hidden']").attr("value");
-        $("input[id='" + values_id + "']").attr("value", value_array.join(","));
-        disable_popup();
-     });
+    });
+});
 
-    /**
-     * Hides certain table structure actions, replacing them with the word "More". They are displayed
-     * in a dropdown menu when the user hovers over the word "More."
-     */
+/**
+ * Hides certain table structure actions, replacing them
+ * with the word "More". They are displayed in a dropdown
+ * menu when the user hovers over the word "More."
+ */
+$(document).ready(function() {
     displayMoreTableOpts();
 });
 
diff --git a/js/messages.php b/js/messages.php
index e966f9b..5878d32 100644
--- a/js/messages.php
+++ b/js/messages.php
@@ -241,6 +241,13 @@ $js_messages['strDeleting'] = __('Deleting');
 /* For db_routines.js */
 $js_messages['MissingReturn'] = __('The definition of a stored function must contain a RETURN statement!');
 
+/* For ENUM/SET editor*/
+$js_messages['enum_editor'] = __('ENUM/SET editor');
+$js_messages['enum_columnVals'] =__('Values for column %s');
+$js_messages['enum_newColumnVals'] = __('Values for a new column');
+$js_messages['enum_hint'] =__('Enter each value in a separate field');
+$js_messages['enum_addValue'] =__('Add %d value(s)');
+
 /* For import.js */
 $js_messages['strImportCSV'] = __('Note: If the file contains multiple tables, they will be combined into one');
 
diff --git a/js/rte/common.js b/js/rte/common.js
index 842f325..781219d 100644
--- a/js/rte/common.js
+++ b/js/rte/common.js
@@ -211,7 +211,7 @@ $(document).ready(function () {
                  */
                 RTE.$ajaxDialog = $('<div>' + data.message + '</div>').dialog({
                                 width: 700,
-                                height: 555,
+                                minWidth: 500,
                                 buttons: RTE.buttonOptions,
                                 title: data.title,
                                 modal: true,
diff --git a/js/rte/routines.js b/js/rte/routines.js
index 087b9d6..b351e7b 100644
--- a/js/rte/routines.js
+++ b/js/rte/routines.js
@@ -192,10 +192,16 @@ RTE.setOptionsForParameter = function ($type, $len, $text, $num) {
     case 'MEDIUMTEXT':
     case 'LONGBLOB':
     case 'LONGTEXT':
+        $text.closest('tr').find('a:first').hide();
         $len.parent().hide();
         $no_len.show();
         break;
     default:
+        if ($type.val() == 'ENUM' || $type.val() == 'SET') {
+            $text.closest('tr').find('a:first').show();
+        } else {
+            $text.closest('tr').find('a:first').hide();
+        }
         $len.parent().show();
         $no_len.hide();
         break;
@@ -272,6 +278,7 @@ $(document).ready(function () {
                     $(this).attr('name', inputname.substr(0, 15) + '[' + index + ']');
                 } else if (inputname.substr(0, 17) === 'item_param_length') {
                     $(this).attr('name', inputname.substr(0, 17) + '[' + index + ']');
+                    $(this).attr('id', 'item_param_length_' + index);
                 } else if (inputname.substr(0, 20) === 'item_param_opts_text') {
                     $(this).attr('name', inputname.substr(0, 20) + '[' + index + ']');
                 } else if (inputname.substr(0, 19) === 'item_param_opts_num') {
diff --git a/libraries/rte/rte_routines.lib.php b/libraries/rte/rte_routines.lib.php
index f6f110a..80f04a4 100644
--- a/libraries/rte/rte_routines.lib.php
+++ b/libraries/rte/rte_routines.lib.php
@@ -680,8 +680,17 @@ function PMA_RTN_getParameterRow($routine = array(), $index = null, $class = '')
     $retval .= "            <td><select name='item_param_type[$index]'>";
     $retval .= PMA_getSupportedDatatypes(true, $routine['item_param_type'][$i]) . "\n";
     $retval .= "            </select></td>\n";
-    $retval .= "            <td><input name='item_param_length[$index]' type='text'\n";
-    $retval .= "                       value='{$routine['item_param_length'][$i]}' /></td>\n";
+    $retval .= "            <td>\n";
+    $retval .= "                <input id='item_param_length_$index'\n";
+    $retval .= "                       name='item_param_length[$index]' type='text'\n";
+    $retval .= "                       value='{$routine['item_param_length'][$i]}' />\n";
+    $retval .= "                <div class='enum_hint'>\n";
+    $retval .= "                    <a class='open_enum_editor' target='_blank'\n";
+    $retval .= "                       href='enum_editor.php?" . PMA_generate_common_url() . "&values=" . $routine['item_param_length'][$i] . "&field=" . $routine['item_param_name'][$i] . "'>\n";
+    $retval .= "                        " . PMA_getImage('b_edit', '', array('title'=>__('ENUM/SET editor'))) . "\n";
+    $retval .= "                    </a>\n";
+    $retval .= "                </div>\n";
+    $retval .= "            </td>\n";
     $retval .= "            <td class='hide no_len'>---</td>\n";
     $retval .= "            <td class='routine_param_opts_text'>\n";
     $retval .= PMA_generateCharsetDropdownBox(
diff --git a/libraries/tbl_properties.inc.php b/libraries/tbl_properties.inc.php
index c41146b..336545b 100644
--- a/libraries/tbl_properties.inc.php
+++ b/libraries/tbl_properties.inc.php
@@ -319,8 +319,13 @@ for ($i = 0; $i < $num_fields; $i++) {
         . ' class="textfield" />'
         . '<p class="enum_notice" id="enum_notice_' . $i . '_' . ($ci - $ci_offset) . '">';
     $content_cells[$i][$ci] .= __('ENUM or SET data too long?')
-        . '<a onclick="return false;" href="enum_editor.php?' . PMA_generate_common_url() . '&values=' . urlencode($length_to_display) . '&field=' .  (isset($row['Field']) ? urlencode($row['Field']) : "") . '" class="open_enum_editor" target="_blank"> '
-        . __('Get more editing space') . '</a></p>';
+        . '<a onclick="return false;" href="enum_editor.php?'
+        . PMA_generate_common_url()
+        . '&values=' . urlencode($length_to_display)
+        . '&field=' .  (isset($row['Field']) ? urlencode($row['Field']) : "")
+        . '" class="open_enum_editor" target="_blank"> '
+        . __('Get more editing space') . '</a>'
+        . '</p>';
     $ci++;
 
     // column default
@@ -711,13 +716,4 @@ if ($action == 'tbl_create.php') {
 <div id="properties_message"></div>
 </form>
 
-<div id="enum_editor">
-<a class="close_enum_editor"><?php echo __('Close'); ?></a>
-<h3><?php printf(__('Values for the column "%s"'), isset($row['Field']) ? htmlspecialchars($row['Field']) : ""); ?></h3>
-<p><?php echo __('Enter each value in a separate field.'); ?></p>
-<div id="values"></div>
-<p><a class="add_value"><?php echo __('+ Add a value'); ?></a></p>
-<input type="submit" value="<?php echo __('Go'); ?>" /> <a class="cancel_enum_editor"><?php echo __('Cancel'); ?></a>
-</div>
-
 <div id="popup_background"></div>
diff --git a/themes/original/css/theme_right.css.php b/themes/original/css/theme_right.css.php
index 635e81b..31eec35 100644
--- a/themes/original/css/theme_right.css.php
+++ b/themes/original/css/theme_right.css.php
@@ -1628,56 +1628,76 @@ p.enum_notice {
     font-size: 80%;
 }
 
-#enum_editor {
-    display: none;
-    position: fixed;
-    _position: absolute; /* hack for IE */
-    z-index: 101;
-    overflow-y: auto;
-    overflow-x: hidden;
+fieldset.enum_editor_no_js {
+    width: 40em;
+    padding: 1em;
 }
 
-#enum_editor_no_js {
-   margin: auto auto;
+hr.enum_editor_no_js {
+    background-color: #aaa;
 }
 
-#enum_editor, #enum_editor_no_js {
-    background: #D0DCE0;
-    padding: 15px;
+#enum_editor p {
+    font-style:italic;
 }
 
-#popup_background {
-    display: none;
-    position: fixed;
-    _position: absolute; /* hack for IE6 */
+#enum_editor .values, #enum_editor .add, .enum_editor_no_js #values {
     width: 100%;
-    height: 100%;
-    top: 0;
-    left: 0;
-    background: #000;
-    z-index: 100;
-    overflow: hidden;
 }
 
-a.close_enum_editor {
-    float: right;
+#enum_editor .add td {
+    vertical-align: middle;
+    width: 50%;
+    padding: 0 1em;
 }
 
-#enum_editor #values, #enum_editor_no_js #values {
-    margin: 15px 0;
-    width: 100%;
+#enum_editor .values td.drop {
+    width: 2em;
+    cursor: pointer;
+    vertical-align: middle;
 }
 
-#enum_editor #values input, #enum_editor_no_js #values input {
+#enum_editor .values input {
     margin: 5px 0;
-    float: top;
+    padding-right: 2.5em;
     width: 100%;
 }
 
+#enum_editor .values img {
+    width: 2em;
+    vertical-align: middle;
+}
+
+#enum_editor input.add_value {
+    margin: 1em 0;
 }
 
-#enum_editor_output {
-    margin-top: 50px;
+#enum_editor_output textarea,
+.enum_editor_no_js input {
+    width: 100%;
+    float: right;
+    margin: 1em 0 0 0;
+}
+
+#enum_editor_no_js {
+    width: 100%;
+}
+
+.enum_editor_no_js input.submit {
+    margin: 1em 0;
+}
+
+/**
+ * ENUM/SET editor integration for the routines editor
+ */
+.enum_hint {
+    position: relative;
+}
+
+.enum_hint a {
+    position: absolute;
+    left: 81%;
+    bottom: 0.35em;
 }
 
 /**
diff --git a/themes/pmahomme/css/theme_right.css.php b/themes/pmahomme/css/theme_right.css.php
index efc8fff..e79300b 100644
--- a/themes/pmahomme/css/theme_right.css.php
+++ b/themes/pmahomme/css/theme_right.css.php
@@ -2008,56 +2008,77 @@ p.enum_notice {
     font-size: 80%;
 }
 
-#enum_editor {
-    display: none;
-    position: fixed;
-    _position: absolute; /* hack for IE */
-    z-index: 101;
-    overflow-y: auto;
-    overflow-x: hidden;
+.enum_editor_no_js fieldset {
+    width: 40em;
 }
 
-#enum_editor_no_js {
-   margin: auto auto;
+hr.enum_editor_no_js {
+    background-color: #aaa;
 }
 
-#enum_editor, #enum_editor_no_js {
-    background: #D0DCE0;
-    padding: 15px;
+#enum_editor p {
+    margin-top: 0;
+    font-style:italic;
 }
 
-#popup_background {
-    display: none;
-    position: fixed;
-    _position: absolute; /* hack for IE6 */
+#enum_editor .values, #enum_editor .add, .enum_editor_no_js #values {
     width: 100%;
-    height: 100%;
-    top: 0;
-    left: 0;
-    background: #000;
-    z-index: 100;
-    overflow: hidden;
 }
 
-a.close_enum_editor {
-    float: right;
+#enum_editor .add td {
+    vertical-align: middle;
+    width: 50%;
+    padding: 0 0 0 1em;
 }
 
-#enum_editor #values, #enum_editor_no_js #values {
-    margin: 15px 0;
-    width: 100%;
+#enum_editor .values td.drop {
+    width: 1.8em;
+    cursor: pointer;
+    vertical-align: middle;
 }
 
-#enum_editor #values input, #enum_editor_no_js #values input {
+#enum_editor .values input {
     margin: 5px 0;
-    float: top;
+    padding-right: 2em;
+    width: 100%;
+}
+
+#enum_editor .values img {
+    width: 1.8em;
+    vertical-align: middle;
+}
+
+#enum_editor input.add_value {
+    margin: 0 0.4em 0 0;
+}
+
+#enum_editor_output textarea,
+.enum_editor_no_js input {
     width: 100%;
+    float: right;
+    margin: 1em 0 0 0;
+}
+
+.enum_editor_no_js {
+    width: 40em;
+}
+
+.enum_editor_no_js input.submit {
+    float: left;
+    margin: 1em 0;
 }
 
+/**
+ * ENUM/SET editor integration for the routines editor
+ */
+.enum_hint {
+    position: relative;
 }
 
-#enum_editor_output {
-    margin-top: 50px;
+.enum_hint a {
+    position: absolute;
+    left: 81%;
+    bottom: 0.35em;
 }
 
 /**


hooks/post-receive
-- 
phpMyAdmin




More information about the Git mailing list