edit.html
174 lines
| 7.3 KiB
| text/html
|
HtmlLexer
|
r4187 | ## -*- coding: utf-8 -*- | ||
<%inherit file="/base/base.html"/> | ||||
|
r4811 | <%block name="title"> | ||
|
r4187 | ${_('Edit Gist')} · ${c.gist.gist_access_id} | ||
|
r4811 | </%block> | ||
|
r4187 | |||
|
r4810 | <%block name="js_extra"> | ||
<script type="text/javascript" src="${h.url('/codemirror/lib/codemirror.js')}"></script> | ||||
<script type="text/javascript" src="${h.url('/js/codemirror_loadmode.js')}"></script> | ||||
<script type="text/javascript" src="${h.url('/codemirror/mode/meta.js')}"></script> | ||||
</%block> | ||||
<%block name="css_extra"> | ||||
<link rel="stylesheet" type="text/css" href="${h.url('/codemirror/lib/codemirror.css')}"/> | ||||
</%block> | ||||
|
r4187 | |||
<%def name="breadcrumbs_links()"> | ||||
${_('Edit Gist')} · ${c.gist.gist_access_id} | ||||
</%def> | ||||
|
r4809 | <%block name="header_menu"> | ||
|
r4187 | ${self.menu('gists')} | ||
|
r4809 | </%block> | ||
|
r4187 | |||
<%def name="main()"> | ||||
<div class="box"> | ||||
<!-- box / title --> | ||||
<div class="title"> | ||||
${self.breadcrumbs()} | ||||
</div> | ||||
<div class="table"> | ||||
<div id="edit_error" style="display: none" class="flash_msg"> | ||||
<div class="alert alert-dismissable alert-warning"> | ||||
|
r4666 | <button type="button" class="close" data-dismiss="alert" aria-hidden="true"><i class="icon-cancel-circled"></i></button> | ||
|
r4187 | ${h.literal(_('Gist was update since you started editing. Copy your changes and click %(here)s to reload new version.') | ||
% {'here': h.link_to('here',h.url('edit_gist', gist_id=c.gist.gist_access_id))})} | ||||
</div> | ||||
<script> | ||||
if (typeof jQuery != 'undefined') { | ||||
$(".alert").alert(); | ||||
} | ||||
</script> | ||||
</div> | ||||
<div id="files_data"> | ||||
${h.form(h.url('edit_gist', gist_id=c.gist.gist_access_id), method='post', id='eform')} | ||||
<div> | ||||
<div class="gravatar"> | ||||
|
r4795 | ${h.gravatar(c.authuser.email, size=32)} | ||
|
r4187 | </div> | ||
<input type="hidden" value="${c.file_changeset.raw_id}" name="parent_hash"> | ||||
<textarea style="resize:vertical; width:400px;border: 1px solid #ccc;border-radius: 3px;" | ||||
id="description" name="description" | ||||
placeholder="${_('Gist description ...')}">${c.gist.gist_description}</textarea> | ||||
<div style="padding:0px 0px 0px 42px"> | ||||
<label for='lifetime'>${_('Gist lifetime')}</label> | ||||
${h.select('lifetime', '0', c.lifetime_options)} | ||||
<span class="" style="color: #AAA"> | ||||
%if c.gist.gist_expires == -1: | ||||
${_('Expires')}: ${_('never')} | ||||
%else: | ||||
${_('Expires')}: ${h.age(h.time_to_datetime(c.gist.gist_expires))} | ||||
%endif | ||||
</span> | ||||
</div> | ||||
</div> | ||||
% for cnt, file in enumerate(c.files): | ||||
<div id="body" class="codeblock" style="margin-bottom: 4px"> | ||||
<div style="padding: 10px 10px 10px 26px;color:#666666"> | ||||
<input type="hidden" value="${file.path}" name="org_files"> | ||||
<input id="filename_${h.FID('f',file.path)}" name="files" size="30" type="text" value="${file.path}"> | ||||
|
r4564 | <select id="mimetype_${h.FID('f',file.path)}" name="mimetypes"/> | ||
|
r4187 | </div> | ||
<div class="editor_container"> | ||||
<pre id="editor_pre"></pre> | ||||
<textarea id="editor_${h.FID('f',file.path)}" name="contents" style="display:none">${file.content}</textarea> | ||||
</div> | ||||
</div> | ||||
## dynamic edit box. | ||||
<script type="text/javascript"> | ||||
var myCodeMirror = initCodeMirror("editor_${h.FID('f',file.path)}", ''); | ||||
//inject new modes | ||||
|
r4489 | var $modes_select = $('#mimetype_${h.FID('f',file.path)}'); | ||
$modes_select.each(function(){ | ||||
var modes_select = this; | ||||
|
r4564 | var index = 1; | ||
|
r4489 | for(var i=0;i<CodeMirror.modeInfo.length;i++) { | ||
var m = CodeMirror.modeInfo[i]; | ||||
var opt = new Option(m.name, m.mime); | ||||
$(opt).attr('mode', m.mode); | ||||
|
r4564 | if (m.mime == 'text/plain') { | ||
// default plain text | ||||
$(opt).attr('selected', 'selected'); | ||||
modes_select.options[0] = opt; | ||||
} else { | ||||
modes_select.options[index++] = opt; | ||||
} | ||||
|
r4489 | } | ||
}); | ||||
|
r4187 | |||
|
r4489 | var $filename = $('#filename_${h.FID('f',file.path)}'); | ||
|
r4187 | // on select change set new mode | ||
|
r4489 | $modes_select.change(function(e){ | ||
|
r4187 | var selected = e.currentTarget; | ||
var node = selected.options[selected.selectedIndex]; | ||||
|
r4564 | var detected_mode = CodeMirror.findModeByMIME(node.value); | ||
setCodeMirrorMode(myCodeMirror, detected_mode); | ||||
|
r4187 | |||
|
r4564 | var proposed_ext = CodeMirror.findExtensionByMode(detected_mode); | ||
var file_data = CodeMirror.getFilenameAndExt($filename.val()); | ||||
|
r4187 | var filename = file_data['filename'] || 'filename1'; | ||
|
r4564 | $filename.val(filename + '.' + proposed_ext); | ||
}); | ||||
|
r4187 | |||
// on type the new filename set mode | ||||
|
r4489 | $filename.keyup(function(e){ | ||
|
r4564 | var file_data = CodeMirror.getFilenameAndExt(this.value); | ||
|
r4187 | if(file_data['ext'] != null){ | ||
|
r4564 | var detected_mode = CodeMirror.findModeByExtension(file_data['ext']) || CodeMirror.findModeByMIME('text/plain'); | ||
|
r4187 | |||
if (detected_mode){ | ||||
setCodeMirrorMode(myCodeMirror, detected_mode); | ||||
|
r4564 | $modes_select.val(detected_mode.mime); | ||
|
r4187 | } | ||
} | ||||
|
r4564 | }); | ||
|
r4187 | |||
// set mode on page load | ||||
|
r4564 | var detected_mode = CodeMirror.findModeByExtension("${file.extension}"); | ||
|
r4187 | |||
if (detected_mode){ | ||||
setCodeMirrorMode(myCodeMirror, detected_mode); | ||||
|
r4564 | $modes_select.val(detected_mode.mime); | ||
|
r4187 | } | ||
</script> | ||||
%endfor | ||||
<div style="padding-top: 5px"> | ||||
${h.submit('update',_('Update Gist'),class_="btn btn-mini btn-success")} | ||||
<a class="btn btn-mini" href="${h.url('gist', gist_id=c.gist.gist_access_id)}">${_('Cancel')}</a> | ||||
</div> | ||||
${h.end_form()} | ||||
<script> | ||||
$('#update').on('click', function(e){ | ||||
e.preventDefault(); | ||||
// check for newer version. | ||||
$.ajax({ | ||||
url: "${h.url('edit_gist_check_revision', gist_id=c.gist.gist_access_id)}", | ||||
data: {'revision': '${c.file_changeset.raw_id}'}, | ||||
dataType: 'json', | ||||
type: 'POST', | ||||
success: function(data) { | ||||
if(data.success == false){ | ||||
$('#edit_error').show(); | ||||
} | ||||
else{ | ||||
$('#eform').submit(); | ||||
} | ||||
} | ||||
}) | ||||
|
r4564 | }); | ||
|
r4187 | </script> | ||
</div> | ||||
</div> | ||||
</div> | ||||
</%def> | ||||