|
|
## -*- coding: utf-8 -*-
|
|
|
<%inherit file="/base/base.html"/>
|
|
|
|
|
|
<%def name="title()">
|
|
|
${_('New Gist')}
|
|
|
%if c.rhodecode_name:
|
|
|
· ${c.rhodecode_name}
|
|
|
%endif
|
|
|
</%def>
|
|
|
|
|
|
<%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>
|
|
|
<script type="text/javascript" src="${h.url('/js/mode/meta_ext.js')}"></script>
|
|
|
</%def>
|
|
|
<%def name="css_extra()">
|
|
|
<link rel="stylesheet" type="text/css" href="${h.url('/css/codemirror.css')}"/>
|
|
|
</%def>
|
|
|
|
|
|
<%def name="breadcrumbs_links()">
|
|
|
${_('New Gist')}
|
|
|
</%def>
|
|
|
|
|
|
<%def name="page_nav()">
|
|
|
${self.menu('gists')}
|
|
|
</%def>
|
|
|
|
|
|
<%def name="main()">
|
|
|
<div class="box">
|
|
|
<!-- box / title -->
|
|
|
<div class="title">
|
|
|
${self.breadcrumbs()}
|
|
|
</div>
|
|
|
|
|
|
<div class="table">
|
|
|
<div id="files_data">
|
|
|
${h.form(h.url('gists'), method='post',id='eform')}
|
|
|
<div>
|
|
|
<div class="gravatar">
|
|
|
<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">
|
|
|
${h.text('filename', size=30, placeholder=_('name this file...'))}
|
|
|
${h.select('mimetype','plain',[('plain',_('plain'))])}
|
|
|
</div>
|
|
|
<div id="editor_container">
|
|
|
<pre id="editor_pre"></pre>
|
|
|
<textarea id="editor" name="content" style="display:none"></textarea>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div style="padding-top: 5px">
|
|
|
${h.submit('private',_('Create Private Gist'),class_="btn btn-mini btn-success")}
|
|
|
${h.submit('public',_('Create Public Gist'),class_="btn btn-mini")}
|
|
|
${h.reset('reset',_('Reset'),class_="btn btn-mini")}
|
|
|
</div>
|
|
|
${h.end_form()}
|
|
|
<script type="text/javascript">
|
|
|
var myCodeMirror = initCodeMirror('editor', '');
|
|
|
CodeMirror.modeURL = "${h.url('/js/mode/%N/%N.js')}";
|
|
|
|
|
|
//inject new modes
|
|
|
var modes_select = $('#mimetype');
|
|
|
for(var i=0;i<CodeMirror.modeInfo.length;i++){
|
|
|
var m = CodeMirror.modeInfo[i];
|
|
|
var opt = new Option(m.name, m.mime);
|
|
|
YUD.setAttribute(opt, 'mode', m.mode)
|
|
|
modes_select[0].options[i+1] = opt;
|
|
|
}
|
|
|
|
|
|
var filename_selector = '#filename';
|
|
|
// on select change set new mode
|
|
|
modes_select.on('change', function(e){
|
|
|
var selected = e.currentTarget;
|
|
|
var node = selected.options[selected.selectedIndex];
|
|
|
var mimetype = node.value;
|
|
|
var new_mode = YUD.getAttribute(node, 'mode')
|
|
|
setCodeMirrorMode(myCodeMirror, new_mode);
|
|
|
|
|
|
var proposed_ext = getExtFromMimeType(mimetype);
|
|
|
var file_data = getFilenameAndExt($(filename_selector).val());
|
|
|
var filename = file_data['filename'] || 'filename1';
|
|
|
$(filename_selector).val(filename + proposed_ext);
|
|
|
})
|
|
|
|
|
|
// on type the new filename set mode
|
|
|
$(filename_selector).on('keyup', function(e){
|
|
|
var file_data = getFilenameAndExt(this.value);
|
|
|
if(file_data['ext'] != null){
|
|
|
var mimetype = getMimeTypeFromExt(file_data['ext']);
|
|
|
var detected_mode = detectCodeMirrorMode(this.value, mimetype);
|
|
|
if (detected_mode){
|
|
|
setCodeMirrorMode(myCodeMirror, detected_mode);
|
|
|
modes_select.val(mimetype)
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
</script>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
</%def>
|
|
|
|