diff rhodecode/templates/admin/gists/new.html @ 4030:647308db13ff

Added codemirror syntax mode in gists. - autopropose file extension when syntax mode is choosen
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 21 Jun 2013 02:42:32 +0200
parents 4eaeae84f474
children 35fcc232f652
line wrap: on
line diff
--- a/rhodecode/templates/admin/gists/new.html	Fri Jun 21 01:11:16 2013 +0200
+++ b/rhodecode/templates/admin/gists/new.html	Fri Jun 21 02:42:32 2013 +0200
@@ -37,14 +37,17 @@
                    <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(c.rhodecode_user.full_contact),32)}"/>
                 </div>
                 <textarea style="resize:vertical; width:400px;border: 1px solid #ccc;border-radius: 3px;" id="description" name="description" placeholder="${_('Gist description ...')}"></textarea>
+                <div style="padding:0px 0px 0px 42px">
+                <label for='lifetime'>${_('Gist lifetime')}</label>
+                ${h.select('lifetime', '', c.lifetime_options)}
+                </div>
             </div>
             <div id="body" class="codeblock">
                 <div style="padding: 10px 10px 10px 26px;color:#666666">
                     ##<input type="text" value="" size="30" name="filename" id="filename" placeholder="gistfile1.txt">
                     ${h.text('filename', size=30, placeholder='gistfile1.txt')}
                     ##<input type="text" value="" size="30" name="filename" id="filename" placeholder="gistfile1.txt">
-                    ${h.select('lifetime', '', c.lifetime_options)}
-                    ${h.select('set_mode','plain',[('plain',_('plain'))])}
+                    ${h.select('mimetype','plain',[('plain',_('plain'))])}
                 </div>
                 <div id="editor_container">
                     <pre id="editor_pre"></pre>
@@ -62,16 +65,30 @@
             CodeMirror.modeURL = "${h.url('/js/mode/%N/%N.js')}";
 
             //inject new modes
-            var modes_select = YUD.get('set_mode');
+            var modes_select = YUD.get('mimetype');
             for(var i=0;i<CodeMirror.modeInfo.length;i++){
                 var m = CodeMirror.modeInfo[i];
-                var opt = new Option(m.name, m.mode);
-                modes_select.options[i+1] = opt
+                var opt = new Option(m.name, m.mime);
+                YUD.setAttribute(opt, 'mode', m.mode)
+                modes_select.options[i+1] = opt;
             }
             YUE.on(modes_select, 'change', function(e){
                 var selected = e.currentTarget;
-                var new_mode = selected.options[selected.selectedIndex].value;
+                var node = selected.options[selected.selectedIndex];
+                var mimetype = node.value;
+                var new_mode = YUD.getAttribute(node, 'mode')
                 setCodeMirrorMode(myCodeMirror, new_mode);
+
+                var proposed_mimetypes = MIME_TO_EXT[mimetype] || [];
+                if(proposed_mimetypes.length < 1){
+                    //fallback to text/plain
+                    proposed_mimetypes = ['.txt']
+                }
+                var mt = proposed_mimetypes[0];
+                if(mt[0] == '*'){
+                    mt = mt.substr(1)
+                }
+                YUD.get('filename').value = 'filename1' + mt;
             })
             </script>
         </div>