r2428 - make file MIME-type changeable
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 10 Feb 2009 11:07:36 +0000 (11:07 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 10 Feb 2009 11:07:36 +0000 (11:07 +0000)
 - CodePress: add ipfw syntax support by Boris Lytochkin
 - employ CodePress in inline file editor

inc/database.php
inc/interface.php
inc/ophandlers.php
js/codepress/codepress.js
js/codepress/languages/ipfw.css [new file with mode: 0644]
js/codepress/languages/ipfw.js [new file with mode: 0644]

index 203f7c1f482bc9d50b5f41976def2dac3bfd1f04..3fe8077ff3fa1497a7c09c447f36660606ec546e 100644 (file)
@@ -3804,18 +3804,19 @@ function commitReplaceFile ($file_id = 0, $size, $contents)
        return '';
 }
 
-function commitUpdateFile ($file_id = 0, $new_name = '', $new_comment = '')
+function commitUpdateFile ($file_id = 0, $new_name = '', $new_type = '', $new_comment = '')
 {
-       if ($file_id == 0)
+       if ($file_id <= 0 or empty ($new_name) or empty ($new_type))
        {
                showError ('Not all required args are present.', __FUNCTION__);
                return FALSE;
        }
        global $dbxlink;
-       $query = $dbxlink->prepare('UPDATE File SET name = ?, comment = ? WHERE id = ?');
+       $query = $dbxlink->prepare('UPDATE File SET name = ?, type = ?, comment = ? WHERE id = ?');
        $query->bindParam(1, $new_name);
-       $query->bindParam(2, $new_comment);
-       $query->bindParam(3, $file_id);
+       $query->bindParam(2, $new_type);
+       $query->bindParam(3, $new_comment);
+       $query->bindParam(4, $file_id);
 
        $result = $query->execute();
        if (!$result)
index 342ea9421b90833ca82d8a98a6a0e225f4b90c2c..03940dee2cbdc06761fc9e46b53704e09584120a 100644 (file)
@@ -169,6 +169,14 @@ $image['computer']['height'] = 16;
 // This may be populated later onsite, report rendering function will use it.
 // See the $systemreport for structure.
 $localreports = array();
+$CodePressMap = array
+(
+       'sql' => 'sql',
+       'php' => 'php',
+       'html' => 'html',
+       'css' => 'css',
+       'js' => 'javascript',
+);
 
 // Main menu.
 function renderIndex ()
@@ -5554,9 +5562,9 @@ function renderFileProperties ($file_id = 0)
        showMessageOrError();
        echo '<table border=0 align=center>';
        printOpFormIntro ('updateFile');
-       echo "<tr><th class=tdright>MIME-type:</th><td class=tdleft>${file['type']}</td></tr>";
-       echo "<tr><th class=tdright>Filename:</th><td class=tdleft><input tabindex=100 type=text name=name value='${file['name']}'></td></tr>\n";
-       echo "<tr><th class=tdright>Comment:</th><td class=tdleft><textarea tabindex=101 name=comment rows=10 cols=80>${file['comment']}</textarea></td></tr>\n";
+       echo "<tr><th class=tdright>MIME-type:</th><td class=tdleft><input tabindex=101 type=text name=file_type value='${file['type']}'></td></tr>";
+       echo "<tr><th class=tdright>Filename:</th><td class=tdleft><input tabindex=102 type=text name=file_name value='${file['name']}'></td></tr>\n";
+       echo "<tr><th class=tdright>Comment:</th><td class=tdleft><textarea tabindex=103 name=file_comment rows=10 cols=80>${file['comment']}</textarea></td></tr>\n";
        echo "<tr><th class=submit colspan=2>";
        printImageHREF ('SAVE', 'Save changes', TRUE, 102);
        echo '</th></tr></form></table>';
@@ -5970,13 +5978,19 @@ function getFilePreviewCode ($file)
 
 function renderTextEditor ($file_id)
 {
+       global $CodePressMap;
        showMessageOrError();
        $fullInfo = getFile ($file_id);
        printOpFormIntro ('updateFileText');
+       preg_match('/.+\.([^.]*)$/', $fullInfo['name'], $matches); # get file extension
+       if (isset ($matches[1]) && isset ($CodePressMap[$matches[1]]))
+               $syntax = $CodePressMap[$matches[1]];
+       else
+               $syntax = "text";
        echo '<table border=0 align=center>';
-       echo '<tr><td><textarea rows=25 cols=120 name=file_text tabindex=101>' . $fullInfo['contents'] . '</textarea></td></tr>';
-       echo "<tr><td class=submit>";
-       printImageHREF ('SAVE', 'Save changes', TRUE, 102);
+       echo "<tr><td><textarea rows=45 cols=180 id=file_text name=file_text tabindex=101 class='codepress " . $syntax . "'>";
+       echo $fullInfo['contents'] . '</textarea></td></tr>';
+       echo "<tr><td class=submit><input type=submit value='Save' onclick='file_text.toggleEditor();'>";
        echo "</td></tr>\n</table></form>\n";
 }
 
index 6c8d029856f2796ff60ff6282d1be48ed8bc291e..7490f086880953f67e6fe339e92be41cc8d3de45 100644 (file)
@@ -1593,9 +1593,10 @@ function replaceFile ()
 function updateFile ()
 {
        assertUIntArg ('file_id', __FUNCTION__);
-       assertStringArg ('name', __FUNCTION__);
-       assertStringArg ('comment', __FUNCTION__, TRUE);
-       $error = commitUpdateFile ($_REQUEST['file_id'], $_REQUEST['name'], $_REQUEST['comment']);
+       assertStringArg ('file_name', __FUNCTION__);
+       assertStringArg ('file_type', __FUNCTION__);
+       assertStringArg ('file_comment', __FUNCTION__, TRUE);
+       $error = commitUpdateFile ($_REQUEST['file_id'], $_REQUEST['file_name'], $_REQUEST['file_type'], $_REQUEST['file_comment']);
        if ($error != '')
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
 
index 6b9914eb3266f6bee783c6ce4fda8b9553598ba4..39107187248bc69355ef8d1c553126a54545f677 100644 (file)
@@ -113,6 +113,7 @@ CodePress.languages = {
        text : 'Text', \r
        sql : 'SQL',\r
        vbscript : 'VBScript',\r
+       ipfw : 'ipfw',\r
        rackcode : 'RackCode'\r
 }\r
 \r
diff --git a/js/codepress/languages/ipfw.css b/js/codepress/languages/ipfw.css
new file mode 100644 (file)
index 0000000..1d09e73
--- /dev/null
@@ -0,0 +1,5 @@
+b {color:#7F0055;font-weight:bold;font-style:normal;} /* keywords */
+i {color:gray;font-weight:normal;} /* comments */
+u {color:green;font-weight:bold;}
+s {color:red;font-weight:bold;}
+em {color:green;font-weight:normal;}
diff --git a/js/codepress/languages/ipfw.js b/js/codepress/languages/ipfw.js
new file mode 100644 (file)
index 0000000..db9694c
--- /dev/null
@@ -0,0 +1,9 @@
+Language.snippets = []
+Language.complete = []
+Language.shortcuts = []
+Language.syntax = [
+       { input : /#(.*?)(<br>|<\/P>)/g, output : '<i>#$1</i>$2' }, // comments
+       { input : /\b(add|deny|or|to|from|out|ip|tcp|udp|icmp|any)\b/g, output : '<b>$1</b>'}, // keywords
+       { input : /\b(deny|reject)\b/g, output : '<s>$1</s>'}, // keywords
+       { input : /\b(allow|pass)\b/g, output : '<u>$1</u>'} // keywords
+]