diff rhodecode/templates/files/files_add.html @ 4026:a60a0e9092c6

added codemirror edit mode with autodetection
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 20 Jun 2013 23:53:18 +0200
parents 072a37c44f58
children ffd45b185016
line wrap: on
line diff
--- a/rhodecode/templates/files/files_add.html	Thu Jun 20 22:43:57 2013 +0200
+++ b/rhodecode/templates/files/files_add.html	Thu Jun 20 23:53:18 2013 +0200
@@ -6,6 +6,8 @@
 
 <%def name="js_extra()">
 <script type="text/javascript" src="${h.url('/js/codemirror.js')}"></script>
+<script type="text/javascript" src="${h.url('/js/codemirror_loadmode.js')}"></script>
+<script type="text/javascript" src="${h.url('/js/mode/meta.js')}"></script>
 </%def>
 <%def name="css_extra()">
 <link rel="stylesheet" type="text/css" href="${h.url('/css/codemirror.css')}"/>
@@ -68,6 +70,10 @@
               </div>
             </div>
             <div id="body" class="codeblock">
+            <div class="code-header">
+                <label class="commit" for="set_mode">${_('New file mode')}</label>
+                ${h.select('set_mode','plain',[('plain',_('plain'))])}
+            </div>
                 <div id="editor_container">
                     <pre id="editor_pre"></pre>
                     <textarea id="editor" name="content" style="display:none"></textarea>
@@ -82,7 +88,21 @@
             ${h.end_form()}
             <script type="text/javascript">
             var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path)}";
-            initCodeMirror('editor',reset_url);
+            var myCodeMirror = initCodeMirror('editor',reset_url);
+            CodeMirror.modeURL = "${h.url('/js/mode/%N/%N.js')}";
+
+            //inject new modes
+            var modes_select = YUD.get('set_mode');
+            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
+            }
+            YUE.on(modes_select, 'change', function(e){
+                var selected = e.currentTarget;
+                var new_mode = selected.options[selected.selectedIndex].value;
+                setCodeMirrorMode(myCodeMirror, new_mode);
+            })
             </script>
         </div>
     </div>