r2576 - toss file management UI a bit: render download/size code like renderFileCell...
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 23 Mar 2009 19:16:22 +0000 (19:16 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 23 Mar 2009 19:16:22 +0000 (19:16 +0000)
 - replaceFile(): don't proceed w/o a file
 - introduce and employ emptyLog() for convenience

inc/functions.php
inc/interface.php
inc/navigation.php
inc/ophandlers.php
process.php

index dabddbb..b0f1b32 100644 (file)
@@ -1278,10 +1278,20 @@ function buildRedirectURL ($callfunc, $status, $args = array(), $nextpage = NULL
        return buildWideRedirectURL (oneLiner ($msgcode[$callfunc][$status], $args), $nextpage, $nexttab);
 }
 
+// Return an empty message log.
+function emptyLog ()
+{
+       return array
+       (
+               'v' => 2,
+               'm' => array()
+       );
+}
+
 // Return a message log consisting of only one message.
 function oneLiner ($code, $args = array())
 {
-       $ret = array ('v' => 2);
+       $ret = emptyLog();
        $ret['m'][] = count ($args) ? array ('c' => $code, 'a' => $args) : array ('c' => $code);
        return $ret;
 }
index 78d4f9b..5f93536 100644 (file)
@@ -1504,6 +1504,8 @@ function printLog ($log)
                                178 => array ('code' => 'error', 'format' => 'file not found'),
                                179 => array ('code' => 'error', 'format' => 'Declining outdated text. Re-edit the file for consistency.'),
                                180 => array ('code' => 'error', 'format' => 'Error saving file, all changes lost!'),
+                               181 => array ('code' => 'error', 'format' => "file uploads not allowed, change 'file_uploads' parameter in php.ini"),
+                               182 => array ('code' => 'error', 'format' => 'SQL query failed: %s'),
 
 // records 200~299 with warnings
                                200 => array ('code' => 'warning', 'format' => 'generic warning: %s'),
@@ -1513,6 +1515,7 @@ function printLog ($log)
                                204 => array ('code' => 'warning', 'format' => 'Check uplink/downlink configuration for proper operation.'),
                                205 => array ('code' => 'warning', 'format' => '%u change request(s) have been ignored'),
                                206 => array ('code' => 'warning', 'format' => 'Rack is not empty'),
+                               207 => array ('code' => 'warning', 'format' => 'Ignored empty request'),
                        );
                        // Handle the arguments. Is there any better way to do it?
                        foreach ($log['m'] as $record)
@@ -5505,7 +5508,9 @@ function renderFile ($file_id = 0)
        echo "<tr><th width='50%' class=tdright>Type:</th>";
        printf("<td class=tdleft>%s</td></tr>", htmlspecialchars ($file['type']));
        echo "<tr><th width='50%' class=tdright>Size:</th>";
-       printf("<td class=tdleft>%s</td></tr>", formatFileSize($file['size']));
+       echo "<td class=tdleft><a href='${root}download.php?file_id=${file_id}'>";
+       printImageHREF ('download', 'Download file');
+       printf("</a>&nbsp;%s</td></tr>", formatFileSize($file['size']));
        echo "<tr><th width='50%' class=tdright>Created:</th>";
        printf("<td class=tdleft>%s</td></tr>", formatTimestamp($file['ctime']));
        echo "<tr><th width='50%' class=tdright>Modified:</th>";
@@ -5513,17 +5518,6 @@ function renderFile ($file_id = 0)
        echo "<tr><th width='50%' class=tdright>Accessed:</th>";
        printf("<td class=tdleft>%s</td></tr>", formatTimestamp($file['atime']));
 
-       echo "<tr><th width='50%' class=tdright>Download file:</th>";
-       echo "<td class=tdleft><a href='${root}download.php?file_id=${file_id}'>";
-       printImageHREF ('download', 'Download file');
-       echo "</a></td></tr>\n";
-
-       echo "<tr><th width='50%' class=tdright>Upload replacement:</th>";
-       printOpFormIntro ('replaceFile', array ('MAX_FILE_SIZE' => convertToBytes(get_cfg_var('upload_max_filesize'))), TRUE);
-       echo "<td class=tdleft><input type='file' size='10' name='file' tabindex=100>&nbsp;\n";
-       printImageHREF ('save', 'Save changes', TRUE, 101);
-       echo "</form></td></tr>\n";
-
        printTagTRs (makeHref(array('page'=>'files', 'tab'=>'default'))."&");
        if (!empty ($file['comment']))
        {
@@ -5578,6 +5572,17 @@ function renderFile ($file_id = 0)
        echo "</table>\n";
 }
 
+function renderFileReuploader ()
+{
+       showMessageOrError();
+       startPortlet ('Replace existing contents');
+       printOpFormIntro ('replaceFile', array ('MAX_FILE_SIZE' => convertToBytes(get_cfg_var('upload_max_filesize'))), TRUE);
+       echo "<input type=file size=10 name=file tabindex=100>&nbsp;\n";
+       printImageHREF ('save', 'Save changes', TRUE, 101);
+       echo "</form>\n";
+       finishPortlet();
+}
+
 function renderFileProperties ($file_id = 0)
 {
        global $root;
index d683c39..6c3d02b 100644 (file)
@@ -628,16 +628,22 @@ $tab['file']['default'] = 'View';
 $tab['file']['edit'] = 'Properties';
 $tab['file']['tags'] = 'Tags';
 $tab['file']['editText'] = 'Edit text';
+$tab['file']['replaceData'] = 'Upload replacement';
 $trigger['file']['tags'] = 'trigger_tags';
 $trigger['file']['editText'] = 'trigger_file_editText';
 $tabhandler['file']['default'] = 'renderFile';
 $tabhandler['file']['edit'] = 'renderFileProperties';
 $tabhandler['file']['tags'] = 'renderEntityTags';
 $tabhandler['file']['editText'] = 'renderTextEditor';
-$ophandler['file']['default']['replaceFile'] = 'replaceFile';
+$tabhandler['file']['replaceData'] = 'renderFileReuploader';
 $ophandler['file']['edit']['updateFile'] = 'updateFile';
 $ophandler['file']['tags']['saveTags'] = 'saveEntityTags';
 $ophandler['file']['editText']['updateFileText'] = 'updateFileText';
+$ophandler['file']['replaceData']['replaceFile'] = 'replaceFile';
+$msgcode['replaceFile']['OK'] = 70;
+$msgcode['replaceFile']['ERR1'] = 181;
+$msgcode['replaceFile']['ERR2'] = 207;
+$msgcode['replaceFile']['ERR3'] = 182;
 $msgcode['updateFileText']['OK'] = 78;
 $msgcode['updateFileText']['ERR1'] = 179;
 $msgcode['updateFileText']['ERR2'] = 180;
index 40aa1fa..55033fa 100644 (file)
@@ -1420,7 +1420,7 @@ function setPortVLAN ()
        // for each of the rest.
        $nports = $_REQUEST['portcount'];
        $prefix = 'set ';
-       $log = array ('v' => 2, 'm' => array());
+       $log = emptyLog();
        $setcmd = '';
        for ($i = 0; $i < $nports; $i++)
                if
@@ -1521,7 +1521,7 @@ function addRack ()
        {
                assertUIntArg ('rack_height2', __FUNCTION__);
                assertStringArg ('rack_names', __FUNCTION__, TRUE);
-               $log = array ('v' => 2);
+               $log = emptyLog();
                // copy-and-paste from renderAddMultipleObjectsForm()
                $names1 = explode ('\n', $_REQUEST['rack_names']);
                $names2 = array();
@@ -1685,19 +1685,22 @@ function linkFileToEntity ()
 
 function replaceFile ()
 {
+       global $sic;
        assertUIntArg ('file_id', __FUNCTION__);
 
        // Make sure the file can be uploaded
        if (get_cfg_var('file_uploads') != 1)
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ("file uploads not allowed, change 'file_uploads' parameter in php.ini"));
+               return buildRedirectURL (__FUNCTION__, 'ERR1');
+       $shortInfo = getFileInfo ($sic['file_id']);
 
        $fp = fopen($_FILES['file']['tmp_name'], 'rb');
-       global $sic;
+       if ($fp === FALSE)
+               return buildRedirectURL (__FUNCTION__, 'ERR2');
        $error = commitReplaceFile ($sic['file_id'], $fp);
        if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
+               return buildRedirectURL (__FUNCTION__, 'ERR3', array ($error));
 
-       return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
+       return buildRedirectURL (__FUNCTION__, 'OK', array (htmlspecialchars ($shortInfo['name'])));
 }
 
 function updateFile ()
index 3bdb075..2c5e4c2 100644 (file)
@@ -17,14 +17,7 @@ if (empty ($op) or !isset ($ophandler[$pageno][$tabno][$op]))
 
 // We have a chance to handle an error before starting HTTP header.
 if (!isset ($delayauth[$pageno][$tabno][$op]) and !permitted())
-{
-       $errlog = array
-       (
-               'v' => 2,
-               'm' => array (0 => array ('c' => 157)) // operation not permitted
-       );
-       $location = buildWideRedirectURL ($errlog);
-}
+       $location = buildWideRedirectURL (oneLiner (157)); // operation not permitted
 else
 {
        $location = $ophandler[$pageno][$tabno][$op]();