comparison 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
comparison
equal deleted inserted replaced
4029:c9bcfe2d2ade 4030:647308db13ff
35 <div> 35 <div>
36 <div class="gravatar"> 36 <div class="gravatar">
37 <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(c.rhodecode_user.full_contact),32)}"/> 37 <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(c.rhodecode_user.full_contact),32)}"/>
38 </div> 38 </div>
39 <textarea style="resize:vertical; width:400px;border: 1px solid #ccc;border-radius: 3px;" id="description" name="description" placeholder="${_('Gist description ...')}"></textarea> 39 <textarea style="resize:vertical; width:400px;border: 1px solid #ccc;border-radius: 3px;" id="description" name="description" placeholder="${_('Gist description ...')}"></textarea>
40 <div style="padding:0px 0px 0px 42px">
41 <label for='lifetime'>${_('Gist lifetime')}</label>
42 ${h.select('lifetime', '', c.lifetime_options)}
43 </div>
40 </div> 44 </div>
41 <div id="body" class="codeblock"> 45 <div id="body" class="codeblock">
42 <div style="padding: 10px 10px 10px 26px;color:#666666"> 46 <div style="padding: 10px 10px 10px 26px;color:#666666">
43 ##<input type="text" value="" size="30" name="filename" id="filename" placeholder="gistfile1.txt"> 47 ##<input type="text" value="" size="30" name="filename" id="filename" placeholder="gistfile1.txt">
44 ${h.text('filename', size=30, placeholder='gistfile1.txt')} 48 ${h.text('filename', size=30, placeholder='gistfile1.txt')}
45 ##<input type="text" value="" size="30" name="filename" id="filename" placeholder="gistfile1.txt"> 49 ##<input type="text" value="" size="30" name="filename" id="filename" placeholder="gistfile1.txt">
46 ${h.select('lifetime', '', c.lifetime_options)} 50 ${h.select('mimetype','plain',[('plain',_('plain'))])}
47 ${h.select('set_mode','plain',[('plain',_('plain'))])}
48 </div> 51 </div>
49 <div id="editor_container"> 52 <div id="editor_container">
50 <pre id="editor_pre"></pre> 53 <pre id="editor_pre"></pre>
51 <textarea id="editor" name="content" style="display:none"></textarea> 54 <textarea id="editor" name="content" style="display:none"></textarea>
52 </div> 55 </div>
60 <script type="text/javascript"> 63 <script type="text/javascript">
61 var myCodeMirror = initCodeMirror('editor', ''); 64 var myCodeMirror = initCodeMirror('editor', '');
62 CodeMirror.modeURL = "${h.url('/js/mode/%N/%N.js')}"; 65 CodeMirror.modeURL = "${h.url('/js/mode/%N/%N.js')}";
63 66
64 //inject new modes 67 //inject new modes
65 var modes_select = YUD.get('set_mode'); 68 var modes_select = YUD.get('mimetype');
66 for(var i=0;i<CodeMirror.modeInfo.length;i++){ 69 for(var i=0;i<CodeMirror.modeInfo.length;i++){
67 var m = CodeMirror.modeInfo[i]; 70 var m = CodeMirror.modeInfo[i];
68 var opt = new Option(m.name, m.mode); 71 var opt = new Option(m.name, m.mime);
69 modes_select.options[i+1] = opt 72 YUD.setAttribute(opt, 'mode', m.mode)
73 modes_select.options[i+1] = opt;
70 } 74 }
71 YUE.on(modes_select, 'change', function(e){ 75 YUE.on(modes_select, 'change', function(e){
72 var selected = e.currentTarget; 76 var selected = e.currentTarget;
73 var new_mode = selected.options[selected.selectedIndex].value; 77 var node = selected.options[selected.selectedIndex];
78 var mimetype = node.value;
79 var new_mode = YUD.getAttribute(node, 'mode')
74 setCodeMirrorMode(myCodeMirror, new_mode); 80 setCodeMirrorMode(myCodeMirror, new_mode);
81
82 var proposed_mimetypes = MIME_TO_EXT[mimetype] || [];
83 if(proposed_mimetypes.length < 1){
84 //fallback to text/plain
85 proposed_mimetypes = ['.txt']
86 }
87 var mt = proposed_mimetypes[0];
88 if(mt[0] == '*'){
89 mt = mt.substr(1)
90 }
91 YUD.get('filename').value = 'filename1' + mt;
75 }) 92 })
76 </script> 93 </script>
77 </div> 94 </div>
78 </div> 95 </div>
79 96